Музыка

Это music, и вы можете использовать его для создания и воспроизведения мелодий. По умолчанию звук выводится через краевой разъем на контакте 0 и встроенный динамик V2. Вы можете подключить проводные наушники или динамик к контакту 0 и GND на краевом разъеме, чтобы слышать звук:

../_images/music-pins.png

Вы также можете отключить/включить встроенный динамик или вывести звук на другой pin.

Для доступа к этому модулю вам необходимо:

import music

Музыкальная нотация

Индивидуальная нота определяется таким образом:

NOTE[octave][:duration]

Например, A1:4 относится к ноте «A» в октаве 1, которая длится четыре тика (тик - это произвольный отрезок времени, определяемый настройкой темпа функции - см. ниже). Если используется имя ноты R, оно рассматривается как нота молчания.

Знаки бемоли и диезы обозначаются буквой b (бемоль - строчная буква b) и # (диез - символ решетки). Например, «Ab» — это ля-бемоль, а «C#» — это до-диез.

Имена заметок нечувствительны к регистру

Параметры «октава» и «длительность» — это состояния, которые переносятся на последующие примечания до повторного указания. Состояния по умолчанию: «октава = 4». (содержит среднее C) и duration = 4 (привязка, учитывая темп по умолчанию настройки - см. ниже).

Пример:

['c1:4', 'e:2', 'g', 'c2:4']

Таким образом будет закодировано начало 5-й симфонии Бетховена:

['r4:2', 'g', 'g', 'g', 'eb:8', 'r:2', 'f', 'f', 'f', 'd:8']

Функции

music.set_tempo(ticks=4, bpm=120)

Устанавливает приблизительный темп воспроизведения.

Количество тиков (выраженное целым числом) составляет долю. Каждый удар должен воспроизводиться с определенной частотой в минуту (выражаемой более привычным BPM — также целым числом).

Предлагаемые значения по умолчанию допускают следующее полезное поведение:

  • music.set_tempo() - сбросить темп на значение по умолчанию тиков = 4, ударов в минуту = 120

  • music.set_tempo(ticks=8) - изменить «определение» бита

  • music.set_tempo(bpm=180) - просто изменить темп

Вычислить длину тика в миллисекундах очень просто с помощью арифметики.: 60000/bpm/ticks_per_beat . Для значений по умолчанию, которые 60000/120/4 = 125 milliseconds или 1 beat = 500 milliseconds.

music.get_tempo()

Возвращает текущий темп в виде кортежа целых чисел: (ticks, bpm).

music.play(music, pin=pin0, wait=True, loop=False)

Играет объект music.

Если music это строка, то будет одна нота, например, 'c1:4'.

Если music указывается в виде списка (как определено в разделе, посвященном музыкальный DSL выше), они воспроизводятся один за другим.

В обоих случаях duration и octave значения сбрасываются по умолчанию перед воспроизведением музыки.

Необязательный аргумент для указания выходного контакта, может использоваться для переопределения по умолчанию microbit.pin0.

Если wait установлен в True, эта функция блокирует Microbit.

Если loop установлен в True, мелодия повторяется до команды stop

music.pitch(frequency, duration=- 1, pin=pin0, wait=True)

Воспроизведение высоты тона с частотой, заданной для указанного количества миллисекунды. Например, если частота установлена ​​на 440, а длина на 1000, то мы слышим стандартный концерт A в течение одной секунды.

Обратите внимание, что вы можете воспроизводить только однин канал в любой момент времени..

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

Если wait установлен в True, эта функция блокирует Microbit.

Если duration является отрицательным, высота тона воспроизводится непрерывно до тех пор, пока блокирующий вызов не прервется или не будет установлена ​​новая частота. stop также обрывает.

music.stop(pin=pin0)

Останавливает воспроизведение музыки науказанном контакте. Необязательный аргумент может быть предоставлен для указания контакта, например: music.stop(pin1).

music.reset()

Сбрасывает состояние атрибутов следующим образом:

  • ticks = 4

  • bpm = 120

  • duration = 4

  • octave = 4

Встроенные модули

В образовательных и развлекательных целях модуль содержит несколько примеров мелодий, выраженных в виде списков Python. Вы можете использовать их так:

>>> import music
>>> music.play(music.NYAN)

Все мелодии либо не защищены авторскими правами, сочинены Николасом Х.Толлерви и выпущены в общественное достояние или имеют неизвестного композитора и покрыты положение о добросовестном (образовательном) использовании.

Мелодии:

  • DADADADUM - открытие к 5-й симфонии до минор Бетховена.

  • ENTERTAINER - вступительный фрагмент классического регтайма Скотта Джоплина «The Entertainer».

  • PRELUDE - открытие первой прелюдии до мажор из 48 прелюдий и фуг И. С. Баха.

  • ODE - тема «Ода к радости» из 9-й симфонии ре минор Бетховена.

  • NYAN - тема Nyan Cat (http://www.nyan.cat/). Композитор неизвестен.

  • RINGTONE - что-то похожее на рингтон мобильного телефона. Используется для обозначения входящего сообщения.

  • FUNK - фанковая басовая партия для секретных агентов и криминальных авторитетов.

  • BLUES - 12-тактный блюзовый бас в стиле буги-вуги.

  • BIRTHDAY - «С Днем Рождения тебя…», чтобы узнать о статусе авторских прав, см.: http://www.bbc.co.uk/news/world-us-canada-34332853

  • WEDDING - свадебный хор из оперы Вагнера «Лоэнгрин».

  • FUNERAL - «похоронный марш», также известный как Соната для фортепиано № 2 Фредерика Шопена си-бемоль минор, соч. 35.

  • PUNCHLINE - забавный фрагмент, который означает, что шутка была сделана.

  • PYTHON - Марш Джона Филипа Соузы «Колокол Свободы», также известный как тема «Летающего цирка Монти Пайтона» (в честь которого назван язык программирования Python).

  • BADDY - эра немого кино появление злодея.

  • CHASE - сцена погони эпохи немого кино.

  • BA_DING - короткий сигнал, указывающий на то, что что-то произошло.

  • WAWAWAWAA - очень грустный тромбон.

  • JUMP_UP - для использования в игре, указывающей на движение вверх.

  • JUMP_DOWN - для использования в игре, указывающей на движение вниз.

  • POWER_UP - фанфары, чтобы указать, что достижение разблокировано.

  • POWER_DOWN - грустные фанфары, чтобы указать на потерянное достижение.

Примеры

"""
    Воспроизведение простой мелодии с помощью музыкального модуля Micropython.
    В этом примере требуется динамик, подключенные к P0 и GND,
    или micro:bit V2 со встроенным динамиком.
"""
from microbit import *

import music

# play Prelude in C.
notes = [
    'c4:1', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5',
    'c4', 'd', 'a', 'd5', 'f5', 'a4', 'd5', 'f5', 'c4', 'd', 'a', 'd5', 'f5', 'a4', 'd5', 'f5',
    'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5', 'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5',
    'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5',
    'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5', 'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5',
    'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5', 'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5',
    'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5', 'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5',
    'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5', 'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5',
    'g3', 'b', 'd4', 'g', 'b', 'd', 'g', 'b', 'g3', 'b3', 'd4', 'g', 'b', 'd', 'g', 'b'
]

music.play(notes)