Prev Previous Post   Next Post Next
Old 02-19-2019, 08:40 PM   #1
MusoBob
Human being with feelings
 
MusoBob's Avatar
 
Join Date: Sep 2014
Posts: 2,643
Default A: Script To Fit Item To Tempo Map

Download Script
https://www.dropbox.com/s/cc4or4jke8...20map.zip?dl=1
If you have ReaTrak put the script in that folder else Scripts folder.



This allows you to drag any audio into a tempo mapped session and fit to the tempo map just like most other DAWs do but not Reaper, it works okay but may loops/lengthens a section (or shortens if going down in tempo) on the end when it changes playback rate, not sure how to avoid that so I just set it to not loop but the length is still added, so just adjust it manually before gluing.

You can cancel out of the Glue item
adjust the end length manually
select all items on the track
then in the Action window type Item: Remove fade in and fade out, and Run
then right click > Glue

Here's the Lua Script

Code:
    -- Display a message in the console for debugging
    
    function Msg(variable)
      reaper.ShowConsoleMsg(tostring(variable).."\n")
    end
    cur_pos = reaper.GetCursorPosition()
    retval, org_bpm = reaper.GetUserInputs("Set Item's Original Tempo", 1, "Enter item's tempo (bpm):", "" )
    
    if retval then
    reaper.Main_OnCommand(40042,0) -- Transport: Go to start of project
    tempo_markers_count = reaper.CountTempoTimeSigMarkers(0)
    for i = 0, tempo_markers_count - 1 do
    
        reaper.Main_OnCommand(40759,0) --Item: Split items at edit cursor (select right)
        retval, timepos, measurepos, beatpos, bpm, timesig_num, timesig_denom, lineartempo = reaper.GetTempoTimeSigMarker(0, i)
        item = reaper.GetSelectedMediaItem(0, 0)
        take = reaper.GetMediaItemTake(item, 0)
        playrate = bpm / org_bpm
        reaper.SetMediaItemTakeInfo_Value( take, "D_PLAYRATE", playrate )
        reaper.Main_OnCommand(41821,0) --Move edit cursor to next tempo or time signature change
        
    end    
        
    reaper.SetMediaItemInfo_Value(item, "B_LOOPSRC", 0)
    
    Info2 = [[
      
    "If you want to glue the items together"
    
    "make sure the end is correct"
      
    "else cancel out and adjust it"
    
    "then Remove fade in and fade out then glue" ]]
    
    reaper.MB(Info2, "Information", 0)
    
    
    retval,input  = reaper.GetUserInputs("Glue Items", 1, "This will glue split item", "")
    
    if retval then
       reaper.Main_OnCommand(40421,0) --Item: Select all items in track
       reaper.Main_OnCommand(41193,0) --Item: Remove fade in and fade out
       reaper.Main_OnCommand(41588,0) --Item: Glue items
    end
    reaper.SetEditCurPos(cur_pos, 1, 0)      
    
end
MusoBob is offline   Reply With Quote
 

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 04:57 AM.


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