soundbuffer_session.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2015 The ClanLib Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** arising from the use of this software.
8 **
9 ** Permission is granted to anyone to use this software for any purpose,
10 ** including commercial applications, and to alter it and redistribute it
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries ClanLib may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Magnus Norddahl
27 */
28
29
30 #pragma once
31
32 #include <memory>
33
34 namespace clan
35 {
38
39 class SoundCard;
40 class SoundFilter;
41 class SoundBuffer;
42 class SoundBuffer_Session_Impl;
43 class SoundOutput;
44
51 class SoundBuffer_Session
52 {
55
56 public:
58 SoundBuffer_Session();
59
60 virtual ~SoundBuffer_Session();
61
65
66 public:
68 bool is_null() const { return !impl; }
69
71 void throw_if_null() const;
72
74 int get_position() const;
75
81 float get_position_relative() const;
82
87 int get_length() const;
88
90 int get_frequency() const;
91
96 float get_volume() const;
97
102 float get_pan() const;
103
107 bool get_looping() const;
108
110 bool is_playing();
111
115
116 public:
121 bool set_position(int new_pos);
122
131 bool set_position_relative(float new_pos);
132
138 bool set_end_position(int pos);
139
143 void set_frequency(int new_freq);
144
152 void set_volume(float new_volume);
153
162 void set_pan(float new_pan);
163
165 void play();
166
168 void stop();
169
173 void set_looping(bool loop);
174
178 void add_filter(SoundFilter &filter);
179
181 void remove_filter(SoundFilter &filter);
182
186
187 private:
188 SoundBuffer_Session(SoundBuffer &soundbuffer, bool looping, SoundOutput &output);
189 std::shared_ptr<SoundBuffer_Session_Impl> impl;
190
191 friend class SoundBuffer;
192 friend class SoundOutput_Impl;
194 };
195
196 }
197
clan::SoundBuffer_Session::get_volume
float get_volume() const
Returns the linear relative volume of the soundeffect.
clan::SoundBuffer_Session::stop
void stop()
Stops playback of the session.
clan
Definition: clanapp.h:35
clan::SoundBuffer_Session::get_frequency
int get_frequency() const
Returns the frequency of the session.
clan::SoundBuffer_Session::is_null
bool is_null() const
Returns true if this object is invalid.
Definition: soundbuffer_session.h:68
clan::SoundBuffer_Session::set_looping
void set_looping(bool loop)
Determines whether this session should loop.
clan::SoundBuffer_Session
SoundBuffer_Session provides control over a playing soundeffect.
Definition: soundbuffer_session.h:51
clan::SoundBuffer_Session::set_position
bool set_position(int new_pos)
Sets the session position to 'new_pos'.
clan::SoundOutput
SoundOutput interface in ClanLib.
Definition: soundoutput.h:48
clan::SoundBuffer_Session::remove_filter
void remove_filter(SoundFilter &filter)
Remove the sound filter from the session. See SoundFilter for details.
clan::SoundBuffer_Session::get_pan
float get_pan() const
Returns the current pan (in a measure from -1 -> 1).
clan::SoundBuffer
Sample interface in ClanLib.
Definition: soundbuffer.h:56
clan::SoundBuffer_Session::is_playing
bool is_playing()
Returns true if the session is playing.
clan::SoundBuffer_Session::SoundOutput_Impl
friend class SoundOutput_Impl
Definition: soundbuffer_session.h:192
clan::SoundBuffer_Session::add_filter
void add_filter(SoundFilter &filter)
Adds the sound filter to the session. See SoundFilter for details.
clan::SoundFilter
Sound Filter Class.
Definition: soundfilter.h:44
clan::SoundBuffer_Session::get_position_relative
float get_position_relative() const
Returns the sample position relative to the full length.
clan::SoundBuffer_Session::~SoundBuffer_Session
virtual ~SoundBuffer_Session()
clan::SoundBuffer_Session::throw_if_null
void throw_if_null() const
Throw an exception if this object is invalid.
clan::SoundBuffer_Session::SoundBuffer_Session
SoundBuffer_Session()
Creates a null instance.
clan::SoundBuffer_Session::get_looping
bool get_looping() const
Returns whether this session loops.
clan::SoundBuffer_Session::set_volume
void set_volume(float new_volume)
Sets the volume of the session in a relative measure (0->1)
clan::SoundBuffer_Session::get_length
int get_length() const
Returns the total length (in samples) of the sound buffer played.
clan::SoundBuffer_Session::set_pan
void set_pan(float new_pan)
Sets the panning of the session played in measures from -1 -> 1.
clan::SoundBuffer_Session::get_position
int get_position() const
Returns the current sample position of the playback.
clan::SoundBuffer_Session::set_frequency
void set_frequency(int new_freq)
Sets the frequency of the session.
clan::SoundBuffer_Session::set_end_position
bool set_end_position(int pos)
Sets the end position within the current stream.
clan::SoundBuffer_Session::set_position_relative
bool set_position_relative(float new_pos)
Sets the relative position of the session.
clan::SoundBuffer_Session::play
void play()
Starts playback of the session.