But this doesn't seem to account for other shape concerns. The bit I am most interested in is whether this mapper can avoid barre chords where possible.
Related, I think there should also be an option to take capo into account.
There's quite a bit more involved in the scoring, such as string hopping, runs on the same string, etc. I invite you to run --help and look at the mapper config tunables. Ideas for improvement are welcome.
Looks like tayuya is also written in Python, on mido and music21. It has a "get all notes to play" feature, mentions LilyPond tab output as a todo, and has a get_key(midi) method built on music21:
https://github.com/vipul-sharma20/tayuya#get-all-notes-to-pl...
Textual is another way to create CLIs for Python scripts.
What about tab playback and CLI-based scrubbing?
There was a post a week or so ago about an LWN article about spotify/pedalboard, which is written in Python and built on JUCE (C++) and supports VST3 and LV2 plugins like a MIDI player or a wavetable synth and a Guitarix effects rack: https://news.ycombinator.com/item?id=44604024#44648290
OP here. I need to update the readme, but running it with --help will show you all of the alternate tunings and such. The mapper algorithm is nearly 100% tunable.
As I said, I'll put this info in the README, but last night I made a medium post that shows some of this (--bass, etc).
Nice! This reminds me of my PhD research! I built some similar tools to go the other way (for comparing similarity with scores) but probably nowhere near as reliable as this. QQ How do you handle repeat segments? I remember having to extrapolate the x2's etc but in your you could detect patterns and do the reverse for compactness.
Thanks! TBH I hadn't thought about handling repeating segments yet - in either direction. Because the tab-to-midi direction is mostly a novelty I haven't done much of it except with tabs generated by gtrsnipe, and since it doesn't handle repeats specially, I haven't had to parse any "x2" type notation, but now that you mention it I should. Thanks again.
I probably need to update the documentation. Since I posted I've added many alternate tunings and it supports from four to seven strings. I'm still improving it. Thanks for checking it out.
If I read it correctly, the mapper will score fingering based on how many frets the hand needs to stretch:
https://github.com/scottvr/gtrsnipe/blob/4cae149e1dac766c3c3...
But this doesn't seem to account for other shape concerns. The bit I am most interested in is whether this mapper can avoid barre chords where possible.
Related, I think there should also be an option to take capo into account.
There's quite a bit more involved in the scoring, such as string hopping, runs on the same string, etc. I invite you to run --help and look at the mapper config tunables. Ideas for improvement are welcome.
I looked for similar tools;
Looks like tayuya is also written in Python, on mido and music21. It has a "get all notes to play" feature, mentions LilyPond tab output as a todo, and has a get_key(midi) method built on music21: https://github.com/vipul-sharma20/tayuya#get-all-notes-to-pl...
tayuya.tabs:note_nearest_to_fret: https://github.com/vipul-sharma20/tayuya/blob/master/tayuya/...
Kord has a fretboard visualizer tool: https://github.com/synestematic/kord#fretboard-tool
Textual is another way to create CLIs for Python scripts.
What about tab playback and CLI-based scrubbing?
There was a post a week or so ago about an LWN article about spotify/pedalboard, which is written in Python and built on JUCE (C++) and supports VST3 and LV2 plugins like a MIDI player or a wavetable synth and a Guitarix effects rack: https://news.ycombinator.com/item?id=44604024#44648290
OP here. I need to update the readme, but running it with --help will show you all of the alternate tunings and such. The mapper algorithm is nearly 100% tunable.
As I said, I'll put this info in the README, but last night I made a medium post that shows some of this (--bass, etc).
https://medium.com/@scott.vr/about-seven-months-ago-via-hack...
Nice! This reminds me of my PhD research! I built some similar tools to go the other way (for comparing similarity with scores) but probably nowhere near as reliable as this. QQ How do you handle repeat segments? I remember having to extrapolate the x2's etc but in your you could detect patterns and do the reverse for compactness.
Thanks! TBH I hadn't thought about handling repeating segments yet - in either direction. Because the tab-to-midi direction is mostly a novelty I haven't done much of it except with tabs generated by gtrsnipe, and since it doesn't handle repeats specially, I haven't had to parse any "x2" type notation, but now that you mention it I should. Thanks again.
Awesome OP. I'll give it a shot because I've been considering doing something similar for chord charts. Glad to see abc notation support.
Hi @ycombiredd, could this be used to turn MIDI into http://strudel.cc mini-notation?
Previous effort: https://github.com/TylerMclaughlin/midi_to_tidalcycles
I hadn't heard of Strudel before but I'll look into it. Thanks!
Looks interesting, too bad it's limited to 6 strings and 3 tunings, that excludes a lot of music
I probably need to update the documentation. Since I posted I've added many alternate tunings and it supports from four to seven strings. I'm still improving it. Thanks for checking it out.