OSSIA
Open Scenario System for Interactive Application
Loading...
Searching...
No Matches
sound_ref.hpp
1#pragma once
2#include <ossia/dataflow/graph_node.hpp>
3#include <ossia/dataflow/nodes/sound.hpp>
4#include <ossia/dataflow/nodes/sound_sampler.hpp>
5#include <ossia/dataflow/nodes/sound_utils.hpp>
6
7namespace ossia::nodes
8{
9class sound_ref final : public ossia::sound_node
10{
11public:
12 sound_ref() { m_outlets.push_back(&audio_out); }
13
14 ~sound_ref() = default;
15
16 [[nodiscard]] std::string label() const noexcept override { return "sound_ref"; }
17
18 void transport(time_value date) override { m_sampler.transport(date); }
19
20 void transport(time_value date, const ossia::tick_transport_info& info) override
21 {
22 m_sampler.transport(date, info);
23 }
24
25 void set_start(std::size_t v) { m_sampler.set_start(v); }
26
27 void set_upmix(std::size_t v) { m_sampler.set_upmix(v); }
28
29 // Used for testing only
30 void set_sound(audio_array data) { m_sampler.set_sound(std::move(data)); }
31
32 void set_sound(const audio_handle& hdl, int channels, int sampleRate)
33 {
34 m_sampler.set_sound(hdl, channels, sampleRate);
35 }
36
37 void run(const ossia::token_request& t, ossia::exec_state_facade e) noexcept override
38 {
39 return m_sampler.run(t, e);
40 }
41
42 ossia::audio_outlet audio_out;
43 sound_sampler m_sampler{this, &audio_out.data};
44};
45}