Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_dumb (Read 310126 times) previous topic - next topic
0 Members and 4 Guests are viewing this topic.

foo_dumb

Reply #50
Uploaded v0.9.2.10.
  • S3M reader now disposes of effects which don't do anything in ST3. Fixes ECLIPSE.S3M, which has patterns of "DMZ RULEZ" in the effects column of random empty channels in random patterns. Since the values were zero, and none of the volume effects should have done anything, I presume it was triggering the IT MIDI macro command with Z00 and setting several channels' filter cutoff to 0, which would effectively mute the channel.
  • PTM portamento commands were backwards, as documented by PTMFORM.DOC. The correct order is identical to the MOD/XM portamento effects. Just like the note slides, which in_mod implements, backwards as documented. That's what happens when someone gives their source code to a clueless person because they don't feel like writing a format document themselves. Or something. Fixes Algory.PTM and probably others.
  • Corrected MOD and S3M behavior when a sample is changed when a note is already playing, without a note paired with the sample change. MOD: Reset channel volume to new sample's default volume, retrigger the note. S3M: Reset channel volume, but don't retrigger the note or start playing from the new sample. Already correct, XM: Continue playing the same sample, but reset envelopes/fades, and reset channel volume/pan to the defaults of the sample which is still playing. IT: Just like MOD. :B Fixes Chip a'Choup 01.MOD, thanks GenjuroXL.
  • Also, a slight last minute fix to UMX support. Maybe I should scrap the specific API version tables and just assume that version 62 and up are all the same, while everything older than 60 is identical to 61. At least, it might be safe, since every version it knew from 62 and up had the same features, and every version I've added since is the same.
As for the Oktalyzer and MTM formats, I'll look into that tomorrow.

foo_dumb

Reply #51
Quote
Uploaded v0.9.2.10.

  • S3M reader now disposes of effects which don't do anything in ST3. Fixes ECLIPSE.S3M, which has patterns of "DMZ RULEZ" in the effects column of random empty channels in random patterns. Since the values were zero, and none of the volume effects should have done anything, I presume it was triggering the IT MIDI macro command with Z00 and setting several channels' filter cutoff to 0, which would effectively mute the channel.


This is the first time i hear this module correctly on the win32 platform (Non DOS app like Cubic player or ST)

Thanks for fixing!
You can fool some of the people all of the time, and all of the people some of the time, but you can not fool all of the people all of the time.

- Abraham Lincoln

foo_dumb

Reply #52
Acknowleged, Algory.ptm playback is better than what ever i heard before with any other .ptm capable replayer.

Sometimes live's not fair. You fix one thing and anotherone breaks.
v0.9.2.9/0.9.2.10 reports a duration of 0:01 min. only for Warsaw.xm, it should be 4:07 min. Previous releases did'nt have that issue. I don't have any releases prior v0.9.2.9 anymore, so i can't test them. Sorry. I'll keep every release from now. If i find any broken stuff i'll test against every version.

foo_dumb

Reply #53
Uploaded v0.9.2.10.1.
  • Initializes channel sample numbers to zero (0=invalid, 1+=valid) which fixes MOD and XM files that use sample retrigger before setting a sample/instrument or playing any notes.
  • Remodeled global volume cut-off to allow a full five seconds of global silence. Fixes warsaw.xm.
  • Fixed resampler handling really low pitches resulting from portamento. Fixes a lockup which occurred 7 patterns into warsaw.xm after applying the above fix.

foo_dumb

Reply #54
Warswa.xm replay fixed, thank you. Found some problems with the .mod-format:
Fastcha2.mod Order 00, wrong replay of Channel 03. Order 01, also wrong replay of Channel 04.
Synergy.mod Order 01, wrong replay of Channel 03.
Cargo.mod Order 00, wrong replay of Channel 02 and 03.
Vision.mod Order 03, Channel 03 (Percussion) seems to be too much on the left.

Foo_Dumb Testfiles 5.zip
Everything checked against v0.9.2.9 - 0.9.2.10.1.

deus-ex

foo_dumb

Reply #55
Uploaded v0.9.2.11.
  • Implemented PSM format reader. Man, what a pain. Note that it will also read the variation used by the game, Sinaria.
  • Finally fixed instrument w/o note in MOD to always reset the note volume to the sample's volume. Fixes several MOD testcases. Bleh.
  • Corrected MOD 8xx panning command scale. Fixes Vision.mod.
  • Changed S3M loader to skip samples with zero length before checking for SCRS signature. Fixes recently posted S3M files.
  • Changed Foobar2000 frontend to check for top level headers so it only attempts to use one reader instead of passing the files down through all readers. This prevents files of one format which are later detected as invalid from hitting the MOD loader, which will try to load them as 15 sample modules.

foo_dumb

Reply #56
All .mod-format problems fixed.

The PSM format used in the Game Epic Pinball & Jazz Jackrabitt I?
Where can we download .psm files for examination?

Not that i want to distract you from foo_dumb, i wonder if you could comment on my post in the foo_mod thread here?

Thank you anytime.

deus-ex

foo_dumb

Reply #57
Hi, there's a problem playing tense.s3m (music from older Finnish game called KOPS). Playback stops at 43 seconds (playlist shows track length as 0:43), only plugin that has played this one correctly is foo_modplug (which still shows the length as 0:43 and doesn't show change in track name, but keeps playing after it)...

That track actually has more then one track in it, called something like multitrack in mods?

Anyway, that track can be found at SourceForge
or here

Edit: Upload problems solved, thanks to foosion.

foo_dumb

Reply #58
Quote
It seems that I can't upload any attachments, normal restriction ?[a href="index.php?act=findpost&pid=243676"][{POST_SNAPBACK}][/a]

Yes. Please use the upload forum for, well, uploading.

foo_dumb

Reply #59
Quote
Hi, there's a problem playing tense.s3m (music from older Finnish game called KOPS). Playback stops at 43 seconds (playlist shows track length as 0:43), only plugin that has played this one correctly is foo_modplug (which still shows the length as 0:43 and doesn't show change in track name, but keeps playing after it)...

That track actually has more then one track in it, called something like multitrack in mods?

Anyway, that track can be found at SourceForge
or here

Edit: Upload problems solved, thanks to foosion.
[{POST_SNAPBACK}][/a]


If you want to play this file past the loop in the first six orders, you must add them to the playlist manually, or dupe them, using the "Change starting order" option in the context menu.

I can add an option to disregard position jump effects, but that would kind of break some other modules.

I was also thinking of adding a feature to scan a whole module's order list for playable ranges of patterns, and automatically add all starting orders to the playlist when you open the module, but not yet. I'll work on that later.

Regarding yesterday's upload, a little diary.

First, I spent hours producing what I felt was a proper implementation of a PSM reader. This much, even with libmodplug as a reference, and with my own modifications from over a year ago to make the effects in Epic Pinball / Jazz Jackrabbit / One Must Fall 2097 sound right. I decided not to use the same hacks that Olivier did when he made his PSM reader:
  • I load all chunks to memory first, since DUMB is not designed in such a way to allow backwards seeking with its internal file reader system.
  • I handle the playback opcode list properly, including the panning and volume commands. Well, I don't handle the sample table map commands since most songs don't use them, and those that do just apply a redundant linear map command.
  • I also dump the effects of those pan/volume commands into patterns, but duplicate patterns so further use of the affected pattern doesn't contain the channel pan/volume effects. That's why you will see one or more patterns than if you load the file with MPT.
  • I also observe the DATE subchunk in the SONG chunk, which indicates the build of the library that produced the file. While not entirely important, it's currently the only way I identify the variant used by Sinaria. I could also simply check for inconsistency with the opcode list. See below.
After doing that, I had to profile and compile the final build for the release. The profiling build is used to reload all info from the module files in my module playlist, which forces a rescan of the files' info and also parses over their playable orders/patterns. This takes 7 minutes. Then, for completeness and to probe the mixing code, and restore the lost ReplayGain info, I apply the full track scanner to all of them, which takes about an hour. Then, I manually run the speed tester on several files using aliasing and linear interpolation to probe those resampling modes on test cases of uni- and bidirectional looping, as well as 8 and 16 bit samples.

Halfway through the profiling process several times, I noticed that I broke something, such as that MOD effect, and finally that S3M sample signature problem. I bothered to reprofile for MOD, but not for the S3M problem. The only thing the S3M problem affected was the S3M sample header loader anyway.

NOW, finally...

Uploaded v0.9.2.11.1.
  • I was f'n tired when I slapped together the quick file signature checker, and made it check the same byte twice for different values for PSM, and thus the PSM loader was optimized right out of the last version. I was too tired yesterday to notice why the release suddenly shrunk back to its previous size.
  • Removed the OKT extension until I actually add an Oktalyzer loader. Since it is a signed chunk format like PSM, it might be nearly as fun to add, but since it probably has a plain order list instead of a command list, it will probably be much easier.
  • Made the MOD loading step check for MOD/MDZ extension, so unknown file types (or known file types without a legal base signature) don't hit the MOD loader.
Oh, and a quick note on the Sinaria variant of the PSM format.

The PSM format identifies all patterns and instruments with four byte ID strings, although since the instruments are usually in linear order, I ignore the instrument subchunk in the SONG header and blow an error if the sample map is something other than what I expect. The command list uses a "play pattern" command followed by the pattern ID.

The Sinaria variant uses eight character pattern and instrument IDs, the sample headers are laid out slightly different, and the patterns use a different format for the note values*, and also different effect scales for certain commands.* You can see how this is a bit of a pain for the opcode list, as it makes the play pattern command four bytes longer, and commands do not include lengths. I could assume one way or another and guess that the file uses the other style when an error occurs in the opcode list.

* Popular PSM uses high nibble for octave and low nibble for note, for a valid range up to 0x7F, for a range of D-1 through D#9 compared to IT. (Maybe I should remove the zero check so it's C-1, but it doesn't seem to affect anything.) Sinaria PSM uses plain note values, from 1 - 83, for a range of C-3 through B-9.

* Popular PSM also uses an effect scale for portamento, volume slides, and vibrato that is about four times as sensitive as the IT equivalents. Sinaria does not. This seems to coincide with the MOD/S3M to PSM converter that Joshua Jensen released in the EPICTEST.ZIP file which can still be found on a few FTP sites. It converted effects literally, even though the bundled players behaved as the libraries used with Epic's games did and made the effects sound too strong.

I still have no idea how Sinaria came to have a variation of the MASI sound system, right down to the driver structure and naming convention. Maybe I should contact Joshua Jensen, if he even has a live and published address that is up to date.

For PSM sets:
  • Home of the Underdogs has the full version of Jazz Jackrabbit, as well as the registered version of Sinaria, but the legality of this "abandonware" is debatable. Link not provided so you have to go through some very basic work to find the site. Sheesh, I shouldn't even be naming it or mentioning that keyword.
  • [a href="http://robyrt.coolserver.net/omf2097.html]This site[/url] has the full version of One Must Fall: 2097, which is now freeware. It was also available from Diversions Entertainment as such for a while, but their site no longer has any information about it, so that might not be the case any longer. Who knows?
  • The shareware versions of Epic Pinball, Sinaria, and Jazz Jackrabbit are probably available from various sources. Both the shareware and registered versions of Sinaria include the full soundtrack, although I'm not sure if the shareware version contains identical files in regard to the DATE code I use to identify the variation.
The PSM files are not packed in any special way, just loosely included with the respective titles, so they should not be hard to test.

foo_dumb

Reply #60
Quote
If you want to play this file past the loop in the first six orders, you must add them to the playlist manually, or dupe them, using the "Change starting order" option in the context menu.

I can add an option to disregard position jump effects, but that would kind of break some other modules.

I was also thinking of adding a feature to scan a whole module's order list for playable ranges of patterns, and automatically add all starting orders to the playlist when you open the module, but not yet. I'll work on that later.
.....


Thanks for quick reply and for a really nice plugin
I didn't have noticed that context menu item before, and it fixed the problem at least partially. That scanning feature would be a really nice extra.

Btw. I tried PSM playing with Jazz Jackrabbit, worked well.

foo_dumb

Reply #61
Output of PSM format sounds excellent, better than what i used to get by converting .psm files with "Chronos Module Converter". Very good job, Kode54.
Are the sources of "Open Cubic Player" of any value for you?

Spx-Oceanofdark.it : Order 33/Channels 49 and 50, 53 to 56, Effect "Exx" (Pitch slide down) sounds wrong.
Found another .s3m, Laterna Magicus.s3m, that fails to load with foo_dumb.

EDIT: Foo_Dumb only loads "Music0.psm" from Extreme Pinball's music set which is made of five .psm files.

deus-ex

foo_dumb

Reply #62
Just what I always wanted, a PSM with multiple SONG chunks. I'll deal with that subsong issue as well as order/subsong hunting soon.

foo_dumb

Reply #63
Game "Silverball", 01-TITLE.S3M, a converted .psm file (found on the inet, i don't have the original .psm) :
- Order 00, Channel 03, 05 sec. audible, 03 sec. silent, again 05 sec. audible. This pattern continues.
- Order 02, Channel 04, is interupted immediately after starting to play. This repeats at every new Order.

deus-ex

foo_dumb

Reply #64
Uploaded v0.9.2.12.
  • Extended PSM reader to support multiple subsongs. All SONG chunks will be added to the playlist when you add or open PSM files. Some chunks may be unplayable, such as the silence subsong in MUSIC_A.psm
  • Added an optional playable orders scanner which will scan all files for unplayed non-silent orders and add them all to the playlist when you add or open non-PSM formats. This feature is disabled by default. Please report any problems you find, other than single song files randomly adding junk subsongs to the playlist due to having playable orders outside of the original song.
  • Changed the context menu system to reflect subsong changes for PSM. PSMs can no longer be commanded to start on a particular order.
  • Added finite looping options for people who want songs to repeat a limited number of times before ending. Hopefully, this works as intended in most cases.
  • Note off and portamento to note effect in the same row now works. Fixes Spx-Oceanofdark.it.
  • S3M loader handles cases where the pattern data offset table points to the same place for multiple patterns by discarding the duplicates and amending the orders list. Fixes Laterna Magicus.s3m. Funny, the orders list used the dupe, but not the original.
  • S3M sample loader truncates loops which are longer than their respective samples, rather than killing the loop altogether. Fixes 01-TITLE.S3M. Bad converter, bad! No biscuit!
  • Update - Track indexer boosted to v2 API with metadata precaching, so indexing subsongs from archives is not sofa king slow.

foo_dumb

Reply #65
All previously reported problems fixed. Subsong feature works good, no problems found so far. Can you add subsong info display ala XMPlay, e.g. Total subsongs, Lenght, Orders? And possibly add subsong number to corresponding playlist entry?

Music from Silverball Plus 2, a set of nine .psm files, wont load.

deus-ex

foo_dumb

Reply #66
Subsong index is conveniently a core feature, so you can add it to your own playlist display by using %_subsong%. For most files, this field will be zero, so you can include the extra information with $ifgreater(%_subsong%,0,blah).

However, for all formats other than PSM, the subsong index contains the order number where playback starts, rather than a simple index starting at zero. I do not plan to change this.

As for the other extra information, due to how subsong scanning is implemented, I am not likely to ever support information other than that which is relevant to a single playable track. Counting how many orders are played, how many subsongs there are in total, and total playback time for all subsongs would further complicate the process and likely make the scanner even slower than it already is.

The Silverball series, as is possible with some other early titles, featured a completely different PSM format, which is conveniently documented and should be easier to support. I will add support for the "old" PSM format as well as MTM in my next run of changes, which might happen in a few days or so.

The only quirks between these actual PSM files and the documentation is the fact that they contain PORD/PPAN/PPAT "headers" when the format didn't call for actual section/chunk headers. The header points directly to the data, which is just past the fake headers. Oh, and the format calls for the version field to contain 0x10, but Silverball's files contain 0x01. I'll accept that as long as the rest of the data is valid.

foo_dumb

Reply #67
Can't download the plugin from kode54's site, error message:
This site has been suspended.

Any other sites hosting that file?

foo_dumb

Reply #68
Kode54's plugin site is temporarily unavailable. You can download current release v0.9.2.12 of Foo_Dumb here.

deus-ex

foo_dumb

Reply #69
Thanks for hinting the %_subsong% variable. That's all i need to get going since subsong duration is also allready reported:
$ifgreater(%_subsong%,0,'('$if($strcmp(%__codec%,PSM),Subsong,Order) $num(%_subsong%,2)')',)
Display "(Subsong <2 digit number>)" for PSM format files, for other module formats "(Order <2 digit number>)" representing startorder of subsong.

Can you add dynamic tech info for current played order?

Several modules are reported to have subsongs when there are none. XMP seem to take further data into acount to decide for a valid subsong, it doesn't display subsongs for the modules in question. Tb-Where.it: Subsong (nonexistant) is displayed at Order 29 with a duration of 2:43:06 hours, loading/playbackspeed is ultra slow.

deus-ex

foo_dumb

Reply #70
Uploaded v0.9.2.12.2.
  • Removed checkpoint list / length probing from most places, so length is only probed by subsong scanner or in input if core requests file info. This should speed up loading as well as playback.
  • Added note-off and out of range notes to silence scanner, so silent patterns such as the one at the end of Tb-Where.it are ignored by the subsong scanner, and also trimmed by the silent patterns remover. The global volume slide was already cutting playback before it hit that last order, so it was seen as unplayed by the scanner.
  • Oh, and .1 which was bugfix that I made and released after I discovered my host was suspended, fixes track indexer for PSMs with APE tags, no thanks to stupid VC7. I thought copying classes without appropriate copy constructor/function was supposed to result in an error or something...
Download it here for now.

foo_dumb

Reply #71
This Examples demonstrate several problems i found with subsong detection and one .s3m-file which fails to load with all versions of foo_dumb regardless of subsong feature.
This is only a superset of many more files i found to have issues with subsong detection. If you tell me what to look for in the patterndata i can investigate and be more specific instead of just handing over the problem files.

deus-ex

foo_dumb

Reply #72
Uploaded v0.9.2.13.
  • Changed subsong scanner to check for every row in each order, clears up some issues, see below.
  • Fixed bit array handling of a completed pattern loop. Fixes some more problems with Jos-Dr4k.xm and F0x-Test.xm, as well as with the subsong finder.
  • Removed more thorough level of loop checking from array handling code, as it causes the above change to break Jos-Dr4k.xm or F0x-Test.xm depending on how I handle things. The only visible effect is that songs will loop more than once per repetition on pattern jumps if you use the context menu function to start them somewhere in the middle.
  • Fixed S3M sample length and loop positions for 16-bit and/or stereo samples in files written by IMAGO Orpheus. Nobody else appears to handle this problem, either. Fixes Spheric.s3m. DUMB was unable to load it because the misinterpreted length fields would cause it to load too much sample data, and its dumbfile interface does not support seeking backwards.
  • Changed the start-at-order functionality of the renderer initialization code to set the restart position to the first valid order before or at the specified position. Fixes subsongs in Qsn-Dove.it.
  • Added realtime order/pattern/row info display through mod_dyn_* info fields, accessible through %__mod_dyn_*% in formatting scripts. I may add other fields in the future, such as current speed/tempo. Updates are only as precise as every 576 samples, so the display frequency may be a bit off now and then. The fact that I render 576 samples per run() is just a habit, and a reasonable trade-off between more audio_chunks per second vs. less CPU usage spiking and more responsive dynamic info. Or something. I usually use 576 in most things anyway so CPU usage doesn't spike from rendering a lot of samples every 500-1000ms.
There are still some minor issues with the subsong scanner. Kookoo.xm and Yoggi.xm no longer report the unplayed and possibly trimmed silence padding order on the end of the list as an extra sub-song. Some other songs may still have odd subsongs, but this should mostly be a wanted side-effect. Please report further breakage.

foo_dumb

Reply #73
Here goes next round for v0.9.2.13:
Providing downloadlinks to files on the inet cause uploading would take far to long.

Nonexisting Subsong:
ftp://ftp.modland.com/pub/modules/Impulse...20philosophy.it
ftp://ftp.modland.com/pub/modules/Impulse...arry%20right.it
ftp://ftp.modland.com/pub/modules/Fasttra...ng%20moments.xm
ftp://ftp.modland.com/pub/modules/Fasttra...e%20tomorrow.xm
ftp://ftp.modland.com/pub/modules/Fasttra...reminiscence.xm
ftp://ftp.modland.com/pub/modules/Fasttra...ulator%20man.xm
ftp://ftp.modland.com/pub/modules/Fasttra...Radix/kookoo.xm
ftp://ftp.modland.com/pub/modules/Screamt...%20hedonism.s3m


Subsong playtime adds main song time:
ftp://ftp.modland.com/pub/modules/Impulse...g/deep%20joy.it
ftp://ftp.modland.com/pub/modules/Impulse...g%20rainbows.it
ftp://ftp.modland.com/pub/modules/Impulse...f%20infinity.it
ftp://ftp.modland.com/pub/modules/Protrac.../crossroads.mod
ftp://ftp.modland.com/pub/modules/Protrac...!-vibes.mod
ftp://ftp.modland.com/pub/modules/Protrac...lieving%201.mod
ftp://ftp.modland.com/pub/modules/Protrac...ec%20rudolf.mod
ftp://ftp.modland.com/pub/modules/Screamt...-%20erosion.s3m
ftp://ftp.modland.com/pub/modules/Screamt...eversmoking.s3m
ftp://ftp.modland.com/pub/modules/Screamt...Motion/nova.s3m
ftp://ftp.modland.com/pub/modules/Screamt...d%20reality.s3m
ftp://ftp.modland.com/pub/modules/Screamt...ht%20vision.s3m
http://www.modarchive.com/cgi-bin/download.../M/menutune.s3m


Won't load with subsong scanning: (!!!be sure to have taskmanager loaded in background BEFORE trying, Cpu usage goes towards 100%!!!)
ftp://ftp.modland.com/pub/modules/Fasttra...0the%20light.xm
ftp://ftp.scene.org/mirrors/hornet/music/...1998/oracle.zip  -> File in archive: Accoust.it
http://www.hydrogenaudio.org/forums/index....pe=post&id=1011 -> Discvry.mod
http://www.hydrogenaudio.org/forums/index....pe=post&id=1003 -> Jos-Dr4k.xm, supposed to be fixed with current version, still won't load here
Foo_Dumb Testfiles 8.rar -> Jeff60.it

Reports wrong playtime:
Inside Foo_Dumb Testfiles 8.rar -> Outofs.mod (VBlank MOD) = Order 61-68 plays at wrong speed, thus playtime is 10:54 instead 07:20 min.
http://www.hydrogenaudio.org/forums/index....ype=post&id=967 -> Rl_Poui.it (allready reported)


Thanks for implementing dynamic Order/Pattern/Row info.
Looking forward to dynamic speed/tempo info, plus maybe current/max. used channels ala IT?

deus-ex

foo_dumb

Reply #74
Nonexisting Subsong:
  • ninja philosophy.it - Silent pattern detection fails to eliminate a pattern on the end that contains NINJA KNOWS spelled out in the effects column. Not likely to be fixed without breaking the scanner or complicating it.
  • whispering moments.xm - Global volume is faded to complete silence for a complete five seconds, which causes playback to end. Yet, at least two orders are left unplayed, so they appear as another subsong. Removing global volume detection would break lengths / finite playback of other files.
  • back to before tomorrow.xm - Ditto.
  • kookoo.xm - Ditto.
  • high on hedonism.s3m - Silent pattern detection fails, due to Set Global Volume effect, and with a non-zero value at that.
  • rotate carry right.it - A tricky silence pattern or such. Increasing the global volume silence threshold to 12 seconds fixes it, but will add length to various files.
  • reminiscence.xm - Ditto.
  • triangulator man.xm - Ditto.

Subsong playtime adds main song time:
  • deep joy.it - Order 32 is effectively skipped, so the scanner sees it as unplayed. When it finishes playing, the song restarts.
  • painting rainbows.it - Unplayed orders which actually pattern jump into the main song. I guess you get an alternate intro for free.
  • elements of infinity.it - Global silence detection was cutting this song in half due to a long period of silence, followed by the final part.
  • crossroads.mod - Unplayed order, playback restarts after the end of the order list.
  • mystikal!-vibes.mod - No idea? This one doesn't appear to be a problem anymore. It may have been that more thorough row scanning I added in 0.9.2.12.2...
  • seeing is believing 1.mod - Unplayed orders due to pattern jump.
  • habit avec rudolf.mod - The second one is a real subsong, complete with its own self-contained pattern jumping, but the second one doesn't have any means to force silence after it finishes. I've hacked crap to set song restart position to match the requested start order. Meh.
  • unreal - erosion.s3m - Real subsongs. Those which include other subsongs or parts thereof do so intentionally through use of pattern jump effects.
  • unreal - bluff eversmoking.s3m - Ditto.
  • unreal - night vision.s3m - Ditto.
  • nova.s3m - Subsong intentionally pattern jumps to the first order.
  • 2nd reality.s3m - Apparently, intentional alternate intro bits that lead into other parts of the song. Although start order 66 doesn't really produce an interesting section, start order 69 does. Too bad 66 eventually plays over 69, so the scanner doesn't hit it. Nice of them to separate these parts with a silence pattern instead of end-of-orders. Although, I don't know if that was even possible with ST3, or at least it may not have been in such early versions.
  • menutune.s3m - Real subsongs again. Any redundant patterns are intentional.

Won't load with subsong scanning:
  • find the light.xm - Wahoo, song sets speed zero and leaves a note or two hanging. I could mimic how FT2 would handle this and let it run for a while... Which means I basically have to let this run and probe for digital silence. Whee. Anyway, it was freezing because the speed zero command would effectively prevent it from marking the row as played, and thus the pattern as well, so subsong scanner would then try to scan that pattern. Repeatedly.
  • Accoust.it - Silent pattern detection problem, among other things. See below.
  • Discvry.mod - This doesn't appear to be broken.
  • Jos-Dr4k.xm - Ditto.
  • Jeff60.it - Trim silent patterns caused freezes because the IT renderer doesn't like patterns with zero rows.
Aside from the occasional detection glitches, most of the redundancy is intentional. Samples aren't always the only thing shared by subsongs in multi-song patterns.

Also, you sometimes find hidden or unused orders in songs. This is also mostly a wanted side-effect of the scanner. If you find it to be more detrimental than useful, you're welcome to disable it.

Reports wrong playtime:
  • Outofs.mod - The same effects converter was being used for both MOD and XM, and it was not correctly translating F20, which sets speed to 20h in MOD, but tempo to 20h in XM.
  • Rl_Poui.it - Subsong scanner's length probe will never see the evil silent pattern of death. If you disable the subsong scanner, or reload the info from the file manually, the silent pattern will be counted unless you enable "Trim silent patterns."
Uploaded v0.9.2.14.
  • Silent pattern trimming will only remove patterns which appear to make use of high speed values and/or pattern delay/loop.
  • Silent pattern trimmer produces a single row empty pattern instead of a null pattern, as that caused things to freeze. Fixes Jeff60.it.
  • Fixed MOD Fxx effect so 20 correctly sets speed and not tempo.
  • Fixed channel volume effect on NNA voices. Hopefully, this is the extent of channel effects that affect NNA voices.
  • Increased global volume silence check to a whole 12 seconds. Kills some of the erroneous subsongs.
  • Forced restart position to requested order, required to make at least the last subsong in habit avec rudolf.mod stop instead of playing the main song. Also changes the behavior of starting a subsong in the middle through the context menu dialog, not that that was entirely perfect before.
  • Set played row on speed zero effect in XMs, so files which are stopped by the callback do not freeze the subsong scanner. I may add functionality to allow these files to fade to digital silence in the player before looping, but it could be prone to breaking.
  • Added dynamic speed, tempo, channels, and channels_max. Whee.
I don't know about the more useless speed/tempo/channels info, but at least the realtime order/pattern/row info could be used to implement a realtime pattern display. Getting note dots and such out of the renderer will prove to be more of a pain. This is if I even decide to implement any of this visualization spooniness. Who knows? :B

Thanks for a lot of nifty files. I might decide to download that entire site some day, if not for the fact that it's so slow.