Microbit Python 課程介紹 --Music
2017-06-28 12:24MicroPython 在 BBC micro:bit 作了很棒的音樂及聲音模組。 當你用鱷魚夾去接pin 0 跟GND ,線的另一頭去接喇叭的正極及負極,就可以產生許多不同的聲音出來。
Note
Do not attempt this with a Piezo buzzer - such buzzers are only able to play a single tone. (請不要用蜂鳴器,因為蜂鳴器只能產生單一的音調)
讓我們來撥放音樂:
import music
music.play(music.NYAN)
請注意我們 import the music module, 這包含了方法methods可以產生聲音及控制聲音。
MicroPython 也有內建的旋律,這裡有個清單:
· music.DADADADUM
· music.ENTERTAINER
· music.PRELUDE
· music.ODE
· music.NYAN
· music.RINGTONE
· music.FUNK
· music.BLUES
· music.BIRTHDAY
· music.WEDDING
· music.FUNERAL
· music.PUNCHLINE
· music.PYTHON
· music.BADDY
· music.CHASE
· music.BA_DING
· music.WAWAWAWAA
· music.JUMP_UP
· music.JUMP_DOWN
· music.POWER_UP
· music.POWER_DOWN
哪個是你喜歡的? 寫個程式,用基本音調,播放及改變一些旋律?
Wolfgang Amadeus Microbit (用Microbit 做阿瑪迪斯)
創造自己旋律是非常容易的!
每個音符都有一個名字(like C# or F),一個八度(告訴MicroPython應該播放音符的高低)和持續時間(通過時間持續多長時間)。 八度數字由數字表示〜0是最低的八度,4包含中間C,8是大約與你需要的一樣高,除非你為狗做音樂。持續時間也以數字表示。 持續時間越長,持續時間越長。 這些值彼此相關 - 例如,持續時間為4,持續時間為2(等等)持續時間的兩倍。如果使用音符名稱(the note name) R ,則MicroPython將在指定的持續時間內播放休息(即靜音)。
每個音符都表示為一串字符,如下所示:
NOTE[octave][:duration]
例如, "A1:4" 是指要播放持續時間為4 (duration of 4)的八度1 (octave number 1 )中名為A的音符 (note named A)。
創建一個音符列表來創建一個旋律(相當於創建一個包含圖像列表的動畫)。 例如,下面是如何使MicroPython打開“Frere Jaques”:
import music
tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4",
"E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]
music.play(tune)
Note
MicroPython可以幫助您簡化這些旋律。 它會記住八度和持續時間值,直到你下次更改它們。 因此,上述示例可以重寫為:
import music
tune = ["C4:4", "D", "E", "C", "C", "D", "E", "C", "E", "F", "G:8",
"E:4", "F", "G:8"]
music.play(tune)
注意八度和持續時間值只有當它們必須改變時才會改變。 打字更簡單,閱讀更簡單。
Sound Effects
MicroPython可讓您製作不是音符的音調。 例如,以下是如何創建警察警報效果:
import music
while True:
for freq in range(880, 1760, 16):
music.pitch(freq, 6)
for freq in range(1760, 880, -16):
music.pitch(freq, 6)
請注意在這種情況下如何使用music.pitch方法(the music.pitch method )。 它期待一個頻率。 例如,440的頻率(the frequency of 440 )與用於調諧交響樂團的A(concert A )相同。
在上面的例子中,範圍函數(the range function)用於生成數值範圍。 這些數字用於定義音調的音高。 範圍函數(the range function)的三個參數是起始值,結束值和步長(he start value, end value and step size.)。
因此,第一次使用範圍函數(the range function)就是用英文“創造一系列數字,介於880到1760之間,步驟16”。 第二種使用範圍函數(the range function)就是說,“在-16”之間創建1760到880之間的值範圍。 這就是我們如何得到一系列頻率上升和下降的聲音,如警笛聲。
因為警報器應該永遠持續,它被包裹在一個無限的循環中。
重要的是,我們在while循環(the while loop)中引入了一種新的循環:for循環(the for loop)。 在英文中,就是說,“對於某些集合中的每個項目,用它進行一些活動”。
具體在上面的例子中,它說:“對於指定頻率範圍內的每個頻率,播放該頻率的間距6毫秒”。 請注意,for循環中每個項目的做法是縮進的(如前所述),因此Python會準確知道要運行哪些代碼來處理各個項目。
Microbit 中文 課程 : Python , Javascript, 物聯網
標籤:
—————