Friday, January 1, 2010

Record 1.0 bug workaround

One of the bugs I reported during Record Beta testing, relates to a Master Section missing "In" target, when trying to redirect MIDI channel data to a specific device.

Why would I care about this tiny little forgotten thing?

Well, since I'm using an M-Audio Axiom 61, and don't find the fader section useful for Synth parameter tweaking (non motorized faders cause weird and sudden parameter value jumps and I find that distracting) I made my custom M-Audio Axiom Remote codec SysEx block (the bunch of data that gets sent to the recognized controller to set it up properly each time we start Record or Reason) have that fader section send its MIDI data to MIDI Channel 16.

This would allow me to "Channel Lock" the faders to the Master Section in Record, so I could easily control the Record's Main Mixer with those faders.

** A little explanation here: When I wrote this, I wasn't aware that the Advance MIDI Device bypasses Remote, so any MIDI sent to devices this way, is sent "raw" and isn't processed by the Remote layer, meaning, devices will only respond to Reason's "raw" MIDI Implementation (please check the "MIDI Implementation Chart.pdf" included in Reason's Documentation) and not to any Remote Map related to the controller in that port. Also, but this I knew already, this bypass includes the sequencer, so it's impossible to record anything sent this way to a device. This make sense, really, because it's like connecting a MIDI cable to your hardware synth, in this case, we're directly connecting the rack device to an external MIDI source.
Since the rest of this post still provides useful information for other uses, I'm not editing anything. So... carry on and thank you for your time :) **

Well... this little bug spoiled my initial plans, unfortunately (so I had to devise a more complex solution... erm... keep reading, please :P)

So, let me show you what I'm talking about with some nice fancy pics ^^

See how we can redirect MIDI Channel 1 data to a Mix Channel ?
This allows us to control its respective Main Mixer strip. The volume fader, and all those cool strip knobs :)

...or to a Combinator, besides being able to select one of the enclosed devices, of course.

Well, the Record 1.0 bug I'm talking about makes it impossible to use a specific MIDI Channel to control the Master Section:

See ? No "In" target for the Master Section :(

This would allow us to use a specific MIDI Channel to control all the existing Mixer strips at once. The default usually works in groups of 8 strips, because there's a Remote function to jump the control target to the next/previous 8 mixer strips. A very nice touch of the product specs designer(s).

As I said, I just had to find a workaround to this, and I did.

Since Record and Reason allows us to lock controllers to devices, I just had to make those Axiom faders look like a separate (virtual) controller. That's to say that, I had to make my Axiom look like 2 controllers instead of 1.

So "Axiom Standard" would present itself to Record like an Axiom minus the Faders type of controller and "Axiom Faders" would present itself like a 9xFaders controller, and this would finally allow me to lock that virtual "Axiom Faders" controller to the Main Section device :)

(btw, I did the same with the pads, creating an "Axiom Pads" virtual device, but... that's another long story, unfortunately, since there's no multi MIDI recording in either Record nor Reason, I wasn't able to record with those as an extra locked keyboard device).

How did I split my physical Axiom controller into 2 (or 3 with the pads) virtual controllers?

Using MIDI-OX filtered routing :]

This may look a bit confusing but it's very easy to explain.

As you can see, "USB Audio Device" (that's the Axiom) is sending a copy of the MIDI stream to "MIDI Yoke: 3" filtering out any Channel 16 data (becoming the virtual "Axiom Standard" without the Faders). See the filtering settings here:
(Double-clicking those grey squares get you this filtering pop-up.
The blue-dotted ones have filters set.)

Another copy of the same "USB Audio Device" MIDI stream is sent to "MIDI Yoke: 6" with all Channels but 16 filtered, becoming the virtual "Axiom Faders" controller:

With all this set, I just had to simply go to Record's Edit, Preferences, Keyboards and Control Surfaces and add an extra "faders" control surface receiving data from "MIDI Yoke: 6", not forgetting to set my usual Axiom codec to now receive data from "MIDI Yoke: 3"

...and that's it :)

Now, I can lock that "Axiom Faders" device to the Master Section (save that empty .record file as a Template) and take advantage of something I added to my custom codec: being able to use standard Bank MSB to make those next/previous base track jumps :)

I delayed this post as much as I could, waiting for a Record update that still hasn't come, unfortunately. One can only hope that Record 1.x comes soon and fixes this and other still existing bugs. Hopefully it'll also take care of some tiny annoying missing features, because Record and Record users deserve it!