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.
  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

  1. #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. #2
    Edward

    Thanks it's beautifulllllllll

  3. #3
    Valerio

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

  4. #4
    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!

  5. #5
    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 ? :)

  6. #6
    VEG 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.

  7. #7
    Mike

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

  8. #8
    VEG 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.

  9. #9
    sulis

    Fantastic

  10. #10
    David SV

    So cool!! Great work!!

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

  11. #11
    VEG 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.

  12. #12
    VEG Author

    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.

  13. #13
    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.

  14. #14
    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.

  15. #15
    VEG Author

    How exactly did you achieve this?

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

  16. #16
    inn8productions

    Is the code available?

  17. #17
    VEG 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.

  18. #18
    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?

  19. #19
    VEG 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?

  20. #20
    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?

  21. #21
    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)

  22. #22
    VEG 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.

  23. #23
    inn8productions

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

  24. #24
    inn8productions

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

  25. #27
    Marius

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

  26. #28
    Junarism

    Perfect in my Midioke Soft... Tanx VEG....

  27. #30
    haz721992

    it worked in my windows 7! thanks a lot! :D

  28. #31
    ashlar

    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. :)

  29. #32
    Luke

    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?

  30. #33
    VEG Author

    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.

  31. #34
    VEG Author

    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.

  32. #36
    James Booth

    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!

  33. #37
    VEG Author

    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.

  34. #38
    James Booth

    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...

    Thanks again!

  35. #39
    Wally

    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!

  36. #41
    nicK

    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.

  37. #42
    VEG Author

    nicK,

    Can VST MIDI Driver store settings from the YXG50 config GUI panel?

    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.

  38. #43
    nicK

    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.

  39. #44
    cs127

    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.

  40. #45
    cs127

    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

  41. #46
    beterhans

    This is Great!