Zdravím, obracím se na Vás s problémem, který již dva dny řeším. Snažím se vytvořit MIDI zařízení, které bude z DAW (používám Sonar x3), přes software Hairless MIDI a Arduino MEGA ovládat MIDI zařízení (v mém případě efektový procesor Digitech GSP1101). Z DAW vysílám NoteOn přes Hairless do UART Arudina (což je předpokládám Serial), v Arduinu převádím příkaz NoteOn na ProgramChange a vysílám přes Serial1 do MIDI zařízení.
V testovací verzi kódu mi běží loop, ze kterého vysílám ProgramChange na Serial1, který přičítá 1. To funguje… Jakmile pošlu jakýkoliv příkaz z DAW na UART, tak se mi loop přeruší a nic se neděje. Dokázal by mi někdo pomoct, prosím?
Můj kód:
#include <MIDI.h>
#include <midi_Defs.h>
#include <midi_Message.h>
#include <midi_Namespace.h>
#include <midi_Settings.h>
MIDI_CREATE_INSTANCE(HardwareSerial, Serial, midi1);
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, midi2);
byte patchNum = 0;
void setup() {
Serial.begin(57600);
Serial1.begin(31520);
midi1.begin();
midi2.begin();
midi1.setHandleNoteOn(handleNoteOn);
midi1.setHandleNoteOff(handleNoteOff);
}
void handleNoteOn(byte channel, byte pitch, byte velocity)
{
if (pitch == 3) {
midi2.sendProgramChange(velocity, 1);
}
}
void handleNoteOff(byte channel, byte pitch, byte velocity)
{
}
void loop() {
midi1.read();
midi2.sendProgramChange(patchNum, 1);
delay(1000);
patchNum ++;
}