Back

Show HN: Voice Composer – Browser-based pitch detection to MIDI/strudel/tidal

32 points26 daysdioptre.github.io

Built this over the weekend to bridge the gap between "can hum a melody" and "can code algorithmic music patterns" (Strudel/TidalCycles) for live coding and live dj'ing.

What it does:

Real-time pitch detection in browser using multiple algorithms: CREPE (deep learning model via TensorFlow.js) YIN (autocorrelation-based fundamental frequency estimation) FFT with harmonic product spectrum AMDF (average magnitude difference function) Outputs: visual piano roll, MIDI files, Strudel/TidalCycles code All client-side, nothing leaves your machine Why multiple algorithms: Different pitch detection approaches work better for different inputs. CREPE is most accurate but computationally expensive; YIN is fast and works well for clean monophonic input; FFT/HPS handles harmonic-rich sounds; AMDF is lightweight. Let users switch based on their use case.

Technical details:

React, runs entirely in browser via Web Audio API Canvas-based visualization with real-time waveform rendering

The original problem: I wanted to learn live coding but had zero music theory. This makes it trivial to capture melodic ideas and immediately use them in pattern-based music systems.

Try it: https://dioptre.github.io/tidal/

Works best on desktop. Will work more like a Digital Audio Workbench (DAW).

Source: https://github.com/dioptre/tidal

amadeuswoo22 days ago

Nice! I’ve done some pitch detection with librosa before. Curious about your FFT/HPS implementation. How did you handle the time-frequency tradeoff for the spectrogram windowing? Or is that less of an issue with the other algorithms available as fallbacks

wtcactus22 days ago

Sorry, this is a good idea, but it really misses the mark. It's way, way off.

I can sing rather well, and this is completely off. About half the notes are wrong.

My voice does have quite a few harmonics though. Maybe that is throwing the algorithm completely off?

djmips22 days ago

Did you try changing the algorithm? It seems to have a variety of methods available.

wtcactus22 days ago

Ah, no. Thanks for the heads up. I’ll try again in the evening.

CSSer22 days ago

Your iOS device mute instructions are too verbose. Not all iOS devices have a mute switch. The latest devices have a mute button. Copy can be simplified to "Make sure your mobile device is not silenced"

noemit26 days ago

I have waited my entire life for this product.

aalimov_26 days ago

This is awesome!