Wednesday, January 31, 2007

Project5 v2.5 Multiple I/O Support

Written by Mike Boncaldo, Cakewalk Engineer

One of the big new improvements in Project5 Version 2.5 is the ability to simultaneously use all Input and Output channels on an audio device. As you can imagine, going from supporting one Input and one Output to many of each involved changes on a fairly major scale, especially to the audio engine <==> driver interface.

Another challenging area was project persistence - what to do when loading and saving project files in a context where the numbers of available audio I/O channels can vary. Our testing in this area presented us with quite a few situations that we hadn't considered; we'll be relying on the group's testing to find many many more... :)

Following is a brief overview of what "Multiple I/O Support" really means in Project5.

P5 audio I/O is based on the concept of one "selected" or "active" audio device.-Choose which is the active device from "Options -- Audio"-P5 supports simultaneous access to all the Input and Output channels on the selected audio device-Channels are grouped by Project5 into stereo pairs, refered to as "hardware outputs"

-When creating a new project, Project5 creates as many Master buses as there are hardware outputs on the active device-Master buses can be sent to any (or no) hardware output, but only one Master can be routed to one output pair at any one time. That is, there is no mixer at the hardware output stage (unlike SONAR).-Saving a project will save all the master buses, including their settings, effect chains, and which output to route to-Loading a project restores the Masters and all settings, including Master to output routing.

-Audio Input sources can be selected on a track-by-track basis. When a track is created, the Input selection is initially set to None.-Input selection is done via a popup menu in the track inspector.-All audio inputs on the active device should be available for use, as well as having the traditional Project5 option of Left, Right, or Stereo on each.-Input sources are persisted in a manner similar to Outputs (see below): if opened on a system with differing audio hardware, it will assign available Inputs to tracks in order.

But what happens if the number of hardware outputs changes between Saving a project and Loading it? (For example, if you create a project on one system, and then open it on a different system that happens to have a different number of hardware outs.)

i) FEWER Hardware OutsWhen opened on system with fewer hardware outs than Master buses:-The available output pairs are enumerated, and Master buses will be routed to the hardware outputs in the project as far as possible.-The remaining Masters' output routing will be set to "None"

ii) MORE Hardware OutsWhen opened on system with more hardware outs than Master buses:-The master bus to output routing will be maintained. That is if a Master was routed to "Ouput 1" (the first output in the list) on the old system, it will be routed to the first output on the new system also.-New buses will be created, one per "extra" hardware out until each available hardware output has a Master to feed it.

iii) LEGACY PROJECTSWhen opening projects created by P5 v2.0.1 and previous:-All P5 project (.p5p) and template (.p5t) files prior to version 2.5 had one Master bus.-If the active device has one hardware output, the project will open exactly as it was, with the one Master routed to the one output-If the active device has more than one output, then it is handled by case (ii) above: The original Master will be routed to the first hardware out, and additional Master buses will be created and routed to each of the remaining hardware outs.

Monday, January 08, 2007

All I’m Asking For…

A lot of people had been asking for audio editing capabilities in Project5. With the addition of all the new multi i/o features, it seemed apparent that people would need some way to modify all the audio they’d be able to record. After all, nobody’s perfect. A whole new audio editor is quite an undertaking, so it seemed more efficient and flexible to allow users to use the audio editor of their choice (à la SONAR). This would also save time, as a lot of the basic code to this already exists, and more time saved equals more time to spend on other features. Wasn’t it Stravinsky who said “A good composer does not imitate, he steals”?

If only it were that easy

So steal I did. But SONAR allows a lot of different types of tools, and the internal structure is quite different so some things needed to change to work in Project5. One addition we’ve added to Project5 which fits the general paradigm is the ability to select two default editors. It’s probably not very likely someone has 5 audio editing programs installed and wants to be able to use all 5 on a frequent basis, so we permit users to select 2 default audio editors. You select the two default editors in a dialog box below. Both of these can be launched by clicking on a dropdown in the pattern editor view. But maybe two clicks is a lot of work, so the primary audio editor can be opened by clicking on a button in the same view. You can also see the button in the screen shot below:

I should note that I’m no artist and the above artwork for the button is temporary (in fact it doesn’t even match the other buttons right now).

Three’s company

So after getting all the guts hooked up, all I had left to do was to make sure it actually worked. There are a plethora of audio editors available, so I picked a few. We’ve tried it with Adobe Audition 2.0, Sound Forge, and WaveLab. It should work with others as well, these are just the ones I had available when working on the feature. So soon enough you’ll be able sit down with yourself, Project5, and the audio editor of your choice, and…well,…edit audio.