AudioManager#

This example demonstrates how to use the AudioManager class.

import asyncio
from rpaudio import AudioSink, AudioChannel, ChannelManager
from rpaudio.effects import FadeIn



def on_audio_stop():
    print("Audio stopped.")


async def run_manager(manager: ChannelManager):
    # Autoplay Channel1
    manager.channel("Channel1").auto_consume = True
    await asyncio.sleep(3)

    # Autoplay all channels (channel2 not autoplayed)
    manager.start_all()
    await asyncio.sleep(3)

    # Get the current audio metadata of channel1
    print(f"{manager.channel('Channel1').current_audio.metadata.title} is playing in Channel1")

    # Pause channel1
    manager.channel("Channel1").current_audio.pause()
    await asyncio.sleep(3)

    # Stop channel1's current audio, autoplays next audio in queue if auto_consume is True
    manager.channel("Channel1").current_audio.cancel_callback()
    manager.channel("Channel1").current_audio.stop()
    await asyncio.sleep(3)

    # Stop the remaining audio in channel1 which exhausts its queue
    manager.channel("Channel1").current_audio.cancel_callback()
    manager.channel("Channel1").current_audio.stop()
    await asyncio.sleep(3)

    # Stop channel2's current audio, autoplays next audio in queue if auto_consume is True
    manager.channel("Channel2").current_audio.stop()
    await asyncio.sleep(3)

    # Stop the remaining audio in channel2 which exhaust its queue
    manager.channel("Channel2").current_audio.stop()
    await asyncio.sleep(1)


async def main():
    # Intializing 2 audio sinks
    audio_1 = AudioSink(callback=on_audio_stop)
    audio_1.load_audio("examples/ex.wav")
    audio_2 = AudioSink(callback=on_audio_stop)
    audio_2.load_audio(r"C:\Users\16145\Desktop\code_24\rpaudio\examples\Acrylic.mp3")
    print(audio_1.metadata_dict)

    # Intializing 1st audio channel
    channel_1 = AudioChannel()
    channel_1.push(audio_1)
    channel_1.push(audio_2)
    fade_in_effect = FadeIn(start_val=0.0, end_val=1.0, duration=3.0)
    channel_1.set_effects_chain([fade_in_effect])

    # Intializing 2 more audio sinks
    audio_3 = AudioSink(callback=on_audio_stop)
    audio_3.load_audio("examples/ex.wav")
    audio_4 = AudioSink(callback=on_audio_stop)
    audio_4.load_audio(r"C:\Users\16145\Desktop\code_24\rpaudio\examples\Acrylic.mp3")
    # Intializing 2nd audio channel
    channel_2 = AudioChannel()
    channel_2.push(audio_3)
    channel_2.push(audio_4)
    fade_in_effect = FadeIn(start_val=0.0, end_val=1.0, duration=3.0)
    channel_2.set_effects_chain([fade_in_effect])

    # Intializing ChannelManager
    manager = ChannelManager()
    manager.add_channel("Channel1", channel_1)
    manager.add_channel("Channel2", channel_2)

    await asyncio.gather(
        run_manager(manager),
    )


if __name__ == "__main__":
    asyncio.run(main())