Renderer(Model::Ptr data, StateIterator::Ptr iterator, Sound::Receiver::Ptr target, Parameters::Accessor::Ptr params) : Tune(std::move(data)) , Iterator(std::move(iterator)) , State(Iterator->GetStateObserver()) , Analyzer(Module::CreateSoundAnalyzer()) , SoundParams(Sound::RenderParameters::Create(std::move(params))) , Target(std::move(target)) , Looped() { ApplyParameters(); }
Renderer(SPC::Ptr tune, StateIterator::Ptr iterator, Sound::Receiver::Ptr target, Parameters::Accessor::Ptr params) : Tune(std::move(tune)) , Iterator(std::move(iterator)) , State(Iterator->GetStateObserver()) , SoundParams(Sound::RenderParameters::Create(std::move(params))) , Target(std::move(target)) , Looped() , SamplesPerFrame() { ApplyParameters(); }
bool RenderFrame() override { try { ApplyParameters(); Sound::ChunkBuilder builder; builder.Reserve(SamplesPerFrame); Tune->Render(SamplesPerFrame, builder); Resampler->ApplyData(builder.CaptureResult()); Iterator->NextFrame(Looped); return Iterator->IsValid(); } catch (const std::exception&) { return false; } }
bool RenderFrame() override { static_assert(Sound::Sample::BITS == 16, "Incompatible sound bits count"); try { ApplyParameters(); Sound::ChunkBuilder builder; builder.Reserve(SamplesPerFrame); Engine->play(safe_ptr_cast<short*>(builder.Allocate(SamplesPerFrame)), SamplesPerFrame * Sound::Sample::CHANNELS); Target->ApplyData(builder.CaptureResult()); Iterator->NextFrame(Looped); return Iterator->IsValid(); } catch (const std::exception&) { return false; } }
bool RenderFrame() override { try { ApplyParameters(); auto frame = Tune.RenderFrame(); Analyzer->AddSoundData(frame); Resampler->ApplyData(std::move(frame)); Iterator->NextFrame(Looped); if (0 == State->Frame()) { Tune.Seek(0); } return Iterator->IsValid(); } catch (const std::exception&) { return false; } }
Renderer(TunePtr tune, StateIterator::Ptr iterator, Sound::Receiver::Ptr target, Parameters::Accessor::Ptr params) : Tune(std::move(tune)) , Engine(std::make_shared<sidplayfp>()) , Builder("resid") , Iterator(std::move(iterator)) , State(Iterator->GetStateObserver()) , Analysis(MakePtr<Analyzer>(Engine)) , Target(std::move(target)) , Params(params) , SoundParams(Sound::RenderParameters::Create(params)) , Config(Engine->config()) , UseFilter() , Looped() , SamplesPerFrame() { LoadRoms(*params); const uint_t chipsCount = Engine->info().maxsids(); Builder.create(chipsCount); Config.frequency = 0; ApplyParameters(); CheckSidplayError(Engine->load(Tune.get())); }