最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

用單片機(jī)開發(fā)板自制MIDI音樂盒(預(yù)算15)

2020-01-15 17:58 作者:失傳技術(shù)  | 我要投稿

arduino從入門到創(chuàng)客帶師第三彈 之自制音樂盒(編程放音樂)

傳統(tǒng)藝能 自制音樂盒 從簡(jiǎn)易代碼到 用NODE JS 扒MID然后用UNO 輸出方波正弦波播放8bit風(fēng)格音樂 還記得多年以前咱剛接觸圖吧福利群的時(shí)候20包郵買了個(gè)來圖定制的音樂盒,當(dāng)時(shí)是個(gè)鋼琴,面板是定制圖片印刷的純玻璃制的音樂盒,底部有個(gè)發(fā)條可以用來蓄能,驅(qū)動(dòng)機(jī)械音樂盒播放《天空之城》 當(dāng)時(shí)咱很喜歡,但是最后咱把這套裝備給老妹了 人永遠(yuǎn)是比東西重要的。得到或失去東西或者贈(zèng)送都不算什么,只要人沒事就好。

過兩天把咱之前的六色打印機(jī)和掃描儀給送去……人高興是最重要的

占有多少物資,擁有多少權(quán)利,都沒有一家人平安喜樂來得實(shí)在。就像之前說的那樣,在網(wǎng)上顯示自己的技術(shù)只會(huì)給自己帶來麻煩,與其去研究電磁彈射原理與技術(shù)不如自己變成做個(gè)音樂盒拿去給長(zhǎng)輩拜壽。

首先大多數(shù)音樂蠟燭的結(jié)構(gòu)是這樣的:一個(gè)牛屎芯片封裝的音樂IC通過電荷泵驅(qū)動(dòng)壓電陶瓷蜂鳴器,在有限的空間內(nèi)產(chǎn)生巨大的聲音,循環(huán)播放音樂(一般都是《生日快樂》)這種音樂IC一般成本都比較低,如果是純模電制作的話這樣的模塊成本不超過3元,一般一個(gè)音樂IC1塊錢左右,三極管TO92封裝 一個(gè)普通的NPN三極管,一個(gè)蜂鳴器(可以是電磁的),一塊PCB印刷電路板,整個(gè)的成本就是這么點(diǎn)。簡(jiǎn)單有效

就是這種東西,自己買套件可能也就兩三塊錢

但是這期我們依然是使用ARDUINO開發(fā)板來制作這個(gè)音樂盒。因?yàn)閱纹瑱C(jī)作為可編程元件,利用開發(fā)板和現(xiàn)成的庫與環(huán)境可以自由地通過編程了獲得任何想要的樂曲,這是出廠就固定參數(shù)的音樂IC沒法比的。

ARDUINO教程書已更新:《Arduino程序設(shè)計(jì)基礎(chǔ)》(第2版) 歡迎各位自學(xué)

這期我們需要準(zhǔn)備的有:14包郵的ARDUINO UNO開發(fā)板基于ATMEGA328P(或者基于ESP 8266的D1 MINI也可以,10塊錢包郵,但是需要自己焊IO的排針排插)

一個(gè)帶線揚(yáng)聲器 1塊錢(一般用0.5W 4Ω或者8Ω的電磁揚(yáng)聲器就行 當(dāng)然16Ω或者32Ω的電磁蜂鳴器自己焊好線也可以 這里不能用壓電陶瓷的蜂鳴器 會(huì)響不起來 壓電陶瓷需要特殊的驅(qū)動(dòng)器,直接用單片機(jī)開發(fā)板IO難以驅(qū)動(dòng))

對(duì)了, NodeMCU是有5V輸出腳的,VU腳(板子較寬的CH340G版>或者VIN腳(板子較窄的CP2102版> 之前阿卡林的群里面說的NODEMCU沒有5V輸出實(shí)際上并不是這樣的,所以也就不存在因?yàn)镹ODEMCU沒5V而建議買D1 MINI,實(shí)際上來說吧D1 MINI倒是很便宜,而且同樣基于ESP8266且?guī)Т谵D(zhuǎn)USB,我的意見是如果將來打算好好玩ARDUINO,買個(gè)D1標(biāo)準(zhǔn)版18包郵也不是不行,除非對(duì)體積有特殊要求的場(chǎng)合,不然ARDUINO還是買標(biāo)準(zhǔn)版比較好用,畢竟各種擴(kuò)展模塊都是基于標(biāo)準(zhǔn)版設(shè)計(jì)的

咱以前搞8266的時(shí)候就沒做過什么正經(jīng)玩意,基本就是給模塊刷上WIFI DEAUTHER的固件之后就出手了,所以對(duì)于IO還真沒怎么用過……以后會(huì)好的吧,這個(gè)假期高產(chǎn)試試 這個(gè)系列好好更將來會(huì)用到的。

此外揚(yáng)聲器和蜂鳴器本身是有極性的,雖然正負(fù)怎么接都能響。但是蜂鳴器是存在有源蜂鳴器和無源蜂鳴器的區(qū)別的,區(qū)別是有源蜂鳴器自帶驅(qū)動(dòng)電路,只要外加直流電就會(huì)產(chǎn)生一定頻率的聲音,這顯然不適合播放音樂,一般多用于簡(jiǎn)單電器的警報(bào)功能,比如洗衣機(jī)熱水器UPS之類的。而無源蜂鳴器的阻抗一般比較高,和一般的小型功放阻抗不匹配使用有困難,但是對(duì)于用單片機(jī)開發(fā)板驅(qū)動(dòng)來說還是可以的。

單片機(jī)開發(fā)板驅(qū)動(dòng)小喇叭播放音樂的原理其實(shí)也很簡(jiǎn)單,讓單片機(jī)的數(shù)字輸出通過PWM脈沖寬度調(diào)制的方法來驅(qū)動(dòng)揚(yáng)聲器發(fā)出聲音。其實(shí)PWM這種方式解釋起來很簡(jiǎn)單,就是通過開關(guān)元件(可不是咱理解的開關(guān),這里指繼電器電子管晶體管里面的三極管或者M(jìn)OS管之類的東西,主要的功能在這里還是開關(guān))不停的鬼畜開關(guān)來調(diào)節(jié)輸出給負(fù)載的電壓,簡(jiǎn)單來說就是通過改變揚(yáng)聲器的電壓來控制揚(yáng)聲器線圈的電流從而就可以控制揚(yáng)聲器的振動(dòng)產(chǎn)生聲音了。相比傳統(tǒng)功放開關(guān)可以開一半控制電流的方式,PWM是直接通過“快速鬼畜”通過調(diào)整開關(guān)時(shí)間占比來確定負(fù)載上的電壓的。如圖:

這種方式的好處是操作簡(jiǎn)便,只需要決定開關(guān)的時(shí)間,效率較高功耗很低。過去的傳統(tǒng)功放,因?yàn)殚_關(guān)元件開一半的緣故,所以電能有一半是分在開關(guān)元件上了,白白消耗掉變成熱了,因此過去的傳統(tǒng)功放要么就是電子管滾燙碰一下就可以抹藥了要么就是晶體管需要非常大的散熱片散熱片不比電路上的其他元件便宜,顯然體積也很大。

而數(shù)字功放的缺點(diǎn)則是先天不足,畢竟不是模擬功放,輸出的波形和音樂的波形相比之下無論如何都有失真,因此需要投入很多技術(shù)改進(jìn)才能獲得滿意的效果。相比之下模擬功放的改進(jìn)型功耗則沒有那么嚇人完全可以接受而且音質(zhì)也不錯(cuò),因此作為垃圾佬咱是更喜歡模擬功放的。畢竟數(shù)字功放這年頭他們燒HIFI往里砸錢砸太多了,一個(gè)小黑盒子要成千上萬垃圾佬是不可能要的……有這錢自己搓個(gè)環(huán)繞立體聲都?jí)蛄恕?/p>

PS:其實(shí)HIFI沒有那么高貴,像咱的手機(jī),兩年前380塊錢買的華為P9上也搭載了HIFI模塊,當(dāng)年在發(fā)布會(huì)上這個(gè)模塊非常低調(diào)的出現(xiàn)在示意圖上,風(fēng)頭完全被萊卡雙攝蓋住了,甚至都沒怎么宣傳,但是實(shí)際上華為P9作為帶3.5mm的手機(jī)實(shí)際上是完全支持HIFI的。

至于ARDUINO,本身的IO里面就帶數(shù)字輸出,支持PWM輸出,所以完全可以利用ARDUINO自帶的函數(shù)用來輸出不同頻率聲音組合的音樂

這里是代碼:

/*

使用無源蜂鳴器播放《葫蘆娃》

*/


//對(duì)應(yīng)音符和頻率值 #define 是一個(gè)很有用的C語法,它允許程序員在程序編譯之前給常量命名。在Arduino中,定義的常量不會(huì)占用芯片上的任何程序內(nèi)存空間。在編譯時(shí)編譯器會(huì)用事先定義的值來取代這些常量。然而這樣做會(huì)產(chǎn)生一些副作用,例如,一個(gè)已被定義的常量名已經(jīng)包含在了其他常量名或者變量名中。在這種情況下,文本將被#defined 定義的數(shù)字或文本所取代。通常情況下,優(yōu)先考慮使用 const 關(guān)鍵字替代 #define 來定義常量。

//Arduino 擁有和 C 相同的語法規(guī)范。Arduino語法詳解

#define NOTE_D0 -1

#define NOTE_D1 294

#define NOTE_D2 330

#define NOTE_D3 350

#define NOTE_D4 393

#define NOTE_D5 441

#define NOTE_D6 495

#define NOTE_D7 556


#define NOTE_DL1 147

#define NOTE_DL2 165

#define NOTE_DL3 175

#define NOTE_DL4 196

#define NOTE_DL5 221

#define NOTE_DL6 248

#define NOTE_DL7 278


#define NOTE_DH1 589

#define NOTE_DH2 661

#define NOTE_DH3 700

#define NOTE_DH4 786

#define NOTE_DH5 882

#define NOTE_DH6 990

#define NOTE_DH7 112


#define WHOLE 1

#define HALF 0.5

#define QUARTER 0.25

#define EIGHTH 0.25

#define SIXTEENTH 0.625


//整首曲子的音符部分

int tune[] =

{

?NOTE_DH1, NOTE_D6, NOTE_D5, NOTE_D6, NOTE_D0,

?NOTE_DH1, NOTE_D6, NOTE_D5, NOTE_DH1, NOTE_D6, NOTE_D0, NOTE_D6,

?NOTE_D6, NOTE_D6, NOTE_D5, NOTE_D6, NOTE_D0, NOTE_D6,

?NOTE_DH1, NOTE_D6, NOTE_D5, NOTE_DH1, NOTE_D6, NOTE_D0,


?NOTE_D1, NOTE_D1, NOTE_D3,

?NOTE_D1, NOTE_D1, NOTE_D3, NOTE_D0,

?NOTE_D6, NOTE_D6, NOTE_D6, NOTE_D5, NOTE_D6,

?NOTE_D5, NOTE_D1, NOTE_D3, NOTE_D0,

?NOTE_DH1, NOTE_D6, NOTE_D6, NOTE_D5, NOTE_D6,

?NOTE_D5, NOTE_D1, NOTE_D2, NOTE_D0,

?NOTE_D7, NOTE_D7, NOTE_D5, NOTE_D3,

?NOTE_D5,

?NOTE_DH1, NOTE_D0, NOTE_D6, NOTE_D6, NOTE_D5, NOTE_D5, NOTE_D6, NOTE_D6,

?NOTE_D0, NOTE_D5, NOTE_D1, NOTE_D3, NOTE_D0,

?NOTE_DH1, NOTE_D0, NOTE_D6, NOTE_D6, NOTE_D5, NOTE_D5, NOTE_D6, NOTE_D6,

?NOTE_D0, NOTE_D5, NOTE_D1, NOTE_D2, NOTE_D0,

?NOTE_D3, NOTE_D3, NOTE_D1, NOTE_DL6,

?NOTE_D1,

?NOTE_D3, NOTE_D5, NOTE_D6, NOTE_D6,

?NOTE_D3, NOTE_D5, NOTE_D6, NOTE_D6,

?NOTE_DH1, NOTE_D0, NOTE_D7, NOTE_D5,

?NOTE_D6,

};


//曲子的節(jié)拍,即音符持續(xù)時(shí)間

float duration[] =

{

?1, 1, 0.5, 0.5, 1,

?0.5, 0.5, 0.5, 0.5, 1, 0.5, 0.5,

?0.5, 1, 0.5, 1, 0.5, 0.5,

?0.5, 0.5, 0.5, 0.5, 1, 1,


?1, 1, 1 + 1,

?0.5, 1, 1 + 0.5, 1,

?1, 1, 0.5, 0.5, 1,

?0.5, 1, 1 + 0.5, 1,

?0.5, 0.5, 0.5, 0.5, 1 + 1,

?0.5, 1, 1 + 0.5, 1,

?1 + 1, 0.5, 0.5, 1,

?1 + 1 + 1 + 1,

?0.5, 0.5, 0.5 + 0.25, 0.25, 0.5 + 0.25, 0.25, 0.5 + 0.25, 0.25,

?0.5, 1, 0.5, 1, 1,

?0.5, 0.5, 0.5 + 0.25, 0.25, 0.5 + 0.25, 0.25, 0.5 + 0.25, 0.25,

?0.5, 1, 0.5, 1, 1,

?1 + 1, 0.5, 0.5, 1,

?1 + 1 + 1 + 1,

?0.5, 1, 0.5, 1 + 1,

?0.5, 1, 0.5, 1 + 1,

?1 + 1, 0.5, 0.5, 1,

?1 + 1 + 1 + 1

};


int length;//定義一個(gè)變量用來表示共有多少個(gè)音符

int tonePin = 8; //蜂鳴器的pin


void setup()

{

?pinMode(tonePin, OUTPUT); //設(shè)置蜂鳴器的pin為輸出模式

?length = sizeof(tune) / sizeof(tune[0]); //這里用了一個(gè)sizeof函數(shù),查出數(shù)組里有多少個(gè)音符

}


void loop()

{

?for (int x = 0; x < length; x++) //循環(huán)音符的次數(shù)

?{

? ?tone(tonePin, tune[x]); //依次播放tune數(shù)組元素,即每個(gè)音符

? ?delay(400 * duration[x]); //每個(gè)音符持續(xù)的時(shí)間,即節(jié)拍duration,400是調(diào)整時(shí)間的越大,曲子速度越慢,越小曲子速度越快

? ?noTone(tonePin);//停止當(dāng)前音符,進(jìn)入下一音符

?}

?delay(5000);//等待5秒后,循環(huán)重新開始

}

揚(yáng)聲器正極接在數(shù)字引腳8,負(fù)極接GND就可以了,程序不需要調(diào)用什么庫,編譯無誤上傳到開發(fā)板就行了。

但是這種方法雖然簡(jiǎn)單,但是卻存在缺點(diǎn),也就是編曲非常麻煩,整首曲子需要被分成曲調(diào)和音符(節(jié)拍)也就是翻譯成機(jī)器語言,這樣也就表示為開發(fā)板用機(jī)器語言編曲非常困難,那么有什么辦法可以簡(jiǎn)單的直接讓ARDUINO不需要編曲就可以播放音樂嗎?可以:

arduino-midi-player

這個(gè)項(xiàng)目允許用戶在ARDUINO開發(fā)板上利用一套完整的代碼播放MIDI音樂,下載方法在我們之前的ARDUINO環(huán)境庫的安裝和使用GITHUB上的開源項(xiàng)目 說過,右上角CLONE OR DOWNLOAD里面選ZIP就行了,不需要登錄

什么是MIDI音樂?MIDI(Musical Instrument Digital Interface)樂器數(shù)字接口 ,是20 世紀(jì)80 年代初為解決電聲樂器之間的通信問題而提出的。MIDI是編曲界最廣泛的音樂標(biāo)準(zhǔn)格式,可稱為“計(jì)算機(jī)能理解的樂譜”。它用音符的數(shù)字控制信號(hào)來記錄音樂。一首完整的MIDI音樂只有幾十KB大,遠(yuǎn)遠(yuǎn)小于波形音樂。

比如這個(gè)《帝國時(shí)代》的主題曲就是MIDI格式的音樂。但是仔細(xì)聽可以發(fā)現(xiàn),MIDI音樂是不含人聲的,因?yàn)镸IDI音樂是利用系統(tǒng)自帶的樂器演奏的,而不是記錄錄音。MIDI音樂的樂器不含人聲,所以無法演唱人聲。但是各位老二次元都知道大量使用MIDI技術(shù)的雅馬哈推出了VOCALOID這款軟件,允許利用機(jī)器演唱樂曲,在MIDI音樂中填上唱詞就可以利用人聲庫中的人聲演唱了,也有基于同樣技術(shù)的開源軟件可以使用。當(dāng)然,這又是另一個(gè)故事了。

總之這個(gè)項(xiàng)目允許我們利用腳本自動(dòng)化轉(zhuǎn)換MIDI格式的音樂變成ARDUINO可以識(shí)別的音樂。但是這個(gè)腳本是基于NODE.JS的,因此我們需要上官網(wǎng)下載運(yùn)行環(huán)境

下載哪個(gè)都行

下載后按正常軟件WIZARD的方法安裝就行了

安裝結(jié)束了

然后我們啟動(dòng)CMD就可以了,WIN7 XP用運(yùn)行 WIN+R CMD回車就行了 不需要運(yùn)行NODE.JS的控制臺(tái)

先運(yùn)行node -v看看運(yùn)行庫情況,然后輸入 CD 下載的ZIP解壓出來的JS腳本所在的文件夾路徑就可以了,WIN7可以直接點(diǎn)文件管理器的地址欄復(fù)制絕對(duì)路徑,然后在CMD里面右鍵粘貼

然后我們需要輸入node smf2seq.js <你想轉(zhuǎn)換的MIDI文件名.mid>

實(shí)踐證明后邊括號(hào)里的內(nèi)容可以不需要,只需要把你想要轉(zhuǎn)換的MIDI文件重命名為song.mid然后放在這個(gè)JS腳本同一個(gè)文件夾然后node smf2seq.js就行了

這樣最后會(huì)得到兩個(gè)文件,一個(gè)叫sequence.h,另一個(gè)叫midi.json 你需要做的是把這兩個(gè)文件放在和arduino-midi-player.ino同一個(gè)文件夾里然后運(yùn)行arduino-midi-player.ino

一開始運(yùn)行arduino-midi-player.ino的時(shí)候ARDUINO會(huì)讓你把這個(gè)項(xiàng)目文件單獨(dú)建一個(gè)文件夾存放,一般是在原地新建一個(gè)同名文件夾然后移動(dòng)項(xiàng)目文件進(jìn)去,所以你需要把原來GITHUB下載的壓縮包解壓后的那個(gè)項(xiàng)目文件夾里面的所有文件都挪到ARDUINO給你新建的文件夾里去,和arduino-midi-player.ino一起。

smf2seq.js可以放在原地不動(dòng),方便我們將來日后整別的MIDI 當(dāng)然如果移動(dòng)了的話就再在CMD里面CD到smf2seq.js所在的文件夾就行了

關(guān)于MIDI文件的要求

這個(gè)項(xiàng)目對(duì)MIDI文件有一定的要求,首先MIDI文件不能是加密的,很多游戲自帶的MIDI是加密的,在這里無法使用,比如《暴力摩托》的MIDI就是經(jīng)典的加密MIDI,別說給ARDUINO用,正常播放器都放不了只能在游戲中用(還好有人通過錄音轉(zhuǎn)換成MIDI的方式解密了)?!兜蹏鴷r(shí)代》這個(gè)也被報(bào)錯(cuò)說不支持了,MMP。

那么我們?cè)趺吹玫組IDI文件呢?其實(shí)關(guān)于MIDI文件一直有很多網(wǎng)站在分享,過去不少網(wǎng)站下載MIDI格式音樂是不要錢的,那年頭的FLASH同人小游戲都用的是這種免費(fèi)公開的MIDI網(wǎng)站提供的MIDI格式音樂作為BGM。而咱作為老二次元會(huì)彈琴是傳統(tǒng)藝能就更傾向于去找樂譜分享網(wǎng)站下載基于MIDI的樂譜

咱在蟲蟲鋼琴網(wǎng)或者流行鋼琴網(wǎng)這種曲譜網(wǎng)站是有號(hào)的,這些網(wǎng)站下載曲譜仍然保持著老論壇回復(fù)免積分的方法,非常適合咱這次這個(gè)項(xiàng)目。

OVE格式的樂譜下載回來之后需要用一個(gè)叫OVERTURE的軟件打開,這個(gè)軟件可以把樂譜導(dǎo)出MIDI格式

咱簡(jiǎn)單把它放在桌面就行了。

順帶說下,這款過去免費(fèi)的軟件現(xiàn)在也慘遭馬克丁代理變成了收費(fèi)軟件了。以前免費(fèi)的版本被強(qiáng)制更新成了收費(fèi)版,網(wǎng)上也再也找不到過去的免費(fèi)版了,還好我還有。各位如果需要的話我們所可以提供Overture 4.1.5 單文件中文版(popiano),我會(huì)把它放在群文件里

馬克丁吃屎去吧

然后我們運(yùn)行arduino-midi-player.ino

如果報(bào)錯(cuò)sequence.h: No such file or directory那就是咱剛才說的ARDUINO自動(dòng)新建文件夾的問題了,把sequence.h:放在和arduino-midi-player.ino一個(gè)文件夾里。GITHUB上的那個(gè)項(xiàng)目文件最好還是解壓出來之后把里面所有的文件都塞到和arduino-midi-player.ino一個(gè)文件夾

至于剩下的報(bào)錯(cuò)則是對(duì)MIDI文件轉(zhuǎn)換成的sequence.h的問題了,貌似這個(gè)樂譜出現(xiàn)了ARDUINO不能理解的樂句

玩ARDUINO就是哪里不對(duì)刪哪里 好在咱下載的是樂譜,咱可以通過修改樂譜的方式重新導(dǎo)出修正過的MIDI文件,咱先把后面復(fù)雜的部分去掉試試

編譯成功

這會(huì)兒咱的開發(fā)板在11號(hào)數(shù)字端口插揚(yáng)聲器正極,揚(yáng)聲器負(fù)極接地(GND)就可以按照MIDI文件播放音樂了

咱最近看到微博上又有人轉(zhuǎn)嗩吶版的《戀愛循環(huán)》之后簡(jiǎn)單的 用半個(gè)小時(shí)的時(shí)間就吹出了同樣的效果:【嗩吶】《戀愛循環(huán)》 ?雖然復(fù)雜的指法變換需要點(diǎn)時(shí)間練習(xí),但是主體部分照著樣子拿一樣調(diào)子的嗩吶很快就能摸出來了,會(huì)聽音識(shí)曲然后彈奏確實(shí)就是這么舒服,演奏不需要看譜,曲子只要聽一遍就可以在鋼琴嗩吶吉他或者任何你想要的樂器上演奏出來了。

至于上圖這個(gè)曲譜轉(zhuǎn)成MIDI之后用單片機(jī)播放的效果見:【單片機(jī)】《戀愛循環(huán)》

有的曲譜下載可能要技能點(diǎn),這個(gè)就比較麻煩了,因?yàn)橐话愕馁~號(hào)要練到一星可是需要很長(zhǎng)時(shí)間的,不過還好我有。如果各位有這方面的需要可以來我們所找我,我會(huì)盡力幫助各位得到自己想要的曲譜的

其實(shí)在這個(gè)網(wǎng)站練級(jí)很容易,只需要自己上傳幾個(gè)曲譜然后打分就行了,因?yàn)榇蚍挚梢阅涿浴郧斑@些網(wǎng)站的日子好過的時(shí)候什么事都不難,咱自己就很少扒譜或者編曲,都是給人家現(xiàn)成的樂譜加字幕或者空耳字幕就上傳了……以前MIDISHOW之類的MIDI分享網(wǎng)站還可以利用BUG下MID不要錢,現(xiàn)在也不行了,但是交5塊錢可以五天內(nèi)下500次免積分,還是很便宜的。

咱之前以為報(bào)錯(cuò)上因?yàn)橛袃蓚€(gè)音軌,所以把樂譜的音軌刪掉了一個(gè)并且去掉了所有的復(fù)音,但是實(shí)際上我們發(fā)現(xiàn)這個(gè)曲譜轉(zhuǎn)的MIDI無論有幾條音軌ARDUINO都不會(huì)報(bào)錯(cuò)。

我們就一直node .JS就行了

注意這個(gè)樂譜分享網(wǎng)站上的一些曲譜

如果放出來的下載格式里面沒有的OVE話那你可能需要樂譜識(shí)別軟件比如smartscore之類的

或者一些曲子壓根就沒提供任何格式的下載或者壓根你想要的曲子就沒有樂譜的話你就需要用個(gè)了:

或者用FL之類的

在譜面沒有提供下載的時(shí)候你可以考慮一下打這個(gè)預(yù)覽播放器的主意:

這個(gè)預(yù)覽播放的格式是MIDI生成的MP3,可以想辦法扒下來,最簡(jiǎn)單的方法是通過遨游直接資源嗅探器弄出來,這個(gè)插件是遨游自帶的,至少我用的遨游3遨游4都帶這個(gè),網(wǎng)頁上可見的資源都可能弄下來,非常實(shí)用

這樣得到的MP3因?yàn)槭荕IDI轉(zhuǎn)的所以非常容易被重新識(shí)別成MIDI

當(dāng)然,識(shí)別效果主要還是取決于實(shí)用軟件的優(yōu)劣,以及必要時(shí)需要人工干預(yù)……挺無聊繁雜的工作,如果有方法搞到MIDI,不建議各位玩這個(gè)

其實(shí)最簡(jiǎn)單的獲取MIDI的方法還是自己學(xué)會(huì)這首曲子的演奏然后吹拉彈唱一遍,如果各位和咱一樣是學(xué)電子琴的出身還可以利用電子琴或者其他MIDI鍵盤作為輸入設(shè)備……這樣只要演奏的水平差不多,就可以獲得正確的MIDI,演奏錯(cuò)了沒關(guān)系,可以用軟件修嘛

這樣如果水平到了,管他有沒有譜都可以彈出來嘛,說實(shí)在的在咱發(fā)現(xiàn)咱有可以不用譜也能找到調(diào)然后演奏自己想要的任何曲子的時(shí)候就覺得自己已經(jīng)不怎么需要譜了。所以咱自己即興演奏的時(shí)候?qū)ηV的依賴很小,像很多演奏類視頻下面一大堆求曲譜的評(píng)論里面就沒有咱——咱自己想演奏隨時(shí)就可以學(xué)會(huì)然后隨手彈/順嘴吹出來,一點(diǎn)也不難。

說到扒MIDI不得不讓咱想起咱以前混鬼畜圈子的時(shí)候的日常了——到處扒MIDI,找各種方法獲取資料,那個(gè)年代對(duì)于咱來說是真的難過,雖然軟件到處都能搞到?jīng)]有什么馬克丁視覺中國之類的垃圾,但是圈子很小資源很少而且很多現(xiàn)在非常好用的東西以前也是沒有的,所以就很難受……現(xiàn)在來說軟件雖然難搞但是還是能搞到的,而且圈子人也多惡俗也都基本死光了,但是對(duì)于某些沒有惡俗就活不下去的人來說沒了市場(chǎng)就很爽了……總之日子還是向前向好發(fā)展的,對(duì)于大多數(shù)人來說。作為受害者,咱還是覺得惡俗都死了才好。都和林婉佳一塊見鬼去吧。

ARDUINO其實(shí)相對(duì)于上述方法翻譯MIDI后播放來說也可以通過外掛模塊支持WAV MP3之類的格式音樂的播放成為真正的音樂播放器,但是那就沒有意思了,外掛模塊本質(zhì)上講其實(shí)無論解碼還是功放都不是利用單片機(jī)本身來實(shí)現(xiàn)的,這里ARDUINO本身只是作為一個(gè)電源了

而且這玩意的價(jià)格完全不便宜啊,老外賣東西的價(jià)格咱都看在眼里的

上圖這兩個(gè)模塊華強(qiáng)北產(chǎn)的同款售價(jià)是數(shù)字和上圖一致的人民幣,還滿9.9包郵或者運(yùn)費(fèi)三四塊錢。

而且華強(qiáng)北的MP3模塊是非常便宜的,就這款支持MP3和WAV的板子市場(chǎng)均價(jià)也就5塊錢包郵不能再多了

這款其實(shí)不錯(cuò),咱以前一直用它來著。還在B站水過視頻(雖然后來被刪了)

PS上TB買東西真不能信搜索頁最開始那幾個(gè)搜索結(jié)果的東西,這玩意不包郵也就三四塊錢包郵也就頂多5塊錢搜索結(jié)果里面靠前的都十多塊錢,凈利好幾倍,所以在這種價(jià)格都透明的場(chǎng)合買搜索結(jié)果的店就別去了,就是小白在實(shí)際價(jià)格面前也不會(huì)和自己的錢過不去的。

總之,這期教程除了談ARDUINO之外,還談到了很多以前搞音樂時(shí)候的一些基本知識(shí),希望這個(gè)可以幫到各位。


用單片機(jī)開發(fā)板自制MIDI音樂盒(預(yù)算15)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
夏津县| 抚远县| 顺平县| 安吉县| 神农架林区| 永嘉县| 冀州市| 崇明县| 阿合奇县| 红桥区| 诸暨市| 清新县| 太和县| 麻阳| 曲阜市| 孝义市| 鄂伦春自治旗| 驻马店市| 右玉县| 江都市| 镇康县| 达拉特旗| 石楼县| 图们市| 襄垣县| 石嘴山市| 江阴市| 平果县| 买车| 贵州省| 阿坝| 福建省| 南岸区| 娄烦县| 区。| 满城县| 北海市| 同仁县| 南涧| 赤城县| 双牌县|