JamesHeinrich / getID3

http://www.getid3.org/
Other
1.15k stars 246 forks source link

Future plans query - Support for MOD (mod/stm/s3m/it/xm/mtm/ult/669) #374

Open christiansacks opened 2 years ago

christiansacks commented 2 years ago

Hi there,

I don't know if this is a good place to ask this... how "future" are the future plans for this feature? I'm desperate to get this included, so that my favourite streaming service that I use can use the file formats that I really would like to use, instead of having to convert them all to MP3.

Thank you for listening.

JamesHeinrich commented 2 years ago

I have no plans to expand support for MOD formats. I have done about as much as I can with the documentation I have available. I didn't think they were much used anymore.

christiansacks commented 2 years ago

Ah That's a shame, there's a whole scene of demoscene musicians who would disagree that it isn't used anymore. If you change your mind in the future, I know that the demoscene would all be very grateful.

Thanks and best wishes, Christian aka MeaTLoTioN

On 13/04/2022 23:11, James Heinrich wrote:

I have no plans to expand support for MOD formats. I have done about as much as I can with the documentation I have available. I didn't think they were much used anymore.

JamesHeinrich commented 2 years ago

It's all a matter of file format documentation.

Is there something specific that's not working? If there's a specific issue with a specific file that you want me to look at, please provide a sample file.

christiansacks commented 2 years ago

Well here's the thing, I use a platform called AzuraCast which is a platform to create an internet radio station. It works hand in hand with liquid soap, icecast, etc.

AzuraCast uses your getID3() to recognise and use music/audio files to be able to be played, however the formats that are available to use with getID3() are not as exhaustive as ffmpeg for example, which AzuraCast uses to actually play the audio files.

The file format audio/x-mod and audio/xm are just a few of the tracked music files that I would like to use. Here's a link to what audio/x-mod is about; https://en.wikipedia.org/wiki/MOD_(file_format)

There's a whole scene of tracker musicians who produce music in this format every day, and the file sizes are so small it would really cut down the storage and bandwidth usage if we could also use these formats in our radio streams.

An example track is attached.

I hope that these help, you can get the track info with ffprobe so hopefully you can also work out how to do it with getID3() so AzuraCast can implement using these files.

Many thanks, Christian aka MeaTLoTioN

On 14/04/2022 13:44, James Heinrich wrote:

It's all a matter of file format documentation.

Is there something specific that's not working? If there's a specific issue with a specific file that you want me to look at, please provide a sample file.

christiansacks commented 2 years ago

I can't attach that file type here, so a link: https://erb.pw/sundance.mod

christiansacks commented 2 years ago

Other formats I'd wish to use;

STM/S3M: https://en.wikipedia.org/wiki/S3M_(file_format) IT: https://en.wikipedia.org/wiki/Impulse_Tracker XM: https://en.wikipedia.org/wiki/XM_(file_format)

All the above are able to play with things like ffmpeg/vlc/etc, and all are current formats that are used by tracker musicians partly because of the small sizes of the files that they produce, among many reasons.

Hope this helps.

JamesHeinrich commented 2 years ago

Those formats have all had roughed-in support in getID3 for many years (they're detected, but no in any detail). I'm lacking proper file format documentation. I managed to find some partial old documentation for the first sample file you sent: http://www.textfiles.com/programming/FORMATS/modulesg.txt https://web.archive.org/web/20100921225940/http://io.debian.net/~tar/debian/xmp/xmp-2.7.1/docs/formats/Ultimate_Soundtracker-format.txt That was enough to get the file format recognized and extract song and track names, but I have not had any insight on how to calculate the track length.

christiansacks commented 2 years ago

Did you see this? https://www.ocf.berkeley.edu/~eek/index.html/tiny_examples/ptmod/ap12.html

christiansacks commented 2 years ago

I have a bunch of test files if you want to try them all out, downloadable from https://erb.pw/silver.zip ... There's about 200 files of .mod .stm .s3m .xm formats.

According to ffmpeg, they're of type;

.STM = pcm_f32le application/octet-stream .MOD = pcm_f32le audio/x-mod .S3M = pcm_f32le audio/x-s3m .XM = pcm_f32le audio/xm audio/x-mod

Hope this helps you out.

JamesHeinrich commented 2 years ago

I've taken another look at it but I still don't understand how to calculate the playtime of mod files in general. Until someone wants to volunteer some code or documentation that shows how to do that I likely can't do anything more, sorry.