Song Melody Recognition Research

Make your Arduino dance to a little tune (or just pass on the message)

 Someone with a Samsung washing machine wanted to be able to receive the "all done" notification from the other end of their house.  Here's a video sample with some owners interacting with their washes.


 I didn't turn up a straightforward solution that I could easily implement (it's a lot easier to get music converted to drive a MIDI keyboard) there is plenty of reference material that should lea someone else to a solution.

 Considering the usage time saving to code development time, it might be most practical to just put a wireless baby monitor near the washer.

After glancing though some example projects and academic papers, I concluded that my solution would simply use a tempo-measuring-like setup measuring the interval between notes, if the sound impulses matched the tempo of the song I would call it a match (on review, the notes are not as staccato and easy to separate as a musical greeting card)

Using the microphone built in the little $14.60  M5stickC with an ESP32 would provide the needed horsepower to analyze the simple sound from a monophonic player.

M5stickC COVER REMOVED



Alternatively for basic Arduino's, a Chinese sellers' "Sound Detector" board may be triggered by individual notes.
(You can get 5 of these for $2.94 at Aliexpress)




Passing the "Done" message to the homeowner.

  There are a couple of simple tools for making an Anroid cell phone app that communicates to iOT gadgets.   These tools are the way to go for those who are not competent Android developers.

  One is the Blynk IoT platform which gives you a limited inventory budget  for buttons, dials and sliders that you can place on the screen of your custom app. 

  A second simple app maker I just became aware of is Thunkable (there may be significant differences between the Classic and current versions.)
  One demonstration of Thunkable,  using Bluetooth Low Energy (BLE) to communicate with an ESP32 is in the hackster article "ESP32 BLE + Android + Arduino IDE = AWESOME"  which shows you how to make your Android blink the LEDs on the ESP32 board.

Demo Android App Screen (shrunk)


Here are some (mostly obscure) links I ran across in search of a quick solution.


On the implementation of melody recognition on 8-bit and 16-bit microcontrollers  2003
Author(s) Jyh-Shing Roger Jang ; Yung-Sen Jang

Aubio.org    A code library for audio and music analysis

Essentia
Github C++ library for audio and music analysis, description and synthesis, including Python bindings

MusicTechFest.net  A powerful collection of music processsing tools.

Simplest Way for Voice Recognition Project Using C#, Arduino

Voice controlled TV with an Arduino Uno and C#   2012  (Hacking IR remote code too)

Parsons Code, a simplified representation format of a song: notes are identified as: same - up or down from previous.

WWW 2018 Challenge: Learning to Recognize Musical Genre

Dejavu Audio fingerprinting and recognition in Python 

RE Cell phone App Shazam:
How does Shazam work? Music Recognition Algorithms, Fingerprinting, and Processing

Step by step: Raspberry Pi offline voice recognition with SOPARE


Open source audio pattern recognition (finger printing)  with a couple Forum Answers 2011

Finding-Song-Melody-Similarities-Using-a-DNA-String  (paprer citation)

Academic Paper:
Resource-efficient Machine Learning in 2 KB RAM for the Internet of Things





Comments

Popular posts from this blog

LED Driver Roundup

Hooking up the 6 + 1 Mic Array to the MaiX BiT

Holographic Fans Getting Real Time HDMI Input