Saturday, October 15, 2011

Reason 6 Thor Voice Bug - Workaround

Update: version 0.0.2 fixes the fast-click problem reported by NaviRetlav.

I have developed a workaround to the bug described here that may be suitable for some situations.

It takes the form of a Combinator containing two Thor instances. When the bug is triggered the output from the first Thor is interrupted and this triggers the second Thor to generate a short pulse. This pulse is then used to gate the triggering of the first Thor's Step Sequencer, which has the effect of correctly resetting the Voice and reopening it.

This Combinator can be used to provide a reset pulse to any Thor in your workspace that relies on an open Voice, such as one that is using the Shaper to affect an external sound source (routed into the Thor). This pulse is generated whenever the bug occurs, thereby providing a way to recover from it.

A test-bench for this workaround can be found here (0.0.2). Simply open the file and you'll see the CV Debug combi on the left, and the Reset combi on the right. The top-right Delay device in the CV Debug (labeled "Reset Out") combi shows the state of the pulse. Hit Stop a few times to see the value jump from 1127 to down to 1000 briefly. You can adjust the length of the pulse with the first knob on the combi.

To use this pulse to reset another Thor, simply take this "Reset Out" signal into a CV Input on your Thor and use it as the Scale control (@ 100%) for your "LFO2 -> S.Trig" rule that you are using to retrigger the Step Sequencer. Look at the first Thor in the CV Reset combi for an example of this.

If you find this workaround useful or broken I'd appreciate some feedback please.




Reason 6 Thor Voice Bug

Update: I have developed a workaround, details are here.

This article is intended to explain the Thor Voice bug that has been observed by several Reason users in versions 4 through to 6. I first mentioned it here when discussing the Thor Shaper in Reason 4.

The bug concerns the way Thor handles creation of voices when it receives a trigger from the Step Sequencer. Normally, the Step Sequencer can generate triggers which open new Voice channels, allowing these channels to be used for effects (such as the LP Ladder filter, and the Shaper). By setting the Step Sequencer to trigger automatically via a trigger generated from the same Thor instance, it is possible to create a continuous Voice that stays open and provides an effects channel.

The bug is that hitting the Stop transport control, or selecting Export Loop/Song As Audio closes this Voice and the Step Sequencer fails to retrigger the Voice, and the channel is closed.

Earlier versions had a workaround, thanks to selig, that would help to solve the Stop issue, but not the Export Audio issue. Unfortunately with Reason 6 this workaround does not appear to work.

I present here a Reason 6 song file that clearly demonstrates the Stop issue. It consists of a Thor, a Subtractor synth that generates a continuous sequence of tones, and a second Thor that triggers the Subtractor. I did not use the Sequencer track to generate notes because I specifically want to show the behaviour when the sequencer is not running. Or to put it another way, the bug is a problem when you are working with the sequencer stopped, which is not uncommon when constructing patches.

When you open the example file, after an initial weird noise, you will hear the pulsing tone from the Subtractor, which is going into the Thor [Audio In 1], through [Filter 1], out [Audio Out 1] and into the Mixer. The Thor has a simple Step Sequencer (of one step) configured to generate a trigger and create the Thor Voice so that Filter 1 actually 'exists'. The Step Sequencer is triggered periodically by LFO2, and you will see that the Run button is automatically enabled & highlighted.

Now press Stop on the Transport panel - the sound will stop. Note that the Run button is still highlighted - this is because the LFO2 is frequently triggering it. But the Voice is not created and no sound will be heard. This is the bug. What should happen is that the retriggering of the Step Sequencer by LFO2 just after Stop is clicked should re-open the Voice and we'd hear the sound, but it does not and remains silent.

Manual intervention is required to restore the Voice - now click the Run button once, it will briefly go off and then be retriggered by the LFO2, and the sound will return.

Pressing Play will also 'fix' the problem, but again this is primarily an issue when working with the Sequencer stopped.

A similar issue, but not demonstrated by this example (I'll need to create a slightly different version) occurs after Exporting As Audio.

As anyone who follows this blog will know, I work a lot with CV within Reason. I like to create all sorts of interesting CV devices, and Reason provides almost an unlimited capacity to experiment with these things. In this regard it is almost bug-free, but this one particular bug is a real problem for my designs and I've yet to find a suitable workaround in Reason 6.

It also significantly reduces the usefulness of the Thor Shaper as a viable audio effect.

Thor patch to demonstrate Voice bug.




Monday, September 26, 2011

Akai MPK mini & Reason

Introduction

Note: there appears to be a newer version of the Akai MPK Mini Editor that is not compatible with the files I provide, or the process outlined below. If you don't have the older version, these instructions may not work for you. If anyone is able to shed some light on the situation I'd be happy to make mention.

In 2011 I picked up the Akai MPK mini, a "laptop production keyboard" clearly focused on portability.

(image sourced from http://www.akaipro.com/mpkmini)

I haven't used it enough to write a proper review yet, but there was one thing that did annoy me about it right out-of-the-box - it doesn't have any dedicated MIDI support in Reason or Record!

I should explain. MIDI controllers communicate with Reason & Record via a "codec" and a "remote map". The codec translates and associates incoming MIDI messages to specific 'control items', and the remote map is used to map these 'control items' to different Reason device controls.

But what makes your controller really useful is that a properly supported controller will auto-map its controls onto specific Reason device controls as you change devices.

For example, you can have a knob that maps to the first Combinator knob when a Combinator has MIDI focus, but then maps to the LPF frequency slider when you change to a Subtractor. The mapping is device-dependent and Reason takes care of it for you. You can also customise this mapping yourself.

Almost any MIDI controller will work with Reason as there are several 'generic' codecs that simply map keys, wheels, knobs, pads and sliders to generic 'controls'. But sadly if you are forced to use these codecs then you lose the auto-mapping feature - now your control simply generates a MIDI CC message on a fixed channel and this may correspond to... anything.

(Note that you can always use the 'remote map override' feature to assign any control to any Reason control - this can be useful occasionally but it's tedious to set up and does not scale to a full controller).

My Solution


I have created suitable Lua Codec and Map files for the Akai MPK mini. If you use these, you will be able to make almost full use of the device, and the knobs and pads will map to sensible controls on each Reason device. If you wish to customise the per-device mapping, simply edit the .remotemap file and add your own rules.

The latest version supports:
  • Compatible with Reason 5 / Record 1.5 to Reason 6.5.3 - may work with future versions too.
  • Kong pads - turn off CC and PROG CHANGE, then Pad Bank 1 maps to Kong pads 1-8, Pad Bank 2 maps to pads 9-16.
  • Switches - turn on CC and each pad will act as a switch. Pad Bank 1 maps to switches 1-8, Pad Bank 2 maps to switches 9-16. Note that 'toggle' mode for the switches does not work correctly, and probably never will, so the pad lights will not stay lit.
  • Prog Change - turn on PROG CHANGE and each pad will generate push-button events. Currently these are set up to send Transport messages:
    • 1 - rewind
    • 2 - ffwd
    • 3 - stop
    • 4 - play
    • 5 - record
    • 7 - change to previous sequencer track
    • 8 - change to next sequencer track
  • Knobs - eight knobs that are mapped to 'sensible' Reason controls. Note that Knob 1 is the top left knob.
  • Keyboard Sustain (Damper Pedal) support - hold the "Sustain" button to activate.
I used the Akai LPD8 lua codec and MPK49 remotemap files that ships with Reason as the basis for this project. I used an image of the MPK mini from Akai's website for the device picture. Akai's support page is here.

Upgrading to 0.0.3 - important note!


If you are upgrading to 0.0.3 from an earlier version, you must reprogram your controller using the "Akai MPK MINI Editor" as the CC values generated by the pads have changed.

To upgrade, simply follow the Installation procedure again. You do not need to remove the old files, just make sure you overwrite them with the new files from the zip file.

If you have performed any of your own customisation (for example the .remotemap file), be sure to back up your changes before upgrading. You will have to manually reapply your changes afterwards.

Installation


The latest version 0.0.3 is available here. It is a zip file. Unzip it somewhere handy.

There are two parts to this installation process. Part 1 involves copying the Remote files to the correct destination on your system. Part 2 involves reprogramming your MPK mini with the provided Preset. You must complete both parts to have a successful installation.

Part 1 - Copy the Remote Files


The files in the Remote directory should be copied into your user's Remote directory:
  • OSX: Macintosh HD/Library/Application Support/Propellerhead Software/Remote
    • it is also possible to install into /Users/[username]/Library/Application Support/Propellerhead Software/Remote if you want to keep them separate from your main Reason installation.
  • Windows XP: C:/Documents and Settings/Application Data/Propellerhead Software/Remote/
  • Windows Vista: C:/Documents and Settings/Program Data/Propellerhead Software/Remote/
  • Windows 7: C:/ProgramData/Propellerhead Software/Remote
Carefully copy all of these files, strictly maintaining this directory structure:
  • Remote/Codecs/Lua Codecs/Akai/AkaiMPKmini.luacodec
  • Remote/Codecs/Lua Codecs/Akai/AkaiMPKmini.lua
  • Remote/Codecs/Lua Codecs/Akai/AkaiMPKmini.png
  • Remote/Maps/Akai/AkaiMPKmini.remotemap
Now restart Reason so that it sees the new files. Go into Preferences and select your new MIDI controller - you can tell Reason to try and auto-detect the MPK mini, or you can add it manually.

But before this will work, you must set up the MPK mini to generate the correct MIDI messages. Now complete Part 2.


Part 2 - Load the MPK mini Preset


The provided Preset ensures that your keyboard produces the correct MIDI messages are received by the Remote codec (which you installed in Part 1). To install the Preset:
  • Ensure neither Reason nor Record are running - they may interfere with this process.
  • Run the "Akai MPK MINI Editor" (on the CD provided with your controller, or downloadable from Akai's product support page)
  • Click "Load Preset" and load the "Reason.preset" file from the Presets directory that you earlier unzipped.
  • This will automatically switch the display to Preset Slot 1, but you can upload the new preset to any Slot you wish by clicking the "Preset #" drop-down and select the slot number you want to upload into:

  • finally click the "Upload" button, and then click OK:

  • You can repeat this upload process for the other Preset Slots if you like, but note that uploading a Preset to a Slot will completely overwrite any data already there.

 (Previous versions had four identical Preset files, one for each Slot. However I realised that you can upload one file to any Slot with the above procedure, so now there is just one Reason preset).

In version 0.0.3 I have adjusted the CC values generated by the Pads to start at 65, rather than 64, as the first pad was interfering with the Sustain function.



Customisation


Because the Lua Codec maps almost every control on the controller to a 'control item', you can customise the device mappings however you want. Simply edit the AkaiMPKmini.remotemap file to associate the MPK mini's controls with whatever Reason device controls you want. More information can be found here.

The available control items are:
  • Keyboard
  • Sustain
  • Knob 1-8
  • Pad Button 1-16
  • Prog Change 1-16

Updates

Update 28th February 2013 - version 0.0.3 released, see post for details. If you are upgrading, please read this post carefully.

Update 2nd October 2011 - version 0.0.2 appears to work fine in Reason 6 (OSX).

Update 30th September 2011 - version 0.0.2 released, see below for details.

Release History

Version 0.0.3 - 20130228
  • Added support for Sustain / Damper Pedal.
  • Adjusted base CC for pads from 64 to 65.

Version 0.0.2 - 20110930
  • Added support for Transport controls in Record 1.5.

Version 0.0.1 - 20110926
  • Initial release, supports AutoDetect, Kong pads, CC pads (switches), Prog pads (transport), and knobs. All four presets are identical.
  • Tested in Reason 5 on OSX only.

Disclaimer


I am not affiliated or associated in any way with Akai or Propellerhead. I have created these files myself with the files and programs legally available to me. 

You download and use these files entirely at your own risk!


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 New Zealand License.