This month, we find out whether Hyperthreading is hyper-helpful to the musician and discover some new freeware. First, though, it's time to spring-clean that Windows Registry...
The December 2003 issue of SOS contained a feature of mine about installing a new PC motherboard, and since I wrote it I've discovered something else that may well be useful if you do this with your PC at some time. It's a way of cleaning up the Windows XP Registry (and those of Windows NT and 2000, for that matter) after the motherboard change-over, to remove references to hardware that no longer exists. Even if you're not considering a new motherboard, this same procedure will help you clean out references to hardware that's been unplugged, such as old soundcards, graphics cards, hard drives, monitors and so on, plus any installed USB devices that aren't currently plugged into any USB ports.
You won't normally spot these references in Device Manager, or even when performing the Safe Mode Cleanup that I described in PC Notes June 2000, and although your PC may be working well despite these invalid references, there's still a chance that at some stage you may try to install a new hardware item that has similar properties. The old driver files could then spring into action and cause problems. So, for the cleanest and most reliable PC, it's safest to remove them all. Here's how.
Tiny Tip: MIDI Latency Testing
I recently answered an SOS Forum query about MIDI timing irregularities, in which the poster's soundcard buffer setting indicated a latency of under 10ms, but after a few minutes the time lag seemed to increase, making his soft synths unplayable. I explained that since this latency was connected to the buffer size it shouldn't change over time, but came up with a simple way for him to test out his MIDI timing. It worked a treat, confirming an unworkable 100ms latency that seemed related to a fault in his soundcard's driver.
The test is really easy to try. First, connect a standard MIDI lead between the chosen MIDI In and Out that you want to test, then set up a MIDI track in your sequencer. Paste in regular short notes every second or so for as long as you want to run the test, and then play back this 'Send' track, along with the rest of a typical song, while recording the MIDI input onto another 'Receive' track.
When you get to the end of the song, stop and compare the Send and Receive MIDI tracks to see if there are any timing differences between them, to confirm what you're hearing. You'll probably find the notes in the Receive track slightly behind the Send one, but any suspected timing irregularities should show up as one or more Received notes visibly further behind.
This test essentially measures MIDI In and Out driver performance, exactly like the Miditest utility I mentioned in last month's column. Although you don't get the same easy-to-read figures that you get when using Miditest, you do get the advantage of measuring with the stresses of audio tracks and soft synths running in a real-world song — which, after all, is when most timing problems occur.
Clean Sweep
Normally, Device Manager only shows devices that are currently connected, even if you use its 'Show hidden devices' option. What we're going to do is to force the redundant devices to appear inside Device Manager, so we can delete them once and for all.
First, start the Windows Command Line Prompt, by selecting the Run option in the Start menu, entering 'cmd.exe' into the text dialogue and pressing return. This will launch a DOS window into which you type the following commands, pressing return at the end of each line (see screen, right):
set devmgr_show_nonpresent_devices=1
start devmgmt.msc
Device Manager will automatically appear after the second command, and now if you go into its View menu and select 'Show hidden devices' you should see quite a few greyed-out items referring to missing hardware. After a motherboard upgrade these will usually include the old processor type (in my case, a Pentium III that was replaced by a Pentium 4), as well as the motherboard chipset, IDE controllers, USB Host Controller, IEEE1394 host controller, network adaptor, and so on. You could well also have duplicate entries for your various hard drives, optical drives and display adaptors. It's probably just as well to uninstall any 'Unknown devices' too, as well as any greyed-out items titled 'Generic volume' in the Storage volumes section. The latter are likely to be due to partition changes after using utilities such as Partition Magic.
However, you should leave any devices in the section labelled 'Non-Plug and Play Drivers' and any Microsoft filters in the 'Sound, video, and game controllers' section. Windows also treats each USB port individually, so for a system with six ports you may see a valid attached device and up to five ghost devices (one for each of the ports), which you can also ignore. Don't delete any greyed-out USB device that you're still using but isn't currently plugged in; if you do, you'll need to re-install its drivers the next time you want to use it. Otherwise you can uninstall each item in turn that refers to a known piece of hardware that's no longer connected, and when you next reboot you'll have a cleaner machine.
PC Snippets
- Crakbone is a 2.5Mb Windows utility that turns text into music. You enter the text (typically a single word), and then Crakbone takes the ASCII values for each letter and converts them into a tune played by a small ensemble of instruments. Simple but fun!
- Capable of somewhat more sophisticated results, Nicolas Fournel's freeware AudioPaint generates sound from pictures, turning each pixel from a JPEG, GIF or BMP file into frequency, amplitude and pan information. The canvas in effect becomes a frequency/time grid, while the colours determine stereo positioning, so AudioPaint is a sort of additive synth. Just the job for turning paintings, local maps or deep-space images into futuristic audio landscapes.
- Peersynth is the brainchild of Dr Joerg Stelkens (whose crusherX-Live! granular synth already has a healthy following) and is described as a "multi-user Internet synthesizer". Running under Windows 9X, ME, 2000 and XP, the 10Mb shareware stand-alone synth can generate extreme sounds with just a few mouse clicks or via a MIDI controller or sequencer, using either a DCO (Digitally Controlled Oscillator) or sampler, with its own database to store and sort WAV and MP3 files. Once you're online and running Peersynth, other Peer users can be seen and heard live via pop-up instruments, while your performance appears on their screens in the same way. The sounds from each Peersynth are generated locally, to minimise bandwidth requirements (300 samples are included in the download) and if another Peer is using a different sample this will be distributed in the background while the others carry on playing. You can also capture a combined live performance as a local MP3 file and distribute that to others during the session. Registration costs just 29 Euros; registered users can consult the Event Calendar to join future online sessions.
Hyperthreading Tests
Back in PC Notes August 2003 I explained the ins and outs of Intel's Hyperthreading technology, which lets Xeon and Pentium 4C processors appear to Windows XP Home and Professional or Linux 2.4x as two 'virtual' processors instead of one physical one. They each share the various internal 'sub-units', including the all-important floating-point unit, but can run two separate processing 'threads' simultaneously. I've had HT disabled on my own Pentium 4C 2.8GHz machine until now, partly because I still run Windows 98SE partitions alongside my XP ones. Since 98SE doesn't recognise HT technology it may cause problems to leave it enabled in the BIOS. In addition, as I reported in PC Notes January 2004, GigaStudio 2.53, which I use, won't run with HT enabled either.
I recently had a Dual Xeon PC from Red Submarine to review for SOS. Since this has true multiple processors, I was interested to see how the virtual processors of an HT-enabled machine compared to it. I used my own Pentium 4C 2.8GHz PC, with Hyperthreading enabled, as the test bench and began my tests by running Waves plug-ins, inside Wavelab 4.01a, on this PC. The plug-ins included the Renaissance and Trueverb reverbs, C1 compressor/gate, C4 multiband parametric processor, and Renaissance EQ running six bands. For each one I made measurements with and without Hyperthreading enabled, and apart from experimental error the results were identical.
This confirmed what I had expected. Hyperthreading makes no difference to single apps that are not aware of it, nor those that run a single stereo audio stream rather than multiple audio tracks, each with their own complement of plug-ins or soft synths. (In the latter case multi-processing is more likely to be of benefit). However, you may well notice performance improvements when running several such applications simultaneously.
Next, I ran Steinberg's 'Five Towers' Performance Test, the 'Five Towers' version 2.0 test, which has higher CPU overheads, and Steinberg's Cubase SX 2.0.1 'Heaven And Hell' demo. This provided more interesting results, because SX 2 relies on running multiple 'threads' and has been optimised for HT.
I measured all three songs in 'Stop' (only plug-ins running) and 'Play' (with soft synths as well), at both 23ms latency and 3ms latency, to isolate the effects of interrupt overheads. To explain this a little further, as you drop latency below 23ms CPU overhead rises, simply due to the massive number of interrupts per second. Within the bounds of experimental error, most results for each of the three songs were almost identical, except for the 3ms 'Play' values, which showed a significant improvement of between 10 and 12 percent.
Although these figures aren't as high as some I've seen, they're still not to be sneezed at and they demonstrate that Hyperthreading works best with Cubase SX 2 just where musicians already need a helping hand — running soft synths with low latency.
Cakewalk's Sonar 3.1 also has a new multi-threaded engine that works with Hyperthreading as well as true multi-processor PCs. Cakewalk's Ron Kuper has recently published a 'White Paper' on its performance, and while it provides significant improvements with a true dual-processor PC (see my review of Red Sub's Dual Xeon PC for more details), it doesn't do so well with Hyperthreading.
Cakewalk themselves measured a six to seven percent improvement on a Pentium 4 3.2GHz HT system when they switched on the new engine, and I measured a similar four to five percent improvement on my own P4 2.8GHz machine. However, after disabling Hyperthreading altogether in the BIOS and measuring Sonar 3.1 overhead again, the results were less than two percent better than those with HT on and Sonar 's new engine enabled. So overall Sonar 3.1 doesn't seem to noticeably benefit from HT being enabled.
Unfortunately, there are further stings in the tail. Despite HT having been available since 2002, there are still audio applications that disagree with it, and if you're currently running one of these you won't be able to activate HT in your BIOS until an update appears. As previously mentioned, for me the most serious is GigaStudio, but this should be solved when version 3.0 is released in June.
More seriously, Digidesign state specifically on their web site that HT must be disabled if you're running any of their hardware under Windows XP. I've come across other users who have problems with NI's Kontakt, and Cakewalk have recently posted a warning on their web site that some Pace-protected software can cause a crash or complete lock-up with HT enabled. Antares plugins are specifically mentioned. Waves plug-ins are apparently happy with HT, which fits in with my own experience.