Мелодии

MicroPython на Microbit содержит мощный музыкальный и звуковой инструмент. Вы можете легко генерировать звуковые и музыкальные сигналы. В Microbit V1 необходимо подключить динамик к пину 0 и GND В Microbit V2 динамик уже встроен и Вы можете сразу переходит к коду.

piezo connected to pin0 and GND

Примечание

Для проигрывания необходимо использовать пассивный зумер. Нельзя использовать активный

Давайте проиграем мелодию:

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.