dumble (dart+mumble) is a dart Mumble transport client framework. It enables you to:
WIP
Manage access listsWIP
Plugin data transmissionA Mumble user typically uses a microphone to record a raw audio, which is then encoded using an audio codec and finally segemented by a mumble client and send to the mumble server. Dumble is a transport client framework: It's not its task to record, play, encode or decode audio. It just segements and transports already encoded streams, and ensures that they are transmitted according to the mumble specification.
Audio recording and playing depends on the underlying platform and is not abstracted by the dart:vm
. It works different on Windows, Mac, Linux, IOS and Android, so every platform needs a different implementation. For example, on Linux you could use alsas a arecord, where Windows offers you its own api.
Why are no audio encoding and decoding tools are integrated? Mumble supports different audio codecs, but in practice, opus is the only relevant up-to-date codec. There is no pure dart implementation of opus, just wrappers for dart and flutter, which require additional building steps. It's not possible to create an universal plug in solution. So if you are using dumble on flutter, integrate opus_flutter yourself. And if you are using dumble without flutter, integrate opus_dart yourself.
Keep in mind that dumble is a transport framework and not an app.
This package was designed for servers using Mumble 1.4, but some features are sill missing, see above.
While the initial migration to null safety was done in version 0.8.0, there are some things that could be better and will be refined in the future:
!
after a null check to promote instance variables, but we should switch to using local copies as suggested by effective-dart.See the ROADMAP.md on what steps are planned for the future of this package.
There are several examples, showing how to use text chat, creating channels, and transmit audio. They can all be found in the example folder.