Detect a Song with Bluetooth Information?


I'm currently working on a project using neopixel strips that are supposed to change to several preset patterns depending on what song is being played. There are nine or so color combinations, each corresponding to a specific song. I am curious to see if it's possible to detect what song is playing via Bluetooth or any other means other than beat detection (which I understand can kind of be a nightmare).

Is there a way to harness the signal that broadcasts the artist and song name, like when you play music through Bluetooth in your car and the song name shows up on the infotainment system? I have my neopixels currently using if and else statements with a potentiometer to select the color combo if the dial is within a certain range. So I'd just need to change the trigger that sets the colors. Any help is appreciated. This is kind of an advanced project for me. Learning as much as I can as I go.

Ideally, I'd like to be able to forward that Bluetooth signal on to speakers, so it would go something like this:

  1. Phone plays song "x" by artist "y" via Bluetooh
  2. Arduino intercepts Bluetooth signal, decodes artist and song name
  3. Arduino checks what song is playing against the list of "if" and "else" statements to decide which neopixel pattern is needed for song "x"
  4. Neopixels pattern updates for the duration of song "x"
  5. Bluetooth signal is simultaneously forwarded or rebroadcasted to speakers

I hope that was specific enough. If there's an easier way to do something that I've overlooked, let me know. Always willing to learn. Thanks!

Bluetooth doesn't branch.

INTP: Bluetooth doesn't branch.

What about reading a song's filename from an SD card, and then broadcasting via Bluetooth to speakers?

If you used a proper audio Bluetooth module (BC127, WT32i RN52 etc), and used this to drive the speaker (amplifier required), you could get the song meta data from the Bluetooth module via its serial port, and avoid having to re-broadcast the audio.