4 ms·
The crucial step is extracting the (best) harmony progression from each midi. Look at Chordino [1] with the vamp Python wrapper [2] [1] https://code.soundsoft
by LunarAurora 4y ago
The crucial step is extracting the (best) harmony progression from each midi. Look at Chordino [1] with the vamp Python wrapper [2]
[1] https://code.soundsoftware.ac.uk/projects/nnls-chroma https://code.soundsoftware.ac.uk/projects/nnls-chroma
[2] https://pypi.org/project/vamp/ https://pypi.org/project/vamp/
- stevehiehn 4y agonice, both of these are very cool, thanks. digging in now.
- LunarAurora 4y agoFYI MetaMIDI Dataset is the best (I found). you can request access here https://zenodo.org/record/5142664 https://zenodo.org/record/5142664 if you haven’t already. Lakh MIDI Dataset https://colinraffel.com/projects/lmd https://colinraffel.com/projects/lmd is smaller but directly downloadable
- stevehiehn 4y agoI haven't but I will, really useful stuff, thanks
- stevehiehn 4y agoyo, correction vamp is more than cool. I was imagining already knowing what the progression is and then searching for matching midi clips. Vamp alludes to the possibility of auto feature extracting the progression and then searching for possible matches!!
- sargstuff 4y agomisc mix of other things (theory & practice): https://www.cnmat.berkeley.edu/sites/default/files/attachments/2016_Learning_and_Visualizing_Music_Specifications_Using_Pattern_Graphs.pdf https://www.cnmat.berkeley.edu/sites/default/files/attachmen... https://openaccess.city.ac.uk/id/eprint/1306/1/Wissmann%2C_Jens.pdf https://openaccess.city.ac.uk/id/eprint/1306/1/Wissmann%2C_J... https://extemporelang.github.io/docs/guides/pattern-language/ https://extemporelang.github.io/docs/guides/pattern-language... https://github.com/topics/chord-progression https://github.com/topics/chord-progression
- stevehiehn 4y agoLets say the query is: "Key of C, 4/4, [Am7,Am7,Em7,Dm7] My first naive approach will be to try this: 1) ensure the tune time sig is a match 2) for each bar collect the pitches and ensure that they contain the chord(or any inversion) of the chord at the index in question. 3) any non-chord/passing tones must exist in the overarching key or its not a match. If all 4 bars are a match I will reconstruct a midi clip and return it as a result.