JuliaMusic / MIDI.jl

A Julia library for handling MIDI files
https://juliamusic.github.io/JuliaMusic_documentation.jl/latest/
MIT License
67 stars 22 forks source link

It’s time to clarify the responsibilities of each repository. #168

Open NeroBlackstone opened 11 months ago

NeroBlackstone commented 11 months ago

I think most of juliaMusic's projects are in disarray. On the one hand, we lack of active community members to maintain them, and on the other hand, we do not clearly define the specific responsibility of each package under the organization.

Therefore, we always add functions to the wrong package.

For example, midi.jl contains IsOctave(), Obviously midi.jl should focus on midi parsing rather than music theory, and this function is more suitable to be placed in MusicManipulation.jl.

Another example is that we can find visualization code in MusicProcessing.jl, while these functions should be present in MusicVisualization.jl.

So, it is time to clearly define the concerns of each package in the form of documentation to prevent such confusion from happening again.

When we merge code or add functionality, we should keep in mind whether we are outside the scope of the package.

Datseris commented 11 months ago

MIDI.jl is generally about the "MIDI" representation of musical instruments performances, i.e., the quantized format within musical instrument output is recorded. It is not only read/write. Otherwise it wouldn't have the Notes type or the pitch2string, etc...

MusicManipulations.jl is about handling midi data from the aspect of them representing music. I.e., a structured format. Yes, you are right, is_octave belongs more to MusicManipulations.jl. But don't focus too much on a strict separation, there will always be ambiguous cases.

For the plotting stuff, you are right of course, no plotting should be in music manipulations. But plotting anyways has to be re-written from scratch in Makie.