Module: SDL2::Mixer::Channels

Defined in:
mixer.c,
mixer.c

Overview

This module plays Chunk objects in parallel.

Each virtual sound output device is called channel, and the number of channels determines the f

Defined Under Namespace

Classes: Group

Class Method Summary (collapse)

Class Method Details

+ (Integer) allocate(num_channels)

Set the number of channels being mixed.

Parameters:

  • num_channels (Integer)

    Number of channels prepared for mixing.

Returns:

  • (Integer)

    the number of prepared channels.



228
229
230
231
# File 'mixer.c', line 228

static VALUE Channels_s_allocate(VALUE self, VALUE num_channels)
{
    return INT2NUM(Mix_AllocateChannels(NUM2INT(num_channels)));
}

+ (nil) expire(channel, ticks)

Halt playing of a specified channel after ticks milliseconds.

Parameters:

  • channel (Integer)

    the channel to be halted, or -1 for all channels.

  • ticks (Integer)

    milliseconds untils the channel halts playback.

Returns:

  • (nil)

See Also:



423
424
425
426
427
428
# File 'mixer.c', line 423

static VALUE Channels_s_expire(VALUE self, VALUE channel, VALUE ticks)
{
    check_channel(channel, 1);
    Mix_ExpireChannel(NUM2INT(channel), NUM2INT(ticks));
    return Qnil;
}

+ (Integer) fade_in(channel, chunk, loops, ms, ticks = -1)

Play a SDL2::Mixer::Chunk on channel with fading in.

Parameters:

  • channel (Integer)

    the channel to play, or -1 for the first free unreserved channel

  • chunk (SDL2::Mixer::Chunk)

    the chunk to play

  • loops (Integer)

    the number of loops, or -1 for infite loops. passing 1 plays the sample twice (1 loop).

  • ms (Integer)

    milliseconds of time of fade-in effect.

  • ticks (Integer) (defaults to: -1)

    milliseconds limit to play, at most. If the chunk is long enough and loops is large enough, the play will stop after ticks milliseconds. Otherwise, the play will stop when the loop ends. -1 means infinity.

Returns:

  • (Integer)

    the channel that plays the chunk.

Raises:

  • (SDL2::Error)

    raised on a playing error. For example, channel is out of the allocated channels, or there is no free channels when channel is -1.

See Also:



343
344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'mixer.c', line 343

static VALUE Channels_s_fade_in(int argc, VALUE* argv, VALUE self)
{
    VALUE channel, chunk, loops, ms, ticks;
    int ch;
    rb_scan_args(argc, argv, "41", &channel, &chunk, &loops, &ms, &ticks);
    if (ticks == Qnil)
        ticks = INT2FIX(-1);
    check_channel(channel, 1);
    ch = Mix_FadeInChannelTimed(NUM2INT(channel), Get_Mix_Chunk(chunk),
                                NUM2INT(loops), NUM2INT(ms), NUM2INT(ticks));
    HANDLE_MIX_ERROR(ch);
    protect_playing_chunk_from_gc(ch, chunk);
    return INT2FIX(ch);
}

+ (nil) fade_out(channel, ms)

Halt playing of a specified channel with fade-out effect.

Parameters:

  • channel (Integer)

    the channel to be halted, or -1 for all channels.

  • ms (Integer)

    milliseconds of fade-out effect

Returns:

  • (nil)

See Also:



443
444
445
446
447
448
# File 'mixer.c', line 443

static VALUE Channels_s_fade_out(VALUE self, VALUE channel, VALUE ms)
{
    check_channel(channel, 1);
    Mix_FadeOutChannel(NUM2INT(channel), NUM2INT(ms));
    return Qnil;
}

+ (Integer) fading(channel)

Return the fading state of a specified channel.

The return value is one of the following:

Parameters:

  • channel (Integer)

    channel to test

Returns:

  • (Integer)

See Also:



501
502
503
504
505
# File 'mixer.c', line 501

static VALUE Channels_s_fading(VALUE self, VALUE which)
{
    check_channel(which, 0);
    return INT2FIX(Mix_FadingChannel(NUM2INT(which)));
}

+ (nil) halt(channel)

Halt playing of a specified channel.

Parameters:

  • channel (Integer)

    the channel to be halted, or -1 for all channels.

Returns:

  • (nil)

See Also:



404
405
406
407
408
409
# File 'mixer.c', line 404

static VALUE Channels_s_halt(VALUE self, VALUE channel)
{
    check_channel(channel, 1);
    Mix_HaltChannel(NUM2INT(channel));
    return Qnil;
}

+ (nil) pause(channel)

Pause a specified channel.

Parameters:

  • channel (Integer)

    the channel to pause, or -1 for all channels.

Returns:

  • (nil)

See Also:



368
369
370
371
372
373
# File 'mixer.c', line 368

static VALUE Channels_s_pause(VALUE self, VALUE channel)
{
    check_channel(channel, 1);
    Mix_Pause(NUM2INT(channel));
    return Qnil;
}

+ (Boolean) pause?(channel)

Note:

This method returns true if a paused channel is halted by halt, or any other halting methods.

Return true if a specified channel is paused.

Parameters:

  • channel (Integer)

    channel to test

See Also:

Returns:

  • (Boolean)


476
477
478
479
480
# File 'mixer.c', line 476

static VALUE Channels_s_pause_p(VALUE self, VALUE channel)
{
    check_channel(channel, 0);
    return INT2BOOL(Mix_Paused(NUM2INT(channel)));
}

+ (Integer) play(channel, chunk, loops, ticks = -1)

Play a SDL2::Mixer::Chunk on channel.

Parameters:

  • channel (Integer)

    the channel to play, or -1 for the first free unreserved channel

  • chunk (SDL2::Mixer::Chunk)

    the chunk to play

  • loops (Integer)

    the number of loops, or -1 for infite loops. passing 1 plays the sample twice (1 loop).

  • ticks (Integer) (defaults to: -1)

    milliseconds limit to play, at most. If the chunk is long enough and loops is large enough, the play will stop after ticks milliseconds. Otherwise, the play will stop when the loop ends. -1 means infinity.

Returns:

  • (Integer)

    the channel that plays the chunk.

Raises:

  • (SDL2::Error)

    raised on a playing error. For example, channel is out of the allocated channels, or there is no free channels when channel is -1.

See Also:



304
305
306
307
308
309
310
311
312
313
314
315
316
317
# File 'mixer.c', line 304

static VALUE Channels_s_play(int argc, VALUE* argv, VALUE self)
{
    VALUE channel, chunk, loops, ticks;
    int ch;
    rb_scan_args(argc, argv, "31", &channel, &chunk, &loops, &ticks);
    if (ticks == Qnil)
        ticks = INT2FIX(-1);
    check_channel(channel, 1);
    ch = Mix_PlayChannelTimed(NUM2INT(channel), Get_Mix_Chunk(chunk),
                              NUM2INT(loops), NUM2INT(ticks));
    HANDLE_MIX_ERROR(ch);
    protect_playing_chunk_from_gc(ch, chunk);
    return INT2FIX(ch);
}

+ (Boolean) play?(channel)

Return true if a specified channel is playing.

Parameters:

  • channel (Integer)

    channel to test

See Also:

Returns:

  • (Boolean)


458
459
460
461
462
# File 'mixer.c', line 458

static VALUE Channels_s_play_p(VALUE self, VALUE channel)
{
    check_channel(channel, 0);
    return INT2BOOL(Mix_Playing(NUM2INT(channel)));
}

+ (SDL2::Mixer::Chunk?) playing_chunk(channel)

Get the SDL2::Mixer::Chunk object most recently playing on channel.

If channel is out of allocated channels, or no chunk is played yet on channel, this method returns nil.

Parameters:

  • channel (Integer)

    the channel to get the chunk object

Returns:



517
518
519
520
521
# File 'mixer.c', line 517

static VALUE Channels_s_playing_chunk(VALUE self, VALUE channel)
{
    check_channel(channel, 0);
    return rb_ary_entry(playing_chunks, NUM2INT(channel));
}

+ (Integer) reserve(num)

Parameters:

  • num (Integer)

Returns:

  • (Integer)


238
239
240
241
# File 'mixer.c', line 238

static VALUE Channels_s_reserve(VALUE self, VALUE num)
{
    return INT2NUM(Mix_ReserveChannels(NUM2INT(num)));
}

+ (nil) resume(channel)

Note:

This method has no effect to unpaused channels.

Resume a specified channel that already pauses.

Parameters:

  • channel (Integer)

    the channel to be resumed, or -1 for all channels.

Returns:

  • (nil)

See Also:



386
387
388
389
390
391
# File 'mixer.c', line 386

static VALUE Channels_s_resume(VALUE self, VALUE channel)
{
    check_channel(channel, 1);
    Mix_Resume(NUM2INT(channel));
    return Qnil;
}

+ (void) set_volume(channel, volume)

This method returns an undefined value.

Set the volume of specified channel.

The volume should be from 0 to MAX_VOLUME(128). If the specified channel is -1, set volume for all channels.

Parameters:

  • channel (Integer)

    the channel to set volume for.

  • volume (Integer)

    the volume to use

See Also:



272
273
274
275
# File 'mixer.c', line 272

static VALUE Channels_s_set_volume(VALUE self, VALUE channel, VALUE volume)
{
    return INT2NUM(Mix_Volume(NUM2INT(channel), NUM2INT(volume)));
}

+ (Integer) volume(channel)

Get the volume of specified channel.

Parameters:

  • channel (Integer)

    the channel to get volume for. If the specified channel is -1, this method returns the average volume of all channels.

Returns:

  • (Integer)

    the volume, 0-128

See Also:



254
255
256
257
# File 'mixer.c', line 254

static VALUE Channels_s_volume(VALUE self, VALUE channel)
{
    return INT2NUM(Mix_Volume(NUM2INT(channel), -1));
}