fix MIDI clock, part 2
This commit is contained in:
parent
1d3c89aa51
commit
eb521a6dac
|
@ -2043,6 +2043,8 @@ String DivEngine::getPlaybackDebugInfo() {
|
||||||
"totalSeconds: %d\n"
|
"totalSeconds: %d\n"
|
||||||
"totalTicks: %d\n"
|
"totalTicks: %d\n"
|
||||||
"totalTicksR: %d\n"
|
"totalTicksR: %d\n"
|
||||||
|
"curMidiClock: %d\n"
|
||||||
|
"curMidiTime: %d\n"
|
||||||
"totalCmds: %d\n"
|
"totalCmds: %d\n"
|
||||||
"lastCmds: %d\n"
|
"lastCmds: %d\n"
|
||||||
"cmdsPerSecond: %d\n"
|
"cmdsPerSecond: %d\n"
|
||||||
|
@ -2053,8 +2055,8 @@ String DivEngine::getPlaybackDebugInfo() {
|
||||||
"bufferPos: %d\n",
|
"bufferPos: %d\n",
|
||||||
curOrder,prevOrder,curRow,prevRow,ticks,subticks,totalLoops,lastLoopPos,nextSpeed,divider,cycles,clockDrift,
|
curOrder,prevOrder,curRow,prevRow,ticks,subticks,totalLoops,lastLoopPos,nextSpeed,divider,cycles,clockDrift,
|
||||||
midiClockCycles,midiClockDrift,midiTimeCycles,midiTimeDrift,changeOrd,changePos,totalSeconds,totalTicks,
|
midiClockCycles,midiClockDrift,midiTimeCycles,midiTimeDrift,changeOrd,changePos,totalSeconds,totalTicks,
|
||||||
totalTicksR,totalCmds,lastCmds,cmdsPerSecond,globalPitch,(int)extValue,(int)tempoAccum,(int)totalProcessed,
|
totalTicksR,curMidiClock,curMidiTime,totalCmds,lastCmds,cmdsPerSecond,globalPitch,
|
||||||
(int)bufferPos
|
(int)extValue,(int)tempoAccum,(int)totalProcessed,(int)bufferPos
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2186,6 +2188,8 @@ void DivEngine::playSub(bool preserveDrift, int goalRow) {
|
||||||
totalTicks=0;
|
totalTicks=0;
|
||||||
totalSeconds=0;
|
totalSeconds=0;
|
||||||
totalTicksR=0;
|
totalTicksR=0;
|
||||||
|
curMidiClock=0;
|
||||||
|
curMidiTime=0;
|
||||||
totalLoops=0;
|
totalLoops=0;
|
||||||
lastLoopPos=-1;
|
lastLoopPos=-1;
|
||||||
}
|
}
|
||||||
|
@ -2400,7 +2404,7 @@ void DivEngine::play() {
|
||||||
keyHit[i]=false;
|
keyHit[i]=false;
|
||||||
}
|
}
|
||||||
if (output) if (!skipping && output->midiOut!=NULL) {
|
if (output) if (!skipping && output->midiOut!=NULL) {
|
||||||
int pos=totalTicksR/6;
|
int pos=curMidiClock;
|
||||||
output->midiOut->send(TAMidiMessage(TA_MIDI_POSITION,(pos>>7)&0x7f,pos&0x7f));
|
output->midiOut->send(TAMidiMessage(TA_MIDI_POSITION,(pos>>7)&0x7f,pos&0x7f));
|
||||||
output->midiOut->send(TAMidiMessage(TA_MIDI_MACHINE_PLAY,0,0));
|
output->midiOut->send(TAMidiMessage(TA_MIDI_MACHINE_PLAY,0,0));
|
||||||
}
|
}
|
||||||
|
@ -4404,6 +4408,8 @@ void DivEngine::quitDispatch() {
|
||||||
totalTicks=0;
|
totalTicks=0;
|
||||||
totalSeconds=0;
|
totalSeconds=0;
|
||||||
totalTicksR=0;
|
totalTicksR=0;
|
||||||
|
curMidiClock=0;
|
||||||
|
curMidiTime=0;
|
||||||
totalCmds=0;
|
totalCmds=0;
|
||||||
lastCmds=0;
|
lastCmds=0;
|
||||||
cmdsPerSecond=0;
|
cmdsPerSecond=0;
|
||||||
|
|
|
@ -383,7 +383,7 @@ class DivEngine {
|
||||||
int midiTimeCycles;
|
int midiTimeCycles;
|
||||||
double midiTimeDrift;
|
double midiTimeDrift;
|
||||||
int stepPlay;
|
int stepPlay;
|
||||||
int changeOrd, changePos, totalSeconds, totalTicks, totalTicksR, totalCmds, lastCmds, cmdsPerSecond, globalPitch;
|
int changeOrd, changePos, totalSeconds, totalTicks, totalTicksR, curMidiClock, curMidiTime, totalCmds, lastCmds, cmdsPerSecond, globalPitch;
|
||||||
unsigned char extValue, pendingMetroTick;
|
unsigned char extValue, pendingMetroTick;
|
||||||
DivGroovePattern speeds;
|
DivGroovePattern speeds;
|
||||||
short tempoAccum;
|
short tempoAccum;
|
||||||
|
@ -1160,6 +1160,8 @@ class DivEngine {
|
||||||
totalSeconds(0),
|
totalSeconds(0),
|
||||||
totalTicks(0),
|
totalTicks(0),
|
||||||
totalTicksR(0),
|
totalTicksR(0),
|
||||||
|
curMidiClock(0),
|
||||||
|
curMidiTime(0),
|
||||||
totalCmds(0),
|
totalCmds(0),
|
||||||
lastCmds(0),
|
lastCmds(0),
|
||||||
cmdsPerSecond(0),
|
cmdsPerSecond(0),
|
||||||
|
|
|
@ -1833,8 +1833,8 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi
|
||||||
// 3. run MIDI clock
|
// 3. run MIDI clock
|
||||||
int midiTotal=MIN(cycles,runLeftG);
|
int midiTotal=MIN(cycles,runLeftG);
|
||||||
for (int i=0; i<midiTotal; i++) {
|
for (int i=0; i<midiTotal; i++) {
|
||||||
// TODO: TEMPO
|
|
||||||
if (--midiClockCycles<=0) {
|
if (--midiClockCycles<=0) {
|
||||||
|
curMidiClock++;
|
||||||
if (output) if (!skipping && output->midiOut!=NULL && midiOutClock) {
|
if (output) if (!skipping && output->midiOut!=NULL && midiOutClock) {
|
||||||
output->midiOut->send(TAMidiMessage(TA_MIDI_CLOCK,0,0));
|
output->midiOut->send(TAMidiMessage(TA_MIDI_CLOCK,0,0));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue