soundbuffer_session.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 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#pragma once
30
31#include <memory>
32
33namespace clan
34{
37
38 class SoundCard;
39 class SoundFilter;
40 class SoundBuffer;
41 class SoundBuffer_Session_Impl;
42 class SoundOutput;
43
51 {
52 public:
56
58 bool is_null() const { return !impl; }
59
61 void throw_if_null() const;
62
64 int get_position() const;
65
71 float get_position_relative() const;
72
77 int get_length() const;
78
80 int get_frequency() const;
81
86 float get_volume() const;
87
92 float get_pan() const;
93
97 bool get_looping() const;
98
101
106 bool set_position(int new_pos);
107
116 bool set_position_relative(float new_pos);
117
123 bool set_end_position(int pos);
124
128 void set_frequency(int new_freq);
129
137 void set_volume(float new_volume);
138
147 void set_pan(float new_pan);
148
150 void play();
151
153 void stop();
154
158 void set_looping(bool loop);
159
163 void add_filter(SoundFilter &filter);
164
167
168 private:
169 SoundBuffer_Session(SoundBuffer &soundbuffer, bool looping, SoundOutput &output);
170 std::shared_ptr<SoundBuffer_Session_Impl> impl;
171
172 friend class SoundBuffer;
173 friend class SoundOutput_Impl;
174 };
175
177}
float get_position_relative() const
Returns the sample position relative to the full length.
float get_volume() const
Returns the linear relative volume of the soundeffect.
void set_frequency(int new_freq)
Sets the frequency of the session.
void stop()
Stops playback of the session.
float get_pan() const
Returns the current pan (in a measure from -1 -> 1).
friend class SoundOutput_Impl
Definition soundbuffer_session.h:173
void set_pan(float new_pan)
Sets the panning of the session played in measures from -1 -> 1.
friend class SoundBuffer
Definition soundbuffer_session.h:172
int get_length() const
Returns the total length (in samples) of the sound buffer played.
bool set_position_relative(float new_pos)
Sets the relative position of the session.
bool set_end_position(int pos)
Sets the end position within the current stream.
int get_frequency() const
Returns the frequency of the session.
void remove_filter(SoundFilter &filter)
Remove the sound filter from the session. See SoundFilter for details.
bool set_position(int new_pos)
Sets the session position to 'new_pos'.
SoundBuffer_Session()
Creates a null instance.
int get_position() const
Returns the current sample position of the playback.
bool is_null() const
Returns true if this object is invalid.
Definition soundbuffer_session.h:58
void set_looping(bool loop)
Determines whether this session should loop.
void throw_if_null() const
Throw an exception if this object is invalid.
void add_filter(SoundFilter &filter)
Adds the sound filter to the session. See SoundFilter for details.
void set_volume(float new_volume)
Sets the volume of the session in a relative measure (0->1)
void play()
Starts playback of the session.
bool get_looping() const
Returns whether this session loops.
bool is_playing()
Returns true if the session is playing.
Sample interface in ClanLib.
Definition soundbuffer.h:56
Sound Filter Class.
Definition soundfilter.h:44
SoundOutput interface in ClanLib.
Definition soundoutput.h:48
Definition clanapp.h:36