史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   請問有人懂MIDI嗎? (http://forum.slime.com.tw/thread288224.html)

alanniok 2018-03-21 08:01 PM

請問有人懂MIDI嗎?
 
最近在做的專題,教授希望我們能用數字譜(類似簡譜,確切叫做十二平均律)產生鋼琴聲音。

我知道有些應用程式例如Musescore 可以畫好五線譜就產生音樂(wav檔),但是就是不知道如何達成的。

上網爬一爬後看到一個叫做MIDI的東西,感覺可以用這個達成我們的目標,

所以來這邊問問看有沒有人接觸過MIDI可以回答一下有沒有可能?

如果可以的話該怎麼做或是搜尋什麼關鍵字可以找到更多幫助謝謝~~

P.S. 我們用的是VS2015 C/C++

mini 2018-03-21 10:11 PM

先看一下 MIDI檔結構簡介
http://s90304a123.pixnet.net/blog/po...B0%A1%E4%BB%8B

MIDI不同於 mp3這類的音樂檔
是利用 代號對應 使音效晶片發聲
(mp3則是 紀載波形)
mp3好比 圖片
midi好比 文字
所以midi檔可以做得小小的 卻發出 長時間而豐富的樂器音

如你的想法
你們的教授可能是想要你們 從零到有
自訂義一個類似 midi機制 的發聲標準吧?
所以
要自製一個撥放器 (把 頻率資料 發出聲音)
再來是轉換表 (數字譜 -對應-> 頻率)
最後是自訂義的midi檔 (Do Re me 數字譜)

midi有很多樂器音
且是專業的樂器撥放
專題很單純
如要模擬不需要定義的這麼專業才對

不飛 2018-03-22 12:05 AM

樓主是否安裝虛擬系統 ?

這程式我以前在 Windows XP 時代可以安裝,

剛剛在 Windows 10 之下不能安裝,

如果有,您安裝看看。

●●● 檔案已經刪除 ●●●

檔案放置一個星期,屆時刪除,謝謝。

alanniok 2018-03-22 12:43 PM

嗯,感謝上面的回覆,不過我覺得可能我的問題說明的不太好,所以再試著說一次看看
就是例如musescore這個程式,原本是用於製作五線譜創作用,不過畫好五線譜後按檔案匯出功能,卻可以選擇wav格式,內容就是以你選擇的樂器演奏你畫的五線譜的旋律。
也就是這個功能可以 輸入樂譜->輸出指定樂器演奏的wav檔。
我們的專題目前可能也需要類似的功能,我們也需要輸出鋼琴演奏的wav檔,只是輸入是數字簡譜。

最早我以為是用公式模擬鋼琴樂器的波型,但是想來這個方法應該會超級複雜,果然一查發現大部分都是採用是先錄製好各個音高的檔案再按需求組合成旋律。另外我又看到有一個叫做general MIDI 的東西似乎是個音樂素材庫?? 於是想說有沒有可能用什麼方法可以利用這得東西達成我們的需求

不飛 2018-03-22 12:49 PM

引用:

作者: alanniok (文章 2373168)
嗯,感謝上面的回覆,不過我覺得可能我的問題說明的不太好,所以再試著說一次看看
就是例如musescore這個程式,原本是用於製作五線譜創作用,不過畫好五線譜後按檔案匯出功能,卻可以選擇wav格式,內容就是以你選擇的樂器演奏你畫的五線譜的旋律。
也就是這個功能可以 輸入樂譜->輸出指定樂器演奏的wav檔。
我們的專題目前可能也需要類似的功能,我們也需要輸出鋼琴演奏的wav檔,只是輸入是數字簡譜。

最早我以為是用公式模擬鋼琴樂器的波型,但是想來這個方法應該會超級複雜,果然一查發現大部分都是採用是先錄製好各個音高的檔案再按需求組合成旋律。另外我又看到有一個叫做general MIDI 的東西似乎是個音樂素材庫?? 於是想說有沒有可能用什麼方法可以利用這得東西達成我們的需求

這個程式基本就是用五線譜,
然後用各種音符去譜出您要的音樂,
完成後,可以選各式樂器的聲音,
例如鋼琴,豎琴,電子琴,小喇叭,提琴,木琴.......共有好幾十種音效,
存檔輸出可以選擇 WAV ,MIDI ....等音訊,

既然您不需要,那就刪除好了,
謝謝。

alanniok 2018-03-22 05:26 PM

引用:

作者: 不飛 (文章 2373169)
這個程式基本就是用五線譜,
然後用各種音符去譜出您要的音樂,
完成後,可以選各式樂器的聲音,
例如鋼琴,豎琴,電子琴,小喇叭,提琴,木琴.......共有好幾十種音效,
存檔輸出可以選擇 WAV ,MIDI ....等音訊,

既然您不需要,那就刪除好了,
謝謝。

聽來確實是個蠻實用的程式不過如果是整個包裝好的成是我可能沒辦法使用,我目前最缺最想知道的就是最後那個輸出成wav的功能到底是如何做出來的。所以如果是包裝好的程式我可能就沒辦法了...

mini 2018-03-22 09:02 PM

http://www.it610.com/article/1963672.htm
有提到一個函式
void sound(unsigned frequency)

可以讓揚聲器發出指定的頻率
如果成功讓 VC++成功引用該函式
剩下的就是調音

或看
http://webcache.googleusercontent.co...&gbv=1&ct=clnk
利用 BEEP函式 & 蜂鳴器發音

不過以上都是用 蜂鳴器發音
聲音沒辦法調大小質量又差

如果是要用音效卡晶片
光是控制音效卡就...

數字譜 只是DoReMi的單純化代碼
用DoReMi模擬 發出鋼琴聲音
真的不是很了解
建議你去向教授問清楚

================
http://webcache.googleusercontent.co...&gbv=1&ct=clnk 所言
每一種樂器都有它獨特的發音特性,稱為音色
也就是波型
https://www.nani.com.tw/nani/jlearn/...1IA1-181-3.jpg

C++可以模擬頻率
但如何調節波型
或許是這個課題的癥結點


所有時間均為台北時間。現在的時間是 12:02 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1