Музыка
Это music
, и вы можете использовать его для создания и воспроизведения мелодий.
По умолчанию звук выводится через краевой разъем на контакте 0 и
встроенный динамик V2. Вы можете подключить проводные наушники или
динамик к контакту 0 и GND на краевом разъеме, чтобы слышать звук:
Вы также можете отключить/включить встроенный динамик или вывести звук на другой 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, ударов в минуту = 120music.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)