Anklang 0.3.0-460-gc4ef46ba
ASE — Anklang Sound Engine (C++)

« « « Anklang Documentation
Loading...
Searching...
No Matches
combo.hh
Go to the documentation of this file.
1 // This Source Code Form is licensed MPL-2.0: http://mozilla.org/MPL/2.0
2#ifndef __ASE_COMBO_HH__
3#define __ASE_COMBO_HH__
4
5#include <ase/processor.hh>
6
7namespace Ase {
8
9class AudioCombo : public AudioProcessor, protected ProcessorManager {
10protected:
11 AudioProcessorS processors_;
12 AudioProcessorP eproc_;
13 virtual void reconnect (size_t index, bool insertion) = 0;
14 explicit AudioCombo (const ProcessorSetup&);
15 virtual ~AudioCombo ();
16public:
17 void insert (AudioProcessorP proc, ssize_t pos = ~size_t (0));
18 bool remove (AudioProcessor &proc);
19 AudioProcessorP at (uint nth);
21 size_t size ();
22 void set_event_source (AudioProcessorP eproc);
23 AudioProcessorS list_processors () const;
24};
25
26class AudioChain : public AudioCombo {
27 ASE_CLASS_DECLS (Inlet);
28 const SpeakerArrangement ispeakers_ = SpeakerArrangement (0);
29 const SpeakerArrangement ospeakers_ = SpeakerArrangement (0);
30 InletP inlet_;
31 AudioProcessor *last_output_ = nullptr;
32protected:
33 void initialize (SpeakerArrangement busses) override;
34 void reset (uint64 target_stamp) override;
35 void render (uint n_frames) override;
36 uint schedule_children () override;
37 void reconnect (size_t index, bool insertion) override;
38 uint chain_up (AudioProcessor &pfirst, AudioProcessor &psecond);
39public:
40 explicit AudioChain (const ProcessorSetup&, SpeakerArrangement iobuses = SpeakerArrangement::STEREO);
41 virtual ~AudioChain ();
42 struct Probe { float dbspl = -192; };
44 ProbeArray* run_probes (bool enable);
45 static void static_info (AudioProcessorInfo &info);
46private:
47 ProbeArray *probes_ = nullptr;
48 bool probes_enabled_ = false;
49 FastMemory::Block probe_block_;
50};
51
52} // Ase
53
54#endif // __ASE_COMBO_HH__
void render(uint n_frames) override
Definition combo.cc:191
void initialize(SpeakerArrangement busses) override
Definition combo.cc:162
uint chain_up(AudioProcessor &pfirst, AudioProcessor &psecond)
Connect the main audio input of next to audio output of prev.
Definition combo.cc:238
void reconnect(size_t index, bool insertion) override
Reconnect AudioChain child processors at start and after.
Definition combo.cc:226
void reset(uint64 target_stamp) override
Reset all state variables.
Definition combo.cc:171
bool remove(AudioProcessor &proc)
Remove a previously added AudioProcessor proc from the AudioCombo.
Definition combo.cc:71
AudioProcessorS list_processors() const
Retrieve list of AudioProcessorS contained in this AudioCombo.
Definition combo.cc:122
void insert(AudioProcessorP proc, ssize_t pos=~size_t(0))
Definition combo.cc:56
AudioProcessorP at(uint nth)
Return the AudioProcessor at position nth in the AudioCombo.
Definition combo.cc:97
void set_event_source(AudioProcessorP eproc)
Assign event source for future auto-connections of chld processors.
Definition combo.cc:129
size_t size()
Return the number of AudioProcessor instances in the AudioCombo.
Definition combo.cc:115
ssize_t find_pos(AudioProcessor &proc)
Return the index of AudioProcessor proc in the AudioCombo.
Definition combo.cc:105
Audio signal AudioProcessor base class, implemented by all effects and instruments.
Definition processor.hh:76
Interface for management, connecting and processing of AudioProcessor instances.
Definition processor.hh:274
The Anklang C++ API namespace.
Definition api.hh:9
uint64_t uint64
A 64-bit unsigned integer, use PRI*64 in format strings.
Definition cxxaux.hh:25
SpeakerArrangement
Definition transport.hh:11
uint32_t uint
Provide 'uint' as convenience type.
Definition cxxaux.hh:18
Detailed information and common properties of AudioProcessor subclasses.
Definition processor.hh:29
Reference for an allocated memory block.
Definition memory.hh:90
typedef ssize_t