2013年7月15日 星期一

徵音梅林計畫-錄音DAY1

今天是虛擬歌手徵音梅林計畫錄音的第一天,早上一開始充滿著朝氣以及旺盛的戰鬥力....
 
還有初音未來的加油
 接著開始大戰三百回合..

被很多的咒語攻擊....例如:醋沒萌鼻歌爸背背逼?
崖發芽崖翻
再來沒力氣打了....可以自己唸看看....要每一個音都唸很清楚....一氣呵成,不能斷音(台灣式國語)





 到了晚上變這樣...


明天繼續...orz

2013年7月12日 星期五

Python超級新手心得:寫音訊處理程式的經驗

很久以前就有買了一本O'reilly的《Python入門》也就是小老鼠本(怎麼封面不是大蛇?)Python的程式都是偶而寫一寫,沒有很正規的使用,我還是用java這種系統語言為主,直到最近,為了跟好友Paul Liu開發完全用自由軟體做的虛擬歌手《徵音梅林》,需要特殊的批次錄音程式,自己主業又已經不是作軟體,轉行去作音樂、設計樂器了,美國時間不多,才嘗試Python的快速開發能力,所以就寫了自己第一個完整的Python程式,而且直上GUI。

這個程式的功能是讀取錄音表,然後一個一個的來錄音,程式會自動地顯示錄要錄的發音,錄完自動存檔,而且配特定的檔名,那要錄多少個wav檔呢。4500多個(所以才要寫專用的,用audacity錄一個存一個,再打檔名,你會發瘋的@@)




得到許多寶貴的經驗,為了不要忘記,就順便紀錄一下心得:

1.Python語言本體部份:就算Python號稱很容易,但是一些小細節的習慣動作仍然要適應,例如
  • 縮排的控制也是語法之一,很多小錯誤都卡在這地方XD
  • 同為物件導向語言,看起來很像java,但是存取資料成員時,Python沒有this super可以用,甚至要存取本類別資料成員,都不能省略 自己.變數 這樣的作法
  • 很多有關WxPython的視窗元件的方法成員呼叫,傳的參數如查api會發現往往含上self本身,然後真正在傳參數的時候,卻不用傳self,例如說API上面寫XXX.SetVisible(self,file)或者你自己寫的方法成員宣告時是這樣,但實際呼叫時,只要XXX.SetVisible(myfile)就好了,有一點點人格分裂之感XD
  • Java的GUI程式設計沒有mainloop(),或者說隱藏起來,但是Python的有
  • 承上,同樣的東西在Java很多可能是一個呼叫背後直接跑一個Thread,但Python的不是,所以自己記得包Thread,不然會掛住整個視窗
  • 基本語法不一樣,例如for、操作資料結構部份、沒有";",很直接簡潔,要習慣習慣才行XD
2.開發工具
  • 雖然很多人推崇SPE ,但是SPE存檔存ASCII的,所以程式碼裡面不能出現中文訊息、中文註解,所以我只用它的wxGlade來拉出視窗介面
  • 我主力用emacs,太方便了,只是剛開始寫python,不知道有沒有python的自動補完函式的模組?
3.音訊處理
  • 一開始我用alsaaudio模組,但是後來發現這是一個錯誤的選擇。我們的目標是必須能錄24bit,而Ubuntu以及其他現代的GNU/Linux Distribution是讓alsa上架pulseaudiio,而pulseaudiio被鎖在16bit,你的錄音介面再好也沒有用,用alsa的模組都會直接轉到pulseaudio,然後24bit錄到的都會變成破音
  • 而我是alsa直上jack 音訊系統,pulseaudio也是轉進jack,一直執著alsaaudio沒有用,終究24bit都會變成破音
  • python不適合realtime,所以很少有python用的jack模組,我只有找到pyjack,但build不起來orz。
  • 最後發現有console的jack錄音程式-jack_capture,當然可以正確的錄出24bit的wav,只要我寫的GUI來呼叫他就可以啦,請教paul,得知要用subprocess,一開始有點難度,反覆查API,最後終於搞定,覺得很有趣,原來python被稱為命令稿語言是因為擅長於呼叫其他程式,組合起來快速完成工作。
這次感覺到原來python的魅力以及好處所在,執行有時間壓力的專案時,要打造臨時性工具,不一定要從頭到尾統統自己苦幹實做,運用python這樣的語言,善用且組合現有的程式來完成工作才是上策,而不是把系統語言的寫作觀念帶來命令稿語言。

花了兩個星期寫起來了,利用餘暇時間一點一點寫,昨天終於搞定。搞完,就轉換到音樂人狀態好好地發洩一下....爽啦  XD

2013年7月5日 星期五

死與生

今天晚上在我家附近發生一個車禍
原來狗血是漿狀的....
附近某人家的貓追一隻另一戶的吉娃娃狗,結果吉娃娃狗突然跑到馬路上被閃避不及的車子撞死。

當倒楣的車主倒水洗馬路時,不洗還好,一洗,血液跟水一混合,加上面積擴散,整個血腥味蔓延開來,後來受不了,我關心完就離開了(我手上拿著義美冰淇淋..)。


這是週三在台北火車站月台看到的在生死存亡邊緣的蟬,看他一直翻肚痛苦的掙扎,我把牠翻過來,應該可以走得好過一點吧?

再來是之前救被黏住的蝙蝠那一次,我用初音鼓勵牠~(還是牠被嚇到?所以更努力掙脫XD,當天費了很多功夫助牠掙脫,晚上成功放飛。
 
ps.有興趣可以看我的前一篇文。

2013年6月25日 星期二

蝙蝠救援後記

蝙蝠後來怎麼了呢?

昨天下午把放在樓梯間,在氣窗前用兩個椅子搭了高台,把裝牠手套放上去面向窗口。

  1. 晚上7:00跑去看,還在睡(看來蝙蝠不是天一黑馬上就出門的)
  2. 出門以後,晚上9:30回來檢視,已經飛走了。

總算是做了一件好事。

 紀錄一下救援的方法,最主要課題,是如何處理滾筒黏紙的黏性?

我們是事先在旁邊實驗破解滾筒黏紙黏性的方法-拿一隻接近的小步娃娃來測試自己想的假設-滴水稀釋法是否有效,實驗成功才用到蝙蝠身上,有一點像電影《阿波羅13號》裡面的救援任務作法。

第一步當然是先給它黏下去
 然後在黏住的地方邊緣開始滴水沾水棉花棒,在不損及布娃娃毛皮的狀況下小心翼翼地來分離兩者
實驗結果發現:滴水稀釋有效,然而水一乾,黏性就會恢復(好吧下次還是要買這一間的產品)!所以我們實際在處理蝙蝠時,改成:


一邊推進,一邊在牠能起身的地方下面馬上貼廢紙片,防止牠回黏。就這樣一點一點讓他黏到的地方越來越少、越來越少,到最後牠終於可以脫身。

真是一次特殊經驗,好像小型的阿波羅13號任務。 XD

2013年6月24日 星期一

蝙蝠緊急救援!!!

一大早被老媽叫起XDXD

又有一隻蝙蝠跑到我們家(我的網誌搜尋蝙蝠或者小動物,可以看到以前的其他紀錄XD很多隻),然後不知道怎麼鑽的,去鑽老媽放在廚房的清潔滾筒黏,就被黏住,直到我媽要用時,尖叫XDXD

於是我就被挖起來了,開始展開救援行動


首先撕一些紙片把其他黏膠的地方先蓋住,以免他掙脫時,又黏到其他地方,然後剪了一個盒子,作蓋子,來遮光(又可以方便移去,進行救援)
最重要的,根據蝙蝠學會網站 的救援方法來餵水
大概簡單紀錄一下,目前正在緊急救援



中....

11:00更新:

大概只剩下右翼了....
還有第一次看到蝙蝠大便 長啥樣子..(下圖擋住日期的期字的那一條)

最後發現還有右翼末端,給他抹布好施力

快十二點時,終於搞定...放進麻手套,放在陰涼處觀察,給一盤水,初步觀察沒有外傷,就等牠睡飽再說囉。
做了半天業餘消防隊,累倒 ....



count