Old 07-16-2019, 06:49 AM   #1
Trancit
Human being with feelings
 
Join Date: Aug 2009
Location: Gran Canaria
Posts: 403
Default Looking for Midi scripts...

Hi there...

Are there any midi scripts which can compete with the new macros in Studio One 4.5 like shown here in this video (starting 11:32): https://youtu.be/AClroPUVv_w?t=692

like
- "Fill with notes" in a musical sense and with options like this got
- "Thin out notes" in a musical sense and with options like this got
- "Randomize notes"
- "Mirror Notes"
- "Repeat notes to part end"

Any help is very aprecciated :-)
Trancit is offline   Reply With Quote
Old 07-16-2019, 11:26 AM   #2
zookthespook
Human being with feelings
 
Join Date: Mar 2015
Posts: 557
Default

go through the REAPACK rep. you might get these and much more !

cheers
zook
zookthespook is offline   Reply With Quote
Old 07-16-2019, 02:42 PM   #3
Trancit
Human being with feelings
 
Join Date: Aug 2009
Location: Gran Canaria
Posts: 403
Default

I hoped somebody could point me at special ones as there are tons of scripts in reapack...
Going through them one by one and trying to figure out what they do is a bit time intense
Trancit is offline   Reply With Quote
Old 07-17-2019, 03:15 PM   #4
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 2,695
Default

Quote:
Originally Posted by Trancit View Post
- "Fill with notes" in a musical sense and with options like this got
- "Thin out notes" in a musical sense and with options like this got
- "Randomize notes"
I am not aware of any script that offers all those options, but you can try "Lokasenna_MIDI Randomization Tool" for some basic randomization.


Quote:
- "Mirror Notes"
REAPER has several native actions to invert or reverse notes -- just search the Actions list for "inver" and "rever".


Quote:
- "Repeat notes to part end"
Here is a simple script that I sometimes use to duplicate stuff to the end of the take. Just select the events to duplicate, set the time selection across the selected events to the duplication step size, and run the script. (Warning: it is just a simple script that doesn't do error checking etc.)
Code:
reaper.Undo_BeginBlock2(0)

editor = reaper.MIDIEditor_GetActive()
take   = reaper.MIDIEditor_GetTake(editor)
ppq    = reaper.MIDI_GetPPQPosFromProjQN(take, reaper.MIDI_GetProjQNFromPPQPos(take, 0) + 1)
sourceLengthTicks = ppq * reaper.GetMediaSourceLength(reaper.GetMediaItemTake_Source(take))

timeSelStartTime, timeSelEndTime = reaper.GetSet_LoopTimeRange2(0, false, false, 0, 0, false)
timeSelStartTick, timeSelEndTick = reaper.MIDI_GetPPQPosFromProjTime(take, timeSelStartTime), reaper.MIDI_GetPPQPosFromProjTime(take, timeSelEndTime)
timeSelLengthTicks = timeSelEndTick - timeSelStartTick

while (timeSelEndTick + timeSelLengthTicks <= sourceLengthTicks) do
    reaper.MIDIEditor_OnCommand(editor, 40888) -- Edit: Duplicate events within time selection, if any (smart duplicate) (do not trim notes) (all editable)
    timeSelStartTick, timeSelEndTick = timeSelEndTick, timeSelEndTick + timeSelLengthTicks
    reaper.GetSet_LoopTimeRange2(0, true, false, reaper.MIDI_GetProjTimeFromPPQPos(take, timeSelStartTick), reaper.MIDI_GetProjTimeFromPPQPos(take, timeSelEndTick), false)
end

reaper.Undo_EndBlock2(0, "Repeat duplication to take end", -1)

This one is a bit more versatile, as it repeats the selected events within time selection up to the edit cursor position:
Code:
-- Repeat selected events within time selection up to edit cursor position

reaper.Undo_BeginBlock2(0)

editor = reaper.MIDIEditor_GetActive()
take   = reaper.MIDIEditor_GetTake(editor)
cursorTime  = reaper.GetCursorPositionEx(0)
cursorTicks = reaper.MIDI_GetPPQPosFromProjTime(take, cursorTime)

-- Bug: After duplication, REAPER maintains time selection *time* length, instead of *tick* length.
--      which causes problems when duplicating across tempo changes.  
-- So must reset time selection length after each duplication.
timeSelStartTime, timeSelEndTime = reaper.GetSet_LoopTimeRange2(0, false, false, 0, 0, false)
timeSelStartTick, timeSelEndTick = reaper.MIDI_GetPPQPosFromProjTime(take, timeSelStartTime), reaper.MIDI_GetPPQPosFromProjTime(take, timeSelEndTime)
timeSelLengthTicks = timeSelEndTick - timeSelStartTick

while (timeSelEndTick + timeSelLengthTicks <= cursorTicks) do
    reaper.MIDIEditor_OnCommand(editor, 40888) -- Edit: Duplicate events within time selection, if any (smart duplicate) (do not trim notes) (all editable)
    timeSelStartTick, timeSelEndTick = timeSelEndTick, timeSelEndTick + timeSelLengthTicks
    reaper.GetSet_LoopTimeRange2(0, true, false, reaper.MIDI_GetProjTimeFromPPQPos(take, timeSelStartTick), reaper.MIDI_GetProjTimeFromPPQPos(take, timeSelEndTick), false)
end

reaper.ApplyNudge(0, 1, 6, 1, cursorTime, false, 0) -- Reset cursor position
reaper.Undo_EndBlock2(0, "Repeat events up to cursor position", -1)

Last edited by juliansader; 07-18-2019 at 01:34 AM.
juliansader is offline   Reply With Quote
Old 07-18-2019, 03:42 AM   #5
Trancit
Human being with feelings
 
Join Date: Aug 2009
Location: Gran Canaria
Posts: 403
Default

Thank you so far!!!
Trancit is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 10:29 PM.


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