ScummVM logo Forum Index - ScummVM website - Contact us - Buy Supported Games: GOG.com Rules - Search - Register - Login curved edge
Folder Forum Index > Help and Support > Obsolete: Enhanced ScummVM MIDI music on Windows Goto page 1, 2, 3, 4, 5, 6  Next
Obsolete: Enhanced ScummVM MIDI music on Windows
  Author    Thread Reply to topic
raina



Joined: 12 Jan 2006
Posts: 224
Location: Oulu, Finland
Obsolete: Enhanced ScummVM MIDI music on Windows 

Enhanced ScummVM MIDI music on Windows
Without the need for SoundFont compatible hardware

This guide is obsolete for ScummVM since FluidSynth's inclusion in the Windows builds. Still works though, especially for other apps and games. Smile

NOTICE!: (please read this first)

    This guide now covers Windows XP and Vista but it should also work on previous versions of Windows. Just let me know and we can confirm this. Also, if you've got suggestions or if you need help, just reply on this thread!

    The guide deals with installing a virtual device driver and to pull that off successfully, you require administrator level access to your Windows system. Proceeding with the steps without it does no good.

    Also, you are expected to be familiar with things like downloading and running an application, extracting compressed archives and deleting and renaming files, otherwise you might get stuck in details I might have overlooked.


Introduction
    See TODO.


Alright, let us begin..

  1. Installing MIDI loopback
    First we need to download and install the MIDI Yoke patch cable driver. This will take MIDI music data sent from ScummVM (or any other app) and loop it back to Windows so that we may route it further. Here are direct links to the NT/2000/XP versions:

    Complete the installation by running the installer or following the instructions and finish it by restarting the computer when prompted. If you're running Windows Vista, skip to step 3.



  2. Enabling MIDI loopback
    Check that MIDI Yoke is properly installed by opening
      Control Panel
        > Sound and Audio Devices
          > Audio

    and confirming that MIDI Yoke ports appear on MIDI music playback device list.

    For now, select Out To MIDI Yoke: 1. You may now skip to step 4.

    (You can change back to regular Windows MIDI without uninstalling MIDI Yoke by selecting Microsoft GS Wavetable SW Synth.)





  3. Enabling MIDI loopback on Vista
    For whatever reason, the audio and MIDI device control panel has been scrapped in Windows Vista, so you need a 3rd party tool for changing your default MIDI device. Rolling Eyes

    Joseph Cox's Vista MIDI Picker should get the job done.
    No installation is required but you may want to hold on to the app for obvious reasons. Run Vista MIDI Picker.exe and select Out To MIDI Yoke: 1 as your MIDI Output Device. Hit Save and on to the next step.

    (You can change back to regular Windows MIDI without uninstalling MIDI Yoke by selecting Microsoft GS Wavetable SW Synth.)





  4. Obtaining a software synthesizer
    Next we need a software synthesizer to play the MIDI music sent from ScummVM. I've found rgc:audio sfz to be a most wonderful, no-nonsense kind of solution. It's free, simple and small.
    If you open the folder where you just installed sfz, you'll find it's extensively documented should you need to tweak the settings for better performance or whatever.

    Now, the unfortunate extra step. If you have an ASIO soundcard, you may skip to straight to step 6. ASIO is a low-latency audio protocol available in professional or prosumer soundcards or through special third party drivers and if you didn't already know that and/or you haven't heard of ASIO before, it's pretty safe to assume you don't have it. So step 5 it is for you. Smile



  5. Setting up synthesizer I/O (consumer hardware)
    You need SAVIHost to run sfz and you can either get:
    Pick any one and extract the files to the same folder where you installed sfz.

    The synthesizer part of sfz is actually fully contained in the file called sfz.dll and it's meant to be used inside music sequencer applications (=hosts) as a plug-in. The sfz.exe is a primitive host application that enables sfz to function as if standalone, but sadly it only provides ASIO audio output. Since we are in step 5, we don't have ASIO, thus we don't have need for said sfz.exe. Therefore,

      delete sfz.exe

    The savihost.exe we just extracted is a replacement for the original sfz.exe with the difference that it also works with standard WaveOut and DirectSound output. And to make it recognize the core sfz.dll and to fully replace the old sfz.exe,

      rename savihost.exe to sfz.exe

    Now, double-click your new sfz.exe to run it. I know, a lot of buttons and stuff but most of it is not needed. In fact, you can hide all the toolbars from the View menu - they are not needed. At this point we're just going to set up the devices, and memorize how to load and save settings in SAVIHost because after we're done with this step, the instructions are going to focus on the sfz core, not the host app.



    Open Devices
      > MIDI...

    For your Input Port, select the MIDI Yoke input with the number that corresponds to the output number selected earlier in Windows Audio settings. In this case, In From MIDI Yoke: 1. There's no need to pass on through, Output Port may remain * No MIDI *.



    For Devices
      > Wave...

    The default settings should do fine - Input is not needed, MME: Microsoft Sound Mapper points to your default Output device, you can increase sample rate (if CD-quality is not enough) and buffer size (if the sound is crackling).



    When we later discuss saving and loading sfz settings, the PlugIn menu is where you find the Load..., Save and Save As... commands. The next step discusses the same issues as this one but is written for the original sfz.exe. You may now skip to step 7.



  6. Setting up synthesizer I/O (ASIO hardware)
    Double-click sfz.exe to run it. At this point we're just going to set up the devices, and memorize how to load and save settings because after we're done with this step, the instructions are going to focus on the sfz core, not the host app.



    The configuration is straightforward: From MIDI, select the MIDI Yoke input with the number that corresponds to the output number selected earlier in Windows Audio settings. In this case, In From MIDI Yoke: 1.



    For ASIO device and its Outputs, you probably know best yourself. Wink The ASIO menu also lets you launch your driver's ASIO control panel for setting sample rates, buffer sizes etc.

    When we later discuss saving and loading sfz settings, the File menu is where you find the Load Program (.fxp) and Save Program (.fxp) commands.



  7. Sounds for your synth
    Next we need a SoundFont or several to finally turn the MIDI data flow into audible music and to have some options to better suit different ScummVM games. SoundFont is basically a sound file with musical properties making them more complex than your plain .wav or .mp3. Regardless, the Internet is full of them, free and commercial. But what you're looking for is not the most specialized or original sounds but rather a solid, well-rounded, full General MIDI bank. That way you're prepared for whatever those crazy adventure game music composers had in mind when they decided to use a particular instrument patch and hopefully do justice to the original composition. I've picked two here for you to try out but nothing is stopping you from finding more - or replying and telling the rest of us about them for that matter.

    • Chorium Revision A ~27.5MB, small, cute and a very good GM SoundFont for its size. Direct download, RAR archive. No website, author welcomes suggestions and bug-reports to openwrld (at) kebi (dot) com.
    • SGM-V2.01 ~235MB, I generally prefer the sound of this one over Chorium but it depends on the game. You can get it from the website at http://www.geocities.jp/shansoundfont/ but since the actual download is hosted on an annoying waiting site and the SoundFont requires special sfArk extraction, I took the liberty of mirroring the plain .sf2 file here, just to make things a little simpler. If you don't agree of my actions, by all means, go the official route.

    I thought I could make a point about the CPU usage of these SoundFonts where Chorium would have stood out being less of a hog but a quick test seemed to indicate they're pretty much neck and neck here. So, let's base the recommendations on your Internet connection speed. If you have a thin tube, get Chorium, which is roughly 10% of SGM's size. If you've got the bandwidth, get both so that you already have two options from which to choose when you start another classic adventure game.

    Download the GM SoundFont of your choice and extract it to a folder, any folder. No harm in putting it where sfz itself is either.



  8. Loading the sounds into the synth
    Now, let us assume you have your sfz.exe running and the UI looks like this:



    You can now drag and drop your SoundFont into sfz, or click the empty box next to FILE > to open the file selector. When a SoundFont is loaded, its file name will show in the currently empty box. Now, the last thing standing between enjoyable game music and crapfest is setting the MIDI drum channel. (If you don't do this, all the drum hits will be played with a piano sound). MIDI drums are generally played on channel 10 and that seems to hold true for BaSS and some LEC games I tried just now. So you first need to

      Select CHANNEL > 10

    Then assign the SoundFont drum bank to this channel. The drums are usually lurking around bank 127 or 128, it depends on the SoundFont a little. So

      Select BANK > 127

    and you should be done. You can now save sfz settings to save you a little trouble the next time you're using this setup. Just load the settings and you should be ready to go.

    The rest of the settings you may optimally leave alone. If you're experiencing performance issues, running low on RAM or CPU, consult the sfzfaq.htm bundled with sfz. It gives valuable pointers on the MODE, QUALITY, EFFECTS and POLY settings.



  9. Ready to rock
    The setup is now ready. You just need to edit your ScummVM game settings to use Windows MIDI as the Music driver before starting to play. Just to recap, a working path to enhanced ScummVM MIDI music on Windows is as follows:

      ScummVM > Windows MIDI > MIDI Yoke > (SAVIHost) > sfz > SoundFont




There, hope it works for you as both the ASIO and SAVIHost routes work for me. Once more, I'll be watching this thread for comments, trying to help out with problems and updating the guide if needed.



Demos:

Tips:
    See TODO.


Known issues:
    Day of the Tentacle: Distorted sound in the Chron-O-John cutscene.


Good to know:
    To quickly reset the SoundFont (in case notes appear stuck for one reason or another), just click the > next to FILE in sfz and reselect the file.


Thanks:
    chrisis for helping extend the guide to Windows Vista.


Changes:
  • 6.8.2010: Images hosted on a new server


TODO:
  • Introduction, what's the point of this guide? Who is it written for? Why choose this over plain Windows MIDI or Adlib/MT-32 emulation?
  • Tips on SoundFont settings an such. Contributions also accepted.
  • Probably countless little edits.


Last edited by raina on Mon Jan 10, 2011 12:10 am; edited 12 times in total
 Reply with quote  
Post Mon Sep 22, 2008 12:46 pm 
 View user's profile Send private message Visit poster's website
md5
ScummVM Developer


Joined: 03 Nov 2005
Posts: 2189
Location: Athens, Greece
 

Fantastic guide! Thanks Smile

 Reply with quote  
Post Mon Sep 22, 2008 2:07 pm 
 View user's profile Send private message
Queseuq



Joined: 18 Sep 2008
Posts: 10
 

Thanks for the guide, really easy to follow and it all works perfectly!

 Reply with quote  
Post Fri Sep 26, 2008 10:22 am 
 View user's profile Send private message
fingolfin
Retired


Joined: 21 Sep 2005
Posts: 1466
 

I took the liberty of fixing the formatting of this guide (some list item tags where swapped with size tags, making more of the text "large" than apparently intended; also inserted some extra newlines).

Anyway, looks useful, I'll make it sticky Smile

 Reply with quote  
Post Fri Sep 26, 2008 11:02 am 
 View user's profile Send private message
fingolfin
Retired


Joined: 21 Sep 2005
Posts: 1466
 

P.S.: All in all, I do wonder how this compares to just using the built-in fluidsynth software synthesizer + sound font (assuming the Windows port *does* use fluidsynth).

 Reply with quote  
Post Fri Sep 26, 2008 11:05 am 
 View user's profile Send private message
chrisis



Joined: 30 Oct 2005
Posts: 132
Location: Innsbruck, Austria
Windows Vista 

Hello, just want to tell, it works in Vista too, really great guide!

But there is one additional step required, by downloading a simple tool.

The problem is, there is no control panel for sound and audio devices in stupid Vista, so you can't choose MIDI Yoke and crappy MS Wavetable synth stays active.

The solution I found via quick googling was downloading a small freeware tool from http://putzlowitsch.de/wp-content/uploads/2007/10/plw-vista-midi-mapper_0_92.zip
Just extract it to \windows\system32 and after a reboot you will find it in your control panel under "Putzlowitschs Vista MIDIMapper" (funny name, I know Smile).

The tool is in german, but it's easy enough to understand (it's just one little screen) - under "Standardgeräte" just choose "Out to MIDI Yoke: 1", press OK, and you're done. This actually replaces step 2 of the guide for Windows XP!

Maybe something similiar exists in English too, but since this works for me, I didn't bother to try something else.

So, thanks again for your great guide, and everyone using vista, try it Smile, it works with a little bit of tweaking Wink

cu
chrisis


Last edited by chrisis on Fri Sep 26, 2008 2:24 pm; edited 1 time in total

 Reply with quote  
Post Fri Sep 26, 2008 11:59 am 
 View user's profile Send private message
chrisis



Joined: 30 Oct 2005
Posts: 132
Location: Innsbruck, Austria
 

quote:
Originally posted by fingolfin
P.S.: All in all, I do wonder how this compares to just using the built-in fluidsynth software synthesizer + sound font (assuming the Windows port *does* use fluidsynth).

no, it doesn't...
 Reply with quote  
Post Fri Sep 26, 2008 1:51 pm 
 View user's profile Send private message
MusicallyInspired



Joined: 02 Mar 2007
Posts: 908
Location: Winnipeg, MB Canada
 

So the already integrated SoundFont portion of ScummVM requires a SoundFont-compatible sound card? Does the SoundFont portion of ScummVM not play the SoundFont virtually within ScummVM? I thought that was the case. If not this guide is indeed handy.

 Reply with quote  
Post Fri Sep 26, 2008 2:01 pm 
 View user's profile Send private message Send e-mail Visit poster's website AIM Address
chrisis



Joined: 30 Oct 2005
Posts: 132
Location: Innsbruck, Austria
 

Afaik (please correct me, if I'm wrong), the built in soundfont menu only works in connection with fluidsynth, and again afaik the only build where fluidsynth is regularly compiled in is the Mac OS port (and maybe some unix/linux ports).

 Reply with quote  
Post Fri Sep 26, 2008 3:06 pm 
 View user's profile Send private message
eriktorbjorn
ScummVM Developer


Joined: 31 Oct 2005
Posts: 3217
 

quote:
Originally posted by chrisis
Afaik (please correct me, if I'm wrong), the built in soundfont menu only works in connection with fluidsynth, and again afaik the only build where fluidsynth is regularly compiled in is the Mac OS port (and maybe some unix/linux ports).


I think one of the OS X MIDI drivers uses the SoundFont setting. I don't know if FluidSynth works under OS X; I mostly had Linux in mind when I added that sound driver, because I figured native MIDI was least likely to be supported there. (Though it works fine with my sound card, so I almost never use FluidSynth myself.)
 Reply with quote  
Post Fri Sep 26, 2008 3:25 pm 
 View user's profile Send private message
raina



Joined: 12 Jan 2006
Posts: 224
Location: Oulu, Finland
 

Thanks for the positive feedback, especially:

Queseuq, great, that's what I wanted to hear!

fingolfin, for a while there I thought this would sink to the depths of the forum never to be found again. And about the formatting, I tried to keep track but I guess some edits weren't all that successful in that sense.

chrisis, nice investigative work there. Now, if we could find an English component to drop in there, I could include it as another crossroads in the guide.

quote:
Originally posted by chrisis
quote:
Originally posted by fingolfin
P.S.: All in all, I do wonder how this compares to just using the built-in fluidsynth software synthesizer + sound font (assuming the Windows port *does* use fluidsynth).

no, it doesn't...

And that's exactly the point of the guide. It would be covered in the Introduction section but as I predicted the guide itself would be relatively tedious to write, I cut to the chase and just added that subtitle there. I've seen several forum posts about the issue (how to make ScummVM games sound more like the mp3s downloadable from x) and I figured many users have the combo of a Windows OS and a sound card or chip which doesn't enable the use of SoundFonts. Since I had a solution around this, albeit a lengthy one, I thought what the hell, let's spread the love.
 Reply with quote  
Post Fri Sep 26, 2008 6:43 pm 
 View user's profile Send private message Visit poster's website
chrisis



Joined: 30 Oct 2005
Posts: 132
Location: Innsbruck, Austria
 

raina: I found the following tool, it's advertised to do the same as the one I downloaded, although I haven't tried it. http://www.vista-files.org/programs/joseph-cox/vista-midi-picker.html


But also, the German in "Putzlowitschs Vista-MIDIMapper" is not really that hard to understand, basically it's just there to choose the correct device, just look at the screenshot:


(and no, I have no connections to the author, I just found that tool myself today)
But to link to the article (in german!) just go to http://akkordwechsel.de/15-windows-vista-und-der-midi-mapper/

edit: changed screenshot to my own and uploaded to imageshack to save the author's bandwidth


Last edited by chrisis on Fri Sep 26, 2008 7:23 pm; edited 2 times in total

 Reply with quote  
Post Fri Sep 26, 2008 6:58 pm 
 View user's profile Send private message
raina



Joined: 12 Jan 2006
Posts: 224
Location: Oulu, Finland
 

Well, that looks simple enough indeed. Smile I guess I'll update the guide over the weekend.

 Reply with quote  
Post Fri Sep 26, 2008 7:02 pm 
 View user's profile Send private message Visit poster's website
clone2727
ScummVM Team Member


Joined: 09 Jun 2006
Posts: 1549
Location: NJ, USA
 

quote:
Originally posted by eriktorbjorn
I think one of the OS X MIDI drivers uses the SoundFont setting. I don't know if FluidSynth works under OS X; I mostly had Linux in mind when I added that sound driver, because I figured native MIDI was least likely to be supported there. (Though it works fine with my sound card, so I almost never use FluidSynth myself.)
AFAIK, FluidSynth on Mac OS X just uses CoreAudio.
 Reply with quote  
Post Fri Sep 26, 2008 7:33 pm 
 View user's profile Send private message
fingolfin
Retired


Joined: 21 Sep 2005
Posts: 1466
 

quote:
Originally posted by clone2727
quote:
Originally posted by eriktorbjorn
I think one of the OS X MIDI drivers uses the SoundFont setting. I don't know if FluidSynth works under OS X; I mostly had Linux in mind when I added that sound driver, because I figured native MIDI was least likely to be supported there. (Though it works fine with my sound card, so I almost never use FluidSynth myself.)
AFAIK, FluidSynth on Mac OS X just uses CoreAudio.


Of course it has to output the sound samples it generates somehow, which eventually means going through CoreAudio, no matter what sound API it does use (I never looked at fluidsynth, so I can't say how it works on OS X, but that's not very relevant, I guess Wink.

But just to get this clear: The soundfont setting in ScummVM was first introduce for Mac OS X (namely the "coreaudio" driver, which uses it) exclusively, and only later other midi drivers in ScummVM (i.e., the fluidsynth driver) added support for it, too. But those two are independent, and not to be confused: Selectign "coreaudio" + soundfont is not the same as "fluidsynth" + soundfont.
 Reply with quote  
Post Fri Sep 26, 2008 9:16 pm 
 View user's profile Send private message
  Display posts from previous:      
Reply to topic

Forum Jump:
 
Goto page 1, 2, 3, 4, 5, 6  Next


Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Powered by phpBB © 2001, 2006 phpBB Group
Forum design by ScummVM team, icons by raina
curved edge   curved edge