/* call-seq:
* open_audio( frequency=nil, format=nil, channels=nil, buffer=nil)
*
* **NOTE:** This method is DEPRECATED and will be removed in
* Rubygame 3.0. Please use the Rubygame.open_audio instead.
*
* Initializes the audio device. You must call this before using the other
* mixer functions. See also #close_audio().
*
* Returns nil. May raise an SDLError if initialization fails.
*
* This method takes these arguments:
*
* frequency:: output sample rate in audio samples per second (Hz).
* Affects the quality of the sound output, at the expense of
* CPU usage. If nil, the default (22050) is used. 22050 is
* recommended for most games. For reference, 44100 is CD quality.
* The larger the value, the more processing required.
*
* format:: output sample format. If nil, the default recommended system
* format is used. It's _highly_ recommended you leave this nil!
*
* But if you're feeling reckless, you can use one of these
* constants located in the Rubygame::Mixer module:
*
* AUDIO_U16SYS:: unsigned 16-bit samples.
* AUDIO_S16SYS:: signed 16-bit samples.
* AUDIO_U8:: unsigned 8-bit samples.
* AUDIO_S8:: signed 8-bit samples.
*
* channels:: output sound channels. Use 2 for stereo, 1 for mono.
* If nil, the default (2) is used.
* This option is not related to mixing channels.
*
* buffer:: size of the sound buffer, in bytes. If nil, the default (1024)
* is used. Larger values have more delay before playing a
* sound, but require less CPU usage (and have less skipping
* on slow systems).
*
*/
VALUE rbgm_mixer_openaudio(int argc, VALUE *argv, VALUE module)
{
/* This feature will be removed in Rubygame 3.0. */
rg_deprecated("Rubygame::Mixer", "3.0");
VALUE vfreq, vformat, vchannels, vbuffer;
int freq = MIX_DEFAULT_FREQUENCY;
Uint16 format = MIX_DEFAULT_FORMAT;
int channels = 2;
int buffer = 1024;
rb_scan_args(argc, argv, "04", &vfreq, &vformat, &vchannels, &vbuffer);
if( RTEST(vfreq) )
{
freq = NUM2INT(vfreq);
}
if( RTEST(vformat) )
{
format = NUM2UINT(vformat);
}
if( RTEST(vchannels) )
{
channels = NUM2INT(vchannels);
}
if( RTEST(vbuffer) )
{
buffer = NUM2INT(vbuffer);
}
if ( Mix_OpenAudio(freq, format, channels, buffer) < 0 )
{
rb_raise(eSDLError, "Error initializing SDL_mixer: %s", Mix_GetError());
}
return Qnil;
}