Microbit Python 課程介紹 --Music

2017-06-28 12:24

Microbit Python 課程介紹 --Music

Microbit Shop

MicroPython 在 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 台灣 商店購買

Microbit 中文 課程 : Python , Javascript, 物聯網

              中國

—————

返回