Tuesday, September 8, 2015

Generic MIDI Channel aware Remote Codec+Map

If you have a controller capable of sending MIDI messages on multiple MIDI Channels, like an M-Audio Axiom's 4 Keyboard zones (so 4 MIDI Channels from the same keyboard) plus the Pads on Channel 10 or an Arturia BeatStep PRO that can send 2 sequences on their own MIDI Channel (1 and 2) and its Drum sequencer on MIDI Channel 10 plus the controller on, say, MIDI Channel 16, etc, then you certainly felt the need for a MIDI Channel-aware type of Remote Codec like this one.

Taking the BSP example, here's an example on how to get its 4 sources of MIDI into Reason with this Remote Codec+Map.

Add a Control Surface per MIDI source with these 3 easy steps:

1) Add a Control Surface from the "<Other>" Manufacturer and choose the correct "Generic Controller on MIDI Channel __ /<" Model with the MIDI Channel you'll need

2) Give it a proper name, so you know what's the real controller being used with this generic map (that you can totally customize on your own)

3) Select the proper MIDI In Port for it

You can ignore the Out Port on these generic maps unless you plan to customize the Codec too.

Repeat the above steps for each of the BSP sequencers (since that's the example I'm using here).

So, you'll add 4 Control Surfaces for BSP's Controller Mode, Sequencer 1, Sequencer 2 and Drums, each with its respective MIDI Channel set to what you're planning to use in the BSP and all of them pointing at the same MIDI In Port, since that's the one the BSP will be sending its MIDI data.

Don't worry with Reason's yellow warning. That's expected since you're declaring multiple Control Surfaces with a common MIDI Port. It warns you but won't block you from using them like it used to on much older Reason versions.

So, you'll end up with 4 new entries like these:

...and that's about it. After this, you can lock any of those controllers to specific rack devices and each will only receive the MIDI notes (or CCs in the BSP Controller mode's case) that are being sent on those specific MIDI Channels.

The big difference from using this solution instead of doing the MIDI Channel redirection into rack devices through the Advanced MIDI Device is that with this Codec you're able to record the MIDI data into the Sequencer, something that's not possible nor the main purpose of the Advanced MIDI Device.

So, here's the Zip with the files inside, including the ReadMe.txt with the usual installation instructions:

Koshdukai's Generic Controller MIDI Channel Remote Codec V.1.1.1 (201601)
Update: This new 1.1.1 version allows MIDI feedback for those wanting to send back to the controller the changes being done through the Reason GUI.
Use only if your controller is prepared to receive the same CCs it's sending on each control!
You can easily turn this feature off by selecting 'Not selected' in the Out port :)

...oh, and speaking of the Arturia BeatStep PRO, I'm still planning to do a specific Codec+Map for it someday, but I'm waiting for it to stabilize its feature-set so I can see how to take proper advantage of its closer integration with Reason through a specific Map.

Until then, I guess this generic one will suffice and hopefully will help others customize their own Codecs+Maps for their multi-channel controllers :)


  1. Dear Kosh,
    Thank you so much for the great job you are doing with the all these mapping and codecs. Your contributions are precious for the Reason's users.
    To be able to record Notes and CC through my controller QuNeo, I did implemented the Koshdukai_MIDIChannelX.remotemap and I can now record Notes from my QuNeo. But not the CC. They are interpreted as Note by Reason's sequencer.
    I guess that I have to modify the Koshdukai_MIDIChannelX.remotemap file. But this is too complex to my knowledge of electronic musician.

    Any hint ?

  2. Dear Unknown (I had to start like this ;)

    If that's happening, it must be because the QuNeo is sending MIDI Notes not CCs.

    Try to checking that with the QuNeo editor:

    See what's being sent by what pad/button.

    My generic codec supports CCs (passing them as-is to Reason) as long as the controller sends them :)

    Hope this helps.

    oh btw... try contacting Keith McMillen's support and ask for a specific Codec+Map for the QuNeo, maybe they'll make one. I know they did one for one of their other products (I think it was QuNexus).



  3. 1) I downloaded drivers from web side
    2) I programmed each Livid Base II bank on another channel
    3) I added "Generic Controller on MIDI Channel x" driver for each channel also I've set output & input on "Base II"
    4) The controller responds correctly on the input but output doesn't
    return any value, for example: when I touch controller slider I change the settings in Reason but Reason don't change controller backlight

    Can I count on your help?

    1. Hi drumz,

      Well, the version I published wasn't supposed to do MIDI feedback from Reason to the controller, so that's why it didn't work ;)

      Since you're the 2nd person to ask me about this feature, I guess I'll need to make available the tweaked version I did a couple of months ago that seemed to work fine for what the 1st person needed.

      This new version only works if the controller is expecting to accept the same CCs per control that each one is sending!

      I'll publish that version ASAP, so check back in a couple of days and it should be available for download here :)



    2. great job, but there is one problem with the display controller

      each set Midi Out of the channel display 00 instead of the correct number

      if Midi Out is not set, the channel is displayed correctly

    3. Well, I'm very sorry, but I really don't understand what you're describing :(

      Please keep in mind that, this is a *GENERIC* Codec as in, not made to work perfectly with a specific controller but well enough with all/any.

      If you really need a stronger integration with Reason, I guess your best bet would be to contact Livid and ask them about a Reason Codec+Map for that model or at least some help or enough info that may allow you to tweak an existing one, either from them for other model or even one of these generic ones.

      Sorry for not being more helpful on this, since I don't own that controller, it's quite unlikely for me to be able to make a specific Codec for it or turn any of these generic ones into something more than that.

      Hope Livid can be of more help than I was :)

  4. Hi Kosh,

    This thread may be a bit old but the topic is real and alive.

    I just want to say thanks for making and sharing this. It is a definite lifesaver not have to run a third party application at the driver level just to get the integration the Beatstep Pro needs.

    It is also by far the easiest way to map it to work correctly.


    1. Thanks, it's always great to know these are being used and useful :)

  5. The Generic MIDI Channel + Remote Codec+Map is exactly, what i am looking for!
    Unfortunatly it does not work for me - the new controller is not recognized by Reason...maybe my mistake?
    Configuration: Reason 8 + Windows 10 (64 Bit).
    I put the codec- and map-files in this directory:
    C:\ProgramData\Propellerhead Software\Remote

  6. Hi Tom,

    Try putting them in this path instead:
    C:\Documents and Settings\All Users\Application Data\Propellerhead Software\Remote

  7. Hi!
    After several attempts without any positive results I
    reinstalled Reason - now it works!
    Thank you very much for your great work! :-)

    1. Cool! Great to know you were able to make it work :)

  8. Great job - had me really scratching my head why I could connect an iPad to a MacBook runningReason via WiFi MIDI just fine, hear and control Reason's instruments from (say) Chordion or SoundPrism for example - but *NOT* record the results onto the seq. track for the instrument in Reason.

    Kind of glaring functionality omission IMHO by Propellerhead as I can do this natively in Cubase 7.5 with no hassle at all. So really glad to find your Codec with such clear instructions and works just brilliantly. Thanks a bunch, very much appreciated.

    1. Hi David, I'm really glad this Codec was helpful :)



  9. Hi Kosh, great idea for Reason! I reacently purchased a Beatstep Pro to control a couple of my hardware synths and then came across your codec. I downloaded it, but I don't have the path C:\Documents and Settings\All Users\Application Data\Propellerhead Software\Remote on my computer. I'm using windows 10 and just updated my Reason version to 9.2. Is there another path I could use to get it to work? Great videos, too. Now I'm interested in DrumBrute! If I can get this to work look for donation from me!!


    1. Hi Richard,

      Have you tried this instead?

      %ProgramData%\Propellerhead Software\Remote



  10. Hi Kosh, I just got this to work with my BeatStep Pro. Thank you for your help. I just sent you 20 euros for your trouble. If you should ever do a codec for the BSP let me know! That, as the British would say, "would be Brilliant!" Again, thank you for your help,
    Richard (prgsurfcmpsr@aol.com)
    P.S. I will pass onto other where they can find this codec. Great work!!

    1. Thank you so much! As you might imagine, any donation is very much appreciated. It allows me to also do my own donations to some of the donationware tools I end up using when building this stuff I share for free.

      I'm really glad that this Codec is helping you out get more out of the BSP :)

      Initially I thought of doing a specific BSP Codec but then I ended up using this Channel-aware one more and more with BSP so I put that project to rest.

      ...but I may start reconsider it again. I just need to figure out how best to make it work. Maybe just start with a specific Codec for BSP's control mode and leave the rest of its modes to this generic Channel-aware codec :)

    2. Have you reconsidered doing this Codec? The BSP just recently got a new 2.0 FW update, it's looking great

    3. Hi Zehman,

      Well, BSP's new 2.0 FW actually finally convinced myself that a specific Codec for BSP doesn't make any sense now, because even the generic "controller" part of it now was taken over by the new features like saving chains as scenes.

      So, to me, the generic multi-channel Codec I did still works perfectly with BSP, more so with the new BSP V.2 IMHO :/

      ...but I'm curious: What would you expect from a BSP Codec, what functionality would you expect from it?
      Maybe I'm not seeing it right and enough suggestions and usability scenarios may change my mind in the end :)

  11. Hi. Thanks for creating the remote scripts. I'm still trying to get to grips with Reason 9 and the BeatStep Pro (fw and have installed your remote scripts and set up the control surfaces as advised. Do you have any suggestions what else to configure?

    - My BSP is connected by USB to the host computer. Which Sync setting should it be using (INT/USB/MIDI/CLK)?
    - In Reason 9, under Preferences - Sync, should I be sending MIDI to or receiving MIDI from the BSP?

    I can get sequences to play in Reason from each of the BSP's sequencers but I can't get Reason to start in time with the BSP so must be misunderstanding how this should hang together correctly.

    Any suggestions appreciated.


    1. Hi,

      1st you have to decide which will be the Master Clock.

      If you want Reason as Master MIDI Clock then:
      Set BSP's Sync to USB
      Set Reason's Edit, Preferences, Sync, MIDI clock sync, Output to BSP's MIDI port
      and also set Reason's Options, Sync, Send MIDI Clock

      I think you know this, but I'll say it anyway for others reading this: The Remote Codec/Map isn't needed for MIDI Clock Sync'ing, just for MIDI input of the played/sequenced MIDI data (Notes, etc)

      Hope this helped :)

  12. After installation and proper setup and locking to port/channel in Reason, MIDI data does not seem to be filtered. All locked devices still receive on all channels.

    1. I can only see 2 explanations for that behaviour.

      Either you're not using the Codecs named:
      "Generic Controller on MIDI Channel x /<" where x goes from 1 to 16, so please recheck that

      Or, that's only happening with the device currently selected as "current" (the one with the blue rack cursor at the top left of it) which will get MIDI from all the Codecs installed, besides the one being locked to it.
      In this case, for example, make the Tempo track as the currently selected controller target track. That'll make sure all the other device tracks will be only getting MIDI from their respective locked Codecs.

      Hope this helps :)