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.
The patch doesn't affect sound synthesis of the original VSTi. It was tested on hundreds of MIDI files to ensure that the output is bit-identical to the original S-YXG50 VSTi with the same settings.
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.
Links
- 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.
Me again! It seems I was able to get this running reasonably well using a tool called VSTHost along with the loopback. A bit more involved to get it set up and running than the Falcosoft solution, but I'm getting good results.
Still not as ideal as being able to simply get the VST running using a VST midi driver, so if anyone has a solution to that, please let me know.
Thanks!
I absolutely love this synthesiser, thank you for releasing an unofficially modified version! <3
How do you select an instrument in this VST?
The 'Data List' was «shipped» with XGPlayer – file named "Syxgctrl.hlp". To view it on Vista, 7, 8, 8.1 you have to find KB917607 update (that restores old winhlp32) and install it. In this help-file click "MIDI" — "XG Normal Voice List" or "XG Drum Voice List", if General Synthesis mode – "TG300B Normal Voice List" or "TG300B Drum Voice List". Also XGPlayer has these files: Syxg53h.txt (XG50 Voice list for MA-52W), Syxg101w.txt (XG100 voice list for MA-52W), Tg300b.txt (TG300B Voice List for MA-51W).
Or read posts #63 and #64
What happened to VST MIDI Driver?
I already have a version of it installed, but I'd like to know what happened to it. It's not on kode54's website anymore, and the github repository is gone.
I don't know. I guess it is better to ask kode54 himself.
If anyone has issues getting this to work in a 64 bit DAW (in my case Ableton Live 10), get jBridge to convert the S-YXG50 vst to 64 bits and it will work. jBridge is a paid software but it is cheap ($19 as of this writing) and it works great.
The vst midi host download link doesn't work. Would you mind sending it to my email instead? Or anything so I could download it again.
Don, kode54 told that he lost the latest source code of the driver. There are some links to old versions of the driver in that topic, but as far as I remember they had some issues. So, I would suggest to use foobar2000 with foo_midi plugin, or some other solution if installing S-YXG50 as a system-wide synthesizer is a must. Unfortunately, I didn't try to use any other solutions, but I saw people suggesting some alternatives somewhere in the comments.
I'm gonna second the "how do you change instrument" question above
I haven't done much with MIDI before, and I tried using this as an instrument in Reaper which seems to work EXCEPT I have no idea how to change instruments. I can find stuff about how to change "MIDI banks" but that just lets me get other "Windows defaults", and somehow when I did that on a track it changed my keyboard's input into a standard organ, but the MIDI item editor into drums from the VST? Very much lost
FIGURED IT OUT
So: I downloaded this https://www.kvraudio.com/forum/viewtopic.php?t=486318 (which VEG helpfully mentioned in comment 63 in this thread, I googled in case there was a more up to date version though)
I looked up this https://reaperblog.net/2015/06/quick-tip-how-to-install-js-plugins/ to see how to install it
Then I put it ahead of the VST in FX for a track, and now we're cooking
Joakim, didn't know about that thread, thank you for the link. If you're registered on that message board, don't forget to say "thank you" to the author of the control panel ;)
Hey there, eveybody.
VEG, I just recently discovered your VST for the Yamaha S-YXG50, and I have managed to get my Cakewalk Music Creator software to recognize it as a plug in. I'm playing the synth from a Yamaha S80 keyboard, and thus far, I've been able to access the 128 sounds that are available in Bank 0 of the S-YXG50, but I haven't been able to access any of the sounds in any of the other banks. I've tried using the " insert bank/program change" command in Cakewalk, but Cakewalk shows Bank 0 as being the only available bank. I'm wondering if there's something I haven't done with respect to configuring the softsynth. I'd appreicate any inisght you or anyone else might be willing to offer. Thanks very much for creating this great-sounding VST!
Lee Todd, unfortunately, I'm not a music creator, so I don't know the tools for creation of music, I use S-YXG50 just for listening.
I heard that you can use Shiru's control panel for the S-YXG50 to switch instruments in the Reaper. Unfortunately, I don't know if there is such panel for the Cakewalk Music Creator, or it should be created by somebody. As far as I understand, there should be possibility for switching instruments using raw SysEx messages from any music editor, and you can find S-YXG50 manual on the internet for details.
Hey there, VEG.
Thank you for responding so plromptly.
I figured it out!
Per your suggestion, I searched online for an owner's manual. My search led me to discover this very helpful website:
https://battleofthebits.org/lyceum/View/Yamaha+XG/
In addition to mentioning some critical points regarding CC messages for selecting the various banks on the S-YXG50, the site also includes a link to a user manual published by Yamaha UK, which includes a comprehensive voice list.
https://web.archive.org/web/19970630045815/http://www.yamaha.co.uk/download/syxg50/sxg5095.exe
For folks who are trying to get the S-YXG50 to run in Cakewalk, I can tell you what worked for me. At the beginning of the "event list" for the one and only track in my piece (a simple organ composition) I inserted the following messages in the following order:
Hallo Leute, wie Ihr sicher schon bemerkt habt, gibt es für die WIN 10 Versionen >2004 keinen funktionierenden VST Midi Driver mehr.
Ich habe glücklicherweise mit Herrn Herman Seib einen Programmierer gefunden der den Treiber so abgeändert hat, dass er unter den neueren Win10-Versionen 21h1 und Höher sowie WIN11 ablauffähig ist. Diesen Treiber hat er unter folgendem Link bereitgestellt: https://github.com/Arakula/vstdriver/releases/tag/v1.0.0-alpha3 Momentan überlegt er sich noch weitere Verbesserungen die er gegebenenfalls einfach unter https://github.com/Arakula/vstdriver Weitere Releases ablegt. Bitte nicht erschrecken, dieser Treiber wird bei der Installation zunächst abgelehnt, da er Schaden anrichten könne und muß dann über die übliche Routine, dass man der Software vertraut freigegeben werden.
Meine Bitte an euch ist, dass ihr dem Entwickler nach dem herunterladen und ausprobieren eine kleine Spende zukommen lasst, damit er uns gegebenenfalls weiterhin unterstützt, wenn der Treiber wieder wegen erneuter WIN Sicherheitsupdates nicht mehr funktioniert. Die beiden möglichen Spendenadressen in PayPal.com sind - him@hermannseib.com oder office@hermannseib.com
Ich selbst habe Herrn Seib eine etwas größere Spende zukommen lassen, da ich nicht zufrieden war mit den alternativen Lösungen wie LoopMidi in Verbindung mit dem Midiplayer60 oder auch foobar2000 mit dem SYXG50 Treiber sowie VirtualMidiSynth. Diese Spende hat mit Sicherheit nicht die Kosten gedeckt die man bei einem offiziellen Auftrag hätte zahlen müssen. deshalb hiermit nocheinmal mein Dank an Herrn Hermann Seib an dieser Stelle.
Hello friend's, as you have probably already noticed, there is no longer a functioning VST midi driver for the WIN 10 versions> 2004.
Fortunately, in Mr. Herman Seib I found a programmer who modified the driver so that it can run under the newer Win10 versions 21h1 and higher as well as WIN11. He has made this driver available under the following link: https://github.com/Arakula/vstdriver/releases/tag/v1.0.0-alpha3 He is currently considering further improvements which he can simply go to https://github.com/Arakula/vstdriver stores more releases. Please do not be alarmed, this driver is initially rejected during installation because it could cause damage and must then be released via the usual routine of trusting the software.
My request to you is that you send the developer a small donation after downloading and trying it out so that he can continue to support us if the driver no longer works again due to another WIN security update. The two possible donation addresses in PayPal.com are - him@hermannseib.com or office@hermannseib.com
I myself made a somewhat larger donation to Mr. Seib because I was not satisfied with the alternative solutions such as LoopMidi in connection with the Midiplayer60 or foobar2000 with the SYXG50 driver and VirtualMidiSynth. This donation certainly did not cover the costs that would have been paid for an official order. therefore I would like to take this opportunity to thank Mr. Hermann Seib once again.
The vstdriver uses BASS DLL to output sound. It causes issues when a midi player itself uses another version of the BASS DLL. If the author of the fork is going to develop the driver further, he could try to replace BASS to an own built-in WASAPI renderer, to avoid any issues and improve compatibility with various players.
He will ;-)
... but that will take some time. In theory, it should easy, since the driver already passes the MIDI events to a separate VST hosting program, so you "only" need to transfer the complete sound generation and output from the driver to the VST hosting program. That would automatically provide process isolation so that different BASS DLL versions could be used.
It goes without saying that in practice this is not exactly a piece of cake. Plus, I strongly dislike the dependency on the BASS library, which is a MASSive overkill for the VST driver's purpose. So I will presumably replace it with my own audio output routines ... I got some experience with that, at least with MME and ASIO. WASAPI shouldn't be too hard either. But, sa said ... this will take some time.
Glad to hear that. A couple of years ago, I had an idea to make a fork of the vstdriver to untie it from the BASS DLL, but it was left untouched in my list of ideas, and I'm really happy that somebody decided to do this.
BTW, I was using your SAVIHost for development and testing of this patched version of the S-YXG50 VSTi. Thank you =)
Thanks a lot for working on the VST driver again! The S-YXG50 is my favorite MIDI synth in Doom and Duke3D. The fact that it works on recent Win10 versions once again is a real joy!
New preliminary version for testing here.
Would anyone have any further information on the lookup table yamaha uses? The decrypted audio wavetable itself looks like it's Delta 16-bit PCM (0-65535 sample values?) but the lookup table sxgbin41.tbl is binary and a mystery to me? Can it be edited / understood? I was wondering how difficult it would be to take the wavetable and implement it in a different VSTi or even the existing wavetable soft synths that allow custom wavetables?
S-YXG50 is more complicated than just playing specific samples from the wavetable file. It has a lot of additional processing and effects. It will be hard to recreate authentic sound in other synth engines with support of all XG features.
I see, thanks for the reply Veg - that is what I feared otherwise I assume we might have seen an emulation of the Yamaha MU & QY series of synths by now if it wasn't too complex. It sounds like someone would need to reverse engineer the .dll too in order to understand it which is far beyond my programming skills haha!
It's possible to crack S-YXG2006LE? Can you change polyphony limit to 128?
It is possible to change anything, but I don't plan any patches for the S-YXG2006LE in the near future.
Hermann Seib,
Does the midi driver have Midi in? it loads the vst but how to play it?
To get this VSTi-plug in to work with basically anything that supports external MIDI devices I have been using LoopMIDI ( https://www.tobias-erichsen.de/software/loopmidi.html ) to create a virtual MIDI port and savihost ( https://www.hermannseib.com/english/savihost.htm ) to host the VST. Keep in mind that this plug-in is 32-bit thus you need savihost32 to host it.
Steps to get it to work:
1. Download the plug-in VST
2. Download savihost32
3. Download loopMIDI
4. Extract loopMIDI
5. Install loopMIDI (I just use the default settings)
6. Extract the Plugin to a folder where you can easily find it
7. Extract savihost32 to the same folder as where you extracted the plug-in
8. Rename savihost32 to the name of the plug-in dll (in this case syxg50) WARNING!!! DO NOT REMOVE THE .exe FROM SAVIHOST AND DO NOT INCLUDE THE .dll (so the file you end up with is called syxg50.exe)
9. Create a shortcut to syxg50.exe on your desktop (for easy access)
10. Start loopMIDI and at "New port-name" at the bottom choose a name for the port (I use Yamaha S-YXG50 as the name but it can be anything) and then click the "+" at the bottom-right to create the port.
11. Start the shortcut from your desktop that you made for the plug-in and in the menu-bar at the top select "Devices" and then "MIDI..." and next to "input port" select the name of the port that you created in step 10 and click "OK"
12. Now your virtual Yamaha S-YXG50 is properly set up to receive MIDI from your favourite MIDI application, to find out how to send MIDI from your application to an external device I will have to refer you to the documentation of said application.
13. After a restart of your computer all you have to do is restart loopMIDI and then the plug-in from the shortcuts on your desktop.
This guide will work for any VST that accepts MIDI-input, all you have to keep in mind is to select the correct savihost architecture for your plug-in (32-bit or 64-bit) and to rename the savihost executable to the exact name that the plug-in has, create a MIDI-port in loopMIDI for it and select that port for the input port as stated in step 11.
small sidenote!!!!! This is a VST2 plug-in so you need the savihost for VST2 plug-ins!!!!