71f387b6b7e2b36b3c3ed94ddd693272b2eb04e3
[sdlgit/SDL-Site.git] / pages / SDL-Mixer.html-inc
1 <div class="pod">
2 <!-- INDEX START -->
3 <h3 id="TOP">Index</h3>
4
5 <ul><li><a href="#NAME">NAME</a></li>
6 <li><a href="#CATEGORY">CATEGORY</a></li>
7 <li><a href="#CONSTANTS">CONSTANTS</a></li>
8 <li><a href="#DESCRIPTION">DESCRIPTION</a></li>
9 <li><a href="#METHODS">METHODS</a>
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>
16 </ul>
17 </li>
18 <li><a href="#AUTHORS">AUTHORS </a></li>
19 <li><a href="#SEE_ALSO">SEE ALSO</a>
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">
26 <p>SDL::Mixer - Sound and music functions</p>
27
28 </div>
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>
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 exported by default. You can avoid this by doing:</p>
37 <pre> use SDL::Mixer ();
38
39 </pre>
40 <p>and 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>
81 <h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
82 <div id="DESCRIPTION_CONTENT">
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 
84 in and out.</p>
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>
91 <h2 id="init">init</h2>
92 <div id="init_CONTENT">
93 <pre> my $init_flags = SDL::Mixer::init( $flags );
94
95 </pre>
96 <p>Loads dynamic libraries and prepares them for use. Flags should be one or more flags from init flags OR'd together.
97 It 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>
118
119 </div>
120 <h2 id="quit">quit</h2>
121 <div id="quit_CONTENT">
122 <pre> SDL::Mixer::quit();
123
124 </pre>
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>
127
128 </div>
129 <h2 id="linked_version">linked_version</h2>
130 <div id="linked_version_CONTENT">
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> 
135 are 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
143
144 </pre>
145
146 </div>
147 <h2 id="open_audio">open_audio</h2>
148 <div id="open_audio_CONTENT">
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 
153 your 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 
157 error 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 
158 of 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 
159 desired 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 
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 
162 components to use SDL_mixer without necessitating a great deal of inter-component awareness. Be warned however that in such a situation, the 
163 latest 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;
169
170 </pre>
171
172 </div>
173 <h2 id="close_audio">close_audio</h2>
174 <div id="close_audio_CONTENT">
175 <pre> SDL::Mixer::close_audio();
176
177 </pre>
178 <p>Close the mixer and halting all playing audio. This function does not return anything.</p>
179
180 </div>
181 <h2 id="query_spec">query_spec</h2>
182 <div id="query_spec_CONTENT">
183 <pre> my @query_spec = @{ SDL::Mixer::query_spec() };
184
185 </pre>
186 <p>Find out what the actual audio device parameters are.
187 This 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);
194
195 </pre>
196
197 </div>
198 <h1 id="AUTHORS">AUTHORS </h1><p><a href="#TOP" class="toplink">Top</a></p>
199 <div id="AUTHORS_CONTENT">
200 <p>Tobias Leich [FROGGS]</p>
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">
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>
206
207 </div>
208 </div>