日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

arduino编乐谱_把乐谱播出来,自制简谱播放库

發布時間:2024/1/1 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arduino编乐谱_把乐谱播出来,自制简谱播放库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關注我們微信的童鞋可能還記得,昨天我發了一章關于UNO+喇叭就可以播放歌曲的文章。

文章到最后也沒有完成整個天空之城歌曲。因為實在是太麻煩了。。于是今天就苦思冥想,想借此機會整理出一個簡譜的播放程序。借此來播放所有簡譜寫成的歌曲。既能提高復用性,也很有趣

那么既然要寫庫,我們來一步步分析我們要完成的工作吧:1、如何把簡譜用程序里的數據表示出來。2、表示出來的數據如何解析。3、解析出來的數據如何播放。

來看看我分解出來的三個問題,可以看到第三個問題非常簡單,之前的文章已經解決了這個問題。一個普通的UNO+一個小喇叭+Arduino的tone函數就可以搞定。

一、那么先來解決第一個問題:如何把簡譜用程序里的數據表示出來。這里設計到我們如何來設計這個存儲數據的結構的問題。一開始我是想兼容現有的樂譜的格式的。現有的樂譜格式倒是有一些,但是卻沒找到相關的資料,所以也沒辦法兼容了。所以我只能做一個沒辦法的辦法,自己設計這個數據。Arduino使用的是C++語言,數據處理相比較起高級語言是比較麻煩的,而且芯片本身速度也比較慢,所以我選擇的是最簡單的方案,用字符串來存儲。那么問題來了,我們有哪些數據需要保存?先來看看簡譜。

看了譜子眼花繚亂。。。簡單介紹下:

數字代表音調 1234567分別代表do re mi fa sol la xi數字下面的點代表下降一個8度數字上面的點代表上升一個8度和數字同樣的橫線 “-”代表延長數字下方有橫線,代表8分音符。2個橫線代表16分音符。數字前面的#代表這個音調要升半調。

可以看見樂譜上的信息很多,那么我們要一一記錄這些信息,最終我設計的數據是這樣的。

舉個例子:n61f4,n71f4,n10f34,n71f4,n10f3,n30f3代表以下音符。

n代表沒有#號,如果有#,則用s代替。6代表la1f代表6下面有1個點,若上面有一個點則用1s代替4代表這個音符是8分音符1代表全音符

2代表2分音符3代表4分音符4代表8分音符5代表16分音符6代表32分音符可以看見第三個音符后面有個點,這個叫延長符號,及要延長他本身一半的時間,他是一個4分音符,點就代表要延長8分音符的時間。所以f后面有2個數字34,這樣即可延長時間。這樣就基本把簡譜表示出來了。

二、我們再來解決第二個問題解析我們表示的數據。C++解析字符串比較麻煩,所以設計的時候每個音符都用‘,’隔開,這樣就方便解析。解析函數如下。

void MELODY::playMelody(char *Melody,int playSpeed){ const char d = " ,"; char p; char cgy[10]; int noteDuration=0; int i,j; uint8_t thisNote1=0,thisNote2=0; p = strtok(Melody,d); sprintf(cgy, "%s", p); while(p) { char note[]="0000000000"; noteDuration=0; for (i=0;(p+i)!='\0';i++){ note=(p+i); } for (int j=4;jdebug) this->serial->println(noteDuration); if (note[]=='n'){ switch (note[1]){ case '1':thisNote1=0; break; case '2':thisNote1=2; break; case '3':thisNote1=4; break; case '4':thisNote1=5; break; case '5':thisNote1=7; break; case '6':thisNote1=9; break; case '7':thisNote1=11; break; } } else if (note[

頭文件中,我將每個音對應的頻率設置成為一個數組,方便解析。

至此,左右的工作的都完成了,只需要將簡譜輸入成我剛才的格式就可以播放音樂啦,當然還是比較麻煩,但比上次的效率高了很多,上次2個小時大概輸入了1半,這次半個小時就輸入了整首歌。

現在附上程序的地址,想要庫的可以去下載哦:https://github.com/rainbowyu/LD_ArduinoLib/tree/V1.02如果喜歡觀看類似科技新奇事物,以及了解創客圈最新資訊,或者您對Arduino有所耳聞,可以關注我們微信公眾號,一定會帶給您最新的資訊,最實用的教程,以及創客最新的玩意。

總結

以上是生活随笔為你收集整理的arduino编乐谱_把乐谱播出来,自制简谱播放库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文在线字幕免费观看电 | 中文字幕日本一区二区 | 成人黄色免费看 | 国产日韩欧美亚洲 | 日韩久久视频 | 国产又黄又粗又爽 | 色乱码一区二区三区网站 | www毛片com | 欧美精品日韩精品 | 国产高清久久久 | 国产高清一区二区三区 | 国产黄色av| 国产激情视频一区二区三区 | 91国产在线免费观看 | 亚洲午夜精品一区 | 人人射人人爽 | 又欲又污又肉又黄短文 | 1000部啪啪未满十八勿入超污 | 狠狠做 | 国产夫妻在线视频 | 午夜性片 | 亚洲av无码专区在线播放中文 | 在线不卡欧美 | 99久久久成人国产精品 | 久久精品国产亚洲av嫖农村妇女 | 巨大黑人极品videos精品 | 国产xxxx做受性欧美88 | 欧洲精品一区二区三区 | 日韩中文字幕免费 | 欧美天天搞 | 国产av不卡一区二区 | 超色视频| 2018av在线 | 操极品女神 | 中文字幕女同女同女同 | 国产伦精品一区二区 | 在线观看国产三级 | 国产精品白嫩白嫩大学美女 | 久久av高潮av无码av喷吹 | 朱竹清到爽高潮痉挛 | 调教亲女小嫩苞h文小说 | 久久久久久久久久99 | 亚洲国产成人精品无码区99 | 免费做a爰片77777 | 华人av在线 | 国产激情在线观看 | 欧美激情在线看 | 丁香综合激情 | 暴操白虎 | 久久一区二区三区四区五区 | 九九视频在线免费观看 | 欧美一二三区视频 | 久久机热 | 91精品在线免费观看 | 国产亚洲精品久久久久久无几年桃 | 欧美30p| 欧美二区视频 | 国产自在线拍 | 欧美日韩精品区 | 秋霞影院一区二区 | 自拍偷拍视频网 | 免费在线看污片 | 国产精欧美一区二区三区白种人 | 九九热最新视频 | 国产66页 | 欧美激情精品久久久久久 | 动漫一区二区 | 狠狠躁天天躁夜夜躁婷婷 | 中出一区二区 | 超碰久操 | 神马久久午夜 | 91精品久久久久久综合五月天 | 精品国产伦一区二区三区免费 | 天天干天天色天天射 | 成人乱码一区二区三区av | 国产又粗又猛又黄视频 | 伊人久久婷婷 | 精品国产视频一区二区三区 | 黄色片在线免费观看 | 欧美r级在线 | 国产日b视频 | 中文字幕精品一区 | 中文字幕一区二区三区人妻 | 无罩大乳的熟妇正在播放 | av高清一区 | 成人免费影视网站 | 中文字幕第一页久久 | 国产一区二区三区四区五区美女 | 日韩精品在线免费看 | 中国黄色大片 | 一区二区韩国 | 法国空姐在线观看免费 | 色婷婷综合久久久久中文 | 亚洲欧美久久 | 天天曰天天 | 日本专区在线 | 男女av| 欧美夜夜操 | 好看的黄色录像 |