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 :)

39 comments:

  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 ?

    ReplyDelete
  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:
    https://www.keithmcmillen.com/downloads#quneo

    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).

    Cheers,

    /<osh

    ReplyDelete
  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?

    ReplyDelete
    Replies
    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 :)

      Cheers,

      /<osh

      Delete
    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

      Delete
    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 :)

      Delete
  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.

    boxermarx

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

      Delete
  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

    ReplyDelete
  6. Hi Tom,

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

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

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

      Delete
  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.
    David

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

      Cheers!

      /<osh

      Delete
  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!!

    Richard

    ReplyDelete
    Replies
    1. Hi Richard,

      Have you tried this instead?

      %ProgramData%\Propellerhead Software\Remote

      Cheers,

      /<osh

      Delete
  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!!

    ReplyDelete
    Replies
    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 :)

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

      Delete
    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 :)

      Delete
  11. Hi. Thanks for creating the remote scripts. I'm still trying to get to grips with Reason 9 and the BeatStep Pro (fw 2.0.0.2) 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.

    DM

    ReplyDelete
    Replies
    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 :)

      Delete
  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.

    ReplyDelete
    Replies
    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 :)

      Delete
  13. Hi Kosh, with you'r help i can control redrum with my BSP but he doesn't receive information from redrum so the pads of my BSP are not synchronize with redrum..

    do you have a solution or explaination about this problem ?

    thanks :)

    ReplyDelete
    Replies
    1. Hi Tom, sorry for the late reply (busy week, month even!).

      Getting MIDI feedback out of Reason (devices) into controllers isn't impossible, but doesn't have a generic solution, unfortunately, because different controllers have different MIDI commands to do what you're expecting (LED control) ...when they even allow it.

      So, in BSP's case, there's a way to control it's pads (and buttons) backlight LEDs through special undocumented SysEx commands, specific just for the BSP and no other MIDI controller with similar capabilities.

      So the only way to achieve what you were expecting to happen, would be to make a specific Remote Codec (and Map) just for the BSP, which initially I was thinking of doing but gave up on the idea because I didn't want to make it based on undocumented features I reverse-engineered by trial'n'error and lots of instinctive ideas that down the line could stop working because of some firmware update.

      That's why I waited for a while, to see if an official documentation of MIDI specs of the BSP was published, which didn't happen (to my knowledge at least).

      ...and, TBH, since these generic codecs did what I need when using the BSP I had to put my efforts and time on other projects :/ ...sorry 'bout that!

      Delete
  14. Hi Koshdukai,
    your Codec is so funky awesome!
    Just downloaded and donated. I can play and record now different Reason-Instruments and RackExtensions without touching the Computer that is absolutely wicked!
    i was just testing this cause i was thinking about to buy the Arturia Keystep (and maybe the Beatstep onTop ...?) and i can´t stop playing. I´ll get the Keystep immidiately!
    Thanks for your work - great Job!!

    ReplyDelete
    Replies
    1. I'm so glad that you found it useful and thank you so much for your donation, it means a lot! :D

      Delete
  15. Hi Kosh Dukai,
    today the BSP arrived and nearly everything is working as planned. Nearly means: I don´t get the Seq of the BSP properly synched to reason ... I´m sending a Midi-Clock from Reason to the BSP (only way to still record stuff in Reason) but this goes out of synch after some bars ... Do you have any Tipps for this?
    Best regards from Hamburg
    #malte

    ReplyDelete
    Replies
    1. Hi :)

      I haven't experienced any sync issues with Reason as master MIDI clock to BSP, so I guess I'll have to do some basic questions to get the easy issues out of the way (sorry):

      Besides turning on Reason's Sync, Send MIDI Clock option, are you sure you selected the "Arturia BeatStep Pro" device MIDI port in Reason's Edit, Preferences, Sync, MIDI clock sync, Output field?

      And most importantly (and I'm still doing the basic questions, sorry about that) did you set BSP's SYNC to USB while it (the sequencer) was stopped?

      If your answer is YES to all of these, then I have to ask if you're just experiencing a constant sync offset (adjustable in that same Reason Preferences Sync tab) or a weird progressive de-sync throughout the time ?

      I just tried it myself with my BSP and Reason, recording a 50 bar sequence and it was spot-on till the end, not desyncing anytime.

      hmmm... what BDP firmware version are you using? Is it the latest?

      Delete
  16. Hi, thanks for the super-quick-reply! :D

    the answer is yes to all of your points (incl. Firmware), but i´ve just doublechecked it and i had a 81 bar fun incl. recording it into Reason.
    Hopefully it stays like this! :P
    But I´m wondering that the Tempo of 94.00BPM from Reason is (while playing) on the BSP changing between 93/94 all the time its playing. I never had such tempo issues using MidiClock and/or AbletonLink with all my other Devices.

    Interesting Side-Story; i can start play on my notebook, but stop an back-to-zero works ONLY via the BSP - Spooky! :D

    But anyway - it´s my first day with it & i have to train all that horny features of the BSP and the coop with reason and all my other devices.

    Next time i´ll come with an super-expert-question i´ll promise ;)

    Thanks for sharing your time & best regards

    ReplyDelete
    Replies
    1. Glad it's working now :)

      That display jitter between 93/94 is a natural one that usually happens when sensing external MIDI clock.
      In BSP's case, it's updating the display fast-enough and without any interpolation/smoothing between the Tempo values, which some devices that show external tempo in-real-time do, looking more like "rock solid" Sync to the eye :)

      Delete
    2. Found out where the sync goes crazy: it´s the "Roller/Looper" ... i thought it works independent from the sequenzer but it seems to be absolutely luck to get back into the (DAW-)Click on the 1 when releasing it.
      So this tool seems to be not usabel playing live with others. I really hope i am wrong with this, cause i love this feature

      Delete
    3. hmmm... strange. I've just tried it, even while recording and it'll keep in-sync, using any of the loop time divisions at any point of the song.

      Delete
    4. D´you use a Click to proof? I nearly never have the kick on the one again ... really strange if it works fine on yours.
      Also i found out, that i have to set ClockSend (from reason) to -1 to be save on the Sequenzer-Grid.

      And i can reproduce the timing-synch-thing: when set reason in loopmode, in this case at 87BPM+4Bars; when starting the track its a bit before or after the 1 and after every loop it goes a little different.
      this morning i had to restart a track (no loop) 10/11 times to get it into the nice laidback timing that i had yesterday evening with the same track (i saved the Project on the BSP but haven´t recorded the sequenzes as midi into reason).

      But anyway - this has nothing to do with your great remote-maps, so don´t waste your time with BSP-Newbie-Stuff :D
      I´ll shure find a way to make this super-proof ;)

      Thanks for your time! :)

      Delete
    5. Hi,

      just got an BSP and it works great so far. But there is no tutorial around which covers a correct set-up of the BSP for reason.

      What I did:

      In the reson preferences I have select "other" -> "Midi control keyboard" and set Midi-out to "Arturia Bestatep Pro"
      In the sync options I set Midi-clock-out to "Arturia Beatstep pro" too. Sync Mode I set to "send Midi clock"


      my Problem is, that I can control (Start, Stop or record" only from reason. When I hit stop or start on the BSP, ONLY the BSP starts or stops without syncronizeing reason anymore. thats one problem. The other is, that I don't know how to use the 3 different sequencers for 3 different reason instruments.

      Can you make a step-by-step instruction, how to set up BSP proper & best in reason?

      Greets, Atin

      Delete
    6. Hi Atin,

      Unfortunately I won't be able to make a step-by-step due to time constraints but I can try to help with some tips:

      1st: You're slaving BSP to Reason so Reason isn't getting any clock or Start/Stop info from BSP. It's exactly the other way around and that's why you're getting that behaviour.

      To use the 3 seqs you'll need Reason to "listen" to the different MIDI channels, per sequencer, as if there were 3 different controllers.
      Reason by default has no codecs that allow you to choose which MIDI Channel to listen to, that's exactly why I did the "Generic MIDI Channel aware Remote Codec+Map" posted here :)

      Delete
  17. Thanks for the fast reply, so you mean that it is not possible to have "both ways? If this is the case, I will keep this way, becaus reason is first and BSP an addition. By the way, what would you change that reason is the slave?

    With the 3 sequencers I will try the codec and do it like you decribed at the beginning of the thread (:

    ReplyDelete
    Replies
    1. There's ways to have it both ways but it might get you in trouble if not setup correctly or you don't know what's going on or how it works.

      The easiest way I can think of is for you to use Reason's Remote Override on the Start and Stop sequencer buttons while using the BSP's Transport buttons as simple controller buttons.
      For this to work, you need to configure the BSP (use the Arturia MCC config tool) in the "Device Settings" tab, down in the Transports section and set the "Transports" parameter to "Both" so each button sends MIDI CC out that'll be used to map those to Reason's Transpor buttons as I described above, with Remote Override.

      Delete