Old 10-28-2018, 08:52 PM   #1
Human being with feelings
Join Date: Oct 2010
Posts: 69
Default SWITCHER a Key Switching Solution

DATE: 30.10.2018
DOWNLOAD: https://forum.cockos.com/attachment....1&d=1540929668

You need the SWS/S&M and JS API Extensions

Kudos to Julian Sader to make it possible to pin a window on top

SWS and S&M Extension (Who doesnt know this awesome Extension? )

Well... After 2 years of silence and no music, im finaly back to doing what i like and love. life happened.

What brought me to start developing this?

The journey started around 3 years ago, i wanted to unify the ways certain Sample Developers manage articulation switching (via CC, via keyswitch, via channel… etc.), but DEFINITELY didnt want to use key switches, they are clunky and hard to edit (slow workflow) i dont like them…

So i thought about ways, which brought me to using the 16 different midi channels, as they are the ones that get send, even if in the middle of a midi note, which lets you play the project from any time without fearing the wrong articulation is still active.

I developed a js plugin that is used on the fx in chain and simply changes the channels of the midi events triggered by CC 0 Values 0-15. it worked but it had one big flaw.. i needed to set every intrument up to be up 16 instances and set the right articulations in each of them… still slow and in some cases performance hungry... and i could not always ensure that i did not accidentaly hit a cc and changed the articulation(One those where i cant purge part of the samples)… i did set up costum actions in the midi editor to set the selected notes to channel 1-16.

but it was still not what i wanted….

Recently i came across Blake Robinson's BRSO Articulate and i liked the way it was done, posibility to name the articulations, having a gui that is also there in the midi editor and so on...

Unfortunately the last Version is from 2015 and had a few problems. mainly making midi notes short while edeting with mouse..

So i will make it new from ground up (and hopefully i found all the Problems... ok lets promise most of them ), by combining those ideas (thanks to Blake Robinson for giving me this idea and inpiration) with mine and creating a tool that is easy to use and helps the workflow of composers.

What is Switcher

Switcher is a Suite consisting of three parts: Switcher In, Switcher Control Center, Switcher Out which makes it possible to comfortably Change articulations, while playing and while editing.

Switcher In

You can select the sources that triggers the articulation.

You have to configure the !! 16 !! different articulations. Use the Dropdown.
  • Select the Channel to listen to for the source
  • Use A Keyswitch, with exact Velocity (Value Slider) or just any on that key
  • Use a CC with the exact value

Then all the midi Events get passed through on the channel that became active (with the selection).

Switcher Control Center

This is the heart of the Tool, here you can set the articulations you want to edit (Left Mouse Button / Blue highlight) and the articulations you want to Play (Right Mouse Button / Green Highlight)…

It also Shows which track you have selected (it only works on the first of the selected tracks if its more than one) if you have the plugins on this track, it needs at least the Switcher Out and you can add them by clicking one of the Buttons, or open the one of the current selected track.

Oh and if you wonder the track it shows is determined like this: First if a Midi editor is open through the take. then the Track....

Switcher Out

This is the logic brain.

What can it do:
  • Send Note with Velocity to Channel (Key Switch)
  • Send CC with Value to Channel
  • Send Just Channel
And then sends the incomming data to the selected channel, and this for up to 16 different articulations. Also makes it possible to configure the name of the articulation.

How to use it (It get's highlighted if you hover over something that can be changed):
  • Change Mode by LMB Mode Button
  • Change Articulation Name by LMB Name/Notationline
  • In the Dropdownmenu: Mousewheel to scroll through them, RMB anywhere else to close it, LMB to select the Item you want.
  • Mousewheel with mouse over Note/CC Channel Velocity/Value to Change its Values by +-1, if you also hold RMB then by +-5

How to Install
On Windows you find it at: "USERNAME/AppData/Roaming/REAPER"
  • Get the needed Extensions
  • Put the JSHSwitcher Folder (containing the JS Plugins and the Image Folder) into the Effects Folder of Reaper
  • Put the JSH Switcher Control Center.eel into the Scripts Folder
  • Then Launch Reaper
  • Go to Actions Menu and Show Action list
  • ReaScript: Load
  • Locate the JSH Switcher Control Center.eel and Load it
  • Launch it or Make a Costum Button on one of your Toolbars and your good to go

Test it out and tell me if you find problems. i will add more articulations soon. after i did the basic work on Switcher In.

Attached Files
File Type: rar JSHSwitcherVersion0_3.rar (17.5 KB, 51 views)

Last edited by Hubi; 11-02-2018 at 04:10 PM.
Hubi is offline   Reply With Quote
Old 10-30-2018, 12:45 PM   #2
Human being with feelings
Join Date: Oct 2010
Posts: 69

Just a Second Post, to put the recent Changelogs here.

  • Added a few new articulations to select.
Switcher Control Center:
  • Noticed i forgot to set the initial window position variables --- done now it initialises at x100y100 you can change that at the beginning of the script
  • fixed the drawing height of the articulation images, now shown completely
  • added comententary
Switcher Out:
  • Removed obsolete sliders for data transfer between SCC and SO
  • Now only reacts to midi notes (Note On Messages) for changing articulations. All data still gets passed through same as before
Switcher In
  • Added the basic functionality with sliders, no gui yet
Hubi is offline   Reply With Quote
Old 11-16-2018, 10:59 PM   #3
Arthur McArthur
Human being with feelings
Join Date: Sep 2016
Location: Toronto
Posts: 420

Hi Hubi, this looks really interesting and useful. I followed the installation procedure, and am getting this error on running the control center script:

fgets(): file handle 0.000000 not valid

Ah - I figured it out. The "JSHSwitcher" folder was inside the "JSHSwitcher0_3" folder. Moving it out into the effects root solved the problem. Will continue to test
Arthur McArthur is offline   Reply With Quote
Old 11-16-2018, 11:39 PM   #4
Human being with feelings
X-Raym's Avatar
Join Date: Apr 2013
Location: France
Posts: 5,214

Seems nice !

There is other articulations manager like Sfer and Rearticulate, which are really advanced, reaper users have choice in articulation management now :P

Have you consider sharing it via Reapack ? :P

Thx for sharing your work !
X-Raym is offline   Reply With Quote
Old 11-17-2018, 05:26 AM   #5
Human being with feelings
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 1,484

Thanks for sharing this, looks great and very efficient workflow. Just a thought, how would you manage layers?

Example: You want to use various articulations, but also layer those, e.g. up to maximum 3 layers, on certain key regions, again assuming dividing the midi notes 0..127 into three areas, low, mid, high.
low: 0..47
mid: 48..71
high: 72..127

So being able not only to tell what to play (articulation), but also where (in which note range, low or mid or high), all from one interface, could be useful maybe as well? Or how would you accomplish this in reaper bestly?

So channel switching could mean then, changing articulations per range (low, mid, high) plus even layering them on top of each other, as many as you need/want actually. A bit like what Vangelis is doing using his foot pedals, but here this tool would help managing all this. Then, changing midi channels would switch among 16 possible setups (articulations, ranges, layers).
TonE is offline   Reply With Quote
Old 11-19-2018, 06:45 AM   #6
Human being with feelings
Join Date: Oct 2010
Posts: 69

Thanks for the suggestions.

I will look into those in the future, i just had a loss in my Family, after all is done im back on it.

I already changed the Gui from fancy to usefull (haha).
I plan on implementing a way to detect if multiple selected tracks have the same articulation and just show those.
Also implement parts of my midi cc mapper into it, and transpose per articualtion. midi mangling stuff like that…
More posibilities to select how to switch.
And easy adding of articulations while runtime speaking of no need to restart reaper.

To your idea with multiple zones. well its only possible in channel switch mode. because there you need to load each indivudual articulation (or different Instruments even) of the Instrument, with keyswitches its not posible unless you load this Instrument more than once, i thought about it, and in case of Kontakt you could use the purge feature to have one main instance of the Instrument running and use a second or a third one to layer without burning ram.

Yes i considered reapack, but i have no idea how to do this and what i need to do for that.
Hubi is offline   Reply With Quote
Old 11-19-2018, 07:18 AM   #7
Human being with feelings
X-Raym's Avatar
Join Date: Apr 2013
Location: France
Posts: 5,214

Yes i considered reapack, but i have no idea how to do this and what i need to do for that.
Well the minimal states are easy, just have your script named with author_name fo script.lua,
add a minimal header at the top of the script like this

 * ReaScript Name: 
 * Author: 
 * Licence: GPL v3
 * REAPER: 5.0
 * Version: 1.0
 * Changelog:
 * v1.0 (2016-01-29)
	+ Initial Release
Then post that on a GitHub (or other git system) so you can use reapack-index cli tool to create the index.xml file used by reapack.

More infos on the wiki page of reapack-index and on my article about reapack:

Have fun :P
X-Raym is offline   Reply With Quote
Old 11-19-2018, 09:10 AM   #8
Vincent Sermonne
Human being with feelings
Vincent Sermonne's Avatar
Join Date: Feb 2009
Location: Marseille France
Posts: 5,615

hello thank's for your share !
I have an ReaScript error message window:
'JS_Window_Attach TopmostPin'unknow function
Vincent Sermonne is online now   Reply With Quote
Old 11-19-2018, 09:37 AM   #9
Human being with feelings
hopi's Avatar
Join Date: Oct 2008
Location: Right Hear
Posts: 13,627

seems nice, thanks... yet I wonder how it will deal with kontakt lib's that have more than 16 articulations?

have to run two diff instances or what?

there are libs that have 34-36 articualtions
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
hopi is offline   Reply With Quote
Old 11-19-2018, 10:10 AM   #10
Human being with feelings
X-Raym's Avatar
Join Date: Apr 2013
Location: France
Posts: 5,214

You need JS_Reascript extension

Avaible via Reapack.

X-Raym is offline   Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -7. The time now is 05:55 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.