void AmigaSound::updateMusic() { if (_fanfareCount > 0) { --_fanfareCount; if (_fanfareCount == 0) { playSong(_fanfareRestore); } } if (_fluteCount > 0 && (_lastOverride == 40 || _lastOverride == 3)) { --_fluteCount; if (_fluteCount == 0) { playPattern("JUNG", 5 + _vm->randomizer.getRandomNumber(6)); _fluteCount = 100; } } }
void Sound::updateTrack(uint8_t channel){ #if(NUM_CHANNELS > 0) if(channel>=NUM_CHANNELS) return; if(trackIsPlaying[channel] && !patternIsPlaying[channel]){ uint16_t data = pgm_read_word(trackData[channel] + trackCursor[channel]); if(data == 0xFFFF){ //en of the track trackIsPlaying[channel] = false; //Serial.println("track end"); return; } uint8_t patternID = data & 0xFF; //Serial.print(channel); //Serial.print(" pattern # "); //Serial.println(patternID, HEX); data >>= 8; patternPitch[channel] = data; playPattern((const uint16_t*)pgm_read_word(&(patternSet[channel][patternID])), channel); trackCursor[channel] ++; }