Проигрыватель нот MIDI ArduinoЭтот туториал показывает, как проигрывать ноты MIDI из Arduino. MIDI, цифровой интерфейс музыкальных инструментов (Musical Instrument Digital Interface), является полезным протоколом для управления синтезаторами, секвенсорами и другими музыкальными устройствами. Устройства MIDI вообще сгруппированы в два широких класса: контроллеры (то есть устройства, которые генерируют сигналы MIDI, основанные на человеческих действиях), и синтезаторы (включая семплеры, секвенсоры и т.д.) Последние принимают данные MIDI и создают звук, свет или некоторый другой эффект. MIDI — последовательный протокол, который оперирует 31,250 битами в секунду. Встроенный в Arduino последовательный порт (все они на Mega также) может посылать данные при том уровне. Байты MIDI разделены на два типа: байты команды и байты данных. Байты команды всегда равняются 128 или больше, или 0x80 к 0xFF в шестнадцатеричном коде. Байты данных всегда меньше чем 127 или 0x00 к 0x7F в шестнадцатеричном. Среди команд есть такие, как высота ноты, велосити, громкость ноты и т.д. Байты данных включают такие вещи, как высота (питч) проигрываемой ноты, велосити или громкость ноты и т.д. Данные о MIDI обычно записываются нотами в шестнадцатеричном коде, потому что банки MIDI и инструменты сгруппированы по 16.
Необходимые аппаратные средства: - Плата Arduino
1 гнездо MIDI 1 резистор на 220 Ом Провод для подключения MIDI устройство (дополнительный, для тестирования)
Ниже показано, как подключать соединитель к Arduino: - Цифровой пин 1 Arduino соединяется с пином 5 MIDI гнезда
Пин 2 MIDI гнезда заземляется Пин 4 MIDI гнезда подключается к +5В через резистор на 220 Ом
Исходный код: (скачать)
/* 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 30 Aug 2011 by Tom Igoe
This example code is in the public domain. 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); }
Источник: Pobоt.ru |
Категория: Проекты на Arduino | Добавлен: 22.10.2013
| Автор: electronic
| Просмотров: 4292
|