|
|
@ -7,12 +7,16 @@ |
|
|
|
#define MIDI_EVENT_SCHED_MS 100 |
|
|
|
#define MIDI_EVENT_SCHED_MS 100 |
|
|
|
|
|
|
|
|
|
|
|
#define TEST_NOTE_MIN 40 |
|
|
|
#define TEST_NOTE_MIN 40 |
|
|
|
#define TEST_NOTE_MAX 110 |
|
|
|
#define TEST_NOTE_MAX 107 |
|
|
|
#define TEST_VEL_MIN 60 |
|
|
|
#define TEST_VEL_MIN 60 |
|
|
|
#define TEST_VEL_MAX 120 |
|
|
|
#define TEST_VEL_MAX 120 |
|
|
|
#define TEST_DUR_MIN 150 |
|
|
|
#define TEST_DUR_MIN 150 |
|
|
|
#define TEST_DUR_MAX 1000 |
|
|
|
#define TEST_DUR_MAX 1000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define MASTER_KEY_MIDI 84 // C6
|
|
|
|
|
|
|
|
#define MASTER_NUM1 24 // C1
|
|
|
|
|
|
|
|
#define MASTER_BANK_SELECT 83 // B5
|
|
|
|
|
|
|
|
|
|
|
|
class midi_event { |
|
|
|
class midi_event { |
|
|
|
public: |
|
|
|
public: |
|
|
|
int8_t note; |
|
|
|
int8_t note; |
|
|
@ -36,6 +40,26 @@ void setup() |
|
|
|
sched.addJob(do_midi_events, MIDI_EVENT_SCHED_MS); |
|
|
|
sched.addJob(do_midi_events, MIDI_EVENT_SCHED_MS); |
|
|
|
|
|
|
|
|
|
|
|
randomSeed(analogRead(A0)); |
|
|
|
randomSeed(analogRead(A0)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MIDI.sendNoteOn(MASTER_KEY_MIDI, 99, 1); |
|
|
|
|
|
|
|
delay(500); |
|
|
|
|
|
|
|
MIDI.sendNoteOn(MASTER_NUM1 + 28, 66, 1); |
|
|
|
|
|
|
|
delay(500); |
|
|
|
|
|
|
|
MIDI.sendNoteOff(MASTER_NUM1 + 28, 0, 1); |
|
|
|
|
|
|
|
delay(500); |
|
|
|
|
|
|
|
MIDI.sendNoteOff(MASTER_KEY_MIDI, 0, 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
delay(2000); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MIDI.sendNoteOn(MASTER_KEY_MIDI, 99, 1); |
|
|
|
|
|
|
|
delay(500); |
|
|
|
|
|
|
|
MIDI.sendNoteOn(MASTER_NUM1 + 3, 66, 1); |
|
|
|
|
|
|
|
delay(500); |
|
|
|
|
|
|
|
MIDI.sendNoteOff(MASTER_NUM1 + 3, 0, 1); |
|
|
|
|
|
|
|
delay(500); |
|
|
|
|
|
|
|
MIDI.sendNoteOff(MASTER_KEY_MIDI, 0, 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
delay(5000); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void loop() |
|
|
|
void loop() |
|
|
|