After your device finishes downloading the application, you should be ready to go!
Before starting, make sure to connect the audio output of your device to your Hi-Fi or speaker system. Remember that we support multiple audio interfaces. This is helpful if you're interested in improving the audio quality of your setup-- be sure to check it out.
To connect to your balenaSound device:
balenaSound <plugin> xxxx name is used by default, where
xxxx will be the first 4 characters of the device UUID in the balenaCloud dashboard.
Let the music play!
balenaSound supports multiple modes of operation described below:
By default, most devices will start in multi-room mode. You can change that by setting an environment variable, check out the customization section to learn how.
Note: Multi-room mode is the default mode for most (but not all!) device types. You can read more about default modes here.
Multi-room mode allows you to play perfectly synchronized audio on multiple devices, it turns balenaSound into a "Sonos-like" multi-room solution. It doesn't matter whether you have 2 or 100 devices, you only need them to be part of the same local network.
When in multi-room mode devices can take one of two roles:
master: the device acting as the audio source
client: any number of devices playing back the audio being sent over by the
master device is easy and requires no configuration. Whenever you start streaming to any device in multi-room mode, it will autoconfigure itself to be the
master device and will broadcast a message to all other devices within your local network to get them in sync. Note that it can take a few seconds for the system to autoconfigure the first time you stream.
You can always change the
master by streaming to a different device.
It's a good idea to use the most powerful device on your fleet as the designated
master as it does take up more resources. For example, if your setup consists of a Raspberry Pi 4 and a couple of Raspberry Pi 2, then using the Pi 4 as the
master is the better option.
When a device is in multi-room client mode it can only be used as a multi-room
client. The only audio the device will play is audio coming from a
master device, so you'll need at least another device in your application.
This mode is great for performance constrained devices as plugin services (Spotify, AirPlay, etc) won't be running and consuming CPU cycles. It's also a great choice if you usually stream to the same
master device and don't want to have every device show up when pairing bluetooth for example.
Standalone is the original balenaSound mode (pre version 2.0). In this mode your device won't run any of the multi-room services, it will run independently and won't be aware of other devices in your network/application.
Use this mode when you have only one device in your fleet, or if you want to have multiple independent devices.
balenaSound has been re-designed to easily allow integration with audio streaming sources. These are the sources we currently support and the projects that make it possible:
|Spotify||raspotify Spotify Connect only works with Spotify Premium accounts. If you have a Spotify Premium account, you can stream locally without any configuration. If you want to use Spotify Connect over the internet, you'll need to provide your Spotify credentials. See customization section for details.|
|Bluetooth||balena bluetooth and audio blocks|
|Soundcard input||Experimental support through the balena audio block. Check the customization section to learn how to enable it.|
If your desired audio source is not supported feel free to reach out and leave us a comment. We've also considerably simplified the process of adding new plugins, so PR's are welcome too (be be sure to check out our balenaSound architecture guide)!
balenaSound supports all audio interfaces present on our supported devices be it 3.5mm audio jack, HDMI, I2C DAC's or USB soundcards. We rely on balenaLabs' audio block to do the configuration required for this to work.
Some audio interfaces require special configuration, you can read more about this in the audio interfaces configuration section.