Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Capital Tone Fallback support for faithful early GS standard emulation #2390

Open
johnnovak opened this issue Apr 8, 2023 · 15 comments
Open
Assignees
Labels
audio Audio related issues or enhancements enhancement New feature or enhancement of existing features midi MIDI related features and issues

Comments

@johnnovak
Copy link
Member

johnnovak commented Apr 8, 2023

Overview

Capital Tone Fallback (CTF) is an interesting feature exclusive to early GS standard capable General MIDI modules. Later modules, including Roland's own later SC-55 firmwares, completely dropped support for CTF, making games that rely on CTF use either the wrong sounds, or not play any sounds for certain instruments.

In a nutshell, the GS standard supported by the SC-55 and compatible modules such as the Yamaha MU80 extends the standard 128-instrument General MIDI sound set with so-called Variation Tones. Conversely, the 128 standard instruments are called Capital Tones. CTF means that if a module does not support a given Variation Tone, it would fall back to playing its Capital Tone instead.

CTF only seems to be supported in the earlier SC-55 mk1 modules up to v1.21. The feature was dropped in SC-55 v2.00, SC-55 mk2, and later Sound Canvas modules due to Yamaha suing Roland over this (apparently, CTF was essentially a Yahama invention that predates the Sound Canvas).

Currently, FluidSynth does not support this feature (understandably, as emulating the SC-55 is out-of-scope for them), neither Roland's own official Sound Canvas emulation product, the Sound Canvas VA, which emulates the much later SC-8820 from 1999. People using actual hardware SC-55 modules with later ROM revisions are missing out on Capital Tone Fallback as well.

At present, the only two solutions are either using BASSMIDI with emulation which implements CTF, or routing the MIDI stream through the Falcosoft MIDI Player that also has support for CTF, then either using an external FluidSynth player, SCVA in a VST host, or external MIDI modules. That works, but it's cumbersome.

To make life easier, we should implement the CTF mechanism in DOSBox itself. It's just a matter of intercepting program change messages in the MIDI handler and doing some mapping, accordingly.

Implementation

The Falcosoft MIDI Player provides generic mechanism for CTF in the form of insrument mapping files. As there's zero point in reinventing a wheel (that is already round and usable 😄), the plan is to add support for this mapping format (text files with .ins extension). These can go into our resources folder and can be included with DOSBox out-of-the-box.

Details will be fleshed out during the actual work, but the mapping needs to be selectable, e.g.

# default, don't map
capital_tone_fallback = off

# mapping for the Roland SCVA VSTi plugin
capital_tone_fallback = roland-scva

References

Falcosoft MIDI Player - How to use Capital Tone Fallback emulation?
https://falcosoft.hu/midiplayer_howto.html#a16

The CTF mechanism is well-defined and documented in the original user manuals (from this post):

In the SC-55 manual (MK 1) from page 42 to 44 capital tone fallback is described in detail, why is that gone in MK 2?
http://cdn.roland.com/assets/media/pdf/SC-55_OM.pdf

This Yamaha MU80 manual describes CTF on pages (pdf 126-127):
http://download.yamaha.com/api/asset/file/?la … m&asset_id=4294

Also described on Nerdly Pleasures in great detail:
https://nerdlypleasures.blogspot.com/2013/06/first-generation-roland-gs-devices.html

More info on Vogons (warning, information overload!)
https://www.vogons.org/viewtopic.php?f=46&t=46111&start=240#p502660
https://www.vogons.org/viewtopic.php?f=5&t=48207

SC-55 ROM version differences
https://www.vogons.org/viewtopic.php?f=62&t=59497

<1.20 supports Capital Tone Fallback but not General Midi instruments.
1.20 / 1.21 supports both Capital Tone Fallback and General Midi instruments.
2.00+ loses support for Capital Tone Fallback but retains General Midi instruments.

@johnnovak johnnovak added enhancement New feature or enhancement of existing features audio Audio related issues or enhancements labels Apr 8, 2023
@johnnovak johnnovak self-assigned this Apr 8, 2023
@johnnovak
Copy link
Member Author

Relevant excerpts from the SC-55 manual ("old" firmware):

Page 61

image

Page 42

image

@johnnovak
Copy link
Member Author

johnnovak commented Apr 8, 2023

List of affected games from this post:

Comprehensive list of games with various CTF issues

These will only play correctly on an original SC-55 with CTF support.

  • 3-D Dinosaur Adventure (1993 - DRUM KIT + VT)
  • 3D Lemmings (1995 - DRUM KIT)
  • Absolute Zero (1995 - DRUM KIT)
  • Apachacha (1993 - DRUM KIT)
  • Archibald Applebrook's Abenteuer (1995 - DRUM KIT + VT)
  • Aviation Adventure (1994 - DRUM KIT)
  • Baoxiao Baolingqiu (aka Comedy Bowling/Panda Bowling - 1995 - DRUM KIT)
  • Battles in Time (1995 - DRUM KIT)
  • Blackthorne (1994 - DRUM KIT)
  • Blood (1997 - VT)
  • Callahan's Crosstime Saloon (1997 - DRUM KIT)
  • Captain Bible in Dome of Darkness (1994 - DRUM KIT)
  • Card Player's Paradise (1995 - DRUM KIT)
  • Creature Shock (1994 - DRUM KIT)
  • Cyberbykes: Shadow Racer VR (1995 - DRUM KIT)
  • CyberMage: Darklight Awakening (1995 - DRUM KIT)
  • Dallyeora Coba 2 (aka Coba on the Run 2 - 1995 - DRUM KIT)
  • Dark Legions (1994 - DRUM KIT)
  • Dark Sun: Wake of the Ravager (1994 - VT - floppy version only)
  • Defcon 5 (1995 - DRUM KIT)
  • Dominus (1994 - DRUM KIT + VT)
  • Duke: Nuclear Winter (1997 - DRUM KIT)
  • Duke Nukem 3D (1996 - VT)
  • EF2000 (1995 - DRUM KIT)
  • The Elder Scrolls: Arena (1994 - DRUM KIT)
  • Empire II: The Art of War (1995 - DRUM KIT)
  • Extreme Assault (1997 - VT)
  • Fade to Black (1995 - DRUM KIT)
  • Fox Ranger II: Second Mission (1993 - VT)
  • Frontier: First Encounters (1995 - DRUM KIT + VT)
  • Geu Nal-i Omyeon 3: Dragon Force (aka The Day 3: Dragon Force - 1993 - DRUM KIT)
  • The Grandest Fleet (1995 - DRUM KIT)
  • Guilty (1995 - DRUM KIT)
  • H.U.R.L. (1995 - DRUM KIT)
  • HacX (1997 - DRUM KIT)
  • Hanse: Die Expedition (1994 - DRUM KIT)
  • Heaven's Dawn (1995 - DRUM KIT + VT)
  • Hell to Pay (1996 - DRUM KIT)
  • Heroes of Might and Magic II: The Succession Wars (1996 - DRUM KIT)
  • Hexen: Beyond Heretic (1995 - DRUM KIT)
  • Hexx: Heresy of the Wizard (1994 - DRUM KIT)
  • Hocus Pocus (1994 - DRUM KIT)
  • Inferno: The Odyssey Continues (1994 - DRUM KIT)
  • Island Peril (1995 - DRUM KIT)
  • Jungledyret Hugo (aka Hugo the Jungle Animal/Jungle Jack - 1995 - DRUM KIT)
  • Last Hero in China (1995 - DRUM KIT)
  • The Legend of Kyrandia: The Hand of Fate (1993 - DRUM KIT + VT)
  • Lode Runner: The Legend Returns (1994 - DRUM KIT)
  • The Lost Files of Sherlock Holmes: The Case of the Rose Tattoo (1996 - DRUM KIT)
  • Magic Carpet (1994 - DRUM KIT)
  • Man Enough (1994 - DRUM KIT)
  • Mars (aka Mars 3D - 1997 - DRUM KIT)
  • Master of Orion (1994 - DRUM KIT)
  • Mega Force 2 (1995 - DRUM KIT)
  • Menzoberranzan (1994 - DRUM KIT)
  • Metaltech: Battledrome (1994 - DRUM KIT)
  • Metaltech: EarthSiege (1994 - DRUM KIT)
  • Montezuma's Return (1997 - DRUM KIT)
  • Multimedia Kaleidosonics (1993 - DRUM KIT)
  • Normality (1995 - DRUM KIT)
  • Offensive (1996 - DRUM KIT)
  • Once Upon a Forest (1995 - DRUM KIT)
  • The Pandora Directive (1996 - DRUM KIT)
  • Pengzhuang Jingling (aka Bumping Warrior - 1994 - DRUM KIT)
  • Perdition's Gate (1996 - DRUM KIT)
  • Perfect General II (1994 - DRUM KIT - VTs are contained in custom AWE32 'PG2.SBK' soundfont)
  • Plunder & Pillage (2002 - VT)
  • Primal Rage (1995 - DRUM KIT)
  • Prince of Persia 2: The Shadow and the Flame (1993 - DRUM KIT)
  • Privateer 2: The Darkening (1996 - DRUM KIT)
  • Rally Championships (1994 - DRUM KIT)
  • Ravenloft: Strahd's Possession (1994 - DRUM KIT)
  • Rescue the Scientists (1994 - VT)
  • Retribution (1994 - DRUM KIT)
  • Return to Ringworld (1994 - DRUM KIT)
  • Rex Blade: The Apocalypse (aka Domination - 1996 - DRUM KIT)
  • SerpentHead (1996 - DRUM KIT)
  • The Settlers II (1996 - DRUM KIT)
  • Sfinx (1997 - DRUM KIT)
  • SideLine (1996 - DRUM KIT)
  • Skazdi na Bareste: Hozhdenie za Tridevat Zemel (1997 - aka Tales on Birch Bark: Journey to Distant Lands - DRUM KIT + VT)
  • Sołtys (1995 - DRUM KIT)
  • SSN-21 Seawolf (1994 - DRUM KIT)
  • Strife: Quest for the Sigil (1996 - DRUM KIT)
  • Super Beemger (1994 - DRUM KIT)
  • Super Samtong (1994 - DRUM KIT)
  • Team F1 (aka Pole Position: Formel 1 Teamchef - 1996 - DRUM KIT)
  • Ten Nights of Killing and Mayhem at F.J.B. II (1996 - DRUM KIT)
  • Tennis Elbow (1997 - VT)
  • TFX (1993 - DRUM KIT)
  • Time Gate: Knight's Chase (1995 - DRUM KIT)
  • Total Meltdown: Tools & Software Arsenal for Duke Nukem 3D (1996 - DRUM KIT)
  • Under a Killing Moon (1994 - DRUM KIT)
  • Undersea Adventure (1994 - DRUM KIT)
  • Wayne Gretzky and the NHLPA All-Stars (1995 - DRUM KIT)
  • Whizz (1994 - DRUM KIT)
  • William Shatner's TekWar (1995 - DRUM KIT)
  • Wing Commander: Privateer - Righteous Fire (1994 - DRUM KIT)
  • Wings of Glory (1995 - DRUM KIT)
  • Witchaven (1995 - DRUM KIT)
  • WWF Wrestlemania: The Arcade Game (1995 - DRUM KIT)
  • Zombieville (1997 - DRUM KIT)
  • Zone Raiders (1995 - DRUM KIT)
  • Zoop (1995 - DRUM KIT)

Games that use CTF for invalid variation tone bank change messages

These will only play correctly on an original SC-55 with CTF support.

  • 3-D Dinosaur Adventure (1993)
  • Age of Empires (1997 - add 'midimusic' parameter to shortcut for MIDI output)
  • Age of Empires: The Rise of Rome (1998 - add 'midimusic' parameter to shortcut for MIDI output)
  • Archibald Applebrook's Abenteuer (1995)
  • Blood (1997)
  • Dark Sun: Wake of the Ravager (1994 - floppy version only)
  • Dominus (1994)
  • Duckman: The Graphic Adventures of a Private Dick (1997)
  • Duke Nukem 3D (1996)
  • Extreme Assault (1997)
  • Fox Ranger II: Second Mission (1993)
  • Frontier: First Encounters (1995)
  • Heaven's Dawn (1995)
  • Lands of Lore: The Throne of Chaos (1993 - sound effects only)
  • The Legend of Kyrandia: The Hand of Fate (1993 - sound effects only)
  • Might and Magic IV: Clouds of Xeen (1992 - sound effects only)
  • Might & Magic: Swords of Xeen (1995 - sound effects only)
  • Might and Magic V: Darkside of Xeen (1993 - sound effects only)
  • Might and Magic: World of Xeen (1994 - sound effects only)
  • Plunder & Pillage (2002)
  • Rescue the Scientists (1994)
  • Shuihu Yingxiong Zhuan: Huo Zhi Hun/Heroes in Heroes (1997 - aka Water Margin Heroes: Soul of Fire - apparently composed for Yamaha MU80/XG)
  • Skazdi na Bareste: Hozhdenie za Tridevat Zemel (1997 - aka Tales on Birch Bark: Journey to Distant Lands)
  • Spy Master (1994 - apparently composed for FM/SB)
  • Subhunt (1997 - apparently composed for FM/SB)
  • Super 3D Noah's Ark (1995 - ECWolf port only)
  • Tennis Elbow (1997)
  • Warhammer: Shadow of the Horned Rat (1995)

Games that use variation tones

Just for completion's sake, here are a handful of games that use actual variation tones in their soundtracks (non-exhaustive list):

  • Age of Empires II: The Age of Kings (1999 - Roland SC-88 - demo only)
  • Age of Empires II: The Conquerors (2000 - Roland SC-88 - demo only)
  • Box Ranger (1992 - Roland SC-55)
  • Dink Smallwood (1998 - Roland SC-88Pro)
  • Duke Nukem 3D (1996 - Roland SC-55)
  • Dune II: The Building of a Dynasty (1992 - Roland SC-55)
  • Fox Ranger II: Second Mission (1993 - Roland SC-55)
  • Hopmon (2002 - Roland SC-88Pro)
  • IAS (1994 - Roland SC-55)
  • Inferno: The Odyssey Continues (1994 - Roland SC-55)
  • Kioh Gyoku (2001 - aka Rare Venerable Orb - Roland SC-88Pro)
  • Mega Force 2 (1995 - Roland SC-55)
  • Might & Magic IV: Clouds of Xeen (1992 - Roland SC-55)
  • Might & Magic: Swords of Xeen (1995 - Roland SC-55)
  • Might & Magic V: Darkside of Xeen (1993 - Roland SC-55)
  • Might & Magic: World of Xeen (1994 - Roland SC-55)
  • Shuusou Gyoku (2000 - aka Autumn Frost Orb - Roland SC-88Pro)
  • TFX (1993 - Roland SC-55)
  • Torte le Magic (2001 - Roland SC-88Pro)
  • Touhou Eiyashou ~ Imperishable Night (2004 - aka Eastern Eternal Night Vignette - Roland SC-88Pro)
  • Touhou Koumakyou ~ The Embodiment of Scarlet Devil (2002 - aka Eastern Scarlet Devil Land - Roland SC-88Pro)
  • Ultimate Pinball (1996 - aka Screamball! The Ultimate Pinball Experience - SB AWE32 only)

Games that send invalid drum kit program change messages within 65-127 (ROM v1.xx) or 58-127 (ROM v2.xx) range

This is only tangentially related to the proposed CTF feature, but decided to include it for completeness (and it's useful info, regardless).

As you can see, playing some of these games with an original SC-55 of either ROM version would still cause issues. For example, playing EF2000 using an SC-55 with ROM v1.xx will incorrectly select the SFX drum kit during the intro sequence, while an SC-55 with ROM v2.xx will instead produce silence on the drum channel. Obviously, for a lot of these you'll encounter no problems if you just played them with a later model of Sound Canvas like the SC-55mkii or the SC-88. But then there are games like Rex Blade: The Apocalypse or Frontier: First Encounters that will sound incorrect regardless if played on an earlier or later model of Sound Canvas (you'll either get drum channel silence or incorrect drum kits on an original SC-55 regardless of ROM version or incorrect drum kits and 'no instrument' errors on later Sound Canvas models). It makes me wonder if a few of these soundtracks were actually optimized for something else like the AWE32, although that didn't support CTF as far as I know.

  • Aviation Adventure (1994) - 59
  • Captain Bible in Dome of Darkness (1994) - 127
  • Card Player's Paradise (1995) - 127
  • Duke: Nuclear Winter (1997) - 127
  • EF2000 (1995) - 61
  • Fade to Black (1995) - 02, 34, 85
  • Frontier: First Encounters (1995) - 48, 59, 89 + variation tone CTF ('QQESCAPE.HMP')
  • The Grandest Fleet (1994) - 127
  • Guilty (1995) - 22, 114, 120
  • H.U.R.L. (1995) - 59, 60
  • HacX (1997) - 02 (Track 17/18), 94 (Track 12)
  • Hexen: Beyond Heretic (1995) - 114 (Track 11 - 'GROVE.MUS')
  • Island Peril (1995) - 119
  • Lode Runner: The Legend Returns (1994) - 106
  • Menzoberranzan (1994) - 02, 63
  • Rex Blade: The Apocalypse/Dominator (1996/1997) - 02, 03, 06, 08, 15, 19, 21, 30, 32, 35, 48, 56, 93, 112
  • SerpentHead/SerpentHead Deluxe (1995/1997) - 117, 118
  • Sfinx (1997) - 66
  • Sołtys (1995) - 66
  • Ten Nights of Killing and Mayhem at F.J.B. II (1996) - 02, 18, 127
  • Time Commando (1996) - 72 (Stage 6 - Wild West)
  • Total Meltdown: Tools & Software Arsenal for Duke Nukem 3D (1996) - 117 ('06E.MID')
  • Warhammer: Shadow of the Horned Rat (1995) - 59 + variation tone CTF

@johnnovak johnnovak changed the title Add Capital Tone Fallback support for the SC-55 emulation Add Capital Tone Fallback support for faithful early GS standard emulation Apr 8, 2023
@johnnovak
Copy link
Member Author

johnnovak commented Apr 8, 2023

Concrete example why this can matter a lot in actual practice and it's not just some cork-sniffer "authenticity" thing (that I'm prone of when it comes to audio, I'm the first to admit! 😅) [related terms, if you're wondering: "gear snob" (self-explanatory), or "pixel peeper" in digital photography circles...]

MT-32 support seems to be buggy in some later entries of the iconic Might & Magic RPG series (it causes random crashes on real hardware too). It appears that using the General MIDI driver is the only viable option, but that is plagued by the CTF issue (musical notes will be played instead of sound effects, which can be pretty annoying).

Affected games:

  • Might and Magic IV: Clouds of Xeen (1992 - sound effects only)
  • Might & Magic: Swords of Xeen (1995 - sound effects only)
  • Might and Magic V: Darkside of Xeen (1993 - sound effects only)
  • Might and Magic: World of Xeen (1994 - sound effects only)

Further details:

https://www.gog.com/forum/might_and_magic_series/world_of_xeen_sound_effects_issues/post3

@dreamer
Copy link
Member

dreamer commented Apr 8, 2023

Wow, first time hearing about this, but the list of affected games is quite impressive :(

Dink Smallwood (1998 - Roland SC-88Pro)

That's a name I haven't seen in a looong time, lol ;)

Is this something we can implement on top of FluidSynth API? I'm not sure, but I assume it will be mostly filtering MIDI stream before forwarding commands to FluidSynth...

If I understand correctly, mapping file (.ins) will be soundfont-specific? That is different soundfonts might require different mappings, right?

@Grounded0
Copy link
Collaborator

Grounded0 commented Apr 8, 2023

Sound effects on Xeen games are confirmed to work at least on 4GMGSMT 📁 .

(edit: ref added)

@johnnovak
Copy link
Member Author

johnnovak commented Apr 8, 2023

Is this something we can implement on top of FluidSynth API? I'm not sure, but I assume it will be mostly filtering MIDI stream before forwarding commands to FluidSynth...

It has nothing to do with FluidSynth, specifically. Nor is the feature meant for FluidSynth only.

EDIT: Missed your comment before I wrote the long-winded explanation ("I'm not sure, but I assume it will be mostly filtering MIDI stream before forwarding commands to FluidSynth..."). Yes, you're right, it's a MIDI level feature. Reading comprehension skill check failed on my part 😢

As I mentioned, you need CTF emulation when using external hardware devices too, e.g. all SC-55 mk2 modules and SC-55 devices with later ROM versions (1.20+ if I'm correct). Or if using FluidSynth as an external process.

For example: I have a first revision SC-55 with the latest ROM revision (v1.21). That's the best old ROM revision, actually (most bug-free), but the problem is it doesn't have CTF support (only v1.x firmware does). So if I use it with DOSBox as an external MIDI module (a common scenario among DOSBox users), I need CTF support to make games from the above list sound correct. Currently, the only thing I can do is route MIDI from DOSBox to Falcosoft MIDI Player (FMP) via virtual loopback MIDI "cables", enable CTF mapping in FMP, then route the output of FMP to an actual physical MIDI out port that is connected to my SC-55. That's a hassle, and FMP is Windows only. (That's wrong info, in retrospect. My v1.21 should fully support CTF.)

This needs to be implemented as a MIDI stream processor, just like I'm sanitising the MIDI stream to make it standard-compliant (see original PR here: #2308), plus how I've added proper MIDI mute/unmute pause/unpause support (#2318):

https://github.com/dosbox-staging/dosbox-staging/blob/main/src/midi/midi.cpp#L444-L492

So, this is a MIDI level feature; FluidSynth users will of course benefit from it too.

With this feature added, I will implement a proper MIDI stream processor as I mentioned here as the current solution is messy but I wasn't in the mood for a rewrite (e.g. the processor takes a stream of input MIDI events, it has a "process" function that does the mapping/processing/altering/filtering of events, then it outputs the resulting MIDI event stream).

If I understand correctly, mapping file (.ins) will be soundfont-specific? That is different soundfonts might require different mappings, right?

I think it will be device-specific. Ideally, it won't need to know anything about SoundFonts, and the best solution would be if a single hardcoded mapping would suffice (I think that's how BASSMIDI does it, so the whole .ins file business might be overkill). But I'll need to research that part a bit more. I'll do that when I'll actually start on the ticket, but the high-level goals should be clear now.

@johnnovak
Copy link
Member Author

johnnovak commented Apr 8, 2023

Sound effects on Xeen games are confirmed to work at least on 4GMGSMT.

That's all good and well, and maybe that particular SoundFont implements the fallback somehow. Even if that can be done, every single SoundFont would need to implement this same thing over and over in a bug-free manner.

But this is about implementing it as a general feature, and users of hardware modules most definitely need it too, as I explained.

@johnnovak
Copy link
Member Author

Is this something we can implement on top of FluidSynth API?

I've looked into it some more @dreamer and actually yes, for SoundFonts I'm pretty sure we can query the preset list of the given SF2 file to check whether a given variation tone is implemented. In theory, the preset and bank number are all we need, but the devil is always in the details 😄

The .ins instrument maps will be still needed for external MIDI devices (SCVA or actual hardware).

@dreamer
Copy link
Member

dreamer commented Apr 9, 2023

The .ins instrument maps will be still needed for external MIDI devices (SCVA or actual hardware).

Oh, I almost forgot about that - just leaving a comment to spread the knowledge in case it pops up.

This .ins file format format is completely separate and unrelated to another .ins file format which is used by GOG as another name for .cue files (for some inexplicable reason). It does not affect us in any way of course, it's just a coincidence on file extension.

@jaffa225
Copy link

jaffa225 commented Apr 13, 2023

Because I didn't read the old SC-55 manual until recently and "Capital Tone Fallback" is usually how this is referred to, I feel I should mention Roland actually did "Sub Capital" fallback too, in that early SC-55. It's mentioned on page 43 of the original SC-55 manual.

Screenshot from 2023-04-12 23-16-29

Since that discovery, I remapped the fallback files I'd been offering for my patched QMIDIRoute, which can be used to similar effect. My maps are in the form of ".qmr" text files.

Although post SC-55mkII GS sound modules would have different fallback, no games were made reliant on newer modules' fallback, as it would have been noticed by developers, since it simply wouldn't have worked, due to Yamaha's patent. Because of that, and the time in which they were created, as far as DOS games go, you shouldn't need multiple fallback profiles based on the more modern GS synth you're using, (except for one instance) as the differences all fall between the releases of the original SC-55 with its fallback, and the SC-55mkII without it. That one instance is because Roland moved Fl.KeyClick to variation 1, from the variation 0 (capital tone) it had occupied, between the original and SC-55mkII, and different games seem to want either Fl.KeyClick or BreathNoise on program 122 (or 121 from 0). Roland moved it, as having BreathNoise there, is one of the requirements for GM support. Descent's Game14.mid file (floating around online) seems to expect Fl.KeyClick on channel 9 (while not setting any variation, so it selects the capital tone, BreathNoise on the SC-55mkII and newer) in the first part of the song. Descent II's Game03.mid file likewise sets it on channel 11. Fl.KeyClick there is a bit obnoxious, but could be right, as BreathNoise is so quiet. Descent is from 1995, and Descent II from 1996, so if the composers used up-to-date contemporary modules, neither should have Fl.KeyClick. This thread is a fun read on the matter: https://www.vogons.org/viewtopic.php?f=7&t=36087

My QMIDIRoute patch has been difficult to find, of late. You can find the original, unmodified, Debian source here, if you're not using Debian yourself: https://drive.google.com/file/d/1EOo-llOW5XXvkiy_3EvOAuUuU4Fn6B4B/view?usp=share_link

And, while the site I'd been posting releases to, has been poorly maintained and has been down for the last month or so, due to my diligence with archive.org the latest patch (0.5.3, despite my typo) and build instructions can still be found here: https://web.archive.org/web/20220929045314/https://www.midimusicadventures.com/phpbb/viewtopic.php?f=4&t=17790&start=20#p18702

@johnnovak
Copy link
Member Author

Thanks for the extra info @jaffa225 and for attaching your code; I'll have a detailed look at these when I start implementing the feature! Good stuff!

@jaffa225
Copy link

jaffa225 commented Apr 13, 2023

Thanks for the extra info @jaffa225 and for attaching your code; I'll have a detailed look at these when I start implementing the feature! Good stuff!

You're quite welcome. You probably won't want to base your code on my patch, as it's pretty messy and more of a hack (although it works well), but I expect the ".qmr" fallback maps could be fairly easily parsed into something usable.

@johnnovak johnnovak added the midi MIDI related features and issues label Jul 8, 2023
@pachuco
Copy link

pachuco commented Apr 6, 2024

So, is this what all those pesky mids playing piano like percussion, have been?

@johnnovak
Copy link
Member Author

So, is this what all those pesky mids playing piano like percussion, have been?

Yeah, that's it.

@johnnovak
Copy link
Member Author

More info on Sub Capital Fallback:

https://www.vogons.org/viewtopic.php?p=1264506#p1264506

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
audio Audio related issues or enhancements enhancement New feature or enhancement of existing features midi MIDI related features and issues
Projects
None yet
Development

No branches or pull requests

5 participants