From 21b20281229c71989d55a31f249006215f8b1efb Mon Sep 17 00:00:00 2001 From: lisyarus Date: Wed, 5 Oct 2022 20:57:44 +0300 Subject: [PATCH] Update audio example --- examples/audio.cpp | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/examples/audio.cpp b/examples/audio.cpp index 2576c321..708fd7fd 100644 --- a/examples/audio.cpp +++ b/examples/audio.cpp @@ -5,9 +5,13 @@ #include #include #include +#include +#include #include #include #include +#include +#include #include @@ -35,18 +39,12 @@ struct audio_app : app::app("Audio example") { mixer_ = audio::make_mixer(); - engine_.output(mixer_); - auto volume = audio::volume(audio::sine_wave(440.f), 1.f, 0.01f); - auto channel = mixer_->add(volume); - std::this_thread::sleep_for(std::chrono::seconds{1}); - volume->gain(0.5f); - std::this_thread::sleep_for(std::chrono::seconds{1}); - volume->gain(0.25f); - std::this_thread::sleep_for(std::chrono::seconds{1}); - volume->gain(0.125f); - std::this_thread::sleep_for(std::chrono::seconds{1}); - channel->stop(); + auto [ dup1, dup2 ] = audio::duplicate(mixer_); + left_volume_ = audio::volume(dup1, 0.f, 0.1f); + right_volume_ = audio::volume(dup2, 0.f, 0.1f); + auto result = audio::stereo(left_volume_, right_volume_); + engine_.output(result); } void on_key_down(SDL_Keycode key) override @@ -57,7 +55,7 @@ struct audio_app { int midi = key_to_midi.at(key); auto tone = audio::sine_wave(440.f * std::pow(2.f, (midi - 69) / 12.f)); - channels_[key] = mixer_->add(audio::volume(tone, 0.5f)); + channels_[key] = mixer_->add(tone); } } @@ -72,10 +70,22 @@ struct audio_app } } + void update() override + { + float const time = clock_.count(); + + float volume = std::sin(time); + left_volume_->gain(0.5f + 0.5f * volume); + right_volume_->gain(0.5f - 0.5f * volume); + } + private: audio::engine engine_; audio::mixer_ptr mixer_; + std::shared_ptr left_volume_, right_volume_; std::map channels_; + + util::clock<> clock_; }; int main()