7e4392ae68f97311f2389fdf8835e70a25912ff3
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.
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 aConnectionInfousing 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
Languages
Rust
100%
