S-YXG2026 Hybrid - User Guide

# S-YXG2026 Hybrid

S-YXG2026 Hybrid is an experimental 32-bit VST2 instrument assembled for software-synth preservation research. It combines three generations of discontinued Yamaha technology in one real-time instrument:

- S-YXG2006LE supplies its newer PCM voices.
- S-YXG50 supplies missing full-XG voices and the common Yamaha reverb, chorus, and variation effects processor.
- Recovered S-YXG100 VL/PVL physical modelling and SG singing synthesis remain available for compatible MIDI files.

This project is believed to be the first publicly documented modern Windows VST2 integration of S-YXG2006LE PCM voices, S-YXG50 full-XG voices and DSP, and the Japanese S-YXG100 VL/PVL and SG engines in one real-time instrument. Earlier private or unpublished work may exist.

This is a deeper hybrid than simply switching between complete plugins. Sixteen isolated S-YXG2006LE instances provide one dry source per MIDI part. Their built-in reverb and chorus are held at zero. The wrapper derives dry, reverb-send, chorus-send, and variation buses for every part and inserts those buses into S-YXG50 before its effects stage. System variation follows CC94. In insertion mode, the assigned part is routed in full through the variation processor, including that effect's own wet/dry balance and downstream sends. The insertion source is supplied before part volume, expression, and pan; S-YXG50 applies those controls after the effect, as the original engine does. VL/PVL and SG use the same recovered S-YXG50 effects bridge.

## Current status

This is a public test build. The following behaviours have passed automated, measured, or live host tests:

- All sixteen S-YXG2006LE instances are independent and operate faster than real time together on the development system.
- Voices present in S-YXG2006LE are selected from its bank table.
- Missing S-YXG2006LE bank/program slots fall back to S-YXG50.
- Channel 10 starts in rhythm mode after reset. XG melodic banks release that implicit mode and bank 127 restores drums; GM1 and GS bank selections preserve the channel-10 drum default and use S-YXG2006LE bank `120/0` when the selected kit exists; missing Roland kits remain on S-YXG50. Roland Drum Map 1 and Drum Map 2 stay distinct, and kit changes are synchronized between parts sharing a map. GM2 uses bank 120 for rhythm and bank 121 for melodic operation. Yamaha part-mode SysEx can also switch any part explicitly and remains authoritative. XG rhythm parts map internally to the complete `127/0` drum bank.
- In GS mode, documented Roland insertion effects with direct named XG counterparts are translated onto the shared Yamaha variation bus. Roland EFX switches become per-part variation sends, so several parts can share the effect. Recognized messages are consumed after translation so S-YXG50's partial GS handling cannot replace the selected effect. GTR Multi 3 translates its distortion or overdrive selection, drive, level, and nearest supported EQ controls; its internal wah, chorus, and delay sections are not translated. Unrecognized compound effects remain available to S-YXG50 and are not replaced with an unrelated approximation.
- GM1 System On, GM2 System On, GS Reset, and XG System On clear retained routing and controller state. The wrapper explicitly restores supported private-engine controllers, including neutral values for CC71 through CC78, because S-YXG2006LE cannot safely receive those SysEx messages and does not fully implement CC121. This reset support does not claim complete Roland GS sound-map emulation.
- CC91, CC93, and CC94 change S-YXG50 reverb, chorus, and system variation output while the source S-YXG2006LE instances remain dry.
- XG insertion-variation connection and part assignment are observed safely and route the selected S-YXG2006LE part through S-YXG50 variation DSP.
- Be-Bop's distorted drum insertion and nine further AWM song candidates spanning different variation types complete timed 48 kHz renders.
- The insertion correction applies to every S-YXG2006LE-owned part, including bass, guitar, melodic, and drum parts. System variation and S-YXG50 fallback parts retain their established routing.
- VL/PVL and SG continue to coexist with the two PCM sources.
- An SG-only replay is sample-identical to the accepted S-YXG100 Hybrid, proving that SG notes are not doubled by S-YXG2006LE.
- 44.1 and 48 kHz host rendering pass the current probes.
- Two simultaneous plugin instances render independently.

Experimental limitation: ordinary bank, program, controller, pressure, pitch-bend, and note messages are mirrored into the relevant S-YXG2006LE part. Arbitrary SysEx is not sent directly to the original 2006LE VST because its isolated SysEx entry path faults. S-YXG50, VL/PVL, and SG still receive their established SysEx paths. MIDI files that configure unusual 2006LE part state exclusively through SysEx need further testing and may require explicit translation in the wrapper. XG rhythm-part mode, system variation, and insertion variation routing are already translated and supported.

## Real-time use

Load `syxg2026-hybrid.dll` in a 32-bit VST2 host, or a host with a suitable 32-bit bridge. Its product name is S-YXG2026 Hybrid and its VST ID is `S2HY`, so it can coexist with S-YXG50, S-YXG2006LE, and S-YXG100 Hybrid.

Foobar2000 with the MIDI Player component can load it through that component's VST bridge. Select the new product name explicitly; do not replace the established S-YXG100 Hybrid while this candidate is being evaluated.

## Runtime files

In the packaged tester archive, these files are grouped in the `VST` folder. Keep them together in that one runtime directory:

    syxg2026-hybrid.dll
    syxg2026-vl-worker.exe
    syxg2026-sg-worker.exe
    syxg50-engine.bin
    syxg2006le-engine.bin
    sxgbnw6l.tbl
    sxgdat6l.tbl
    Sxgpvknl.vxd
    sxgsgknl.vxd

The first three files are produced by this project. The other six are original Yamaha runtime files and are not distributed by the source project. A tester must provide them from software they are entitled to use. The compatible S-YXG50 and S-YXG2006LE VST binaries retain DLL contents but use `.bin` names so a host does not list the private child engines as additional selectable instruments.

## Voice selection

The wrapper reads S-YXG2006LE's own compact bank map. A defined slot is rendered by the newer source engine. An undefined slot remains on S-YXG50, retaining voices omitted by the XG Lite product. Bank-select MSBs 33, 81, and 97 continue to activate VL/PVL. Yamaha model `0x5D` SysEx activates SG.

Note releases are sent conservatively across PCM ownership transitions. This prevents a note started before a bank change from becoming stuck, while note-ons still have only one PCM owner. SG-owned note-ons bypass both PCM sources and retain the accepted SG output path.

## Reporting a problem

Include the MIDI filename, host and version, sample rate, approximate playback position, and the selected sound or bank. Listen for wrong fallback voices, doubled notes, stuck releases, missing controllers, unusual effects, VL/PVL or SG regressions, and differences between 44.1 and 48 kHz. A short reproducible MIDI file is more useful than a rendered recording alone.

## Redistribution

The project source does not distribute Yamaha binaries, tables, songs, or firmware. Do not publish a runtime containing those files without the necessary rights. The integration code is available under the MIT License.