Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER for Live Use

Reply
 
Thread Tools Display Modes
Old 02-16-2018, 04:04 PM   #161
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

I got one that I was leaving till the end when it was nitpicking time: When you first load one of these projects, you need to step through all the pedals several times before things work correctly...I'm wondering if theres some sort of preloadable midi something or another to get it all set to work on the first pedal press
pipelineaudio is offline   Reply With Quote
Old 02-16-2018, 04:31 PM   #162
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

hmmm, that start fade in thing seems to be making it really much much better....testing some more

Also found a way to toggle between rows on the same pedal, this is getting crazy good!
pipelineaudio is offline   Reply With Quote
Old 02-17-2018, 12:20 AM   #163
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
hmmm, that start fade in thing seems to be making it really much much better
Great ! This is what I was hoping for.

It's astonishing, how complex a simple fade-in / spill over algorithm is when looking at it in detail, isn't it ?

Let me know when you think it works satisfactory, so that I can push it on ReaPack.

-Michael
mschnell is offline   Reply With Quote
Old 02-17-2018, 01:59 AM   #164
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
When you first load one of these projects, you need to step through all the pedals several times before things work correctly...
That of course is a bad thing.

You need to find out what parameters in any plugin are in an undesired state after startup.

In fact Reaper saves all parameters of all plugins with the project and pushes them onto same when loading the project. So what goes wrong here ?

In my setup I send all managed (realtime-tweakable by the controller board) CCs to the appropriate plugins with any patch change, but this is done because I save these parameters in realtime, while other patches are activated.

-Michael
mschnell is offline   Reply With Quote
Old 02-17-2018, 02:04 AM   #165
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
Also found a way to toggle between rows on the same pedal, this is getting crazy good!
I hate toggle switches, as you never know in what state they are. But as all the plain old guitar stomp boxes work that way, I suppose you are trained.

I still m thinking about dumping LiveConfigs in a setup as yours and replace it by a dedicated JSFX, as LiveConfigs seems to add more confusion than functionality.

Are you inclined to do some tests on that, once you are happy with the currant project ?

-Michael
mschnell is offline   Reply With Quote
Old 02-17-2018, 02:34 AM   #166
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Quote:
Originally Posted by mschnell View Post
I hate toggle switches, as you never know in what state they are.
Even better, I'm using a modded version of the wah reset script so that it is always on the first toggle state if I move away from it!

Quote:
I still m thinking about dumping LiveConfigs in a setup as yours and replace it by a dedicated JSFX, as LiveConfigs seems to add more confusion than functionality.

Are you inclined to do some tests on that, once you are happy with the currant project ?

-Michael
Hell yeah...Remember that I'm still using live configs as an action loader on activate and deactivate though. Thats why I was hoping someone would make that spreadsheet script
pipelineaudio is offline   Reply With Quote
Old 02-17-2018, 03:07 AM   #167
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
I'm still using live configs as an action loader on activate and deactivate though.
Of course I do know this.

The "low confusion" concept I have in mind is:
- do a JSFX that controls the "Midi Fade X" instances in multiple tracks as a replacement for the LiveConfig "input track" and track mute/unmute features.
- same also will send Midi messages to the plugins to manage their state
- if something is necessarily be done in the Reaper Control Path (such as firing an action) the plugin will send Midi messages there via MidiToReaControlPath
- of course the muting of tracks (to save CPU) initiated by Midi Fade X also is done via MidiToReaControlPath and firing an action (I understand that you do exactly this right now)

My intention is to avoid sending information via the "ControlPath" barrier multiple times. Everything is done in the user track area and only necessary commands are sent "down".

By this I hope to be able to do the central "LiveConfigJS" JSFX in a way configurable for a wide range of usage case (including an advanced toggle button feature, once I happen to understand how this is supposed to work.)

-Michael

Last edited by mschnell; 02-17-2018 at 05:01 AM.
mschnell is offline   Reply With Quote
Old 02-17-2018, 04:14 AM   #168
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

That sounds like an EXCELLENT idea
pipelineaudio is offline   Reply With Quote
Old 02-17-2018, 04:25 AM   #169
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

I think a really telling thing today, after the newest midi fade x version is that I stopped dicking with the setup, and just worked on sounds and actually just playing the guitar...it took a while to dawn on me that I wasn't worried about the fading system anymore

Also Justin told me to turn on multicore support for live plugins and man on the desktop it was just enough to not have to mute anything! Laptop wasn;t so lucky, but the mute and stuff is working so well now, I'm not worried about it
pipelineaudio is offline   Reply With Quote
Old 02-17-2018, 05:13 AM   #170
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

That sounds amazing !

I think it's really time to start advertising Reaper as the a basis for Live playing applications. For me, this was the motivation to use Reaper from the beginning. I only later started to use Reaper as a system for multitrack recording and production/mixing.

I wrote to Cocos' Webadmin with a request for installing a dedicated "Reaper for Live usage" (including "embedding" Reaper with other applications) subforum, where threads such as this one can reside / be moved to. (see -> https://forum.cockos.com/showthread.php?t=203312#14 )

Maybe you can talk to Justin about this issue.

Thanks,
-Michael
mschnell is offline   Reply With Quote
Old 02-17-2018, 06:50 PM   #171
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

I'm bugging him about it
pipelineaudio is offline   Reply With Quote
Old 02-18-2018, 12:18 AM   #172
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Woohoo! https://www.instagram.com/p/BfVDcFWB...=pipelineaudio

Even the BiasFX wah is working with the auto engage now
pipelineaudio is offline   Reply With Quote
Old 02-18-2018, 01:09 AM   #173
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

I have no Idea what th "BiasFX wah" is and what is special about it regarding auto-enging, but I am decently happy that the JSFX works for you.

-Michael
mschnell is offline   Reply With Quote
Old 02-18-2018, 06:26 PM   #174
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Quote:
Originally Posted by mschnell View Post
That of course is a bad thing.

You need to find out what parameters in any plugin are in an undesired state after startup.

In fact Reaper saves all parameters of all plugins with the project and pushes them onto same when loading the project. So what goes wrong here ?

In my setup I send all managed (realtime-tweakable by the controller board) CCs to the appropriate plugins with any patch change, but this is done because I save these parameters in realtime, while other patches are activated.

-Michael
I'm trying to check with midi monitor, it seems like the commands are getting there, but since the tracks are muted at first, maybe thats the issue?
pipelineaudio is offline   Reply With Quote
Old 02-18-2018, 10:21 PM   #175
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
I'm trying to check with midi monitor, it seems like the commands are getting there, but since the tracks are muted at first, maybe thats the issue?
Yep. If "saving CPU when muted" is activated, the plugins are in a deep sleep if the track is muted and will not react on any attempt to change any parameter.

I suppose with my setup sending all parameters to the plugins after unmuting the track (plus a short waiting time) this is avoided. But I fo this changes only by sending CC messages to the plugins.

OTOH, LiveConfigs pushes setups to the plugins when it unmutes a track. This seems to work out of the box.

-Michael
mschnell is offline   Reply With Quote
Old 02-18-2018, 10:36 PM   #176
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
Also Justin told me to turn on multicore support for live plugins and man ...
Can you tell me more about this option (how to activate it, where is it documented ?) ?
Thanks,
-Michael
mschnell is offline   Reply With Quote
Old 02-18-2018, 11:32 PM   #177
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

options preferences/audio/buffering Allow live FX multiprocession on:
pipelineaudio is offline   Reply With Quote
Old 02-19-2018, 08:23 AM   #178
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Thanks,
Do you know what exactly this does ?
-Michael
mschnell is offline   Reply With Quote
Old 02-19-2018, 11:04 AM   #179
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

I think it allows more than one core to be used for fx on armed tracks, which I guess it doesn’t do by default, but I’m not sure. All I know is that by turning it on, the rt longest block went from 8 ms to 3.5

Also, mikerophonics told me about an Sws command to load something on project load,so maybe I can figure a way to get rid of the initial weirdness I get when I launch a project
pipelineaudio is offline   Reply With Quote
Old 02-19-2018, 11:52 AM   #180
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
I think it allows more than one core to be used for fx on armed tracks, which I guess it doesn’t do by default, but I’m not sure. All I know is that by turning it on, the rt longest block went from 8 ms to 3.5
I understand that for each track a CPU thread (and hence a core, if available, is used. Maybe activating this option allows for multiple threads/Cores per thread.

Quote:
Originally Posted by pipelineaudio View Post
Also, mikerophonics told me about an Sws command to load something on project load,so maybe I can figure a way to get rid of the initial weirdness I get when I launch a project
I seem to remember that such a command does exist. Let me know what you get.

-Michael
mschnell is offline   Reply With Quote
Old 02-19-2018, 03:13 PM   #181
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Works! I set a startup action to cylce thru all the pedals and pop up the tuner on project load, hitting any pedal after that goes right where its supposed to!
pipelineaudio is offline   Reply With Quote
Old 02-19-2018, 10:32 PM   #182
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

GREAT !
-Michael
mschnell is offline   Reply With Quote
Old 02-20-2018, 11:42 PM   #183
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

in Pipe Midi Filter, does "stretch" turn the threshold value into value 0 for the original CC? I think that's what it needs to do, but I'm not sure if I have it right
pipelineaudio is offline   Reply With Quote
Old 02-20-2018, 11:46 PM   #184
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

ahh, I see, it stretches from the hysteresis bottom. I wonder if it would be better to have a long, dead, "zero" zone between the threshold and the hysteresis and start 0 from the threshold
pipelineaudio is offline   Reply With Quote
Old 02-21-2018, 01:35 AM   #185
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

ok, I got it on the right path now.

Last edited by pipelineaudio; 02-21-2018 at 01:50 AM.
pipelineaudio is offline   Reply With Quote
Old 02-21-2018, 08:19 AM   #186
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
ahh, I see, it stretches from the hysteresis bottom. I wonder if it would be better to have a long, dead, "zero" zone between the threshold and the hysteresis and start 0 from the threshold
Supposedly you are right. The current version is closer to the non-stretched variant. I think I could implement a triple selection.

-Michael
mschnell is offline   Reply With Quote
Old 02-21-2018, 02:36 PM   #187
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

can we start cc value 0 from the threshold beginning? I think that's what would seem best
pipelineaudio is offline   Reply With Quote
Old 02-21-2018, 02:56 PM   #188
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

here you are.
But I am not sure as this works as desired in the "invert" position.

-Michael

Code:
desc:Pipe Midi Filter
author: Michael Schnell (mschnell@bschnell.de)
version: 2.2
changelog: initial release
donation: United Nations Foundation http://www.unfoundation.org/
about:
  ## Description
   Pipe
  

  ## Limitations
   Pipe
  





// Author: Michael Schnell, based on a work of Time Waster (M. Smith)
// License: LGPL - http://www.gnu.org/licenses/lgpl.html
//



slider1:0<0,15,1{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Channel
slider2:1<0,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}>CC Input
slider3:2<1,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}>CC Output
slider4:10<0,127,1>Threshold
slider5:5<0,64,1>Hysteresis
slider6:0<0,500,10>dwell time (msek)
slider7:0<0,1,1{straight,invert}>Output
slider8:0<0,1,1{straight,stretch to low limit,stretch to high limit}>original CC

in_pin:  none
out_pin: none

@init
  out  = 0;
  outo = 0;
  in   = 0;
  delay = 0;

  
@slider
  inChannel   = slider1;
  inCC        = slider2; 
  outCC       = slider3;
  thh         = slider4;
  thl         = thh - slider5;
  dt          = slider6;         
  invert      = slider7;
  enhance     = slider8;
  thl < 1 ? thl = 1;
  invert ? (
    outh      = 0;
    outl      = 127;
   ) : ( 
    outh      = 127;
    outl      = 0;
  );  
  msg1o       = $xB0 + inChannel;
  
@block
  while (midirecv(offset, msg1, msg2, msg3)) (
    status = msg1 & $xF0;      // Extract message type
    channel = msg1 & $x0F;
    channel == inChannel ? (   // Is it on our channel?
      status == $xB0 ? (       // Is it a controller event?
        msg2 == inCC ? (       // Is it the right CC?
          in = msg3;
          in > thh ? (
            out = outh;
           ) :  msg3 < thl ? (
            out = outl; 
          );  
          out != outo ? (
            outo = out;            
            f = srate / samplesblock;   // calls per second
            f = f * dt / 1000;          // minimum calls        
            f = 0 | f;
            delay = f+1;
          );
          enhance == 1 ?  (
            msg3 -= thl;
            msg3 /= 127-thl; // 0...1)
            msg3 *= 127; 
            msg3 < 0 ? msg3 = 0;
            mm = msg3;
           ) : enhance == 2 ? (
            msg3 -= thh;
            msg3 /= 127-thh; // 0...1)
            msg3 *= 127; 
            msg3 < 0 ? msg3 = 0;
            mm = msg3;          
          );  
        );
      );
    );
    midisend(offset, msg1, msg2, msg3); // pass through
  );    
  delay ? (
    delay -= 1;
    !delay ? (
      outv !=  outo ? (
        outv = outo;
        midisend(offset, msg1o, outCC, outo); // pass through            
      );  
    );   
  );
  
  
@gfx 640 400

gfx_r=gfx_g=gfx_b=0; gfx_a=1;
gfx_x=gfx_y=0;
gfx_rectto(gfx_w,gfx_h);

q1 = gfx_w / 128;

outv>64 ? (
  gfx_r = 0; gfx_g = 1; gfx_b = 0;
  gfx_x = 0;
  gfx_y = 0;
  gfx_rectto(gfx_w, gfx_h/2);
);  

gfx_r=gfx_g=gfx_b=1;

gfx_r = 0; gfx_g = 0; gfx_b = 1;
gfx_x = thh*q1;
gfx_y = 0;
gfx_lineto(gfx_x, gfx_h);

gfx_x = thl*q1;
gfx_y = 0;
gfx_lineto(gfx_x, gfx_h);

gfx_r = 1; gfx_g = 0; gfx_b = 0;
gfx_y = 0;
gfx_x = 1+in*q1;
gfx_lineto(gfx_x, gfx_h);

enhance ? (
  gfx_r = 1; gfx_g = 1; gfx_b = 1;
  gfx_y = gfx_h-1;
  gfx_x = 0;
  enhance == 1 ? (
    x = thl / 127 * gfx_w;
   ) : ( 
    x = thh / 127 * gfx_w;
  );  
  gfx_lineto(x, gfx_y);
  gfx_lineto(gfx_w, 0);
  gfx_r = 1; gfx_g = 1; gfx_b = 0;
  gfx_y = gfx_h - 1 - (mm / 127 * gfx_h);
  gfx_x = 0;
  gfx_lineto(gfx_w, gfx_y);
)

Last edited by mschnell; 02-21-2018 at 03:06 PM.
mschnell is offline   Reply With Quote
Old 02-21-2018, 08:16 PM   #189
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Works perfect!
pipelineaudio is offline   Reply With Quote
Old 02-21-2018, 10:14 PM   #190
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Great !

OTOH, I imagine that the "output inverted" option you requested is to allow for disengaging the plugin when the pedal is in high position. This would mean that the stretching should be done for Zero to one of the limits, and not from one of the limits to 127, as is selectable now.

Do you think such option would be desirable ?

-Michael
mschnell is offline   Reply With Quote
Old 02-22-2018, 12:17 AM   #191
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Ahh maybe, I might be weird in that I like it engaging from the bottom of the pedal, but maybe people like it the other direction
pipelineaudio is offline   Reply With Quote
Old 02-22-2018, 06:48 AM   #192
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by pipelineaudio View Post
Ahh maybe, I might be weird in that I like it engaging from the bottom of the pedal, but maybe people like it the other direction
I don't have a "Wha" pedal, but to me it seems like it is supposed to pass through the signal when pushed up (where Midi pedals tend to send 127), while the filter is "engaged" when drawn backwards (to Zero).

-Michael
mschnell is offline   Reply With Quote
Old 02-22-2018, 10:33 AM   #193
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

That’s the traditional way, but after trying the Tonestack and axe fx way, and initially really skeptical about it, I was hooked
pipelineaudio is offline   Reply With Quote
Old 02-22-2018, 03:56 PM   #194
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Rather final version supporting five stretching modes.

Have fun !
-Michael

Code:
desc:Pipe Midi Filter
author: Michael Schnell (mschnell@bschnell.de)
version: 3.0
changelog: initial release
donation: United Nations Foundation http://www.unfoundation.org/
about:
  ## Description
   Pipe
  

  ## Limitations
   Pipe
  





// Author: Michael Schnell, based on a work of Time Waster (M. Smith)
// License: LGPL - http://www.gnu.org/licenses/lgpl.html
//



slider1:0<0,15,1{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Channel
slider2:1<0,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}>CC Input
slider3:2<1,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}>CC Output
slider4:10<0,127,1>Threshold
slider5:5<0,64,1>Hysteresis
slider6:0<0,500,10>dwell time (msek)
slider7:0<0,1,1{straight,invert}>Output
slider8:0<0,4,1{straight,stretch low limit to 127,stretch high limit to 127,stretch 0 to low limit,stretch 0 to high limit}>original CC

in_pin:  none
out_pin: none

@init
  out  = 0;
  outo = 0;
  in   = 0;
  delay = 0;

  
@slider
  inChannel   = slider1;
  inCC        = slider2; 
  outCC       = slider3;
  thh         = slider4;
  thl         = thh - slider5;
  dt          = slider6;         
  invert      = slider7;
  enhance     = slider8;
  thl < 1 ? thl = 1;
  invert ? (
    outh      = 0;
    outl      = 127;
   ) : ( 
    outh      = 127;
    outl      = 0;
  );  
  msg1o       = $xB0 + inChannel;
  
@block
  while (midirecv(offset, msg1, msg2, msg3)) (
    status = msg1 & $xF0;      // Extract message type
    channel = msg1 & $x0F;
    channel == inChannel ? (   // Is it on our channel?
      status == $xB0 ? (       // Is it a controller event?
        msg2 == inCC ? (       // Is it the right CC?
          in = msg3;
          in > thh ? (
            out = outh;
           ) :  msg3 < thl ? (
            out = outl; 
          );  
          out != outo ? (
            outo = out;            
            f = srate / samplesblock;   // calls per second
            f = f * dt / 1000;          // minimum calls        
            f = 0 | f;
            delay = f+1;
          );
          enhance == 1 ?  (
            msg3 -= thl;
            msg3 /= 127-thl; // 0...1)
            msg3 *= 127; 
            msg3 < 0 ? msg3 = 0;
            mm = msg3;
           ) : enhance == 2 ? (
            msg3 -= thh;
            msg3 /= 127-thh; // 0...1)
            msg3 *= 127; 
            msg3 < 0 ? msg3 = 0;
            mm = msg3;          
           ) : enhance == 3 ? (
            msg3 /= thl; // 0...1)
            msg3 *= 127; 
            msg3 > 127 ? msg3 = 127;
            mm = msg3;
           ) : enhance == 4 ? (
            msg3 /= thh; // 0...1)
            msg3 *= 127; 
            msg3 > 127 ? msg3 = 127;
            mm = msg3;
          );  
        );
      );
    );
    midisend(offset, msg1, msg2, msg3); // pass through
  );    
  delay ? (
    delay -= 1;
    !delay ? (
      outv !=  outo ? (
        outv = outo;
        midisend(offset, msg1o, outCC, outo); // pass through            
      );  
    );   
  );
  
  
@gfx 640 400

gfx_r=gfx_g=gfx_b=0; gfx_a=1;
gfx_x=gfx_y=0;
gfx_rectto(gfx_w,gfx_h);

q1 = gfx_w / 128;

outv>64 ? (
  gfx_r = 0; gfx_g = 1; gfx_b = 0;
  gfx_x = 0;
  gfx_y = 0;
  gfx_rectto(gfx_w, gfx_h/2);
);  

gfx_r=gfx_g=gfx_b=1;

gfx_r = 0; gfx_g = 0; gfx_b = 1;
gfx_x = thh*q1;
gfx_y = 0;
gfx_lineto(gfx_x, gfx_h);

gfx_x = thl*q1;
gfx_y = 0;
gfx_lineto(gfx_x, gfx_h);

gfx_r = 1; gfx_g = 0; gfx_b = 0;
gfx_y = 0;
gfx_x = 1+in*q1;
gfx_lineto(gfx_x, gfx_h);

enhance ? (
  gfx_r = 1; gfx_g = 1; gfx_b = 1;
  enhance == 1 ? (
    gfx_y = gfx_h-1;
    gfx_x = thl / 127 * gfx_w;
    gfx_lineto(gfx_w, 0);
   ) : enhance == 2 ? (
    gfx_y = gfx_h-1;
    gfx_x = thh / 127 * gfx_w;
    gfx_lineto(gfx_w, 0);
   ) : enhance == 3 ? (
    gfx_y = 0;
    gfx_x = thl / 127 * gfx_w;
    gfx_lineto(0,  gfx_h-1);
   ) : enhance == 4 ? (
    gfx_y = 0;
    gfx_x = thh / 127 * gfx_w;
    gfx_lineto(0, gfx_h-1);
  );  
//  gfx_lineto(x, gfx_y);
  gfx_r = 1; gfx_g = 1; gfx_b = 0;
  gfx_y = gfx_h - 1 - (mm / 127 * gfx_h);
  gfx_x = 0;
  gfx_lineto(gfx_w, gfx_y);
)
mschnell is offline   Reply With Quote
Old 02-22-2018, 07:23 PM   #195
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

Working AWESOME! The only thing I could possibly say at this point, is I'd like to have the dwell time only able to affect turning it off, but its no big deal
pipelineaudio is offline   Reply With Quote
Old 02-22-2018, 11:38 PM   #196
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

No problem. Please test

Do you think we are raedy to rename it and load both plugins up to ReaPack ?

-Michael

Code:
desc:Pipe Midi Filter
author: Michael Schnell (mschnell@bschnell.de)
version: 3.2
changelog: initial release
donation: United Nations Foundation http://www.unfoundation.org/
about:
  ## Description
   Pipe
  

  ## Limitations
   Pipe
  





// Author: Michael Schnell
// License: LGPL - http://www.gnu.org/licenses/lgpl.html
//



slider1:0<0,15,1{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Channel
slider2:1<0,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}>CC Input
slider3:2<1,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}>CC Output
slider4:10<0,127,1>Threshold
slider5:5<0,64,1>Hysteresis
slider6:0<0,500,10>on dwell time (msek)
slider7:0<0,500,10>off dwell time (msek)
slider8:0<0,1,1{straight,invert}>Output
slider9:0<0,4,1{straight,stretch low limit to 127,stretch high limit to 127,stretch 0 to low limit,stretch 0 to high limit}>original CC

in_pin:  none
out_pin: none

@init
  out  = 0;
  outo = 0;
  in   = 0;
  delay = 0;

  
@slider
  inChannel   = slider1;
  inCC        = slider2; 
  outCC       = slider3;
  thh         = slider4;
  thl         = thh - slider5;
  dton        = slider6;         
  dtoff       = slider7;         
  invert      = slider8;
  enhance     = slider9;
  thl < 1 ? thl = 1;
  invert ? (
    outh      = 0;
    outl      = 127;
   ) : ( 
    outh      = 127;
    outl      = 0;
  );  
  msg1o       = $xB0 + inChannel;
  
@block
  while (midirecv(offset, msg1, msg2, msg3)) (
    status = msg1 & $xF0;      // Extract message type
    channel = msg1 & $x0F;
    channel == inChannel ? (   // Is it on our channel?
      status == $xB0 ? (       // Is it a controller event?
        msg2 == inCC ? (       // Is it the right CC?
          in = msg3;
          in > thh ? (
            out = outh;
           ) :  msg3 < thl ? (
            out = outl; 
          );  
          out != outo ? (
            outo = out;            
            f = srate / samplesblock;   // calls per second
            outo > 64 ? (
              f = f * dton / 1000;      // minimum calls        
             ) : ( 
              f = f * dtoff / 1000;     // minimum calls        
            );  
            f = 0 | f;
            delay = f+1;
          );
          enhance == 1 ?  (
            msg3 -= thl;
            msg3 /= 127-thl; // 0...1)
            msg3 *= 127; 
            msg3 < 0 ? msg3 = 0;
            mm = msg3;
           ) : enhance == 2 ? (
            msg3 -= thh;
            msg3 /= 127-thh; // 0...1)
            msg3 *= 127; 
            msg3 < 0 ? msg3 = 0;
            mm = msg3;          
           ) : enhance == 3 ? (
            msg3 /= thl; // 0...1)
            msg3 *= 127; 
            msg3 > 127 ? msg3 = 127;
            mm = msg3;
           ) : enhance == 4 ? (
            msg3 /= thh; // 0...1)
            msg3 *= 127; 
            msg3 > 127 ? msg3 = 127;
            mm = msg3;
          );  
        );
      );
    );
    midisend(offset, msg1, msg2, msg3); // pass through
  );    
  delay ? (
    delay -= 1;
    !delay ? (
      outv !=  outo ? (
        outv = outo;
        midisend(offset, msg1o, outCC, outo); // pass through            
      );  
    );   
  );
  
  
@gfx 640 400

gfx_r=gfx_g=gfx_b=0; gfx_a=1;
gfx_x=gfx_y=0;
gfx_rectto(gfx_w,gfx_h);

q1 = gfx_w / 128;

outv>64 ? (
  gfx_r = 0; gfx_g = 1; gfx_b = 0;
  gfx_x = 0;
  gfx_y = 0;
  gfx_rectto(gfx_w, gfx_h/2);
);  

gfx_r=gfx_g=gfx_b=1;

gfx_r = 0; gfx_g = 0; gfx_b = 1;
gfx_x = thh*q1;
gfx_y = 0;
gfx_lineto(gfx_x, gfx_h);

gfx_x = thl*q1;
gfx_y = 0;
gfx_lineto(gfx_x, gfx_h);

gfx_r = 1; gfx_g = 0; gfx_b = 0;
gfx_y = 0;
gfx_x = 1+in*q1;
gfx_lineto(gfx_x, gfx_h);

enhance ? (
  gfx_r = 1; gfx_g = 1; gfx_b = 1;
  enhance == 1 ? (
    gfx_y = gfx_h-1;
    gfx_x = thl / 127 * gfx_w;
    gfx_lineto(gfx_w, 0);
   ) : enhance == 2 ? (
    gfx_y = gfx_h-1;
    gfx_x = thh / 127 * gfx_w;
    gfx_lineto(gfx_w, 0);
   ) : enhance == 3 ? (
    gfx_y = 0;
    gfx_x = thl / 127 * gfx_w;
    gfx_lineto(0,  gfx_h-1);
   ) : enhance == 4 ? (
    gfx_y = 0;
    gfx_x = thh / 127 * gfx_w;
    gfx_lineto(0, gfx_h-1);
  );  
//  gfx_lineto(x, gfx_y);
  gfx_r = 1; gfx_g = 1; gfx_b = 0;
  gfx_y = gfx_h - 1 - (mm / 127 * gfx_h);
  gfx_x = 0;
  gfx_lineto(gfx_w, gfx_y);
)
mschnell is offline   Reply With Quote
Old 02-22-2018, 11:52 PM   #197
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

That's perfect!

As far as I can tell these plugs are done
pipelineaudio is offline   Reply With Quote
Old 02-23-2018, 12:41 AM   #198
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Great ! Thanks !

I'll upload them to ReaPack during the weekend.

-Michael
mschnell is offline   Reply With Quote
Old 02-23-2018, 01:51 PM   #199
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

I uploaded them after adding a description to and improving the graphics of the "Midi Auto Engage" (renamed from "Pipe Filter").

Should appear there some day soon.

-Michael
mschnell is offline   Reply With Quote
Old 02-25-2018, 08:18 PM   #200
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,051
Default

How crazy, last few days I've actually been playing my guitar and learning songs instead of worrying about programming pedalboards, its just been working fine, I think that's the biggest endorsement
pipelineaudio 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:13 PM.


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