And here's a MIDI-to-CV controller built with a $3 microcontroller instead of a $40 computer: <a href="https://github.com/elkayem/midi2cv" rel="nofollow">https://github.com/elkayem/midi2cv</a>
This is super cool! Using an FFT to detect pitch is a natural approach, but my understanding is that most pitch detectors work in the time domain using some form of auto-correlation. See:<p><a href="https://en.wikipedia.org/wiki/Pitch_detection_algorithm" rel="nofollow">https://en.wikipedia.org/wiki/Pitch_detection_algorithm</a>
Kinda related; software CV done with JACK and LV2: <a href="https://linuxmusicians.com/viewtopic.php?f=1&t=20701" rel="nofollow">https://linuxmusicians.com/viewtopic.php?f=1&t=20701</a>
Nice. :-) Having done somewhat similar stuff before, I'm curious if you were able to measure what the latency result of using linux and python was vs doing it with an MCU like a teensy or arduino and using C? I can see advantages to both approaches, and am genuinely curious. There must be some latency and unpredictability added, but maybe it's small enough to totally not matter. Off course whether this matters depends too on the controller keyboard and your playing level, I know what is ok to me differs from what what my Real Pianist friends tolerate!
I created a midi piano in the browser for a Roland EP7 IIe that sent midi note off in a weird way - causing double notes , it would send the same note but with just the velocity information changed to 0, which most midi software didn't like.<p><a href="https://htmlgames.github.io/htmlgames.github.io/htmlgames/PF_MIDI_PIANO/midi-js_Basic.html" rel="nofollow">https://htmlgames.github.io/htmlgames.github.io/htmlgames/PF...</a><p>So I just held the notes in an array and used that for note on/off information instead.
This is great. And miti is exactly what I was looking for. Started working on something similar in bash and perl on top of gbevin's sendmidi [1] a while ago, but this looks like it'll save me much effort. Thanks!<p>[1] <a href="https://github.com/gbevin/SendMIDI/" rel="nofollow">https://github.com/gbevin/SendMIDI/</a>
Brilliant trick to self calibrate, these are probably each different enough that if you hooked up another one to the same PI it would come out all out of tune.