Kyle Simpson 7e4392ae68 Voice Rework -- Events, Track Queues (#806)
This implements a proof-of-concept for an improved audio frontend. The largest change is the introduction of events and event handling: both by time elapsed and by track events, such as ending or looping. Following on from this, the library now includes a basic, event-driven track queue system (which people seem to ask for unusually often). A new sample, `examples/13_voice_events`, demonstrates both the `TrackQueue` system and some basic events via the `~queue` and `~play_fade` commands.

Locks are removed from around the control of `Audio` objects, which should allow the backend to be moved to a more granular futures-based backend solution in a cleaner way.
2020-10-31 12:19:07 +01:00

Songbird

Songbird is an async, cross-library compatible voice system for Discord, written in Rust. The library offers:

  • A standalone gateway frontend compatible with serenity and twilight using the "gateway" and "[serenity/twilight]-[rustls/native]" features. You can even run driverless, to help manage your lavalink sessions.
  • A standalone driver for voice calls, via the "driver" feature. If you can create a ConnectionInfo using any other gateway, or language for your bot, then you can run the songbird voice driver.
  • And, by default, a fully featured voice system featuring events, queues, RT(C)P packet handling, seeking on compatible streams, shared multithreaded audio stream caches, and direct Opus data passthrough from DCA files.

Examples

Full examples showing various types of functionality and integrations can be found as part of serenity's examples, and in this crate's examples directory.

Attribution

Songbird's logo is based upon the copyright-free image "Black-Capped Chickadee" by George Gorgas White.

Description
No description provided
Readme 22 MiB
Languages
Rust 100%