neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
audio_waveform.hpp
Go to the documentation of this file.
1
// audio_waveform.hpp
2
/*
3
neogfx C++ App/Game Engine
4
Copyright (c) 2021 Leigh Johnston. All Rights Reserved.
5
6
This program is free software: you can redistribute it and / or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#include <
neogfx/neogfx.hpp
>
21
#include <
neogfx/audio/i_audio_device.hpp
>
22
#include <
neogfx/audio/i_audio_waveform.hpp
>
23
#include <
neogfx/audio/audio_bitstream.hpp
>
24
25
#pragma once
26
27
namespace
neogfx
28
{
29
class
audio_waveform
:
public
audio_bitstream
<i_audio_waveform>
30
{
31
public
:
32
audio_waveform
(
audio_sample_rate
aSampleRate,
float
aAmplitude = 1.0f);
33
audio_waveform
(
i_audio_device
const
& aDevice,
float
aAmplitude = 1.0f);
34
public
:
35
~audio_waveform
();
36
public
:
37
void
set_sample_rate
(
audio_sample_rate
aSampleRate)
override
;
38
public
:
39
i_audio_oscillator
&
create_oscillator
(
float
aFrequency,
float
aAmplitude = 1.0f,
oscillator_function
aFunction =
oscillator_function::Sine
)
final
;
40
i_audio_oscillator
&
create_oscillator
(
float
aFrequency,
float
aAmplitude, std::function<
float
(
float
)>
const
& aFunction)
final
;
41
i_audio_oscillator
&
add_oscillator
(
i_audio_oscillator
& aOscillator)
final
;
42
i_audio_oscillator
&
add_oscillator
(
i_ref_ptr<i_audio_oscillator>
const
& aOscillator)
final
;
43
void
remove_oscillator
(
i_audio_oscillator
const
& aOscillator)
final
;
44
public
:
45
audio_frame_count
length
() const final;
46
void
generate
(
audio_channel
aChannel,
audio_frame_count
aFrameCount,
float
* aOutputFrames) final;
47
void
generate_from
(
audio_channel
aChannel,
audio_frame_index
aFrameFrom,
audio_frame_count
aFrameCount,
float
* aOutputFrames) final;
48
private:
49
std
::
vector
<
ref_ptr
<
i_audio_oscillator
>> iOscillators;
50
};
51
}
audio_bitstream.hpp
neogfx::audio_bitstream
Definition
audio_bitstream.hpp:30
neogfx::audio_waveform
Definition
audio_waveform.hpp:30
neogfx::audio_waveform::create_oscillator
i_audio_oscillator & create_oscillator(float aFrequency, float aAmplitude, std::function< float(float)> const &aFunction) final
Note: not plugin-safe.
neogfx::audio_waveform::add_oscillator
i_audio_oscillator & add_oscillator(i_audio_oscillator &aOscillator) final
neogfx::audio_waveform::audio_waveform
audio_waveform(i_audio_device const &aDevice, float aAmplitude=1.0f)
neogfx::audio_waveform::generate
void generate(audio_channel aChannel, audio_frame_count aFrameCount, float *aOutputFrames) final
neogfx::audio_waveform::audio_waveform
audio_waveform(audio_sample_rate aSampleRate, float aAmplitude=1.0f)
neogfx::audio_waveform::set_sample_rate
void set_sample_rate(audio_sample_rate aSampleRate) override
neogfx::audio_waveform::create_oscillator
i_audio_oscillator & create_oscillator(float aFrequency, float aAmplitude=1.0f, oscillator_function aFunction=oscillator_function::Sine) final
neogfx::audio_waveform::add_oscillator
i_audio_oscillator & add_oscillator(i_ref_ptr< i_audio_oscillator > const &aOscillator) final
neogfx::audio_waveform::length
audio_frame_count length() const final
neogfx::audio_waveform::remove_oscillator
void remove_oscillator(i_audio_oscillator const &aOscillator) final
neogfx::audio_waveform::~audio_waveform
~audio_waveform()
neogfx::audio_waveform::generate_from
void generate_from(audio_channel aChannel, audio_frame_index aFrameFrom, audio_frame_count aFrameCount, float *aOutputFrames) final
neogfx::i_audio_device
Definition
i_audio_device.hpp:58
neogfx::i_audio_oscillator
Definition
i_audio_oscillator.hpp:37
neolib::i_ref_ptr
Definition
i_reference_counted.hpp:78
neolib::ref_ptr
Definition
reference_counted.hpp:185
neolib::vector
Definition
vector.hpp:48
i_audio_device.hpp
i_audio_waveform.hpp
neogfx
Definition
action.hpp:28
neogfx::audio_frame_index
std::uint64_t audio_frame_index
Definition
audio_primitives.hpp:992
neogfx::audio_channel
audio_channel
Definition
audio_primitives.hpp:855
neogfx::oscillator_function
oscillator_function
Definition
i_audio_oscillator.hpp:28
neogfx::oscillator_function::Sine
@ Sine
neogfx::audio_frame_count
std::uint64_t audio_frame_count
Definition
audio_primitives.hpp:993
neogfx::audio_sample_rate
std::uint64_t audio_sample_rate
Definition
audio_primitives.hpp:956
std
Definition
plf_hive.h:79
neogfx.hpp
include
neogfx
audio
audio_waveform.hpp
Generated by
1.9.8