Posted: 07-19-11 12:50 pm
As many users know, one of the troublesome things with Synthesia on Windows is the software MIDI latency. I get really high latency when I use MS GS Wavetable Synth, no matter if I use the software keyboard or my hardware keyboard (a Behringer UMX49, but I recommend buying a UMX61 or UMX610 because of their less limiting size). When I was using XP, this wasn't as much of a pain in the butt, because I could reduce the latency, or lag, with an old Yamaha software midi synthesizer. I couldn't get the softsynth to work with Windows 7, so I was stuck with high latency, experimenting with the Timididy++ driver and getting marginal improvements.
I came up with this solution by chance. It's completely free and will require you to install two or three programs, but once you're done, you're left with a lot of freedom regarding sound - and hopefully near zero latency. My computer isn't excactly buff; it's an HP Compaq 6710b from 2007. It runs Windows 7, but I can't think of any reason why this won't be compatible with XP or Vista. In other words: This'll almost certainly work, with nearly no hassle.
Don't be scared by the lenght of the tutorial. I prefer explaining in detail to getting questions, and I guess you prefer reading one tutorial to skimming a forum thread.
THE PREMISE
We're going to make Synthesia send the MIDI signals to Nerds.de's LoopBe1. This program will send the signals on to a digital audio workstation of your choice, but I've chosen Image-Line's FL Studio Demo version in this case because it's free, simple and will work for an unlimited time. We will also install the latest version of ASIO4ALL, a low latency audio driver.
THE DOO-DOO GOES DOWN
I came up with this solution by chance. It's completely free and will require you to install two or three programs, but once you're done, you're left with a lot of freedom regarding sound - and hopefully near zero latency. My computer isn't excactly buff; it's an HP Compaq 6710b from 2007. It runs Windows 7, but I can't think of any reason why this won't be compatible with XP or Vista. In other words: This'll almost certainly work, with nearly no hassle.
Don't be scared by the lenght of the tutorial. I prefer explaining in detail to getting questions, and I guess you prefer reading one tutorial to skimming a forum thread.
THE PREMISE
We're going to make Synthesia send the MIDI signals to Nerds.de's LoopBe1. This program will send the signals on to a digital audio workstation of your choice, but I've chosen Image-Line's FL Studio Demo version in this case because it's free, simple and will work for an unlimited time. We will also install the latest version of ASIO4ALL, a low latency audio driver.
THE DOO-DOO GOES DOWN
- Download FL Studio. This demo version will last forever; the only limitation is not being able to save your projects. That won't get in our way. (The full version is cheap, user friendly, and once you purchase a licence, it lasts for the rest of your life.)
- Download LoopBe1.
- Download ASIO4ALL. This is bundled with FL Studio, but new versions are put out from time to time, so download if it's newer or if you want one in your own language.
- Install them all. As for FL Studio, there are plenty of instructions out there on how to go through that process - and it should be self-explanatory.
- LoopBe1 should be working out of the box.
- Open up FL Studio. You'll be treated with an introduction; I've never stayed for the entire performance.
- Make a new, blank project by clicking "File" > "New". Go to the step sequencer (there'll be an instrument labeled "Sampler" there).
- Right click the "Sampler" instrument, go to "Replace" and choose FL Keys, which is the piano instrument.
- The piano will appear as an instrument in the step sequencer, and the little green light to its right will be on. If the virtual keyboard pops up, you can try clicking the keys. The green light to left of the "Keys" label and its two knobs should also be active; this light tells you that the instrument isn't muted. The green light to the right tells you that the instrument is active, i.e. being visible and receiving all signals. If you're now getting sound, you could skip to step 11, but then you won't get maximum results.
- Here comes the part where we try to reduce the latency to its minimum. However, ASIO4ALL isn't compatible with a lot of sound cards; I have trouble getting it to work with certain computers. Without it, you may still achieve acceptable results with the primary sound driver. If the following steps don't work or give no result, just turn things back to the way they were, and continue with step 11.
- I have problems with ASIO when other programs on the PC output sound, so before you continue, turn off every program that might possibly output sound: Games, web browsers, music players - even the stuff in your system tray and that machine that goes "Ping".
- Click "Options" on the toolbar and click "Audio settings". Set the option for "Input/Output" to "ASIO4ALL v2".
- Try clicking the keys on the piano instrument in the main window. Does it produce good sound with low latency? If so, fine! Go on to step 11. If there's no sound or the sound's crummy, read on...
- You'll have to tinker with the ASIO settings to see if you can get things to work. Start by clicking the "Show ASIO control panel" below the setting you just used.
- This'll open up the control panel (as expected). If your sound is metallic and distorted, you should drag the "Buffer Size" slider to a the right. This'll give your computer more time from the signal is received until the audio comes out of the speaker. This'll increase latency a bit, but the effect is marginal - and tolerable. On the "Audio settings" screen, there'll be an "Underruns" counter right below the "Show ASIO panel" button; underruns are the pieces of information your soundcard haven't had time to process. The lower, the better.
- If you get no sound at all, press the wrench icon. This'll open the advanced controls. Press the "+"-button next to the audio device on the left (if it is detected - if it's not, just give up this part, turn things back and go to 11).
- The audio devices might be marked with green "play" icons. If so, go to the next step. If not, you might have some success with just clicking the power on/off-icon next to them and see if they turn green instead of red X-es or yellow Venus-emblems. If this doesn't work either: Are you completely certain that you have turned every other sound producing application off? This includes Synthesia itself, Spotify, iTunes, Wimp, IMs... Perhaps you'll even have to open the task manager and kill the processes completely. In the worst case, you can even try rebooting your computer. If you get two green lights, or at least a green light on the "Out"-device (the "In"-device is rarely the problem, and not necessary for now), you can continue.
- Press the piano keys to see if you're getting sound now; perhaps the tinkering worked? If this didn't work, it's time to go to use the last tricks: There are a few checkboxes on the right (when you've pressed the wrench-icon) which might give some results, and a slider. Try clicking these. I have the two bottom boxes checked and the "Buffer Offset" to 4 ms.
- If things don't work now, ASIO4ALL is probably not for you. There might be a specific driver for your sound card, but this is a bit rare. Don't lose hope, you can still use Synthesia with FL Studio. Just switch back to the "Primary Sound Driver" in the "Input/Output" setting on "Audio Settings" screen.
- If things did work, you can adjust the buffer size to get the best balance between underruns and latency, as described in step 10.5.
- Now we're going to set FL Studio to receive the signals from LoopBe1. Close the ASIO settings if you haven't already and click "Options" > "MIDI Settings", or just the MIDI panel in the left sidebar if you're in the audio settings.
- Under "Input", you'll see "LoopBe Internal MIDI". Left click it, and then click the "Enable"-button below the frame. It should turn yellow, and an "Active"-marker should appear to the right of the device. Done! (If you have a MIDI keyboard that you are supposed to use, now is the time to plug it in and turn it on. Click rescan in the bottom of the window, and if it appears, make sure it's not enabled, as this may clash with Synthesia getting signals from it). Close the settings window and the ASIO control panel .
- Click the Keys-instrument in the step sequencer window so that it's active. You can now open Synthesia.
- Click the Keyboard Settings, and choose LoopBe Internal MIDI as the output device. Test it, and if it gives sound output, you're done!