Rev 6 #1
@ -108,11 +108,12 @@ unsigned int pulsePeriod;
|
|||||||
bool isPlaying = false;
|
bool isPlaying = false;
|
||||||
bool isRecording = false;
|
bool isRecording = false;
|
||||||
bool recordToNextStep = false;
|
bool recordToNextStep = false;
|
||||||
|
bool MIDIClockRecived = false;
|
||||||
|
|
||||||
unsigned int tickCount = 0;
|
unsigned int tickCount = 0;
|
||||||
unsigned int pulseCount = 0;
|
unsigned int pulseCount = 0;
|
||||||
|
|
||||||
byte masterClockMode = 0; // 0 - internal, 1 - external 24ppqn, 2 - external beat
|
byte masterClockMode = 0; // 0 - internal, 1 - external 24ppqn, 2 - MIDI
|
||||||
unsigned long lastExtPulseTime;
|
unsigned long lastExtPulseTime;
|
||||||
unsigned long newExtPulseTime;
|
unsigned long newExtPulseTime;
|
||||||
|
|
||||||
@ -216,6 +217,23 @@ void loop() {
|
|||||||
void sendMIDIClock() {
|
void sendMIDIClock() {
|
||||||
Serial.write(0xF8);
|
Serial.write(0xF8);
|
||||||
}
|
}
|
||||||
|
void sendMIDIStart() {
|
||||||
|
Serial.write(0xFA);
|
||||||
|
}
|
||||||
|
void sendMIDIStop() {
|
||||||
|
Serial.write(0xFC);
|
||||||
|
}
|
||||||
|
void receiveMIDI() {
|
||||||
|
if(Serial.available() > 0) {
|
||||||
|
if (Serial.read() == 0xF8) { //Clock
|
||||||
|
MIDIClockRecived = true;
|
||||||
|
} else if (Serial.read() == 0xFA || Serial.read() == 0xFB) { //start and continue
|
||||||
|
isPlaying = true;
|
||||||
|
} else if (Serial.read() == 0xFC) { //stop
|
||||||
|
isPlaying = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void clock() {
|
void clock() {
|
||||||
if (isPlaying) {
|
if (isPlaying) {
|
||||||
@ -244,6 +262,16 @@ void clock() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (masterClockMode == 2 && MIDIClockRecived) { // MIDI should happen here (needs testing)
|
||||||
|
tickCount = 0; //to make things happen in the main clock function
|
||||||
|
if (pulseCount < (PPQN - 1)) {
|
||||||
|
pulseCount++;
|
||||||
|
} else {
|
||||||
|
pulseCount = 0;
|
||||||
|
}
|
||||||
|
MIDIClockRecived = false;
|
||||||
|
}
|
||||||
|
|
||||||
// pull low all outputs after set pulse length
|
// pull low all outputs after set pulse length
|
||||||
if (tickCount >= PULSE_LENGTH) {
|
if (tickCount >= PULSE_LENGTH) {
|
||||||
for (byte i = 0; i < 6; i++) {
|
for (byte i = 0; i < 6; i++) {
|
||||||
@ -275,8 +303,7 @@ void externalClock() {
|
|||||||
} else {
|
} else {
|
||||||
pulseCount = 0;
|
pulseCount = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendTriggers() {
|
void sendTriggers() {
|
||||||
|
|||||||
@ -171,8 +171,8 @@ void checkInputs() {
|
|||||||
masterClockMode = masterClockMode + change;
|
masterClockMode = masterClockMode + change;
|
||||||
if (masterClockMode > 100) {
|
if (masterClockMode > 100) {
|
||||||
masterClockMode = 0;
|
masterClockMode = 0;
|
||||||
} else if (masterClockMode > 1) {
|
} else if (masterClockMode > 2) {
|
||||||
masterClockMode = 1;
|
masterClockMode = 2;
|
||||||
}
|
}
|
||||||
saveState();
|
saveState();
|
||||||
} else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab == 0 && menuItem == 2) { //Modulation channel
|
} else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab == 0 && menuItem == 2) { //Modulation channel
|
||||||
|
|||||||
@ -52,6 +52,8 @@ void updateScreen() {
|
|||||||
valueStr = "INT";
|
valueStr = "INT";
|
||||||
} else if (i == 1 && masterClockMode == 1) {
|
} else if (i == 1 && masterClockMode == 1) {
|
||||||
valueStr = "EXT";
|
valueStr = "EXT";
|
||||||
|
} else if (i == 1 && masterClockMode == 2) {
|
||||||
|
valueStr = "MIDI";
|
||||||
} else if (i == 2 && masterClockMode == 0 && bpmModulationRange != 0 && bpmModulationChannel == 0) {
|
} else if (i == 2 && masterClockMode == 0 && bpmModulationRange != 0 && bpmModulationChannel == 0) {
|
||||||
valueStr = "CV1";
|
valueStr = "CV1";
|
||||||
} else if (i == 2 && masterClockMode == 0 && bpmModulationRange != 0 && bpmModulationChannel == 1) {
|
} else if (i == 2 && masterClockMode == 0 && bpmModulationRange != 0 && bpmModulationChannel == 1) {
|
||||||
@ -79,6 +81,8 @@ void updateScreen() {
|
|||||||
bpmStr = String(bpm);
|
bpmStr = String(bpm);
|
||||||
} else if (masterClockMode == 1) {
|
} else if (masterClockMode == 1) {
|
||||||
bpmStr = "24";
|
bpmStr = "24";
|
||||||
|
} else if (masterClockMode == 2) {
|
||||||
|
bpmStr = "MIDI";
|
||||||
}
|
}
|
||||||
char bpmChar[5];
|
char bpmChar[5];
|
||||||
bpmStr.toCharArray(bpmChar, 5);
|
bpmStr.toCharArray(bpmChar, 5);
|
||||||
|
|||||||
Reference in New Issue
Block a user