soundbuffer_session.h Source File - ClanLib SDK
Description: soundbuffer_session.h Source File

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
50 class SoundBuffer_Session
51 {
52 public:
54 SoundBuffer_Session();
55 virtual ~SoundBuffer_Session();
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
100 bool is_playing();
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
166 void remove_filter(SoundFilter &filter);
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}
clan::SoundBuffer_Session::get_position_relative
float get_position_relative() const
Returns the sample position relative to the full length.
clan::SoundBuffer_Session::get_volume
float get_volume() const
Returns the linear relative volume of the soundeffect.
clan::SoundBuffer_Session::set_frequency
void set_frequency(int new_freq)
Sets the frequency of the session.
clan::SoundBuffer_Session::~SoundBuffer_Session
virtual ~SoundBuffer_Session()
clan::SoundBuffer_Session::stop
void stop()
Stops playback of the session.
clan::SoundBuffer_Session::get_pan
float get_pan() const
Returns the current pan (in a measure from -1 -> 1).
clan::SoundBuffer_Session::SoundOutput_Impl
friend class SoundOutput_Impl
Definition soundbuffer_session.h:173
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::SoundBuffer
friend class SoundBuffer
Definition soundbuffer_session.h:172
clan::SoundBuffer_Session::get_length
int get_length() const
Returns the total length (in samples) of the sound buffer played.
clan::SoundBuffer_Session::set_position_relative
bool set_position_relative(float new_pos)
Sets the relative position 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::get_frequency
int get_frequency() const
Returns the frequency of the session.
clan::SoundBuffer_Session::remove_filter
void remove_filter(SoundFilter &filter)
Remove the sound filter from the session. See SoundFilter for details.
clan::SoundBuffer_Session::set_position
bool set_position(int new_pos)
Sets the session position to 'new_pos'.
clan::SoundBuffer_Session::SoundBuffer_Session
SoundBuffer_Session()
Creates a null instance.
clan::SoundBuffer_Session::get_position
int get_position() const
Returns the current sample position of the playback.
clan::SoundBuffer_Session::is_null
bool is_null() const
Returns true if this object is invalid.
Definition soundbuffer_session.h:58
clan::SoundBuffer_Session::set_looping
void set_looping(bool loop)
Determines whether this session should loop.
clan::SoundBuffer_Session::throw_if_null
void throw_if_null() const
Throw an exception if this object is invalid.
clan::SoundBuffer_Session::add_filter
void add_filter(SoundFilter &filter)
Adds the sound filter to the session. See SoundFilter for details.
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::play
void play()
Starts playback of the session.
clan::SoundBuffer_Session::get_looping
bool get_looping() const
Returns whether this session loops.
clan::SoundBuffer_Session::is_playing
bool is_playing()
Returns true if the session is playing.
clan::SoundBuffer
Sample interface in ClanLib.
Definition soundbuffer.h:56
clan::SoundFilter
Sound Filter Class.
Definition soundfilter.h:44
clan::SoundOutput
SoundOutput interface in ClanLib.
Definition soundoutput.h:48
clan
Definition clanapp.h:36