void SynthesizeData(const TrackModelState& state, AYM::TrackBuilder& track) override { if (0 == state.Quirk()) { if (0 == state.Line()) { Transposition = Data->Order->GetTransposition(state.Position()); } GetNewLineState(state, track); } SynthesizeChannelsData(track); }
void GetNewLineState(const TrackModelState& state, AYM::TrackBuilder& track) { if (0 == state.Line()) { std::for_each(PlayerState.begin(), PlayerState.end(), std::mem_fun_ref(&ChannelState::ResetBaseNoise)); } if (const Line::Ptr line = state.LineObject()) { for (uint_t chan = 0; chan != PlayerState.size(); ++chan) { if (const Cell::Ptr src = line->GetChannel(chan)) { GetNewChannelState(*src, PlayerState[chan], track); } } } }