#define MAX_MIDI_MESSAGES 6
#define CHANNELS 3
unsigned long previousMillis = 0;
int buffer_index = 0;
int buffer[CHANNELS][3];
int eventFlag = 0;
int midiFile[MAX_MIDI_MESSAGES][4] = {{1, 0, 100, 0}, {1, 1, 100, 0}, {1, 2, 100, 0}, {0, 0, 64, 694}, {0, 1, 64, 0}, {0, 2, 64, 0}};
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
}
void loop() {
for (int i = 0; i < MAX_MIDI_MESSAGES; i++) {
int note_on = midiFile[i][0];
int channel = midiFile[i][1];
int value = midiFile[i][2];
int time = midiFile[i][3];
if (i == 0) {
buffer[buffer_index][0] = channel;
if (note_on) {
buffer[buffer_index][1] = value;
} else {
buffer[buffer_index][1] = 0;
}
buffer[buffer_index][2] = time;
} else if(time == 0) {
} else {
delay(time);
for(int pin = 0; pin < CHANNELS; pin ++ ) {
analogWrite(buffer[pin][0 + 2], buffer[pin][1]);
}
}
}
}