This commit is contained in:
2024-03-26 21:05:48 +01:00
parent 73d2bbc730
commit 9989a52c38
5 changed files with 115 additions and 68 deletions

View File

@ -9,24 +9,38 @@ void sequencerInit() {
void sequencerExec(void *handle) {
t_melody *melody = (t_melody*) handle;
if (melody->lengthCnt == 0) {
if (melody->tones[melody->idx].length == e_L_EndMark) {
melody->idx = 0;
}
switch (melody->state) {
case 0:
if (melody->tones[melody->idx].length == e_L_EndMark) {
melody->idx = 0;
}
psgPlayTone(melody->channel, melody->tones[melody->idx].octave, melody->tones[melody->idx].note);
psgPlayTone(melody->channel, melody->tones[melody->idx].octave, melody->tones[melody->idx].note);
melody->lengthCnt = melody->tones[melody->idx].length;
melody->idx += 1;
melody->lengthCnt = melody->tones[melody->idx].length;
melody->state = 1;
break;
case 1:
melody->lengthCnt -= 1;
if (melody->lengthCnt == 0) {
melody->state = 2;
}
break;
case 2:
if (! (melody->tones[melody->idx].legato)) {
psgPlayTone(melody->channel, e_O_Null, e_Pause);
}
melody->idx += 1;
melody->state = 0;
break;
}
melody->lengthCnt -= 1;
}
uint8_t sequencerPlayMelody(t_melody *melody) {
melody->idx = 0;
melody->lengthCnt = 0;
schAdd(sequencerExec, (void*) melody, 0, 25);
melody->state = 0;
schAdd(sequencerExec, (void*) melody, 0, 10);
return 0;
}