--[[ * ReaScript Name: Snap edit cursor to the nearest snap position * Description: * Instructions: * Author: AZ * Version: 1.0 --]] reaper.Undo_BeginBlock() reaper.PreventUIRefresh(1) -- save current selection local old_sel_items = {} for i = 0, reaper.CountSelectedMediaItems(0)-1 do old_sel_items[i+1] = reaper.GetSelectedMediaItem(0, i) end reaper.Main_OnCommand(40142, 0) -- Insert empty item reaper.Main_OnCommand(41184, 0) -- Snap to nearest snap point empty = reaper.GetSelectedMediaItem(0, 0) -- get empty item tr = reaper.GetMediaItem_Track(empty) -- need it for delete time = reaper.GetMediaItemInfo_Value(empty, "D_POSITION") -- get position reaper.SetEditCurPos(time, true, false) -- move edit cursor reaper.DeleteTrackMediaItem(tr, empty) -- delete empty -- restore saved selection reaper.Main_OnCommand(40289, 0) -- Unselect all items for _, item in ipairs(old_sel_items) do reaper.SetMediaItemSelected(item, true) end reaper.PreventUIRefresh(-1) reaper.Undo_EndBlock("Snap edit cursor", -1)