Due. MIDI.sendNoteOn не работает
- Войдите на сайт для отправки комментариев
Ср, 21/03/2018 - 17:17
Хочу вывести с ардуинки ноту в vsti. Не получается.
По порядку:
1. Загружаю скетч через programming USB
2. Перетыкаю кабель в Native USB
3. Запускаю софтовый VSTi и отмечаю ардуинку как входное устройство: http://prntscr.com/iuak75
И ничего не происходит. Софт проверенный. Мидиклавиатуру к нему подключал таким образом без проблем. Мышкой клавиши нажимаю - звук идёт.
Вариантов перепробовал массу, вот парочка основных:
#include <MIDI.h> #if defined(USBCON) #include <midi_UsbTransport.h> static const unsigned sUsbTransportBufferSize = 16; typedef midi::UsbTransport<sUsbTransportBufferSize> UsbTransport; UsbTransport sUsbTransport; MIDI_CREATE_INSTANCE(UsbTransport, sUsbTransport, MIDI); #else // No USB available, fallback to Serial MIDI_CREATE_DEFAULT_INSTANCE(); #endif void setup() { MIDI.begin(4); // Launch MIDI with default options Serial.begin(115200); // input channel is set to 4 } void loop() { MIDI.sendNoteOn(42,127,1); // Send a Note MIDI.sendNoteOn(45, 127, 1); delay(1000); // Wait for a second MIDI.sendNoteOff(42,0,1); MIDI.sendNoteOff(45,0,1); // Stop the note }
#include <MIDI.h> #if defined(USBCON) #include <midi_UsbTransport.h> static const unsigned sUsbTransportBufferSize = 16; typedef midi::UsbTransport<sUsbTransportBufferSize> UsbTransport; UsbTransport sUsbTransport; MIDI_CREATE_INSTANCE(UsbTransport, sUsbTransport, MIDI); #else // No USB available, fallback to Serial MIDI_CREATE_DEFAULT_INSTANCE(); #endif // -- void handleNoteOn(byte inChannel, byte inNumber, byte inVelocity) { Serial.print("NoteOn "); Serial.print(inNumber); Serial.print("\tvelocity: "); Serial.println(inVelocity); } void handleNoteOff(byte inChannel, byte inNumber, byte inVelocity) { Serial.print("NoteOff "); Serial.print(inNumber); Serial.print("\tvelocity: "); Serial.println(inVelocity); } void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); while (!Serial); MIDI.begin(); MIDI.setHandleNoteOn(handleNoteOn); MIDI.setHandleNoteOff(handleNoteOff); Serial.println("Arduino ready."); } void loop() { MIDI.read(); digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) MIDI.sendNoteOn(0,127,1); //отправляем ноту из массива myNote[], соответствующую кнопке delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW MIDI.sendNoteOff(0,127,1); //отправляем ноту из массива myNote[], соответствующую кнопке delay(1000); //digitalWrite(ledPin, HIGH); //Мигаем 13м пином }
частично разобрался. Вот этот код работает как надо:
А с каких это пор middle C стала 48?
это вопрос нужно адресовывать шишим заграничным друзьям
Вы хотите сказать, что "шиши друзья" перекорежили в своей библиотеке стандарт MIDI?
Ладно, раз Вы пишете, что получилось, скажите хотя бы на слух, что играет: до первой или до малой?
"шиши друзья"
нашим)))) издержки беспроводной клавиатуры
ок, напишу чуть позже что играет
на октаву ниже middle C
Ну так и должно быть.
Значит, просто в комментариях ошибка.