From 865118cbeac95c29ab12e7e28eeee3b73b26d3ea Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Mon, 19 May 2025 18:49:55 +0100 Subject: [PATCH 1/6] Initial work begun --- .../Get name of playhead updates in QLab.lua | 97 +++++++++++++++++++ Miscellaneous/osc.lua | 38 ++++++++ 2 files changed, 135 insertions(+) create mode 100644 Miscellaneous/Get name of playhead updates in QLab.lua create mode 100644 Miscellaneous/osc.lua diff --git a/Miscellaneous/Get name of playhead updates in QLab.lua b/Miscellaneous/Get name of playhead updates in QLab.lua new file mode 100644 index 0000000..fbe99bc --- /dev/null +++ b/Miscellaneous/Get name of playhead updates in QLab.lua @@ -0,0 +1,97 @@ +--[[ + @description Get name of cue from QLab + @author Ben Smith + @link + Author https://www.bensmithsound.uk + Repository https://github.com/bsmith96/Reaper-Scripts + @version 1.0 + @changelog + + Initial version + @metapackage + @provides + [main] . > bsmith96_{filename}.lua + @about + # Get cue name from QLab + Written by Ben Smith - May 2025 + + ### Info + * Using a custom OSC config, this allows you to get the name of the playhead in QLab. + * This will actually be one cue out and really annoying, but should be a proof of concept. + + ### Usage + * + + ### User customisation + * +]] + + +-- ========================================================= +-- =============== USER CUSTOMISATION AREA =============== +-- ========================================================= + +--------- End of user customisation area -- + + +-- ========================================================= +-- ================= GLOBAL VARIABLES ==================== +-- ========================================================= + +local r = reaper + +-- get the script's name and directory +local scriptName = ({r.get_action_context()})[2]:match("([^/\\_]+)%.lua$") +local scriptDirectory = ({r.get_action_context()})[2]:sub(1, ({r.get_action_context()})[2]:find("\\[^\\]*$")) +local scriptFolder = scriptDirectory:gsub(scriptName..".lua", "") + + +package.path = scriptFolder .. '?.lua' + +-- Require the osc module +local osc = require('osc') + +-- debug +--local msg = osc.get() +--if msg then +-- reaper.ShowMessageBox("OSC address: " .. msg.address .. ", argument: " .. (msg.arg and msg.arg or "(nil)"), "Info", 0) +--else +-- reaper.ShowMessageBox("Invalid or no OSC message", "Error", 0) +--end + + +-- ========================================================= +-- ====================== FUNCTIONS ====================== +-- ========================================================= + +-- ========================================================= +-- ====================== UTILITIES ====================== +-- ========================================================= + +-- Deliver messages and add new line in console +function dbg(dbg) + r.ShowConsoleMsg(tostring(dbg) .. "\n") +end + +-- Deliver messages using message box +function msg(msg, title) + local title = title or scriptName + r.MB(tostring(msg), title, 0) +end + + +-- ========================================================= +-- =================== MAIN ROUTINE ====================== +-- ========================================================= + +r.Undo_BeginBlock() + +-- get OSC message +local msg = osc.get() + +-- Create a marker at the current position, with the args of OSC message as the marker name +r.AddProjectMarker(0,0,r.GetPlayPosition(),0,msg.arg,-1) + +-- Send OSC message to QLab to request the cue name from cue ID + + +r.Undo_EndBlock(scriptName, -1) \ No newline at end of file diff --git a/Miscellaneous/osc.lua b/Miscellaneous/osc.lua new file mode 100644 index 0000000..90a9464 --- /dev/null +++ b/Miscellaneous/osc.lua @@ -0,0 +1,38 @@ +-- osc.lua + +-- Utility functions to get and parse OSC message and argument from REAPER action context + +local osc = {} + +function osc.parse(context) + local msg = {} + + -- Extract the message + msg.address = context:match("^osc:/([^:[]+)") + + if msg.address == nil then + return nil + end + + -- Extract float or string value + local value_type, value = context:match(":([fs])=([^%]]+)") + + if value_type == "f" then + msg.arg = tonumber(value) + elseif value_type == "s" then + msg.arg = value + end + + return msg +end + +function osc.get() + local is_new, name, sec, cmd, rel, res, val, ctx = reaper.get_action_context() + if ctx == nil or ctx == '' then + return nil + end + + return osc.parse(ctx) +end + +return osc \ No newline at end of file From b0f15136a66666bb40d67769195f472e9290a918 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Thu, 22 May 2025 20:42:41 +0100 Subject: [PATCH 2/6] Some more work --- ...markers from Qlab Cue IDs to Cue Names.lua | 85 ++++++++++++++++++ Miscellaneous/Rename markers part 2.lua | 87 +++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua create mode 100644 Miscellaneous/Rename markers part 2.lua diff --git a/Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua b/Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua new file mode 100644 index 0000000..49be280 --- /dev/null +++ b/Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua @@ -0,0 +1,85 @@ +--[[ + @description Rename markers from QLab Cue IDs to Cue Names + @author Ben Smith + @link + Author https://www.bensmithsound.uk + Repository https://github.com/bsmith96/Reaper-Scripts + @version 1.0 + @changelog + + Initial version + @metapackage + @provides + [main] . > bsmith96_{filename}.lua + @about + # {Package name} + Written by Ben Smith - May 2025 + + ### Info + * + + ### Usage + * + + ### User customisation + * +]] + + +-- ========================================================= +-- =============== USER CUSTOMISATION AREA =============== +-- ========================================================= + +--------- End of user customisation area -- + + +-- ========================================================= +-- ================= GLOBAL VARIABLES ==================== +-- ========================================================= + +local r = reaper + +-- get the script's name and directory +local scriptName = ({r.get_action_context()})[2]:match("([^/\\_]+)%.lua$") +local scriptDirectory = ({r.get_action_context()})[2]:sub(1, ({r.get_action_context()})[2]:find("\\[^\\]*$")) +local scriptFolder = scriptDirectory:gsub(scriptName..".lua", "") + +package.path = scriptFolder .. '?.lua' + +-- Require the osc module +local osc = require('osc') + +-- ========================================================= +-- ====================== FUNCTIONS ====================== +-- ========================================================= + + +-- ========================================================= +-- ====================== UTILITIES ====================== +-- ========================================================= + +-- Deliver messages and add new line in console +function dbg(dbg) + r.ShowConsoleMsg(tostring(dbg) .. "\n") +end + +-- Deliver messages using message box +function msg(msg, title) + local title = title or scriptName + r.MB(tostring(msg), title, 0) +end + + +-- ========================================================= +-- =================== MAIN ROUTINE ====================== +-- ========================================================= + +r.Undo_BeginBlock() + +local i=1 + +local retval, isrgn, pos, rgnend, name, markrgnindexnumber, color = reaper.EnumProjectMarkers3( 0, i ) +if not isrgn then + r.GoToMarker(0,i,1) +end + +r.Undo_EndBlock(scriptName, -1) \ No newline at end of file diff --git a/Miscellaneous/Rename markers part 2.lua b/Miscellaneous/Rename markers part 2.lua new file mode 100644 index 0000000..b6da00f --- /dev/null +++ b/Miscellaneous/Rename markers part 2.lua @@ -0,0 +1,87 @@ +--[[ + @description + @author Ben Smith + @link + Author https://www.bensmithsound.uk + Repository https://github.com/bsmith96/Reaper-Scripts + @version 1.0 + @changelog + + Initial version + @metapackage + @provides + [main] . > bsmith96_{filename}.lua + @about + # {Package name} + Written by Ben Smith - {Month Year} + + ### Info + * + + ### Usage + * + + ### User customisation + * +]] + + +-- ========================================================= +-- =============== USER CUSTOMISATION AREA =============== +-- ========================================================= + +--------- End of user customisation area -- + + +-- ========================================================= +-- ================= GLOBAL VARIABLES ==================== +-- ========================================================= + +local r = reaper + +-- get the script's name and directory +local scriptName = ({r.get_action_context()})[2]:match("([^/\\_]+)%.lua$") +local scriptDirectory = ({r.get_action_context()})[2]:sub(1, ({r.get_action_context()})[2]:find("\\[^\\]*$")) +local scriptFolder = scriptDirectory:gsub(scriptName..".lua", "") + +package.path = scriptFolder .. '?.lua' + +-- Require the osc module +local osc = require('osc') + +-- ========================================================= +-- ====================== FUNCTIONS ====================== +-- ========================================================= + + +-- ========================================================= +-- ====================== UTILITIES ====================== +-- ========================================================= + +-- Deliver messages and add new line in console +function dbg(dbg) + r.ShowConsoleMsg(tostring(dbg) .. "\n") +end + +-- Deliver messages using message box +function msg(msg, title) + local title = title or scriptName + r.MB(tostring(msg), title, 0) +end + + +-- ========================================================= +-- =================== MAIN ROUTINE ====================== +-- ========================================================= + +r.Undo_BeginBlock() + +-- get OSC message +local msg = osc.get() + + +local newName = msg.arg + + +dbg("didn't work") + +r.Undo_EndBlock(scriptName, -1) \ No newline at end of file From 50cb9d46df95b752b89475a40989ffcfdb3faa64 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Mon, 2 Jun 2025 15:49:46 +0100 Subject: [PATCH 3/6] Made work with 'listen' rather than 'update' --- .DS_Store | Bin 0 -> 6148 bytes .../Create marker with name via OSC.lua | 34 +- Markers/Qlab5.ReaperOSC | 533 ++++++++++++++++++ {Miscellaneous => Markers}/osc.lua | 0 Miscellaneous/.DS_Store | Bin 0 -> 6148 bytes ...markers from Qlab Cue IDs to Cue Names.lua | 85 --- Miscellaneous/Rename markers part 2.lua | 87 --- 7 files changed, 561 insertions(+), 178 deletions(-) create mode 100644 .DS_Store rename Miscellaneous/Get name of playhead updates in QLab.lua => Markers/Create marker with name via OSC.lua (61%) create mode 100644 Markers/Qlab5.ReaperOSC rename {Miscellaneous => Markers}/osc.lua (100%) create mode 100644 Miscellaneous/.DS_Store delete mode 100644 Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua delete mode 100644 Miscellaneous/Rename markers part 2.lua diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..893916386b6bc8b3a02ad4e32bf73741fe3faf27 GIT binary patch literal 6148 zcmeHK!AiqG5S^{nrijpkLXQhx3szf2@e-;Yy%^DhN==%e!I+h%HHT8jS%1hc@q3)v z-4;s~Z(3xg%)ZI&%x?B=+06ie=nTVcfEoZesDz~|HeU$!lg>%Wddi4Gj}bv1vM}o< zftrhE$09O7dsl%|@NwrJ;M4x81h*8{uq%cPdf1iV&xaH(1w+V!JbMZf6=2j`@RY>a zpxJyErKR%nO2w%-tImyguX1nT4~ALC?_bf=xl&0mvHjp8j`D78{Ya$)KTe~*PKd(@ zL#{95G*o#<4bw2wxt{58s!p|AtB*$Q{oRIa?Y71ZIXc*BHe|cCHy&4=jm@pYv+hIk zn5q}UxS*AgtQnZLuiE$R3e6w+MO8`XrjMRcQ)e@8=ExHy9gV=*2Oe&&D6}H3>CLR6K z#<>;?gC-q>Ek1;uS=b6i=-F|6sl!3I2DxPhn1NXamds;~?*EhT>;Ks#eqsigfq%t- zC?9*r9bA&VTjv%>cdbOdMJ1uQ!r(Lo4Sf}3EM3KQR4wS2WFWd03xnuE;ST{#12@dT HuQKofVZvZk literal 0 HcmV?d00001 diff --git a/Miscellaneous/Get name of playhead updates in QLab.lua b/Markers/Create marker with name via OSC.lua similarity index 61% rename from Miscellaneous/Get name of playhead updates in QLab.lua rename to Markers/Create marker with name via OSC.lua index fbe99bc..64ca3d5 100644 --- a/Miscellaneous/Get name of playhead updates in QLab.lua +++ b/Markers/Create marker with name via OSC.lua @@ -1,5 +1,5 @@ --[[ - @description Get name of cue from QLab + @description Create marker with name via OSC @author Ben Smith @link Author https://www.bensmithsound.uk @@ -10,16 +10,38 @@ @metapackage @provides [main] . > bsmith96_{filename}.lua + osc.lua + Qlab5.ReaperOSC @about - # Get cue name from QLab - Written by Ben Smith - May 2025 + # Create marker with name via OSC + Written by Ben Smith - June 2025 ### Info - * Using a custom OSC config, this allows you to get the name of the playhead in QLab. - * This will actually be one cue out and really annoying, but should be a proof of concept. + * REQUIRES "osc.lua" IN THE SAME PATH + * Intended for integration between Reaper and QLab, allowing markers when cues are fired when Multitrack Recording a live show ### Usage - * + * Create a custom OSC shortcut for this script (in the actions menu) + * Send this OSC trigger with a string as the first argument. This string will become the name of the marker. + * For QLab integration: + * Reaper Preferences > Control/OSC/Web + * Add a new device + * Device name: QLab + * Configure device IP+local port + * Device Port: 53000 + * Device IP: QLAB IP ADDRESS + * Local listen port: 53001 + * Local IP: current IP address + * Allow binding messages to REAPER actions and FX learn: TRUE + * Pattern config: open config directory + * Copy the provided file "Qlab5.ReaperOSC" into this directory + * Pattern config: refresh list, then choose Qlab5 + * Check your QLab settings - you need to ensure Network > OSC Access > No passcode has "view" access + * Now, Reaper should send a message to QLab whenever you start reaper playback, "/listen/go/name", which asks Reaper to send the cue name whenever "go" is fired. + * In the actions menu, find this script. + * Press play on reaper + * Press "go" on any cue in Qlab + * This should set the custom shortcut for the action to "/qlab/event/workspace/go/name" ### User customisation * diff --git a/Markers/Qlab5.ReaperOSC b/Markers/Qlab5.ReaperOSC new file mode 100644 index 0000000..4767dc6 --- /dev/null +++ b/Markers/Qlab5.ReaperOSC @@ -0,0 +1,533 @@ +# OSC pattern config file. + +# Make a copy of this file, rename it, and edit the file to create a +# custom pattern configuration. + +# For basic information about OSC and REAPER, see +# http://www.cockos.com/reaper/sdk/osc/osc.php . + +# ---------------------------------------------------------------- + +# Default settings for how this device displays information. + +# (these can all be overridden by the device sending OSC messages, search for these +# names below to see the messages) +# +# DEVICE_TRACK_COUNT is how many tracks this device can display at once +# (the track bank size). +# DEVICE_SEND_COUNT/DEVICE_RECEIVE_COUNT is how many sends and receives this +# device can display at once. +# DEVICE_FX_COUNT is how many track insert FX this device can display at once. +# DEVICE_FX_PARAM_COUNT is how many FX parameters this device can display at once +# (the FX parameter bank size). +# DEVICE_FX_INST_PARAM_COUNT is how many FX instrument parameters this device can +# display at once (the FX instrument parameter bank size). +# DEVICE_MARKER_COUNT is how many markers for which this device would like to +# receive information +# DEVICE_REGION_COUNT is how many regions for which this device would like to +# receive information + +DEVICE_TRACK_COUNT 8 +DEVICE_SEND_COUNT 4 +DEVICE_RECEIVE_COUNT 4 +DEVICE_FX_COUNT 8 +DEVICE_FX_PARAM_COUNT 16 +DEVICE_FX_INST_PARAM_COUNT 16 +DEVICE_MARKER_COUNT 10 +DEVICE_REGION_COUNT 10 + +# ---------------------------------------------------------------- + +# Default values for how this device behaves. The device has a selected track, bank +# of tracks, and FX, which are not necessarily the same as the selected track or FX +# in the REAPER window. + +# REAPER_TRACK_FOLLOWS determines whether the selected track in REAPER changes +# only when the user changes it in the REAPER window, or if it follows the track +# currently selected in the OSC device. +# Allowed values: REAPER, DEVICE + +# DEVICE_TRACK_FOLLOWS determines whether the selected track in the device changes +# only when the device changes it, or if it follows the last touched track in the +# REAPER window. +# Allowed values: DEVICE, LAST_TOUCHED + +# DEVICE_TRACK_BANK_FOLLOWS determines whether the selected track bank in the device +# changes only when the device changes it, or if it follows the REAPER mixer view. +# Allowed values: DEVICE, MIXER + +# DEVICE_FX_FOLLOWS determines whether the selected FX in the device changes only +# when the device changes it, or if it follows the last touched or currently focused +# FX in the REAPER window. +# Allowed values: DEVICE, LAST_TOUCHED, FOCUSED + +# DEVICE_EQ determines whether sending any FX_EQ message will automatically insert +# ReaEQ on the target track if it does not exist, or the message will only affect +# an existing instance of ReaEQ. +# Allowed values: INSERT, EXISTING + +# DEVICE_ROTARY_CENTER defines the argument that represents no change, for rotary +# controls. +# Allowed values: 0, 0.5 + +REAPER_TRACK_FOLLOWS REAPER +DEVICE_TRACK_FOLLOWS DEVICE +DEVICE_TRACK_BANK_FOLLOWS DEVICE +DEVICE_FX_FOLLOWS DEVICE + +DEVICE_EQ INSERT + +DEVICE_ROTARY_CENTER 0 + +# ---------------------------------------------------------------- + +# Each line below is an action description in all caps, followed by a number of OSC +# message patterns. You can add, remove, or change patterns, delete lines, or comment +# out lines by adding '#', but do not change the action descriptions. + +# The patterns following the action are the messages that REAPER will send and receive +# to and from the OSC device. An action can have no patterns (and will be ignored), +# one pattern, or many patterns. + +# The patterns may contain the wildcard character '@'. (This is REAPER-only, not part +# of the OSC specification.) The '@' wildcard is used to specify the action target. + +# ---------------------------------------------------------------- + +# The OSC device sends patterns to trigger actions, and REAPER sends patterns to the +# device as feedback. OSC patterns can include arguments, which are be interpreted +# in various ways, defined by a flag immediately before the pattern. + +# n: normalized floating-point argument. 0 means the minimum value, and 1 means the +# maximum value. This can be used for continous controls like sliders and knobs. + +# Example: TRACK_VOLUME n/track/volume n/track/@/volume +# The device sends /track/3/volume 0.5 to set the volume to 0.5 for track 3, or +# /track/volume 0.5 to set the volume for the track that is currently selected in +# the device. REAPER sends /track/3/volume 0.5 when track 3 volume changes to 0.5. +# If track 3 is currently selected in the device, REAPER will also send +# /track/volume 0.5. The floating-point argument represents as the track fader +# position in the REAPER window. 0 sets the fader all the way down, 1 sets the fader +# all the way up, 0.5 sets the fader exactly in the middle. Therefore, the actual +# volume that is set depends on the REAPER track fader preference settings. + +# f: raw floating-point argument. The argument is interpreted directly, to set or +# report a value. + +# Example: TEMPO f/tempo/raw +# The device sends /tempo/raw 100.351 to change the REAPER tempo to 100.351 bpm. +# REAPER sends /tempo/raw 120 when the tempo changes to 120 bpm. + +# Normalized and raw floating-point arguments also support multiple parameters +# sent from the device. +# Example: FX_PARAM_VALUE n/track/@/fx/@/fxparam/@/value +# The device can send /track/3/fx/1,2,5/fxparam/6,7,7/value 0.25 0.5 0.75 +# to set three FX parameter values at once, to 0.25, 0.5, 0.75 respectively. + +# b: binary argument, either 0 or 1. The device sets or clears the state when +# sending the message. Can be used to emulate switches or momentary controls. + +# Example: TRACK_MUTE b/track/mute b/track/@/mute +# The device sends /track/3/mute 1 to mute track 3, or /track/mute 1 to mute the +# track that is currently selected in the device. /track/3/mute 0 will unmute +# track 3. REAPER sends /track/3/mute 1 when track 3 is muted, and /track/3/mute 0 +# when track 3 is unmuted. If track 3 is currently selected in the device, REAPER +# will also send /track/mute 1 and /track/mute 0. + +# Example: REWIND b/rewind +# The device sends /rewind 1 to begin rewinding, and sends /rewind 0 to stop +# rewinding. REAPER sends /rewind 1 when the rewind button in the REAPER window is +# pressed, and /rewind 0 when the button is released. + +# t: trigger or toggle message. The device triggers the action, or toggles the +# state, when the pattern is sent with no arguments, or with an argument of 1. +# The feedback values REAPER sends are identical to those sent for binary +# arguments. + +# Example: METRONOME t/click +# The device sends /click or /click 1 to toggle the metronome on or off. REAPER +# sends /click 1 when the metronome is enabled, and /click 0 when the metronome +# is disabled. + +# r: rotary. The device triggers the action in the forward direction when sent +# with an argument greater than ROTARY_CENTER, and in the reverse direction when +# sent with an argument less than ROTARY_CENTER. For some messages, the magnitude +# of the argument affects the rate of change. REAPER does not send feedback for +# these messages. + +# Example: SCRUB r/scrub +# The device sends /scrub 1 to scrub forward, and /scrub -1 to scrub in reverse +# (if ROTARY_CENTER is 0). + +# s: string. These messages include a string argument. Many of these messages +# are sent from REAPER to the device for feedback/display, but some can be sent +# from the device to REAPER. + +# Example: TRACK_NAME s/track/name s/track/@/name +# The device sends /track/3/name "vox" to rename track 3 in REAPER, or /track/name +# "vox" to rename the track that is currently selected in the device. REAPER sends +# /track/3/name "vox" to report that name of track 3 is "vox". If track 3 is +# currently selected in the device, REAPER will also send /track/name "vox". + +# Example: DEVICE_FX_FOLLOWS s/fxfollows +# The device sends /fxfollows "FOCUSED" to inform REAPER that the selected FX in the +# device will now follow the FX that is focused in the REAPER window. + +# i: integer. These messages include an integer argument, and are sent from the +# device to REAPER. + +# Example: ACTION i/action t/action/@ +# The device sends /action 40757 or /action/40757 to trigger the REAPER action +# "split items at edit cursor". See the REAPER actions window for a complete list +# of action command ID numbers. + +# Example: DEVICE_TRACK_BANK_SELECT i/bankedit t/bankedit/@ +# The device sends /bankedit 2 or /bankedit/2 to inform REAPER that the active +# track bank is bank 2. If NUM_TRACKS is 8, that means REAPER will now interpret +# a message like /track/1/volume as targeting the volume for track 9, and REAPER +# will only send the device feedback messages for tracks 9-16. + +# ---------------------------------------------------------------- + +# Note: the default configuration includes a lot of feedback messages, which can +# flood the device. Avoid flooding by removing messages (by deleting the patterns, +# or commenting out the lines) that the device does not want, especially the +# TIME, BEAT, SAMPLES, FRAMES, VU, FX_PARAM, LAST_MARKER, LAST_REGION messages. + +# Note: FX parameter feedback will only be sent for the track that is currently +# selected in the device. If messages exist that can target FX on other tracks, +# feedback will be sent whenever the parameter values change. This can be a lot of +# data, so only include those messages if you want the feedback. +# Example: FX_PARAM_VALUE /fxparam/@/value /fx/@/fxparam/@/value +# This action can only target FX on the currently selected track, so feedback will +# only be sent for that track. +# Example: FX_PARAM_VALUE /fxparam/@/value /fx/@/fxparam/@/value /track/@/fx/@/fxparam/@/value +# This action can target FX on any track, so feedback will be sent for all tracks. + +# Note: multiple patterns for a given action can all be listed on the same line, +# or split onto separate lines. + +# ---------------------------------------------------------------- + +# The default REAPER OSC pattern configuration follows. To create a custom +# configuration, copy this file and edit the copy. + + +SCROLL_X- b/scroll/x/- r/scroll/x +SCROLL_X+ b/scroll/x/+ r/scroll/x +SCROLL_Y- b/scroll/y/- r/scroll/y +SCROLL_Y+ b/scroll/y/+ r/scroll/y +ZOOM_X- b/zoom/x/- r/zoom/x +ZOOM_X+ b/zoom/x/+ r/zoom/x +ZOOM_Y- b/zoom/y/- r/zoom/y +ZOOM_Y+ b/zoom/y/+ r/zoom/y + +# TIME f/time s/time/str +# BEAT s/beat/str +# SAMPLES f/samples s/samples/str +# FRAMES s/frames/str + +METRONOME t/click +REPLACE t/replace +REPEAT t/repeat + +RECORD t/record +STOP t/stop +# PLAY t/play +# PLAY t/workspace/AADD104B-0E8C-4D2F-8A8E-62E54B040DDE/updates +PLAY t/listen/go/name +PAUSE t/pause + +AUTO_REC_ARM t/autorecarm +SOLO_RESET t/soloreset +ANY_SOLO b/anysolo + +REWIND b/rewind +FORWARD b/forward + +REWIND_FORWARD_BYMARKER t/bymarker +REWIND_FORWARD_SETLOOP t/editloop +GOTO_MARKER i/marker t/marker/@ +GOTO_REGION i/region t/region/@ + +SCRUB r/scrub + +PLAY_RATE n/playrate f/playrate/raw r/playrate/rotary s/playrate/str +TEMPO n/tempo f/tempo/raw r/tempo/rotary s/tempo/str + +# writing a marker or region time may change its index -- you should use the *ID_ versions below if needed +MARKER_NAME s/marker/@/name +MARKER_NUMBER s/marker/@/number/str +MARKER_TIME f/marker/@/time +REGION_NAME s/region/@/name +REGION_NUMBER s/region/@/number/str +REGION_TIME f/region/@/time +REGION_LENGTH f/region/@/length +LAST_MARKER_NAME s/lastmarker/name +LAST_MARKER_NUMBER s/lastmarker/number/str +LAST_MARKER_TIME f/lastmarker/time +LAST_REGION_NAME s/lastregion/name +LAST_REGION_NUMBER s/lastregion/number/str +LAST_REGION_TIME f/lastregion/time +LAST_REGION_LENGTH f/lastregion/length + + +# these are write-only, ID is the "NUMBER" field from above -- if not found, creates the marker/region +MARKERID_NAME s/marker_id/@/name +MARKERID_TIME f/marker_id/@/time +MARKERID_NUMBER i/marker_id/@/number +REGIONID_NAME s/region_id/@/name +REGIONID_TIME f/region_id/@/time +REGIONID_LENGTH f/region_id/@/length +REGIONID_NUMBER i/region_id/@/number + +LOOP_START_TIME f/loop/start/time +LOOP_END_TIME f/loop/end/time + +MASTER_VOLUME n/master/volume s/master/volume/str +MASTER_PAN n/master/pan s/master/pan/str +MASTER_VU n/master/vu +MASTER_VU_L n/master/vu/L +MASTER_VU_R n/master/vu/R + +MASTER_SEND_NAME s/master/send/@/name +MASTER_SEND_VOLUME n/master/send/@/volume s/master/send/@/volume/str +MASTER_SEND_PAN n/master/send/@/pan s/master/send/@/pan/str + +TRACK_NAME s/track/name s/track/@/name +TRACK_NUMBER s/track/number/str s/track/@/number/str + +TRACK_MUTE b/track/mute b/track/@/mute t/track/mute/toggle t/track/@/mute/toggle +TRACK_SOLO b/track/solo b/track/@/solo t/track/solo/toggle t/track/@/solo/toggle +TRACK_REC_ARM b/track/recarm b/track/@/recarm t/track/recarm/toggle t/track/@/recarm/toggle + +TRACK_MONITOR b/track/monitor b/track/@/monitor i/track/monitor i/track/@/monitor +TRACK_SELECT b/track/select b/track/@/select + +TRACK_VU n/track/vu n/track/@/vu +TRACK_VU_L n/track/vu/L n/track/@/vu/L +TRACK_VU_R n/track/vu/R n/track/@/vu/R +TRACK_VOLUME n/track/volume n/track/@/volume +TRACK_VOLUME s/track/volume/str s/track/@/volume/str +TRACK_VOLUME f/track/volume/db f/track/@/volume/db +TRACK_PAN n/track/pan n/track/@/pan s/track/pan/str s/track/@/pan/str +TRACK_PAN2 n/track/pan2 n/track/@/pan2 s/track/pan2/str s/track/@/pan2/str +TRACK_PAN_MODE s/track/panmode s/track/@/panmode + +TRACK_SEND_NAME s/track/send/@/name s/track/@/send/@/name +TRACK_SEND_VOLUME n/track/send/@/volume n/track/@/send/@/volume +TRACK_SEND_VOLUME s/track/send/@/volume/str s/track/@/send/@/volume/str +TRACK_SEND_PAN n/track/send/@/pan n/track/@/send/@/pan +TRACK_SEND_PAN s/track/send/@/pan/str s/track/@/send/@/pan/str + +TRACK_RECV_NAME s/track/recv/@/name s/track/@/recv/@/name +TRACK_RECV_VOLUME n/track/recv/@/volume n/track/@/recv/@/volume +TRACK_RECV_VOLUME s/track/recv/@/volume/str s/track/@/recv/@/volume/str +TRACK_RECV_PAN n/track/recv/@/pan n/track/@/recv/@/pan +TRACK_RECV_PAN s/track/recv/@/pan/str s/track/@/recv/@/pan/str + +TRACK_AUTO s/track/auto +TRACK_AUTO_TRIM t/track/autotrim t/track/@/autotrim +TRACK_AUTO_READ t/track/autoread t/track/@/autoread +TRACK_AUTO_LATCH t/track/autolatch t/track/@/autolatch +TRACK_AUTO_TOUCH t/track/autotouch t/track/@/autotouch +TRACK_AUTO_WRITE t/track/autowrite t/track/@/autowrite + +TRACK_VOLUME_TOUCH b/track/volume/touch b/track/@/volume/touch +TRACK_PAN_TOUCH b/track/pan/touch b/track/@/pan/touch + +FX_NAME s/fx/name s/fx/@/name s/track/@/fx/@/name +FX_NUMBER s/fx/number/str s/fx/@/number/str s/track/@/fx/@/number/str +FX_BYPASS b/fx/bypass b/fx/@/bypass b/track/@/fx/@/bypass +FX_OPEN_UI b/fx/openui b/fx/@/openui b/track/@/fx/@/openui + +FX_PRESET s/fx/preset s/fx/@/preset s/track/@/fx/@/preset +FX_PREV_PRESET t/fx/preset- t/fx/@/preset- t/track/@/fx/@/preset- +FX_NEXT_PRESET t/fx/preset+ t/fx/@/preset+ t/track/@/fx/@/preset+ + +FX_PARAM_NAME s/fxparam/@/name s/fx/@/fxparam/@/name +FX_WETDRY n/fx/wetdry n/fx/@/wetdry n/track/@/fx/@/wetdry +FX_WETDRY s/fx/wetdry/str s/fx/@/wetdry/str s/track/@/fx/@/wetdry/str +FX_PARAM_VALUE n/fxparam/@/value n/fx/@/fxparam/@/value n/track/@/fx/@/fxparam/@/value +FX_PARAM_VALUE s/fxparam/@/value/str s/fx/@/fxparam/@/value/str + +FX_EQ_BYPASS b/fxeq/bypass b/track/@/fxeq/bypass +FX_EQ_OPEN_UI b/fxeq/openui b/track/@/fxeq/openui + +FX_EQ_PRESET s/fxeq/preset s/track/@/fxeq/preset +FX_EQ_PREV_PRESET s/fxeq/preset- s/track/@/fxeq/preset- +FX_EQ_NEXT_PRESET s/fxeq/preset+ s/track/@/fxeq/preset+ + +FX_EQ_MASTER_GAIN n/fxeq/gain n/track/@/fxeq/gain +FX_EQ_MASTER_GAIN f/fxeq/gain/db f/track/@/fxeq/gain/db s/fxeq/gain/str +FX_EQ_WETDRY n/fxeq/wetdry n/track/@/fxeq/wetdry +FX_EQ_WETDRY s/fxeq/wetdry/str s/track/@/fxeq/wetdry/str + +FX_EQ_HIPASS_NAME s/fxeq/hipass/str +FX_EQ_HIPASS_BYPASS b/fxeq/hipass/bypass +FX_EQ_HIPASS_FREQ n/fxeq/hipass/freq n/track/@/fxeq/hipass/freq +FX_EQ_HIPASS_FREQ f/fxeq/hipass/freq/hz f/track/@/fxeq/hipass/freq/hz +FX_EQ_HIPASS_FREQ s/fxeq/hipass/freq/str s/track/@/fxeq/hipass/freq/str +FX_EQ_HIPASS_Q n/fxeq/hipass/q n/track/@/fxeq/hipass/q +FX_EQ_HIPASS_Q f/fxeq/hipass/q/oct f/track/@/fxeq/hipass/q/oct +FX_EQ_HIPASS_Q s/fxeq/hipass/q/str s/track/@/fxeq/hipass/q/str + +FX_EQ_LOSHELF_NAME s/fxeq/loshelf/str +FX_EQ_LOSHELF_BYPASS b/fxeq/loshelf/bypass +FX_EQ_LOSHELF_FREQ n/fxeq/loshelf/freq n/track/@/fxeq/loshelf/freq +FX_EQ_LOSHELF_FREQ f/fxeq/loshelf/freq/hz f/track/@/fxeq/loshelf/freq/hz +FX_EQ_LOSHELF_FREQ s/fxeq/loshelf/freq/str s/track/@/fxeq/loshelf/freq/str +FX_EQ_LOSHELF_GAIN n/fxeq/loshelf/gain n/track/@/fxeq/loshelf/gain +FX_EQ_LOSHELF_GAIN f/fxeq/loshelf/gain/db f/track/@/fxeq/loshelf/gain/db +FX_EQ_LOSHELF_GAIN s/fxeq/loshelf/gain/str s/track/@/fxeq/loshelf/gain/str +FX_EQ_LOSHELF_Q n/fxeq/loshelf/q n/track/@/fxeq/loshelf/q +FX_EQ_LOSHELF_Q f/fxeq/loshelf/q/oct f/track/@/fxeq/loshelf/q/oct +FX_EQ_LOSHELF_Q s/fxeq/loshelf/q/str s/track/@/fxeq/loshelf/q/str + +FX_EQ_BAND_NAME s/fxeq/band/str +FX_EQ_BAND_BYPASS b/fxeq/band/@/bypass +FX_EQ_BAND_FREQ n/fxeq/band/@/freq n/track/@/fxeq/band/@/freq +FX_EQ_BAND_FREQ f/fxeq/band/@/freq/hz f/track/@/fxeq/band/@/freq/hz +FX_EQ_BAND_FREQ s/fxeq/band/@/freq/str s/track/@/fxeq/band/@/freq/str +FX_EQ_BAND_GAIN n/fxeq/band/@/gain n/track/@/fxeq/band/@/gain +FX_EQ_BAND_GAIN f/fxeq/band/@/gain/db f/track/@/fxeq/band/@/gain/db +FX_EQ_BAND_GAIN s/fxeq/band/@/gain/str s/track/@/fxeq/band/@/gain/str +FX_EQ_BAND_Q n/fxeq/band/@/q n/track/@/fxeq/band/@/q +FX_EQ_BAND_Q f/fxeq/band/@/q/oct f/track/@/fxeq/band/@/q/oct +FX_EQ_BAND_Q s/fxeq/band/@/q/str s/track/@/fxeq/band/@/q/str + +FX_EQ_NOTCH_NAME s/fxeq/notch/str +FX_EQ_NOTCH_BYPASS b/fxeq/notch/bypass +FX_EQ_NOTCH_FREQ n/fxeq/notch/freq n/track/@/fxeq/notch/freq +FX_EQ_NOTCH_FREQ f/fxeq/notch/freq/hz f/track/@/fxeq/notch/freq/hz +FX_EQ_NOTCH_FREQ s/fxeq/notch/freq/str s/track/@/fxeq/notch/freq/str +FX_EQ_NOTCH_GAIN n/fxeq/notch/gain n/track/@/fxeq/notch/gain +FX_EQ_NOTCH_GAIN f/fxeq/notch/gain/db f/track/@/fxeq/notch/gain/db +FX_EQ_NOTCH_GAIN s/fxeq/notch/gain/str s/track/@/fxeq/notch/gain/str +FX_EQ_NOTCH_Q n/fxeq/notch/q n/track/@/fxeq/notch/q +FX_EQ_NOTCH_Q f/fxeq/notch/q/oct f/track/@/fxeq/notch/q/oct +FX_EQ_NOTCH_Q s/fxeq/notch/q/str s/track/@/fxeq/notch/q/str + +FX_EQ_HISHELF_NAME s/fxeq/hishelf/str +FX_EQ_HISHELF_BYPASS b/fxeq/hishelf/bypass +FX_EQ_HISHELF_FREQ n/fxeq/hishelf/freq n/track/@/fxeq/hishelf/freq +FX_EQ_HISHELF_FREQ f/fxeq/hishelf/freq/hz f/track/@/fxeq/hishelf/freq/hz +FX_EQ_HISHELF_FREQ s/fxeq/hishelf/freq/str s/track/@/fxeq/hishelf/freq/str +FX_EQ_HISHELF_GAIN n/fxeq/hishelf/gain n/track/@/fxeq/hishelf/gain +FX_EQ_HISHELF_GAIN f/fxeq/hishelf/gain/sb f/track/@/fxeq/hishelf/gain/db +FX_EQ_HISHELF_GAIN s/fxeq/hishelf/gain/str s/track/@/fxeq/hishelf/gain/str +FX_EQ_HISHELF_Q n/fxeq/hishelf/q n/track/@/fxeq/hishelf/q +FX_EQ_HISHELF_Q f/fxeq/hishelf/q/oct f/track/@/fxeq/hishelf/q/oct +FX_EQ_HISHELF_Q s/fxeq/hishelf/q/str s/track/@/fxeq/hishelf/q/str + +FX_EQ_LOPASS_NAME s/fxeq/lopass/str +FX_EQ_LOPASS_BYPASS b/fxeq/lopass/bypass +FX_EQ_LOPASS_FREQ n/fxeq/lopass/freq n/track/@/fxeq/lopass/freq +FX_EQ_LOPASS_FREQ f/fxeq/lopass/freq/hz f/track/@/fxeq/lopass/freq/hz +FX_EQ_LOPASS_FREQ s/fxeq/lopass/freq/str s/track/@/fxeq/lopass/freq/str +FX_EQ_LOPASS_Q n/fxeq/lopass/q n/track/@/fxeq/lopass/q +FX_EQ_LOPASS_Q f/fxeq/lopass/q/oct f/track/@/fxeq/lopass/q/oct +FX_EQ_LOPASS_Q s/fxeq/lopass/q/str s/track/@/fxeq/lopass/q/str + +FX_INST_NAME s/fxinst/name s/track/@/fxinst/name +FX_INST_BYPASS b/fxinst/bypass b/track/@/fxinst/bypass +FX_INST_OPEN_UI b/fxinst/openui b/track/@/fxinst/openui + +FX_INST_PRESET s/fxinst/preset s/track/@/fxinst/preset +FX_INST_PREV_PRESET t/fxinst/preset- t/track/@/fxinst/preset- +FX_INST_NEXT_PRESET t/fxinst/preset+ t/track/@/fxinst/preset+ + +FX_INST_PARAM_NAME s/fxinstparam/@/name +FX_INST_PARAM_VALUE n/fxinstparam/@/value n/track/@/fxinstparam/@/value +FX_INST_PARAM_VALUE s/fxinstparam/@/value/str + +LAST_TOUCHED_FX_TRACK_NAME s/fx/last_touched/track/name +LAST_TOUCHED_FX_TRACK_NUMBER s/fx/last_touched/track/number/str +LAST_TOUCHED_FX_NAME s/fx/last_touched/name +LAST_TOUCHED_FX_NUMBER s/fx/last_touched/number/str +LAST_TOUCHED_FX_PARAM_NAME s/fxparam/last_touched/name +LAST_TOUCHED_FX_PARAM_VALUE n/fxparam/last_touched/value s/fxparam/last_touched/value/str + +# these send MIDI to the vkb MIDI input. parameters are raw MIDI. + +# for notes, if two, first wildcard is channel (0-15). MIDI note number is required (as decimal integer only!) +# if parameter value is 0, note-off, otherwise note-on +VKB_MIDI_NOTE i/vkb_midi/@/note/@ f/vkb_midi/@/note/@ i/vkb_midi/note/@ f/vkb_midi/note/@ +# similar, but for 0xA0 (poly aftertouch) +VKB_MIDI_POLYAFTERTOUCH i/vkb_midi/@/polyaftertouch/@ f/vkb_midi/@/polyaftertouch/@ i/vkb_midi/polyaftertouch/@ f/vkb_midi/polyaftertouch/@ +# for CCs, if two, first wildcard is channel (0-15). MIDI CC number is required (as decimal integer only!) +VKB_MIDI_CC i/vkb_midi/@/cc/@ f/vkb_midi/@/cc/@ i/vkb_midi/cc/@ f/vkb_midi/cc/@ +# program change (0xC0) can take channel as wildcard, or value only +VKB_MIDI_PROGRAM i/vkb_midi/@/program f/vkb_midi/@/program i/vkb_midi/program f/vkb_midi/program +# channel pressure (aftertouch) (0xD0) can take channel as wildcard, or value only +VKB_MIDI_CHANNELPRESSURE i/vkb_midi/@/channelpressure f/vkb_midi/@/channelpressure i/vkb_midi/channelpressure f/vkb_midi/channelpressure +# pitch can take channel as wildcard, or value only +VKB_MIDI_PITCH i/vkb_midi/@/pitch f/vkb_midi/@/pitch i/vkb_midi/pitch f/vkb_midi/pitch + + +ACTION i/action s/action/str t/action/@ f/action/@/cc # s/update/workspace/C308DBDD-1400-4DB5-A6CA-2D2E14BEC128/cueList/17172C5C-FCCF-40E7-80C4-CF03188644E1/playbackPosition +ACTION_SOFT f/action/@/cc/soft +ACTION_RELATIVE f/action/@/cc/relative +MIDIACTION i/midiaction t/midiaction/@ +MIDILISTACTION i/midilistaction t/midilistaction/@ + +# ---------------------------------------------------------------- + +# The following messages are sent from the device, to inform REAPER +# of a change in the device state, behavior, or display capabilities. + +DEVICE_TRACK_COUNT i/device/track/count t/device/track/count/@ +DEVICE_SEND_COUNT i/device/send/count t/device/send/count/@ +DEVICE_RECEIVE_COUNT i/device/receive/count t/device/receive/count/@ +DEVICE_FX_COUNT i/device/fx/count t/device/fx/count/@ +DEVICE_FX_PARAM_COUNT i/device/fxparam/count t/device/fxparam/count/@ +DEVICE_FX_INST_PARAM_COUNT i/device/fxinstparam/count t/device/fxinstparam/count/@ +DEVICE_MARKER_COUNT i/device/marker/count t/device/marker/count/@ +DEVICE_REGION_COUNT i/device/region/count t/device/region/count/@ + +REAPER_TRACK_FOLLOWS s/reaper/track/follows +REAPER_TRACK_FOLLOWS_REAPER t/reaper/track/follows/reaper +REAPER_TRACK_FOLLOWS_DEVICE t/reaper/track/follows/device + +DEVICE_TRACK_FOLLOWS s/device/track/follows +DEVICE_TRACK_FOLLOWS_DEVICE t/device/track/follows/device +DEVICE_TRACK_FOLLOWS_LAST_TOUCHED t/device/track/follows/last_touched + +DEVICE_TRACK_BANK_FOLLOWS s/device/track/bank/follows +DEVICE_TRACK_BANK_FOLLOWS_DEVICE t/device/track/bank/follows/device +DEVICE_TRACK_BANK_FOLLOWS_MIXER t/device/track/bank/follows/mixer + +DEVICE_FX_FOLLOWS s/device/fx/follows +DEVICE_FX_FOLLOWS_DEVICE t/device/fx/follows/device +DEVICE_FX_FOLLOWS_LAST_TOUCHED t/device/fx/follows/last_touched +DEVICE_FX_FOLLOWS_FOCUSED t/device/fx/follows/focused + +DEVICE_TRACK_SELECT i/device/track/select t/device/track/select/@ +DEVICE_PREV_TRACK t/device/track/- +DEVICE_NEXT_TRACK t/device/track/+ + +DEVICE_TRACK_BANK_SELECT i/device/track/bank/select t/device/track/bank/select/@ +DEVICE_PREV_TRACK_BANK t/device/track/bank/- +DEVICE_NEXT_TRACK_BANK t/device/track/bank/+ + +DEVICE_FX_SELECT i/device/fx/select t/device/fx/select/@ +DEVICE_PREV_FX t/device/fx/- +DEVICE_NEXT_FX t/device/fx/+ + +DEVICE_FX_PARAM_BANK_SELECT i/device/fxparam/bank/select t/device/fxparam/bank/select/@ +DEVICE_FX_PARAM_BANK_SELECT s/device/fxparam/bank/str +DEVICE_PREV_FX_PARAM_BANK t/device/fxparam/bank/- +DEVICE_NEXT_FX_PARAM_BANK t/device/fxparam/bank/+ + +DEVICE_FX_INST_PARAM_BANK_SELECT i/device/fxinstparam/bank/select t/device/fxinstparam/bank/select/@ +DEVICE_FX_INST_PARAM_BANK_SELECT s/device/fxinstparam/bank/str +DEVICE_PREV_FX_INST_PARAM_BANK t/device/fxinstparam/bank/- +DEVICE_NEXT_FX_INST_PARAM_BANK t/device/fxinstparam/bank/+ + +DEVICE_MARKER_BANK_SELECT i/device/marker/bank/select t/device/marker/bank/select/@ +DEVICE_PREV_MARKER_BANK t/device/marker/bank/- +DEVICE_NEXT_MARKER_BANK t/device/marker/bank/+ + +DEVICE_REGION_BANK_SELECT i/device/region/bank/select t/device/region/bank/select/@ +DEVICE_PREV_REGION_BANK t/device/region/bank/- +DEVICE_NEXT_REGION_BANK t/device/region/bank/+ diff --git a/Miscellaneous/osc.lua b/Markers/osc.lua similarity index 100% rename from Miscellaneous/osc.lua rename to Markers/osc.lua diff --git a/Miscellaneous/.DS_Store b/Miscellaneous/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cc5c1f3b8908b73e10e5b3389a6ee035f7ec9089 GIT binary patch literal 6148 zcmeHKOHKnZ47H()kyy|r%Uq#12-R?cUI3NhC(V$mYWF!n&(Q;L2#&%Ly5>1H(9w)k zi3LK)mYnA#cH()`Bry^3eA~>3rbJXh1zC&{k>Sy)GjpB*xva6FmhP#cKo27e{ly{4 z{gSryLK}L9e&?THH~5-$`#4+NrEYbU{)vb#)%CJXOGH%f``6v!@OFKApDr~&h*~`j zvO7xDO=rLva0Z+KXJEhp?rf3jLeX1iz!`7`z8H}6AwUJAVOA_h2bxj>0Oc871h&)? z5)%xgVOGQpgf$eXp=>1vYdFS(`9;I5sNuv`e6a2OS-f!B9qWhUP8=1zbq1V)J_G04 zoyz@xgI{K}$nS@E&lzwA{uu*2sTcJeA7yvz;Pd3J4bWSti1=kOAh3In0CeOWxhj)7 bAH;@VG|Y;!ij0?Vpg#l(A>KFxzrer;gIPS7 literal 0 HcmV?d00001 diff --git a/Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua b/Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua deleted file mode 100644 index 49be280..0000000 --- a/Miscellaneous/Rename markers from Qlab Cue IDs to Cue Names.lua +++ /dev/null @@ -1,85 +0,0 @@ ---[[ - @description Rename markers from QLab Cue IDs to Cue Names - @author Ben Smith - @link - Author https://www.bensmithsound.uk - Repository https://github.com/bsmith96/Reaper-Scripts - @version 1.0 - @changelog - + Initial version - @metapackage - @provides - [main] . > bsmith96_{filename}.lua - @about - # {Package name} - Written by Ben Smith - May 2025 - - ### Info - * - - ### Usage - * - - ### User customisation - * -]] - - --- ========================================================= --- =============== USER CUSTOMISATION AREA =============== --- ========================================================= - ---------- End of user customisation area -- - - --- ========================================================= --- ================= GLOBAL VARIABLES ==================== --- ========================================================= - -local r = reaper - --- get the script's name and directory -local scriptName = ({r.get_action_context()})[2]:match("([^/\\_]+)%.lua$") -local scriptDirectory = ({r.get_action_context()})[2]:sub(1, ({r.get_action_context()})[2]:find("\\[^\\]*$")) -local scriptFolder = scriptDirectory:gsub(scriptName..".lua", "") - -package.path = scriptFolder .. '?.lua' - --- Require the osc module -local osc = require('osc') - --- ========================================================= --- ====================== FUNCTIONS ====================== --- ========================================================= - - --- ========================================================= --- ====================== UTILITIES ====================== --- ========================================================= - --- Deliver messages and add new line in console -function dbg(dbg) - r.ShowConsoleMsg(tostring(dbg) .. "\n") -end - --- Deliver messages using message box -function msg(msg, title) - local title = title or scriptName - r.MB(tostring(msg), title, 0) -end - - --- ========================================================= --- =================== MAIN ROUTINE ====================== --- ========================================================= - -r.Undo_BeginBlock() - -local i=1 - -local retval, isrgn, pos, rgnend, name, markrgnindexnumber, color = reaper.EnumProjectMarkers3( 0, i ) -if not isrgn then - r.GoToMarker(0,i,1) -end - -r.Undo_EndBlock(scriptName, -1) \ No newline at end of file diff --git a/Miscellaneous/Rename markers part 2.lua b/Miscellaneous/Rename markers part 2.lua deleted file mode 100644 index b6da00f..0000000 --- a/Miscellaneous/Rename markers part 2.lua +++ /dev/null @@ -1,87 +0,0 @@ ---[[ - @description - @author Ben Smith - @link - Author https://www.bensmithsound.uk - Repository https://github.com/bsmith96/Reaper-Scripts - @version 1.0 - @changelog - + Initial version - @metapackage - @provides - [main] . > bsmith96_{filename}.lua - @about - # {Package name} - Written by Ben Smith - {Month Year} - - ### Info - * - - ### Usage - * - - ### User customisation - * -]] - - --- ========================================================= --- =============== USER CUSTOMISATION AREA =============== --- ========================================================= - ---------- End of user customisation area -- - - --- ========================================================= --- ================= GLOBAL VARIABLES ==================== --- ========================================================= - -local r = reaper - --- get the script's name and directory -local scriptName = ({r.get_action_context()})[2]:match("([^/\\_]+)%.lua$") -local scriptDirectory = ({r.get_action_context()})[2]:sub(1, ({r.get_action_context()})[2]:find("\\[^\\]*$")) -local scriptFolder = scriptDirectory:gsub(scriptName..".lua", "") - -package.path = scriptFolder .. '?.lua' - --- Require the osc module -local osc = require('osc') - --- ========================================================= --- ====================== FUNCTIONS ====================== --- ========================================================= - - --- ========================================================= --- ====================== UTILITIES ====================== --- ========================================================= - --- Deliver messages and add new line in console -function dbg(dbg) - r.ShowConsoleMsg(tostring(dbg) .. "\n") -end - --- Deliver messages using message box -function msg(msg, title) - local title = title or scriptName - r.MB(tostring(msg), title, 0) -end - - --- ========================================================= --- =================== MAIN ROUTINE ====================== --- ========================================================= - -r.Undo_BeginBlock() - --- get OSC message -local msg = osc.get() - - -local newName = msg.arg - - -dbg("didn't work") - -r.Undo_EndBlock(scriptName, -1) \ No newline at end of file From 65ecc47898a33a003a9b00159a9171b10bddcc34 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Mon, 2 Jun 2025 15:53:18 +0100 Subject: [PATCH 4/6] Added reapack tags --- Markers/osc.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Markers/osc.lua b/Markers/osc.lua index 90a9464..c099a0f 100644 --- a/Markers/osc.lua +++ b/Markers/osc.lua @@ -1,4 +1,7 @@ --- osc.lua +--[[ + @description osc + @version 1.0 +]] -- Utility functions to get and parse OSC message and argument from REAPER action context From 7a440c79b8fea522ce3a430eab9e96fb356afa01 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Mon, 2 Jun 2025 16:04:05 +0100 Subject: [PATCH 5/6] Update osc utility name --- Markers/Create marker with name via OSC.lua | 2 +- Markers/{osc.lua => qosc.lua} | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) rename Markers/{osc.lua => qosc.lua} (79%) diff --git a/Markers/Create marker with name via OSC.lua b/Markers/Create marker with name via OSC.lua index 64ca3d5..2daf289 100644 --- a/Markers/Create marker with name via OSC.lua +++ b/Markers/Create marker with name via OSC.lua @@ -70,7 +70,7 @@ local scriptFolder = scriptDirectory:gsub(scriptName..".lua", "") package.path = scriptFolder .. '?.lua' -- Require the osc module -local osc = require('osc') +local osc = require('qosc') -- debug --local msg = osc.get() diff --git a/Markers/osc.lua b/Markers/qosc.lua similarity index 79% rename from Markers/osc.lua rename to Markers/qosc.lua index c099a0f..b85c18b 100644 --- a/Markers/osc.lua +++ b/Markers/qosc.lua @@ -1,13 +1,16 @@ --[[ - @description osc + @description osc utility @version 1.0 + @changelog + + Initial version + @noindex ]] -- Utility functions to get and parse OSC message and argument from REAPER action context -local osc = {} +local qosc = {} -function osc.parse(context) +function qosc.parse(context) local msg = {} -- Extract the message @@ -29,13 +32,13 @@ function osc.parse(context) return msg end -function osc.get() +function qosc.get() local is_new, name, sec, cmd, rel, res, val, ctx = reaper.get_action_context() if ctx == nil or ctx == '' then return nil end - return osc.parse(ctx) + return qosc.parse(ctx) end -return osc \ No newline at end of file +return qosc \ No newline at end of file From 17bc67239f631f49fcefb4f326b5c9a88bb1050f Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Mon, 2 Jun 2025 16:07:40 +0100 Subject: [PATCH 6/6] Fixed dependency --- Markers/Create marker with name via OSC.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Markers/Create marker with name via OSC.lua b/Markers/Create marker with name via OSC.lua index 2daf289..d17ea3d 100644 --- a/Markers/Create marker with name via OSC.lua +++ b/Markers/Create marker with name via OSC.lua @@ -10,7 +10,7 @@ @metapackage @provides [main] . > bsmith96_{filename}.lua - osc.lua + qosc.lua Qlab5.ReaperOSC @about # Create marker with name via OSC