Open aminya opened 5 years ago
This is a great suggestion! In general higher-level functionality, including plotting of notes on a pianoroll like cubase, or printing them into stuff, is implemented in MusicManipulations.jl instead. So I think this should also be implemented there.
Unortunately I wont have time to do this, and as of now I am the only maintainer of JuliaMusic. That's why I added "Help Wanted".
BTW There may be an option to do this immediatelly with MuseScore via command line. (see musescore
in the JuliaMusic documentation)
The actual midi to tab conversion and logic of deciding optimized fret positions is a very interesting topic. Here is an interesting article on it: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.648.3871&rep=rep1&type=pdf
Edit: I created the MusicXML package! https://github.com/aminya/MusicXML.jl
I don't know this package much yet, however, I think if we can get the data, printing it shouldn't be hard. Probably it is crucial to make a music XML file for the long run if we want to have full support for visualization.
- I don't think it is hard to make a better Tab for Music XML. We can use MIDI generated by this package and convert it to the music XML (using Musescore or some other tool). Then either generate a simple XML object for tab manually or get help from one of the XML packages like EzXML
Other possible solutions:
- MusicXML.jl if we add writting features
- Pycall for calling pymusicxml
- musicxml_parser in magneta.
- For guitar, If it was hard, we can even make a Ascii tab.
https://musescore.org/en/handbook/3/command-line-options#MIDI_import_operations I don't find any options for the tab here. I have contacted the developers regarding this I am interested in developing if you invite me to JuliaMusic. I can help create a MusicXML package with writing feature which is compatible with MIDI.jl. However, first I need to get more familiar with MIDI.jl.
Implementing a midi to guitar tab converter would be very nice and useful.
Doing a quick search, there are some repositories in other languages that do this. https://github.com/search?q=midi+to+guitar+tab
Among those https://github.com/ianbacus/midi-and-guitar-tabs/tree/master/tabber and https://github.com/vipul-sharma20/tayuya seem interesting to start from, as they have a logic to decide among many possibilities.
There are also https://github.com/musescore/MuseScore/blob/ab87985c7f556591382e6dcaa7a29e652cd27f35/libmscore/stringdata.cpp and https://github.com/phiresky/tuxguitar/blob/master/TuxGuitar-midi-input/src/org/herac/tuxguitar/midiinput/MiProvider.java and https://rdrr.io/cran/tabr/