Close

MIDI ProgramChange

Úvodní stránka Fórum Hardware Arduino MIDI ProgramChange

Označeno štítky: , ,

Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Autor
    Příspěvky
  • #11831
    martinator6
    Účastník

    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 ++;
    }

Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Pro reakci na toto téma se musíte přihlásit.