Back to blogs

Phase Two: Design

Getting into the specifics of Raudio itself.

Raudio · Feb 3, 2022

Related Works

Our reference/default client implementation is a Discord bot for voice channels, which we believe differentiates itself a lot from MPD and Icecast. Specifically creating a Discord bot also means that we can use this as a response to Rythm bot's recent death. Raudio is also more extensible, being that you can play audio from any file that you have, and are not limited to sources like YouTube or Soundcloud as you were with Rythm. Finally, Raudio is once again, completely open source, whereas Rythm Bot was a subscription-based service.

Identified Subprojects

Technology Stack

Frameworks

Library

For creating our Discord bot client, we will be using Pycord, which is a perfect alternative to Discord.py which had been archived by its maintainer. As a direct fork of Discord.py with many of its contributors maintaining this new Python wrapper, it is surely a solid option.

Architecture

For the purposes of demonstration/MVP, our audio server and Discord client will both run on remote machines, though in our overall architecture, this isn't a requirement. Discord users will have options to interact with the Discord client to request songs and basic other audio functions, like play, pause, etc. The audio server streams music files to the client, which in this case is redirected to the Discord API through Pycord to be streamed over voice chat.

MVP Specifics

Our main focus for the project is creating the audio server, and an open API + library for creation of clients. We want to make it as easy as possible to interact with the server so that users will be able to create their own clients for their own needs with minimum effort. Some ideas for how we can ease interacting with the server included having a web client, TUI/Curses app, or GUI app. Therefore, by developing our Discord bot, it will act as a default client as proof of concept which uses our API (which will be further documented).

Slide Deck