8 comments

[ 4.4 ms ] story [ 29.1 ms ] thread
Does anyone know something able to do this in real-time? So it‘s able to sync, e.g. an LED light with music being played?
I’ve seen audio systems that use my hand tapping in a pad to “learn” (sample over time) the beat/tempo in real-time.

I wonder if there’s some signal correlated enough with beat to stand in for my hand?

Edit: their code works on samples of audio. [0] A “real-time” solution could be short samples immediately processed after capturing until some quality metric is met.

[0] https://colab.research.google.com/drive/1tuOqNyO9gdMmYJsj33f...

Anecdote from drummer here. I made an Android application that would detect the stroke on the snare and would show the tempo.

Of course, you only hit the snare in 2 and 4, so you had to multiply it by two... and forget it completely during breaks!

What amazed me is that it was so sensitive that I could detect even normal footsteps on rather solid floors.

Something that's always amazed me doing live sound work, is how sensitive mics are to what I'd class as practically inaudible noises.

Say I have a mic on a stand at the back of a room (i.e. Earthworks M30), someone can enter the door from the opposite side, and quietly walk somewhere else in the room. The mic will pick up each step they're making in a pretty obvious fashion on a spectrograph in Smaart. Or a fan from an LED light hanging from truss in the ceiling.

There are a few options, depends on your hardware (x86? Arduino?)
Yup, there’s a stand-alone piece of software called Waveclock which can do that: https://wavesum.net/waveclock-audio-to-midi-clock.html.

This will output midi clock messages, so you’d need to find a way to convert these to trigger whatever you want to trigger. There’s probably software to do this, or you could write your own.

You’ll want to create a “loopback” or “virtual” MIDI cable so your software can receive the MIDI messages from Waveclock (on Mac you can use the built in IAC Bus feature for this, on Windows I think you’ll need a driver, or you might be able to directly create a midi input in your code depending on the library), then it should be a fairly simple case of responding to MIDI clock messages (there are usually 24 clock messages per beat, so you’ll want to only respond to every 1 in 24).

There are libraries for pretty much every language to make working with MIDI easier - JS supports WebMIDI (and there are npm libs to make working with it easier), JUCE is a good C++ framework for this kind of thing, and for Swift you can try AudioKit.

For the musicians out there, Ableton Live 11 can also follow the tempo of live music and sync your set to it.

Personally I use the FastLED library a lot using various microcontrollers. There are plenty of "sound reactive" or "audio reactive" or "beat detection" projects if you search the user forum on reddit. You can basically use either a microphone or line level input (depending on if microcontroller has built in DAC, etc). There are plenty of examples/tutorials and code provided. There are also FFT libraries so you can break the audio into multiple frequencies so you can do things like have bass light up red and treble light up blue, etc. You can really do quite a lot with this stuff.

https://www.reddit.com/r/FastLED/