JuliaMusic / MusicXML.jl

MusicXML in Julia
MIT License
14 stars 7 forks source link

Midi to guitar tab #4

Open aminya opened 4 years ago

aminya commented 4 years ago

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/

Datseris commented 4 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".

Datseris commented 4 years ago

BTW There may be an option to do this immediatelly with MuseScore via command line. (see musescore in the JuliaMusic documentation)

aminya commented 4 years ago

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:

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.