Friday, June 22, 2012

Rack Extensions: The Remote side of it...

Update: Maybe you should just skip all this and jump right into Part III since there's a link to ready made Remote Templates and some explanation on how to use them :)
But... if you still want to know how those Templates were made, here's some details that helped achieve that:


So, we finally got 3rd party devices inside "THE RACK" uh? :)

After all the fuss, hype...iness, trying every available Rack Extension possible and buying the "must have" ones, there's an issue related with the Remote side of each one of these new devices inside our Reason 6.5 rack:

The only Rack Extension supported by default on all the "factory" provided Remote Codecs+Maps is Propellerhead's own Radical Piano.

Yup... so now what ?

Here's some tricks for every Remote Dev/"hacker"/enthusiast and/or power user that knows how to or likes to keep their own customized versions of their controller Remote Codecs and Maps.



Q1: What's the quickest way to list all the Rack Extension Remoteables ?

A1: Besides the traditional and tedious way of engaging the Options, Remote Override Edit Mode, and going through each of the device controls, hovering the mouse over them and taking notes of its Remote designation, there's a quicker and easier way to do this for the Rack Extensions.

As you may already know, there's a new patch file format introduced with the Rack Extensions known as RePatch (extension .repatch).

This new file type is really, and fortunately (for many reasons, including what I'm about to explain) in plain text format, specifically, it's in XML format :)

Great uh? Yup, it's awesome!
(at this point, you may have noticed that I have to keep answering my own questions -.-')

This new format allows many patch generating/editing tricks (maybe I'll post about it in the future) but, the first thing you'll get out of this is easy access to the internal names of each control (knob/fader/button/...) of the Rack Extension that saved that .repatch file.

...at this point, you may ask:

"What about all the other Rack Extensions that don't have Patch saving capabilities ?"

well... as usual, the Combinator comes to the rescue, in this case too ;)

Simply put the Rack Extension device you're trying to figure out its Remoteables, inside a Combinator, save that as a Combinator patch (.cmb file) and open that file with a text editor (that doesn't get confused with extra non-printable characters!). This will get you access to the same type of information I was talking about in the .repatch file, since all the Rack Extension parameters/controls are also saved in that .cmb file, as an XML block of plain text, which solves our problem :)

Ok, let's see an example, shall we?

Let's say I want to add support to Pulsar on my custom version of the M-Audio Axiom 61 Remote Map.

Here are the basic steps:

1) Start Reason 6.5

2) Create a Pulsar device

3) Combine it (i.e. put it inside a Combinator)

4) Save that Combinator as something like "PulsarInside.cmb" (remember the folder where you saved it!)

5) Start your preferred text Editor and open that same " PulsarInside.cmb" file with it.

You'll end up with something like this:

...and if you sort those lines, or filter them for "Value property" you'll get something like this:

See? After some Search/Replacing, you'll get this clean list of Pulsar remoteables:
Attack
EnvLFO2Trig
EnvSync
EnvToLFO1Level
EnvToLFO1Rate
EnvToLFO2Level
EnvToLFO2Rate
EnvTrig
KeyTrack
Lag1
Lag2
Level1 Modulation Input
Level2 Modulation Input
LFO1Level
LFO1Rate
LFO2Level
LFO2On
LFO2Rate
LFO2Sync
LFO2ToLFO1Level
LFO2ToLFO1Rate
Phase1 Modulation Input
Phase1
Phase2 Modulation Input
Phase2
Rate1 Modulation Input
Rate2 Modulation Input
Release
Shuffle1 Modulation Input
Shuffle1
Shuffle2 Modulation Input
Shuffle2
SyncRate1
SyncRate2
TempoSync1
TempoSync2
Waveform1
Waveform2
Which is then what you can use (i.e. try) to map to your controller controls with lines like:
Map Fader 1 Attack
oh, btw, don't forget to replace any "_" char for a white space " ", so if there's something like "EG_ATTACK" in there, it'll get replaced by "EG ATTACK" and that's the one you want to use inside your .remotemap file!

Also, expect some kind of trial'n'error with this, since not every saved parameter is supposed to be exposed as a Remoteable, so... don't be surprised if some of these simply don't work, ok? :) ...this is just a "brute force" way to quickly get everything.

For instance, that raw list will need some adjustments, when you compare it with what you'll get when doing a check of each Remote Override naming.

So, in this case of Pulsar, you see some differences when comparing with this list:
Attack
Keyboard Track
LFO1 Env Level
LFO1 Env Rate
LFO1 Env Sync
LFO1 Lag
LFO1 Level
LFO1 Phase
LFO1 Rate Free
LFO1 Rate Synced
LFO1 Shuffle
LFO1 Tempo Sync
LFO1 Waveform
LFO2 Enabled
LFO2 Env Level
LFO2 Env Rate
LFO2 Lag
LFO2 Level
LFO2 Phase
LFO2 Rate Free
LFO2 Rate Synced
LFO2 Shuffle
LFO2 Tempo Sync
LFO2 to LFO1 Level
LFO2 to LFO1 Rate
LFO2 Triggers Envelope
LFO2 Waveform
Release
Sync LFO1 to LFO2
Trig
You'll always have to check, but I prefer to edit and correct a raw list extracted in bulk than going one by one and manually taking notes on each Remoteable. Just a personal preference. Now that you know this additional method, you're the one to choose which works best for you :)




Q2: What about the Scope line ? How do I identify the Rack Extension as a Scope?

A2: Well, there are 2 things you'll need to know to make the Scope line: The device ID and... the CompanyID that made it.

So, with those 2 informations, you'll be able to make a line like:
Scope {CompanyID} {RackExtensionID}
 ...and this is how you get those 2:

1) To get the Rack Extension ID, you'll need to check the folder where the Rack Extensions are kept (saved/installed). I don't own a Mac (sorry!) so I'll give you the Windows path (and maybe someone in the comments can add the OS X equivalent).

Edit: Thanks to electricfusion laboratory, here's the OS X path:
'your user account'/Library/Application Support/Propellerhead Software/Rack Extensions

So, navigate your Windows explorer to the path "%AppData%\Propellerhead Software\RackExtensions" and you'll see a list of folders per installed Rack Extension.

Continuing with the Pulsar example, you can easily spot a folder named "se.propellerheads.Pulsar.1.0.0" right?
So, excluding the version part, that "se.propellerheads.Pulsar" is what we will use as the Rack Extension ID in our scope line
Scope {CompanyID} se.propellerheads.Pulsar

2) Now, to get the Company ID, that's the easiest part :)

Simply press F8, to open the Tool Window, and find the Rack Extension you're working with... in our example, Pulsar

See the "Propellerhead Software" group ? Well... that's the "Company ID" you should use in:

Scope Propellerhead Software se.propellerheads.Pulsar

and... you're ready to go and do your own custom maps for the new Rack Extension devices :)

uh... more Company ID examples ? Ok... so, lets check a few more:

so, these would make scopes like:
Scope FXpansion Audio UK Ltd. com.fxpansion.EtchRack
Scope Peff  com.peff.Buffre
Scope Sonic Charge com.soniccharge.Bitspeek
Scope Sugar Bytes com.sugarbytes.SliceArranger
etc...


I hope this will help all the Remote enthusiasts to get started with their custom maps of all the current and future Rack Extensions! :)


For more on this, please check Part II

7 comments:

  1. Thanks :)

    Not the perfect fail-safe method to extract the real Remoteables out of the REs but it kinda works for most of'em, when the patch parameters match them (unlike the Pulsar example)

    ReplyDelete
  2. Excellent work Kosh! Very informative.

    Rob (Phi Sequence)

    ReplyDelete
    Replies
    1. Thxs Rob :)

      I wished there was a better way to get the Remoteables correctly, but until RE Devs publish them (and MIDI specs of each RE), I guess this is one of doing it :)

      Delete
  3. This was incredibly useful and helpful. Just brought new life to my Edirol PCR-300 controller. Having used previous versions of Reason prior to recently getting 6.5, Remote mapping just worked. I wasn't really sure what was going on under the hood, and was a bit perplexed why my controller wasn't able to work with Remote with the new Rack Extensions. Might be something Propellerheads may want to clear up. In any case, I am so happy that these preference files are accessible and editable.

    Thanks for sharing this information, should make many Reason owners more productive!

    - Shannon

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. Hi Kevin,

      If you're unable to save the .remotemap file, then you'll need to check your file system permissions or if those files are set as read-only.

      If you're able to save the file it looses your changes each time you run Reason, then you should try increasing the Map Version number in that file so Reason sees it as a newer version than the factory provided one.

      Having said this, I usually recommend keeping the factory codecs+maps and do a new custom one based of (copy) an existing one closest to what you want/need :)

      ...if nothing of this works, I guess I'll need more details to be of any help :)

      Good luck!

      /<osh

      Delete