libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
audiogen.h
Go to the documentation of this file.
1
8#pragma once
9
12#include <promeki/core/list.h>
13
15
16class Audio;
17
22class AudioGen {
23 public:
25 enum Type {
26 Silence = 0,
27 Sine
28 };
29
31 struct Config {
33 float freq;
34 float amplitude;
35 float phase;
36 float dutyCycle;
37 };
38
40 AudioGen(const AudioDesc &desc);
41
43 Audio generate(size_t samples);
44
46 const Config &config(size_t chan) const {
47 return _chanConfig[chan];
48 }
49
51 void setConfig(size_t chan, Config val);
52
53 private:
54 AudioDesc _desc;
55 List<Config> _chanConfig;
56 size_t _sampleCount = 0;
57
58 void genSilence(size_t chan, float *data, size_t samples) const;
59 void genSine(size_t chan, float *data, size_t samples) const;
60};
61
Describes an audio format including sample type, rate, and channel count.
Definition audiodesc.h:28
Audio signal generator for producing test tones and silence.
Definition audiogen.h:22
const Config & config(size_t chan) const
Returns the configuration for the given channel.
Definition audiogen.h:46
Type
Type of audio signal to generate.
Definition audiogen.h:25
@ Silence
Generate silence (all zeros).
Definition audiogen.h:26
@ Sine
Generate a sine wave.
Definition audiogen.h:27
void setConfig(size_t chan, Config val)
Sets the configuration for the given channel.
Audio generate(size_t samples)
Generates the specified number of audio samples.
AudioGen(const AudioDesc &desc)
Constructs an audio generator with the given audio description.
Object to hold some number of audio samples.
Definition audio.h:35
Dynamic array container wrapping std::vector.
Definition list.h:40
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19
Per-channel configuration for the audio generator.
Definition audiogen.h:31
float freq
Frequency in Hz.
Definition audiogen.h:33
float dutyCycle
Duty cycle (reserved for future waveform types).
Definition audiogen.h:36
float amplitude
Amplitude (0.0 to 1.0).
Definition audiogen.h:34
float phase
Phase offset in radians.
Definition audiogen.h:35
Type type
Signal type to generate.
Definition audiogen.h:32