|
|
|
01-29-2024, 01:25 PM
|
#3081
|
Human being with feelings
Join Date: Aug 2020
Location: Hamburg
Posts: 116
|
Create Send Volume Envelope via script
Does anyone have a script that creates a new send volume envelope to a destination track with a certain name?
Or some pointers for somebody (me!) with very limited scripting capabilities.
Thanks so much!
|
|
|
01-29-2024, 07:11 PM
|
#3082
|
Human being with feelings
Join Date: Nov 2018
Posts: 660
|
There's a script that sends to Fx1, Fx2 , etc,. By Stevie. Probably could modify it to send to different names, and lokesanna made one too
https://forum.cockos.com/showthread.php?t=210703
|
|
|
02-01-2024, 02:58 PM
|
#3083
|
Human being with feelings
Join Date: May 2014
Location: France
Posts: 28
|
Hi, does anyone know if a script exists to create a custom toolbar like on a grid with resizable items?
I just want to add this on full screen on another touchscreen monitor but I don't find anything after a lot of searching.
|
|
|
02-08-2024, 06:41 AM
|
#3084
|
Human being with feelings
Join Date: Apr 2014
Posts: 96
|
Quote:
Originally Posted by Edgemeal
OK changed it so it will loop for 3.5 secs/until window found, edit as needed.
Code:
-- Select audio interface by name.lua
-- Interface name to set,
local selection = "dummy audio" -- EDIT AS NEEDED!
-- Wait up to x.x secs to find Prefs windopw and apply setting
local wait_time = reaper.time_precise() + 3.5 -- EDIT AS NEEDED!
function FindPrefs()
local pref_hwnd = reaper.JS_Window_FindTop("REAPER Preferences", true)
if pref_hwnd ~= nil then
local container = reaper.JS_Window_FindChildByID(pref_hwnd, 0)
local aud_sys_cbo = reaper.JS_Window_FindChildByID(container, 0x3E8) -- audio system combobox
if aud_sys_cbo ~= nil then
local itemCount = reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_GETCOUNT", 0,0,0,0)
for i = 0, itemCount-1 do
local bufSize = reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_GETLBTEXTLEN", i, 0,0,0)
local m = reaper.JS_Mem_Alloc(bufSize)
local txt_len = reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_GETLBTEXT", i, 0, reaper.JS_Window_AddressFromHandle(m) ,0)
local retval, item_txt = reaper.JS_String(m, 0, txt_len)
reaper.JS_Mem_Free(m)
if item_txt:lower():match(selection:lower()) then
reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_SETCURSEL", i, 0,0,0) -- Select audio device by item index
reaper.JS_WindowMessage_Send(pref_hwnd, "WM_COMMAND", 1, 0, 0, 0) -- Click OK buton
break
end
end
end
else -- try again until wait_time
if reaper.time_precise() < wait_time then reaper.defer(FindPrefs) end
end
end
reaper.Main_OnCommand(1016, 0) -- Transport: Stop
reaper.Main_OnCommand(40099, 0) -- Audio device configuration...(Open Preferences to audio settings)
reaper.defer(FindPrefs) -- find prefs, set audo device
|
Awesome ! Is there a way to find the currently selected audio device ? I'd like to create a toggle between ASIO and WASAPI.
Thanks!
|
|
|
02-08-2024, 09:29 AM
|
#3085
|
Human being with feelings
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 3,921
|
Quote:
Originally Posted by aurelien
Awesome ! Is there a way to find the currently selected audio device ? I'd like to create a toggle between ASIO and WASAPI.
Thanks!
|
Give this a try,
Code:
-- Toggle audio device ASIO-WASAPI.lua
-- Edgemeal - v1.00 - Feb 08, 2024
-- Required Extensions: js_ReaScriptAPI and SWS
-- Wait up to x.x secs to find Prefs window and apply setting
local max_wait = reaper.time_precise() + 3.5 -- EDIT IF NEEDED!
-- Get audio device mode, select ASIO or WASAPI
local dev_name = "dummy audio" -- default (mode = 4)
local retval, strval = reaper.BR_Win32_GetPrivateProfileString("audioconfig", "mode", "4", reaper.GetResourcePath() .. "/reaper.ini") --SWS
local mode = tonumber(strval)
if mode ~= nil then
if mode == 5 then
dev_name = "ASIO"
else
dev_name = "WASAPI"
end
end
function SetAudioDevice()
local pref_hwnd = reaper.JS_Window_FindTop("REAPER Preferences", true)
if pref_hwnd ~= nil then
local container = reaper.JS_Window_FindChildByID(pref_hwnd, 0)
local aud_sys_cbo = reaper.JS_Window_FindChildByID(container, 0x3E8) -- audio system combobox
if aud_sys_cbo ~= nil then
local itemCount = reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_GETCOUNT", 0,0,0,0)
for i = 0, itemCount-1 do
local bufSize = reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_GETLBTEXTLEN", i, 0,0,0)
local m = reaper.JS_Mem_Alloc(bufSize)
local txt_len = reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_GETLBTEXT", i, 0, reaper.JS_Window_AddressFromHandle(m) ,0)
local retval, item_txt = reaper.JS_String(m, 0, txt_len)
reaper.JS_Mem_Free(m)
if item_txt:lower():match(dev_name:lower()) then
reaper.JS_WindowMessage_Send(aud_sys_cbo, "CB_SETCURSEL", i, 0,0,0) -- Select audio device by item index
reaper.JS_WindowMessage_Send(pref_hwnd, "WM_COMMAND", 1, 0, 0, 0) -- Click OK button
break
end
end
end
else -- try again (until max_wait time)
if reaper.time_precise() < max_wait then reaper.defer(SetAudioDevice) end
end
end
reaper.Main_OnCommand(1016, 0) -- Transport: Stop
reaper.Main_OnCommand(40099, 0) -- Audio device configuration...(Open Preferences to audio settings)
reaper.defer(SetAudioDevice)
BTW, I got the audio modes by watching what reaper changed in reaper.ini file when I was running v6, no change in v7 AFAICT ...
Code:
reaper.ini > [audioconfig]
Mode# Name
----------
0) WDM Kernel Streaming (Windows XP)
1) DirectSound
2) WaveOut
3) ASIO
4) Dummy Audio
5) WASAPI (Windows 7/8/10/Vista)
Last edited by Edgemeal; 02-08-2024 at 10:46 AM.
|
|
|
02-16-2024, 10:37 AM
|
#3086
|
Human being with feelings
Join Date: Mar 2017
Location: in the moment
Posts: 650
|
Hi,
I have been looking for a script that I can use to adjust the velocity of notes selected within the MIDI Editor up or down with a simple dialog + or - numerical input.
It would be similar to the function available in the MIDI Editor with the Note Properties a.k.a. Event Properties panel, but it would be exclusively used for velocity adjustments.
It would constrain the velocity range from 0 to 127, and it would not need those constraints to be variable so no user input regarding the upper and lower limit would need to be included.
I found a few scripts using X-Raym's actions list but did not find anything that seemed to do what I hoped for.
Is a script like this possible?
Thank you!
|
|
|
02-16-2024, 12:47 PM
|
#3087
|
Human being with feelings
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 3,921
|
Quote:
Originally Posted by mister happy
Hi,
I have been looking for a script that I can use to adjust the velocity of notes selected within the MIDI Editor up or down with a simple dialog + or - numerical input.
|
If velocity is set to zero then REAPER removes note, so set limit to 1-127. BTW I'm not a real MIDI user so hopefully this does what you want.
Reposted from earlier, Fix UnDo, show warning and abort if input is invalid.
Code:
-- Change velocity of selected notes.lua
local default_value = "-10" -- Default value for user input box (set As String)
-- NOTE: To add value you don't need to prefix value with a "+" sign.
function Main()
-- check we have a take
local take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive())
if not take then return end
-- check if it has notes
local _, notecnt = reaper.MIDI_CountEvts(take)
if notecnt == 0 then return end
-- Get user input,
local retval, value = reaper.GetUserInputs("Change velocity of selected notes", 1, "Adjust velocity (+/-): ,extrawidth=100", default_value)
if not retval then return end
value = tonumber(value)
if value == nil then reaper.MB("Invaid input","ERROR",0) return end
-- adjust velocity of selected notes
reaper.MIDI_DisableSort(take)
for noteidx = 0, notecnt-1 do
local retval, selected, muted, _, _, _, _, vel = reaper.MIDI_GetNote(take, noteidx)
if retval and selected then
vel = vel + value
if vel < 1 then vel = 1 elseif vel > 127 then vel = 127 end
reaper.MIDI_SetNote(take, noteidx, nil, nil, nil, nil, nil, nil, vel, true)
end
end
reaper.MIDI_Sort(take)
reaper.Undo_OnStateChange('Change velocity of selected notes')
end
Main()
|
|
|
02-16-2024, 01:08 PM
|
#3088
|
Human being with feelings
Join Date: Mar 2017
Location: in the moment
Posts: 650
|
Hi,
Thanks very much for giving this a try.
I installed an example of the script, selected a few notes in the MIDI Editor and received this dialog when I ran the script:
REAScript Error
Change velocity of selected notes.lua:4: <name> expected near 'local'
|
|
|
02-16-2024, 02:41 PM
|
#3089
|
Human being with feelings
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 3,921
|
Quote:
Originally Posted by mister happy
Hi,
Thanks very much for giving this a try.
I installed an example of the script, selected a few notes in the MIDI Editor and received this dialog when I ran the script:
REAScript Error
Change velocity of selected notes.lua:4: <name> expected near 'local'
|
Can only guess you messed up the copy-paste. Try to re-copy and paste code again, other then that not sure what the problem could be. I just copied the code from above, made new script, works fine, no errors here. Good Luck!
|
|
|
02-16-2024, 02:53 PM
|
#3090
|
Human being with feelings
Join Date: Mar 2017
Location: in the moment
Posts: 650
|
Goodness, yes, you are correct. I inadvertently copied all your code plus the word "Code:" at the top.
I had looked at your code repeatedly and did not recognize that the "Code:" did not belong in the code.
Thank you. This script will be very handy, and the streamlined functionality will bring me a great deal of pleasure.
|
|
|
02-17-2024, 07:34 AM
|
#3091
|
Human being with feelings
Join Date: Mar 2017
Location: in the moment
Posts: 650
|
Quote:
Originally Posted by Edgemeal
Good Luck!
|
Hi,
Thanks again. The script works great.
There is one little detail I stumbled upon. It's unlikely I would encounter when actually working with REAPER, It only became apparent while testing.
If I select a note or notes, use a hot key to call the action, input a value, run the action, and use the hot key again without mouse clicking in the MIDI Editor window the next hot key I press seems to be focused on the Main window.
In my case I used Alt + V to call the velocity script in the MIDI Editor, so when I use the hot key the second time the Main or Arrange window "View" menu is called to open.
Somehow the hotkey target loses focus on the MIDI Editor window.
The hot key assigned to the Change Velocity script or all the other MIDI Editor specific hot keys I have tried do not respond until I mouse click within the MIDI Editor.
Is there a not too bothersome addition to the code that might prevent this from happening?
Thank you!
|
|
|
02-17-2024, 10:54 AM
|
#3092
|
Human being with feelings
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 3,921
|
Quote:
Originally Posted by mister happy
Hi,
Thanks again. The script works great.
There is one little detail I stumbled upon. It's unlikely I would encounter when actually working with REAPER, It only became apparent while testing.
If I select a note or notes, use a hot key to call the action, input a value, run the action, and use the hot key again without mouse clicking in the MIDI Editor window the next hot key I press seems to be focused on the Main window.
In my case I used Alt + V to call the velocity script in the MIDI Editor, so when I use the hot key the second time the Main or Arrange window "View" menu is called to open.
Somehow the hotkey target loses focus on the MIDI Editor window.
The hot key assigned to the Change Velocity script or all the other MIDI Editor specific hot keys I have tried do not respond until I mouse click within the MIDI Editor.
Is there a not too bothersome addition to the code that might prevent this from happening?
Thank you!
|
If you have the SWS extension installed try changing the very last line from this,
To this,
Code:
Main()
reaper.Main_OnCommand(reaper.NamedCommandLookup('_SN_FOCUS_MIDI_EDITOR'), 0) -- SWS/SN: Focus MIDI editor
|
|
|
02-17-2024, 02:37 PM
|
#3093
|
Human being with feelings
Join Date: Mar 2017
Location: in the moment
Posts: 650
|
Quote:
Originally Posted by Edgemeal
If you have the SWS extension installed try changing the very last line...
|
Hi,
That did it.
Thank you very much!!!
Last edited by mister happy; 02-17-2024 at 03:17 PM.
|
|
|
02-25-2024, 05:24 AM
|
#3094
|
Human being with feelings
Join Date: Oct 2020
Posts: 184
|
Txt file to Empty Items
Hi there.
For lyrics, it would be great to have a script that:
1) Prompts for a txt file and reads it line by line (tab separated).
2) Puts the text of each line on a new empty item in the selected track, maybe separating them 4 measures.
This would greatly facilitate the process of creating empty items for lyrics. The user would have to reorder the empty items manually, but all the text would be already there.
Many thanks.
|
|
|
02-25-2024, 01:05 PM
|
#3095
|
Human being with feelings
Join Date: Oct 2020
Posts: 184
|
Quote:
Originally Posted by D-Reaper
Hi there.
For lyrics, it would be great to have a script that:
1) Prompts for a txt file and reads it line by line (tab separated).
2) Puts the text of each line on a new empty item in the selected track, maybe separating them 4 measures.
This would greatly facilitate the process of creating empty items for lyrics. The user would have to reorder the empty items manually, but all the text would be already there.
Many thanks.
|
Answering myself, this is exactly (and better) what I was looking for:
https://forum.cockos.com/showthread.php?t=156239
|
|
|
02-27-2024, 10:24 AM
|
#3096
|
Human being with feelings
Join Date: Oct 2020
Posts: 184
|
MIDI Note to Bank and Program Change (Keyswitches)
I have posted this question in this thread:
https://forum.cockos.com/showthread....77#post2762777
But I thought I should post it also here, just in case.
Basically, do you know any plugin that allows to create keyswitches; this is, to link a particular MIDI Note with specific MSB/LSB/Program values, so that you can change articulations directly on the keyboard? (and use it in living performances, when recording)
Or how to create a JS that does that?
Many thanks.
|
|
|
03-01-2024, 03:24 AM
|
#3097
|
Human being with feelings
Join Date: Feb 2011
Location: berlin
Posts: 20
|
Single Cycle Waveforms script
hey, is is possible to make a script, that would analyze an item and extract single wave cycle excerpt with zero-cross start/end?
dm me please for conditions.
|
|
|
03-01-2024, 06:32 AM
|
#3098
|
Human being with feelings
Join Date: Dec 2020
Posts: 175
|
Spatial spectrogram?
Is it possible to create a plugin, maybe in JSFX, that would locate the frequencies in the stereo field, like in Process.audio Decibel's "Stereo cloud" ( https://process.audio/images/decibel...ereo_cloud.png) or Flux's "Spatial spectrogram" ( https://www.flux.audio/wp-content/up...__edited.jpg)?
Or does it already exist somewhere?
I already own Decibel, but I would really like to see the graph embedded in my master MCP.
I tried, asking help from ChatPGT, but it seems like the FFT part is too complex.
|
|
|
03-04-2024, 07:45 AM
|
#3099
|
Human being with feelings
Join Date: Aug 2013
Location: Ukraine
Posts: 60
|
Edit cursor follow mouse/items
Tell me, is there a script/action that, when the edges of an item are shifted, would move the “Edit Cursor” with the mouse (in order for the video player frames to be updated). Idea: make it easier to match sound effects to videos. Now you drag the mouse, and the video is standing... you release it, then click again in order to move the edit cursor to the position... In general, you need the edit cursor to stick to the mouse or the sides of the item for a while))))
Last edited by BogdanS; 03-04-2024 at 07:53 AM.
|
|
|
03-08-2024, 02:36 PM
|
#3100
|
Human being with feelings
Join Date: Nov 2018
Posts: 660
|
Would it be possible to make a script that runs
ADD/EDIT take marker at play position
And then puts in a preset text?
Specifically, when recording in lanes, I want to have a keystroke that adds a range marker with the text GOOD , and a separate keystroke for a take marker with the text BAD.
Is this something that could be whipped together relatively easily?
|
|
|
03-09-2024, 11:50 AM
|
#3101
|
Human being with feelings
Join Date: Mar 2007
Posts: 4,018
|
Quote:
Originally Posted by vsthem
Would it be possible to make a script that runs
ADD/EDIT take marker at play position
And then puts in a preset text?
Specifically, when recording in lanes, I want to have a keystroke that adds a range marker with the text GOOD , and a separate keystroke for a take marker with the text BAD.
Is this something that could be whipped together relatively easily?
|
Such script (for takes, not sure if it will work with new lanes feature) already exists, it was done few years ago. I cannot remember the name or creator, but I may search a bit later.
EDIT:
Take Commenter - a way to mark audio files during recording
Last edited by akademie; 03-09-2024 at 11:58 AM.
|
|
|
03-09-2024, 12:22 PM
|
#3102
|
Human being with feelings
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 3,921
|
Quote:
Originally Posted by vsthem
Would it be possible to make a script that runs
ADD/EDIT take marker at play position
And then puts in a preset text?
Specifically, when recording in lanes, I want to have a keystroke that adds a range marker with the text GOOD , and a separate keystroke for a take marker with the text BAD.
Is this something that could be whipped together relatively easily?
|
Heres a hack I've used when recording, (Windows 10).
Code:
local marker_text = "BAD" -- Take Marker text to use
function Main()
local hwnd = reaper.JS_Window_FindTop("Edit Take Marker", true)
if hwnd then
local edit = reaper.JS_Window_FindChildByID(hwnd, 0x3F0)
if edit then
reaper.JS_Window_SetTitle(edit, marker_text) -- set marker text
reaper.JS_WindowMessage_Post(hwnd, "WM_COMMAND", 1,0,0,0) -- click OK button
return -- exit script
end
end
end
if not reaper.APIExists('JS_Localize') then
reaper.MB('js_ReaScriptAPI extension is required for this script.', 'Missing API', 0)
else
-- Run action without blocking this script -- Item: Add/edit take marker at play position or edit cursor
reaper.JS_WindowMessage_Post(reaper.GetMainHwnd(), "WM_COMMAND", 42385, 0,0,0)
reaper.defer(Main) -- Auto answer Take Marker dialog
end
I wont use this once they release the new actions currently in pre-release (Quick add favorite/non-favorite take marker at play position or edit cursor).
|
|
|
03-10-2024, 11:08 AM
|
#3103
|
Human being with feelings
Join Date: Nov 2018
Posts: 660
|
Oh! I didn't see that they took my suggestion. Or maybe it was in the plan all along
|
|
|
03-15-2024, 09:47 AM
|
#3104
|
Human being with feelings
Join Date: Mar 2017
Location: in the moment
Posts: 650
|
Solved: My custom action needs help: close project tab prompts save dialog
Please Note: I received a helpful suggestion in the General forum.
Hi,
I have a custom action that I use to save time when setting up a render queue for a selection of projects.
I use SWS Project management to open a list of projects, and then I use hotkeys to add these projects to a render queue.
I made a simple custom action to add the projects to the render queue and then close the project tab, with the intention of doing it with one keystroke, but when the project tab is closing REAPER stalls and presents a "save" dialog. I don't necessarily want to save, although I guess there is not anything wrong with saving a file when all I did was open it and add it to the render queue. My main concern is that what I hoped would be a 1 keystroke action is a 3 keystroke action, so I'd like to eliminate the extra 2 keystrokes.
I am hoping that there may be a way to automatically close the project tab without saving it. That way, I could make a render at any time without messing with the project's time stamp.
Here are the two actions I have combined into a custom action:
File: Add project to render queue, using the most recent render settings - 41823
Close current project tab - 40860
I am hoping someone can suggest a way to avoid the save dialog.
Thank you.
Last edited by mister happy; 03-16-2024 at 07:54 AM.
|
|
|
03-20-2024, 01:31 PM
|
#3105
|
Human being with feelings
Join Date: Nov 2008
Posts: 25
|
Docker: activate next/previous tab
This script doesn't seem to work with docked (non native) user scripts. When selected (activated), the tabbed non native script looses focus and in order to go to next/previous tab, I have to clic on the given tab.
Is there a simple way to circumvent this via script?
|
|
|
03-27-2024, 08:36 AM
|
#3106
|
Human being with feelings
Join Date: Nov 2015
Location: Cologne
Posts: 1,640
|
n-1 stem export
hey guys,
there are some scripts out there to export stems. But I found none to export n-1 sums. That would be cool for practising reasons for example: Export every band member a sum without his own tracks.
I imagine something like: "bounce one n-1 sum for each selected track". These selected tracks (and their routings to reverbs and so on) should be muted in their respective n-1 sums. The exported files should be named something like "$projectname - $trackname 'n-1'"
happy coding
|
|
|
03-30-2024, 05:00 PM
|
#3107
|
Human being with feelings
Join Date: Feb 2007
Posts: 203
|
Is there a script available to move the edit cursor to the middle of a time selection? Seems like pretty simple math but I don't know where to begin with getting the start and end times of the current time selection.
Last edited by likenokevin; 03-30-2024 at 06:05 PM.
|
|
|
03-30-2024, 06:05 PM
|
#3108
|
Human being with feelings
Join Date: Feb 2007
Posts: 203
|
This code does the trick. I'm posting it here for anyone else who has a need for this function.
Code:
GetSet_LoopTimeRange(0, 0, TimeStart, TimeEnd, 0);
TimeStart != TimeEnd ? SetEditCurPos((TimeStart+TimeEnd)*.5, 0, 0);
Undo_OnStateChange("Edit Cursor to center of Time Selection");
|
|
|
04-05-2024, 09:45 PM
|
#3109
|
Human being with feelings
Join Date: Jun 2011
Posts: 610
|
Auto punch selected items
When "Record mode: Auto Punch selected items" is ON Midi & Audio recording behavior is different than each other.
Midi recording starts and ends at exactly the same start & end position of selected items. Also the recorded data is transferred to pooled and looped items.
Is it possible to do the same with audio recording?
So:
- Audio recording will start and end at exactly the same start & end position of selected items.
- recorded data will be transferred to pooled and looped items after recording finishes.
Please see the attachment. Any kind of help would be great. I can pay for this script if needed.
Regards.
|
|
|
04-15-2024, 08:18 AM
|
#3110
|
Human being with feelings
Join Date: Jun 2020
Posts: 48
|
I record a lot of spoken work and use the keyboard keys to move the playhead around and edit out silences and mistakes in real time. I have searched high and low for scripts that can split items that are unselected. This is contrary to the default paradigm for Reaper, which is:
1) If any item is selected, split only works on this selected item
2) If no items are selected, split works on all items across all tracks.
What I would love is a basic split action along these lines:
'Split both unselected and unselected media items (in selected tracks) at play cursor (if playing) or else at edit cursor'.
What I have tried:
- setting up a macro with the default splitting actions followed by a 'select all items in track action' keeping all items selected and split-able. This resulted in a myriad of other headaches such as accidentally trimming lots of items due to them being re-selected everytime I split an item.
- In Options/Editing behaviour there is a checkbox "If no items are selected, some split/trim/delete affect all items at the edit cursor". I tried toggling this 'off' but then simply no items are split when using the various split actions. I believe this toggle is just to prevent the splitting of items across tracks (when no items are selected) which many have complained about.
Good chance of me overlooking REALLY OBVIOUS SOLUTION here, so any pointers are much appreciated. Thanks to all contributors here.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 02:17 PM.
|