Skip to content

Releases: mschwendt/libtfmxaudiodecoder

Version 1.0.14

Choose a tag to compare

@mschwendt mschwendt released this 22 Jun 20:30

API/ABI compatible enhancements update.

If you use the private C++ API, rebuild because of ABI changes.

  • Add two very rare macro commands. Enable them by default for the family of TFMX player variants called TFMX Pro:

    • Implement macro command $31 for its only user, Turrican III title, where in some macro scripts it is used to trigger key up on channel/voice 0 and 1. Name the macro "Key up" in debug output. There are rips of the soundtrack that have been modified so the macro scripts execute macro 4 Wait instead as not to break in TFMX players where macro $31 is missing.

    • Implement macro command $30 that's found in the TFMX players of Gem'Z and Turrican III. It's also used by Denny (level 6), the soundtrack of an unreleased game, but the way it's used it's a NOP except for Gem'Z loader and credits. Name the macro "BranchIfSame" in debug output, because it can branch within a macro script if consecutive notes are played with the same macro instrument. For example, in Gem'Z, sound synthesis isn't reset fully for subsequent notes.

  • Add some findings to the document about bad rips.

  • Expand some comments, e.g. on truncated TFMX MDAT files.

Version 1.0.13

Choose a tag to compare

@mschwendt mschwendt released this 14 Jun 23:15

API/ABI compatible bug-fix and enhancements update.

If you use the private C++ API, rebuild because of ABI changes.

  • Reset more sequencer variables before detecting inactive songs.

  • Fix for Turrican II loader jingle. Curiously, there are two versions of it in music collections. The original data, sometimes called unfixed. And a sometimes so-called fixed version where two macro scripts have been modified, possibly as to make them compatible with some TFMX Pro player. We now support both versions of that loading music.

  • Bonus fix for A Prehistoric Tale (music4). Where the original soundtrack glitches because its player applies pattern transpose immediately and thus prematurely (in corner-cases), we fix that on-the-fly.

  • During init() call detect() earlier as to reject unrecognized data early and avoid reallocating the internal buffer already.

  • Update a few comments, and remove some unused lines of code.

Version 1.0.11

Choose a tag to compare

@mschwendt mschwendt released this 11 Jun 11:19

API/ABI compatible bug-fix and enhancements update.

  • Support loading Einmal Kanzler sein and its single "smpl.set" file. Also look for "SMPL.set" since that naming scheme is found in documentation.

  • Reject HippelDecoder re-init, if decoder hasn't been initialized before. Thanks, Timothy!

  • Protect the TFMX sequencer from getting stuck if encountering bad, corrupted, invalid data that accidentally triggers immediate pattern end without advancing to a next track step properly.

  • Sledge Hammer One (aka Hammer One) by Ern0 once more: Eliminate subsong at step 0, which isn't inactive but doesn't play anything either. Song table is wrecked!

  • Bundesliga Manager HATTRICK (aka BMHattrick) features only a single title theme using 7V mode. Invalidate the second song, since as a fragment of the title theme it is missing the track commands to initialize 7V mode.

Version 1.0.10

Choose a tag to compare

@mschwendt mschwendt released this 10 Jun 10:57

API/ABI compatible update.

  • Fix Z-Out ingame level 2 on-the-fly. Only the original version is affected (some edited/repaired versions are not). Also mark the entire soundtrack as a special variant of TFMX with some features newer than v2.2 (e.g. scaled vibrato/portamento) but strictly requiring the older channel on/off implementation for some of the instrument macro scripts.

  • Eliminate a few more inactive subsongs that end immediately due to a Track STOP command: Brainball, Masterblazer (race), Turrican (title)

  • Flag as TFMX v1 some more modules after skimming over their player machine code: Grand Monster Slam, Oxxonian, X-Out, Circus Attractions, Gordian Tomb. Whether a module requires old-style features like non-scaled vibrato/portamento cannot be detected, because there is no hint about it in the music data.

  • Fix Hollywood Poker Pro title theme on-the-fly. Two instruments by mistake specify sample repeat length as number of bytes instead of number of words. (More...)

  • Add a Dynamic Synthesizer decoder, although only three soundtracks have been created with it before the first music made in TFMX format. (More...)

  • Blacklist R-Type title theme, if its sample file doesn't pass a basic check. If your private collection is affected, fetch a repaired copy from e.g. Modland.

  • Fix bad clicks in Danubius Replay (aka Gitar) by Ern0 on-the-fly by centering over 80% of the sample data properly around signed zero. An unusual fix for sure, but the original sample data are messed up.

  • Add and use ax_cxx_compile_stdcxx.m4 from autoconf-archive hoping it will help with detecting C++ compiler flags.

  • Add readme file about file naming schemes.

  • Expand some comments on TFMX v1/v2.

Version 1.0.9

Choose a tag to compare

@mschwendt mschwendt released this 23 May 22:27

API/ABI compatible bug-fix update.

  • Fix regression caused in v1.0.4 that reduced the duration of some songs accidentally via changes to "loop mode". Thanks, Arnaud!

Version 1.0.8

Choose a tag to compare

@mschwendt mschwendt released this 22 May 19:25

Kickstarter campaign of "Wings of Death - Reworked Anthology" by the German Remix Group has been successful!


API/ABI compatible bug-fix and enhancement update.

If you use the private C++ API, rebuild because of ABI changes.

  • Click removal for Turrican II level 4 via updates to the play loop plus changes to macro commands. These clicks also exist in recordings made with DeliTracker and Eagleplayer.

  • Flag Turrican soundtrack as a TFMX v1 variant.

  • Fix a long standing glitch that caused sporadic gaps of 20 ms with some Masterblazer tracks.

  • Fix a typo in TFMX v1 portamento. Affects R-Type, for example!

  • R-Type samples file on Modland is bad. Mention that in the readme. The Wanted Team offers a good rip where the size of the samples file is correct, too.

  • In core TFMX v1 apply the 0xfe mask to vibrato amplitude parameter, but make it a customizable for variants like Turrican.

  • Fix TFMX v1 player as to ignore note/voice detune in SetNote macro command. Later variants added it always. Impact of the fix is very low, given how very few mods are played as TFMX v1 so far.

  • Flag R-Type title as a TFMX v1 variant.

  • Flag Rock'n'Roll intro theme as TFMX v1.

  • Flag several music files by Ern0 as a TFMX v1 variant.

  • Fix Sledge Hammer One by Ern0 on-the-fly. Song table is wrecked.

  • Fix Puzzy by Ern0 on-the-fly as to enable both songs.

  • Blacklist mdat.blade of destiny - titel (7ch) because it is fubar.

  • Refactor the main player loop as to support different execution order. Flag Quik'n'Silva soundtrack accordingly.

  • Enhance debug output with milli-seconds timestamp accuracy.

Version 1.0.7

Choose a tag to compare

@mschwendt mschwendt released this 02 May 16:02

API/ABI compatible bug-fix update.

  • Fix vibrato strength for the Hippel TFMX player variant that can toggle vibrato half-speed mode via the vibrato speed parameter. Curiously, affected is the original ingame soundtrack from Wings of Death, which requires a player with TFMX vibrato instead of COSO vibrato. Potentially affecting some other files, too!

Kickstarter campaign of "Wings of Death - Reworked Anthology" by the German Remix Group is live!

Version 1.0.6

Choose a tag to compare

@mschwendt mschwendt released this 02 May 10:00

API/ABI compatible bug-fix update.

  • Fix astaroth4.hipc and shaolin ingame 5.hipc which have slipped under the radar (since version 1.0.0 actually, which is quite embarrasing, isn't it?). They are in TFMX COSO format but use TFMX portamento, not COSO portamento. The code to handle them has been there all the time but wasn't active. The converted files in Future Composer format were not affected because of using FC's different portamento parameters.

Kickstarter campaign of "Wings of Death - Reworked Anthology" by the German Remix Group is live!

Version 1.0.5

Choose a tag to compare

@mschwendt mschwendt released this 26 Apr 12:29

API/ABI compatible update.

  • Eliminate more invalid sub-songs. Part of that involves evaluating the header's compression identification fields as to figure out how long the sequencer's track table is.
  • Actually implement the rarely used, delayed DMAoff macro variant as it's audible in Turrican 2 title track. Thanks, JHP!
  • A few comments here and there.
  • Minor enhancements to the debug output.

Version 1.0.4

Choose a tag to compare

@mschwendt mschwendt released this 14 Apr 19:22

API/ABI compatible update.

  • More accurate song end detection. Duration of some songs is shorter now.
  • Disable Track Mute for Software Manager - Titel and BiFi Adventure 2 - Ongame. Track Mute can't be disabled by default, because Logical ingame songs require it (or an alternative implementation) as to turn off track 8.
  • Fix TFMX-MOD support, so the smart pointer usage doesn't work on value 0 bytes accidentally when skipping through the undocumented crap at the end.
  • Fix regression: v1.0.2 broke Jim Power level 1.
  • Improve rejection of invalid songs.
  • Improve detection of valid songs. Oxygen and Flying world by Erno work now.
  • Improve enforced restart of songs when using "loop mode".