├── LICENSE ├── README.md ├── jsPlugins ├── MIDI CC Values to Key Switch ├── MIDI CC to Key Switch ├── MIDI Selected CC Values To Key Switch ├── MIDI UACC To Channel ├── MIDI UACC To Keyswitch ├── MIDI UACC to Program Change └── Multi Channel MIDI Keyswitch ├── luaScripts ├── Custom Text │ └── Insert Custom Text Bartok.lua ├── Dynamics │ ├── MIDI Add Velocity Based Dynamic Markings To Selected Notes.lua │ ├── MIDI Delete CC1 Events Under Selected Notes.lua │ ├── MIDI Dynamics Menu.lua │ ├── MIDI Increase CC1 At Selected Notes By 10 Percent.lua │ ├── MIDI Increase CC1 At Selected Notes By 5.lua │ ├── MIDI Increase Velocity of Selected Notes By 10 Percent.lua │ ├── MIDI Increase Velocity of Selected Notes By 5.lua │ ├── MIDI Insert CC1 Value 107 - ff.lua │ ├── MIDI Insert CC1 Value 11 - ppp.lua │ ├── MIDI Insert CC1 Value 122 - fff.lua │ ├── MIDI Insert CC1 Value 27 - pp.lua │ ├── MIDI Insert CC1 Value 43 - p.lua │ ├── MIDI Insert CC1 Value 59 - mp.lua │ ├── MIDI Insert CC1 Value 75 - mf.lua │ ├── MIDI Insert CC1 Value 91 - f.lua │ ├── MIDI Insert CC1 at Selected Notes.lua │ ├── MIDI Insert Ramp Between Selected CC.lua │ ├── MIDI Normalise CC1 107 - ff.lua │ ├── MIDI Normalise CC1 11 - ppp.lua │ ├── MIDI Normalise CC1 122 - fff.lua │ ├── MIDI Normalise CC1 27 - pp.lua │ ├── MIDI Normalise CC1 43 - p.lua │ ├── MIDI Normalise CC1 59 - mp.lua │ ├── MIDI Normalise CC1 75 - mf.lua │ ├── MIDI Normalise CC1 91 - f.lua │ ├── MIDI Normalise Velocity 107 - ff.lua │ ├── MIDI Normalise Velocity 11 - ppp.lua │ ├── MIDI Normalise Velocity 122 - fff.lua │ ├── MIDI Normalise Velocity 27 - pp.lua │ ├── MIDI Normalise Velocity 43 - p.lua │ ├── MIDI Normalise Velocity 59 - mp.lua │ ├── MIDI Normalise Velocity 75 - mf.lua │ ├── MIDI Normalise Velocity 91 - f.lua │ ├── MIDI Select CC1 Events Under Selected Notes.lua │ ├── MIDI Set Velocity 107 - ff.lua │ ├── MIDI Set Velocity 11 - ppp.lua │ ├── MIDI Set Velocity 122 - fff.lua │ ├── MIDI Set Velocity 27 - pp.lua │ ├── MIDI Set Velocity 43 - p.lua │ ├── MIDI Set Velocity 59 - mp.lua │ ├── MIDI Set Velocity 75 - mf.lua │ └── MIDI Set Velocity 91 - f.lua ├── Intervals │ ├── MIDI Add Interval -1.lua │ ├── MIDI Add Interval -10.lua │ ├── MIDI Add Interval -11.lua │ ├── MIDI Add Interval -12.lua │ ├── MIDI Add Interval -2.lua │ ├── MIDI Add Interval -3.lua │ ├── MIDI Add Interval -4.lua │ ├── MIDI Add Interval -5.lua │ ├── MIDI Add Interval -6.lua │ ├── MIDI Add Interval -7.lua │ ├── MIDI Add Interval -8.lua │ ├── MIDI Add Interval -9.lua │ ├── MIDI Add Interval 1.lua │ ├── MIDI Add Interval 10.lua │ ├── MIDI Add Interval 11.lua │ ├── MIDI Add Interval 12.lua │ ├── MIDI Add Interval 2.lua │ ├── MIDI Add Interval 3.lua │ ├── MIDI Add Interval 4.lua │ ├── MIDI Add Interval 5.lua │ ├── MIDI Add Interval 6.lua │ ├── MIDI Add Interval 7.lua │ ├── MIDI Add Interval 8.lua │ ├── MIDI Add Interval 9.lua │ ├── MIDI Retrigger Trill Maker.lua │ └── MIDI Trill Maker.lua ├── Misc │ ├── MIDI Insert CC At Selected Notes.lua │ ├── MIDI Overlap Selected Notes.lua │ └── MIDI Select CC11 Events Under Selected Notes.lua ├── UACC │ ├── MIDI Delete CC32 Events Under Selected Notes.lua │ ├── MIDI Insert CC32 Value 1 - Long Generic.lua │ ├── MIDI Insert CC32 Value 11 - Flutter - Tremolo.lua │ ├── MIDI Insert CC32 Value 20 - Legato Generic.lua │ ├── MIDI Insert CC32 Value 40 - Short Generic.lua │ ├── MIDI Insert CC32 Value 42 - Staccattissimo.lua │ ├── MIDI Insert CC32 Value 56 - Pizzicato.lua │ ├── MIDI Insert UACC at Selected Notes.lua │ ├── MIDI Select CC32 Events Under Selected Notes.lua │ └── MIDI UACC Menu.lua ├── _wips │ ├── MIDI Delete CC1 Events for First Selected Note.lua │ ├── MIDI Dynamic Markings Menu.lua │ ├── MIDI Increase CC1 First CC of Each Selected Note by 15 Percent.lua │ ├── MIDI Select All CC Events Under Selected Notes.lua │ ├── MIDI Set Note Length to 50 Percent.lua │ ├── MIDI Trill Maker 2.lua │ ├── X-Raym_Insert CC linear ramp events between selected ones if consecutive no input.lua │ ├── js_Notation - Set display length of selected notes to double.lua │ └── test.lua └── daves reaper midi package v1-0.lua └── toolbarIcons ├── Reaper Toolbar Icons.svg ├── toolbar_128th_note.png ├── toolbar_128th_q_note.png ├── toolbar_15ma_notation.png ├── toolbar_15mb_notation.png ├── toolbar_16_temolo_notation.png ├── toolbar_16_tremolo_notation.png ├── toolbar_16th_note.png ├── toolbar_16th_q_note.png ├── toolbar_22ma_notation.png ├── toolbar_22mb_notation.png ├── toolbar_256th_note.png ├── toolbar_256th_q_note.png ├── toolbar_2_temolo_notation.png ├── toolbar_2_tremolo_notation.png ├── toolbar_32_temolo_notation.png ├── toolbar_32_tremolo_notation.png ├── toolbar_32nd_note.png ├── toolbar_32nd_q_note.png ├── toolbar_38_squished_notation.png ├── toolbar_3quarter_flat_notation.png ├── toolbar_3quarter_sharp_notation.png ├── toolbar_4_tremolo_notation.png ├── toolbar_64th_note.png ├── toolbar_64th_q_note.png ├── toolbar_8_temolo_notation.png ├── toolbar_8_tremolo_notation.png ├── toolbar_8ba_notation.png ├── toolbar_8th_note.png ├── toolbar_8th_q_note.png ├── toolbar_8va_notation.png ├── toolbar_accent_notation.png ├── toolbar_alto_clef_notation.png ├── toolbar_arp_down_notation.png ├── toolbar_arp_up_notation.png ├── toolbar_arrow_clef_notation.png ├── toolbar_arrow_stem_notation.png ├── toolbar_atonal_notation.png ├── toolbar_backslash_notation.png ├── toolbar_bar_repeat_notation.png ├── toolbar_barline_notation.png ├── toolbar_bass_clef_notation.png ├── toolbar_bassa_notation.png ├── toolbar_beam2_notation.png ├── toolbar_beam_notation.png ├── toolbar_big_t.png ├── toolbar_binary.png ├── toolbar_brackets_notation.png ├── toolbar_breath_notation.png ├── toolbar_cautionary_accidental_notation.png ├── toolbar_clef_pair_1_notation.png ├── toolbar_clef_pair_2_notation.png ├── toolbar_clefs_notation.png ├── toolbar_coda_notation.png ├── toolbar_colour_voice_notation.png ├── toolbar_cresc_dynamic.png ├── toolbar_da_capo_notation.png ├── toolbar_dashed_barline_notation.png ├── toolbar_dim_dynamic.png ├── toolbar_doit_notation.png ├── toolbar_dot.png ├── toolbar_dotted_barline_notation.png ├── toolbar_double_backslash_notation.png ├── toolbar_double_barline_notation.png ├── toolbar_double_dot.png ├── toolbar_double_flat_notation.png ├── toolbar_double_sharp_notation.png ├── toolbar_double_slash_notation.png ├── toolbar_double_whole_note.png ├── toolbar_downbow_notation.png ├── toolbar_drum_clef_notation.png ├── toolbar_ds_notation.png ├── toolbar_end_repeat_notation.png ├── toolbar_end_start_repeat_notation.png ├── toolbar_f_dynamic.png ├── toolbar_fadeinout_notation.png ├── toolbar_fall_notation.png ├── toolbar_fermata_notation.png ├── toolbar_ff_dynamic.png ├── toolbar_fff_dynamic.png ├── toolbar_ffff_dynamic.png ├── toolbar_final_barline_notation.png ├── toolbar_find_note.png ├── toolbar_flat_notation.png ├── toolbar_fp_dynamic.png ├── toolbar_gliss_down_notation.png ├── toolbar_gliss_up_notation.png ├── toolbar_grace_acciaccatura_notation.png ├── toolbar_grace_appoggiatura_notation.png ├── toolbar_hairpin_cresc.png ├── toolbar_hairpin_dim.png ├── toolbar_hairpin_dynamic.png ├── toolbar_half_note.png ├── toolbar_half_note_notation.png ├── toolbar_half_q_note.png ├── toolbar_hide_notation.png ├── toolbar_hide_selected_note.png ├── toolbar_hide_selected_note_notation.png ├── toolbar_high_voice_notation.png ├── toolbar_key_2_notation.png ├── toolbar_key_3_notation.png ├── toolbar_key_notation.png ├── toolbar_left_brace_notation.png ├── toolbar_long_fermata_notation.png ├── toolbar_loop.png ├── toolbar_low_voice_notation.png ├── toolbar_lowermordent_notation.png ├── toolbar_lyric_text.png ├── toolbar_m_dynamic.png ├── toolbar_marcato_notation.png ├── toolbar_media_edges.png ├── toolbar_mf_dynamic.png ├── toolbar_misc_note.png ├── toolbar_mp_dynamic.png ├── toolbar_mute_notation.png ├── toolbar_n_dynamic.png ├── toolbar_named_notes.png ├── toolbar_natural_flat_notation.png ├── toolbar_natural_notation.png ├── toolbar_natural_sharp_notation.png ├── toolbar_notehead_1.png ├── toolbar_notehead_2.png ├── toolbar_notehead_3.png ├── toolbar_notehead_4.png ├── toolbar_notehead_5.png ├── toolbar_notehead_6.png ├── toolbar_odd_accidentals_notation.png ├── toolbar_open_notation.png ├── toolbar_overlap_notation.png ├── toolbar_p_dynamic.png ├── toolbar_pedal_notation.png ├── toolbar_pedal_up_notation.png ├── toolbar_portato_notation.png ├── toolbar_pp_dynamic.png ├── toolbar_ppp_dynamic.png ├── toolbar_pppp_dynamic.png ├── toolbar_quarter_flat_notation.png ├── toolbar_quarter_note.png ├── toolbar_quarter_q_note.png ├── toolbar_quarter_rest_notation.png ├── toolbar_quarter_sharp_notation.png ├── toolbar_reset_default.png ├── toolbar_reverse_turn_notation.png ├── toolbar_ricochetx3_notation.png ├── toolbar_right_brace_notation.png ├── toolbar_roll_notation.png ├── toolbar_search.png ├── toolbar_segno_notation.png ├── toolbar_segno_variation_notation.png ├── toolbar_sffz_dynamic.png ├── toolbar_sfp_dynamic.png ├── toolbar_sfz_dynamic.png ├── toolbar_sharp_notation.png ├── toolbar_short_fermata_notation.png ├── toolbar_slash_notation.png ├── toolbar_slide_down_notation.png ├── toolbar_slide_up_notation.png ├── toolbar_slur_notation.png ├── toolbar_sost_notation.png ├── toolbar_spacing_notation.png ├── toolbar_staccatissimo_notation.png ├── toolbar_staccato_articulation.png ├── toolbar_staff_notation.png ├── toolbar_start_repeat_notation.png ├── toolbar_stem_down_notation.png ├── toolbar_stem_up_notation.png ├── toolbar_tab_mode.png ├── toolbar_teeth.png ├── toolbar_tempo_notation.png ├── toolbar_tenuto_notation.png ├── toolbar_tie_note.png ├── toolbar_time_notation.png ├── toolbar_transpose_2_notation.png ├── toolbar_transpose_3_notation.png ├── toolbar_transpose_notation.png ├── toolbar_treble_clef_notation.png ├── toolbar_tremolo_4_notation.png ├── toolbar_trill2_notation.png ├── toolbar_trill_notation.png ├── toolbar_triple_dot.png ├── toolbar_triplet_2_notation.png ├── toolbar_triplet_3_notation.png ├── toolbar_triplet_double_notation.png ├── toolbar_triplet_half_notation.png ├── toolbar_triplet_notation.png ├── toolbar_turn_notation.png ├── toolbar_uacc.png ├── toolbar_upbow_notation.png ├── toolbar_uppermordent_notation.png ├── toolbar_varied_notation.png ├── toolbar_voice_2_notation.png ├── toolbar_voice_notation.png ├── toolbar_whole_note.png ├── toolbar_whole_q_note.png └── toolbar_x_notation.png /README.md: -------------------------------------------------------------------------------- 1 | # Dave's Reaper Stuff 2 | 3 | This is the place where I will upload various additions I make for Reaper for my own personal use that I wish to share with the community. 4 | 5 | You're free to download and use these files in any way you wish. If you find any bugs please let me know. 6 | 7 | Where I have incorporated GPL code of other developers I have provided appropriate credit in the source code comments. If you see some of your code that I've used and haven't credit please let me know so I can correct that. 8 | 9 | I'm active on the Reaper forum under the name Reddiesel41264 - http://forum.cockos.com/member.php?u=41390 10 | 11 | # Installation 12 | Scripts, plugins and icons should be placed in the appropriate sub-folder in your Reaper resource folder. You can find out where the resource folder is by going to the Options menu in Reaper and selecting Show REAPER resource path in explorer/finder... 13 | 14 | Lua scripts should be placed in the Scripts folder. 15 | 16 | JSFX Plugins should be placed in the Effects folder. 17 | 18 | Toolbar icons should be placed in the Data\toolbar_icons folder. 19 | 20 | For the Lua scripts it is important that the folder structure I have used in the repository is maintained when you install them on your system. This is because many of the scripts rely on one or more library scripts and require a specific relative path in order to find these library scripts. 21 | 22 | # Tutorials 23 | Video tutorials will be made available occassionally. You'll be able to find them at my YouTube channels https://www.youtube.com/channel/UCZmvbtnwZmmI7lHFa4BQiRA - Old videos 24 | 25 | https://www.youtube.com/channel/UCvr9isxq3sSbj-dcKPKyJZA - New videos (2017+) 26 | -------------------------------------------------------------------------------- /jsPlugins/MIDI CC Values to Key Switch: -------------------------------------------------------------------------------- 1 | desc:MIDI CC Values To Key Switch 2 | 3 | in_pin:none 4 | out_pin:none 5 | 6 | slider1:32<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}>Controller 7 | 8 | slider2:0<0,15,1{All,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Output Channel 9 | 10 | //******************************************************** 11 | 12 | @init 13 | 14 | @slider 15 | ccNum = slider1; 16 | outChan = slider2-1; 17 | @block 18 | 19 | while (midirecv(offset, msg1, msg2, msg3)) 20 | ( 21 | // Extract message type 22 | status = msg1 & $xF0; 23 | 24 | // Is it a controller event? 25 | status == $xB0 ? 26 | ( 27 | outKs = -1; //Set default 28 | 29 | // Is it the right CC? 30 | msg2 == ccNum ? 31 | ( 32 | outKs = msg3; //The CC value will be output as a Ks 33 | ); 34 | ); 35 | 36 | // Pass thru 37 | midisend(offset, msg1, msg2, msg3); 38 | ); 39 | 40 | //If the outKs variable was populated then output the KS. 41 | outKs != -1 ? 42 | ( 43 | //If outChan is -1 then output KS to all channels, otherwise just to selected channel 44 | outChan == -1 ? 45 | ( 46 | i = 0; 47 | loop(16, 48 | midisend(offset, $x90+i, outKs, 127); //Note on 49 | midisend(offset, $x80+i, outKs); //Note off 50 | i += 1; 51 | ) 52 | ) : ( 53 | midisend(offset, $x90+outChan, outKs, 127); 54 | midisend(offset, $x80+outChan, outKs); 55 | ); 56 | outKs = -1; //Reset output KS 57 | ); 58 | -------------------------------------------------------------------------------- /jsPlugins/MIDI CC to Key Switch: -------------------------------------------------------------------------------- 1 | desc:MIDI CC Values To Key Switch 2 | 3 | in_pin:none 4 | out_pin:none 5 | 6 | slider1:32<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}>Controller 7 | 8 | slider2:0<0,15,1{All,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Output Channel 9 | 10 | //******************************************************** 11 | 12 | @init 13 | 14 | @slider 15 | ccNum = slider1; 16 | outChan = slider2-1; 17 | @block 18 | 19 | while (midirecv(offset, msg1, msg2, msg3)) 20 | ( 21 | // Extract message type 22 | status = msg1 & $xF0; 23 | 24 | // Is it a controller event? 25 | status == $xB0 ? 26 | ( 27 | outKs = -1; //Set default 28 | 29 | // Is it the right CC? 30 | msg2 == ccNum ? 31 | ( 32 | outKs = msg3; //The CC value will be output as a Ks 33 | ); 34 | ); 35 | 36 | // Pass thru 37 | midisend(offset, msg1, msg2, msg3); 38 | ); 39 | 40 | //If the outKs variable was populated then output the KS. 41 | outKs != -1 ? 42 | ( 43 | //If outChan is -1 then output KS to all channels, otherwise just to selected channel 44 | outChan == -1 ? 45 | ( 46 | i = 0; 47 | loop(16, 48 | midisend(offset, $x90+i, outKs, 127); //Note on 49 | midisend(offset, $x80+i, outKs); //Note off 50 | i += 1; 51 | ) 52 | ) : ( 53 | midisend(offset, $x90+outChan, outKs, 127); 54 | midisend(offset, $x80+outChan, outKs); 55 | ); 56 | outKs = -1; //Reset output KS 57 | ); 58 | -------------------------------------------------------------------------------- /jsPlugins/MIDI Selected CC Values To Key Switch: -------------------------------------------------------------------------------- 1 | desc:MIDI Selected CC Values To Key Switch 2 | 3 | in_pin:none 4 | out_pin:none 5 | 6 | slider1:32<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}>Controller 7 | 8 | slider2:0<0,15,1{All,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Output Channel 9 | 10 | slider3:0<0,127,1>CC Value 1 11 | 12 | slider4:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 1 13 | 14 | slider5:0<0,127,1>CC Value 2 15 | 16 | slider6:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 2 17 | 18 | slider7:0<0,127,1>CC Value 3 19 | 20 | slider8:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 3 21 | 22 | slider9:0<0,127,1>CC Value 4 23 | 24 | slider10:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 4 25 | 26 | slider11:0<0,127,1>CC Value 5 27 | 28 | slider12:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 5 29 | 30 | slider13:0<0,127,1>CC Value 6 31 | 32 | slider14:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 6 33 | 34 | slider15:0<0,127,1>CC Value 7 35 | 36 | slider16:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 7 37 | 38 | slider17:0<0,127,1>CC Value 8 39 | 40 | slider18:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 8 41 | 42 | slider19:0<0,127,1>CC Value 9 43 | 44 | slider20:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 9 45 | 46 | slider21:0<0,127,1>CC Value 10 47 | 48 | slider22:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 10 49 | 50 | slider23:0<0,127,1>CC Value 11 51 | 52 | slider24:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 11 53 | 54 | slider25:0<0,127,1>CC Value 12 55 | 56 | slider26:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 12 57 | 58 | slider27:0<0,127,1>CC Value 13 59 | 60 | slider28:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 13 61 | 62 | slider29:0<0,127,1>CC Value 14 63 | 64 | slider30:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 14 65 | 66 | slider31:0<0,127,1>CC Value 15 67 | 68 | slider32:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 15 69 | 70 | slider33:0<0,127,1>CC Value 16 71 | 72 | slider34:0<0,127,1{ 00: C-1, 01: C#-1, 02: D-1, 03: D#-1, 04: E-1, 05: F-1, 06: F#-1, 07: G-1, 08: G#-1, 09: A-1, 10: A#-1, 11: B-1, 12: C0, 13: C#0, 14: D0, 15: D#0, 16: E0, 17: F0, 18: F#0, 19: G0, 20: G#0, 21: A0, 22: A#0, 23: B0, 24: C1, 25: C#1, 26: D1, 27: D#1, 28: E1, 29: F1, 30: F#1, 31: G1, 32: G#1, 33: A1, 34: A#1, 35: B1, 36: C2, 37: C#2, 38: D2, 39: D#2, 40: E2, 41: F2, 42: F#2, 43: G2, 44: G#2, 45: A2, 46: A#2, 47: B2, 48: C3, 49: C#3, 50: D3, 51: D#3, 52: E3, 53: F3, 54: F#3, 55: G3, 56: G#3, 57: A3, 58: A#3, 59: B3, 60: C4, 61: C#4, 62: D4, 63: D#4, 64: E4, 65: F4, 66: F#4, 67: G4, 68: G#4, 69: A4, 70: A#4, 71: B4, 72: C5, 73: C#5, 74: D5, 76: D#5, 76: E5, 77: F5, 78: F#5, 79: G5, 80: G#5, 81: A5, 82: A#5, 83: B5, 84: C6, 85: C#6, 86: D6, 87: D#6, 88: E6, 89: F6, 90: F#6, 91: G6, 92: G#6, 93: A6, 94: A#6, 95: B6, 96: C7, 97: C#7, 98: D7, 99: D#7, 100: E7, 101: F7, 102: F#7, 103: G7, 104: G#7, 105: A7, 106: A#7, 107: B7, 108: C8, 109: C#8, 110: D8, 111: D#8, 112: E8, 113: F8, 114: F#8, 115: G8, 116: G#8, 117: A8, 118: A#8, 119: B8, 120: C9, 121: C#9, 122: D9, 123: D#9, 124: E9, 125: F9, 126: F#9, 127: G10, NOT USED}>Key Switch 16 73 | 74 | //******************************************************** 75 | 76 | @init 77 | NUM_KS = 16; //The number of CC and Ks sliders 78 | outKs = -1; //Set default 79 | @slider 80 | ccNum = slider1; 81 | outChan = slider2-1; 82 | 83 | ccVal = 50; //Start at mem position 50 84 | ccVal[0] = slider3; 85 | ccVal[1] = slider5; 86 | ccVal[2] = slider7; 87 | ccVal[3] = slider9; 88 | ccVal[4] = slider11; 89 | ccVal[5] = slider13; 90 | ccVal[6] = slider15; 91 | ccVal[7] = slider17; 92 | ccVal[8] = slider19; 93 | ccVal[9] = slider21; 94 | ccVal[10] = slider23; 95 | ccVal[11] = slider25; 96 | ccVal[12] = slider27; 97 | ccVal[13] = slider29; 98 | ccVal[14] = slider31; 99 | ccVal[15] = slider33; 100 | 101 | ksNum = 100; //Start at mem position 100 102 | ksNum[0] = slider4; 103 | ksNum[1] = slider6; 104 | ksNum[2] = slider8; 105 | ksNum[3] = slider10; 106 | ksNum[4] = slider12; 107 | ksNum[5] = slider14; 108 | ksNum[6] = slider16; 109 | ksNum[7] = slider18; 110 | ksNum[8] = slider20; 111 | ksNum[9] = slider22; 112 | ksNum[10] = slider24; 113 | ksNum[11] = slider26; 114 | ksNum[12] = slider28; 115 | ksNum[13] = slider30; 116 | ksNum[14] = slider32; 117 | ksNum[15] = slider34; 118 | 119 | @block 120 | 121 | while (midirecv(offset, msg1, msg2, msg3)) 122 | ( 123 | // Extract message type 124 | status = msg1 & $xF0; 125 | 126 | // Is it a controller event? 127 | status == $xB0 ? 128 | ( 129 | // Is it the right CC? 130 | msg2 == ccNum ? 131 | ( 132 | //Each ccVal slider 133 | i = 0; 134 | loop(NUM_KS-1, 135 | ccVal[i] == msg3 ? 136 | ( 137 | outKs = ksNum[i]; //Store the ks to be output 138 | i = NUM_KS //Exit the loop 139 | ); 140 | i += 1; 141 | ); 142 | ); 143 | 144 | ); 145 | 146 | // Pass thru 147 | midisend(offset, msg1, msg2, msg3); 148 | ); 149 | 150 | //If the outKs variable was populated then output the KS. 151 | outKs != -1 ? 152 | ( 153 | //If outChan is -1 then output KS to all channels, otherwise just to selected channel 154 | outChan == -1 ? 155 | ( 156 | i = 0; 157 | loop(16, 158 | midisend(offset, $x90+i, outKs, 127); //Note on 159 | midisend(offset, $x80+i, outKs); //Note off 160 | i += 1; 161 | ) 162 | ) : ( 163 | midisend(offset, $x90+outChan, outKs, 127); 164 | midisend(offset, $x80+outChan, outKs); 165 | ); 166 | outKs = -1; //Reset output KS 167 | ); 168 | -------------------------------------------------------------------------------- /jsPlugins/MIDI UACC to Program Change: -------------------------------------------------------------------------------- 1 | /* 2 | MIDI UACC to Program Change v.1.0.0 3 | 4 | JS plugin by David Healey 5 | 6 | v1.0.0: - 29/06/17 - Initial release 7 | 8 | */ 9 | 10 | desc:MIDI UACC To Program Change 11 | 12 | in_pin:none 13 | out_pin:none 14 | 15 | slider1:0<0,15,1{All,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Output Channel 16 | 17 | //******************************************************** 18 | 19 | @init 20 | 21 | @slider 22 | ccNum = 32; 23 | outChan = slider1-1; 24 | @block 25 | 26 | while (midirecv(offset, msg1, msg2, msg3)) 27 | ( 28 | progNum = 1; 29 | 30 | // Extract message type 31 | status = msg1 & $xF0; 32 | 33 | // Is it a controller event? 34 | status == $xB0 ? 35 | ( 36 | // Is it the right CC? 37 | msg2 == ccNum ? 38 | ( 39 | progNum = msg3; //The CC value will be used as the program number 40 | ); 41 | ); 42 | 43 | // Pass thru 44 | midisend(offset, msg1, msg2, msg3); 45 | ); 46 | 47 | //If the progNum variable was populated then output the PC. 48 | progNum != -1 ? 49 | ( 50 | //If outChan is -1 then output PC to all channels, otherwise just to selected channel 51 | outChan == -1 ? 52 | ( 53 | i = 0; 54 | loop(16, 55 | midisend(offset, 192+i, progNum, 127); //Note on 56 | i += 1; 57 | ) 58 | ) : ( 59 | midisend(offset, 192+outChan, progNum, 127); 60 | ); 61 | progNum = -1; //Reset output PC 62 | ); -------------------------------------------------------------------------------- /jsPlugins/Multi Channel MIDI Keyswitch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/jsPlugins/Multi Channel MIDI Keyswitch -------------------------------------------------------------------------------- /luaScripts/Custom Text/Insert Custom Text Bartok.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local text = 'Bartok'; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.insertCustomTextAtSelectedNotes(text); 8 | reaper.Undo_EndBlock("MIDI Accent - Insert Custom Text " .. text,-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Add Velocity Based Dynamic Markings To Selected Notes.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Add Velocity Based Dynamic Markings To Selected Notes 3 | * Version: 20/06/2017 4 | * Author: David Healey. 5 | --]] 6 | 7 | --USER SETTINGS 8 | DYNAMICS = {16, 32, 48, 64, 80, 96, 112, 127} --ppp to fff 9 | MARKINGS = {"ppp", "pp", "p", "mp", "mf", "f", "ff", "fff"} --ppp to fff 10 | --------------------------- 11 | 12 | for i = 0, reaper.CountMediaItems(0), 1 do --Each media item 13 | 14 | local item = reaper.GetMediaItem(0, i) --Get item 15 | 16 | if reaper.ValidatePtr2(0, item, "MediaItem*") then --Double check that we got a valid item 17 | 18 | local take = reaper.GetActiveTake(item) --Get item's active take 19 | 20 | if reaper.ValidatePtr2(0, take, "MediaItem_Take*") and reaper.TakeIsMIDI(take) then --Active take contains MIDI data 21 | 22 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) --Count events 23 | 24 | for n = 0, notes, 1 do --Each note event 25 | 26 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(take, n) --Get note data 27 | 28 | --Find which dynamic range the velocity value fits to determine which dynamic marking to use 29 | if selected == true then 30 | reaper.MIDIEditor_OnCommand(e, 42173) --Remove any existing note text 31 | 32 | for i in pairs(DYNAMICS) do 33 | if vel <= DYNAMICS[i] then 34 | reaper.MIDI_InsertTextSysexEvt(take, true, false, ppq, 0xF, "TRAC dynamic " .. MARKINGS[i] .. " ypos 2.000") 35 | break; 36 | end 37 | end 38 | end 39 | 40 | end 41 | reaper.MIDI_Sort(take) 42 | end 43 | end 44 | end 45 | 46 | reaper.Undo_EndBlock("MIDI Add Velocity Based Dynamics To Selected Notes",-1); 47 | reaper.UpdateArrange(); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Delete CC1 Events Under Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.deleteCCUnderSelectedNotes(ccNum) 8 | reaper.Undo_EndBlock("MIDI Delete CC1 Events Under Selected Notes",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Dynamics Menu.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: Dynamics Menu 3 | * Written: 27/06/2017 4 | * Last Updated: 27/06/2017 5 | * Author: David Healey 6 | --]] 7 | 8 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 9 | require('daves reaper midi package v1-0') 10 | 11 | gfx.init("Dynamics", 1, 1) 12 | 13 | gfx.x = gfx.mouse_x 14 | gfx.y = gfx.mouse_y 15 | 16 | local commands = {41120, 41121, 41122, 41123, 41125, 41126, 41127, 41128, 41118, 41119} --ppp - fff - cresc, dim 17 | local dynamics = {11, 27, 43, 59, 75, 91, 107, 122} --Velocity or CC values 18 | 19 | input = gfx.showmenu(">Velocity|>Insert|ppp|pp|p|mp|mf|f|ff|Normalise|ppp|pp|p|mp|mf|f|ff|CC1|>Insert|ppp|pp|p|mp|mf|f|ff|Normalise|ppp|pp|p|mp|mf|f|ff|<Markings|ppp|pp|p|mp|mf|f|ff|fff||Cresc| 0 and input < 9 then --Velocity >> Insert 39 | drmp.setVelocityForSelectedNotes(dynamics[input]) 40 | end 41 | 42 | if input > 8 and input < 17 then --Velocity >> Normalise 43 | drmp.normaliseSelectedVelocities(dynamics[input-8]) 44 | end 45 | 46 | if input == 17 then --Velocity >> Accent 47 | drmp.increaseVelocityOfSelectedNotesByAmount(5) 48 | end 49 | 50 | if input > 17 and input < 26 then --CC1 >> Insert 51 | drmp.deleteCCUnderSelectedNotes(1) 52 | drmp.insertCCAtSelectedNotes(1, dynamics[input-17]) 53 | end 54 | 55 | if input > 25 and input < 34 then --CC1 >> Normalise 56 | drmp.normaliseSelectedCCs(1, dynamics[input-25]) 57 | end 58 | 59 | if input == 34 then --CC1 >> Accent 60 | drmp.increaseCCAtSelectedNotesByAmount(1, 5) 61 | end 62 | 63 | if input == 35 then --CC1 >> Select CC 64 | drmp.selectCCEventsUnderSelectedNotes(1) 65 | end 66 | 67 | if input == 36 then --CC1 >> Delete CC 68 | drmp.deleteCCUnderSelectedNotes(1) 69 | end 70 | 71 | if input > 36 then --Dynamic marking commands 72 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), 40440) --Move cursor to start of events 73 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), commands[input-36]) 74 | end 75 | end 76 | end 77 | reaper.MIDI_Sort(t) 78 | end 79 | reaper.Undo_EndBlock("MIDI Dynamics Menu Action",-1) 80 | end 81 | reaper.UpdateArrange(); 82 | end 83 | 84 | gfx.quit() -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Increase CC1 At Selected Notes By 10 Percent.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1; 5 | local percentage = 10; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.increaseCCAtSelectedNotesByPercentage(ccNum, percentage) 9 | reaper.Undo_EndBlock("MIDI Increase CC1 At Selected Notes By 10%",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Increase CC1 At Selected Notes By 5.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1; 5 | local amount = 10; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.increaseCCAtSelectedNotesByAmount(ccNum, amount) 9 | reaper.Undo_EndBlock("MIDI Accent - Increase CC1 At Selected Notes 5",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Increase Velocity of Selected Notes By 10 Percent.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local percentage = 4; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.increaseVelocityOfSelectedNotesByPercentage(percentage) 8 | reaper.Undo_EndBlock("MIDI Increase Velocity Of Selected Notes By 10%",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Increase Velocity of Selected Notes By 5.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local amount = 5; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.increaseVelocityOfSelectedNotesByAmount(amount) 8 | reaper.Undo_EndBlock("MIDI Accent - Increase Velocity Of Selected Notes By 5",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 107 - ff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | local CC_VALUE = 107; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 107",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 11 - ppp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | local CC_VALUE = 11; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 11",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 122 - fff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local ccValue = 122 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(ccNum, ccValue) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 122",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 27 - pp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | local CC_VALUE = 27; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 27",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 43 - p.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | local CC_VALUE = 43; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 43",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 59 - mp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | local CC_VALUE = 59; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 59",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 75 - mf.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | local CC_VALUE = 75; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 75",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 Value 91 - f.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1; 5 | local ccValue = 91; 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.insertCCAtSelectedNotes(ccNum, ccValue) 9 | reaper.Undo_EndBlock("MIDI Insert CC1 Value 91",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert CC1 at Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local retval, input = reaper.GetUserInputs("Insert CC1", 1, "CC1 Value", ""); 5 | 6 | if (retval == false) then return end; 7 | 8 | if type(tonumber(input)) == "number" then --Validate input 9 | reaper.Undo_BeginBlock(); 10 | drmp.insertCCAtSelectedNotes(1, input) 11 | reaper.Undo_EndBlock("MIDI Insert CC1 At Selected Notes",-1); 12 | end 13 | -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Insert Ramp Between Selected CC.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Insert Ramp Between Selected CC 3 | * Description: Interpolate multiple CC events by creating new ones. Works on a single CC lane. Built on X-Raym's original script. 4 | * Author of this version: David Healey 5 | * Original Author: X-Raym - http://extremraym.com 6 | * Licence: GPL v3 7 | --]] 8 | 9 | --[[ 10 | * Changelog: 11 | * v1.2.1 (27/06/2017) - David Healey's branch. 12 | * v1.2 (2017-05-29) 13 | # Works with multiple CCS. 14 | * v1.1.1 (2016-12-10) 15 | # Text 16 | * v1.1 (2016-12-10) 17 | # Bug fix 18 | * v1.0 (2016-01-04) 19 | + Initial Release 20 | --]] 21 | 22 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 23 | require('daves reaper midi package v1-0') 24 | 25 | local ccNum = 1 26 | local interval = 16 27 | 28 | function GetCC(take, cc) 29 | return cc.selected, cc.muted, cc.ppqpos, cc.chanmsg, cc.chan, cc.msg2, cc.msg3 30 | end 31 | 32 | function main() 33 | 34 | takes = drmp.getActiveMIDITakes() --Get all active MIDI takes 35 | 36 | if takes ~= false then 37 | for i, t in pairs(takes) do 38 | 39 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) 40 | 41 | if ccs == 0 then return end 42 | 43 | -- Store CC by types 44 | midi_cc = {} 45 | for j = 0, ccs - 1 do 46 | cc = {} 47 | retval, cc.selected, cc.muted, cc.ppqpos, cc.chanmsg, cc.chan, cc.msg2, cc.msg3 = reaper.MIDI_GetCC(t, j) 48 | if not midi_cc[cc.msg2] then midi_cc[cc.msg2] = {} end 49 | table.insert(midi_cc[cc.msg2], cc) 50 | end 51 | 52 | -- Look for consecutive CC 53 | cc_events = {} 54 | cc_events_len = 0 55 | 56 | for key, val in pairs(midi_cc) do 57 | 58 | -- GET SELECTED NOTES (from 0 index) 59 | for k = 1, #val - 1 do 60 | 61 | a_selected, a_muted, a_ppqpos, a_chanmsg, a_chan, a_msg2, a_msg3 = GetCC(t, val[k]) 62 | b_selected, b_muted, b_ppqpos, b_chanmsg, b_chan, b_msg2, b_msg3 = GetCC(t, val[k+1]) 63 | 64 | if a_selected == true and b_selected == true then 65 | 66 | -- INSERT NEW CCs 67 | time_interval = (b_ppqpos - a_ppqpos) / interval 68 | 69 | for z = 1, interval - 1 do 70 | 71 | cc_events_len = cc_events_len + 1 72 | cc_events[cc_events_len] = {} 73 | 74 | c_ppqpos = a_ppqpos + time_interval * z 75 | c_msg3 = math.floor( ( (b_msg3 - a_msg3) / interval * z + a_msg3 )+ 0.5 ) 76 | 77 | cc_events[cc_events_len].ppqpos = c_ppqpos 78 | cc_events[cc_events_len].chanmsg = a_chanmsg 79 | cc_events[cc_events_len].chan = a_chan 80 | cc_events[cc_events_len].msg3 = c_msg3 81 | end 82 | end 83 | end 84 | 85 | -- Insert Events 86 | for x, cc in ipairs(cc_events) do 87 | reaper.MIDI_InsertCC(t, false, false, cc.ppqpos, cc.chanmsg, cc.chan, ccNum, cc.msg3) 88 | end 89 | end 90 | reaper.MIDI_Sort(t) 91 | end 92 | reaper.UpdateArrange(); 93 | end 94 | end 95 | 96 | reaper.Undo_BeginBlock() -- Begining of the undo block. Leave it at the top of your main function. 97 | main() -- Execute your main function 98 | reaper.Undo_EndBlock("Insert CC linear ramp events between selected ones if consecutive", -1) -- End of the undo block. Leave it at the bottom of your main function. -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 107 - ff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 107 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 107 ff",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 11 - ppp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 11 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 11 ppp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 122 - fff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 122 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 122 fff",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 27 - pp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 27 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 27 pp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 43 - p.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 43 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 43 p",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 59 - mp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 59 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 59 mp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 75 - mf.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 75 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 75 mf",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise CC1 91 - f.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 1 5 | local threshold = 91 6 | 7 | reaper.Undo_BeginBlock(); 8 | drmp.normaliseSelectedCCs(ccNum, threshold) 9 | reaper.Undo_EndBlock("MIDI Normalise CC1 91 f",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 107 - ff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 107 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 107 ff",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 11 - ppp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 11 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 11 ppp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 122 - fff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 122 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 122 fff",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 27 - pp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 27 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 27 pp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 43 - p.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 43 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 43 p",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 59 - mp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 59 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 59 mp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 75 - mf.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 75 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 75 mf",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Normalise Velocity 91 - f.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local threshold = 91 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.normaliseSelectedVelocities(threshold) 8 | reaper.Undo_EndBlock("MIDI Normalise Velocity 91 f",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Select CC1 Events Under Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 1; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.selectCCEventsUnderSelectedNotes(CC_NUM) 8 | reaper.Undo_EndBlock("MIDI Select CC1 Events Under Selected Notes",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 107 - ff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 107 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 107 ff",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 11 - ppp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 11 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 11 ppp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 122 - fff.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 122 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 122 fff",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 27 - pp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 27 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 27 pp",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 43 - p.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 43 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 43 p",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 59 - mp.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 75 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 75 mf",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 75 - mf.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 75 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 75 mf",-1); -------------------------------------------------------------------------------- /luaScripts/Dynamics/MIDI Set Velocity 91 - f.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local value = 91 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.setVelocityForSelectedNotes(value) 8 | reaper.Undo_EndBlock("MIDI Set Velocity For Selected Notes 91 f",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -1.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -1 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -1",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -10.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -10 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -10",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -11.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -11 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -11",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -12.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -12 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -12",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -2.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -2 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -2",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -3.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -3 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -3",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -4.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -4 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -4",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -5.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -5 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -5",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -6.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -6 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -6",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -7.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -7 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -7",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -8.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -8 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -8",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval -9.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = -9 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes -9",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 1.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 1; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 1",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 10.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 10 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 10",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 11.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 11 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 11",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 12.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 12 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 12",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 2.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 2; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 2",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 3.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 3; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 3",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 4.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 4; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 4",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 5.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 5; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 5",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 6.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 6; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 6",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 7.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 7 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 7",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 8.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 8 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 8",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Add Interval 9.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local INTERVAL = 9 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.addIntervalToSelectedNotes(INTERVAL) 8 | reaper.Undo_EndBlock("MIDI Add Interval To Selected Notes 9",-1); -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Retrigger Trill Maker.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Retrigger Trill Maker 3 | * Written: 02/06/2017 4 | * Updated: 21/06/2017 5 | * Author: David Healey. 6 | --]] 7 | 8 | --Inserts trilling note above/below the sustaining note for use with VSTs with a legato retrigger function 9 | --------------------------- 10 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 11 | require('daves reaper midi package v1-0') 12 | 13 | function main(interval, length) 14 | 15 | takes = drmp.getActiveMIDITakes() --Get all active MIDI takes 16 | 17 | reaper.Undo_BeginBlock(); 18 | 19 | if takes ~= false then 20 | for i, t in pairs(takes) do 21 | 22 | -- Weird, sometimes REAPER's PPQ is not 960. So first get PPQ of take - JulianSader. 23 | local QNstart = reaper.MIDI_GetProjQNFromPPQPos(t, 0) 24 | local RPPQ = reaper.MIDI_GetPPQPosFromProjQN(t, QNstart + 1) - reaper.MIDI_GetPPQPosFromProjQN(t, QNstart) 25 | local len = (4.0*RPPQ)*(1/length) -- Desired length of trill notes in ticks 26 | 27 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 28 | 29 | local noteData = {} --Store note data in an array so that new notes an be selected without iterating over them 30 | for n = 0, notes, 1 do 31 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(t, n) --Get note data 32 | if selected == true then 33 | noteData[n] = {n_ppq=ppq, n_endppq=endppq, n_chan=chan, n_pitch=pitch, n_vel=vel}--Store data 34 | end 35 | end 36 | 37 | if noteData ~= nil then 38 | for n, d in pairs(noteData) do --Go through selected note data 39 | 40 | noteCount = (d.n_endppq - d.n_ppq) / len --The number of new notes to insert based on the length of selected note 41 | 42 | for i = 0, noteCount, 1 do 43 | if i % 2 ~= 0 then --If i is odd 44 | reaper.MIDI_InsertNote(t, true, false, d.n_ppq+i*len, d.n_ppq+(i*len)+len, d.n_chan, d.n_pitch+interval, d.n_vel, true); 45 | end 46 | end 47 | end 48 | reaper.MIDIEditor_OnCommand(e, 41614) --Call Reaper command to hide selected notes (new trill notes) 49 | end 50 | reaper.MIDI_Sort(t) 51 | end 52 | end 53 | reaper.Undo_EndBlock("MIDI Retrigger Trill Maker",-1); 54 | reaper.UpdateArrange(); 55 | end 56 | 57 | --RUN---------------- 58 | retval, input = reaper.GetUserInputs("Trill Maker", 2, "interval,Note Length", "1,32") 59 | 60 | local interval, length = input:match("([^,]+),([^,]+)"); --Split input into variables 61 | 62 | if type(tonumber(interval)) == "number" and type(tonumber(length)) == "number" and tonumber(length) > 0 then --Validate input 63 | if retval ~= false then 64 | main(interval, length) 65 | end 66 | end -------------------------------------------------------------------------------- /luaScripts/Intervals/MIDI Trill Maker.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Trill Maker 3 | * Written: 02/06/2017 4 | * Last Updated: 21/06/2017 5 | * Author: David Healey. 6 | --]] 7 | 8 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 9 | require('daves reaper midi package v1-0') 10 | 11 | function main(interval, length) 12 | 13 | takes = drmp.getActiveMIDITakes() --Get all active MIDI takes 14 | 15 | reaper.Undo_BeginBlock(); 16 | 17 | if takes ~= false then 18 | for i, t in pairs(takes) do 19 | 20 | -- Weird, sometimes REAPER's PPQ is not 960. So first get PPQ of take - JulianSader. 21 | local QNstart = reaper.MIDI_GetProjQNFromPPQPos(t, 0) 22 | local RPPQ = reaper.MIDI_GetPPQPosFromProjQN(t, QNstart + 1) - reaper.MIDI_GetPPQPosFromProjQN(t, QNstart) 23 | local len = (4.0*RPPQ)*(1/length) -- Desired length of trill notes in ticks 24 | 25 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 26 | 27 | local noteData = {} --Store note data in an array so that new notes can be selected without iterating over them 28 | for n = 0, notes, 1 do 29 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(t, n) --Get note data 30 | if selected == true then 31 | noteData[n] = {n_ppq=ppq, n_endppq=endppq, n_chan=chan, n_pitch=pitch, n_vel=vel}--Store data 32 | end 33 | end 34 | 35 | if noteData ~= nil then 36 | for n, d in pairs(noteData) do --Go through selected note data 37 | 38 | reaper.MIDI_DeleteNote(t, n) --Delete original note 39 | 40 | --The number of new notes to insert based on the length of selected note 41 | noteCount = (d.n_endppq - d.n_ppq) / len 42 | 43 | for i = 0, noteCount, 1 do 44 | if i % 2 == 0 then --If i is even 45 | reaper.MIDI_InsertNote(t, true, false, d.n_ppq+i*len, d.n_ppq+(i*len)+len, d.n_chan, d.n_pitch, d.n_vel, true); 46 | else 47 | reaper.MIDI_InsertNote(t, true, false, d.n_ppq+i*len, d.n_ppq+(i*len)+len, d.n_chan, d.n_pitch+interval, d.n_vel, true); 48 | end 49 | end 50 | end 51 | end 52 | reaper.MIDI_Sort(t) 53 | end 54 | end 55 | reaper.UpdateArrange(); 56 | end 57 | 58 | --RUN---------------- 59 | retval, input = reaper.GetUserInputs("Trill Maker", 2, "Interval,Note Length", "1,32") 60 | 61 | local interval, length = input:match("([^,]+),([^,]+)"); --Split input into variables 62 | 63 | if type(tonumber(interval)) == "number" and type(tonumber(length)) == "number" and tonumber(length) > 0 then --Validate input 64 | if retval ~= false then 65 | main(interval, length) 66 | end 67 | end -------------------------------------------------------------------------------- /luaScripts/Misc/MIDI Insert CC At Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local retval, userInput = reaper.GetUserInputs("CC Number & Value", 2, "CC Number,CC Value", ""); 5 | 6 | if (retval == false) then return end; 7 | 8 | ccNum, ccValue = userInput:match("([^,]+),([^,]+)"); --Split user's input to variables 9 | 10 | if type(tonumber(ccNum)) == "number" and type(tonumber(ccValue)) == "number" then --Validate input 11 | reaper.Undo_BeginBlock(); 12 | drmp.insertCCAtSelectedNotes(ccNum, ccValue) 13 | reaper.Undo_EndBlock("MIDI Insert CC At Selected Notes",-1); 14 | end -------------------------------------------------------------------------------- /luaScripts/Misc/MIDI Overlap Selected Notes.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Overlap Selected Notes 3 | * Written: 29/05/2017 4 | * Last Updated: 20/06/2017 5 | * Author: David Healey. 6 | --]] 7 | 8 | reaper.Undo_BeginBlock(); 9 | 10 | for i = 0, reaper.CountMediaItems(0), 1 do --Each media item 11 | 12 | local item = reaper.GetMediaItem(0, i) --Get item 13 | 14 | if reaper.ValidatePtr2(0, item, "MediaItem*") then --Double check that we got a valid item 15 | 16 | local take = reaper.GetActiveTake(item) --Get item's active take 17 | 18 | if reaper.ValidatePtr2(0, take, "MediaItem_Take*") and reaper.TakeIsMIDI(take) then --Active take contains MIDI data 19 | 20 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) --Count events 21 | 22 | for n = 0, notes, 1 do --Each note event 23 | 24 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(take, n); --Get note data 25 | 26 | if n_selected == true then --If the note is selected 27 | 28 | nextNote = reaper.MIDI_EnumSelNotes(take, n); --Get the next selected note 29 | 30 | if nextNote ~= -1 then --If there is a next selected note 31 | retval, b_selected, b_muted, b_ppq, b_endppq, b_chan, b_pitch, b_vel = reaper.MIDI_GetNote(take, nextNote); --Get its note data 32 | len = n_endppq - n_ppq; --Take start away from end to get length 33 | len = b_ppq + (len * 0.03); --Extend length up to next note + 3% 34 | reaper.MIDI_SetNote(take, n, NULL, NULL, NULL, len, NULL, NULL, NULL, true); --Extend note length 35 | end 36 | end 37 | 38 | end 39 | reaper.MIDI_Sort(take) 40 | end 41 | end 42 | end 43 | 44 | reaper.Undo_EndBlock("MIDI Overlap Selected Notes",-1); 45 | reaper.UpdateArrange(); -------------------------------------------------------------------------------- /luaScripts/Misc/MIDI Select CC11 Events Under Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 11; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.selectCCEventsUnderSelectedNotes(ccNum) 8 | reaper.Undo_EndBlock("MIDI Select CC11 Events Under Selected Notes",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Delete CC32 Events Under Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 32; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.deleteCCUnderSelectedNotes(ccNum) 8 | reaper.Undo_EndBlock("MIDI Delete CC32 Events Under Selected Notes",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert CC32 Value 1 - Long Generic.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 32; 5 | local CC_VALUE = 1; 6 | local INSERT_BEFORE = 0; 7 | 8 | reaper.Undo_BeginBlock(); 9 | if (INSERT_BEFORE == 1) then 10 | drmp.insertCCBeforeSelectedNotes(CC_NUM, CC_VALUE) 11 | else 12 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 13 | end 14 | reaper.Undo_EndBlock("MIDI Insert CC32 Value 1",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert CC32 Value 11 - Flutter - Tremolo.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 32; 5 | local CC_VALUE = 11; 6 | local INSERT_BEFORE = 0; 7 | 8 | reaper.Undo_BeginBlock(); 9 | if (INSERT_BEFORE == 1) then 10 | drmp.insertCCBeforeSelectedNotes(CC_NUM, CC_VALUE) 11 | else 12 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 13 | end 14 | 15 | reaper.Undo_EndBlock("MIDI Insert CC32 Value 11",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert CC32 Value 20 - Legato Generic.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 32; 5 | local CC_VALUE = 20; 6 | local INSERT_BEFORE = 0; 7 | 8 | reaper.Undo_BeginBlock(); 9 | if (INSERT_BEFORE == 1) then 10 | drmp.insertCCBeforeSelectedNotes(CC_NUM, CC_VALUE) 11 | else 12 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 13 | end 14 | reaper.Undo_EndBlock("MIDI Insert CC32 Value 20",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert CC32 Value 40 - Short Generic.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 32; 5 | local CC_VALUE = 40; 6 | local INSERT_BEFORE = 0; 7 | 8 | reaper.Undo_BeginBlock(); 9 | if (INSERT_BEFORE == 1) then 10 | drmp.insertCCBeforeSelectedNotes(CC_NUM, CC_VALUE) 11 | else 12 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 13 | end 14 | reaper.Undo_EndBlock("MIDI Insert CC32 Value 40",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert CC32 Value 42 - Staccattissimo.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 32; 5 | local CC_VALUE = 42; 6 | local INSERT_BEFORE = 0; 7 | 8 | reaper.Undo_BeginBlock(); 9 | if (INSERT_BEFORE == 1) then 10 | drmp.insertCCBeforeSelectedNotes(CC_NUM, CC_VALUE) 11 | else 12 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 13 | end 14 | reaper.Undo_EndBlock("MIDI Insert CC32 Value 42",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert CC32 Value 56 - Pizzicato.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local CC_NUM = 32; 5 | local CC_VALUE = 56; 6 | local INSERT_BEFORE = 0; 7 | 8 | reaper.Undo_BeginBlock(); 9 | if (INSERT_BEFORE == 1) then 10 | drmp.insertCCBeforeSelectedNotes(CC_NUM, CC_VALUE) 11 | else 12 | drmp.insertCCAtSelectedNotes(CC_NUM, CC_VALUE) 13 | end 14 | reaper.Undo_EndBlock("MIDI Insert CC32 Value 56",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Insert UACC at Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local retval, input = reaper.GetUserInputs("Insert UACC", 1, "UACC Value", ""); 5 | 6 | if (retval == false) then return end; 7 | 8 | if type(tonumber(input)) == "number" then --Validate input 9 | reaper.Undo_BeginBlock(); 10 | drmp.insertCCAtSelectedNotes(32, input) 11 | reaper.Undo_EndBlock("MIDI Insert UACC At Selected Notes",-1); 12 | end -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI Select CC32 Events Under Selected Notes.lua: -------------------------------------------------------------------------------- 1 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 2 | require('daves reaper midi package v1-0') 3 | 4 | local ccNum = 32; 5 | 6 | reaper.Undo_BeginBlock(); 7 | drmp.selectCCEventsUnderSelectedNotes(ccNum) 8 | reaper.Undo_EndBlock("MIDI Select CC32 Events Under Selected Notes",-1); -------------------------------------------------------------------------------- /luaScripts/UACC/MIDI UACC Menu.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: UACC Menu 3 | * Written: 27/06/2017 4 | * Last Updated: 27/06/2017 5 | * Author: David Healey 6 | --]] 7 | 8 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 9 | require('daves reaper midi package v1-0') 10 | 11 | local ccNum = 32 12 | local INSERT_BEFORE = 0; --Set to 1 if you want the CC data inserted before each selected note 13 | 14 | gfx.init("UACC", 1, 1) 15 | 16 | gfx.x = gfx.mouse_x 17 | gfx.y = gfx.mouse_y 18 | 19 | input = gfx.showmenu(">Long|1: Long Generic|2: Long Alternative|3: Long Octave|4: Long Octave muted|5: Long Small (half)|6: Long Small muted (half muted)|7: Long Muted (cs/stopped)|8: Long Soft (flautando/hollow)|9: Long Hard (cuivre/overblown/nasty)|10: Long Harmonic|11: Long Trem (tremolando/flutter)|12: Long Trem muted (tremolando/flutter cs/stopped)|13: Long Trem soft (trem sul pont)|14: Long Trem hard (flutter overblown)|15: Long Term sul|16: Long Vibrato (molto or vib. only)|17: Long Higher (bells up/sul asto)|18: Long Lower (sul pont)|<19: Undefined|>Legato|20: Legato Generic|21: Legato Alternative|22: Legato Octave|23: Legato Octave muted|24: Legato Small|25: Legato Small muted|26: Legato Muted|27: Legato Soft|28: Legato Hard|29: Legato Harmonic|30: Legato Trem|31: Legato Slow (portamento/glissandi)|32: Legato Fast|33: Legato Slurred (legato runs)|34: Legato Detaché|35: Legato Higher (sul tasto)|36: Legato Lower (sul pont)|37: Undefined|38: Undefined|<39: Undefined|>Short|40: Short Generic|41: Short Alternative|42: Short Staccatissimo/very short)|43: Short Spiccato/very short soft|44: Short Leisurely (longer staccato)|45: Short Octave|46: Short Octave muted|47: Short Muted (cs/stopped)|48: Short Soft (brushed/feathered)|49: Short Hard (dig)|50: Short Tenuto|51: Short Tenuto soft|52: Short Marcato|53: Short Marcato soft|54: Short Marcato hard (bells up)|55: Short Marcato longer|56: Short Plucked (pizzicato)|57: Short Plucked hard (Bartok)|58: Short Struck (Col legno)|59: Short Higher (bells up/sul tasto)|60: Short Lower (sul pont)|61: Short Harmonic|62: Undefined|63: Undefined|64: Undefined|65: Undefined|66: Undefined|67: Undefined|68: Undefined|<69: Undefined|>Decorative|70: Trill min 2nd|71: Trill maj 2nd|72: Trill min 3rd|73: Trill maj 3rd|74: Trill perf 4th|75: Multitongue|76: Multitongue muted|77: Undefined|78: Undefined|79: Undefined|80: Synced - 120bpm (trem/trill)|81: Synced - 150bpm (trem/trill)|82: Synced - 180bpm (trem/trill)|83: Undefined|84: Undefined|85: Undefined|86: Undefined|87: Undefined|88: Undefined|<89: Undefined|>Phrases and Dynamics|90: FX 1|91: FX 2|92: FX 3|93: FX 4|94: FX 5|95: FX 6|96: FX 7|97: FX 8|98: FX 9|99: FX 10|100: Upwards (rips and runs)|101: Downwards (falls and runs)|102: Crescendo|103: Diminuendo|104: Arc|105: Slides|106: Undefined|107: Undefined|108: Undefined|<109: Undefined|>Various|110: Disco upwards (rips)|111: Disco downwards (falls)|112: Undefined|113: Undefined|114: Undefined|115: Undefined|116: Undefined|117: Undefined|118: Undefined|119: Undefined|120: Undefined|121: Undefined|123: Undefined|124: Undefined|125: Undefined|126: Undefined|<127: Undefined||Select UACC For Selected Note|Delete UACC For Selected Notes") 20 | 21 | if input ~= 0 then 22 | reaper.Undo_BeginBlock(); 23 | 24 | if input < 127 then 25 | drmp.deleteCCUnderSelectedNotes(ccNum) --Remove existing UACC data 26 | if INSERT_BEFORE == 1 then 27 | drmp.insertCCBeforeSelectedNotes(ccNum, input) --Insert selected UACC data 28 | else 29 | drmp.insertCCAtSelectedNotes(ccNum, input) --Insert selected UACC data 30 | end 31 | reaper.Undo_EndBlock("MIDI Insert UACC From Menu",-1) 32 | else 33 | if input == 127 then 34 | drmp.selectCCEventsUnderSelectedNotes(ccNum) 35 | reaper.Undo_EndBlock("MIDI Select UACC Events Under Selected Notes",-1); 36 | end 37 | 38 | if input == 128 then 39 | drmp.deleteCCUnderSelectedNotes(ccNum) 40 | reaper.Undo_EndBlock("MIDI Delete UACC Under Selected Notes",-1) 41 | end 42 | end 43 | end 44 | 45 | gfx.quit() -------------------------------------------------------------------------------- /luaScripts/_wips/MIDI Delete CC1 Events for First Selected Note.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Delete CC1 Events for first selected note 3 | * Version: 29/05/2017 4 | * Author: David Healey. 5 | --]] 6 | 7 | local CC_NUM = 1; --Only events for this CC number will be removed 8 | 9 | take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive()) --Get active take 10 | 11 | if take ~= nil then 12 | 13 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) --Count note and cc evens 14 | 15 | for n = 0, notes, 1 do --Each note event 16 | 17 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(take, n); --Get note data 18 | 19 | if n_selected == true then --If this note is selected 20 | 21 | for c = 0, ccs, 1 do --Each CC event 22 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(take, c) --Get CC data 23 | 24 | --If the CC ppq is within the note's start and end ppq and the CC lane is CC_NUM 25 | if (c_ppq >= n_ppq and c_ppq < n_endppq) and msg2 == CC_NUM then 26 | reaper.MIDI_DeleteCC(take, c); --Delete CC Event 27 | end 28 | end 29 | break; --Exist after the first selected note's CCs have been processed 30 | end 31 | 32 | end 33 | end 34 | 35 | reaper.MIDI_Sort(take) -------------------------------------------------------------------------------- /luaScripts/_wips/MIDI Dynamic Markings Menu.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: Dynamics Menu 3 | * Written: 27/06/2017 4 | * Last Updated: 27/06/2017 5 | * Author: David Healey 6 | --]] 7 | 8 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 9 | require('daves reaper midi package v1-0') 10 | 11 | gfx.init("Dynamics", 1, 1) 12 | 13 | gfx.x = gfx.mouse_x 14 | gfx.y = gfx.mouse_y 15 | 16 | input = gfx.showmenu(">Dynamic Marking|ppp|pp|p|mp|mf|f|ff|fff|sfz|fp") 17 | 18 | --local dynamics = {"ppp", "pp", "p", "mp", "mf", "f", "ff", "fff", "0xE539", "0xE534"} --sfz, fp 19 | local dynamics = {41120, 41121, 41122, 41123, 41125, 41126, 41127, 41128, "0xE539", "0xE534"} --sfz, fp 20 | 21 | if input ~= 0 then 22 | 23 | takes = drmp.getActiveMIDITakes() --Get all active MIDI takes 24 | 25 | if takes ~= false then 26 | 27 | reaper.Undo_BeginBlock() 28 | 29 | for i, t in pairs(takes) do 30 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count note and cc events 31 | 32 | for n = 0, notes, 1 do --Each note event 33 | 34 | retval, n_selected, n_muted, n_ppq, n_end, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 35 | 36 | if n_selected == true then 37 | 38 | if input < 9 then --Built in markings 39 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), 40440) --Move edit cursor 40 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), dynamics[input]) 41 | --reaper.MIDI_InsertTextSysexEvt(t, true, n_muted, n_ppq, 0xF, "TRAC dynamic " .. dynamics[input] .. " ypos 2.000") 42 | else --Custom symbols 43 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), 40440) --Remove existing custom text 44 | drmp.insertCustomTextAtGivenNote(t, n, dynamics[input]) 45 | end 46 | end 47 | end 48 | reaper.MIDI_Sort(t) 49 | end 50 | reaper.Undo_EndBlock("MIDI Dynamics Menu",-1) 51 | end 52 | reaper.UpdateArrange(); 53 | end 54 | 55 | gfx.quit() -------------------------------------------------------------------------------- /luaScripts/_wips/MIDI Increase CC1 First CC of Each Selected Note by 15 Percent.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Increase CC1 For First CC of Each Selected Note By 15% 3 | * Version: 29/05/2017 4 | * Author: David Healey. 5 | --]] 6 | 7 | take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive()) --Get active take 8 | local CC_NUM = 1; 9 | 10 | if take ~= nil then 11 | reaper.Undo_BeginBlock(); 12 | 13 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) --Count note and cc evens 14 | 15 | for n = 0, notes, 1 do --Each note event 16 | 17 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(take, n); --Get note data 18 | 19 | if n_selected == true then --If this note is selected 20 | 21 | for c = 0, ccs, 1 do --Each CC event 22 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(take, c) --Get CC data 23 | 24 | --If the CC ppq is within the note's start and end ppq and the CC lane is CC_NUM 25 | if (c_ppq >= n_ppq and c_ppq < n_endppq) and msg2 == CC_NUM then 26 | CC_VALUE = msg3 + math.floor(msg3*.15) --Increase CC value 27 | if CC_VALUE >= 127 then CC_VALUE = 127 end --Don't let value go above max 28 | reaper.MIDI_SetCC(take, c, NULL, NULL, NULL, NULL, NULL, NULL, CC_VALUE, true); 29 | break; --Only process one CC per note 30 | end 31 | end 32 | 33 | end 34 | 35 | end 36 | end 37 | 38 | reaper.MIDI_Sort(take) 39 | reaper.Undo_EndBlock("MIDI Increase CC1 For First CC of Each Selected Note",-1); 40 | reaper.UpdateArrange(); -------------------------------------------------------------------------------- /luaScripts/_wips/MIDI Select All CC Events Under Selected Notes.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Select All CC Events Under Selected Notes 3 | * Version: 04/06/2017 4 | * Author: David Healey. 5 | --]] 6 | 7 | take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive()) --Get active take 8 | 9 | if take ~= nil then 10 | 11 | reaper.Undo_BeginBlock(); 12 | 13 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) --Count note and cc evens 14 | 15 | for n = 0, notes, 1 do --Each note event 16 | 17 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(take, n); --Get note data 18 | 19 | if n_selected == true then --If this note is selected 20 | 21 | for c = 0, ccs, 1 do --Each CC event 22 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(take, c) --Get CC data 23 | 24 | --If the CC ppq is within the note's start and end ppq 25 | if c_ppq >= n_ppq and c_ppq < n_endppq then 26 | reaper.MIDI_SetCC(take, c, true, NULL, NULL, NULL, NULL, NULL, NULL, true); --Set CC as selected 27 | end 28 | end 29 | 30 | end 31 | 32 | end 33 | end 34 | 35 | reaper.MIDI_Sort(take) 36 | reaper.Undo_EndBlock("MIDI Select All CC Events Under Selected Notes",-1); 37 | reaper.UpdateArrange(); -------------------------------------------------------------------------------- /luaScripts/_wips/MIDI Set Note Length to 50 Percent.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Set Note Length to 50% 3 | * Version: 02/06/2017 4 | * Author: David Healey. 5 | --]] 6 | 7 | --[[ 8 | Halves the duration of selected notes. 9 | If using this to create staccato notes - which is my purpose - create a custom action 10 | load this script as the first step, then use JulianSader's js_Notation Set display length of selected notes to double script 11 | to restore the displayed length of the note and add a staccato articulation marking. 12 | ---------------------------]] 13 | 14 | function main() 15 | 16 | e = reaper.MIDIEditor_GetActive() --Get active editor 17 | take = reaper.MIDIEditor_GetTake(e) --Get active take 18 | 19 | if take ~= nil then 20 | 21 | reaper.Undo_BeginBlock(); 22 | 23 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) --Count events 24 | 25 | for n = 0, notes, 1 do 26 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(take, n) --Get note data 27 | if selected == true then 28 | reaper.MIDI_SetNote(take, n, NULL, NULL, NULL, ppq+(endppq-ppq)/2, NULL, NULL, NULL, true) 29 | end 30 | end 31 | 32 | reaper.MIDI_Sort(take) 33 | reaper.Undo_EndBlock("MIDI Set Note Length to 50%",-1); 34 | reaper.UpdateArrange(); 35 | end 36 | end 37 | 38 | --RUN---------------- 39 | main() -------------------------------------------------------------------------------- /luaScripts/_wips/MIDI Trill Maker 2.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: MIDI Trill Maker 3 | * Written: 02/06/2017 4 | * Last Updated: 27/06/2017 5 | * Author: David Healey. 6 | --]] 7 | 8 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 9 | require('daves reaper midi package v1-0') 10 | 11 | function main(interval, length) 12 | 13 | takes = drmp.getActiveMIDITakes() --Get all active MIDI takes 14 | 15 | reaper.Undo_BeginBlock(); 16 | 17 | if takes ~= false then 18 | for i, t in pairs(takes) do 19 | 20 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 21 | 22 | local noteData = {} --Store note data in an array so that new notes can be set as selected without iterating over them 23 | for n = 0, notes, 1 do 24 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(t, n) --Get note data 25 | if selected == true then 26 | noteData[n] = {n_ppq=ppq, n_endppq=endppq, n_chan=chan, n_pitch=pitch, n_vel=vel} --Store data 27 | end 28 | end 29 | 30 | if noteData ~= nil then 31 | 32 | -- Weird, sometimes REAPER's PPQ is not 960. So first get PPQ of take - JulianSader. 33 | local QNstart = reaper.MIDI_GetProjQNFromPPQPos(t, 0) 34 | local RPPQ = reaper.MIDI_GetPPQPosFromProjQN(t, QNstart + 1) - reaper.MIDI_GetPPQPosFromProjQN(t, QNstart) 35 | local len = (4.0*RPPQ)*(1/length) -- Desired length of trill notes in ticks 36 | 37 | for n, d in pairs(noteData) do --Go through selected note data 38 | 39 | reaper.MIDI_DeleteNote(t, n) --Delete original note 40 | 41 | --The number of new notes to insert based on the length of selected note 42 | noteCount = (d.n_endppq - d.n_ppq) / len 43 | 44 | for i = 0, noteCount, 1 do 45 | if i % 2 == 0 then --If i is even 46 | reaper.MIDI_InsertNote(t, true, false, d.n_ppq+i*len, d.n_ppq+(i*len)+len, d.n_chan, d.n_pitch, d.n_vel, true); 47 | else 48 | reaper.MIDI_InsertNote(t, true, false, d.n_ppq+i*len, d.n_ppq+(i*len)+len, d.n_chan, d.n_pitch+interval, d.n_vel, true); 49 | end 50 | end 51 | 52 | --Set the display length of the first note to the lenth of the original note 53 | textLen = string.format("%.3f", tostring((d.n_endppq - d.n_ppq)/RPPQ)) 54 | tIndex, msg = drmp.getTextIndexForNote(t, d.n_ppq, d.n_chan, d.n_pitch) 55 | 56 | if tIndex == -1 then -- If note does not yet have notation info, create new event 57 | reaper.MIDI_InsertTextSysexEvt(t, false, false, d.n_ppq, 15, "NOTE "..tostring(d.n_chan).." "..tostring(d.n_pitch).." ".." disp_len "..textLen) 58 | else -- Remove existing articulation and length tweaks 59 | msg = msg:gsub(" articulation [%a]+", "") 60 | msg = msg:gsub(" disp_len [%-]*[%d]+.[%d]+", "") 61 | msg = msg .." disp_len "..textLen 62 | reaper.MIDI_SetTextSysexEvt(t, tIndex, nil, nil, nil, nil, msg, false) 63 | end 64 | end 65 | end 66 | reaper.MIDI_Sort(t) 67 | end 68 | end 69 | reaper.UpdateArrange(); 70 | end 71 | 72 | --RUN---------------- 73 | retval, input = reaper.GetUserInputs("Trill Maker", 2, "Interval,Note Length", "1,32") 74 | 75 | local interval, length = input:match("([^,]+),([^,]+)"); --Split input into variables 76 | 77 | if type(tonumber(interval)) == "number" and type(tonumber(length)) == "number" and tonumber(length) > 0 then --Validate input 78 | if retval ~= false then 79 | main(interval, length) 80 | end 81 | end -------------------------------------------------------------------------------- /luaScripts/_wips/X-Raym_Insert CC linear ramp events between selected ones if consecutive no input.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: Insert CC linear ramp events between selected ones if consecutive 3 | * Description: Interpolate multiple CC events by creating new ones. Works with multiple lanes (CC Channel). 4 | * Instructions: Open a MIDI take in MIDI Editor. Select Notes. Run. 5 | * Screenshot: http://i.giphy.com/3o6UB8vDPviM8jbXlC.gif 6 | * Author: X-Raym 7 | * Author URI: http://extremraym.com 8 | * Repository: GitHub > X-Raym > EEL Scripts for Cockos REAPER 9 | * Repository URI: https://github.com/X-Raym/REAPER-EEL-Scripts 10 | * Licence: GPL v3 11 | * Forum Thread: Script Request Sticky? - Page 32 12 | * Forum Thread URI: http://forum.cockos.com/showpost.php?p=1617117&postcount=1265 13 | * REAPER: 5.0 14 | * Extensions: None 15 | * Version: 1.2 16 | --]] 17 | 18 | --[[ 19 | * Changelog: 20 | * v1.2 (2017-05-29) 21 | # Works with multiple CCS. 22 | * v1.1.1 (2016-12-10) 23 | # Text 24 | * v1.1 (2016-12-10) 25 | # Bug fix 26 | * v1.0 (2016-01-04) 27 | + Initial Release 28 | --]] 29 | 30 | -- USER CONFIG AREA --------------------- 31 | 32 | interval = "15" 33 | prompt = false -- User input dialog box 34 | selected = false -- new notes are selected 35 | 36 | ----------------- END OF USER CONFIG AREA 37 | 38 | 39 | -- Console Message 40 | function Msg(g) 41 | reaper.ShowConsoleMsg(tostring(g).."\n") 42 | end 43 | 44 | function GetCC(take, cc) 45 | return cc.selected, cc.muted, cc.ppqpos, cc.chanmsg, cc.chan, cc.msg2, cc.msg3 46 | end 47 | 48 | function main() -- local (i, j, item, take, track) 49 | 50 | take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive()) 51 | 52 | if take ~= nil then 53 | 54 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(take) 55 | 56 | if ccs == 0 then return end 57 | 58 | -- Store CC by types 59 | midi_cc = {} 60 | for j = 0, ccs - 1 do 61 | cc = {} 62 | retval, cc.selected, cc.muted, cc.ppqpos, cc.chanmsg, cc.chan, cc.msg2, cc.msg3 = reaper.MIDI_GetCC(take, j) 63 | if not midi_cc[cc.msg2] then midi_cc[cc.msg2] = {} end 64 | table.insert(midi_cc[cc.msg2], cc) 65 | end 66 | 67 | -- Look for consecutive CC 68 | cc_events = {} 69 | cc_events_len = 0 70 | 71 | for key, val in pairs(midi_cc) do 72 | 73 | -- GET SELECTED NOTES (from 0 index) 74 | for k = 1, #val - 1 do 75 | 76 | a_selected, a_muted, a_ppqpos, a_chanmsg, a_chan, a_msg2, a_msg3 = GetCC(take, val[k]) 77 | b_selected, b_muted, b_ppqpos, b_chanmsg, b_chan, b_msg2, b_msg3 = GetCC(take, val[k+1]) 78 | 79 | if a_selected == true and b_selected == true then 80 | 81 | -- INSERT NEW CCs 82 | time_interval = (b_ppqpos - a_ppqpos) / interval 83 | 84 | for z = 1, interval - 1 do 85 | 86 | cc_events_len = cc_events_len + 1 87 | cc_events[cc_events_len] = {} 88 | 89 | c_ppqpos = a_ppqpos + time_interval * z 90 | c_msg3 = math.floor( ( (b_msg3 - a_msg3) / interval * z + a_msg3 )+ 0.5 ) 91 | 92 | cc_events[cc_events_len].ppqpos = c_ppqpos 93 | cc_events[cc_events_len].chanmsg = a_chanmsg 94 | cc_events[cc_events_len].chan = a_chan 95 | cc_events[cc_events_len].msg2 = a_msg2 96 | cc_events[cc_events_len].msg3 = c_msg3 97 | 98 | end 99 | 100 | end 101 | 102 | end 103 | 104 | end 105 | 106 | -- Insert Events 107 | for i, cc in ipairs(cc_events) do 108 | reaper.MIDI_InsertCC(take, selected, false, cc.ppqpos, cc.chanmsg, cc.chan, cc.msg2, cc.msg3) 109 | end 110 | 111 | end -- ENFIF Take is MIDI 112 | 113 | end 114 | 115 | -- RUN --------------------- 116 | if prompt then 117 | retval, interval = reaper.GetUserInputs("Insert CC Events", 1, "Number of new events between CC?", interval) 118 | end 119 | 120 | if retval or prompt == false then -- if user complete the fields 121 | 122 | interval = tonumber(interval) 123 | 124 | if interval then 125 | 126 | reaper.Undo_BeginBlock() -- Begining of the undo block. Leave it at the top of your main function. 127 | 128 | interval = math.floor(interval) + 1 129 | 130 | main() -- Execute your main function 131 | 132 | reaper.UpdateArrange() -- Update the arrangement (often needed) 133 | 134 | reaper.Undo_EndBlock("Insert CC linear ramp events between selected ones if consecutive", -1) -- End of the undo block. Leave it at the bottom of your main function. 135 | 136 | end 137 | 138 | end 139 | -------------------------------------------------------------------------------- /luaScripts/_wips/js_Notation - Set display length of selected notes to double.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | ReaScript name: js_Notation - Set display length of selected notes to double.lua 3 | Version: 1.2 4 | Author: juliansader 5 | Website: http://forum.cockos.com/showthread.php?t=172782&page=25 6 | About: 7 | # Description 8 | This script sets the notation displayed lengths of selected notes to double their MIDI lengths, and then 9 | adds staccato articulations. 10 | 11 | The script is intended to help solve the problem of short notes (such as staccato or muted guitar notes) 12 | that are notated with extraneous rests in-between. 13 | 14 | Simply increasing the displayed length of the notes (by using the built-in action "Nudge length display 15 | offset right", for example) will remove the rests, but then the displayed lengths will not accurately 16 | reflect the lengths of the underlying MIDI notes. 17 | 18 | This script therefore adds staccato articulations to indicate that the underlying MIDI notes are 19 | actually shorter. (The standard interpretation of staccato articulations is to halve the length of a note.) 20 | 21 | # Forum thread 22 | http://forum.cockos.com/showthread.php?t=172782&page=25 23 | ]] 24 | 25 | --[[ 26 | Changelog: 27 | * v1.0 28 | + Initial beta release. 29 | * v1.1 (2016-08-15) 30 | + Script's About info compatible with ReaPack 1.1. 31 | + Improved accuracy of length calculation. 32 | * v1.2 (2016-08-15) 33 | + Bug fix for compatibility with takes that do not start at 0. 34 | * v1.2.1 (2017/06/02) 35 | + Removed part that adds staccato articulation - David Healey 36 | ]] 37 | 38 | 39 | --------------------------------------------------------------- 40 | -- Returns the textsysex index of a given note's notation info. 41 | -- If no notation info is found, returns -1. 42 | function getTextIndexForNote(take, notePPQ, noteChannel, notePitch) 43 | 44 | reaper.MIDI_Sort(take) 45 | _, _, _, countTextSysex = reaper.MIDI_CountEvts(take) 46 | if countTextSysex > 0 then 47 | 48 | -- Use binary search to find text event closest to the left of note's PPQ 49 | local rightIndex = countTextSysex-1 50 | local leftIndex = 0 51 | local middleIndex 52 | while (rightIndex-leftIndex)>1 do 53 | middleIndex = math.ceil((rightIndex+leftIndex)/2) 54 | local textOK, _, _, textPPQ, _, _ = reaper.MIDI_GetTextSysexEvt(take, middleIndex, true, false, 0, 0, "") 55 | if textPPQ >= notePPQ then 56 | rightIndex = middleIndex 57 | else 58 | leftIndex = middleIndex 59 | end 60 | end -- while (rightIndex-leftIndex)>1 61 | 62 | -- Now search through text events one by one 63 | for i = leftIndex, countTextSysex-1 do 64 | local textOK, _, _, textPPQ, type, msg = reaper.MIDI_GetTextSysexEvt(take, i, true, false, 0, 0, "") 65 | -- Assume that text events are order by PPQ position, so if beyond, no need to search further 66 | if textPPQ > notePPQ then 67 | break 68 | elseif textPPQ == notePPQ and type == 15 then 69 | textChannel, textPitch = msg:match("NOTE ([%d]+) ([%d]+)") 70 | if noteChannel == tonumber(textChannel) and notePitch == tonumber(textPitch) then 71 | return i, msg 72 | end 73 | end 74 | end 75 | end 76 | 77 | -- Nothing was found 78 | return(-1) 79 | end 80 | 81 | -------------------------------------- 82 | -- Here the code execution starts 83 | -- function main() 84 | editor = reaper.MIDIEditor_GetActive() 85 | if editor ~= nil then 86 | take = reaper.MIDIEditor_GetTake(editor) 87 | if reaper.ValidatePtr2(0, take, "MediaItem_Take*") then 88 | 89 | reaper.Undo_BeginBlock2(0) 90 | 91 | -- Weird, sometimes REAPER's PPQ is not 960. So first get PPQ of take. 92 | local QNstart = reaper.MIDI_GetProjQNFromPPQPos(take, 0) 93 | PPQ = reaper.MIDI_GetPPQPosFromProjQN(take, QNstart + 1) - reaper.MIDI_GetPPQPosFromProjQN(take, QNstart) 94 | 95 | i = -1 96 | repeat 97 | i = reaper.MIDI_EnumSelNotes(take, i) 98 | if i ~= -1 then 99 | noteOK, _, _, noteStartPPQ, noteEndPPQ, channel, pitch, _ = reaper.MIDI_GetNote(take, i) 100 | -- Based on experimentation, it seems that the value of the "disp_len" field (in the notation 101 | -- editor's text events) represents (change in length)/(quarter note). 102 | textForField = string.format("%.3f", tostring( (noteEndPPQ - noteStartPPQ)/PPQ )) 103 | 104 | notationIndex, msg = getTextIndexForNote(take, noteStartPPQ, channel, pitch) 105 | if notationIndex == -1 then 106 | -- If note does not yet have notation info, create new event 107 | reaper.MIDI_InsertTextSysexEvt(take, true, false, noteStartPPQ, 15, "NOTE " 108 | ..tostring(channel) 109 | .." " 110 | ..tostring(pitch) 111 | .." " 112 | .." disp_len " 113 | ..textForField) 114 | else 115 | -- Remove existing articulation and length tweaks 116 | msg = msg:gsub(" articulation [%a]+", "") 117 | msg = msg:gsub(" disp_len [%-]*[%d]+.[%d]+", "") 118 | msg = msg .." disp_len "..textForField 119 | reaper.MIDI_SetTextSysexEvt(take, notationIndex, nil, nil, nil, nil, msg, false) 120 | end 121 | end 122 | until i == -1 123 | 124 | reaper.Undo_EndBlock2(0, "Notation - Set display length to double and add staccato articulation", -1) 125 | end 126 | end 127 | -------------------------------------------------------------------------------- /luaScripts/_wips/test.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: Dynamics Menu 3 | * Written: 27/06/2017 4 | * Last Updated: 27/06/2017 5 | * Author: David Healey 6 | --]] 7 | 8 | package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."../?.lua;".. package.path 9 | require('daves reaper midi package v1-0') 10 | 11 | gfx.init("Dynamics", 1, 1) 12 | 13 | gfx.x = gfx.mouse_x 14 | gfx.y = gfx.mouse_y 15 | 16 | local commands = {41120, 41121, 41122, 41123, 41125, 41126, 41127, 41128, 41118, 41119} --ppp - fff - cresc, dim 17 | local dynamics = {11, 27, 43, 59, 75, 91, 107, 122} 18 | 19 | input = gfx.showmenu(">Velocity|>Insert|ppp|pp|p|mp|mf|f|ff|Normalise|ppp|pp|p|mp|mf|f|ff|CC1|>Insert|ppp|pp|p|mp|mf|f|ff|Normalise|ppp|pp|p|mp|mf|f|ff|<Markings|ppp|pp|p|mp|mf|f|ff|fff||Cresc| 0 and input < 9 then --Velocity >> Insert 39 | drmp.setVelocityForSelectedNotes(dynamics[input]) 40 | end 41 | 42 | if input > 8 and input < 17 then --Velocity >> Normalise 43 | drmp.normaliseSelectedVelocities(dynamics[input-8]) 44 | end 45 | 46 | if input == 17 then --Velocity >> Accent 47 | drmp.increaseVelocityOfSelectedNotesByAmount(5) 48 | end 49 | 50 | if input > 17 and input < 26 then --CC1 >> Insert 51 | drmp.deleteCCUnderSelectedNotes(1) 52 | drmp.insertCCAtSelectedNotes(1, dynamics[input-17]) 53 | end 54 | 55 | if input > 25 and input < 34 then --CC1 >> Normalise 56 | drmp.normaliseSelectedCCs(1, dynamics[input-25]) 57 | end 58 | 59 | if input == 34 then --CC1 >> Accent 60 | drmp.increaseCCAtSelectedNotesByAmount(1, 5) 61 | end 62 | 63 | if input == 35 then --CC1 >> Select CC 64 | drmp.selectCCEventsUnderSelectedNotes(1) 65 | end 66 | 67 | if input == 36 then --CC1 >> Delete CC 68 | drmp.deleteCCUnderSelectedNotes(1) 69 | end 70 | 71 | if input > 36 then --Dynamic marking commands 72 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), 40440) --Move cursor to start of events 73 | reaper.MIDIEditor_OnCommand(reaper.MIDIEditor_GetActive(), commands[input-36]) 74 | end 75 | end 76 | end 77 | reaper.MIDI_Sort(t) 78 | end 79 | reaper.Undo_EndBlock("MIDI Dynamics Menu",-1) 80 | end 81 | reaper.UpdateArrange(); 82 | end 83 | 84 | gfx.quit() 85 | -------------------------------------------------------------------------------- /luaScripts/daves reaper midi package v1-0.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | * ReaScript Name: daves reaper midi package v1.0.0 3 | * Written: 20/06/2017 4 | * Last Updated: 20/06/2017 5 | * Author: David Healey 6 | --]] 7 | 8 | local P = {} 9 | drmp = P --Package name 10 | 11 | function P.getActiveMIDITakes() 12 | 13 | local activeTakes = {} 14 | 15 | for i = 0, reaper.CountMediaItems(0), 1 do --Each media item 16 | 17 | local item = reaper.GetMediaItem(0, i) --Get item 18 | 19 | if reaper.ValidatePtr2(0, item, "MediaItem*") then --Check that we got a valid item 20 | 21 | local take = reaper.GetActiveTake(item) --Get item's active take 22 | 23 | if reaper.ValidatePtr2(0, take, "MediaItem_Take*") and reaper.TakeIsMIDI(take) then --Active take is MIDI 24 | activeTakes[i] = take 25 | end 26 | end 27 | end 28 | 29 | if next(activeTakes) ~= nil then --Active takes were found 30 | return activeTakes 31 | else 32 | return false 33 | end 34 | end 35 | 36 | function P.insertCCAtSelectedNotes(ccNum, ccValue) 37 | 38 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 39 | 40 | if takes ~= false then 41 | for i, t in pairs(takes) do 42 | 43 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 44 | 45 | for n = 0, notes, 1 do --Each note event 46 | 47 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 48 | 49 | --If the note is selected insert CC data 50 | if n_selected == true then 51 | reaper.MIDI_InsertCC(t, false, false, n_ppq, 176, n_chan, ccNum, math.floor(ccValue)); 52 | end 53 | end 54 | reaper.MIDI_Sort(t) 55 | end 56 | reaper.UpdateArrange(); 57 | end 58 | end 59 | 60 | function P.insertCCBeforeSelectedNotes(ccNum, ccValue) 61 | 62 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 63 | 64 | if takes ~= false then 65 | for i, t in pairs(takes) do 66 | 67 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 68 | 69 | for n = 0, notes, 1 do --Each note event 70 | 71 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 72 | 73 | --If the note is selected insert CC data 74 | if n_selected == true then 75 | reaper.MIDI_InsertCC(t, false, false, n_ppq-15, 176, n_chan, ccNum, math.floor(ccValue)); 76 | end 77 | end 78 | reaper.MIDI_Sort(t) 79 | end 80 | reaper.UpdateArrange(); 81 | end 82 | end 83 | 84 | function P.setVelocityForSelectedNotes(value) 85 | 86 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 87 | 88 | if takes ~= false then 89 | for i, t in pairs(takes) do 90 | 91 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 92 | 93 | for n = 0, notes, 1 do --Each note event 94 | 95 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 96 | 97 | if n_selected == true then --If this note is selected 98 | reaper.MIDI_SetNote(t, n, NULL, NULL, NULL, NULL, NULL, NULL, value, true); 99 | end 100 | 101 | end 102 | reaper.MIDI_Sort(t) 103 | end 104 | reaper.UpdateArrange(); 105 | end 106 | end 107 | 108 | function P.deleteCCUnderSelectedNotes(ccNum) 109 | 110 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 111 | 112 | if takes ~= false then 113 | for i, t in pairs(takes) do 114 | 115 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 116 | 117 | for n = 0, notes, 1 do --Each note event 118 | 119 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 120 | 121 | if n_selected == true then --If this note is selected 122 | 123 | if n < notes then --There are more notes after this 124 | retval, nn_selected, nn_muted, nn_ppq, nn_endppq, nn_chan, nn_pitch, nn_vel = reaper.MIDI_GetNote(t, n+1); --Get next note 125 | end 126 | 127 | for c = 0, ccs, 1 do --Each CC event 128 | 129 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(t, c) --Get CC data 130 | 131 | --If the CC ppq is within the note's start and end ppq and before the next 132 | --note's start or there is no next note 133 | if (c_ppq >= n_ppq and c_ppq < n_endppq) and (c_ppq < nn_ppq or n+1 == notes) then 134 | if msg2 == ccNum then 135 | reaper.MIDI_DeleteCC(t, c); --Delete CC Event 136 | end 137 | end 138 | end 139 | 140 | end 141 | end 142 | reaper.MIDI_Sort(t) 143 | end 144 | reaper.UpdateArrange(); 145 | end 146 | end 147 | 148 | function P.selectCCEventsUnderSelectedNotes(ccNum) 149 | 150 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 151 | 152 | if takes ~= false then 153 | for i, t in pairs(takes) do 154 | 155 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 156 | 157 | for n = 0, notes, 1 do --Each note event 158 | 159 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 160 | 161 | if n_selected == true then --If the note is selected 162 | for c = 0, ccs, 1 do --Each CC event 163 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(t, c) --Get CC data 164 | 165 | if c_ppq >= n_ppq and c_ppq < n_endppq then --CC ppq is within the note's start and end 166 | if msg2 == ccNum then --If it's on the correct CC 167 | reaper.MIDI_SetCC(t, c, true, NULL, NULL, NULL, NULL, NULL, NULL, true); --Set CC as selected 168 | else 169 | reaper.MIDI_SetCC(t, c, false, NULL, NULL, NULL, NULL, NULL, NULL, true); --Set CC as deselected 170 | end 171 | end 172 | end 173 | end 174 | end 175 | reaper.MIDI_Sort(t) 176 | end 177 | reaper.UpdateArrange(); 178 | end 179 | end 180 | 181 | function P.addIntervalToSelectedNotes(interval) 182 | 183 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 184 | 185 | if takes ~= false then 186 | for i, t in pairs(takes) do 187 | 188 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 189 | 190 | local noteData = {} --Store note data so that new notes can be selected without iterating over them again 191 | for n = 0, notes, 1 do 192 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(t, n) --Get note data 193 | if selected == true then 194 | noteData[n] = {n_ppq=ppq, n_endppq=endppq, n_chan=chan, n_pitch=pitch, n_vel=vel} --Store data 195 | end 196 | end 197 | 198 | if noteData ~= nil then 199 | for n, d in pairs(noteData) do --Go through selected note data 200 | --Add new note 201 | reaper.MIDI_InsertNote(t, false, false, d.n_ppq, d.n_endppq, d.n_chan, d.n_pitch+interval, d.n_vel, true) 202 | end 203 | end 204 | 205 | reaper.MIDI_Sort(t) 206 | end 207 | reaper.UpdateArrange(); 208 | end 209 | end 210 | 211 | function P.increaseCCAtSelectedNotesByPercentage(ccNum, percentage) 212 | 213 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 214 | 215 | if takes ~= false then 216 | for i, t in pairs(takes) do 217 | 218 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 219 | 220 | for n = 0, notes, 1 do --Each note event 221 | 222 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 223 | 224 | if n_selected == true then --If the note is selected 225 | 226 | if n < notes then --There are more notes after this 227 | retval, nn_selected, nn_muted, nn_ppq, nn_endppq, nn_chan, nn_pitch, nn_vel = reaper.MIDI_GetNote(t, n+1); --Get next note data 228 | end 229 | 230 | for c = 0, ccs, 1 do --Each CC event 231 | 232 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(t, c) --Get CC data 233 | 234 | if msg2 == ccNum then --It's the correct CC Number 235 | --If the CC ppq is within the note's start and end ppq and before the next 236 | --note's start or there is no next note 237 | if (c_ppq >= n_ppq and c_ppq < n_endppq) and (c_ppq < nn_ppq or n+1 == notes) then 238 | 239 | ccValue = msg3 + math.floor(msg3*(percentage/100)) --Increase CC value 240 | 241 | if ccValue >= 127 then ccValue = 127 end --Don't let value go above max 242 | 243 | reaper.MIDI_SetCC(t, c, NULL, NULL, NULL, NULL, NULL, NULL, ccValue, true); 244 | end 245 | end 246 | end 247 | end 248 | end 249 | reaper.MIDI_Sort(t) 250 | end 251 | reaper.UpdateArrange(); 252 | end 253 | end 254 | 255 | function P.increaseVelocityOfSelectedNotesByPercentage(percentage) 256 | 257 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 258 | 259 | if takes ~= false then 260 | for i, t in pairs(takes) do 261 | 262 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 263 | 264 | for n = 0, notes, 1 do --Each note event 265 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 266 | 267 | if n_selected == true then --If this note is selected 268 | velocity = vel + math.floor(vel*(percentage/100)) --Increase velocity by percentage 269 | if velocity >= 127 then velocity = 127 end --Don't let velocity go above max 270 | reaper.MIDI_SetNote(t, n, NULL, NULL, NULL, NULL, NULL, NULL, velocity, true); 271 | end 272 | end 273 | reaper.MIDI_Sort(t) 274 | end 275 | reaper.UpdateArrange(); 276 | end 277 | end 278 | 279 | function P.increaseCCAtSelectedNotesByAmount(ccNum, amount) 280 | 281 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 282 | 283 | if takes ~= false then 284 | for i, t in pairs(takes) do 285 | 286 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 287 | 288 | for n = 0, notes, 1 do --Each note event 289 | 290 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 291 | 292 | if n_selected == true then --If the note is selected 293 | 294 | if n < notes then --There are more notes after this 295 | retval, nn_selected, nn_muted, nn_ppq, nn_endppq, nn_chan, nn_pitch, nn_vel = reaper.MIDI_GetNote(t, n+1); --Get next note data 296 | end 297 | 298 | for c = 0, ccs, 1 do --Each CC event 299 | 300 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(t, c) --Get CC data 301 | 302 | if msg2 == ccNum then --It's the correct CC Number 303 | --If the CC ppq is within the note's start and end ppq and before the next 304 | --note's start or there is no next note 305 | if (c_ppq >= n_ppq and c_ppq < n_endppq) and (c_ppq < nn_ppq or n+1 == notes) then 306 | 307 | ccValue = msg3 + amount --Increase CC value 308 | if ccValue >= 127 then ccValue = 127 end --Don't let value go above max 309 | reaper.MIDI_SetCC(t, c, NULL, NULL, NULL, NULL, NULL, NULL, ccValue, true); 310 | end 311 | end 312 | end 313 | end 314 | end 315 | reaper.MIDI_Sort(t) 316 | end 317 | reaper.UpdateArrange(); 318 | end 319 | end 320 | 321 | function P.increaseVelocityOfSelectedNotesByAmount(amount) 322 | 323 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 324 | 325 | if takes ~= false then 326 | for i, t in pairs(takes) do 327 | 328 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 329 | 330 | for n = 0, notes, 1 do --Each note event 331 | 332 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 333 | 334 | if n_selected == true then --If this note is selected 335 | velocity = vel + amount --Increase velocity 336 | if velocity >= 127 then velocity = 127 end --Don't let velocity go above max 337 | reaper.MIDI_SetNote(t, n, NULL, NULL, NULL, NULL, NULL, NULL, velocity, true); 338 | end 339 | end 340 | 341 | reaper.MIDI_Sort(t) 342 | end 343 | reaper.UpdateArrange(); 344 | end 345 | 346 | end 347 | 348 | function P.normaliseSelectedCCs(ccNum, threshold) 349 | 350 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 351 | 352 | if takes ~= false then 353 | 354 | for i, t in pairs(takes) do 355 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count note and cc events 356 | 357 | highest = 0; --The highest CC value 358 | ccData = {}; --Store value for all selected CCs (of ccNum) so don't need to use GetCC again 359 | for c = 0, ccs, 1 do --Each CC 360 | retval, c_selected, c_muted, c_ppq, c_chanmsg, c_chan, msg2, msg3 = reaper.MIDI_GetCC(t, c) --Get CC data 361 | 362 | if c_selected == true and msg2 == ccNum then 363 | if msg3 > highest then 364 | highest = msg3 365 | end 366 | ccData[c] = msg3 367 | end 368 | end 369 | 370 | perc = math.abs(highest - threshold) / highest * 100 --Get height difference as a positive percentage 371 | 372 | --Each selected CC value 373 | for j, v in pairs(ccData) do 374 | 375 | --If the highest CC found is higher than the threshold use a negative value to pull the CC value down 376 | if (highest > threshold) then 377 | newCCValue = v - math.ceil(v / 100 * perc) 378 | else 379 | newCCValue = v + math.ceil(v / 100 * perc) 380 | end 381 | 382 | --Lock min/max to full range 383 | if newCCValue <= 0 then newCCValue = 1 end 384 | if newCCValue > 127 then newCCValue = 127 end 385 | 386 | reaper.MIDI_SetCC(t, j, NULL, NULL, NULL, NULL, NULL, NULL, newCCValue, true) 387 | end 388 | reaper.MIDI_Sort(t) 389 | end 390 | reaper.UpdateArrange(); 391 | end 392 | end 393 | 394 | function P.normaliseSelectedVelocities(threshold) 395 | 396 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 397 | 398 | if takes ~= false then 399 | 400 | for i, t in pairs(takes) do 401 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count note and cc events 402 | 403 | highest = 0; --The highest velocity value 404 | noteData = {}; --Store velocity for all selected notes 405 | for n = 0, notes, 1 do --Each note 406 | retval, selected, muted, ppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(t, n) --Get note data 407 | 408 | if selected == true then 409 | if vel > highest then 410 | highest = vel 411 | end 412 | noteData[n] = vel 413 | end 414 | end 415 | 416 | perc = math.abs(highest - threshold) / highest * 100 --Get difference as a positive percentage 417 | 418 | --Each selected note's velocity 419 | for j, v in pairs(noteData) do 420 | 421 | --If the highest velocity found is higher than the threshold use a negative value to pull the velocity down 422 | if (highest > threshold) then 423 | newVel = v - math.floor(v / 100 * perc) 424 | else 425 | newVel = v + math.floor(v / 100 * perc) 426 | end 427 | 428 | --Lock min/max to full range 429 | if newVel <= 0 then newVel = 1 end 430 | if newVel > 127 then newVel = 127 end 431 | 432 | reaper.MIDI_SetNote(t, j, NULL, NULL, NULL, NULL, NULL, NULL, newVel, true) 433 | end 434 | 435 | reaper.MIDI_Sort(t) 436 | end 437 | reaper.UpdateArrange(); 438 | end 439 | end 440 | 441 | --[[ 442 | Author: juliansader 443 | Website: http://forum.cockos.com/showthread.php?t=172782&page=25 444 | -- Returns the textsysex index of a given note's notation info. 445 | -- If no notation info is found, returns -1]]-- 446 | function P.getTextIndexForNote(take, notePPQ, noteChannel, notePitch) 447 | 448 | reaper.MIDI_Sort(take) 449 | _, _, _, countTextSysex = reaper.MIDI_CountEvts(take) 450 | if countTextSysex > 0 then 451 | 452 | -- Use binary search to find text event closest to the left of note's PPQ 453 | local rightIndex = countTextSysex-1 454 | local leftIndex = 0 455 | local middleIndex 456 | while (rightIndex-leftIndex)>1 do 457 | middleIndex = math.ceil((rightIndex+leftIndex)/2) 458 | local textOK, _, _, textPPQ, _, _ = reaper.MIDI_GetTextSysexEvt(take, middleIndex, true, false, 0, 0, "") 459 | if textPPQ >= notePPQ then 460 | rightIndex = middleIndex 461 | else 462 | leftIndex = middleIndex 463 | end 464 | end -- while (rightIndex-leftIndex)>1 465 | 466 | -- Now search through text events one by one 467 | for i = leftIndex, countTextSysex-1 do 468 | local textOK, _, _, textPPQ, type, msg = reaper.MIDI_GetTextSysexEvt(take, i, true, false, 0, 0, "") 469 | -- Assume that text events are order by PPQ position, so if beyond, no need to search further 470 | if textPPQ > notePPQ then 471 | break 472 | elseif textPPQ == notePPQ and type == 15 then 473 | textChannel, textPitch = msg:match("NOTE ([%d]+) ([%d]+)") 474 | if noteChannel == tonumber(textChannel) and notePitch == tonumber(textPitch) then 475 | return i, msg 476 | end 477 | end 478 | end 479 | end 480 | -- Nothing was found 481 | return(-1) 482 | end 483 | 484 | function P.insertCustomTextAtSelectedNotes(text) 485 | 486 | takes = P.getActiveMIDITakes() --Get all active MIDI takes 487 | 488 | if takes ~= false then 489 | 490 | for i, t in pairs(takes) do 491 | 492 | retval, notes, ccs, sysex = reaper.MIDI_CountEvts(t) --Count events 493 | 494 | for n = 0, notes, 1 do --Each note event 495 | 496 | retval, n_selected, n_muted, n_ppq, n_endppq, n_chan, pitch, vel = reaper.MIDI_GetNote(t, n); --Get note data 497 | 498 | if n_selected == true then --If this note is selected 499 | textToInsert = "NOTE 0 " .. pitch .. " custom " .. text 500 | reaper.MIDI_InsertTextSysexEvt(t, n_selected, n_muted, n_ppq, 0x0F, textToInsert) 501 | end 502 | end 503 | 504 | reaper.MIDI_Sort(t) 505 | end 506 | reaper.UpdateArrange(); 507 | end 508 | 509 | end 510 | 511 | return P --Not neccessary but considered good practice apparently -------------------------------------------------------------------------------- /toolbarIcons/toolbar_128th_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_128th_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_128th_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_128th_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_15ma_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_15ma_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_15mb_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_15mb_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_16_temolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_16_temolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_16_tremolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_16_tremolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_16th_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_16th_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_16th_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_16th_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_22ma_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_22ma_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_22mb_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_22mb_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_256th_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_256th_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_256th_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_256th_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_2_temolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_2_temolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_2_tremolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_2_tremolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_32_temolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_32_temolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_32_tremolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_32_tremolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_32nd_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_32nd_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_32nd_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_32nd_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_38_squished_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_38_squished_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_3quarter_flat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_3quarter_flat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_3quarter_sharp_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_3quarter_sharp_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_4_tremolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_4_tremolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_64th_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_64th_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_64th_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_64th_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_8_temolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_8_temolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_8_tremolo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_8_tremolo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_8ba_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_8ba_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_8th_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_8th_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_8th_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_8th_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_8va_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_8va_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_accent_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_accent_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_alto_clef_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_alto_clef_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_arp_down_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_arp_down_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_arp_up_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_arp_up_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_arrow_clef_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_arrow_clef_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_arrow_stem_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_arrow_stem_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_atonal_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_atonal_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_backslash_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_backslash_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_bar_repeat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_bar_repeat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_barline_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_barline_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_bass_clef_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_bass_clef_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_bassa_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_bassa_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_beam2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_beam2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_beam_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_beam_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_big_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_big_t.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_binary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_binary.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_brackets_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_brackets_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_breath_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_breath_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_cautionary_accidental_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_cautionary_accidental_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_clef_pair_1_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_clef_pair_1_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_clef_pair_2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_clef_pair_2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_clefs_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_clefs_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_coda_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_coda_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_colour_voice_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_colour_voice_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_cresc_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_cresc_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_da_capo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_da_capo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_dashed_barline_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_dashed_barline_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_dim_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_dim_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_doit_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_doit_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_dot.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_dotted_barline_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_dotted_barline_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_backslash_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_backslash_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_barline_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_barline_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_dot.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_flat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_flat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_sharp_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_sharp_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_slash_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_slash_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_double_whole_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_double_whole_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_downbow_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_downbow_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_drum_clef_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_drum_clef_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_ds_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_ds_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_end_repeat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_end_repeat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_end_start_repeat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_end_start_repeat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_f_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_f_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_fadeinout_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_fadeinout_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_fall_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_fall_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_fermata_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_fermata_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_ff_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_ff_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_fff_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_fff_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_ffff_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_ffff_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_final_barline_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_final_barline_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_find_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_find_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_flat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_flat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_fp_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_fp_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_gliss_down_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_gliss_down_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_gliss_up_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_gliss_up_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_grace_acciaccatura_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_grace_acciaccatura_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_grace_appoggiatura_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_grace_appoggiatura_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_hairpin_cresc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_hairpin_cresc.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_hairpin_dim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_hairpin_dim.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_hairpin_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_hairpin_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_half_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_half_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_half_note_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_half_note_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_half_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_half_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_hide_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_hide_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_hide_selected_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_hide_selected_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_hide_selected_note_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_hide_selected_note_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_high_voice_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_high_voice_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_key_2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_key_2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_key_3_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_key_3_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_key_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_key_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_left_brace_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_left_brace_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_long_fermata_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_long_fermata_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_loop.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_low_voice_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_low_voice_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_lowermordent_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_lowermordent_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_lyric_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_lyric_text.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_m_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_m_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_marcato_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_marcato_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_media_edges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_media_edges.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_mf_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_mf_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_misc_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_misc_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_mp_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_mp_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_mute_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_mute_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_n_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_n_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_named_notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_named_notes.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_natural_flat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_natural_flat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_natural_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_natural_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_natural_sharp_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_natural_sharp_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_notehead_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_notehead_1.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_notehead_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_notehead_2.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_notehead_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_notehead_3.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_notehead_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_notehead_4.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_notehead_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_notehead_5.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_notehead_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_notehead_6.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_odd_accidentals_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_odd_accidentals_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_open_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_open_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_overlap_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_overlap_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_p_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_p_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_pedal_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_pedal_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_pedal_up_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_pedal_up_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_portato_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_portato_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_pp_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_pp_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_ppp_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_ppp_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_pppp_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_pppp_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_quarter_flat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_quarter_flat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_quarter_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_quarter_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_quarter_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_quarter_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_quarter_rest_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_quarter_rest_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_quarter_sharp_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_quarter_sharp_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_reset_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_reset_default.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_reverse_turn_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_reverse_turn_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_ricochetx3_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_ricochetx3_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_right_brace_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_right_brace_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_roll_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_roll_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_search.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_segno_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_segno_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_segno_variation_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_segno_variation_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_sffz_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_sffz_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_sfp_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_sfp_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_sfz_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_sfz_dynamic.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_sharp_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_sharp_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_short_fermata_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_short_fermata_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_slash_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_slash_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_slide_down_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_slide_down_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_slide_up_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_slide_up_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_slur_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_slur_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_sost_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_sost_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_spacing_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_spacing_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_staccatissimo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_staccatissimo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_staccato_articulation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_staccato_articulation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_staff_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_staff_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_start_repeat_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_start_repeat_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_stem_down_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_stem_down_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_stem_up_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_stem_up_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_tab_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_tab_mode.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_teeth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_teeth.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_tempo_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_tempo_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_tenuto_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_tenuto_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_tie_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_tie_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_time_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_time_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_transpose_2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_transpose_2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_transpose_3_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_transpose_3_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_transpose_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_transpose_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_treble_clef_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_treble_clef_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_tremolo_4_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_tremolo_4_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_trill2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_trill2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_trill_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_trill_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_triple_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_triple_dot.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_triplet_2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_triplet_2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_triplet_3_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_triplet_3_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_triplet_double_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_triplet_double_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_triplet_half_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_triplet_half_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_triplet_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_triplet_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_turn_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_turn_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_uacc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_uacc.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_upbow_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_upbow_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_uppermordent_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_uppermordent_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_varied_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_varied_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_voice_2_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_voice_2_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_voice_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_voice_notation.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_whole_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_whole_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_whole_q_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_whole_q_note.png -------------------------------------------------------------------------------- /toolbarIcons/toolbar_x_notation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidhealey/reascript/e9d094a564a1aadb571171592459a19634255d57/toolbarIcons/toolbar_x_notation.png --------------------------------------------------------------------------------