-
Notifications
You must be signed in to change notification settings - Fork 151
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release Update region start to playhead position by ID v1.2
v1.2 Update region start to playhead position by ID
- Loading branch information
1 parent
d267bfb
commit a751854
Showing
1 changed file
with
80 additions
and
0 deletions.
There are no files selected for viewing
80 changes: 80 additions & 0 deletions
80
Regions/edsondelsantoro_Update region start to playhead position by ID.lua
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
-- @description Update region start to playhead position by ID | ||
-- @author Edson Del Santoro | ||
-- @version 1.2 | ||
-- @changelog v1.2 Update region start to playhead position by ID | ||
-- @about | ||
-- # Update region start to playhead position by ID | ||
-- | ||
-- -- # Update region start to playhead position by ID | ||
-- -- This script updates the start time of a region specified by its ID (as shown in the Region/Marker Manager). | ||
-- -- It keeps the region's end time intact and adjusts only the start. | ||
-- | ||
-- 1. Set the playhead to the start position that you want. | ||
-- 2. Execute this script. | ||
-- 3. Enter the Region ID that you want to update Start timming. | ||
-- | ||
-- That's it. | ||
|
||
|
||
SCRIPT_NAME = "Update region start to playhead position by ID" | ||
|
||
reaper.ClearConsole() | ||
|
||
function Msg(variable) | ||
reaper.ShowConsoleMsg(tostring(variable) .. "\n") | ||
end | ||
|
||
-- Get playhead position | ||
playhead_position = reaper.GetCursorPosition() | ||
|
||
-- Get total number of markers and regions | ||
retval, num_markers, num_regions = reaper.CountProjectMarkers(0) | ||
|
||
if num_regions == 0 then | ||
reaper.ShowMessageBox("No regions found in the project.", SCRIPT_NAME, 0) | ||
return | ||
end | ||
|
||
-- Ask the user for the ID of the region to update | ||
retval, user_input = reaper.GetUserInputs(SCRIPT_NAME, 1, "Enter Region ID (as shown in Region/Marker Manager):", "") | ||
if not retval or user_input == "" then return end | ||
|
||
region_id = tonumber(user_input) | ||
|
||
if region_id == nil or region_id < 0 then | ||
reaper.ShowMessageBox("Invalid Region ID. Please enter a valid number.", SCRIPT_NAME, 0) | ||
return | ||
end | ||
|
||
-- Find the region with the matching ID | ||
selected_region = nil | ||
for i = 0, num_markers + num_regions - 1 do | ||
retval, isrgn, rgn_start, rgn_end, rgn_name, rgn_index = reaper.EnumProjectMarkers(i) | ||
|
||
if isrgn and rgn_index == region_id then | ||
selected_region = {rgn_start = rgn_start, rgn_end = rgn_end, rgn_name = rgn_name, rgn_index = rgn_index, region_marker_index = i} | ||
break | ||
end | ||
end | ||
|
||
if selected_region == nil then | ||
reaper.ShowMessageBox("No region found with ID " .. region_id .. ". Please check the Region/Marker Manager.", SCRIPT_NAME, 0) | ||
return | ||
end | ||
|
||
-- Update region start time | ||
new_start = playhead_position | ||
rgn_end = selected_region.rgn_end | ||
region_marker_index = selected_region.region_marker_index | ||
rgn_name = selected_region.rgn_name | ||
|
||
-- Begin undo-block | ||
reaper.Undo_BeginBlock2(0) | ||
|
||
reaper.SetProjectMarkerByIndex(0, region_marker_index, true, new_start, rgn_end, selected_region.rgn_index, rgn_name, 0) | ||
|
||
-- End undo-block | ||
reaper.Undo_EndBlock2(0, SCRIPT_NAME, -1) | ||
|
||
reaper.UpdateArrange() | ||
reaper.ShowMessageBox("Region '" .. rgn_name .. "' (ID " .. region_id .. ") start updated to playhead position.", SCRIPT_NAME, 0) |