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.
GUI OVERHAUL, now smaller and flat design
Switcher In NEW
You can select the sources that triggers the articulation.
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 NEW
This is the heart of the Tool, here you see the aviable articulations for the active track/Midi Editor, grey highlight is the current active articulation to be drawn/played, select midi notes and click any articulation to change the midi events to the desired one.
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 NEW
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):
LMB Click the big Button and TYPE your articulation Name. hit ENTER to Exit type mode
Change Mode by LMB Mode Button
Change Articulation Name by selecting it in the List to the Right (click first on the slot you want to edit
In the Sidemenu: 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, Draging with LMB now supported
How to Install
On Windows you find it at: "USERNAME/AppData/Roaming/REAPER"
Get the needed Extensions
Put the content of the zip in the same folders you find in the reaper user Folder (Content of Scripts goes into Scripts and Content of Effects goes to Effects)
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.
Just a Second Post, to put the recent Changelogs here.
30.10.18
Added a few new articulations to select.
Switcher Control Center:
Version:0.3
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:
Version:0.3
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
Version 0.3 INITIAL RELEASE
Added the basic functionality with sliders, no gui yet
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
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).
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.
Just wonder how difficult would it be to use notation events for switching articulations on the fly.
You mean like using the articulations in the score view? For that i looked through the reascript api and did not find something that might make it possible, but i might have just overlooked it.
On the other hand using fixed events is against the main idea of this switcher, if you use events it can always happen that you start Playback after this event, resulting in not having the right sound and this makes working on and repeating a phrase a pain… thats why i used channels, they get triggered on any time of the note and they move with the note, so no need to manage a second thing (Keyswitch, CC, Programmchange).
Even though i need to implement one keyswitch for some behaviour control of the switching if i dont find another solution… grrr...
You mean like using the articulations in the score view?
Yes. Currently it would probably need to be done with JSFX reading MIDI data as they are played.
Quote:
On the other hand using fixed events is against the main idea of this switcher, if you use events it can always happen that you start Playback after this event
Understood. There could be a way - a separate script changing notes channels as they are WRITTEN based on an articulation used. This is probably beyond the scope of your switcher, just an idea.
Ditched the Text file and any other ways to save the articulation names, makes it simpler to install and to use. (no certain fixed folder structure needed anymore)
You can now type your articulation names directly in the Switcher Out Plugin.
Presets should now still work after future uptades, former Presets are definitely broken.
Switcher In got now ist own GUI and all are fittet together.
I call this release now a BETA release, a feature complete Version that still needs to be ironed out, but should now Keep the presets due to the way i layed the variables and Arrays out. (i should have the space i need for future updates)
Typing is still rudimentary but: LMB into the Typing field (you wont see its active as of now but believe me it is ) then simply type, with Enter you Exit type Mode or if you type within another Field by Clicking it... you can Delete while typing, arrow keys dont work and if you try to type in it again it starts from the beginning… if you delete to much you might get a suprise by deleting the former Articulation Name..... (no savety for that implemented yet) OR in other words: first release and the way i made it to test it out if its worth to do it that way.. it is, so i improve on it.
i build a Basic comunication between the Reascript and JS using the Sliders. this way i was able to Transfer the Articulation Names over.