constants for mixer
[sdlgit/SDL-Site.git] / pages / SDL-Mixer.html-inc
CommitLineData
162a0989 1<div class="pod">
2<!-- INDEX START -->
3<h3 id="TOP">Index</h3>
4
5<ul><li><a href="#NAME">NAME</a></li>
bfdd9c2e 6<li><a href="#CATEGORY">CATEGORY</a></li>
793cad59 7<li><a href="#CONSTANTS">CONSTANTS</a></li>
162a0989 8<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
9<li><a href="#METHODS">METHODS</a>
b5d537cc 10<ul><li><a href="#init">init</a></li>
11<li><a href="#quit">quit</a></li>
12<li><a href="#linked_version">linked_version</a></li>
13<li><a href="#open_audio">open_audio</a></li>
14<li><a href="#close_audio">close_audio</a></li>
15<li><a href="#query_spec">query_spec</a></li>
162a0989 16</ul>
17</li>
449a007b 18<li><a href="#AUTHORS">AUTHORS </a></li>
19<li><a href="#SEE_ALSO">SEE ALSO</a>
162a0989 20</li>
21</ul><hr />
22<!-- INDEX END -->
23
24<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
25<div id="NAME_CONTENT">
b5d537cc 26<p>SDL::Mixer - Sound and music functions</p>
162a0989 27
28</div>
bfdd9c2e 29<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
30<div id="CATEGORY_CONTENT">
31<p>Mixer</p>
32
33</div>
793cad59 34<h1 id="CONSTANTS">CONSTANTS</h1><p><a href="#TOP" class="toplink">Top</a></p>
35<div id="CONSTANTS_CONTENT">
36<p>The constants are not exported by default. You can export them into your namespace by doing:</p>
37<pre> use SDL::Mixer ':all';
38
39</pre>
40<p>or access them directly:</p>
41<pre> SDL::Mixer::MIX_DEFAULT_FREQUENCY;
42
43</pre>
44<p>or by choosing the export tags below:</p>
45<p>Export tag: ':init'</p>
46<pre> MIX_INIT_FLAC
47 MIX_INIT_MOD
48 MIX_INIT_MP3
49 MIX_INIT_OGG
50
51</pre>
52<p>Export tag: ':default'</p>
53<pre> MIX_CHANNELS
54 MIX_DEFAULT_FORMAT
55 MIX_DEFAULT_FREQUENCY
56 MIX_DEFAULT_CHANNELS
57 MIX_MAX_VOLUME
58 MIX_CHANNEL_POST
59
60</pre>
61<p>Export tag: ':fading'</p>
62<pre> MIX_NO_FADING
63 MIX_FADING_OUT
64 MIX_FADING_IN
65
66</pre>
67<p>Export tag: ':type'</p>
68<pre> MUS_NONE
69 MUS_CMD
70 MUS_WAV
71 MUS_MOD
72 MUS_MID
73 MUS_OGG
74 MUS_MP3
75 MUS_MP3_MAD
76 MUS_MP3_FLAC
77
78</pre>
79
80</div>
162a0989 81<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
82<div id="DESCRIPTION_CONTENT">
b5d537cc 83<p>SDL::Mixer allows you to enable sound, alter music volume settings, and lets you play, pause and resume, as well as fading the sound and music
84in and out.</p>
162a0989 85
86</div>
87<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
88<div id="METHODS_CONTENT">
89
90</div>
b5d537cc 91<h2 id="init">init</h2>
92<div id="init_CONTENT">
3bc8c797 93<pre> my $init_flags = SDL::Mixer::init( $flags );
162a0989 94
95</pre>
3bc8c797 96<p>Loads dynamic libraries and prepares them for use. Flags should be one or more flags from init flags OR'd together.
97It returns the flags successfully initialized, or 0 on failure.</p>
98<p>Example:</p>
99<pre> use SDL::Mixer;
100
101 my $init_flags = SDL::Mixer::init( MIX_INIT_MP3 | MIX_INIT_MOD | MIX_INIT_FLAC | MIX_INIT_OGG );
102
103 print(&quot;We have MP3 support!\n&quot;) if $init_flags &amp; MIX_INIT_MP3;
104 print(&quot;We have MOD support!\n&quot;) if $init_flags &amp; MIX_INIT_MOD;
105 print(&quot;We have FLAC support!\n&quot;) if $init_flags &amp; MIX_INIT_FLAC;
106 print(&quot;We have OGG support!\n&quot;) if $init_flags &amp; MIX_INIT_OGG;
107
108</pre>
109<p>Flags:</p>
110<ul>
111 <li>MIX_INIT_MP3 </li>
112 <li>MIX_INIT_MOD </li>
113 <li>MIX_INIT_FLAC </li>
114 <li>MIX_INIT_OGG</li>
115</ul>
116
117<p><strong>Note</strong>: Only available for SDL_mixer &gt;= 1.2.10</p>
162a0989 118
119</div>
b5d537cc 120<h2 id="quit">quit</h2>
121<div id="quit_CONTENT">
3bc8c797 122<pre> SDL::Mixer::quit();
162a0989 123
124</pre>
3bc8c797 125<p>This function unloads the liraries previously loaded with <a href="#init">init()</a>.</p>
126<p><strong>Note</strong>: Only available for SDL_mixer &gt;= 1.2.10</p>
162a0989 127
128</div>
b5d537cc 129<h2 id="linked_version">linked_version</h2>
130<div id="linked_version_CONTENT">
3bc8c797 131<pre> $version = SDL::Mixer::linked_version();
132
133</pre>
134<p><code>linked_version</code> gives you the major-, minor-, and patchlevel for SDL_mixer. This way you can check if e.g. <a href="#init">init()</a> and <a href="#quit">quit()</a>
135are available.</p>
136<p>Example:</p>
137<pre> use SDL::Mixer;
138 use SDL::Version;
139
140 my $version = SDL::Mixer::linked_version();
141
142 printf(&quot;%d.%d.%d\n&quot;, $version-&gt;major, $version-&gt;minor, $version-&gt;patch); # prints &quot;1.2.8&quot; for me
162a0989 143
144</pre>
162a0989 145
146</div>
b5d537cc 147<h2 id="open_audio">open_audio</h2>
148<div id="open_audio_CONTENT">
3bc8c797 149<pre> my $audio_opened = SDL::Mixer::open_audio( $frequency, $format, $channels, $chunksize );
150
151</pre>
152<p><code>open_audio</code> will initialize SDL_mixer if it is not yet initialized, see note. SDL_mixer may not be able to provide the exact specifications
153your provided, however it will automatically translate between the expected format and the real one. You can retrieve the real format using
154<a href="http://search.cpan.org/perldoc?query_spec">query_spec</a>. </p>
155<p>Returns 0 on success, -1 on error.</p>
156<p><strong>Note</strong>: You must not use <code>AUDIO_S16</code>, <code>AUDIO_U16</code>, <code>AUDIO_S16LSB</code>, or <code>AUDIO_U16LSB.</code> They are not portable, and SDL will not return an
157error code when they fail. The result will be a horrible staticy noise. You can usually use <code>AUDIO_S16SYS</code>, though not always. Future versions
158of SDL should take this parameter only as a hint, then read back the value that the OS (for example, OSS or ALSA) has chosen to use in case the
159desired audio type is not supported. </p>
160<p><strong>Note</strong>: When already initialized, this function will not re-initialize SDL_mixer, nor fail. It will merely increment the number of times
92e293d6 161<a href="/SDL-Mixer.html#close_audio">SDL::Mixer::close_audio</a> must be called to actually get it to uninitialize. This serves as a very simplistic method for multiple application
3bc8c797 162components to use SDL_mixer without necessitating a great deal of inter-component awareness. Be warned however that in such a situation, the
163latest components to initialize SDL_mixer will probably not get the SDL_mixer settings they're expecting. </p>
164<p>Example:</p>
165<pre> use SDL;
166 use SDL::Mixer;
167
168 printf(&quot;Error initializing SDL_mixer: %s\n&quot;, SDL::get_error()) unless SDL::Mixer::open_audio(44100, AUDIO_S16, 2, 1024) == 0;
162a0989 169
b5d537cc 170</pre>
162a0989 171
172</div>
b5d537cc 173<h2 id="close_audio">close_audio</h2>
174<div id="close_audio_CONTENT">
3bc8c797 175<pre> SDL::Mixer::close_audio();
162a0989 176
b5d537cc 177</pre>
3bc8c797 178<p>Close the mixer and halting all playing audio. This function does not return anything.</p>
162a0989 179
180</div>
b5d537cc 181<h2 id="query_spec">query_spec</h2>
182<div id="query_spec_CONTENT">
3bc8c797 183<pre> my @query_spec = @{ SDL::Mixer::query_spec() };
184
185</pre>
186<p>Find out what the actual audio device parameters are.
187This function returns 1 as first array element (status) if the audio has been opened, 0 otherwise.</p>
188<p>Example:</p>
189<pre> use SDL::Mixer;
190
191 my ($status, $freq, $format, $channels) = @{ SDL::Mixer::query_spec() };
192
193 printf(&quot;%s, %s, %s, %s\n&quot;, $status, $freq, $format, $channels);
162a0989 194
b5d537cc 195</pre>
162a0989 196
197</div>
449a007b 198<h1 id="AUTHORS">AUTHORS </h1><p><a href="#TOP" class="toplink">Top</a></p>
199<div id="AUTHORS_CONTENT">
b5d537cc 200<p>Tobias Leich [FROGGS]</p>
449a007b 201
202</div>
203<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
204<div id="SEE_ALSO_CONTENT">
55bbf7a2 205<p><a href="http://search.cpan.org/perldoc?perl">perl</a>, <a href="SDL-Mixer-Channels.html">SDL::Mixer::Channels</a>, <a href="SDL-Mixer-Effects.html">SDL::Mixer::Effects</a>, <a href="SDL-Mixer-Groups.html">SDL::Mixer::Groups</a>, <a href="SDL-Mixer-Music.html">SDL::Mixer::Music</a>.</p>
449a007b 206
207</div>
162a0989 208</div>