S-YXG2026 Hybrid
Current package 0.1.12
Reset-free MIDI files now keep channel 10 as drums when selecting bank zero. Startup no longer assumes an XG reset has already arrived. Explicit XG resets still permit melodic channel 10; other reset modes, gains and effects are unchanged. This fixes a general startup case, not a filename-specific rule.
Package 0.1.11
This update preserves native VL voice edits when a worker first starts later in a song. Timeless's closing volume-expression fade no longer reverts to breath-controlled timbre or jumps in level. Full-volume gain, master-volume handling, SG, 2006LE, saved mapping state and the existing effects path are unchanged.
MU-derived AWM voices replace the classic small fallback sound set. VL/PVL, SG, and existing software effects routing remain. S-YXG2026 retains 2006LE precedence for its supported voices.
Voice and drum mapping corrections
This release corrects MU-exclusive MSB 48 sub-banks, including Anathema, and preserves SFX drum bank 126 when a part has an explicit rhythm assignment. The latter prevents SFX Techno Kit from being mistaken for a standard drum kit. These changes require the matching converted engine; an older engine retains its previous bank support.
Experimental MU insertion compatibility
This release can translate independent MU Effect 2 distortion (49/00) and overdrive (4A/00) assignments for external VL/PVL audio and a single routed SG part. Each supported insertion uses a separate, voice-free instance of the existing software XG DSP. The song's normal XG reverb, chorus and variation remain unchanged, including system delay.
The private processor uses insertion connection, so the requested Dry/Wet balance is honoured. Its own system-effect sends are disabled; the processed output enters the song's existing sends once. No MU-matching gain trim is applied.
This is an approximation using XG algorithms, not the MU effects chip. It does not add independent insertions to converted AWM or 2006LE voices. Unsupported algorithms, effect-controller modulation, chained assignments and inseparable multi-part SG routes remain bypassed. Worker pan and send proportions are recovered over the existing 128-frame DSP quantum. Distortion can increase peaks and require additional host headroom. Listening tests confirm the restored FatPizz lead, but its balance differs from MU firmware emulation. Hardware-identical timbre and level are not claimed; no compensating limiter or shared gain change has been added.
MU-derived sound set
Complete packages now contain MU1000-derived voices and drum kits, converted
for the lightweight S-YXG50 software engine. The converted tables and waves are
embedded in syxg50-engine.bin, which is approximately 87 MiB
with the extended banks included in this release.
No separate MU ROMs, wave tables, Python, or conversion tools are needed to
play it. Keep the entire VST folder together and load the Hybrid DLL.
The software XG effects processor and recovered VL/PVL/SG workers remain. This is not MU hardware emulation: some three/four-element voices are folded to two elements, unsupported effect types use approximations, and some loops retain conversion limitations. Familiar songs can sound different. Use original S-YXG50 for its original sounds, or Mu2026 for its separate firmware-emulation effects path. Mixing many loud parts can exceed digital full scale; retain floating-point headroom and reduce host gain when needed.
The default map is MU Native. MU Voice Map Select SysEx
F0 43 10 49 00 00 12 00 F7 selects Basic;
replacing the final data byte with 01 selects Native.
The converted engine's Yamaha Settings page also offers its Basic map checkbox.
In 2026, use MIDI map select to keep the 2006LE routing choice synchronized.
Native-map QWS and REAPER definitions are in their respective package folders.
Install the QWS file in its instrument-list directory and load the REAPER
bank file in ReaControlMIDI. Sampler placeholders have been omitted.
Existing signed updaters replace the embedded engine automatically. New instrument definitions are provided in the complete archive; copy those into QWS or REAPER separately when updating. No manual ROM swapping is needed. The GitHub source and release assets contain no Yamaha binaries or ROM data.
Master volume and note reception
XG Master Volume and Universal Real-Time Master Volume also control the added VL/PVL and 2006LE audio. Fades therefore include those voices, rather than only the original XG backing. Full master volume does not add gain. SG keeps its own native master-volume handling and is not attenuated twice. Effects retain their natural tails. The external sources use a power-law envelope; Yamaha's quantized native envelope may differ at intermediate levels. This is not a claim of bit-identical hardware behaviour.
The 2006LE path also honours XG per-part Receive Note Messages, including packed parameter writes. Disabled parts do not start new notes; system reset restores reception. Note-offs still release notes previously owned by that engine, so changing this setting cannot strand a held note.
Voice mapping preference
The native editor's Voice mapping list (Alt+M) and the host's appended Mapping parameter offer Automatic, 2006LE first, and MU first. This is a global preference, not a per-channel selector. Automatic preserves the existing engine selection. Explicit choices prefer that engine only where the requested patch exists, falling back to the other engine for gaps. VL/PVL and SG still have priority. A base-voice alias is not a distinct MU patch: it does not hide a keyboard-only panel voice.
This choice is independent of MU Native/Basic Voice Map Select and GM/GM2/GS/XG resets; those messages retain their established behavior. The preference applies to new notes; held notes keep their original owner. VST project chunks save it, and legacy unwrapped chunks load as Automatic. Older plugin builds cannot read the new wrapped chunks. Hosts that create separate configuration and playback instances must transfer plugin state; changing an editor does not rewrite already cached audio.
A private experimental MIDI command can select it inside a song:
F0 7D 53 48 4D 01 00 F7 Automatic F0 7D 53 48 4D 01 01 F7 2006LE first F0 7D 53 48 4D 01 02 F7 MU first
This uses the experimental manufacturer ID 7D. It is a Hybrid command, not a Yamaha hardware command. Only this exact protocol is accepted.
VL setup correction
This release preserves bank/program selection and subsequent native VL voice edits in their original order when a worker first starts later in a song. Restoring current controllers no longer reloads the same preset and erases those edits. This includes a voice's expression mode: volume-expression fades should remain volume fades, rather than reverting to breath-controlled timbre. Intentional later program changes still reload presets normally; full-volume gain is unchanged.
Setup retention remains bounded. If its existing event or SysEx capacity is exhausted, the current bank/program snapshot is used as a fallback; arbitrary unbounded edit histories are not guaranteed. This release is not a fix for a host that filters or omits MIDI SysEx.
Conversion credits and licence
Thanks to Soundshock for SXG-Create, NightFright2k19 for
SXG-Create-NF,
and JOELwindows7 for suggesting its integration. This conversion uses upstream
revision 596e23209cf9d08fb199769be8a9a2adf8b1e822.
These credits supplement the existing Yamaha and original VST creator credits;
they do not imply endorsement or permission to redistribute Yamaha data.
BSD 3-Clause License Copyright (c) 2026, Soundshock Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Earlier Editor Test 0.1.8-rc.1
This opt-in prerelease limits recurring status and selection redraws to the activity graphic instead of invalidating the whole editor background. Native controls continue to redraw their own changing content. Audio and MIDI paths are unchanged. Windows tests pass; resolution of the Wine 11.19 bridged-host redraw issue was not resolved. This release retains the Windows-tested redraw change, but does not claim a Wine GUI fix.
The earlier code-only test is documented in its historical test instructions. For the current complete package, use the normal signed updater or replace the entire runtime from the new archive, not the earlier test DLL.
Package 0.1.7
Corrects an SG startup memory error that could crash the singing worker under Wine. The legacy one-slot setup now supplies the one-based slot number expected by Yamaha's native helpers. The loaded image is checked before this correction is applied, and the Yamaha file on disk remains unchanged.
Package 0.1.6
Translates Roland GS Part Pitch Key Shift into MIDI Channel Coarse Tuning for the isolated S-YXG2006LE source parts. This preserves GS per-part transposition without using the original plug-in's unsafe SysEx entry path. Roland device, model, command, address, value range, part mapping, and checksum are validated before translation; unrelated and malformed messages remain untouched.
Package 0.1.5
Prepares the eight VL helpers and the SG helper in a serialized, below-normal-priority background phase when the host activates the plug-in. This removes process creation and Yamaha-engine initialization from first-note MIDI processing. A single active plug-in instance reserves approximately 60-70 MB for its ready helpers; hosts that prebuffer multiple instances multiply that figure.
Package 0.1.4
Adds an accessible native editor and handles complete Yamaha model
0x64 Plug-in Voice bulk transactions. Songs can now load and
change their embedded VL voices during playback, including the associated
bank, program, volume, mono/poly, pitch-bend range, portamento, reverb, and
chorus settings.
Package 0.1.3
Preserves S-YXG2006LE's native fallback for Yamaha panel banks
0/112 through 0/127. This keeps DGX/PSR-era
panel-voice MIDI on the newer source engine when an exact panel slot is absent
from its compact table. Undefined ordinary XG variation slots still fall
back to S-YXG50.
Package 0.1.2
Adds Yamaha MU Voice Map Select support. MU Basic selects S-YXG50 for
basic bank 0/0, while MU Native restores the normal automatic
hybrid voice choice. MIDI files that send neither message retain the existing
automatic routing without an audible change.
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.
- The MU-derived S-YXG50 engine supplies missing 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.
- In Automatic mapping, voices present in S-YXG2006LE are selected from its bank table. The optional preference changes source precedence without changing MIDI bank addresses.
- Missing ordinary XG bank/program slots fall back to S-YXG50. Defined
Yamaha panel banks
0/112through0/127retain S-YXG2006LE's native basic-voice fallback. - Before any system reset, GM-style defaults keep channel 10 as drums even
with ordinary bank-zero selections. 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/0when 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 to127/0for standard kits, preserving126/0for SFX kits. - 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.
Accessible editor
The plug-in editor opens a native Windows dashboard with three pages:
live status, under-the-hood routing, and the original Yamaha editor. Status
uses standard named controls and a 16-channel report list that exposes
routing as 2006LE/MU-derived, VL/PVL, or SG alongside bank, program,
note activity, controllers, pitch bend, and effect sends. It also reports
whether the 2006LE runtime and Yamaha effects bridge loaded. Its small engine
activity graphic is supplemental; the same values are always available in
text.
Use Alt+S, Alt+U, or Alt+Y for the three pages, F5 or Alt+R to refresh, and Alt+C to copy a complete text report. Tab and Shift+Tab move through the controls, and arrow keys switch among the page buttons. Live updates change rows in place without rebuilding the list or moving focus.
The status page describes the live plug-in instance owned by its host. VSTHost therefore exposes current channel activity. Foobar2000 MIDI Player may render a MIDI file ahead of playback and later open the editor on a new, idle instance; in that host the status page can consequently show defaults even while Foobar2000 is playing its already-rendered audio.
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, insertion variation routing, and GS Part Pitch Key Shift 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 syxg2026-hybrid.version.json
The first three files and the version marker 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.
Wine compatibility
The 32-bit plug-in and its separate native VL/SG workers can run under Wine, but the workers require Wine's newer WoW64 process arrangement. A user reported that an incompatible prefix let ordinary XG play while the VL worker faulted as soon as a VL note sounded, causing the part to fall back to piano. For Wine 11, use a 64-bit prefix and force the newer WoW64 mode when launching the 32-bit VST host:
WINEPREFIX="$HOME/.wine-syxg" WINEARCH=win64 wineboot WINEPREFIX="$HOME/.wine-syxg" WINEARCH=wow64 wine /path/to/vst-host.exe
WINEARCH=wow64 requires a prefix that was created as 64-bit,
which is Wine's default. It cannot convert a pure
WINEARCH=win32 prefix; create a separate 64-bit prefix instead.
This workaround was reported in
S-YXG100
Hybrid issue 4 and agrees with
Wine
11's documented new-WoW64 behaviour. Wine remains community-tested
rather than a primary supported platform.
Updating
Linux users can run sh ./Update-YamahaHybrids.sh without
PowerShell or Wine. Keep the accompanying Python script and product/key JSON
together. Python 3.9+ and OpenSSL are required. See the
Linux updater guide for signed verification,
commands, rollback and platform limits. This updater-only addition does not
change the synth version or audio.
Close Foobar2000, REAPER, VSTHost, and any other program using the synth,
then run Update Yamaha Hybrids.cmd. The updater can live beside
this product folder, inside it, or in a shared parent folder containing both
Yamaha hybrids. It searches no more than two folder levels and updates only
synths whose DLLs are already installed.
The updater checks stable GitHub releases, displays the release notes, and asks before replacing anything. Signed metadata limits each release to the known files for the detected product, and every downloaded file is checked against its signed SHA-256 hash.
Before replacement, the current managed files are saved in one compressed
rollback ZIP outside all plug-in folders. Only the newest rollback is kept,
under %LOCALAPPDATA%\Onj Research\Yamaha Hybrid Updater\syxg2026-hybrid\backups.
A failed replacement is restored automatically, and unrelated files are not
changed.
Voice selection
For Falcosoft MIDI Player VST output, a missing master-volume fade can be caused by Device settings, Mixer, Use Sysex for Volume/Balance. Disable that checkbox, keep MIDI-file SysEx enabled, and replay from the beginning. Controlled Falcosoft 6.6 tests and the reporter's Wine retest confirmed the original volume messages and fade return.
In Automatic mapping, the wrapper reads S-YXG2006LE's compact bank map. A defined slot is
rendered by the newer source engine. An undefined ordinary XG slot remains
on S-YXG50, retaining voices omitted by the XG Lite product. Defined Yamaha
panel banks 0/112 through 0/127 stay on S-YXG2006LE
when an individual program slot is absent, preserving the original engine's
native basic-voice fallback for DGX/PSR-era MIDI. Bank-select MSBs 33, 81,
and 97 continue to activate VL/PVL. Yamaha model 0x5D SysEx
activates SG.
If a MIDI file sends no MU Voice Map Select message, that automatic hybrid
choice remains unchanged. The standard parameter
F0 43 1n 49 00 00 12 mm F7 is supported: value 00
sends basic bank 0/0 voices to S-YXG50, while value
01 restores the normal hybrid choice. Variation banks, drum
banks, VL/PVL, and SG are unaffected. The choice persists across GM, GM2,
GS, and XG resets. Unsupported values are ignored.
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.