02-08-2018, 06:32 AM | #41 |
Human being with feelings
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,638
|
Another version uploaded (0.3.0). Hopefully it should all work OK now.
|
02-08-2018, 08:29 AM | #42 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Quote:
- Midi Leran is from Reaper Control Path (inviable for a midi logger) - Parameter modulation by Midi is (by default) from the FX chain at the position the plugin is located (e.g form the ReaControlMidi positioned direly above). (As said: if the Control Path is activated in the midi device some major confusion can arise.) -Michael |
|
02-08-2018, 09:36 AM | #43 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Here you are... Please test.
-Michael Code:
desc:Pipe Midi Filter author: Michael Schnell (mschnell@bschnell.de) version: 1.0 changelog: initial release donation: United Nations Foundation http://www.unfoundation.org/ about: ## Description Pipe ## Limitations P?ipe // 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 @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; thl < 1 ? thl = 1; invert ? ( outh = 0; outl = 127; ) : ( outh = 127; outl = 0; ) @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; ); ); ); ); midisend(offset, msg1, msg2, msg3); // pass through ); delay ? ( delay -= 1; !delay ? ( outv != outo ? ( outv = outo; midisend(offset, msg1, 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 = 1; 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); |
02-08-2018, 01:25 PM | #44 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Oh man, can’t wait to get to work and try this stuff!
I finally got a full pedal setup and was playing with it last night and was super happy with most everything. Even all the tracks didn’t take up more than 4% cpu. Making it so it didn’t mute unselected tracks only added like 0.5% My big problem now is just the dropout time from switching and the often harsh bang or pop that can result from switching, which is honestly a common issue with guitar stuff. I’m going to try to figure out some crossfading tricks....too bad there’s no action for “fade in sends” |
02-08-2018, 01:33 PM | #45 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
If nothing else helps, it's easy to do a JSFX that cross-fades two inputs.
Let me know what exactly you need, if you want it. -Michael |
02-08-2018, 03:37 PM | #46 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Then it would likely control a mixer plugin? Trying to work out how to do this exactly. Let me look at if receives are available in the API. I remember when xenakious was still involved there were some command parameters which included some fade times assignable to things
|
02-08-2018, 06:02 PM | #47 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
I seems to only be getting a note off message with this, though its coming on CC28, I'm not seeing any other cc values...I may have the wrong path going as well
|
02-08-2018, 06:55 PM | #48 |
Human being with feelings
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,638
|
I've uploaded yet another update to the ReaRack Nonlinearizer FX. It now outputs correctly for both low and high res CCs
|
02-08-2018, 08:31 PM | #49 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Grabbing it now! This is so awesome to see development in real time
|
02-08-2018, 10:41 PM | #50 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Nope.
It would be a self contained thingy that gets a signal (Midi message or pushing a preset on it via LiveConfigs) and according to that selects one audio input (e.g. "pins" 1+2) or the other (e.g. pin 3+4) to be propagated to it's audio output output. When switching over, it would use a crossfade that takes a definable amount of time. -Michael |
02-08-2018, 10:48 PM | #51 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Quote:
- It propagates all midi input (not on the Control path !!!) - it checks the input for CC messages that match the midi channel and CC # set in the "input sliders" - if the CC value of such messages request a reaction (according to your specs and the setting of the other sliders) it outputs Midi CC messages (not to the Control path !!!) on the same Midi channel and the CC # set with the output" slider. - It shows the input CC value together with the threshold and hysteresis settings, and the output state in a graphic. I'll do a testing project for you ... Later... You are right. Not enough testing ! There was a bug. here an update: Code:
desc:Pipe Midi Filter author: Michael Schnell (mschnell@bschnell.de) version: 1.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 @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; 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; ); ); ); ); 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 = 1; 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); Code:
<REAPER_PROJECT 0.1 "5.70/x64" 1518156521 RIPPLE 0 GROUPOVERRIDE 0 0 0 AUTOXFADE 1 ENVATTACH 1 POOLEDENVATTACH 0 MIXERUIFLAGS 11 48 PEAKGAIN 1 FEEDBACK 0 PANLAW 1 PROJOFFS 0 0 MAXPROJLEN 0 600 GRID 3199 8 1 8 1 0 0 0 TIMEMODE 1 5 -1 30 0 VIDEO_CONFIG 0 0 256 PANMODE 3 CURSOR 0 ZOOM 100 0 0 VZOOMEX 6 USE_REC_CFG 0 RECMODE 1 SMPTESYNC 0 30 100 40 1000 300 0 0 1 0 0 LOOP 0 LOOPGRAN 0 4 RECORD_PATH "" "" <RECORD_CFG > <APPLYFX_CFG > RENDER_FILE "" RENDER_PATTERN "" RENDER_FMT 0 2 0 RENDER_1X 0 RENDER_RANGE 1 0 0 18 1000 RENDER_RESAMPLE 3 0 1 RENDER_ADDTOPROJ 0 RENDER_STEMS 0 RENDER_DITHER 0 TIMELOCKMODE 1 TEMPOENVLOCKMODE 1 ITEMMIX 0 DEFPITCHMODE 589824 TAKELANE 1 SAMPLERATE 44100 0 0 <RENDER_CFG > LOCK 1 <METRONOME 6 2 VOL 0.25 0.125 FREQ 800 1600 1 BEATLEN 4 SAMPLES "" "" PATTERN 2863311530 2863311529 > GLOBAL_AUTO -1 TEMPO 120 4 4 PLAYRATE 1 0 0.25 4 SELECTION 0 0 SELECTION2 0 0 MASTERAUTOMODE 0 MASTERTRACKHEIGHT 0 MASTERPEAKCOL 16576 MASTERMUTESOLO 0 MASTERTRACKVIEW 0 0.6667 0.5 0.5 0 0 0 MASTERHWOUT 0 0 1 0 0 0 0 -1 MASTER_NCH 2 2 MASTER_VOLUME 1 0 -1 -1 1 MASTER_FX 1 MASTER_SEL 0 <MASTERPLAYSPEEDENV ACT 0 -1 VIS 0 1 1 LANEHEIGHT 0 0 ARM 0 DEFSHAPE 0 -1 -1 > <TEMPOENVEX ACT 1 -1 VIS 1 0 1 LANEHEIGHT 0 0 ARM 0 DEFSHAPE 1 -1 -1 > <PROJBAY > <TRACK {1E672BA9-AE0E-48B5-93F8-D12EC3F1C621} NAME "" PEAKCOL 16576 BEAT -1 AUTOMODE 0 VOLPAN 1 0 -1 -1 1 MUTESOLO 0 0 0 IPHASE 0 ISBUS 0 0 BUSCOMP 0 0 SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0 FREEMODE 0 SEL 1 REC 0 0 0 0 0 0 0 VU 2 TRACKHEIGHT 0 0 INQ 0 0 0 0.5 100 0 0 100 NCHAN 2 FX 1 TRACKID {1E672BA9-AE0E-48B5-93F8-D12EC3F1C621} PERF 0 MIDIOUT -1 MAINSEND 1 0 <FXCHAIN WNDRECT 24 52 906 663 SHOW 4 LASTSEL 3 DOCKED 0 BYPASS 0 0 0 <JS ix/MIDI_CCRider "" 0.000000 1.000000 64.000000 64.000000 0.000000 0.000000 0.050000 0.000000 6.000000 1.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > FLOATPOS 0 0 0 0 FXID {AF94A8BA-F063-4404-B4D8-B33959A5ACB3} WAK 0 BYPASS 0 0 0 <VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692 ZG1jcu5e7f4AAAAAAAAAAOkAAAABAAAAAAAQAA== /////wAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA4AAAAQzpcVXNlcnNcbXNjaG5lbGxcQXBwRGF0YVxSb2FtaW5nXFJFQVBFUlxEYXRhXEdN LnJlYWJhbmsAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABNYWpvcgANAAAAMTAyMDM0MDUw NjA3AAEAAAAAAAAAAAAAAAAKAAAADQAAAAEAAAAAAAAAAAAAAAAAAAA= AAAQAAAA > FLOATPOS 0 0 0 0 FXID {6E414F4B-8730-45E4-8162-53A33A8D07C7} WAK 0 BYPASS 0 0 0 <JS test/pipe "" 0.000000 1.000000 2.000000 10.000000 5.000000 0.000000 0.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > FLOAT 1066 116 656 649 FXID {BCAFC157-67D1-4109-8982-89E583D7A3EA} WAK 0 BYPASS 0 0 0 <VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692 ZG1jcu5e7f4AAAAAAAAAAOkAAAABAAAAAAAQAA== /////wAAAAAAAAAAAAAAAAMAAAAEAAAAAAAAACUAAAB/AAAAQAAAAAAAAAA4AAAAQzpcVXNlcnNcbXNjaG5lbGxcQXBwRGF0YVxSb2FtaW5nXFJFQVBFUlxEYXRhXEdN LnJlYWJhbmsAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABNYWpvcgANAAAAMTAyMDM0MDUw NjA3AAEAAAAAAAAAAAEAAAAEAAAABQAAAAIAAAAAAAAAAAAAAAAAAAA= AAAQAAAA > FLOATPOS 0 0 0 0 FXID {0720C246-7019-4077-A374-6977599F30E7} WAK 0 > > <EXTENSIONS > > -Michael Last edited by mschnell; 02-08-2018 at 11:21 PM. |
|
02-09-2018, 12:41 AM | #52 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Cool!
|
02-09-2018, 01:39 AM | #53 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
for StuffMIDIMessage(0, msg_type*16 + channel, 10, 0);
If I want to make it program change instead, lets say channel 3 pc1, what do I do for the final data point? PC's are only two bytes right? |
02-09-2018, 05:34 AM | #54 | |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Quote:
But really, I would love a crossfade betweem patches, but since you never know which two patches its going to be between, I'm not sure how it would work. Can you think of anything? |
|
02-09-2018, 05:40 AM | #55 | |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Quote:
The dwell time gave me the full range of the wah back! |
|
02-09-2018, 06:45 AM | #56 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
As said, a Crossfade JSFX would help. But of course you need to do the appropriate routing and make sure that both inputs are fully alive and clean during the switching.
Supposedly you would need to use the crossfade plugin instead of track muting. I suppose I can send you the code later this day. -Michael Last edited by mschnell; 02-09-2018 at 06:52 AM. |
02-09-2018, 06:50 AM | #57 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
A possible improvement came in my mind:
The "not engaged" range is subtracted from the full range sent to the plugin as modulation CC. Would it be better to stretch the value range of the original CC # to use the full range of 0...127 when the input is between the lowest possible "negaged" value to 127 ? -Michael |
02-09-2018, 11:56 AM | #58 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Quote:
Did you happen to find out what this exactly does ? (I seem to remember I always used the default setting.) Anyway: here is the "Midi Crossfade" JSFX. It performs a crossfade between channels (1 and 2) vs (3 and 4) mixing down to (1 and 2). The balance is controlled by a CC. The fading speed is limited according to a slider setting. Hence it will smoothly crossfade when teh CC jumps between 0 and 127. You can watch the fading in the graphics (supposedly self-explaining) -Michael Code:
desc:Midi Crossfade author: Michael Schnell (mschnell@bschnell.de) version: 1.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 Input 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:-0.3<-1,-0.1,0.01>Attenuation per CC step slider4:0.01<0.0005, 0.01, 0.0001>max step(dB) //slider5:0<0,1,0.01>Factor a (Test) //slider6:0<0,1,0.01>Factor b (Test) @init modval = 0; // prelevel = 0; maxCCvalue = 127; r4 = log(10)/20; function fca(x) ( x < limit ? ( x*r3; ) : ( exp((maxCCvalue-x) * r5); ); ); function fcb(x) ( fca(maxCCvalue-x); ); @slider inChannel = slider1; modcc = slider2; dbperstep = slider3; db20perstep = dbperstep/20; p1 = 1 / log(10) / db20perstep; p2 = 1 / maxCCvalue; p3 = p1 + p2; limit = (-p3+0.5) |0; r1 = (maxCCvalue-limit) * dbperstep; r2 = exp(log(10)*r1/20); r3 = r2 / limit; r5 = dbperstep*r4; s1a = exp(log(10)*slider4/20); s1b = exp(log(10)*slider4/20); s2a = 1 / s1a; s2b = 1 / s1b; fa = fca(1); fb = fcb(126); @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 == modcc ? ( // Is it the right CC? modval = msg3; modval ? ( outlevela < fa ? outlevela = fa; ); modval != 127 ? ( outlevelb < fb ? outlevelb = fb; ); modlevela = fca(modval); modlevelb = fcb(modval); ); ); ); midisend(offset, msg1, msg2, msg3); // pass through ); modval ? ( modstepa = exp( log(modlevela / outlevela) / samplesblock); modstepa == 1 ? ( steppinga = 0; ) : ( modstepa > s1a ? ( modstepa = s1a; ) : modstepa < s2a ? ( modstepa = s2a; ); steppinga = 1; ); ) : ( modstepa = s2a; ); modval != 127 ? ( modstepb = exp( log(modlevelb / outlevelb) / samplesblock); modstepb == 1 ? ( steppingb = 0; ) : ( modstepb > s1b ? ( modstepb = s1b; ) : modstepb < s2b ? ( modstepb = s2b; ); steppingb = 1; ); ) : ( modstepb = s2b; ); //slider5 = modlevela; // test //slider5 = modlevelb; // test @sample outlevela *= modstepa; outlevelb *= modstepb; spl0 = spl0 * outlevela + spl2 * outlevelb; spl1 = spl1 * outlevela + spl3 * outlevelb; @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 / maxCCvalue; q2 = gfx_h; gfx_r= 1; gfx_g=0; gfx_b=0; gfx_y = 0; gfx_x = 0; x = 0; while (x<=maxCCvalue) ( a = x*q1; b = gfx_h - fca(x)*q2; gfx_lineto(a, b, 1); x = x+1; ); gfx_r= 0; gfx_g=1; gfx_b=0; gfx_y = 0; gfx_x = 0; x = 0; while (x<=maxCCvalue) ( a = x*q1; b = gfx_h - fcb(x)*q2; gfx_lineto(a, b, 1); x = x+1; ); gfx_r=gfx_g=gfx_b=1; gfx_y = 0; gfx_x = modval*q1; gfx_lineto(gfx_x, gfx_h); gfx_r= 1; gfx_g=0; gfx_b=0; gfx_x = 0; gfx_y = gfx_h-outlevela*q2; gfx_lineto(gfx_w, gfx_y); gfx_r= 0; gfx_g=1; gfx_b=0; gfx_x = 0; gfx_y = gfx_h-outlevelb*q2; gfx_lineto(gfx_w, gfx_y); Last edited by mschnell; 02-09-2018 at 12:27 PM. |
|
02-09-2018, 11:57 AM | #59 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
And here is a testing project for this:
- Michael Code:
<REAPER_PROJECT 0.1 "5.70/x64" 1518201905 RIPPLE 0 GROUPOVERRIDE 0 0 0 AUTOXFADE 1 ENVATTACH 1 POOLEDENVATTACH 0 MIXERUIFLAGS 11 48 PEAKGAIN 1 FEEDBACK 0 PANLAW 1 PROJOFFS 0 0 MAXPROJLEN 0 600 GRID 3199 8 1 8 1 0 0 0 TIMEMODE 1 5 -1 30 0 VIDEO_CONFIG 0 0 256 PANMODE 3 CURSOR 2.5 ZOOM 100 0 0 VZOOMEX 6 USE_REC_CFG 0 RECMODE 1 SMPTESYNC 0 30 100 40 1000 300 0 0 1 0 0 LOOP 0 LOOPGRAN 0 4 RECORD_PATH "" "" <RECORD_CFG > <APPLYFX_CFG > RENDER_FILE "" RENDER_PATTERN "" RENDER_FMT 0 2 0 RENDER_1X 0 RENDER_RANGE 1 0 0 18 1000 RENDER_RESAMPLE 3 0 1 RENDER_ADDTOPROJ 0 RENDER_STEMS 0 RENDER_DITHER 0 TIMELOCKMODE 1 TEMPOENVLOCKMODE 1 ITEMMIX 0 DEFPITCHMODE 589824 TAKELANE 1 SAMPLERATE 44100 0 0 <RENDER_CFG > LOCK 1 <METRONOME 6 2 VOL 0.25 0.125 FREQ 800 1600 1 BEATLEN 4 SAMPLES "" "" PATTERN 2863311530 2863311529 > GLOBAL_AUTO -1 TEMPO 120 4 4 PLAYRATE 1 0 0.25 4 SELECTION 0 0 SELECTION2 0 0 MASTERAUTOMODE 0 MASTERTRACKHEIGHT 0 MASTERPEAKCOL 16576 MASTERMUTESOLO 0 MASTERTRACKVIEW 0 0.6667 0.5 0.5 0 0 0 MASTERHWOUT 0 0 1 0 0 0 0 -1 MASTER_NCH 2 2 MASTER_VOLUME 0.33613221313416 0 -1 -1 1 MASTER_FX 1 MASTER_SEL 1 <MASTERPLAYSPEEDENV ACT 0 -1 VIS 0 1 1 LANEHEIGHT 0 0 ARM 0 DEFSHAPE 0 -1 -1 > <TEMPOENVEX ACT 0 -1 VIS 1 0 1 LANEHEIGHT 0 0 ARM 0 DEFSHAPE 1 -1 -1 > <PROJBAY > <TRACK {DDA46169-045E-4377-82A9-931BAB2AB012} NAME "" PEAKCOL 16576 BEAT -1 AUTOMODE 0 VOLPAN 1 0 -1 -1 1 MUTESOLO 0 0 0 IPHASE 0 ISBUS 0 0 BUSCOMP 0 0 SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0 FREEMODE 0 SEL 0 REC 0 0 0 0 0 0 0 VU 2 TRACKHEIGHT 0 0 INQ 0 0 0 0.5 100 0 0 100 NCHAN 4 FX 1 TRACKID {DDA46169-045E-4377-82A9-931BAB2AB012} PERF 0 MIDIOUT -1 MAINSEND 1 0 <FXCHAIN WNDRECT 11 12 1909 628 SHOW 0 LASTSEL 6 DOCKED 0 BYPASS 0 0 0 <JS synthesis/tonegenerator "" -12.000000 -6.000000 440.000000 0.000000 0.000000 0.000000 0.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > <JS_PINMAP 6AMAABwAAADoAwAABAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAOgDAAAEAAAAAgAAAAEAAAAAAAAAAgAAAAAAAAA= > FLOATPOS 0 0 0 0 FXID {5A5C7239-F886-4B94-BA08-26ADC741F743} WAK 0 BYPASS 0 0 0 <JS synthesis/tonegenerator "" -12.000000 -6.000000 440.000000 3.000000 0.000000 0.000000 0.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > <JS_PINMAP 6AMAABwAAADoAwAABAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAOgDAAAEAAAAAgAAAAQAAAAAAAAACAAAAAAAAAA= > FLOATPOS 0 0 0 0 FXID {2560B801-DA2F-4ACD-A810-26C2D1F8E9AC} WAK 0 BYPASS 0 0 0 <JS ix/MIDI_CCRider "" 0.000000 1.000000 64.000000 64.000000 0.000000 0.000000 0.200000 0.000000 7.000000 1.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > FLOATPOS 56 84 505 317 FXID {F6BB17A2-D481-4B56-BEB2-09FDECDE35A3} WAK 0 BYPASS 0 0 0 <VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692 ZG1jcu5e7f4AAAAABgAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAOkAAAABAAAAAAAQAA== /////wAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA4AAAAQzpcVXNlcnNcbXNjaG5lbGxcQXBwRGF0YVxSb2FtaW5nXFJFQVBFUlxEYXRhXEdN LnJlYWJhbmsAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABNYWpvcgANAAAAMTAyMDM0MDUw NjA3AAEAAAAAAAAAAAAAAAAKAAAADQAAAAEAAAAAAAAAAAAAAAAAAAA= AAAQAAAA > FLOATPOS 1974 158 676 616 FXID {96A28D80-E2E1-408A-B67C-410963C32832} WAK 0 BYPASS 0 0 0 <JS test/pipe "" 0.000000 1.000000 2.000000 77.000000 19.000000 0.000000 0.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > JS_DIMS 639 610 FLOAT 1214 37 655 649 FXID {56A8E54E-C65C-4A34-8C0B-B04F3058159A} WAK 0 BYPASS 1 0 0 <VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692 ZG1jcu5e7f4AAAAABgAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAOkAAAABAAAAAAAQAA== /////wAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAP8/AAAAIAAAACAAAAAAAAA4AAAAQzpcVXNlcnNcbXNjaG5lbGxcQXBwRGF0YVxSb2FtaW5nXFJFQVBFUlxEYXRhXEdN LnJlYWJhbmsAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABNYWpvcgANAAAAMTAyMDM0MDUw NjA3AAEAAAAAAAAAAAAAAAAKAAAADQAAAAEAAAAAAAAAAAAAAAAAAAA= AAAQAAAA > FLOATPOS 2006 190 676 616 FXID {65B3D096-4029-4E6E-A692-534CA33C9B3F} WAK 0 BYPASS 0 0 0 <JS test/crossfade "" 0.000000 2.000000 -0.100000 0.000500 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > JS_DIMS 1663 542 <JS_PINMAP 6AMAACwAAADoAwAABAAAAAQAAAABAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAIAAAAAAAAACwAAADoAwAABAAAAAQAAAABAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAA== > FLOATPOS 131 452 1679 581 FXID {BD3325F3-8A13-4777-8791-653269E6BB07} WAK 0 BYPASS 0 0 0 <VST "VST: ReaEQ (Cockos)" reaeq.dll 0 "" 1919247729 cWVlcu5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAQAAAABAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAIAAAAAAAAAKgAAAABAAAAAAAQAA== IQAAAAQAAAAAAAAAAAAAAAAAAAAAAFlAAAAAAAAA8D8AAAAAAAAAQAEIAAAAAAAAAAAAAAAAwHJAAAAAAAAA8D8AAAAAAAAAQAEIAAAAAAAAAAAAAAAAQI9AAAAAAAAA 8D8AAAAAAAAAQAEBAAAAAAAAAAAAAAAAiLNAAAAAAAAA8D8AAAAAAAAAQAEBAAAAAQAAAAAAAAAAAPA/AAAAAA8CAABhAQAA AAAQAAAA > FLOATPOS 0 0 543 419 FXID {3DB4F0B3-91F3-45C2-A724-3F1BB249A320} WAK 0 > > <EXTENSIONS > > |
02-09-2018, 12:13 PM | #60 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
If you want to have the crossfade to be initiated by LiveConfigs, you can put this plugin above "Midi Crossfade". It will send out a CC #0 with a value defined in the preset that LiveConfig might push upon it.
-Michael Code:
desc:Slider to Midi CC0 author: Michael Schnell (mschnell@bschnell.de) version: 1.0 changelog: initial release donation: United Nations Foundation http://www.unfoundation.org/ about: ## Description Pipe slider1:1<1,16,1>Midi Channel slider2:1<1,128,1>Value @init cc = 0xB0-1; mes2 = 0; // CC # mes3 = 0; mes3old = -1; @slider mes1 = cc + slider1|0; mes3 = slider2|0; @block mes3 != mes3old ? ( midisend(0,mes1,mes2,mes3); mes3old = mes3; ); Last edited by mschnell; 02-09-2018 at 12:28 PM. |
02-09-2018, 01:22 PM | #61 | |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Quote:
|
|
02-09-2018, 01:25 PM | #62 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Oh man, I can’t wait to get to work to try these out!!! Thank you!
Now I just gotta figure out an easier way of loop switching |
02-09-2018, 02:37 PM | #63 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Ok, this seems to be doing what it should, but I'm not sure how exactly I would use this.
Lets say I had three patches to switch between, how exactly would I pick a track to play and a track to switch to and stuff? |
02-09-2018, 02:42 PM | #64 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Quote:
-Michael |
|
02-09-2018, 02:47 PM | #65 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
You said you wanted to do a crossfade, not a net-fade
Of course a "1 from n" selector (instead just 1 from 2) could be done using the same toolbox. For three, you could try two instances in a sequence. But please first try just two as a proof of concept. Quote:
-Michael Last edited by mschnell; 02-09-2018 at 11:41 PM. |
|
02-09-2018, 03:26 PM | #66 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Ok, this definitely kills the glitches. And the dropout time, though maybe an assymetrical fade would be even better for this
If it could crossfade one set of inputs to 2 sets of outputs, you'd also have the ability to do spillover! What I'm trying to do exactly is eliminate the lag time and the glitches when I switch between rows in SWS Live Configs. If I assign tracks in Live Configs, then I get both a long dropout time and often glitches, unless I set that fade knob thing longer, which makes the dropouts even longer, and still can give glitches. So I have say, 8 rows going. Ideally, some of the rows would be the same track with some loops switched in and out to deal with buggy plugins, but barring that I think it can still be done, just not sure if I could somehow run 8 of these and be able to handle all the switching logic |
02-09-2018, 11:46 PM | #67 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
I suppose you mean faster up than down, not different times for the red/green channels ?
I have no idea what this is supposed to mean. Quote:
- fade out - mute track A - unmute track B - fade in Obviously LiveConfigs never has two of the managed track unmuted at the same time. I suppose there are reasons for this. So if you want to do a "Net Fade" between multiple active tracks, you need to deactivate LiveConfigs' track muting feature completely and (having the tracks unmuted all the time) use presets to be pushed to a plugin like "Midi Crossfade" by LiveConfigs or some actions based stuff for dynamically and mothly setting the routing. -Michael Last edited by mschnell; 02-09-2018 at 11:55 PM. |
|
02-10-2018, 12:03 AM | #68 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
If you don't need a crossfade, but a kind of dynamic smooth "demultiplexer", you might try to use my "Midi Volume" JSFX (on ReaPack) instead of the new "Midi Crossfade".
It does the same action but only for a single input channel. If you use same at the end of each of your (8 ?) tracks and feed CCs with values 0 / 127 to it, it will fade the appropriate track in and out glitchlessly at any point in time you desire. With that, the "Net Fade" is just a matter of preset pushing and/or Midi programming and routing. This is likely less complex/confusing then trying to apply multiple crossfades, as it is very much like muting/unmuting tracks. -Michael |
02-10-2018, 02:41 AM | #69 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
now that sounds promising! I will try it. Is there a way to disable the SWS Live Config's muting?
Spillover would be like, if you switched from a channel with a delay on it, the delay would still finish playing even as the new track comes up. I've got it working by running the delay in parallel now, things are looking really good, but I'll see about the JS you just mentioned |
02-10-2018, 02:55 AM | #70 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
how would I automate that send from 127 to 0 though?
|
02-10-2018, 04:55 AM | #71 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
LiveConfiogs Page bottom: "Options" -> uncheck "Mute all but active track" (can be set per page)
For "spillover" you obviously would need to mute the input to the plugin and leave the output connected. Of course this is doable by "midi Volume" as well. -Michael |
02-10-2018, 05:09 AM | #72 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Save two presets for the "Slider To CC0" JSFX one with the "Value" slider set to 0 and one with the value slider set to 127.
Place a "Slider to CC0" instance above any "Midi Volume" JSFX and set the "Midi Volume" JSFX to adhere to CC # 0 . Now you can have any LiveConfigs Line push either of the presets to any of the "Slider To CC0" instances. (Unfortunately LiveConfigs does not show the alias names, so you need to take care to select the correct instance.) - Michael |
02-10-2018, 11:50 AM | #73 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
That only disables the track muting, the send muting is still there
|
02-10-2018, 11:52 AM | #74 | |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
Quote:
|
|
02-10-2018, 12:31 PM | #75 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Quote:
-Michael |
|
02-10-2018, 12:41 PM | #76 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Not really . I did the "Slider To PS" JSFX a long time ago to make LiveConfigs send Midi Program change messages to Kontakt to have same latency-free switch pre-loaded Sample-libraries for a new sound/patch. (I think it's described in my LiveConfigs User Guide.
I just did a minimal edit to the source code to do the "Slider To CC0" JSFX. It's extremely simple: whenever the "value" slider is moved (manually or when pushing a preset to it) it sends out a Midi CC #0 message with channel and value according to the (new) slider setting. -Michael Last edited by mschnell; 02-10-2018 at 02:41 PM. |
02-10-2018, 12:48 PM | #77 |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Do you see that the power of Reaper as a Live playing tool is freed by LiveConfigs plus a set of JSFXes for Midi preprocessing.
I hope that we some day will be able to create a Toolbox that makes setting up such stuff easy for non-programmers. With that, Reaper users would not any longer be forced to take a learning curve with dedicated Live VST player software such Forte or Bidule. -Michael Last edited by mschnell; 02-10-2018 at 02:43 PM. |
02-10-2018, 01:36 PM | #78 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
But then where do the time components for the fade out or in happen? What I think I need is a way to select whatever slider and then tell it "when I send you this message, you will beging a 50msec fade" or something like that
|
02-10-2018, 01:37 PM | #79 |
Mortal
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,047
|
If you chose an audio input track, it automatically builds sends to whatever tracks you specify in the rows of live configs, and then when you activate a row, it unmutes the send from the audio input track to the target track and mutes all the other sends...at least as far as I can tell. I think I could make a screen grab video, if I could figure how to make the i/o window stay open for it
|
02-10-2018, 02:53 PM | #80 | |
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
|
Quote:
It's not given in msec (as it is not just for fading (i.e. 0->127 or 127->0) but for smoothing a volume curve provided by the CC (avoiding zipper noise). Instead, the max step size in dB is given. As with each sample a step is taken and the minimum Volume above 0 (-inf dB, at CC= 0) is at CC=1 with a given dB of attenuation (depending on the curve setting, I don't have the formula in mind) the count of steps until and hence the time till reaching 0dB is defined by this slider. I suggest to try this out. If you need to dynamically change the fade rate, you might try to push a preset onto "Midi Volume". -Michael Last edited by mschnell; 02-10-2018 at 03:25 PM. |
|
Thread Tools | |
Display Modes | |
|
|