Reaper automation clips (using MIDItoReaControlPath)

Discussion in 'Reaper' started by xbitz, Aug 5, 2016.

  1. xbitz

    xbitz Platinum Record

    Joined:
    Apr 18, 2013
    Messages:
    426
    Likes Received:
    195
    cont. from https://audiosex.pro/threads/transition-to-reaper-and-some-questions.26430/#post-209497

    another way is driving the built-in modulation system of Reaper using clip envelopes(same way as before), it needs item automation>MIDI expression>ReaControlPath conversion (Reaper has two independent MIDI events routing system, one for control path and the standard MIDI path)

    -

    http://forum.cockos.com/showthread.php?p=357691#post357691

    just because we can't put modulation into the clips(LFO in them for ex. can overwrite each other) we have to put another envelope transformer into the track itself and the ReaControlPath just after it

    so the second "CC-that-gets-recorded-as-track-input" should be converted to "control-CC-that-becomes-automation" it can be solved by MIDItoReaControlPath: free VST for extended learn/assgin http://forum.cockos.com/showthread.php?t=43741



    automation have to be recorded just before the final render (or if needs the bounced version, for freezing, adding reverse reverb etc.) to standard automation, there is a just added video about it on



    still thinking what would be the best, but it seems usable for me
     
    Last edited: Aug 5, 2016
    • Like Like x 2
    • Useful Useful x 1
    • List
  2.  
  3. kostovas

    kostovas Member

    Joined:
    Sep 15, 2013
    Messages:
    31
    Likes Received:
    8
    That's brilliant thank you..
     
  4. xbitz

    xbitz Platinum Record

    Joined:
    Apr 18, 2013
    Messages:
    426
    Likes Received:
    195
    created a script to able to achive this
    [​IMG]

    it creates weighted sum of two CC values

    Code:
    desc:MIDI CCs Sum
    
    slider1:0<0,16,1{All channels,Channel 01,Channel 02,Channel 03,Channel 04,Channel 05,Channel 06,Channel 07,Channel 08,Channel 09,Channel 10,Channel 11,Channel 12,Channel 13,Channel 14,Channel 15,Channel 16}>on MIDI
    slider2:0<0,127,1>CC number 1
    slider3:0<0,127,1>CC number 2
    slider4:0<0,1,.05>mod rate 1
    slider5:0<0,1,.05>mod rate 2
    
    // -------------------------------------------
    in_pin:none
    out_pin:none
    
    // ==========================================================
    @init
        CC_MSG = 11;
    
    // ==========================================================
    
    // ==========================================================
    @sample
    
    while (
        midirecv(mpos, msg1, msg23) ? (
    
    // ========================================= For EVERY MIDI msg received
            msg = (msg1 / 16) | 0;
            channel = 1 + msg1 - (msg * 16);   
            CC_num = msg23 & 127;
            CC_value = (msg23 / 256) | 0;
          
            msg == CC_MSG && CC_num == slider2 ? (
              CC_value_1 = CC_value;
            );
            msg == CC_MSG && CC_num == slider3 ? (
              CC_value_2 = CC_value;
            );
        
            out_value = floor((CC_value_1) * slider4 + (CC_value_2) * slider5 ) ;
            out_value = out_value > 127 ? 127 : out_value;
            msg23 = CC_num | (out_value*256);
          
        
            midisend(mpos, msg1, msg23);
    dbg_out +=1;
        );
    );
    
    
    nothing fancy

     
    • Winner Winner x 1
    • Love it! Love it! x 1
    • List
  5. kostovas

    kostovas Member

    Joined:
    Sep 15, 2013
    Messages:
    31
    Likes Received:
    8
    Very interesting, was wondering if it is possible to work with the volume of the item in your script so there wouldn't be a need for the automation plugins on the items. Will definitely test tonight.

    Thank you.
     
  6. ed-enam

    ed-enam Rock Star

    Joined:
    May 21, 2015
    Messages:
    440
    Likes Received:
    411
    This is awesome, thanks.
    Any way to assign two midi cc to one controller?
     
  7. xbitz

    xbitz Platinum Record

    Joined:
    Apr 18, 2013
    Messages:
    426
    Likes Received:
    195
    not sure, but maybe https://www.helgoboss.org/projects/realearn/ can do it

    would be nice, I've found only CC source based solutions like the 4 automations http://forum.cockos.com/showpost.php?p=924663&postcount=10 , although there are many take envelope related scripts http://forum.cockos.com/showthread.php?t=142839 so how knows :)
     
    Last edited: Aug 7, 2016
    • Interesting Interesting x 1
    • List
  8. xbitz

    xbitz Platinum Record

    Joined:
    Apr 18, 2013
    Messages:
    426
    Likes Received:
    195
    added a + slider input, so currently it's a side-chainable modulated automation

    Code:
    desc:MIDI CCs Summary
    
    slider1:0<0,16,1{All channels,Channel 01,Channel 02,Channel 03,Channel 04,Channel 05,Channel 06,Channel 07,Channel 08,Channel 09,Channel 10,Channel 11,Channel 12,Channel 13,Channel 14,Channel 15,Channel 16}>on MIDI
    slider2:0<0,127,1>CC number 1
    slider3:0<0,127,1>CC number 2
    slider4:0<0,1,.05>mod ratio 1
    slider5:0<0,1,.05>mod ratio 2
    slider6:0<0,127,1>modulate this
    slider7:0<0,1,.05>modulate this ratio
    // -------------------------------------------
    in_pin:none
    out_pin:none
    
    // ==========================================================
    @init
        CC_MSG = 11;
        cc_msg_control = 176;
        mod_this_curr = ceil(slider6);
        mod_this_run = 1;
    
    
    // ==========================================================
    
    // ==========================================================
    @slider
    slider6 = ceil(slider6);
    mod_this_curr != slider6 ? (
        mod_this_curr = slider6;
        mod_this_run = 1;
    );
    
    @block
    
    mod_this_run ? (
      out = floor(CC_value_1 * slider4 + CC_value_2 * slider5 + mod_this_curr * slider7  ) ;
      out = out > 127 ? 127 : out;
      midisend(offset, (cc_msg_control + slider1), (slider2 ) | (out * 256));
      mod_this_run = 0;
    );
    
    
    @sample
    
    while (
        midirecv(ms, m1, m23) ? (
    
    // ========================================= For EVERY MIDI msg received
            mpos = ms;
            msg1 = m1;
            msg23 = m23;
     
     
            msg = (msg1 / 16) | 0;
            channel = 1 + msg1 - (msg * 16);
            CC_num = msg23 & 127;
            CC_value = (msg23 / 256) | 0;
     
            msg == CC_MSG && CC_num == slider2 ? (
              CC_value_1 = CC_value;
            );
            msg == CC_MSG && CC_num == slider3 ? (
              CC_value_2 = CC_value;
            );
    
            out_value = floor(CC_value_1 * slider4 + CC_value_2 * slider5 + slider6 * slider7  ) ;
            out_value = out_value > 127 ? 127 : out_value;
            msg23 = slider2 | (out_value*256);
     
    
          midisend(mpos, msg1, msg23);
        );
    
    );
    
    
    


    it's just a concept of proof ... never tried with 200tracks :)
     
    Last edited: Aug 9, 2016
  9. xbitz

    xbitz Platinum Record

    Joined:
    Apr 18, 2013
    Messages:
    426
    Likes Received:
    195
  10. ed-enam

    ed-enam Rock Star

    Joined:
    May 21, 2015
    Messages:
    440
    Likes Received:
    411
  11. xbitz

    xbitz Platinum Record

    Joined:
    Apr 18, 2013
    Messages:
    426
    Likes Received:
    195
Loading...
Similar Threads - Reaper automation clips Forum Date
Reaper, automation clips in the next release Reaper Feb 18, 2017
Reaper automation clips (round 2, realearn) Reaper Aug 14, 2016
Reaper Tip/Trick: "Ableton Live style" area duplication (TEASER) Reaper Saturday at 8:35 PM
REAPER for Linux Reaper Saturday at 5:04 PM
Reaper Tip/Trick: Changing Grid value in MIDI Editor with mousewheel. Reaper Saturday at 2:25 PM
Loading...