VOGONS


Yamaha XG emulation at last

Topic actions

Reply 360 of 365, by hockinsk

User metadata
Rank Newbie
Rank
Newbie

End user would use Halion Sonic which is free, you only need Halion full version to build and edit the library. That's how i remember it anyway.

Reply 361 of 365, by hockinsk

User metadata
Rank Newbie
Rank
Newbie

Mapping XG / AWM2 onto SoundFont Extended (SFe 4) — what fits and what doesn't

I went through the SFe 4 spec to see how cleanly the real XG voice set / MUXG2K's AWM2 engine maps onto it. Short version: SFe 4 fixes most of the plumbing problems that made XG awkward in plain SF2, but its synthesis model is still literally SF2.04 (the spec says so outright), so a few things still don't have a home.

What SFe 4 actually changes (vs SF2.04): 64-bit chunks for huge banks, split bank addressing (wBank → byBankMSB + byBankLSB), variable bit depth + OGG/FLAC compression, UTF-8 names, and a redefinable default-modulator list (DMOD). Generators/units/filter model are unchanged.

The clean fits

  • []Voice → Preset → Instrument (1:1)
    []Bank MSB / LSB / program → byBankMSB / byBankLSB / preset#. Splits the bank word, maps 1:1 onto XG's CC0/CC32. Biggest win vs SF2 (no bank-128 drum hack).
    []Drum kits (MSB 126/127) → percussion bank-select flags — addressed by bank-select like XG, not a hardcoded bank.
    []Element (up to 4) → Instrument zones, one per element.
    []Sample → shdr, 16-bit PCM (OGG/FLAC optional).
    []Key / vel split → keyRange / velRange.
    []Pan → pan (0.1% units).
    []Base cutoff → initialFilterFc, in absolute cents: cents = 1200 · log2(Hz / 8.176). This is the per-voice anchor.
    []Resonance → initialFilterQ (cB).
    []Amp envelope (DAHDSR) → volume-envelope generators (convert AWM2 rates to timecents).
    []Same-note choke → exclusiveClass (= drum choke groups).
    []Reverb / chorus → reverbEffectsSend / chorusEffectsSend (send level only).

Where SFe got XG right
It adds the XG sound-controller CCs as default modulators, overridable per-bank via DMOD:

  • []CC74 → cutoff: SFe default is 6000 absolute cents (~94 cents/step). On real MU hardware I measured 75 cents/step, so override to ~4800 cents to match.
    []CC71 → resonance, CC73 → attack, CC72 → release all have defaults; CC75 → decay you add yourself.
  • Heads up: SFe removes SF2's default velocity→cutoff modulator (it flags itself with isng = "SFE 4"), so you add velocity-brightness explicitly.

What still doesn't map (SF2.04 model ceiling)

  1. []Filter key-tracking — no generator for "cutoff follows key." AWM2 does this. Workaround: bake it into multiple key-split zones with stepped initialFilterFc. Most tedious part.
    []Separate pitch + filter envelopes — SF2 has one mod-env feeding both. The MU runs independent PEG and FEG. You get one faithfully, or a compromise.
    []Variation / insertion effects — no equivalent. You get a reverb/chorus send level and nothing else; the MU's actual FX algorithms live outside the format.
    []Velocity→cutoff curve — MU uses a piecewise multi-point curve; SF only has fixed linear/concave/convex/switch shapes. Approximate or bake into velocity zones.

So the bank addressing and the XG-shaped default modulators are genuinely well-suited to an XG dump — feels like they had this use case in mind. The limits are SF2.04's synth model, not SFe's container.

Happy to share measured per-voice cutoff anchors (in Hz) for specific voices if anyone's actually building one of these.

Reply 363 of 365, by gmaverick2k

User metadata
Rank Member
Rank
Member

Just listened to descent midis. I prefer the MU90 real mode 😜

Main: Z440/E5-1650 V4/3060Ti/64GB/iFi Zen DAC V1/Klipsch ProMedia 2.1 THX/Philips 43PUS8808/12
98/DOS: Shuttle SK41G/AthlonXP 2200+ 1.8GHz/V3 3000/SuperQuad Digital/MU90/SC-55/SC-88 Pro/LG StudioWorks 995E
XP: Thinkcentre Edge 72/i5-3570K/GTX 970/X-FiTi

Reply 364 of 365, by zaphod77

User metadata
Rank Member
Rank
Member

well, yes, a mu90 will be better than a fake mu50. 😀

That's not exactly fair. but it's pretty darn close.

that said, a bug was introduced again. hopefully it will be fixed soon.

Reply 365 of 365, by zaphod77

User metadata
Rank Member
Rank
Member

A note for people on the fence about getting muxg2k.

The linux version supports both x86-64 and aarch64. i have no idea if any arm SBCs can handle it, btu that owdl certainly be an interestign test. a pi-xg2000 would be quite interesting...

Since the osx version is similar in size, i assume it also supports intel macs and apple silicon.

The windows version seems to be x86-64 only.