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

Download Script
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

    -- Display a message in the console for debugging
    function Msg(variable)
    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
    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
    reaper.SetEditCurPos(cur_pos, 1, 0)      
MusoBob is online now   Reply With Quote
Old 01-22-2020, 04:02 AM   #2
Human being with feelings
Join Date: Apr 2019
Posts: 130

Great but doesn't work.
alphoc is offline   Reply With Quote
Old 01-22-2020, 07:06 AM   #3
Human being with feelings
MusoBob's Avatar
Join Date: Sep 2014
Posts: 1,458

This should be a newer on
Tempo mapping and manipulation with SWS
ReaTrakStudio Chord Track for Reaper forum
MusoBob is online now   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 PM.

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