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. The VSTi was a part of the Yamaha SOL2 package. Yamaha discontinued support of this software synthesizer in 2003. As it is abandonware now, a portable version of the VSTi was created (installation and registry keys are not required). It uses embedded (into DLL resources) official 4MB 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 its 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 its directory (SXGBIN41.TBL, SXGWAVE4.TBL).
- Antidebug, S/N checking and trial mode code is 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 has 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.
- Download and install the VST MIDI Driver.
- Copy the syxg50.dll from the yamaha_syxg50_vsti.7z into any directory.
- Open VST MIDI Driver settings, click “Load VSTi” button and choose syxg50.dll.
- In the Advanced tab choose “VST MIDI synth” as the default MIDI synth.
- 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 more RAM), 2MB version (worse quality, consumes less RAM). 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.
- Download and install the foo_midi plugin from the foobar2000 website.
- 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.
- 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.
- Preferences → Playback → Input → MIDI synthesizer host. Choose “Yamaha S-YXG50” in the “plug-in” combobox. Apply changes.
- Ready! Now foobar2000 will play MIDI files using the Yamaha S-YXG50 synth.
- yamaha_syxg50_vsti.7z (3.0MB) — a version with the embedded 4MB wavetable, for general usage.
- yamaha_syxg50_vsti_ext.7z (4.0MB) — a version with external 2MB and 4MB wavetables, for experiments.
- bi2_polkovnik.mid (35KB) and bi2_polkovnik_syxg50.ogg (2.0MB) — demo MIDI file and how it has to sound.
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.
Thanks it's beautifulllllllll
It doesn't work because MIDI mapper has been removed from Windows 8, 8.1 and 10. :/
@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!
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 ? :)
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.
I hope you will fix that, because I am not the only one with that problem ... :)
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.
So cool!! Great work!!
Any chance to be the same work but with the s-yxg100 pvl version?
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.
BTW, if you have problems with VSTi settings in foo_midi for foobar2000, just update this component. This bug was fixed in version 1.252.
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.
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.
A little bit of the reverse engineering and nothing more :)
Is the code available?
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.
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?
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?
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?
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)
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.
Could you show me how to modify the DLL and set the default polyphony please?
Also, could you explain the TBL format and it's structure?
I had started to reverse engineer tbl, but stopped on a very early stage.
All work in progress data is here: http://veg.by/files/midisynth/yamaha_syxg50_tbl_exploded.7z
A guy plays with the S-YXG50's guitar: https://www.youtube.com/watch?v=w8qfXEpifvI
This is awesome! I managed to play some old XG midi files in foobar2000 with this.
Perfect in my Midioke Soft... Tanx VEG....
MAGIX Music Maker 16 Premium (not 2016)
MIDI Project Export to Ogg
it worked in my windows 7! thanks a lot! :D
Thanks so much for this! I had a bunch of MIDI files from my SCC-1 days and it was a joy listening to them again. I honestly don't remember whether SCC-1 sounded better or worse than this. But this sounds quite good, I'd say.
Thank you again. :)
Hi - any reason why my old games (like King's Quest 6 for example) are higher in pitch when played with the VSTi plugin?
Here's what I mean: https://www.youtube.com/watch?v=yla8PnUpBvo
Any way to fix this?
Luke, at first, soundfonts can't be 100% like an original Yamaha S-YXG50. They can't support variation effect, for example. You can compare any soundfont which tries to sound like Yamaha with Yamaha S-YXG50 (or with hardware Yamaha's synth) on bi2_polkovnik.mid (it's just an example which uses variation), and you will hear really huge difference. But I think that in this case the problem is somewhere else. Are you using VST MIDI Driver for playing music from DosBox? It is possible that something wrong with the VST MIDI Driver. Can you extract *.midi files from these games and try to listen them in the foobar2000 with foo_midi plugin (it supports VSTi and SoundFonts)? If you will hear no difference in the foobar2000, it will mean that VST MIDI Driver has some error.
Luke, I've encountered the same problem with the VST MIDI Driver when my devault wave out device was set to use 48000Hz sample rate. It seems that VST MIDI Drivers supports only 44100Hz sample rate, and when your sound device works with other sample rate, VST MIDI Driver still uses 44100Hz which is played faster or slower than needed. I've written to the author of the VST MIDI Driver about this bug and I hope that he will fix it soon.
JSFX plugin for Cockos Reaper DAW that allows to control the S-YXG50 VSTi:
Luke and Veg, I just downloaded the VST MIDI driver and the S-YXG50 soft synth and I noticed the same higher pitch problem when playing back the sample .mid and .ogg files in Widows Media Player (Windows 7 OS). When I switched the default system MIDI back to Microsoft GS Wavetable the sound produced was different (horrible IMO!) but the pitch was the same.
In XG Works 3.0.7E, when I go to Setup/System Setup/Wave Format, the highest sample rate listed is 44.100Khz 16 bit - regardless of whether I am using the Microsoft GS synth or the Yamaha soft synth. The MS GS synth is in tune (440-A) but the Yamaha synth is way out of tune - and I simply can't use it until the problem is fixed.
I'm hoping for a solution soon!
James Booth, are you using it through the VST MIDI Driver? If yes, try to change the default sample rate of your playback device (it is in the advanced settings of your default playback device in the system settings). Try to use 44100Hz. Any sample rate will be acceptable when this bug will be fixed in the VST MIDI Driver. But it is still not fixed, so you can use only one sample rate with this driver.
VEG, yes I am using the VST MIDI driver.
I went into the settings for my on board sound (Realtek HD audio Manager) and changed it from "24 bit 48000Hz Studio Quality" to "16 bit 44100Hz CD Quality" and now it plays MIDI files in tune! Yay! Thanks for the tip!
I still would like to see the problem fixed, but this is a good work-around for now...
VEG, thank you so much for making this! I was super bummed when Microsoft removed the MIDI mapper from Windows, and with the Foobar2000 setup, this is a fantastic replacement for general listening. Fantastic work!
SoftSynth YAMAHA YmF-724 44100 16-bit (9,67mb bank) https://yadi.sk/d/c08fJIF73J4KNx
WoW! YXG50 returns! *_*
Thanks for your efforts to let this, VEG.
Indeed it was cosidered buried, dead!
A little question:
Can VST MIDI Driver store settings from the YXG50 config GUI panel?
Foobar2000 it's able to make this.
The bit-depth/sample-rate's bug it seems now fixed.
It's a question to the author of the VST MIDI Driver (kode54). foo_midi also had similar problem a year ago, but it was fixed.
VST MIDI Driver have also some problems with other applications which they make use of BASS lib. At this point is unreliable.
Really, I think we need a best solution.
CoolSoft VMS, IMHO, is eligible and mature enough to extend it support to VST.
The author, it seems, lacks some of VST knowledge and maybe someone could be help him... maybe one who develops, for instance, the SFMP. xD
That app hosts the VSTi very well.
Awesome. Works pretty well with windows media player, but there's one thing that's really annoying me. I've tried it with vanBasco's MIDI/karaoke player, it seems to only work with the windows default (Microsoft GS Wavetable Synth), and VirtualMIDISynth #1, which I installed. (It's an app/driver that you can configure it with soundfonts, just like VST MIDI Driver but with soundfonts instead of VSTs)
I tried setting the default MIDI Mapper driver to VST MIDI Driver both port A and port B and they both worked in windows media player, but not in vanBasco player. When the vanBasco is set to play the windows GS wavetable driver, or the virtualMIDIsynth, it plays it just fine, but when I set it to play with VST driver port A or port B, or the MIDI mapper default if the default is set to VST driver, it says "Undefined external error". Haven't tried any other players yet, but haven't still found any online solutions to fix this. Please help me.
OK, I tried everything now, it's not this VST, it's the VST MIDI driver application. It only works with windows media player.
Tried it with vanBasco's player, it said "Undefined external error", tried it with PFA, it didn't say anything but there was no sound.
But still, can you please help me fix this if you know any ways? Or at least tell me if there are other VST drivers other than the one described in this page...
I'm on windows 7 BTW
This is Great!
cs127, download and install http://www.tobias-erichsen.de/wp-content/uploads/2015/08/loopMIDISetup_1_0_13_24.zip
Settings on the screenshot https://yadi.sk/i/FNCOjOkD3QT7Vw
I have a copy of the latest retail copy of the S-YXG 50 SoftSynthesizer for Windows 2000/XP (V4.21.03), which includes the control panel settings that give you a little more control over the settings (and apparently also allows up to 512 voices, although I haven't been able to get above 128), plus allows you to switch between the 2MB and 4MB wavesets on the fly.
Please drop me a message if you want a copy of it. It's very similar to the Windows XP update version, but is still a different version, so perhaps you may find something interesting with it! I noticed in the control panel applet that there is mention of S-YXG100; I wonder if a Windows 2000 version was ever made, as all that I can find online is a version for Windows 9x.
This absolutely made my day, I haven't listened to my old XG MIDI collection in probably close to 20 years and this VST plugin sounds as close to my old beloved SW60XG as I could hope for. Thanks!
I found your GREAT WORK (! :) :) :) ) but i couldnt get it running:
I am using Ableton 9 Suite on WIndows 10 which uses 64bit VST. I think your VST is 32bit - it is possible to publish an 64bit VST of syxg50?