summaryrefslogtreecommitdiff
path: root/src/tangara/audio/audio_fsm.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-05-16 12:21:05 +1000
committerjacqueline <me@jacqueline.id.au>2024-05-16 12:21:05 +1000
commit51bbb6a49544861edc957e0c91ceb1ac8349651b (patch)
tree684f5a71aba50607512f89e397faaa4f75b0aaf3 /src/tangara/audio/audio_fsm.cpp
parentc1f7adf22700a268ce16ebcdda49aee6e71b53ff (diff)
downloadtangara-fw-51bbb6a49544861edc957e0c91ceb1ac8349651b.tar.gz
Add a stream source that generates a sine wave
Diffstat (limited to 'src/tangara/audio/audio_fsm.cpp')
-rw-r--r--src/tangara/audio/audio_fsm.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/tangara/audio/audio_fsm.cpp b/src/tangara/audio/audio_fsm.cpp
index 71f41938..fb186acc 100644
--- a/src/tangara/audio/audio_fsm.cpp
+++ b/src/tangara/audio/audio_fsm.cpp
@@ -11,6 +11,8 @@
#include <memory>
#include <variant>
+#include "audio/audio_source.hpp"
+#include "audio/sine_source.hpp"
#include "cppbor.h"
#include "cppbor_parse.h"
#include "esp_heap_caps.h"
@@ -146,6 +148,17 @@ void AudioState::react(const SetTrack& ev) {
});
}
+void AudioState::react(const PlaySineWave& ev) {
+ auto tags = std::make_shared<database::TrackTags>();
+
+ std::stringstream title;
+ title << ev.frequency << "Hz Sine Wave";
+ tags->title(title.str());
+
+ sDecoder->open(std::make_shared<TaggedStream>(
+ tags, std::make_unique<SineSource>(ev.frequency), title.str()));
+}
+
void AudioState::react(const TogglePlayPause& ev) {
sIsPaused = !ev.set_to.value_or(sIsPaused);
if (!sIsPaused && is_in_state<states::Standby>() &&