Мелодии
MicroPython на Microbit содержит мощный музыкальный и звуковой инструмент.
Вы можете легко генерировать звуковые и музыкальные сигналы.
В Microbit V1
необходимо подключить динамик к пину 0
и GND
В Microbit V2
динамик уже встроен и Вы можете сразу переходит к коду.
Примечание
Для проигрывания необходимо использовать пассивный зумер. Нельзя использовать активный
Давайте проиграем мелодию:
import music
music.play(music.NYAN)
Необходимо подключить библиотеку music
и использовать команды указывая объект.
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
Обратите внимание встроенные мелодии также пишутся через объект music
Собственные мелодии
У каждой ноты есть свое имя (например C#
или F
), также указывается продолжительность
проигрывания. Октавы обозначаются цифрами ~ 0 самая низкая, 4 средняя, 8 высокая.
Каждая нота выражается в виде строки символов, подобных этому:
NOTE[Октава][:Длительность]
Например "A1:4"
, указывается нота A
, октава 1
, воспроизводится 4
.
Можно использовать список для создания мелодии, например:
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)
Примечание
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)
Звуковые Эффекты
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
ожидает частоту и продолжительность. В коде используется цикл for
для прохода по генератору (range), который выдает числа от 880 до 1760 с шагом 16.
Сирена звучить вечно, она заключена в бесконечный цикл while
.