1 <HTML 2 ><HEAD 3 ><TITLE 4 >Audio Examples</TITLE 5 ><META 6 NAME="GENERATOR" 7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ 8 "><LINK 9 REL="HOME" 10 TITLE="SDL Library Documentation" 11 HREF="index.html"><LINK 12 REL="UP" 13 TITLE="Examples" 14 HREF="guideexamples.html"><LINK 15 REL="PREVIOUS" 16 TITLE="Event Examples" 17 HREF="guideeventexamples.html"><LINK 18 REL="NEXT" 19 TITLE="CDROM Examples" 20 HREF="guidecdromexamples.html"></HEAD 21 ><BODY 22 CLASS="SECT1" 23 BGCOLOR="#FFF8DC" 24 TEXT="#000000" 25 LINK="#0000ee" 26 VLINK="#551a8b" 27 ALINK="#ff0000" 28 ><DIV 29 CLASS="NAVHEADER" 30 ><TABLE 31 SUMMARY="Header navigation table" 32 WIDTH="100%" 33 BORDER="0" 34 CELLPADDING="0" 35 CELLSPACING="0" 36 ><TR 37 ><TH 38 COLSPAN="3" 39 ALIGN="center" 40 >SDL Library Documentation</TH 41 ></TR 42 ><TR 43 ><TD 44 WIDTH="10%" 45 ALIGN="left" 46 VALIGN="bottom" 47 ><A 48 HREF="guideeventexamples.html" 49 ACCESSKEY="P" 50 >Prev</A 51 ></TD 52 ><TD 53 WIDTH="80%" 54 ALIGN="center" 55 VALIGN="bottom" 56 >Chapter 4. Examples</TD 57 ><TD 58 WIDTH="10%" 59 ALIGN="right" 60 VALIGN="bottom" 61 ><A 62 HREF="guidecdromexamples.html" 63 ACCESSKEY="N" 64 >Next</A 65 ></TD 66 ></TR 67 ></TABLE 68 ><HR 69 ALIGN="LEFT" 70 WIDTH="100%"></DIV 71 ><DIV 72 CLASS="SECT1" 73 ><H1 74 CLASS="SECT1" 75 ><A 76 NAME="GUIDEAUDIOEXAMPLES" 77 ></A 78 >Audio Examples</H1 79 ><P 80 ></P 81 ><DIV 82 CLASS="SECT2" 83 ><H2 84 CLASS="SECT2" 85 ><A 86 NAME="AEN382" 87 ></A 88 >Opening the audio device</H2 89 ><P 90 ><PRE 91 CLASS="PROGRAMLISTING" 92 > SDL_AudioSpec wanted; 93 extern void fill_audio(void *udata, Uint8 *stream, int len); 94 95 /* Set the audio format */ 96 wanted.freq = 22050; 97 wanted.format = AUDIO_S16; 98 wanted.channels = 2; /* 1 = mono, 2 = stereo */ 99 wanted.samples = 1024; /* Good low-latency value for callback */ 100 wanted.callback = fill_audio; 101 wanted.userdata = NULL; 102 103 /* Open the audio device, forcing the desired format */ 104 if ( SDL_OpenAudio(&wanted, NULL) < 0 ) { 105 fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); 106 return(-1); 107 } 108 return(0);</PRE 109 ></P 110 ></DIV 111 ><DIV 112 CLASS="SECT2" 113 ><H2 114 CLASS="SECT2" 115 ><A 116 NAME="AEN386" 117 ></A 118 >Playing audio</H2 119 ><P 120 ><PRE 121 CLASS="PROGRAMLISTING" 122 > static Uint8 *audio_chunk; 123 static Uint32 audio_len; 124 static Uint8 *audio_pos; 125 126 /* The audio function callback takes the following parameters: 127 stream: A pointer to the audio buffer to be filled 128 len: The length (in bytes) of the audio buffer 129 */ 130 void fill_audio(void *udata, Uint8 *stream, int len) 131 { 132 /* Only play if we have data left */ 133 if ( audio_len == 0 ) 134 return; 135 136 /* Mix as much data as possible */ 137 len = ( len > audio_len ? audio_len : len ); 138 SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME); 139 audio_pos += len; 140 audio_len -= len; 141 } 142 143 /* Load the audio data ... */ 144 145 ;;;;; 146 147 audio_pos = audio_chunk; 148 149 /* Let the callback function play the audio chunk */ 150 SDL_PauseAudio(0); 151 152 /* Do some processing */ 153 154 ;;;;; 155 156 /* Wait for sound to complete */ 157 while ( audio_len > 0 ) { 158 SDL_Delay(100); /* Sleep 1/10 second */ 159 } 160 SDL_CloseAudio();</PRE 161 ></P 162 ></DIV 163 ></DIV 164 ><DIV 165 CLASS="NAVFOOTER" 166 ><HR 167 ALIGN="LEFT" 168 WIDTH="100%"><TABLE 169 SUMMARY="Footer navigation table" 170 WIDTH="100%" 171 BORDER="0" 172 CELLPADDING="0" 173 CELLSPACING="0" 174 ><TR 175 ><TD 176 WIDTH="33%" 177 ALIGN="left" 178 VALIGN="top" 179 ><A 180 HREF="guideeventexamples.html" 181 ACCESSKEY="P" 182 >Prev</A 183 ></TD 184 ><TD 185 WIDTH="34%" 186 ALIGN="center" 187 VALIGN="top" 188 ><A 189 HREF="index.html" 190 ACCESSKEY="H" 191 >Home</A 192 ></TD 193 ><TD 194 WIDTH="33%" 195 ALIGN="right" 196 VALIGN="top" 197 ><A 198 HREF="guidecdromexamples.html" 199 ACCESSKEY="N" 200 >Next</A 201 ></TD 202 ></TR 203 ><TR 204 ><TD 205 WIDTH="33%" 206 ALIGN="left" 207 VALIGN="top" 208 >Event Examples</TD 209 ><TD 210 WIDTH="34%" 211 ALIGN="center" 212 VALIGN="top" 213 ><A 214 HREF="guideexamples.html" 215 ACCESSKEY="U" 216 >Up</A 217 ></TD 218 ><TD 219 WIDTH="33%" 220 ALIGN="right" 221 VALIGN="top" 222 >CDROM Examples</TD 223 ></TR 224 ></TABLE 225 ></DIV 226 ></BODY 227 ></HTML 228 >