nanofarmer
If you're using the Rhythm module to visualize music with the Nanoleaf Aurora, you might have noticed that the visualization is slightly delayed by 100-200 ms. This is most noticeable when using very responsive visual (like Fireworks) with music that has a clear beat.
This isn't a bug; using a microphone or line in, it's simply impossible to visualize music in real-time because the changes in the music can only be measured after it's been played (fast fourier transform delay).
SOLUTION
Using a Chromecast Audio in a group, you can configure it to send the audio to the Nanoleaf Rhythm before it is played on the speaker. This allows the Rhythm to process the visualization ahead of time.
REQUIREMENTS
- Nanoleaf Aurora lights + Nanoleaf Rhythm module
- a Chromecast Audio ($35) connected to the Nanoleaf Rhythm with a 3.5 mm headphone cable
- either (1) a second Chromecast Audio ($35) connected to your speakers or AV receiver OR (2) a Google Home smart speaker ($79)
SETUP
You will be creating a Google Cast audio group that simultaneously casts music to both the Rhythm module and your speaker, then setting an audio delay compensation on the Rhythm's Chromecast Audio to make it receive audio earlier than other devices.
- Connect and setup the Chromecast Audio devices. One should be be connected to the Rhythm (only).
- In the Devices list in the Google Home app, create a Group (in the … menu next to your Chromecast Audio) with all of the audio devices.
- In the Devices list of the Google Home app, open Settings for the Chromecast Audio attached to your Rhythm (in the … menu next to the device)
- In the Settings page for your Rhythm's Chromecast Audio, select Group Delay Correction near the bottom of the list.
- Set the Delay Correction to something between 50 ms and 200 ms. For me, 150 ms seemed to be the sweet spot. (This will cause the audio to be played 50-200 ms earlier on this device.)
- You're done.
USING IT
When casting music from a mobile app (e.g. Spotify, Google Play Music, or Android system audio), choose to cast music to the audio group that you created. It should play on the speakers and the Rhythm at the same time.
Tip: If you use a Google Home smart speaker, you can set the default music playback to always use the audio group that you have created. (In the Google Home's device settings in the Google Home app, find the Media Playback setting.) This will cause music to always play to both the Google Home and your Chromecast Audio at the same time, so voice commands ("Ok Google, play Daft Punk") will cast to both.
I'm currently using this setup in a house with a large Google Cast setup (9 Google Home devices, 2 Chromecast Audio devices connected to speakers / AV receivers, and 2 Chromecast Audio devices connected to Rhythm modules), and it works quite well.