全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1871
推到 Plurk!
推到 Facebook!

請問要如何分析midi檔呢?

尚未結案
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-27 13:07:30 IP:140.113.xxx.xxx 未訂閱
各位前輩大家好: 我想要找那種單純又容易取得的音樂格式, 目前我只想到midi檔~~ 我的問題如下,還麻煩大家不吝指教:)
1.有啥音樂格式是單純又易得的? -所謂的單純是指不用有人聲,只要有主旋律就可以了 -若是整個檔案裡頭就只有主旋律沒有別的,那更好。 -所謂的易得是指很容易就從網路上抓到。 -就像現在有一大堆免費下載的midi網站一樣。 2.若是有這種音樂格式,我要怎麼讀取並分析它呢? -分析出是由哪些音符組合起來的,以及拍子的速度之類的. 3.若是沒有比midi更好的選擇了,那我要怎麼讀取分析它呢? -小弟曾用midi當關鍵字搜尋,也有找到一些format的文章 -但是我功力太差,實在是看不太懂. -若可以的話,不知是否能提供一些sample code讓我當做思考方向呢? 4.midi檔裡頭時常會有好幾種樂器,我要如何才能抓出主旋律呢? -目前我能想得到的方法只有分析出各個樂器,然後讓使用者自己去聽再決定哪個是主旋律 @@
以上,問題似乎有點多,感謝大家的點閱,更感謝各位回文前輩的指導。
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-27 22:45:44 IP:218.166.xxx.xxx 未訂閱
chtai 你好: 以小弟的經驗,MIDI檔裡存放的資訊,類似以「時間」「頻道/樂器代碼」「音階代碼」「力度」「音長」等等組合而成,其實就是一種命令,命令MIDI裝置「發出」聲音來。不知道你要分析的是哪方面的?你提的第一、二點,MIDI格式的確是不二人選。配合MIDI指令的代碼,我相信要分析應該不是難事(不過我也沒做過就是了< >)。如果要讓電腦抓出主旋律是哪一種樂器,那~還真是件不容易的事啊~可能暫時要靠人類的大腦了< > 有關聲音的辨識,也是門學問。小弟不是玩這個的,只能就對MIDI的粗淺認知給予一點點方向~
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-27 23:03:51 IP:140.113.xxx.xxx 未訂閱
引言: chtai 你好: 以小弟的經驗,MIDI檔裡存放的資訊,類似以「時間」「頻道/樂器代碼」「音階代碼」「力度」「音長」等等組合而成,其實就是一種命令,命令MIDI裝置「發出」聲音來。不知道你要分析的是哪方面的?你提的第一、二點,MIDI格式的確是不二人選。配合MIDI指令的代碼,我相信要分析應該不是難事(不過我也沒做過就是了< >)。如果要讓電腦抓出主旋律是哪一種樂器,那~還真是件不容易的事啊~可能暫時要靠人類的大腦了< > 有關聲音的辨識,也是門學問。小弟不是玩這個的,只能就對MIDI的粗淺認知給予一點點方向~
arisaka_matsuri大哥你好: 是這樣的,我想要寫一個手機鈴聲編輯程式。 (就是那種單音的手機鈴聲,不是和絃的) 我就在想,有那麼多好聽的midi檔, 可是對音感不好的人而言,要把聽到的聲音轉成鈴聲輸入是很難的事。 於是就想說寫個程式能讀進midi檔 (或是各位先進有啥除了midi檔之外更好的建議嗎?) 然後再把鈴聲編輯的按法輸出到memo上給使用者照著輸入到手機。
只是現在小弟能力不足,看midi的format看得有些不太懂 再加上不知道要用bcb裡哪個函式來讀取midi檔 (我只會fread跟fwrite,還不太熟^^a) 所以有種不知如何下手的感覺。 還煩請各位能不吝賜教了~
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-28 08:43:20 IP:211.23.xxx.xxx 未訂閱
引言: arisaka_matsuri大哥你好: 是這樣的,我想要寫一個手機鈴聲編輯程式。 (就是那種單音的手機鈴聲,不是和絃的) 我就在想,有那麼多好聽的midi檔, 可是對音感不好的人而言,要把聽到的聲音轉成鈴聲輸入是很難的事。 於是就想說寫個程式能讀進midi檔 (或是各位先進有啥除了midi檔之外更好的建議嗎?) 然後再把鈴聲編輯的按法輸出到memo上給使用者照著輸入到手機。
只是現在小弟能力不足,看midi的format看得有些不太懂 再加上不知道要用bcb裡哪個函式來讀取midi檔 (我只會fread跟fwrite,還不太熟^^a) 所以有種不知如何下手的感覺。 還煩請各位能不吝賜教了~
chtai 你好: 您可以到http://www.wotsit.org/找到midi的format與其說明文件。 要這樣處理一個檔案, 最好用TMemoryStream將檔案先讀進來再處理, 以免I/O太頻繁。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-29 02:09:33 IP:140.113.xxx.xxx 未訂閱
引言: chtai 你好: 您可以到http://www.wotsit.org/找到midi的format與其說明文件。 要這樣處理一個檔案, 最好用TMemoryStream將檔案先讀進來再處理, 以免I/O太頻繁。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖>< face="Verdana, Arial, Helvetica"> 謝謝anpino兄~~ 我會再看看TMemoryStream的:p 之前都沒用過它呢~~ 看來功能似乎很強哩 ^^ 等到時候有問題再上來跟各位討教吧 ^^
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
gwanlin
一般會員


發表:1
回覆:29
積分:6
註冊:2002-07-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-02 19:47:46 IP:61.222.xxx.xxx 未訂閱
chtai要的程式我寫過,大概分為GUI、MIDI Edit與Transport三個部份,GUI當然就是操作畫面,用BCB做的,MIDI Edit是用純C寫的,Transport的部份使用COM port去送資料,那是用Win32 API。後兩者都是寫成DLL。 大概的作法就是用getc把file中的資料取出來,建一個比較的表格與rule去比對,判斷出目前是time、event還是chunk information,然後根據MIDI的觀念自己建一個structure,在read的同時把所有的資料都填進structure(當然這個structure是會動態長大的)。編輯的時候直接對structure編輯內容,編好要在PC端試聽時就把structure裏的資料取出,組合成Win32的API可以讀懂的Stream,讓Win32 API去播(一時忘了是用那幾個了),如果要傳資料,就把目前的structure輸出成file的格式,然後用transport的程式去傳。 大概會比較麻煩的就是一開始的MIDI format解析,寫了幾個禮拜,再來就是傳輸的部份,也是寫了幾個禮拜,最後由於BCB當時沒學過,也寫了幾個禮拜。 希望這些對你有幫助。 我是gwanlin
------
我是gwanlin
gwanlin
一般會員


發表:1
回覆:29
積分:6
註冊:2002-07-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-02 19:51:56 IP:61.222.xxx.xxx 未訂閱
此外,如果要編單音的話,建議玩玩I-Melody,它的格式相當簡單,用文字編輯器打開就一目瞭然了,需要花點時間弄懂的只有"MELODY:"這個欄位,它的規則也遠比MIDI簡單。 我是gwanlin
------
我是gwanlin
系統時間:2024-05-19 7:41:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!