音樂 數學 程式

二零零六年十月十九日 星期四
其實今天的流程跟昨天是差不多一樣的,
我估計這個(這兩個)學年的大部份時間都會這樣的了。。。吧?
人家上堂的日子,我就會練鼓->FYP->練鼓->FYP->練鼓->FYP無限Loop。
不過這個迴圈的生產力尚算不錯。
悶時打鼓,累時做功課,做到累時又打鼓,打到悶時又做功課,掂!

今天練鼓分開三次,加起上來也有四五小時。
練考試歌,三首加起來重複練習,時闁很快就過去。
另外在練最近上堂借的日本鼓手板田稔的“はじめでのJazz Drum“,
先把數頁的基本Jazz Licks練了練,由於之前有苦練的Independence底子,
大部份的pattern都可以馬上Sight Read打到出來,
唯有一些三連音加Jazz Time的要集中精神才能應付,
只是練這些又可以練一個多小時。
臨訓(=最後入房前)玩了書中的第一隻Jazz Standard Song – Billie's Bounce。
這樣又可以消磨大半個小時。


我的工作桌面環境(Notebook用來寫程式,Mac機用來找資料和玩MSN

FYP的程式成功地把MIDI File的Sequence中的Tracks抽出來,
每條Tracks中的所有Midi Event都能成功抽出和分析,
今天的目的是把樂曲的音符抽出,其實那些都包在Midi Event當中,
只是Midi Event有很多不相關的訊息,但很快就能順利抽出純音樂相關的訊息。

Java Sound API很易容就可以把它們拿出來和播放,
不過當中的訊息拿出來後要經過翻譯才能被人去識辨,
就好像音符的音值,會以integer 60來代表Middle C。
雖然可以用人手去一個一個翻,但這樣太傻了。(Midi Spec中最多有128個Range)
在網上找了一會就找到有這個功能的Library (dixshtix),
很順利的就能把抽出來的Melody以C D F E G A B 的模樣顯示出來。

晩一點的時間,就去做抽取一個頭痛的東西 ﹣ 時值。
由於在MIDI中的MIDI Event自身中是沒有記錄該個Note要播多久 (Duration),
有的只是該個Note實際播放的“相對時值“這個資料,
加上如果不用Sequencer來播放的話,
就要自己去計算兩個Notes播放的時間差,
再按歌曲速度和時間計算模式給他們按比例的拉長,
然後在“很大概的計算方式“下,總算成功把一粒粒音的基本資料拿到出來,
再不用Sequencer下,用自己計算的時間直接在Synthesizer播音。

音樂?數學?程式?

發表迴響

你的電子郵件位址並不會被公開。