Some fixes related to offset

This commit is contained in:
2023-08-26 22:20:58 +03:00
parent 95d07893bc
commit 0a4fba7870
3 changed files with 18 additions and 5 deletions

View File

@ -405,9 +405,6 @@ void calculateCycles() {
} else if (channels[i].mode == 2) { //Sequencer plays 1/16th } else if (channels[i].mode == 2) { //Sequencer plays 1/16th
channelPulsesPerCycle[i] = (PPQN / 4) - 1; channelPulsesPerCycle[i] = (PPQN / 4) - 1;
} }
if (channels[i].offset > channelPulsesPerCycle[i]) {
channels[i].offset = channelPulsesPerCycle[i];
}
} }
} }

View File

@ -112,8 +112,18 @@ void checkInputs() {
|| (insideTab && menuItem == 0 || (insideTab && menuItem == 0
&& (menuItemSelected || shiftBtnPushed))) && (menuItemSelected || shiftBtnPushed)))
&& displayTab != 0 && displayTab != 0
&& channels[displayTab - 1].mode == 0) { //Change Subdiv && channels[displayTab - 1].mode == 0) { //Change Subdiv and reset offset
channels[displayTab - 1].subDiv = channels[displayTab - 1].subDiv - change; channels[displayTab - 1].subDiv = channels[displayTab - 1].subDiv - change;
//channels[displayTab - 1].offset = 0;
int PulsesPerStep;
if (subDivs[channels[displayTab - 1].subDiv] < 0) {
PulsesPerStep = PPQN / subDivs[channels[displayTab - 1].subDiv] * -1 ;
} else {
PulsesPerStep = subDivs[channels[displayTab - 1].subDiv] * PPQN;
}
if (channels[displayTab - 1].offset >= PulsesPerStep) {
channels[displayTab - 1].offset = PulsesPerStep - 1;
}
if (channels[displayTab - 1].subDiv > 100) { if (channels[displayTab - 1].subDiv > 100) {
channels[displayTab - 1].subDiv = 0; channels[displayTab - 1].subDiv = 0;
} if (channels[displayTab - 1].subDiv > (sizeof(subDivs) / sizeof(int)) - 1) { } if (channels[displayTab - 1].subDiv > (sizeof(subDivs) / sizeof(int)) - 1) {

View File

@ -147,7 +147,13 @@ void updateScreen() {
valueStr = "SEQ"; valueStr = "SEQ";
} else if (i == 2 && channels[displayTab - 1].mode == 0) { //SubDiv and offset } else if (i == 2 && channels[displayTab - 1].mode == 0) { //SubDiv and offset
valueStr = String(channels[displayTab - 1].offset) + "/"; valueStr = String(channels[displayTab - 1].offset) + "/";
valueStr = valueStr + String(channelPulsesPerCycle[displayTab-1]+1); int PulsesPerStep;
if (subDivs[channels[displayTab - 1].subDiv] < 0) {
PulsesPerStep = PPQN / subDivs[channels[displayTab - 1].subDiv] * -1 ;
} else {
PulsesPerStep = subDivs[channels[displayTab - 1].subDiv] * PPQN;
}
valueStr = valueStr + String(PulsesPerStep); //(playingModes[i] * PPQN) - 1 //String(channelPulsesPerCycle[displayTab-1]+1)
} else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] > 0) { } else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] > 0) {
valueStr = "/" + String(subDivs[channels[displayTab - 1].subDiv]); valueStr = "/" + String(subDivs[channels[displayTab - 1].subDiv]);
} else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] < 0) { } else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] < 0) {