C++ify midi.ino, change to appropriate datatypes
This commit is contained in:
parent
9777184429
commit
2d034b6369
2 changed files with 34 additions and 25 deletions
140
NuEVI/midi.ino
140
NuEVI/midi.ino
|
@ -1,140 +0,0 @@
|
|||
#include "midi.h"
|
||||
#include "hardware.h"
|
||||
|
||||
int midiChannel;
|
||||
|
||||
|
||||
void midiSetChannel(byte channel) {
|
||||
midiChannel = constrain(channel, 1, 16);
|
||||
}
|
||||
|
||||
byte midiGetChannel() {
|
||||
return midiChannel;
|
||||
}
|
||||
|
||||
|
||||
void midiSendProgramChange(int patch) {
|
||||
usbMIDI.sendProgramChange(patch-1, midiChannel);
|
||||
dinMIDIsendProgramChange(patch-1, midiChannel-1);
|
||||
}
|
||||
|
||||
void midiSendControlChange(int ccParam, int ccValue) {
|
||||
usbMIDI.sendControlChange(ccParam, ccValue, midiChannel);
|
||||
dinMIDIsendControlChange(ccParam, ccValue, midiChannel - 1);
|
||||
}
|
||||
|
||||
void midiSendNoteOn(byte note, int velocity) {
|
||||
usbMIDI.sendNoteOn(note, velocity, midiChannel);
|
||||
dinMIDIsendNoteOn(note, velocity, midiChannel - 1);
|
||||
}
|
||||
|
||||
void midiSendNoteOff(byte note) {
|
||||
//Always send velocity 0 on note off to avoid confusing some synthesizers
|
||||
usbMIDI.sendNoteOn(note, 0, midiChannel);
|
||||
dinMIDIsendNoteOn(note, 0, midiChannel - 1);
|
||||
}
|
||||
|
||||
|
||||
void midiSendAfterTouch(byte value) {
|
||||
usbMIDI.sendAfterTouch(value, midiChannel);
|
||||
dinMIDIsendAfterTouch(value, midiChannel - 1);
|
||||
}
|
||||
|
||||
|
||||
void midiSendPitchBend(int value) {
|
||||
#if defined(NEWTEENSYDUINO)
|
||||
usbMIDI.sendPitchBend(value-8192, midiChannel); // newer teensyduino "pitchBend-8192" older just "pitchBend"... strange thing to change
|
||||
#else
|
||||
usbMIDI.sendPitchBend(value, midiChannel);
|
||||
#endif
|
||||
dinMIDIsendPitchBend(value, midiChannel - 1);
|
||||
}
|
||||
|
||||
void midiDiscardInput()
|
||||
{
|
||||
while (usbMIDI.read()) {
|
||||
// read & ignore incoming messages
|
||||
}
|
||||
}
|
||||
|
||||
void midiReset() { // reset controllers
|
||||
midiSendControlChange(7, 100);
|
||||
midiSendControlChange(11, 127);
|
||||
}
|
||||
|
||||
void midiPanic() { // all notes off
|
||||
midiSendControlChange(123, 0);
|
||||
for (int i = 0; i < 128; i++){
|
||||
midiSendNoteOff(i);
|
||||
delay(2);
|
||||
}
|
||||
}
|
||||
|
||||
void midiInitialize(byte channel) {
|
||||
MIDI_SERIAL.begin(31250); // start serial with midi baudrate 31250
|
||||
MIDI_SERIAL.flush();
|
||||
midiSetChannel(channel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Serial midi functions
|
||||
|
||||
// Send a three byte din midi message
|
||||
void midiSend3B(byte midistatus, byte data1, byte data2) {
|
||||
MIDI_SERIAL.write(midistatus);
|
||||
MIDI_SERIAL.write(data1);
|
||||
MIDI_SERIAL.write(data2);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send a two byte din midi message
|
||||
void midiSend2B(byte midistatus, byte data) {
|
||||
MIDI_SERIAL.write(midistatus);
|
||||
MIDI_SERIAL.write(data);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send din pitchbend
|
||||
void dinMIDIsendPitchBend(int pb, byte ch) {
|
||||
int pitchLSB = pb & 0x007F;
|
||||
int pitchMSB = (pb >>7) & 0x007F;
|
||||
midiSend3B((0xE0 | ch), pitchLSB, pitchMSB);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send din control change
|
||||
void dinMIDIsendControlChange(byte ccNumber, int cc, byte ch) {
|
||||
midiSend3B((0xB0 | ch), ccNumber, cc);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send din note on
|
||||
void dinMIDIsendNoteOn(byte note, int vel, byte ch) {
|
||||
midiSend3B((0x90 | ch), note, vel);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send din note off
|
||||
void dinMIDIsendNoteOff(byte note, int vel, byte ch) {
|
||||
midiSend3B((0x80 | ch), note, vel);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send din aftertouch
|
||||
void dinMIDIsendAfterTouch(byte value, byte ch) {
|
||||
midiSend2B((0xD0 | ch), value);
|
||||
}
|
||||
|
||||
//**************************************************************
|
||||
|
||||
// Send din program change
|
||||
void dinMIDIsendProgramChange(byte value, byte ch) {
|
||||
midiSend2B((0xC0 | ch), value);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue