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



VERSION: 0.8
DATE: 17.02.2019
DOWNLOAD: https://forum.cockos.com/attachment....1&d=1551027767

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

Kudos to Julian Sader to make it possible to pin a window on top
https://forum.cockos.com/showthread.php?t=212174

SWS and S&M Extension (Who doesnt know this awesome Extension? )
http://www.sws-extension.org/

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.

regards
Hubi
Attached Images
File Type: jpg Switcher_thumb.jpg (34.8 KB, 749 views)
Attached Files
File Type: zip JSHSwitcher.zip (8.8 KB, 227 views)

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

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
Hubi is offline   Reply With Quote
Old 11-16-2018, 10:59 PM   #3
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 744
Default

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
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,876
Default

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
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

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
Hubi
Human being with feelings
 
Join Date: Oct 2010
Posts: 83
Default

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
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,876
Default

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


Code:
--[[
 * 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:
https://www.extremraym.com/en/reapac...For_Developers


Have fun :P
X-Raym is offline   Reply With Quote
Old 11-19-2018, 09:10 AM   #8
Vincent Sermonne
Petit manitou
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Gémenos France
Posts: 7,347
Default

hello thank's for your share !
I have an ReaScript error message window:
'JS_Window_Attach TopmostPin'unknow function
__________________
Vincent
http://www.tchackpoum.fr
Vincent Sermonne is offline   Reply With Quote
Old 11-19-2018, 09:37 AM   #9
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,618
Default

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
https://soundcloud.com/hopikiva
hopi is offline   Reply With Quote
Old 11-19-2018, 10:10 AM   #10
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,876
Default

@Vincent
You need JS_Reascript extension


Avaible via Reapack.


https://github.com/ReaTeam/Extensions
X-Raym is offline   Reply With Quote
Old 12-21-2018, 07:56 AM   #11
Hubi
Human being with feelings
 
Join Date: Oct 2010
Posts: 83
Default Changelog 0.4

Changelog for Version 0.4:
  • Changed Gui to be smaller and less "artistic", to a more usefull workflow oriented style.
  • Fixed a Problem with the Reaper presets, it would save way more data than it needed to save.
  • Drag LMB to Change values
  • Reworked some of the logic.

I finally found a bit more time now (slowly getting back to normal life), and can now look into implementing some of the requested Features.
Hubi is offline   Reply With Quote
Old 12-21-2018, 08:53 AM   #12
bFooz
Human being with feelings
 
Join Date: Jul 2010
Location: Slovakia
Posts: 2,588
Default

Just wonder how difficult would it be to use notation events for switching articulations on the fly.
bFooz is offline   Reply With Quote
Old 12-21-2018, 05:55 PM   #13
Hubi
Human being with feelings
 
Join Date: Oct 2010
Posts: 83
Default

Quote:
Originally Posted by bFooz
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...
Hubi is offline   Reply With Quote
Old 12-22-2018, 03:57 AM   #14
bFooz
Human being with feelings
 
Join Date: Jul 2010
Location: Slovakia
Posts: 2,588
Default

Quote:
Originally Posted by Hubi View Post
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.
bFooz is offline   Reply With Quote
Old 02-24-2019, 10:23 AM   #15
Hubi
Human being with feelings
 
Join Date: Oct 2010
Posts: 83
Default

Changelog for Version 0.8:
  • 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.
Hubi is offline   Reply With Quote
Old 02-24-2019, 11:00 PM   #16
Kora
Human being with feelings
 
Join Date: Feb 2019
Posts: 3
Default I get a "ReaScript Error" Window ?

I get a "ReaScript Error" Window when loading the latest script I downloaded today..

"JS_Window_SelForeground" unknown function

The JSH Switcher Control Center Window comes up.. but the
Reascript Error box doestnt go away when you press continue.
Kora is offline   Reply With Quote
Old 02-24-2019, 11:18 PM   #17
Hubi
Human being with feelings
 
Join Date: Oct 2010
Posts: 83
Default

Did you install Julian Sadar's and the SWS Extension? both are needed for those functions.

Kudos to Julian Sader to make it possible to pin a window on top
https://forum.cockos.com/showthread.php?t=212174

SWS and S&M Extension (Who doesnt know this awesome Extension? )
http://www.sws-extension.org/
Hubi is offline   Reply With Quote
Reply

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 03:41 PM.


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