NAME

SDL::Mixer - Sound and music functions

CATEGORY

Mixer

CONSTANTS

The constants are exported by default. You can avoid this by doing:

use SDL::Mixer ();

and access them directly:

SDL::Mixer::MIX_DEFAULT_FREQUENCY;

or by choosing the export tags below:

Export tag: ':init'

MIX_INIT_FLAC
MIX_INIT_MOD
MIX_INIT_MP3
MIX_INIT_OGG

Export tag: ':defaults'

MIX_CHANNELS
MIX_DEFAULT_FORMAT
MIX_DEFAULT_FREQUENCY
MIX_DEFAULT_CHANNELS
MIX_MAX_VOLUME
MIX_CHANNEL_POST

Export tag: ':fading'

MIX_NO_FADING
MIX_FADING_OUT
MIX_FADING_IN

Export tag: ':type'

MUS_NONE
MUS_CMD
MUS_WAV
MUS_MOD
MUS_MID
MUS_OGG
MUS_MP3
MUS_MP3_MAD
MUS_MP3_FLAC

Export tag: ':format'

AUDIO_U8
AUDIO_S8
AUDIO_U16LSB
AUDIO_S16LSB
AUDIO_U16MSB
AUDIO_S16MSB
AUDIO_U16
AUDIO_S16 
AUDIO_U16SYS
AUDIO_S16SYS

Export tag: ':status'

SDL_AUDIO_STOPPED
SDL_AUDIO_PLAYING
SDL_AUDIO_PAUSED

DESCRIPTION

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 in and out.

METHODS

init

my $init_flags = SDL::Mixer::init( $flags );

Loads dynamic libraries and prepares them for use. Flags should be one or more flags from init flags OR'd together. It returns the flags successfully initialized, or 0 on failure.

Example:

use SDL::Mixer;

my $init_flags = SDL::Mixer::init( MIX_INIT_MP3 | MIX_INIT_MOD | MIX_INIT_FLAC | MIX_INIT_OGG );

print("We have MP3 support!\n")  if $init_flags & MIX_INIT_MP3;
print("We have MOD support!\n")  if $init_flags & MIX_INIT_MOD;
print("We have FLAC support!\n") if $init_flags & MIX_INIT_FLAC;
print("We have OGG support!\n")  if $init_flags & MIX_INIT_OGG;

Flags:

  • MIX_INIT_MP3

  • MIX_INIT_MOD

  • MIX_INIT_FLAC

  • MIX_INIT_OGG

Note: Only available for SDL_mixer >= 1.2.10

quit

SDL::Mixer::quit();

This function unloads the liraries previously loaded with init().

Note: Only available for SDL_mixer >= 1.2.10

linked_version

$version = SDL::Mixer::linked_version();

linked_version gives you the major-, minor-, and patchlevel for SDL_mixer. This way you can check if e.g. init() and quit() are available.

Example:

use SDL::Mixer;
use SDL::Version;

my $version = SDL::Mixer::linked_version();

printf("%d.%d.%d\n", $version->major, $version->minor, $version->patch); # prints "1.2.8" for me

open_audio

my $audio_opened = SDL::Mixer::open_audio( $frequency, $format, $channels, $chunksize );

open_audio will initialize SDL_mixer if it is not yet initialized, see note. SDL_mixer may not be able to provide the exact specifications your provided, however it will automatically translate between the expected format and the real one. You can retrieve the real format using query_spec.

Returns 0 on success, -1 on error.

Note: You must not use AUDIO_S16, AUDIO_U16, AUDIO_S16LSB, or AUDIO_U16LSB. They are not portable, and SDL will not return an error code when they fail. The result will be a horrible staticy noise. You can usually use AUDIO_S16SYS, though not always. Future versions 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 desired audio type is not supported.

Note: When already initialized, this function will not re-initialize SDL_mixer, nor fail. It will merely increment the number of times SDL::Mixer::close_audio must be called to actually get it to uninitialize. This serves as a very simplistic method for multiple application components to use SDL_mixer without necessitating a great deal of inter-component awareness. Be warned however that in such a situation, the latest components to initialize SDL_mixer will probably not get the SDL_mixer settings they're expecting.

Example:

use SDL;
use SDL::Mixer;

printf("Error initializing SDL_mixer: %s\n", SDL::get_error()) unless SDL::Mixer::open_audio(44100, AUDIO_S16, 2, 1024) == 0;

close_audio

SDL::Mixer::close_audio();

Close the mixer and halting all playing audio. This function does not return anything.

query_spec

my @query_spec = @{ SDL::Mixer::query_spec() };

Find out what the actual audio device parameters are. This function returns 1 as first array element (status) if the audio has been opened, 0 otherwise.

Example:

use SDL::Mixer;

my ($status, $freq, $format, $channels) = @{ SDL::Mixer::query_spec() };

printf("%s, %s, %s, %s\n", $status, $freq, $format, $channels);

AUTHORS

Tobias Leich [FROGGS]

SEE ALSO

perl, SDL::Mixer::Channels, SDL::Mixer::Effects, SDL::Mixer::Groups, SDL::Mixer::Music.