After previously making a tracker-to-MML converter for Famitracker --> Pently, I made another for Furnace --> Terrific Audio Driver. It's definitely far from supporting everything that it could (for instance, the ECxx and EDxx effects could work, but could potentially make a mess of the converter's logic so they aren't in yet). It also only converts individual songs (though it will convert every song it finds in a Furnace file) and does not attempt to set up a Terrific Audio Driver project file for you, so you need to set up instruments yourself TAD-side.
A lot of the complicated logic involved looking ahead to see what the final state of an effect or note will be in the future, because MML needs that up-front, whereas a tracker embeds that information by starting a note/effect and then the length is just how many rows it is until there's something else to stop it.
Hopefully this makes TAD more enticing to SNES homebrew devs! I intend on using this for my own projects, since I find trackers easier when I can just press keys on the keyboard and get something that sound sort of ok without knowing note names.
Furnace to Terrific Audio Driver converter
-
NovaSquirrel
- Posts: 537
- Joined: Fri Feb 27, 2009 2:35 pm
- Location: Fort Wayne, Indiana
Furnace to Terrific Audio Driver converter
You do not have the required permissions to view the files attached to this post.
-
Nikku4211
- Posts: 616
- Joined: Sun Dec 15, 2019 1:28 pm
- Location: Bronx, NY
Re: Furnace to Terrific Audio Driver converter
Hopefully it does. You plan on making a TAD converter for IT files too? I'm sure it'll make the SNESMOD crowd consider.NovaSquirrel wrote: Thu Jul 03, 2025 8:01 am After previously making a tracker-to-MML converter for Famitracker --> Pently, I made another for Furnace --> Terrific Audio Driver. It's definitely far from supporting everything that it could (for instance, the ECxx and EDxx effects could work, but could potentially make a mess of the converter's logic so they aren't in yet). It also only converts individual songs (though it will convert every song it finds in a Furnace file) and does not attempt to set up a Terrific Audio Driver project file for you, so you need to set up instruments yourself TAD-side.
A lot of the complicated logic involved looking ahead to see what the final state of an effect or note will be in the future, because MML needs that up-front, whereas a tracker embeds that information by starting a note/effect and then the length is just how many rows it is until there's something else to stop it.
Hopefully this makes TAD more enticing to SNES homebrew devs! I intend on using this for my own projects, since I find trackers easier when I can just press keys on the keyboard and get something that sound sort of ok without knowing note names.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
-
NovaSquirrel
- Posts: 537
- Joined: Fri Feb 27, 2009 2:35 pm
- Location: Fort Wayne, Indiana
Re: Furnace to Terrific Audio Driver converter
I wasn't planning on supporting Impulse Tracker files, but if people would actually use that feature then I could have a go at it at some point. I figured that people would prefer trackers that do simulate the console over trackers that don't. I do notice that Furnace lets you open an Impulse Tracker file and then save it as a Furnace file, so maybe it would be easier to support a file that's gone through that than to add a whole second converter.Nikku4211 wrote: Thu Jul 03, 2025 11:51 amHopefully it does. You plan on making a TAD converter for IT files too? I'm sure it'll make the SNESMOD crowd consider.
-
Nikku4211
- Posts: 616
- Joined: Sun Dec 15, 2019 1:28 pm
- Location: Bronx, NY
Re: Furnace to Terrific Audio Driver converter
I haven't used Furnace in a long time, but I'm not sure about the quality of importing an .IT into Furnace (if it even supports importing an IT when specifically making a SNES song) and then converting that conversion to TAD.NovaSquirrel wrote: Thu Jul 03, 2025 12:04 pm I do notice that Furnace lets you open an Impulse Tracker file and then save it as a Furnace file, so maybe it would be easier to support a file that's gone through that than to add a whole second converter.
I guess Furnace at least tries to emulate the S-DSP (though I have no idea how accurate it is) including actually emulating S-DSP FM and native white noise and the famous delay module capabilities. Though apparently it's pretty lax about how you use the SPC ARAM, even more lax than the SNESMOD converter is about it, since it doesn't take into account the driver's size in ARAM(since no official driver exists for it last I checked).
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
-
tepples
- Posts: 22994
- Joined: Sun Sep 19, 2004 11:12 pm
- Location: NE Indiana, USA (NTSC)
Re: Furnace to Terrific Audio Driver converter
Support for S3M, XM, or IT files would help people who can use OpenMPT and cannot use Furnace. This might be for system requirements reasons or for accessibility API support reasons.
-
Nikku4211
- Posts: 616
- Joined: Sun Dec 15, 2019 1:28 pm
- Location: Bronx, NY
Re: Furnace to Terrific Audio Driver converter
You checked the Furnace tracker for an accessibility API? Or does your computer actually struggle with Furnace?tepples wrote: Sun Jul 20, 2025 10:51 am Support for S3M, XM, or IT files would help people who can use OpenMPT and cannot use Furnace. This might be for system requirements reasons or for accessibility API support reasons.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.
-
tepples
- Posts: 22994
- Joined: Sun Sep 19, 2004 11:12 pm
- Location: NE Indiana, USA (NTSC)
Re: Furnace to Terrific Audio Driver converter
Mostly it's that I know Furnace draws its own GUI through SDL. This is the paradigm that beware, developer of the Game Boy emulator bgb, refers to as "frame buffer UI." And it rarely if ever interacts with each operating system's screen reader support API.
I myself don't use a screen reader. I'm aware of at least two musicians on this forum who do.
I myself don't use a screen reader. I'm aware of at least two musicians on this forum who do.
-
NovaSquirrel
- Posts: 537
- Joined: Fri Feb 27, 2009 2:35 pm
- Location: Fort Wayne, Indiana
Re: Furnace to Terrific Audio Driver converter
Has anyone given the converter a try? Are there any important features that stick out as missing from the readme? I'd like to implement ECxx (delayed cut) and EDxx (delayed note) in at least a limited fashion - like limited to a row or less in duration, and not combined together? It should also be possible to do quick legato (E8xy, E9xy), volume portamento (D3xx, D4xx), tremolo (07xy), and panbrello (84xy) but I don't know the demand of these effects relative to each other. There's also echo, and the converter needs to be able to convert the effects that configure it (and it would help a lot to have an example Furnace file that shows off echo; I wasn't able to get it working when I gave it a brief try.)
Furnace file support so far has required reverse engineering what Furnace does due to lack of sufficient documentation on what the effects actually do, requiring me to open the debugging tools and step through the song tick by tick. OpenMPT's manual is a lot better and it does seem to actually specify all of the units, so I should be able to avoid that if I were to add Impulse Tracker file support. And looking at how these effects work, I'm pretty sure I can implement IT file support by translating IT to the same data structure I'm using to represent a parsed Furnace file and then running it through the same conversion logic.
Furnace file support so far has required reverse engineering what Furnace does due to lack of sufficient documentation on what the effects actually do, requiring me to open the debugging tools and step through the song tick by tick. OpenMPT's manual is a lot better and it does seem to actually specify all of the units, so I should be able to avoid that if I were to add Impulse Tracker file support. And looking at how these effects work, I'm pretty sure I can implement IT file support by translating IT to the same data structure I'm using to represent a parsed Furnace file and then running it through the same conversion logic.
-
NovaSquirrel
- Posts: 537
- Joined: Fri Feb 27, 2009 2:35 pm
- Location: Fort Wayne, Indiana
Re: Furnace to Terrific Audio Driver converter
I added support for converting Impulse Tracker files (full details on the readme) that converts the file to the same internal representation the converter uses for Furnace files, and runs it through the same logic. It's not a literal conversion to Furnace format and there is room for me to carry details through to the final MML conversion logic; for instance, the 0-64 volume range is converted directly to 0-255 instead of converting to 0-127 first.
I also added a command to extract samples from the file and dump them in a folder; for Impulse Tracker this uses the xmodits library and it's set to output wav files. The user must use SNES-appropriate samples in the .it file with a length that is a multiple of 16. For Furnace the BRR file is exported with a loop point prefixed if applicable (which I'm not even sure you can do with the UI normally, so the tool might be helpful for that even if you aren't using it for MML conversion.)
The converter can also now set up a Terrific Audio Driver project folder for you with the samples extracted, the instruments set up, the songs as individual MML files, and a project file specifying everything. Ideally there would later be a way to have it manage a preexisting folder, to avoid disturbing sound effects and such set up for a game, but that can come later. For Furnace, envelope information is taken from the instrument, and for Impulse Tracker the envelope information is currently ignored and "gain F127" is used. If people would like to have it generate SNES envelopes from IT envelopes then I'm going to need some help with that.
There's lots of incomplete stuff and I'm sure there are going to be bugs, so please be nice.
Later I would like to add a feature in which IT instruments which use sample maps and only have a few notes defined turn into TAD samples (which are like instruments but only have a limited range of sample rates defined).
I also added a command to extract samples from the file and dump them in a folder; for Impulse Tracker this uses the xmodits library and it's set to output wav files. The user must use SNES-appropriate samples in the .it file with a length that is a multiple of 16. For Furnace the BRR file is exported with a loop point prefixed if applicable (which I'm not even sure you can do with the UI normally, so the tool might be helpful for that even if you aren't using it for MML conversion.)
The converter can also now set up a Terrific Audio Driver project folder for you with the samples extracted, the instruments set up, the songs as individual MML files, and a project file specifying everything. Ideally there would later be a way to have it manage a preexisting folder, to avoid disturbing sound effects and such set up for a game, but that can come later. For Furnace, envelope information is taken from the instrument, and for Impulse Tracker the envelope information is currently ignored and "gain F127" is used. If people would like to have it generate SNES envelopes from IT envelopes then I'm going to need some help with that.
There's lots of incomplete stuff and I'm sure there are going to be bugs, so please be nice.
Later I would like to add a feature in which IT instruments which use sample maps and only have a few notes defined turn into TAD samples (which are like instruments but only have a limited range of sample rates defined).
-
NovaSquirrel
- Posts: 537
- Joined: Fri Feb 27, 2009 2:35 pm
- Location: Fort Wayne, Indiana
Re: Furnace to Terrific Audio Driver converter
More changes:
- Support for single-tick volume macros (which currently only scale the volume column, not volume effects)
- Simple version of EDxx (Note delay) which just inserts a wait before the note and shortens its duration
- Furnace instruments with sample maps turn into TAD samples, but you can put a command in the name to keep it as an instrument (or multiple instruments, if multiple samples are used)
- You can put a command in a Furnace instrument name to turn it into a TAD sample without a sample map, using the notes that are used with that instrument in the song
- Duplicate instrument names are renamed, as are instrument names with disallowed characters
- If a .brr file exists that has the same name as a sample's .wav file, the converter will use the .brr file instead in the project file
- The converter will look for commands in the instrument's "filename" field, allowing the user to specify SNES envelopes and gain
- Sample maps are now supported on Impulse Tracker instruments (and will turn into TAD samples if a command for that is in the filename field)