B0ney / xmodits

A tool to rip samples from tracker modules. Supports IT, XM, S3M, MOD, UMX and MPTM formats.
GNU General Public License v3.0
86 stars 6 forks source link

losing loop points (.it .mod .xm .s3m) #33

Closed esaruoho closed 1 year ago

esaruoho commented 1 year ago

so i just dumped 4600 modules to wav-samples, and realized all the loop-points are gone. is there a way of using xmodits so that the loop-points are not lost? i'm trying to load the samples into ST3/IT2.

B0ney commented 1 year ago

Hi,

Yes, xmodits should do this automatically if it finds valid loop points in a sample (for versions 0.10.0 and over).

But if the trackers do have valid loops, then this sounds very strange. Can you provide a screenshot of the settings you used?

like this: parmeters

If you can provide an example module, that would also help.

Thanks!

esaruoho commented 1 year ago

the screenshots you provided are very similar to what i'm using. i had thousands of chipsounds (20 bytes etc) without loop points. is the issue that i'm saving them as wav instead of raw? will raw have the "module loop-points"? @B0ney

B0ney commented 1 year ago

the screenshots you provided are very similar to what i'm using. i had thousands of chipsounds (20 bytes etc) without loop points. is the issue that i'm saving them as wav instead of raw? will raw have the "module loop-points"? @B0ney

No, saving the samples as raw will only store the pcm. All associated metadata will be discarded.

When you were configuring the program, did you happen to uncheck "Self Contained"?

Disabling this would mean that all of the ripped samples are placed in the destination folder.

But since most of the samples have similar names (01.wav, 02.wav, etc), there's an extremely high chance that those names would collide, resulting in data being overwritten.

This can be mitigated by checking "prefix samples", which will prefix the ripped samples with the tracker's filename:

example for enigma.mod:

enigma - 01 - kick.wav

This was a UX issue I've recently fixed.

Was that the case for you?

esaruoho commented 1 year ago

i haven't had any issues with the file naming itself. just the loops going missing. from my pov, the file naming tickboxes are already great, and there was no overwriting. :)

B0ney commented 1 year ago

@esaruoho Okay, I think I found the source of the problem.

Scream Tracker 3 and Impulse Tracker will only read sample data from a WAV file. So additional metadata such as loop points are ignored.

To load samples with looping, you would need to load an S3I and ITS file respectively, which, xmodits doesn't support yet.

They were originally planned for version 0.10.0 but was prosponed for a later release.

They're not that hard to implement, so S3I and ITS support can be included for version 0.11.0.

esaruoho commented 1 year ago

wow, hey, thanks for looking at it! so in theory, in a future release, i'll be able to load .its files? how near or far is that from 8th july 2023? :)

B0ney commented 1 year ago

Yes, here's what I currently have planned for version 0.11.0 (subject to change):

The next release is relatively small, so it shouldn't take long.

Supporting more platforms for the GUI version is quite finicky, so I may end up removing some targets.

Not making any promises, but you should expect a release some time between late July and August.

B0ney commented 1 year ago

@esaruoho Hi, I've published the first release candidate for version 0.11.0. Options to export samples as .its and .s3i are available, but need a bit of testing. Especially for .s3i.

You can download the builds here.

Do let me know if the samples load properly under Impulse Tracker 2 and Scream Tracker 3.

Thanks!

esaruoho commented 1 year ago

ok i finally have a method for transferring files easily from mac to windows 98 se / dospc. so i can finally try the build and see if the files will have loop points.

btw any chance of providing ARM architecture macOS builds too? not sure what to think of these failed ones but in the grand order of things, doesn't matter one whit.

2023-08-25T17:06:06.809908Z  INFO xmodits_gui::core::xmodits: Started ripping
2023-08-25T17:06:10.130312Z ERROR xmodits_gui::core::xmodits: Failed: /Users/esaruoho/Downloads/mods/JS-SHRT1.MOD, reason: Invalid Module: Module doesn't have any valid samples.
2023-08-25T17:06:10.503473Z ERROR xmodits_gui::core::xmodits: Failed: /Users/esaruoho/Downloads/mods/CLAUSTR2.XM, reason: Unsupported module: Extended Module is below version 0104
2023-08-25T17:06:10.617514Z ERROR xmodits_gui::core::xmodits: Failed: /Users/esaruoho/Downloads/mods/SHELCOMB.XM, reason: Unsupported module: Extended Module is below version 0104
2023-08-25T17:06:15.156805Z  INFO xmodits_gui::core::xmodits: Done!

result:

Screenshot 2023-08-25 at 20 07 38

you have fixed it! i can now get loops in! this is awesome!!! thank you so much!!

B0ney commented 1 year ago

Awesome!

btw any chance of providing ARM architecture macOS builds too?

Yes. The next release will have a single universal .dmg that can run on both Apple Silicon and Intel Macs.

Currently, only the command line version has builds for Apple Silicon, so you can use that for the time being: https://github.com/B0ney/xmodits-cli/releases/tag/v0.11.0

And regarding the logs you provided:

2023-08-25T17:06:06.809908Z  INFO xmodits_gui::core::xmodits: Started ripping
2023-08-25T17:06:10.130312Z ERROR xmodits_gui::core::xmodits: Failed: /Users/esaruoho/Downloads/mods/JS-SHRT1.MOD, reason: Invalid Module: Module doesn't have any valid samples.
2023-08-25T17:06:10.503473Z ERROR xmodits_gui::core::xmodits: Failed: /Users/esaruoho/Downloads/mods/CLAUSTR2.XM, reason: Unsupported module: Extended Module is below version 0104
2023-08-25T17:06:10.617514Z ERROR xmodits_gui::core::xmodits: Failed: /Users/esaruoho/Downloads/mods/SHELCOMB.XM, reason: Unsupported module: Extended Module is below version 0104
2023-08-25T17:06:15.156805Z  INFO xmodits_gui::core::xmodits: Done!

I am most interested in JS-SHRT1.MOD. That error is quite rare from my testing. It could be a non-standard .mod file.

I am not too concerned with the last 2 errors though. The .xm format has scarce documentation, so it was quite difficult to implement correctly. Versions before 0104 have a very different structure (and even rarer documentation), so I chose not to support it.

B0ney commented 1 year ago

Also, do you have any more loop-point related issues? If not, I'll consider it done and close this issue.

Thanks for testing it out :)

esaruoho commented 1 year ago

And regarding the logs you provided: I am most interested in JS-SHRT1.MOD. That error is quite rare from my testing. It could be a non-standard .mod file.

JS-SHRT1.ZIP

of course. here it is. i don't know what it is.

Also, do you have any more loop-point related issues? If not, I'll consider it done and close this issue. Thanks for testing it out :)

no loop-point issues at all anymore. i was glad to see that you enabling .its allowed me to get going and that .its files can actually be keyjazzed in the impulsetracker f3 sample loader, which is super-important. i was worried i needed to do it from the F4 instrument loader, which would be completely different and probably unjazzable.

so, yes, the original issue can now be considered fixed and ticket can be closed. much appreciated. sorry it took me a month to try the build!

B0ney commented 1 year ago

Cheers!

Btw, I checked out the file you've uploaded. After a bit of analysis, it's actually a zip file with its extension changed to .MOD for some reason 😅

Just change its extension back to .zip and extract it. The program should be able to rip samples from it now.