| . ___ __ __ ___ . __ __ __ __ __ __ | | |__ |__) |__) |__ ' /__` /__` / \ /\ |__) |__) / \ \_/ |___ | |___ | \ | \ |___ .__/ .__/ \__/ /~~\ | |__) \__/ / \ ⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∽⋅∼⋅∽⋅∽⋅∽⋅∽⋅
I tried a while ago to create a little program to detect both pitch and rhythm in sound then convert it to a specific notation. My use case is music trackers, such as lsdj or, more recently, the dirtywave m8. Too often, I can come up with a rhythm pattern that I can write on paper but not encode directly in the machine or a melody I can sing and record but that is slow to transcribe.
My goal is to start the program, press record, wait a bit, get the notation I need for the tracker and move on with the song creation. While pitch detection has become easy thanks to libraries such as librosa and audioFlux, I struggled with some glitches as well as the rhythm detection. Leading me to shelf the little project.
Well, I've been involving myself more with trackers and having that tool would make me much faster and happier at using them. So let's strip it down to make it less complicated, then build something functional.
The program shall:
This sounds rather achievable. There are many nice to have things that beg me to get included, such as including the recording function in the program right away. But first things first, this simple program, that would be helpful already. Let's call it Nachtigall for now, like the singing bird, which is pompous but funny to pronounce.
⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∼⋅∽⋅∽⋅∼⋅∽⋅∽⋅