arduino制作各種歌曲11_第1頁(yè)
arduino制作各種歌曲11_第2頁(yè)
arduino制作各種歌曲11_第3頁(yè)
arduino制作各種歌曲11_第4頁(yè)
arduino制作各種歌曲11_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第頁(yè)首先講下簡(jiǎn)單的樂(lè)理知識(shí),知道音樂(lè)是怎么演奏出來(lái)的自然就可以通過(guò)代碼來(lái)進(jìn)行編排了。

1.演奏單音符

一首樂(lè)曲有若干音符組成,一個(gè)音符對(duì)應(yīng)一個(gè)頻率。我們知道到相對(duì)應(yīng)的頻率讓arduino輸出到蜂鳴器蜂鳴器就會(huì)放出相應(yīng)的聲音,這里有個(gè)表供大家參考:

2.音符的演奏時(shí)間

我們知道了音符是如何演奏出來(lái)的,下一步就是控制音符的演奏時(shí)間。每個(gè)音符都會(huì)播放一定的時(shí)間,這樣才能構(gòu)成一首優(yōu)美的曲子,而不是生硬的一個(gè)調(diào)的把所有的音符一股腦的都播放出來(lái)。如何確定每個(gè)音符演奏的單位時(shí)間呢?

我們知道,音符節(jié)奏分為一拍、半拍、1/4拍、1/8拍,我們規(guī)定一拍音符的時(shí)間為1;半拍為0.5;1/4拍為0.25;1/8拍為0.125……,所以我們可以為每個(gè)音符賦予這樣的拍子播放出來(lái),音樂(lè)就成了。

好了我們看看如何將簡(jiǎn)譜翻譯成對(duì)應(yīng)頻率和拍子。

以葫蘆娃為例:

先看下左上角1=D這里,用的是D調(diào),好那我們就看《音符頻率表》中的D行(紅色部分)

,

第一個(gè)音符是1但上面有個(gè)點(diǎn),所以對(duì)應(yīng)的就是589,時(shí)間是一拍=1,

第二個(gè)音符6(沒(méi)有點(diǎn))就是495,時(shí)間也是一拍=1,

第三個(gè)音符5即441,因?yàn)橛邢聞澗€所以是半拍=0.5,

……以此類推

第四0這里要注意下,這里是沒(méi)有聲音,但是要是用頻率0表示還是會(huì)有聲音(這個(gè)不懂),所以我們用一個(gè)很高頻率的聲音,這樣人耳聽(tīng)不到就達(dá)到了沒(méi)有聲音的效果,所以頻率為-1。拍子=1拍

第五,再接著看到第一句歌詞葫蘆娃這個(gè)娃的音是3—,這表示是兩拍,后面每加一個(gè)“-”,表示拍子+1(1+1),本例中最多是加到4.

第六,第二句歌詞葫蘆娃這個(gè)娃,3?帶個(gè)點(diǎn),點(diǎn)的意思是去3的拍子的一半,即3?的拍子是1+0.5

第七,大家可能會(huì)問(wèn)那弧線怎么表示,這在音樂(lè)中屬于連音,我們要表示的話,可以稍微改下連音后面那個(gè)音的頻率,比如減少或增加一些數(shù)值(需自己調(diào)試),這樣表現(xiàn)會(huì)更流暢,但操作上更復(fù)雜了,本例沒(méi)有做連音的處理,大家有興趣可以自己調(diào)整下。

所以說(shuō)了一大堆,規(guī)律就是時(shí)間上單個(gè)音符沒(méi)有下劃線,就是一拍(1),有下劃線是半拍(0.5),兩個(gè)下劃線是四分之一拍(0.25),有“—”=前面音符的拍子+1;頻率上就是按照音符是否帶點(diǎn),點(diǎn)在上還是在下到表中查找就可以了。

至此原理清楚,隨便拿個(gè)簡(jiǎn)譜來(lái)我們都可以翻譯成代碼了。

好,下面進(jìn)入代碼部分,來(lái)看下這首《葫蘆娃》的代碼:

01.#defineNOTE_D0-1

02.#defineNOTE_D1294

03.#defineNOTE_D2330

04.#defineNOTE_D3350

05.#defineNOTE_D4393

06.#defineNOTE_D5441

07.#defineNOTE_D6495

08.#defineNOTE_D7556

09.

10.#defineNOTE_DL1147

11.#defineNOTE_DL2165

12.#defineNOTE_DL3175

13.#defineNOTE_DL4196

14.#defineNOTE_DL5221

15.#defineNOTE_DL6248

16.#defineNOTE_DL7278

17.

18.#defineNOTE_DH1589

19.#defineNOTE_DH2661

20.#defineNOTE_DH3700

21.#defineNOTE_DH4786

22.#defineNOTE_DH5882

23.#defineNOTE_DH6990

24.#defineNOTE_DH71112

25.//以上部分是定義是把每個(gè)音符和頻率值對(duì)應(yīng)起來(lái),其實(shí)不用打這么多,但是都打上了,后面可以隨意編寫D調(diào)的各種歌,我這里用NOTE_D+數(shù)字表示音符,NOTE_DH+數(shù)字表示上面有點(diǎn)的那種音符,NOTE_DL+數(shù)字表示下面有點(diǎn)的那種音符。這樣后面寫起來(lái)比較好識(shí)別。

26.#defineWHOLE1

27.#defineHALF0.5

28.#defineQUARTER0.25

29.#defineEIGHTH0.25

30.#defineSIXTEENTH0.625

31.//這部分是用英文對(duì)應(yīng)了拍子,這樣后面也比較好看

32.inttune[]=

33.{

34.

NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0,

35.

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

36.

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

37.

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

38.

39.

NOTE_D1,NOTE_D1,NOTE_D3,

40.

NOTE_D1,NOTE_D1,NOTE_D3,NOTE_D0,

41.

NOTE_D6,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,

42.

NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0,

43.

NOTE_DH1,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,

44.

NOTE_D5,NOTE_D1,NOTE_D2,NOTE_D0,

45.

NOTE_D7,NOTE_D7,NOTE_D5,NOTE_D3,

46.

NOTE_D5,

47.

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

48.

NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0,

49.

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

50.

NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D2,NOTE_D0,

51.

NOTE_D3,NOTE_D3,NOTE_D1,NOTE_DL6,

52.

NOTE_D1,

53.

NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6,

54.

NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6,

55.

NOTE_DH1,NOTE_D0,NOTE_D7,NOTE_D5,

56.

NOTE_D6,

57.};//這部分就是整首曲子的音符部分,用了一個(gè)序列定義為tune,整數(shù)

58.

59.floatduration[]=

60.{

61.

1,1,0.5,0.5,1,

62.

0.5,0.5,0.5,0.5,1,0.5,0.5,

63.

0.5,1,0.5,1,0.5,0.5,

64.

0.5,0.5,0.5,0.5,1,1,

65.

66.

1,1,1+1,

67.

0.5,1,1+0.5,1,

68.

1,1,0.5,0.5,1,

69.

0.5,1,1+0.5,1,

70.

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

71.

0.5,1,1+0.5,1,

72.

1+1,0.5,0.5,1,

73.

1+1+1+1,

74.

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

75.

0.5,1,0.5,1,1,

76.

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

77.

0.5,1,0.5,1,1,

78.

1+1,0.5,0.5,1,

79.

1+1+1+1,

80.

0.5,1,0.5,1+1,

81.

0.5,1,0.5,1+1,

82.

1+1,0.5,0.5,1,

83.

1+1+1+1

84.};//這部分是整首曲子的接拍部分,也定義個(gè)序列duration,浮點(diǎn)(數(shù)組的個(gè)數(shù)和前面音符的個(gè)數(shù)是一樣的,一一對(duì)應(yīng)么)

85.intlength;//這里定義一個(gè)變量,后面用來(lái)表示共有多少個(gè)音符

86.inttonePin=5;//蜂鳴器的pin

87.

88.voidsetup()

89.{

90.

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

91.

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

92.}

93.

94.voidloop()

95.{

96.

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

97.

{

98.

tone(tonePin,tune[x]);//此函數(shù)依次播放

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論