Yamaha S-YXG50 Portable VSTi v1.0.0 [2016/04/25] (a software MIDI synth)

A software MIDI synthesizer for Windows, which functions as a VSTi plugin. Supports both the Yamaha XG and the Roland GS extensions, which is a unique feature of the S-YXG50. It is based on the trial version from the Yamaha SOL2 package. The full version of this VSTi had never been released, because Yamaha had decided to discontinue support of all its software synthesizers in 2003. Fortunately, the trial version have a full version of the S-YXG50 engine, so it is possible to remove the trial restrictions to get a full version. In addition to the removed trial restrictions this patch adds the portability (installation and registry keys are not needed), also it uses embedded into the DLL resources the 4MB official wavetable files, which is the best version of wavetable files for the S-YXG50.

Download: yamaha_syxg50_vsti.7z (3.0MB).

What's new in this patch

  • Installation isn't required. SYXG50.DLL reads files from the own directory.
  • Wavetable files are decrypted and stored in the resources of the DLL file.
  • If you remove them from the resources, VSTi will find them in the own directory (SXGBIN41.TBL, SXGWAVE4.TBL).
  • Antidebug, S/N checking and trial mode code were removed.
  • Hidden settings are read from the ini file with the same name as the dll file, but with the ini extension.
  • Polyphony limit is 128 by default.
  • More frequent updates of information in the GUI.
  • Help button will be hidden if SYXG.CHM is not present.
  • VST meta information is stored in the resources (String Table), so it can be changed easily if it is needed.
  • GUI can be disabled and GUI resources can be removed, as the result this VSTi will work as the SGP.DLL.

How to use

You have to set up some VST host to play MIDI using this synth. It can be your favorite player, but you need to find a plugin, which allows to play MIDI files through VSTi. Some instructions are provided below. Use the bi2_polkovnik.mid (35KB) for checking your setup, it have to sound exactly as the bi2_polkovnik_syxg50.ogg (2.0MB).

VST MIDI Driver (as a system MIDI synth)

VST MIDI Driver allows to use any VSTi as a global system MIDI synth. In this case every game or MIDI player, which uses the default system MIDI synth, will use Yamaha S-YXG50.

  1. Download and install the VST MIDI Driver from this page.
  2. Copy the syxg50.dll from the yamaha_syxg50_vsti.7z into any directory.
  3. Open VST MIDI Driver settings, click “Load VSTi” button and choose syxg50.dll.
  4. In the Advanced tab choose “VST MIDI synth” as the default MIDI synth.
  5. Ready! Now Yamaha S-YXG50 VSTi will be used as the default system MIDI synth.

Yamaha S-YXG50 WDM (an official driver for the Windows XP only)

VST MIDI Driver supports Windows XP/Vista/7+, but on the Windows XP it is better to use the official Yamaha S-YXG50 WDM driver, which you can download from the Microsoft Windows Update servers: 4MB version (better quality, consumes less resources), 2MB version (worse quality, consumes more resources). This WDM driver can be installed manually using Add Hardware master in the Control Panel. Don't forget to set Yamaha S-YXG50 as the default system MIDI synth in the Sound settings. VSTi version of this synth is not needed when Yamaha S-YXG50 WDM is used.

foobar2000 (the best player for ones who loves music)

foobar2000 doesn't use the system MIDI synth, but it is not a disadvantage. It allows to use Yamaha S-YXG50 VSTi witout installing any system drivers, which is much more safe.

  1. Download and install the foo_midi plugin from the foobar2000 website.
  2. Create a new subdirectory in the foobar2000 directory and name it “vsti”. Copy the syxg50.dll from the yamaha_syxg50_vsti.7z into that directory.
  3. Open foobar2000, Preferences → Advanced → Playback → MIDI Decoder → VSTi search patch, and set the full path to your vsti subdirectory. Apply changes and reopen the Preferences window.
  4. Preferences → Playback → Input → MIDI synthesizer host. Choose “Yamaha S-YXG50” in the “plug-in” combobox. Apply changes.
  5. Ready! Now foobar2000 will play MIDI files using the Yamaha S-YXG50 synth.

Links

30 Comments

  1. j7n

    Is it possible to add an ini setting for the output level, or hack in a lower default? I would like to use this driver as a system-wide synth, where VST configuration isn't working, and therefore neither polyphony nor level can be chosen during run-time. There is no problem in a VST enviroment or when rendering single tracks, but full mixes often peak at +6 db, and in games there usually are other sound effects.

    It seems that flaws in this mu50 4MB sample bank come through more clearly compared to the VxD/WDM versions, where artifacts were generally below the global 13-bit noise floor and attenuated by lower treble response. This is most apparent on percussion and bass (Kick drum H, Congas, Fretless Bass). We can hear quantization noise, hiss, and buzzing. I find that bass from the 2006LE works well as a replacement (attenuated by about 6-7 db), without sounding radically different.

    I'm curious if standalone tone generators are better in this aspect, perhaps with filtering that is better matched to the sounds.

  2. Valerio

    It doesn't work because MIDI mapper has been removed from Windows 8, 8.1 and 10. :/

  3. Steve

    @Valerio: The VST driver will still work in newer versions of Windows, but on a per-application basis. Yes, it does suck that the MIDI mapper is gone.

    Just tried the VST plugin and the VST driver in GZDoom and it works perfectly! Thanks for this updated version of the VST plugin!

  4. Mike

    Hi Evgeny !

    I installed the VST MIDI Driver as a system MIDI synth with success on my Windows 7 x64. It sounds great and could be my favourite MIDI solution for retro-gaming ... if there would't be the problem, that I am unable to set the volume ! I am able to move the volume-slider in the config-program, but it doesn't have any effect and also the setting won't be stored - when I open next time the config-program, the volume will be at 0db again. I tried to run it as admin, but no chance ...

    Do you know how to fix that ? Any ideas anyone ? :)

  5. VEG Post author

    Mike, unfortunately, I can't solve this problem right now. It may be solved by adding a new setting (DefaultVolume) into ini-file. Maybe in the future I'll add such setting.

  6. Mike

    I hope you will fix that, because I am not the only one with that problem ... :)

  7. VEG Post author

    Mike, it doesn't seem that this project is popular. So, the priority is low. But I have this thing in my long-term TODO list.

  8. David SV

    So cool!! Great work!!

    Any chance to be the same work but with the s-yxg100 pvl version?

  9. VEG Post author

    Unfortunately, it will be extremely hard to port S-YXG100 PVL without the source code, because it was distributed as a VxD driver for Windows 9x only.

  10. jj

    Thank you so much veg I got this working perfectly on win 8.1 using coolsoft virtual midi synth to fix midi mapper problem. I no longer have to use a virtualmachine to find and play midi files anymore. yamaha xg is the best.

  11. inn8productions

    How exactly did you achieve this? I've never been able to get into the S-YXG50's code and play around with it like you did.

  12. VEG Post author

    How exactly did you achieve this?

    A little bit of the reverse engineering and nothing more :)

  13. VEG Post author

    inn8productions, there is no source code. I've used disassembler and debugger to reverse engineer some parts of the DLL, and FASM to assemble replacement parts of the code.

  14. inn8productions

    Apologies. Would it be possible to edit the S-YXG50 to exceed its default 128 polyphony and perhaps make the default 256 or above? If there is a way, could you show me how to do it?

  15. VEG Post author

    inn8productions, of course it is possible, but I'm not sure if it makes sense. Do you have some example midi file when it is really needed?

  16. inn8productions

    Of course. Stress-tester MIDI files created for the express process of testing a CPU, rather than containing an actual melody, often times exceed the 128 mote polyphony limit. Also, for future reference, what area of the .dll file do I need to modify in order to tweak the default polyphony?

  17. inn8productions

    Another example of the 128-polyphony limit can be seen in complicated XG MIDI files that heavily use reverb or echo. (effects that sustain the notes)

  18. VEG Post author

    inn8productions, it is not as easy as you may think. If 128 is enough for normal usage, it doesn't worth to expand the limit further, because it needs deep investigation if the engine uses some static buffers for 128 sounding instruments. They have to be expanded also, in other case we will have a buffer overflow.

  19. inn8productions

    Could you show me how to modify the DLL and set the default polyphony please?

  20. inn8productions

    Also, could you explain the TBL format and it's structure?

  21. Marius

    This is awesome! I managed to play some old XG midi files in foobar2000 with this.
    Thank you!