Group-Buy / Collection of Ideas for CantabileKeyboard

No weighted keys - it has a waterfall organ-type keyboard (Fatar TP-8O), but with velocity and aftertouch (channel pressure). Plays very nice for organ-y stuff and synth work; wouldn’t be my preferred keybed for piano stuff.

Since this beauty was built specifically for my use with Cantabile, I guess this ball is in my court. I might do this over the Christmas holidays; no promises, though…

Fabulous. I’m deeply envious!

I still have housing and keybeds in stock :wink: So if anyone likes to join… you are welcome.

1 Like

Just a quick textual overview in advance of the video: Essentially, it’s just a controller keyboard with a customized set of controls.

  • a number of buttons (normal push-buttons and bigger “arcade-style” buttons) that simply send individual CC messages (value of 127 when pushed).
  • 9 pots (7 o’clock to 5 o’clock with a little “stop” in the middle) - they also send individual CCs
  • 10 faders that can each send four different CCs, depending on the “bank switches” on their left. So fader 1 will send CC10 or CC20 or C30… depending on the state of the bank switches. The bank switches can also be remote-controlled via MIDI - nice :slight_smile:
  • A display that can show content you send to it via sysex
  • Pedal jacks for two switches and two continuous (expression) pedals
  • The usual set of modwheel and pitch-bend

Nothing unusual, with the exception of the keyboard that can be switched (via MIDI CC) to two different modes

  • Velocity mode: normal keyboard that outputs MIDI notes at different velocities. This requires keys to be pressed through two contacts (to measure the time in between and determine velocity)
  • Organ mode: in this mode, MIDI notes are triggered with the first contact, and velocity 127 is always sent. With the triggering at the first contact, the “depth” you need to press the key to trigger the note is very shallow, allowing for great glissandos and percussive “dabs” like on a real Hammond

This ability to switch keyboard modes was one of my key motivations to start this project with Christian.

So how do I use it with Cantabile?

  • Faders control levels (volume, reverb, delay, string layer) for upper and lower keyboard (two banks), plus act as drawbars (upper and lower - another two banks). Do the fader colors make sense now?
  • 10th fader (red) acts as monitor volume control in all 4 banks - I always need that directly at hand
  • Pots currently only act as master volume for keyboards and guitar - I’ll find uses for the rest of them :wink:
  • the three pushbuttons above MW and PB act as octave switches (octave switching happens within Cantabile, not on the keyboard): octave down, up, reset
  • the big red button on the top left is my panic button - it restarts the audio engine
  • the eight buttons to the right of the faders are used to move between song states (previous, next, first) and to remote-control LivePrompter (previous, next song, go to the top of the song). Then I use one to toggle my VoiceLive effects remotely (better to talk between songs without delay-ay-ay) and the final one to toggle Organ Mode
  • I use the display to show current song, current state and next state from Cantabile via SysEx. It also automatically displays the state of OrganMode and the CC value of the control I am moving
  • The arcade buttons are used for the things I need to hit easily in the heat of the battle: next song state (red button), play/pause for LivePrompter, scroll up/down in LivePrompter, plus the upper four that I use to trigger samples or effects

I remote-control the Organ Mode from Cantabile on a song-specific (or even state-specific) base by sending CC messages to the keyboard via Song-OnLoad or SongState-OnLoad bindings.

That’s essentially it!

Now something I’d also like to share with you, since getting a new controller also made me re-think my Background Rack to fully abstract my setup from the controllers I use with it.

Beware: nerdiness and wizardry lie ahead - enter at your own risk…


To de-couple the output of my controllers from the setup of my songs, I have set up “routing racks” within my background rack that receive the “naked” MIDI stream from my various input sources (keyboards, controllers). Then I distribute this input stream to various “virtual” input ports via the Loopback feature. This way, I can freely assign any incoming CC value to whatever I need it to be within my setup, e.g. CC6 coming from my Kurzweil can be mapped to the same “internal controller” as CC11 coming from the Motif, CC26 coming from my LaunchControl or CC31 coming from my new toy. Or I can trigger samples with a drumpad (note) from one controller, and with a button (CC) from another.

I have set up multiple such routing racks for all my different input controllers, so I can change my physical setup and simply switch on the rack for the controller I currently use:


In this case, the Motif is currently not used, so the rack is off, but my Kurzweil (main piano keys) and the new “MagicKeys” are active and being routed, as well as my studio keyboard (MPK 249)

The routing rack then outputs into various loopback ports that then get used by my songs as inputs

Main Keyboard, Second Keyboard, Pedals, Drawbars are pretty obvious. BG Rack is a special port to deliver CC messages to racks in my songs used to control levels (main level, solo level, main reverb, solo reverb, …).

Here is a typical Cantabile song for me:


The Main Keyboard, Second Keyboard, Drumpads, Pedals, Faders get fed by the routing racks in the Background Rack. Also, the _MainVolume _SoloVolume, and MasterRack racks receive level control from the BG rack. Levels within the MainReverb and Solo DelVerb and the StringLayerRack (level, filter cut-off) can be controlled via BG Rack commands.

So much for the typical use of controllers (fader, pots) - but the BG Rack also provides standardized CC messages that get used in “trigger” bindings:

This allows me to map all kinds of buttons, pads, pedals or whatever on any of my input controllers to trigger my “standard” events like “next state”, “restart engine” or remote-controlling LivePrompter via MIDI

This makes integrating new controllers into my setup a breeze: I create a new routing rack and a new “physical” midi port for any new device, route the input from the controller to the routing rack, which then does all the conversion to send it to my standard internal plumbing. So no need to change my songs just because I bought a new controller.

Here’s a glimpse behind the scenes: this is the Bindings page of the routing rack for my new toy:

Enough wizardry for today - if I find the time, I’ll put some of this in a video, and it will all start to make sense - hopefully!

Cheers,

Torsten

4 Likes

I’d love to know more! I’ve not been aware of a loopback facility.

I’m still at the point of having to create all my connections per song, though I have a ‘Hub’ Linked Rack that takes care of mappings. I have to create these hubs separately in every Song.

Having mappings in the Background Rack sounds like the answer I’ve been looking for, but I hadn’t found a way… until now? :+1:

Yes, loopback is super-helpful. I’ve now completely disconnected my main input ports (Main Keyboard, Second Keyboard, Pedals, Faders) from any physical MIDI device and then I use my background rack to do the plumbing between physical inputs from my various hardware controllers to these “abstract” input ports. That’s one more layer of abstraction beyond @brad’s original genius idea of “virtual” midi ports.

The “abstract” input ports aren’t connected to any hardware input - all MIDI input comes from the routing in the BG rack via loopback.

So my MIDI flow is
MIDI device (Windows MIDI driver)
→ virtual “hardware” port in Cantabile (“Kurzweil”)
→ routing rack in background rack
→ “abstract input ports” (“Second Keyboard”) via loopback
→ Input rack (linked) in song
→ individual racks in the song that consume the MIDI input

The input racks in my songs are an additional stage that allows me to separate the different message types and route them specifically to my racks to work with splits and layers efficiently. See here some detail from the song above:

Cheers,

Torsten

1 Like

Hi Torsten,

Please only do a video that day that the sun comes up and your heart rejoices when you think to yourself - I’m going to make a Cantabile video today! :grinning:

Doug

1 Like

I made a similar setup, though considerably simpler. I have created a couple of ‘abstract’ midi ports, one for Instrument and one for Controls, separating input from my various sources to either specific instruments/effects (using midi channels to separate) or generic control in Cantabile (next/prev song, master volume, …). Specific source handling is done in the midi input for the source, the background rack handles generic mapping/routing/binding. Works like a charm (especially now I got ReaJS to work and managed to script the last few advanced settings to my liking to get the integration to LivePrompter to work seamlessly).

1 Like