Windows XP Music

I'm not talking about the mere playback of MP3 files or anything else so mundane. I'm talking about making music under Windows XP. Given the current state of musical technology, that's a pretty sophisticated topic. I'm only now getting back into music composition and production after quite a hiatus, and I'm learning more about current hardware/software as I go. The lessons I've learned are included herein for those who are interested.

Hardware

Mark of the Unicorn 828 mkII
Presonus Firestation

Software

Cubase
General Driver Issues


Mark of the Unicorn 828 mkII

In the plus column, you've got an amazingly functional unit for the price. In the minus column, you've got absolutely terrible drivers and a company whose idea of good technical support rests on three pillars: (1) blaming problems on anything but MotU hardware/software, (2) being a complete jackass to the customer, and (3) ignoring the customer altogether if he simply won't go away. For more details, feel free to read of my own experience with the MotU 828 mkII. You may also want to read why I switched to a Presonus Firestation.

Assuming that you're sticking with the MotU unit, however, there are a few problems you may face, first among which is that of audio distortion. The distortion tends to manifest itself in different ways, but the result is ultimately some awful sort of digital crackling or buzzing. If your problem is relatively intermittent (i.e., you're hearing occasional clicks, pops, and other such artifacts), then there is really very little you can do.

You might find that closing down any software you have running in the background will help. You might also find that using a utility like PowerStrip to adjust your PCI Latency—I've written a separate essay on PCI Latency—for your firewire interface might help. But at the end of the day, the occasional, intermittent distortion or artifacts are going to be pretty hard to counter. The key is to try to give your 828 the best firewire interface possible with as little drag on the CPU in the background. Incidentally, MotU technical support suggests that the Keyspan Firewire card will give the best possible results, but I saw the same problems with that card as I did with three other firewire interfaces.

On the other hand, if the distortion you're seeing is a constant crackling or buzzing in the audio, then you might try something that reliably worked around that problem for me. That is, if I simply fiddled around with the sample rate a few times, I could always make the distortion go away. The best combination of settings seemed to be to toggle between the 48 KHz. and 96 KHz. sampling rates a few times relatively quickly. Once I got the audio cleaned up at 48 KHz., I could then reliably switch to 96 KHz. and it would be similarly distortion-free. The distortion could be caused quite reliably simply by switching directly from 44.1 KHz. to 96 KHz. or from 48 KHz. to 88.2 KHz., but MotU wasn't interested in hearing about that.

Unfortunately, switching the sample rate back and forth might be difficult if you're also suffering from the CPU-utilization problem (as I naturally was, given my luck). You'll know you have this problem if your computer becomes almost completely unresponsive every time you open the MotU FW Audio Console or change the 828's settings using any other means. You can confirm this by pressing Ctrl+Alt+Delete or right clicking on the task bar to open the Task Manager; if you have the problem, its performance tab will show you that your CPU is pegged at 100% utilization. These episodes can last from as little as twelve seconds to eighty-six seconds (or longer), depending upon which changes you make and which application or utility you're using.

MotU technical support claims that this is not the fault of the 828 or its drivers; they claim that it is due to Windows XP flushing its audio drivers. You will find that the problem doesn't occur, however, with any other ASIO driver. It also doesn't happen with other devices (e.g., the Presonus Firestation). It happens only when using the MotU 828 mkII with the MotU ASIO firewire driver. But hey, it's probably just Windows XP anyway, right? If you get the feeling I'm disgusted with MotU technical support, you're on the right track.

At any rate, there is only one option that I found to help you through this problem, and that is to make sure that the "Enable full Wave support for legacy (MME) software. (Less efficient)" box is not checked in the MotU FW Audio Console. If that box is checked, then the wave driver will also need to be initialized whenever you change device settings, which really slows down the process quite a bit. When using Steinberg's Cubase SX to change sample rates, for example, I found that my CPU usage remained pegged at 100% for no less than eighty-six seconds with the box checked, but a "mere" twelve to twenty seconds without. That's still not very good, of course, but it's far more usable.


Presonus Firestation

The Presonus Firestation is a very powerful device with very good audio quality. It is also a cast-iron bitch to figure out how to use and setup correctly without the proper assistance. Seriously, whereas most other firewire-based audio I/O interfaces can simply be plugged in and used, this baby requires that you go through a fairly complicated setup procedure. This process can presumably be made easier if you read the Windows XP thorough setup guide that Presonus provides. Since I didn't notice that guide on their web site, for whatever reason, I'm going to list the steps I went through with the help of Butch in their technical support department. Hopefully, others will find them similarly useful.

  1. First, you need to make sure you get the drivers installed properly. Do not connect the Firestation to your computer before you install the drivers. Otherwise, you'll have to uninstall whatever Windows XP does and start over from scratch. To install the drivers, either insert the CD that came with the unit, or download the current drivers from the Presonus web site and run the setup program.
  2. During the driver installation, be sure to tell Windows XP to continue anyway each time it warns you that the drivers are unsigned. All that means is that the drivers you're installing don't have Microsoft's official blessing. Given Microsoft's own track record in terms of quality, that's not exactly a blessing that should make one comfortable anyway.
  3. After the drivers are copied, you'll start getting all sorts of Windows-has-detected-new-hardware messages, accompanied by dialog boxes asking you to assist in installing the proper driver. In each case, simply tell Windows XP to install the driver automatically. That was the whole point, mind you, of all that driver copying you just did. Hey, it couldn't be Windows if it weren't annoying.
  4. Eventually, this whole new-hardware process will come to a conclusion. The thorough installation guide, along with the single sheet of very cryptic instructions that ships with the Firestation, says that at some point you'll have the opportunity to launch the mLAN patch bay application to configure the device. You may or may not actually get this option. If you do, then you can skip down to that step and try configuring the mLAN patch bay correctly. Otherwise, keep reading in sequence.
  5. If you're like me, you weren't asked about launching the mLAN patch bay. In my case, I think this was because I didn't have the unit plugged in yet. I didn't want to plug it in at all until after the drivers were installed. When the driver installation comes to the final screen, simply tell it to finish and then power down your computer.
  6. With the computer now off, connect the Firestation to your computer's firewire interface and turn the Firestation on. Once the Firestation is powered up, I suggest you turn down all the volume knobs completely (if they're not already). Whereas that step is optional, you must press the "EXT" clock button (near the far right end of the front panel) until the "mLAN" light below is green. Don't worry that it's flashing; that indicates that the Firestation hasn't synced up to any external clock, and that's exactly what it should do when the computer is off.
  7. Turn on the computer and log on to Windows XP. Don't be surprised if you get still more Windows-has-detected-new-hardware messages. Deal with them exactly as you did before. Eventually they will stop, and you'll be told that your new hardware is ready for use. If you're pretty confident that you have only one firewire interface in your computer, and that you've never had any mLAN gear previously installed, then you can skip the next few steps and go directly to configuring the mLAN patch bay. If you're not sure, however, then you need to check whether you have more than one firewire interface in this computer. In the event that you do, either the driver installation routine or Windows XP itself is too stupid not to install the Firestation on only one of your firewire interfaces. Whatever the problem, you've got some manual debugging to do.
  8. The next step is to open device manager (I find the simplest way is to right-click "My Computer" in the start menu, select "Properties" from the resulting menu, go to the "Hardware" tab, and then click the button labeled "Device Manager") and take a look at what it shows you. If you see a new "61883 Device Class" entry with a "61883 Class Bus Device" (complete with a bright yellow exclamation point) listed beneath it, Don't Panic! This is perfectly normal. I'm told by Presonus technical support that this is exactly what you should see. The yellow exclamation point means Windows XP thinks it needs a driver, but I'm told that it doesn't really need it because the mLAN software will take care of the data streaming. Don't ask me why. NB: I only get that entry in device manager if the Firestation is turned on when the computer is booting; if I turn the Firestation on after Windows XP has already started, the entry is never there.
  9. Before doing anything else, we need to check to see if you have more than one firewire interface. Look under the section named "IEEE 1394 Bus host controllers". If you have but one, then go to the next step. If you have more than one, however, then we need to get rid of mLAN on any firewire interfaces to which the Firestation is not connected. To do this, I suggest you use the "View" menu and select the "Devices by connection" option. You'll see that the mLAN bus is listed on all firewire interfaces, but you'll only find one firewire interface with the Firestation (i.e., the "61883 Class Bus Device") attached. One by one, you want to disable the mLAN bus on every one of those firewire interfaces that doesn't have the Firestation attached; once the mLAN bus is disabled on all such interfaces, uninstall those firewire interfaces completely. Just be sure to leave the one firewire interface to which the Firestation is connected. Don't worry, you're not screwing anything up. Windows XP will detect and install the firewire device during your next reboot, but it won't include the mLAN stuff when it does.
  10. Alternately, if you don't have more than one firewire device, then you need to uninstall and reinstall the mLAN stuff completely. Here I suggest you follow the instructions in the thorough guide. In short, the procedure includes (1) uninstalling the software using the provided link, (2) uninstalling using the "Add/Remove Programs" option in the control panel if needed, and (3) deleting all mLAN-related files from your hard drive(s). That's why I recommend following the thorough instructions, for they give the names of some files you definitely shouldn't delete. Be careful, but be thorough.
  11. Once you've taken care of the whole mLAN problem, go ahead and restart your computer. For those who are wondering why Presonus would make this so darned difficult, the multiple-interface problem is apparently Yamaha's fault. Presonus licensed Yamaha's mLAN technology for the Firestation, but Yamaha never worked out the kinks with having more than one mLAN bus at a time. Worse, instead of working out the kinks, Yamaha decided to move on to a new version of mLAN, namely, mLAN-B. Presonus is working to come up with a way to update the Firestations in the field with mLAN-B, but at the time of this writing (09/11/2003), there isn't any good solution. The Firestation might just be stuck forever with mLAN-A. Only time will tell.
  12. Once the computer has restarted, log on to Windows XP. Don't worry if your "mLAN" light is still flashing. It should be. We're finally in a position to do something about that, however, so go ahead and launch the mLAN control panel. Once it's available, check to make sure that one and only one item is listed in the "1394 Adapter Card" combobox at the top of the dialog. If more than one is listed, that means the previous steps to get mLAN connected to one and only one of your firewire interfaces failed. Go back a few steps and keep fiddling around until you have one and only one item listed here.
  13. Notice how there is a lit, green light to the right of the "Isochronus Ch." setting in the "Send" options, whereas there is a dark, green light over in the "Receive" options. That's why your Firestation still has a flashing "mLAN" light; i.e., it hasn't synced up with the computer yet. Check to make sure that the "Isochronus Ch.", "Audio Sequences", and "MIDI Sequences" settings have values of 0, 8, and 1 respectively on the "Send" side and 16, 8, and 1 on the "Receive" side. Also make sure that "WDM Sequences" is set to 0. You can always change that later, if you need to use the Windows Driver Model (WDM) interface with older software, but, trust me, you really want to avoid that if at all possible (See my discussion of general driver issues for details). Remember going forward that the mLAN control panel is where you can later tweak your buffer settings for better latency; for now, leave the defaults in place.
  14. Once you've seen that everything looks good in the mLAN control panel, go ahead and start up the mLAN patch bay. This is where things get a little funky. mLAN is a neat way to allow lots of mLAN-capable devices to interact with each other. Each device essentially makes itself available to the mLAN network as a whole, and it remains a task for the user to decide how they should all be connected. Routing one device to another is simply a matter of changing software settings. That's the conceptual scoop on mLAN. When it works, it's bloody wonderful. When I first got into synthesizers, we were still using control voltages (CV) to sync things up. Then came MIDI, and that was a step in the right direction. mLAN looks like a wonderful step forward from CV and MIDI. So much for the theory.
  15. Practically, there are three routing tasks you must now perform. When the mLAN patch bay launches initially, you'll find yourself on the "Audio" page. On the left, you should see eight entries for outputs 1 - 8 for YAMAHA mLAN WinDrvr (nickname "WinDriver") and eight entries for outputs 1 - 8 for mLAN-FIRESTAT (nickname "1318" in my case, though the number will most likely be different in yours). Select any one of the "WinDriver" outputs on the left, and then hold down the Ctrl and Shift keys while you right click any of the "1318" inputs on the right half of the screen. In the resulting menu, select the "WinDriver" option and left click any one of the outputs while still holding down Ctrl+Shift. The result will be that you'll connect all eight of the "WinDriver" outputs to the "1318" inputs. Then repeat the same sort of procedure to connect the "1318" outputs to the "WinDriver" inputs. Click here to see how the patch bay "Audio" page should look.
  16. Once you've got the "Audio" page configured properly, go to the "MIDI" page. The procedure here is essentially the same. You again want to connect the "WinDriver" outputs to the "1318" inputs and vice versa. Click here to see how the patch bay "MIDI" page should look. Poke around a bit if needed; you'll get it.
  17. Finally, go to the "WCLK" page. This is where we depart slightly from the previous procedure. On this page, we want to start on the right side of the screen. Right click the "slave" device (i.e., the "1318" device), choose the "Manual" menu option, then "YAMAHA/Module", then "mLAN WinDrvr", and finally "WinDriver". This should configure the final connection to the Firestation, making it a slave to the mLAN software clock on your computer. Click here to see how the patch bay "WCLK" page should look. NB: the current sample clock rate, which may be set using the mLAN control panel, is displayed here.
  18. Take heart; we're almost done. Any time you make changes to the mLAN patch bay, you have to apply them in order to configure the mLAN software layer. To do this, click the "Apply" button near the top of the window and wait for it to finish initializing stuff. Once it's finished, the "mLAN" light on your Firestation unit should be solid. That indicates that you've got a solid sync between the computer and the unit. To double check, open the mLAN control panel and make sure that both the green lights on the send and receive sections are lit. If both of those software lights along with the hardware light on the Firestation front panel are lit, you're good to go.
  19. Before you exit the mLAN patch bay, you should do one more thing to save yourself a lot of hassle. Take a moment and save the file you've just created. That way, should you need to re-initialize everything, you can simply load the file from disk and apply it when needed. Once you've saved the file, exit the mLAN patch bay application.

At this point, you should be good to go. You should now be all set to fire up whatever ASIO-capable software you have and use the Firestation. If not, I suggest you give Presonus technical support a call. They provide wonderful support in my experience, and they'll probably be able to get your system configured properly in pretty short order.

The one remaining problem I want to discuss is audio distortion. In my case, once I finished the above procedure I launched Cubase SX v1.06, which promptly screwed things up somehow. I say "somehow" because I'm not sure what it did. What I know for sure is that the audio I was getting doesn't even deserve to be called "audio". It certainly wasn't any kind of musical sound; it was more like the clippity-clop that horses always make in movies. When I looked at the front panel of my Firestation, I found that the "mLAN" light was again flashing, though in a far less regular fashion. The solution for this, and any other loss-of-sync or distortion problem I've seen to date, is to take the following steps:

  1. Open the mLAN control panel. Change the sample rate and set those changes to the device. Once the changes are accepted, close the mLAN control panel.
  2. Open the mLAN patch bay. Load the file you saved previously—you did save the file like I suggested, right?—and apply it. Once the patch bay is reconfigured, close the mLAN patch bay.
  3. At this point, the "mLAN" light on the Firestation should again be solid. If not, repeat (1) - (2) a couple of times.
  4. Once the "mLAN" light on the Firestation is again solid, open the mLAN control panel one last time and confirm that (i) both software lights are green, and that (ii) the proper sample rate and such are displayed.

You should now be able to go back to whatever application was causing you trouble and use it just fine. I don't know what the problems are, but I know that fussing about with the sample rate seems to fix them. Maybe Presonus will update their drivers at some point. We'll see.


Cubase

Cubase has a number of


General Driver Issues

Something you need to understand about contemporary musical hardware/software is that it (sadly) largely remains an anathema to Windows. To explain why, I have to give a little history. When Windows was designed, it was designed for PCs. This wasn't such a bad thing. Unfortunately, it was designed not as an operating system (OS) but as a graphical shell to run on top of DOS. This was a bad thing, if for no reason other than that DOS sucked. If you think DOS was a real OS, then you might as well think Velveeta is real cheese.

Worse, as Windows "matured" it was taken in the direction of being an OS by people who clearly had no clue how to design or build an OS. This is why the whole "New Technology" (i.e., Windows NT) project was necessary; i.e., Windows was such a hunk of junk internally that it made better sense to start over and build a real OS, rather than keep working with the garbage heap of code that was Windows. Lest you think I'm being overly harsh, use some flavor of Unix for a while. Yes, most are not as graphically pretty or easy to use, but all variants of Unix since the 1970s have been technically superior to all Microsoft OSes until Windows NT—and some remain superior to Windows XP today in several respects.

The WDM Specification

Once Windows NT was becoming usable, Microsoft started trying to do The Right Thing™. That is, they started trying to merge the two code bases so that a hybrid product might be born, a product that would enjoy both the broad compatibility of Win9x/WinME with the power and stability of WinNT/2k. Eventually they succeeded, and Windows XP was born. Windows XP is the first real OS Microsoft has made, in my view, insofar as it's the first OS that actually works with most hardware/software while simultaneously being relatively solid internally.

Unfortunately, along the way Microsoft made some mistakes, one of which was their thrusting the Windows Driver Model (WDM) upon the world. Anyone who ran WinME knows exactly how good an idea that was. On paper it looked pretty good—to Microsoft at least. The idea was that Microsoft would publish a WDM specification, which would allow developers to write a single driver that would work on all future versions of Windows. What actually happened was that the change in specifications resulted in three things:

  1. Drivers are frequently no longer supplied at all for old Microsoft OSes (e.g., Win9x).
  2. Drivers that used to work just fine under those old OSes had to be rewritten completely in accordance with the WDM.
  3. Developers had to un-learn what used to work while adapting to a very different model.

Personally, I find (1) terribly irritating. I can't use my Creative Labs Audigy 2 Platinum sound card with Win95 or Win98, for example. I have to run at least Windows 98 Second Edition (Win98SE) or WinME if I want the drivers to work. This wouldn't be such a bad thing, were it not for the fact that Win98SE and WinME are both far less stable than the original Win98. Worse, as anyone who actually used WinME knows, (2) and (3) resulted in horribly buggy drivers, which made the already unstable WinME positively awful.

Awful Latency

So what does this have to do with music, dear reader? I'll tell you. When crafting the WDM specification, Microsoft did its typical half-assed job and completely neglected to do anything about latency. This has always been an area wherein Windows shows just how poorly it was designed from day one. At one point in the 1990s, I used to write software under Unix and various other OSes to do data acquisition. When I used Unix, DOS, etc., I could write interrupt handlers with guaranteed latencies as low as six microseconds on some hardware. What that meant was that a maximum of six millionths of a second (at most) would pass between the time something happened and my interrupt handlers could do something about it.

In the early days of 16-bit Windows, you were lucky if you could guarantee latencies of 200+ milliseconds. In other words, latencies were worse by a factor of roughly 10,000 compared to Unix, DOS, etc. This is one reason many scientific and technical firms didn't embrace Windows at all in the early days. In a typical demonstration of chutzpah, Microsoft made a big deal out of it when they first introduced "Multimedia Timers" into Windows 95. Those guaranteed software developers a maximum latency of one millisecond. Gee, that's only a minimum of fifty times slower than what other OSes had been providing for over two decades. Bravo, Microsoft.

To cut to the chase, latencies in Windows still suck even today. The WDM model was never designed to handle the kind of latencies that musicians (and others) need. People are pretty perceptive of such things; if it takes more than a few milliseconds from the time they press a key on a keyboard to the time they hear a sound, it's greatly disconcerting. Worse, it makes trying to record multiple tracks of MIDI or audio data a ridiculous exercise in frustration.

Enter ASIO

Thus, the Audio Stream Input/Output (ASIO) driver model was born. Because Microsoft had demonstrated for over a decade that they pretty much couldn't code their way out of a wet paper sack, Steinberg came up with a driver specification that would work for musicians. Fortunately, for the music-making community, that specification caught on in a big way. ASIO drivers are designed from the outset to provide low-latency processing for audio hardware and software. Thus, it is very important that you make sure any device you're considering has ASIO drivers before you purchase it, and you should always use ASIO and only ASIO drivers whenever possible. Trust me, you'll end up wanting to bang your head against the wall should you ever find yourself relying on WDM drivers. Going from ASIO to WDM is like trading in a Ferrari for a skateboard.

Unfortunately, there is a tradeoff to be made. The best (i.e., lowest) latencies are obtained through ASIO at the cost of increasing the load on the system CPU. This can be ameliorated by using larger memory buffers, but larger buffers bring more latency into the picture. In short, as the user minimizes buffer sizes to diminish latency, he increases the load on the CPU. That's just the way it is. Whatever drivers you're using, I suggest you start with the default values. If they give acceptable latency, then you're all set. If not, try diminishing the buffer size gradually. The point of this exercise is to find a buffer size that (1) gives acceptable latency, while (2) not resulting in any digital distortion or other artifacts (e.g., clicks and pops) because the CPU can't keep up.

In the event that you can't find a good balance, you might think about upgrading your system or trying different hardware. These days, you should really have a CPU running at 1.4 GHz. or better to do music. If your system is short on memory that too can pose a problem, for frequent hard drive accesses really slow things down. With decent hardware, enough memory, etc., it should be possible to strike a good balance. Don't be afraid to try different values, and don't be afraid to pester technical support either. In my experience, they're almost never helpful, but every now and then you might find a vendor that does a good job.