Воспроизведение MIDI-нот с помощью прошивки MIDI для 8U2 (только Uno и Mega2560)
Это руководство показывает, как воспроизводить MIDI-ноты с Arduino, запрограммированного для работы в качестве стандартного MIDI-устройства.
Это руководство показывает, как воспроизводить MIDI-ноты с Arduino, запрограммированного для работы в качестве стандартного MIDI-устройства. Это руководство применимо только к платам Arduino с чипом 8U2 — UNO и Mega2560. Оно не будет работать с более ранними моделями, использующими чип FTDI (Duemilanove и предшествующие).
Следуя инструкциям на странице Программирование 8U2 с использованием прошивки MocoLUFA, ваш Arduino будет определяться компьютером как нативное MIDI-устройство без какого-либо дополнительного оборудования.
Вы можете прочитать статью в Википедии о MIDI для получения полной информации о спецификации, но вкратце, MIDI — это полезный протокол для управления синтезаторами, секвенсорами и другими музыкальными устройствами. MIDI-устройства обычно делятся на два широких класса: контроллеры (то есть устройства, которые генерируют MIDI-сигналы на основе действий человека) и синтезаторы (включая сэмплеры, секвенсоры и так далее).
Для получения дополнительной информации смотрите это введение в MIDI или этот пример.
Функция Serial.print() отправит MIDI-команду на программный синтезатор по вашему выбору (в этом примере мы будем использовать Max/MSP от Cycling74, но подойдёт любое приложение, принимающее MIDI).
Перед программированием прошивки 8U2 вам нужно будет запрограммировать ATmega 328 на вашем Arduino обычным способом через IDE. Мы будем использовать пример MIDI-коммуникации, который поставляется с программным обеспечением Arduino. Его можно найти в File > Examples > Communication > MIDI.
Код
/*
MIDI note player
This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data.
If this circuit is connected to a MIDI synth, it will play
the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence.
The circuit:
* digital in 1 connected to MIDI jack pin 5
* MIDI jack pin 2 connected to ground
* MIDI jack pin 4 connected to +5V through 220-ohm resistor
Attach a MIDI cable to the jack, then to a MIDI synth, and play music.
created 13 Jun 2006
modified 13 Aug 2012
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Midi
*/
void setup() {
// Set MIDI baud rate:
Serial.begin(31250);
}
void loop() {
// play notes from F#-0 (0x1E) to F#-5 (0x5A):
for (int note = 0x1E; note < 0x5A; note ++) {
//Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
noteOn(0x90, note, 0x45);
delay(100);
//Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
noteOn(0x90, note, 0x00);
delay(100);
}
}
// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(int cmd, int pitch, int velocity) {
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}
Запрограммируйте ваш Arduino и подготовьтесь к программированию чипа 8U2. Следуйте инструкциям на странице Программирование 8U2, заменив стандартную прошивку Arduino прошивкой MocoLUFA.
После обновления 8U2 прошивкой MIDI отключите и снова подключите USB-кабель.
Откройте ваше MIDI-приложение по выбору и найдите подключённые устройства. Вы должны увидеть Arduino как входное и выходное устройство с именем «MIDI/MOCO for LUFA».
Список MIDI-устройств
Простой патч Max, который позволит вам услышать ноты, генерируемые MIDI-командами, выглядит следующим образом:
Патч Max
Чтобы изменить программу на Arduino, вы должны сначала сбросить прошивку на 8U2 до стандартной прошивки Arduino.
Совет
Смотрите также: MIDI