Old 08-09-2019, 08:23 AM   #1
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,468
Default Collaboration on a Versatile Patch Changer

Some years ago, I decided to revive my nearly forgotten life as a keyboarder. After some trying, I found that it makes sense to modernize the (still decently working) 25 years old equipment consisting of a KX-88 Master keyboard and a sound module.
Therefore, I needed to decide what to invest in.

Alternatives were (1) a complete keyboard such as a Dexibell Vivo, (2) a dedicated software such as (at that time top notch) “Forte” (see -> https://forum.cockos.com/showthread.php?t=213568#3 ), or (3) use Reaper to build a custom system, which I thought I could do, as Reaper provides the necessary programming capabilities and I was a programmer since 30 years. So I bought an “embedded” PC and started the project. *)
At first I used what already was there. SWS “LiveConfigs” can manage the patch switching – including putting unused VSTs to sleep – rather well. And it was easy to remote-control LiveConfigs by the Program Change buttons on the Master keyboard.

Later, I enhanced my equipment to include three keyboards and a Control Surface device with buttons, rotaries, and motor faders (see -> https://forum.cockos.com/showthread.php?t=213568#5 ). This setup is permanently in use for practicing and “on stage”.

To manage this setup I wrote a set of JSFXes that receive Midi messages from the Control Surface (and the keyboards) and send Midi Messages to the Control Surface and the VSTs (and the keyboards, and a Midi interface for recording).

The basic functionality is:
  • Three groups of patches are managed (one for each keyboard)
  • They hold 16 patches for the upper, 16 for the middle, and 32 for the lower keyboard.
  • Each patch holds the definition for an active track, potentially program change and/or preset information for the involved VSTs, and 17 live-tweakable (by the rotaries and faders) parameters that are sent to the active VSTs by Midi CC messages.
  • When pressing a button for patch change, the parameters are sent to the appropriate VSTs and to the Control surface to be shown in LED ring and faders position.
The system works great but there are some shortcomings:
  • “Spill over” when changing a patch for reverb tails or when holding a key or sustain pedal is not provided. This is not possible when using LiveConfigs.
  • The system is not done with ease of configuration in mind. Hence creating a new patch is not exactly easy to do, and the basic setting up in Reaper will take a decent lot of time.
  • While the setup can be used “headless” (without mouse, monitor and computer keyboard attached), and the live-tweakable parameters are saved during the “show” to be remembered when the appropriate patch is activated again, it’s not possible to save them to disk to recall them for the next “show”. On startup they are reset to the default that was set during the configuration and written by Reaper “save project”.
  • Regarding the programming logic it’s not nice that the parameter values are dynamically held at three locations: the Control surface, the JSFX, and the VST. Reading the parameter value from the VST when necessary would be more appropriate.

I know that there are alternatives to a LiveConfigs bases system (see -> https://forum.cockos.com/showthread.php?t=213568 ).
I did some JSFXes and ReaperScripts to help Pipelineaudio to do a Live setup for guitar that does provide “spill over” . I suppose he did get this working.
Moreover, Pipelineaudio successfully used "LBX Stripper" (see -> https://forum.cockos.com/showthread.php?t=182233 ) to do a different guitar setup (see -> https://pipelineaudio.net/guitarjack...-lbx-stripper/ ). I did not yet check LBX Stripper as there is no documentation whatsoever for same.

Now as I gained some experience with all this stuff, I might consider reworking the “Versatile Patch Changer” system to allow it to be used much easier by “non-programmer-type” musicians, making the Reaper based method to be considered on par with dedicated software products (see -> https://forum.cockos.com/showthread.php?t=213568#3 ), but a lot more versatile, and even with dedicated self-contained “performer” keyboards.

This would involve:
  • Still different “operation modes” for GUI based configuration and headless “Live show” situations.
  • A usable GUI for configuration (including automatically create and delete threads to hold the VSTis and VSTs).
  • Allowing to save the parameter settings of a patch in a headless situation.
  • “Spill over” for reverb tails (rather easy to do) and held keys / sustain pedal (supposedly not that easy).
  • Integrated “Song” mode: versatile stepping a pre-programmed sequence of patches (see -> [] ).
  • Playing “background tracks” (optionally integrated in the Song mode.
I suppose most of this can be done by scripts (JSFX and Reaper Scripts), but doing a versatile GUI maybe asks for doing a Reaper extension in C++. I did not do Reaper extensions, yet, but I am positive that this can be managed, as well.

I am not very experienced in designing and programming a GUI that covers a complex workflow such as configuring a system like this one. Hence It would make a lot of sense to find a group of volunteers who want to collaborate in this project.

-Michael

*) The decision to use Reaper finally was obvious. This provides the most versatility and flexibility and also the least cost. In fact the monetary costs for the first workable stage of the project were zero, as I could re-use my existing master keyboard and I needed to invest ion a DAW, anyway.

Last edited by mschnell; 08-12-2019 at 07:12 AM.
mschnell is offline   Reply With Quote
Old 08-10-2019, 08:38 AM   #2
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,468
Default

Starting to collect a feature list:
  • Audio, Midi keyboard and Midi Control surface input via normal tracks to allow any preprocessinig a user might add himself.
    This requires the use of MidiToReaControlPath, if the Patch Changer is done by scripts, or implementation as a combined VST and Reaper Extension plugin, if done in C++-
  • audio spill over (reverb, echo, ...)
  • Midi spill over (running notes, sustain pedal)
  • mute/unmute tracks (similar as LiveConfigs) but
  • allow for audio spill over via versatile fades
  • allow for Midi spillover (how to accomplish that ?)
  • allow for multiple unmuted track for a patch
  • push presets onto plugins (similar as LiveConfigs)
  • live twakable parameters per patch (e.g. 17 of them for a XComtrol Compact)
  • re-call when that patch is selected again during the show
  • allow for saving as default (to be recall after starting the Reaper project) for the correent patch (undo.levels... !)
  • assignable to any VST-parameter via "Morphing": (linear) functions applied to define multiple parameters of multiple VSTs from any tweakable parameter.
  • VST parameters accessible via Midi CCs or vis VST/DAW API.
  • fire Reaper actions on patch change (similar as LiveConfigs)
  • GUI (plus maybe text files) for configuration
  • remove add track
  • Audio and Midi Routing
  • define preset pushing onto pugins (similar as LiveConfigs)
  • define actions on patch change (similar as LiveConfigs)
  • define the interface to a Control Surface (maybe borough ideas from "CSI")
  • define the functionality of the twakable parameters. These should be able to be support "Morphing" and be sent as a bunch of CCs with definable Bus, Channel, and CC #, and VST parameter defines.
  • Song Patch stepper (see -> http://www.bschnell.de/patch.pdf =
  • "Background tracks"
  • Never used that or plan to use it myself, so no idea what features are sensible.
  • supposedly something similar to SWS region play list, or maybe borrow some ideas from "Playtime".

...

Last edited by mschnell; 08-12-2019 at 07:20 AM.
mschnell is offline   Reply With Quote
Old 08-11-2019, 10:16 AM   #3
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 439
Default

this all sounds very interesting. im not sure what i can do to help, i have a basic knowledge of reascript/jsfx but nothing too deep, but i would love to help any way i can
__________________
[array] soundcloud facebook
matthewjumpsoffbuildings is offline   Reply With Quote
Old 08-11-2019, 01:58 PM   #4
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,468
Default

Great ! Thanks !
At least providers of ideas/comments and testers of course are welcome.
So please stay tuned !
-Michael
mschnell is offline   Reply With Quote
Old 08-12-2019, 05:14 AM   #5
Yorky
Human being with feelings
 
Join Date: Feb 2009
Posts: 19
Default

Hi Michael,

I would also like to collaborate in as many ways I can. I don't describe myself as a coder but have a lot of experience in many other associated fields.

I have been building my test rig I may have previously alluded to. Physically, the portable floor pedal case has the Behringer FCB1010 as the main interface with the guts mounted underneath in a plinth space. The RPi4 is my Reaper host limited at present by SD card only but intended to boot by SD then load OS from SSD before finally, the RPi4 eeprom upgrade is completed to allow for direct USB boot. I'm currently battling with getting my audio interface to be recognised by the OS but I'm sure this will be resolved soon. A 5v power brick [26.8Ah!] is the power source. I've modified the FCB1010 to operate from the same power source following Pipeline's blog. I can remotely jump into the desktop from my Android phone with a VNC viewer.
Once I got the thing operating consistently I'll post some pictures and more details of the rig.

As I have been putting this together and absorbing a multitude of information it occurred to me that using Reaper in this way [assuming that it all comes together!] is just what a single performer or a small group of 2/3 people could actually use. As a rehearsal tool through to a small live performing rig. Mics and instruments plugged in and mixed to near studio level for simple output to an amp or PA. I've also added in BT5 for IEM use as an evaluation.

Reliable and flexible at relatively, low cost.

Equally though, this can scale up with Intel NUC to meet other use cases, as I've followed your output describing the rig you developed.

Looking forwards to seeing how I can contribute and collaborate. Cheers
Yorky is offline   Reply With Quote
Old 08-12-2019, 07:09 AM   #6
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,468
Default

Great !!!

-Michael
mschnell is offline   Reply With Quote
Old 08-12-2019, 12:59 PM   #7
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 7,468
Default

Anybody interested in the project might want to try LiveConfigs (Doku: -> www.bschnell.de/LiveConfigs_1.pdf ) and/or ReaPack -> "Midi CC table" / "Midi Fade X" / "Midi Auto Engage" / "Mute or unmute track X" and/or "LBX Stripper"

(-> https://forum.cockos.com/showthread.php?t=213568#2 )

-Michael
mschnell 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:35 AM.


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