SDL::Mixer::Channels -- SDL::Mixer channel functions and bindings
Mixer
my $ret = SDL::Mixer::Channels::allocate_channels( $number_of_channels );
Dynamically change the number of channels managed by the mixer. If decreasing the number of channels, the upper channels arestopped. This function returns the new number of allocated channels.
Example
use SDL::Mixer::Channels; printf("We got %d channels!\n", SDL::Mixer::Channels::allocate_channels( 8 ) );
my $prev_volume = SDL::Mixer::Channels::volume( $channel_number, $volume );
volume changes the volume of the channel specified in channel by the amount set in volume. The range of volume is from 0 to MIX_MAX_VOLUME which is 128. Passing -1 to channel will change the volume of all channels. If the specified volume is -1, it will just return the current volume.
volume
MIX_MAX_VOLUME
128
-1
Returns the previously set volume of the channel.
my $channel_number = SDL::Mixer::Channels::play_channel( $channel, $chunk, $loops );
play_channel will play the specified chunk over the specified channel. SDL_mixer will choose a channel for you if you pass -1 for channel.
play_channel
chunk
channel
The chunk will be looped loops times, the total number of times played will be loops+1. Passing -1 will loop the chunk infinitely.
loops
loops+1
Returns the channel the chunk will be played on, or -1 on error.
Example:
use SDL::Mixer; use SDL::Mixer::Channels; use SDL::Mixer::Samples; SDL::init(SDL_INIT_AUDIO); SDL::Mixer::open_audio( 44100, SDL::Constants::AUDIO_S16, 2, 4096 ); my $chunk = SDL::Mixer::Samples::load_WAV('sample.wav'); SDL::Mixer::Channels::play_channel( -1, $chunk, -1 ); SDL::delay(1000); SDL::Mixer::close_audio();
my $channel = SDL::Mixer::Channels::play_channel_timed( $channel, $chunk, $loops, $ticks );
Same as play_channel but you can specify the time it will play by $ticks.
$ticks
my $channel = SDL::Mixer::Channels::fade_in_channel( $channel, $chunk, $loops, $ms );
Same as play_channel but you can specify the fade-in time by $ms.
$ms
my $channel = SDL::Mixer::Channels::fade_in_channel_timed( $channel, $chunk, $loops, $ms, $ticks );
Same as fade_in_channel but you can specify the time how long the chunk will be played by $ticks.
SDL::Mixer::Channels::pause( $channel );
Pauses the given channel or all by passing -1.
SDL::Mixer::Channels::resume( $channel );
Resumes the given channel or all by passing -1.
SDL::Mixer::Channels::halt_channel( $channel );
Stops the given channel or all by passing -1.
my $channels = SDL::Mixer::Channels::expire_channel( $channel, $ticks );
Stops the given channel (or -1 for all) after the time specified by $ticks (in milliseconds).
Returns the number of affected channels.
my $fading_channels = SDL::Mixer::Channels::fade_out_channel( $which, $ms );
fade_out_channel fades out a channel specified in which with a duration specified in ms in milliseconds.
fade_out_channel
which
ms
Returns the the number of channels that will be faded out.
SDL::Mixer::Channels::channel_finished( $callback );
Add your own callback when a channel has finished playing. NULL to disable callback. The callback may be called from the mixer's audio callback or it could be called as a result of halt_channel, etc. do not call lock_audio from this callback; you will either be inside the audio callback, or SDL_mixer will explicitly lock the audio before calling your callback.
NULL
lock_audio
Example 1:
my $callback = sub{ printf("[channel_finished] callback called for channel %d\n", shift); }; SDL::Mixer::Channels::channel_finished( $callback );
Example 2:
sub callback { ... } SDL::Mixer::Channels::channel_finished( \&callback );
my $playing = SDL::Mixer::Channels::playing( $channel );
Returns 1 if the given channel is playing sound, otherwise 0. It does'nt check if the channel is paused.
1
0
Note: If you pass -1 you will get the number of playing channels.
my $paused = SDL::Mixer::Channels::paused( $channel );
Returns 1 if the given channel is paused, otherwise 0.
Note: If you pass -1 you will get the number of paused channels.
my $fading_channel = SDL::Mixer::Channels::fading_channel( $channel );
Returns one of the following for the given channel:
MIX_NO_FADING
MIX_FADING_OUT
MIX_FADING_IN
Note: Never pass -1 to this function!
my $chunk = SDL::Mixer::Channels::get_chunk( $channel );
get_chunk gets the most recent sample chunk played on channel. This chunk may be currently playing, or just the last used.
get_chunk
See "AUTHORS" in SDL.
To install SDL, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SDL
CPAN shell
perl -MCPAN -e shell install SDL
For more information on module installation, please visit the detailed CPAN module installation guide.