2 #include <Engine/Node/SimpleApi.hpp>
10 static const constexpr
auto prettyName =
"Gain";
11 static const constexpr
auto objectKey =
"Gain";
12 static const constexpr
auto category =
"Audio/Utilities";
13 static const constexpr
auto author =
"ossia score";
14 static const constexpr
auto tags = std::array<const char*, 0>{};
15 static const constexpr
auto kind = Process::ProcessCategory::AudioEffect;
16 static const constexpr
auto description =
"A simple volume control";
17 static const uuid_constexpr
auto uuid
18 = make_uuid(
"6c158669-0f81-41c9-8cc6-45820dcda867");
20 static const constexpr
auto controls
22 static const constexpr audio_in audio_ins[]{
"in"};
23 static const constexpr audio_out audio_outs[]{
"out"};
26 using control_policy = ossia::safe_nodes::last_tick;
28 run(
const ossia::audio_port& p1,
float g, ossia::audio_port& p2,
29 ossia::token_request t, ossia::exec_state_facade st)
31 const auto chans = p1.channels();
32 p2.set_channels(chans);
34 const auto [first_pos, N] = st.timings(t);
36 const double gain = g;
37 for(std::size_t i = 0; i < chans; i++)
39 auto& in = p1.channel(i);
40 auto& out = p2.channel(i);
42 const int64_t samples = in.size();
43 int64_t max = std::min(N, samples);
47 for(int64_t j = first_pos; j < max; j++)
49 out[j] = in[j] * gain;
Definition: score-lib-process/Control/Widgets.hpp:77
Definition: score-plugin-fx/Fx/Gain.hpp:7