allthemusicllc / atm-cli

Command line tool for generating and working with MIDI files.
http://allthemusic.info
Other
1.39k stars 105 forks source link

The tar file format use at least 512 bytes per file #18

Closed hselasky closed 3 years ago

hselasky commented 4 years ago

Hi,

Is there room for alternative output formats?

Tar files need at least 512 bytes (one block) per file.

Further when extracting these small files to a real filesystem they need much more disk-space than 71-bytes worth of MIDI data, because disks are organized into 512-byte blocks typically.

You might be better off using one large text file as output format.

/ melody NNN / C5 D5 E5

/ melody MMM / C5 D5 E5B

For example in the format that Midi Player Pro (http://www.selasky.org/hans_petter/midistudio/) supports, or ABC midi for that sake.

--HPS

allthemusicllc commented 4 years ago

Our initial use case required that we actually generate individual MIDI files, so that the melodies would be written to a "fixed, tangible medium" for copright purposes.

You're right that tar files are aligned to 512 bytes, so it actually takes a minimum of 1024 bytes per MIDI file (tar header + data). That's part of the reason why we "batch" MIDI files together into a GZip-compressed tar file. That way, we can store ~25 MIDI files per 1024 byte tar entry.

That being said, we may add support for other output formats in the future depending on prevalence of use case. If you could point me to a technical description of the file format for Midi Player Pro, or more formally describe an output format you'd like to use, we will consider implementing it. Thanks for the feedback!

hselasky commented 4 years ago

Userguide is here: http://www.selasky.org/hans_petter/midistudio/midipp_users_guide_2018.pdf

allthemusicllc commented 3 years ago

@hselasky we're going to close this issue for now given the limited time we have to implement new features, though if you're interested in contributing, you could implement a new storage backend! Take a look at the StorageBackend trait.

hselasky commented 3 years ago

No problem :-)