- 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
- Here's the current supported tunings:
$ gtrsnipe --list-tunings Available Tunings: - STANDARD : E4 B3 G3 D3 A2 E2 - E_FLAT : Eb4 Bb3 Gb3 Db3 Ab2 Eb2 - DROP_D : E4 B3 G3 D3 A2 D2 - D_STANDARD : D4 A3 F3 C3 G2 D2 - DROP_C : D4 A3 F3 C3 G2 C2 - OPEN_G : D4 B3 G3 D3 G2 D2 - OPEN_E : E4 B3 G#3 E3 B2 E2 - DADGAD : D4 A3 G3 D3 A2 D2 - OPEN_D : D4 A3 F#3 D3 A2 D2 - OPEN_C6 : E4 C4 G3 C3 A2 C2 - C_SHARP : C#4 F#3 B2 E2 C#2 - BASS_STANDARD : G2 D2 A1 E1 - BASS_DROP_D : G2 D2 A1 D1 - BASS_E_FLAT : Gb2 Db2 Ab1 Eb1 - SEVEN_STRING_STANDARD : E4 B3 G3 D3 A2 E2 B1 - SEVEN_STRING_DROP_A : E4 B3 G3 D3 A2 E2 A1 - BARITONE_B : B3 F#3 D3 A2 E2 B1 - BARITONE_A : A3 E3 C3 G2 D2 A1 - BARITONE_C : C4 G3 Eb3 Bb2 F2 C2
- 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.