Open NeroBlackstone opened 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.
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.