First post, by MusicallyInspired
- Rank
- Oldbie
Update (05/03/2023): SCI2FB v1.01 update! It now supports older patch files that have only one sysex bank:
-KQ4
-PQ2/LSL2 (they're identical, much like SQ3 and KQ1SCI)
-LSL2old (LSL2 has an older FB-01/IMF patch file with very different instruments)
-Silpheed (the only non-SCI game with an SCI-formatted patch file)
SCI2FB performs the reverse process to that of FB2SCI! (convert SCI FB-01 patch file into 1 or 2 FB-01 sysex bank files depending on how many are in the patch)
https://github.com/MusicallyInspired/SCI2FB
===============
Original post:
I'm currently composing music for Ryan Slattery's Betrayed Alliance Book 2 SCI0 adventure game (there's a recently released demo available for download). I'm aiming to compose for as many of the original music devices that SCI0 originally supported as possible. So far I successfully worked in support for MT-32, Adlib, PC Speaker, Tandy, and now the Yamaha FB-01. (next on the list is the CMS/Game Blaster)
I worked out (with a lot of research and a lot of help) the format of the FB-01's bank sysex files (which aren't raw sysex like other synth dumps are) and wrote a program that converts the data to Sierra's FB-01 Patch format. My program reconstitutes the data from the bank files (two banks of 48 instruments each) back to standard sysex messages and writes them to an output SCI patch file. The SCI patch format is just the two-byte header and the raw sysex dumps of the two 48-instrument bank data separated by ABCDh.
It's probably not efficiently programmed, but it works. I'd like to somehow reverse the process so we can create FB-01 bank sysex files from Sierra FB-01 patches because otherwise you need to get each game to dump their banks to the FB-01 by launching the game first and then capture the dumped banks with software on your PC similar to how we used to get MT-32 patch banks from SCI games, but the process was much simpler as the MT-32 produces standard raw sysex dumps . For the FB-01 it's a more complicated process because the dumps are byte-swapped and split. The format isn't the simplest design ever (at least not for me). There are checksums everywhere and the first two bytes of each instrument packet are byte split in a completely different manner to the actual patch data. It will take me a while to wrap my head around how to code that as I'm not an advanced programmer.
Besides having the ability to now make custom FB-01 compatible soundtracks for SCI fangames and create custom FB-01 patch banks, some official Sierra releases can also be improved. Some of the SCI games that support the FB-01 contain instrument patch maps that don't really correspond well at all to the game. KQ1SCI, for instance, uses the exact same patch bank as SQ3 which makes no sense and many instruments sound terrible. So having the ability to make custom patch banks is a big plus.
https://github.com/MusicallyInspired/FB2SCI
(I called it FB2SCI because I originally attempted this a while back and called it FB2PAT and it failed miserably so I started from scratch but didn't want to delete my first attempt so I named it a new project so as to not conflict)
NOTE: The current public demo release for Betrayed Alliance Book 2 isn't optimized for the FB-01 quite yet. I only just got this working recently just after the demo's release and my bank has some issues that need to be worked out to sound a little better. Once it's finished I'll release the patch file and you can play the demo with an FB-01, the MAME64 FB-01 emulator, or the IMFC.
Yamaha FB-01/IMFC SCI tools thread
My Github
Roland SC-55 Music Packs - Duke Nukem 3D, Doom, and more.