Old 09-03-2019, 09:54 PM   #1
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default Script Requests for a reasonable $$$

Hi. There are a lot of clever guys here ready to help anyone for free. However, then spend their time, and time is money. Most guys have donation link, but trust me, donations are so small it doesn`t fit quantity of knowledges and time needed for writing even small piece of code. There are already tons of helpful info and scripts, most of them shared in ReaPack. You can always post your question into Script Request Sticky, but I doubt you`ll get fast responce (or even willn`t) until someone ready to help you will be enough motivated.

I suggest to post here script requests you want badly so you get ready to pay some cash for it. The format is like:
Quote:
Description: what script should does in as more details as possible. This waaay increase speed of writing a script. Exclude words like "specific FX", "some track" - use instead "focused FX", "track with name X" and so on. The request shouldn`t be abstract, otherwise you need to point what variable you want to be editable. If the desription is very big, simply add a link to the thread or post with request. Please, DONT attach big screenshots/images, it is impossible to read page with REAPER 3 forum theme, thanks.
Suggested payment: $1-$200. Payments over $10 will be sticked to the first post. You must have email or forum PM opened so if someone ready to help you, he can send you paypal info or other way of online payment. If you change your payment from $1-9 to $10+, PM me so I`ll stick it.
Status: active / done. If you get new stuff written personally for you, please find your post and edit your request status so people know you don`t need a script anymore
To scripters:
1) you can share stuff right here OR send to guy who ask by email or private message OR share with ReaPack
2) if you get payment, please quote original request and post here that you did the job

Last edited by mpl; 09-03-2019 at 10:16 PM.
mpl is offline   Reply With Quote
Old 09-04-2019, 03:02 AM   #2
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,612
Default

Great idea!
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-04-2019, 03:38 AM   #3
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

I think extending the concept might be even more viable:

There should be a group of "Reaper Certified Consultants" who are able to provide payed support for those who are in danger to get lost, and who are able to provide especially tailored scripts (and themes, and CSI configuration files, ...) on request.

-Michael
mschnell is offline   Reply With Quote
Old 09-04-2019, 04:09 AM   #4
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

Stimulating payements of scripters works is very nice considering the vast amount of work they shared already for free.

Though for custom dev request, I prefer to be contacted by email directly from my website, so I can discuss, elaborate, negotiate etc, and keep tracks of conversation.
If the user makes direct contact they we (scripters) are less concurent than with public FR where we could argue on price between each others (and user will always peak the lowest).
With direct contact, users are looking for fast, precise answers and a more personnal relationship than with public request.

However, I encourage any person willing to propose requests in this thread to do it for mpl. It is hard to find new ideas to valorize our work so I wont undermine any initiative.

Quote:
There should be a group of "Reaper Certified Consultants"
Sure if someone could sponsor that, it could be nice.

Last edited by X-Raym; 09-04-2019 at 05:08 AM.
X-Raym is offline   Reply With Quote
Old 09-04-2019, 09:31 AM   #5
Dafarkias
Human being with feelings
 
Dafarkias's Avatar
 
Join Date: Feb 2019
Location: Southern Vermont
Posts: 864
Default

Maybe Justin would consider hiring some of the rockstar coders in this forum, considering how much positive publicity/marketing, exposure and they've injected into the REAPER community.

A lot of the work you guys have done has increased the fanbase of REAPER*. Logically, this would increase the company's gross income in one way, shape, or form.

Something to chaw on...

(I'm not referring to myself ^^^ I'm a casual sub-par quality coder)

*I feel qualified to say this, because this is one major aspects of REAPER that reeled me in.
__________________

Support my feature request!
Dafarkias is offline   Reply With Quote
Old 09-04-2019, 09:35 PM   #6
Thonex
Human being with feelings
 
Join Date: May 2018
Location: Los Angeles
Posts: 1,719
Default

I would definitely consider being a customer even though I code 95% of the edge case scripts I need. Why do I code them when I know you guys could probably code faster than I type English? Because I actually enjoy it. LOL But I’m not anywhere in your league for Reascriping.

Great idea!
__________________
Cheers... Andrew K
Reaper v6.80+dev0621 - June 21 2023 • Catalina • Mac Mini 2020 6 core i7 • 64GB RAM • OS: Catalina • 4K monitor • RME RayDAT card with Sync Card and extended Light Pipe.
Thonex is offline   Reply With Quote
Old 09-04-2019, 10:11 PM   #7
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

Quote:
Originally Posted by Dafarkias View Post
Maybe Justin would consider hiring ...
I don't suppose Justin is interested in doing any additional management job.

I suppose someone liking to do such a kind of management would need to stand up saying something like "I want to organize such a group, doing the management and the incoices ! Everybody allowing me to keep 20 % of the money made in that way."

-Michael
mschnell is offline   Reply With Quote
Old 09-05-2019, 12:21 AM   #8
Dafarkias
Human being with feelings
 
Dafarkias's Avatar
 
Join Date: Feb 2019
Location: Southern Vermont
Posts: 864
Default

Quote:
Originally Posted by mschnell View Post
I suppose someone liking to do such a kind of management would need to stand up saying something like "I want to organize such a group, doing the management and the incoices ! Everybody allowing me to keep 20 % of the money made in that way."
I concur.

I would love to do such a project, in another life.
__________________

Support my feature request!
Dafarkias is offline   Reply With Quote
Old 09-05-2019, 05:57 AM   #9
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

Quote:
Originally Posted by Dafarkias View Post
...in another life.
Sit on the Xerox machine and press the button ...
-Michael

Last edited by mschnell; 09-07-2019 at 01:16 PM.
mschnell is offline   Reply With Quote
Old 09-07-2019, 11:46 AM   #10
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 744
Default

Good idea MPL. I have a few requests, I'll start with one, please tell me if the tasks are difficult or time-consuming and I'd need to offer more.

I need a script that inserts a FX to the selected track(s) and moves those FX windows to one set of x/y screen coordinates. The FX name and coordinates should be hard-coded into the script (no dialogs). I have tried to combine native Insert FX with "mpl_Move focused Track FX to screen center" but it doesn't react properly to the newly inserted FX and moves other open FX windows instead. Perhaps the way to go is to just have it move the last FX in the chain's window to the coordinates since that will always be the newly added FX.

Offering: 40$
Arthur McArthur is offline   Reply With Quote
Old 09-07-2019, 11:55 AM   #11
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 744
Default

Another request:

Using VKEYS from JS API, create a bit of code that I can add on to scripts (such as those created with Lokasenna GUI) that intercepts all keyboard input and passes it through to optionally either the main window, MIDI editor or Media Explorer. Except for additionally defined keys that would not be passed through but are mapped to the script's functions (I'm fine with copying and pasting this code for each key that I need). So, for example, the code would pass all keyboard input to the MIDI editor, except for W,A,S,D, which would trigger functions within the script. Please let me know if this makes sense.

Offering: 50$
Arthur McArthur is offline   Reply With Quote
Old 09-08-2019, 11:32 AM   #12
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by Arthur McArthur View Post
I need a script that inserts a FX to the selected track(s) and moves those FX windows to one set of x/y screen coordinates. The FX name and coordinates should be hard-coded into the script (no dialogs).
Try this:
Code:
FX = "ReaEQ"
x  = 100
y  = 100
spacing  = 20 -- Added to x and y for each FX

reaper.Undo_BeginBlock2(0)

-- Create a table with all currently open windows, so that newly opened FX windows can be distinguished
a = reaper.new_array({}, 1000)
reaper.JS_Window_ArrayAllTop(a)
t = a.table()
t1 = {}
for i = 1, #t do
    t1[t[i]] = true
end

-- Now add FX (if not already in track chain) and open FX window
for t = 0, reaper.CountSelectedTracks(0)-1 do
    track = reaper.GetSelectedTrack(0, t)
    index = reaper.TrackFX_AddByName(track, FX, false, 1) -- 1=only add if not yet already in chain. -1 to always add
    reaper.TrackFX_Show(track, index, 3)
end

-- Find all newly opened windows, and move them to x,y coordinates
a.resize(0)
reaper.JS_Window_ArrayAllTop(a)
t2 = a.table()
for i = 1, #t2 do
    address = t2[i]
    if not t1[address] then 
        hwnd = reaper.JS_Window_HandleFromAddress(address)
        if reaper.ValidatePtr(hwnd, "HWND") 
        --and reaper.JS_Window_GetTitle(hwnd):match(FX) -- This line might be necessary, but may also cause problems for non-English Unicode names
        then
            reaper.JS_Window_Move(hwnd, x, y)
            x, y = x+spacing, y+spacing
        end
    end
end

reaper.Undo_EndBlock2(0, "Add FX: "..FX, 0)
EDIT: Fixed a bug.

Last edited by juliansader; 09-08-2019 at 11:27 PM.
juliansader is offline   Reply With Quote
Old 09-08-2019, 12:09 PM   #13
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by Arthur McArthur View Post
Using VKEYS from JS API, create a bit of code that I can add on to scripts (such as those created with Lokasenna GUI) that intercepts all keyboard input and passes it through to optionally either the main window, MIDI editor or Media Explorer. Except for additionally defined keys that would not be passed through but are mapped to the script's functions (I'm fine with copying and pasting this code for each key that I need). So, for example, the code would pass all keyboard input to the MIDI editor, except for W,A,S,D, which would trigger functions within the script.
This one may be a bit more tricky, since gfx.getchar() returns input as something like Unicode/UTF8, and don't return modifier keys such as Ctrl. Unicode has to be converted to Virtual Key Codes to send them to other windows.

Perhaps the easiest would be to ensure that keyboard focus is always on the other window (main, MIDI and Explorer), never on the script GUI, so that REAPER automatically sends all keyboard input to the other window. Then use JS_VKeys instead of gfx.getchar() to intercept and block those few keys that are needed by the script. The virtual key codes can be found here: https://docs.microsoft.com/en-us/win...tual-key-codes. NB: VKeys cannot block keystrokes that are global shortcuts.

When the script starts, get the HWND of the script GUI, and the HWND of the other window:
Code:
reaper.VKeys_Intercept(0x57, 1) -- W
reaper.VKeys_Intercept(0x41, 1) -- A
myHWND = reaper.JS_Window_FindTop("My unique GUI name", true)
-- Get the target window HWND: otherHWND = reaper.MIDIEditor_GetActive(), or reaper.GetMainHwnd(), or reaper.OpenMediaExplorer("", false)
Add this to the deferred loop function:
Code:
if reaper.JS_Window_GetFocus() == myHWND then -- perhaps GetForeground would work as well?
    reaper.JS_Window_SetFocus(otherHWND)
end
keys = reaper.JS_VKeys_GetState(-1) -- Only get keys that were pressed within the last second
if keys:byte(0x57) ~= 0 then
    -- Do W stuff ... same for other keys
end
When the script exits:
Code:
reaper.JS_VKeys_Intercept(0x47, -1)
-- etc for all the keys
juliansader is offline   Reply With Quote
Old 09-08-2019, 12:32 PM   #14
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 744
Default

Quote:
Originally Posted by juliansader View Post
Try this:
Code:
FX = "ReaEQ"
x  = 100
y  = 100
Thanks for taking a shot at this, Julian. Currently, the script is loading and floating the FX but not moving it to the defined screen coordinates on my system (Win10). I have the latest JS_API and tried uncommenting the GetTitle line but no luck.
Arthur McArthur is offline   Reply With Quote
Old 09-08-2019, 12:38 PM   #15
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by Arthur McArthur View Post
Thanks for taking a shot at this, Julian. Currently, the script is loading and floating the FX but not moving it to the defined screen coordinates on my system (Win10). I have the latest JS_API and tried uncommenting the GetTitle line but no luck.
I made a few quick changes to the script after posting. Are you using the changed version, or the original one that was auto-emailed to you?

Something unusual to take into account: On Windows and Linux, y position is measured from the top of the window relative to the top of the screen, whereas macOS measures from the bottom.
juliansader is offline   Reply With Quote
Old 09-08-2019, 12:49 PM   #16
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 744
Default

I'm using the changed version from your post, though I don't see the edit. No matter what x and y coordinates I put in, the FX is still opening in the top left corner
Arthur McArthur is offline   Reply With Quote
Old 09-08-2019, 12:53 PM   #17
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 744
Default

Quote:
Originally Posted by juliansader View Post
This one may be a bit more tricky
I'll PM you the script I'm trying to add this to. It's using the Lokasenna GUI and it doesn't seem to have an accessible defer loop.
Arthur McArthur is offline   Reply With Quote
Old 09-08-2019, 01:03 PM   #18
Lokasenna
Human being with feelings
 
Lokasenna's Avatar
 
Join Date: Sep 2008
Location: Calgary, AB, Canada
Posts: 6,551
Default

My scripts all have their defer loop managed by the GUI. You can have an external function run on each loop though - as long as GUI.func hasn't already been set, GUI.func = my_function will call it each time.

However... at that point I think the GUI has already called gfx.getchar, so it might be too late to intercept any incoming keys.
__________________
I'm no longer using Reaper or working on scripts for it. Sorry. :(
Default 5.0 Nitpicky Edition / GUI library for Lua scripts / Theory Helper / Radial Menu / Donate
Lokasenna is offline   Reply With Quote
Old 09-08-2019, 09:48 PM   #19
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Try chunked version for moving FX:

Code:
fxname = 'ReaEQ'
windX = 550
windY = 10

-- InsertFX / Move focused Track FX 
  ------------------------------------------------------------------------------------------------------
  function literalize(str) -- http://stackoverflow.com/questions/1745448/lua-plain-string-gsub
     if str then  return str:gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", function(c) return "%" .. c end) end
  end   
-------------------------------------------------
  function msg(s) reaper.ShowConsoleMsg(s) end
  function main(track, fxnumber, windX, windY)
    
    if not track or not fxnumber then return end
    fx_guid = literalize(reaper.TrackFX_GetFXGUID( track, fxnumber ))
    _, chunk = reaper.GetTrackStateChunk( track, '' )
    fx_chunk = chunk:match('BYPASS.-'..fx_guid)
    FLOAT_chunk = fx_chunk:match('FLOAT %d+ %d+ %d+ %d+\n') 
    if FLOAT_chunk then 
      x,y,w,h = FLOAT_chunk:match('FLOAT (%d+) (%d+) (%d+) (%d+)\n')
      if w == 0 then w = 500 h = 400 end
      FLOAT_chunk_mod = 'FLOAT '..windX..' '..windY..' '..w..' '..h..'\n'
      fx_chunk_mod = fx_chunk:gsub(literalize(FLOAT_chunk),FLOAT_chunk_mod)      
     else
      FLOATPOS_chunk = fx_chunk:match('FLOATPOS %d+ %d+ %d+ %d+\n') 
      fx_chunk_mod = fx_chunk:gsub(literalize(FLOATPOS_chunk),'')  
      fx_chunk_mod = fx_chunk..'\n'..'FLOAT '..windX..' '..windY..' 500 400 \n'
    end
    chunk_out = chunk:gsub(literalize(fx_chunk),fx_chunk_mod)
    reaper.SetTrackStateChunk( track, chunk_out )
    --msg(chunk_out)
    
  end
  
  for i = 1, reaper.CountSelectedTracks(0) do
    local track = reaper.GetSelectedTrack(0,i-1)
    local fxnumber = reaper.TrackFX_AddByName( track, fxname, false, 1 )
    main(track, fxnumber, windX, windY)
    reaper.TrackFX_Show( track, fxnumber, 3 )
  end
mpl is offline   Reply With Quote
Old 09-09-2019, 09:13 AM   #20
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,612
Default

Quote:
Originally Posted by Arthur McArthur View Post
I'll PM you the script I'm trying to add this to. It's using the Lokasenna GUI and it doesn't seem to have an accessible defer loop.
FWIW, you can add your own defer-loop, as every script can have up to 1024 individual defer-loops. So maybe, you are not dependent on Gui-Libs' defer-loop...
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-09-2019, 09:28 AM   #21
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

The FX stuff is working well, and Arthur and I have been PMing about the keystroke stuff, which also seems to be working out. As Mespotine noted, we are using out own defer loop and atexit function:
Code:
-- Just an example of a function that can be called when its key was pressed
function myExampleA()
    reaper.ShowConsoleMsg("A")
end

-- This table matches each intercepted key with its handler function
tKeyFuncs = {[0x57] = function() reaper.ShowConsoleMsg("W") end, 
             [0x41] = myExampleA,
            }

-- Intercept each of the keys listed in tKeyFuncs
for virtualKey in pairs(tKeyFuncs) do
    reaper.JS_VKeys_Intercept(virtualKey, 1)
end

local mainWindow = reaper.GetMainHwnd() -- Main window HWND will remain same, so no need to get new HWND each time when moving focus
local keyState   = reaper.JS_VKeys_GetState(0) -- Get starting key state, which will be updated in each cycle

-- When using Intercepts, it is safer to use pcall, so that the script doesn't immediately quit if an error is thrown, giving opportuniy for intercepts to be removed. 
function myProtectedFunction()
    -- Keep focus on target window, so that keyboard input goes to that window
    if reaper.JS_Window_GetFocus() == w then -- Perhaps GetForeground?  Not sure which works best.
        local keystrokeWindow = reaper.MIDIEditor_GetActive() -- or reaper.OpenMediaExplorer("", false) -- or mainWindow (no need to get new HWND for the main window, but Editor or Explorer HWND may change).
        if keystrokeWindow then
            reaper.JS_Window_SetFocus(keystrokeWindow)
        end
    end
    -- Get keystrokes and handle them by calling matching function.
    -- To get newly pressed keys, compare the keyState of previous cycle with keyState of current cycle.  WARNING: In slow scripts, the may disregard keys that were pressed and released very quickly in-between cycles.
    local keysPrev = keyState
    keyState = reaper.JS_VKeys_GetState(0) 
    if keyState ~= keysPrev then
        for key, func in pairs(tKeyFuncs) do
            if keyState:byte(key) > keysPrev:byte(key) then func() end
        end
    end
end

function myLoop()
    noError, errorMsg = pcall(myProtectedFunction)
    -- Only continue if no errors, and GUI still open
    if noError and gfx.getchar() >= 0 then reaper.defer(myLoop) else gfx.quit() end
end

-- On exit, remove intercepts.
-- If there was an error, make sure all intercepts are zero.  This may affect other scripts that also intercept these keys.
-- If no error, simply lower intercept by 1.
function restoreIntercepts()
    if noError then
        for key in pairs(tKeyFuncs) do
            reaper.JS_VKeys_Intercept(key, -1)
        end
    else
        for key in pairs(tKeyFuncs) do
            for i = 1, 255 do if reaper.JS_VKeys_Intercept(key, -1) == 0 then break end end
        end
        reaper.ShowConsoleMsg(errorMsg or "")
    end
end

reaper.atexit(restoreIntercepts)
reaper.defer(myLoop)
I'm pleased to see the ReaScriptAPI functions being applied in other people's scripts!

Last edited by juliansader; 09-10-2019 at 11:37 AM.
juliansader is offline   Reply With Quote
Old 09-09-2019, 12:00 PM   #22
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,248
Default Coding Porn?

I'm wondering if this insanely lucrative webcam porn mechanic couldn't somehow work for coders? It sounds like a joke, but why not?

When you're feeling like doing some work anyway, set up a screen share with chat and while you code, people can watch, learn, encourage, donate, make requests & suggestions...

It would be nice if script requests were both more collaborative and worth coders' time. I'm pretty sure it's often the case that multiple similar requests are being handled by multiple coders simultaneously and the audience for these scripts is limited to who noticed and took and interest in the thread.

A good request could be met with reasonable price bids from coders, and then it would be up to the community to pool enough money and ideas into making a really polished tool that more than a few people are likely to find and use.

Currently the primary way I discover most of these scripts in ReaPack is if they are named super accurately (kind of rare, unfortunately, I suppose due to all the different languages we speak) and I can easily find them by searching Actions. So that's quite a lot of work that just seems to languish in obscurity.

I think a live coding feed would also help people to appreciate the amount of work that goes into it behind the scenes. Since so much of this work is done for free, I think we've all gotten a bit spoiled and maybe don't realize the value we're getting.

I also think a lot of people shy away from even trying these abundant and free tools because they perceive scripting as "hacky," "buggy," "tacked-on," or "unintuitive." preferring to make repeated FR's to Cockos for "native implementation."

The answer to this is not more and more scripts, but more polished, integrated and seamless scripts, that are not the result of someone's limited enthusiasm and free time, but a group effort at a high quality toolset.

Because I cannot pay $100 for a custom script that only I use and $10 is hardly worth your time, but if 100 people want the same thing and they're all willing to throw $1-$100 toward it, then everybody wins, no?
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 09-09-2019, 02:10 PM   #23
lexaproductions
Human being with feelings
 
Join Date: Jan 2013
Posts: 1,126
Default

I'll gladly donate to whom can do this for me:

This Script is split in two actions:
Action#1- Save all opened tabs names and paths as a table in an extstate upon opening an RPL
Action#2-Compare Current opened tabs to what's been saved in the extstate to know if the RPL list needs to be resaved. Clean the old extstate and store the new one.

Let me know.
lexaproductions is offline   Reply With Quote
Old 09-09-2019, 03:38 PM   #24
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,910
Default

https://gist.github.com/cfillion/ec2...f82e6d865f6092

Add this at the very bottom to make Action 1 (which you can put in a custom action after "SWS: Open projects from list"):

Code:
clearSavedProjects()
saveOpenedProjects()
For action 2:

Code:
compareLists()
clearSavedProjects()
saveOpenedProjects()
If you need to save the RPL after the script tells you to do it, would it not be simpler to have the script just save the RPL by itself?
cfillion is offline   Reply With Quote
Old 09-09-2019, 03:52 PM   #25
lexaproductions
Human being with feelings
 
Join Date: Jan 2013
Posts: 1,126
Default

Wow this is amazing! Soo fast.
I'd rather leave the choice to save the RPL as a new version or not.

PM your fee for this please.
lexaproductions is offline   Reply With Quote
Old 09-09-2019, 03:57 PM   #26
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
Originally Posted by lexaproductions View Post
PM your fee for this please.
It is better to put fee BEFORE you ask something. Noone can expect how much time it needs to write something like this and how end script is importand for you.
mpl is offline   Reply With Quote
Old 09-09-2019, 04:03 PM   #27
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
Originally Posted by foxAsteria View Post
I'm wondering if this insanely lucrative webcam porn mechanic couldn't somehow work for coders? It sounds like a joke, but why not?
...
Because I cannot pay $100 for a custom script that only I use and $10 is hardly worth your time, but if 100 people want the same thing and they're all willing to throw $1-$100 toward it, then everybody wins, no?
Coding is pretty boring if it is not a somthing really interesting and complex. Someone payd me $1000 for couple of pretty simple scripts, but most of really complex stuff I shared for free... So no idea why coding live can be interesting for others. At the same the idea of reascript-able feature requests tracker would be awesome idea. Hopefully someone will implement it in the future.
mpl is offline   Reply With Quote
Old 09-09-2019, 04:13 PM   #28
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,248
Default

Quote:
Originally Posted by mpl View Post
So no idea why coding live can be interesting for others.
Well I had no idea why anyone watched (and payed) other people playing video games. I think it's those with the most personality that are most successful there, but I can hardly think of a better way to learn how to code than watching someone build the script I wish I could and chatting with others about it in real time.

That's worth money and way more interesting than taking a boring class or something.

Maybe it would take a lot of organizing to generate interest though.

Think about it. Just like those Twitch streamers, you'd have some people around who you could joke with or ask questions...maybe they even can look stuff up for you if you're busy etc. Could even make coding less boring for the coder... But some say I'm a dreamer...
__________________
foxyyymusic

Last edited by foxAsteria; 09-11-2019 at 09:37 PM.
foxAsteria is offline   Reply With Quote
Old 09-09-2019, 06:04 PM   #29
lexaproductions
Human being with feelings
 
Join Date: Jan 2013
Posts: 1,126
Default

Quote:
Originally Posted by mpl View Post
It is better to put fee BEFORE you ask something. Noone can expect how much time it needs to write something like this and how end script is importand for you.
Well I didn’t expect to get a fully working script 10minutes after I posted.
I’ll work it out with CFillion thanks for your concern.
lexaproductions is offline   Reply With Quote
Old 09-09-2019, 07:29 PM   #30
Win Conway
Human being with feelings
 
Join Date: Dec 2010
Posts: 3,825
Default

I tried this before with ‘Bounties’ when it was basically just sws doing it, Maybe it is time to set it up properly ?
__________________
Stop posting huge images, smaller images or thumbnail, it's not rocket science!
Win Conway is offline   Reply With Quote
Old 09-09-2019, 07:53 PM   #31
Lokasenna
Human being with feelings
 
Lokasenna's Avatar
 
Join Date: Sep 2008
Location: Calgary, AB, Canada
Posts: 6,551
Default

The problem then, as now, is that a forum is a terrible place to do something like this.

1. Nobody wants to read through a whole thread to see what people have asked for.
2. Nobody knows if another developer has already exchanged PMs or started work on a project.

Something like Github, on the other hand, would work great aside from those requesting a script having to sign up to post on it:

- There could be a repo that exists solely for this purpose (i.e. no code in it).
- Each request could be an Issue with the offered price in the title. Labels could also be used to easily flag what sort of work it is (audio processing, communicating with MIDI hardware, etc) since not everyone is good at everything.
- If someone decides to take on a project, they could assign themselves to it.
__________________
I'm no longer using Reaper or working on scripts for it. Sorry. :(
Default 5.0 Nitpicky Edition / GUI library for Lua scripts / Theory Helper / Radial Menu / Donate
Lokasenna is offline   Reply With Quote
Old 09-09-2019, 09:24 PM   #32
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
Originally Posted by Lokasenna View Post
The problem then, as now, is that a forum is a terrible place to do something like this.

1. Nobody wants to read through a whole thread to see what people have asked for.
2. Nobody knows if another developer has already exchanged PMs or started work on a project.

Something like Github, on the other hand, would work great aside from those requesting a script having to sign up to post on it:

- There could be a repo that exists solely for this purpose (i.e. no code in it).
- Each request could be an Issue with the offered price in the title. Labels could also be used to easily flag what sort of work it is (audio processing, communicating with MIDI hardware, etc) since not everyone is good at everything.
- If someone decides to take on a project, they could assign themselves to it.
ReaPack based repo, I would participate that.
mpl is offline   Reply With Quote
Old 09-11-2019, 09:02 PM   #33
Joe90
Human being with feelings
 
Join Date: Aug 2019
Posts: 853
Default

I think the idea of crowd funding useful scripts is an excellent one, as someone who could not script his way out of a paper bag (to stretch a metaphor) I would certainly be actively donating.

Until then, here's a few requests that I'd happily donate for directly, and I suspect some of them could be made quite easily by tweaking existing scripts (or perhaps they exist and I'm looking in the wrong place, I have the SWS extensions and ReaPack) -

'Set all notes in selected item(s) to grid length', to be used from the main arrange window on whichever midi items are selected.

A proper 'split on click' modifier for the midi editor. I have a modifier set to alt-click in the midi editor for splitting notes - I've tried any number of custom action combinations and I'm unable to make it cut the SELECTED notes, it seems to reset the selection on click, so I can either have it cut only the note I click on regardless of selection, or ALL the notes that cross the mouse cursor point horizontally. See this thread for more info if curious - https://forum.cockos.com/showthread.php?t=224118.

- If this can't be scripted directly, then another way to solve this would be if I could 'arm' a midi toolbar button via a keyboard shortcut from the midi editor, as I've managed to create a toolbar action that does exactly what I've described, but I have to manually arm it by right clicking every time making it more cumbersome than it's worth. There doesn't seem to be a way of arming it with a shortcut from the midi editor. Alt-click would be more elegant though.

'Set all midi items to always mix by default' this would be a global startup action, and would ideally affect all midi parts including those being recorded, so they always mix with other midi parts already on the track.

Also - a 'select all notes on/not on grid' action that follows the current grid selection would be cool, although not as urgent a need.
Joe90 is offline   Reply With Quote
Old 09-12-2019, 01:20 AM   #34
Thonex
Human being with feelings
 
Join Date: May 2018
Location: Los Angeles
Posts: 1,719
Default

Quote:
Originally Posted by Joe90 View Post
'Set all notes in selected item(s) to grid length', to be used from the main arrange window on whichever midi items are selected.
+1 in that department.
__________________
Cheers... Andrew K
Reaper v6.80+dev0621 - June 21 2023 • Catalina • Mac Mini 2020 6 core i7 • 64GB RAM • OS: Catalina • 4K monitor • RME RayDAT card with Sync Card and extended Light Pipe.
Thonex is offline   Reply With Quote
Old 09-13-2019, 01:29 AM   #35
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by Joe90 View Post
A proper 'split on click' modifier for the midi editor. I have a modifier set to alt-click in the midi editor for splitting notes - I've tried any number of custom action combinations and I'm unable to make it cut the SELECTED notes, it seems to reset the selection on click, so I can either have it cut only the note I click on regardless of selection, or ALL the notes that cross the mouse cursor point horizontally.
Will this do the trick?



Quote:
Originally Posted by Joe90 View Post
Until then, here's a few requests that I'd happily donate for directly, and I suspect some of them could be made quite easily by tweaking existing scripts (or perhaps they exist and I'm looking in the wrong place, I have the SWS extensions and ReaPack) -
Quote:
Originally Posted by mpl View Post
It is better to put fee BEFORE you ask something. Noone can expect how much time it needs to write something like this and how end script is importand for you.

Last edited by juliansader; 09-13-2019 at 01:35 AM.
juliansader is offline   Reply With Quote
Old 09-13-2019, 03:05 AM   #36
Joe90
Human being with feelings
 
Join Date: Aug 2019
Posts: 853
Default

Quote:
Originally Posted by juliansader View Post
Will this do the trick?
Hi Julian, I have this script, along with your other midi editing scripts, and all the ones I've had a chance to dig into have been excellent, thank you.

However for just splitting selected notes on click this is still a fair bit slower than a straight forward midi split tool modifier (I understand why it needs to be, because it provides much more functionality in one tool) however I'm just looking for a fast note split mouse modifier that only cuts selected notes on click and follows snap if on.

I'm not even sure it's possible, the modifier doesn't actually fire until the click occurs, and the click always resets the selection to the note being clicked on, so I'm begrudgingly realising that it doesn't matter what actions that I add into the modifier, they are only ever going to affect the individual note I've clicked on.

I understand about quoting up front, but it's tough for someone who doesn't script or program at all to evaluate a price, as I have no idea how difficult this is, and even if I did I still don't know whether this would take an hour of your time, a day, or a week. If anyone would like to send me a quote on PM then that I'll get back to you ASAP.

Same goes for the midi note fixed lengths from main window, it seems like Thonex might be up for chipping in for that one too.
Joe90 is offline   Reply With Quote
Old 09-13-2019, 06:30 AM   #37
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by Joe90 View Post
'Set all notes in selected item(s) to grid length', to be used from the main arrange window on whichever midi items are selected.
This should work:
Code:
 
...
EDIT: Moved to original thread Set midi note length in item from arrange window?.

Last edited by juliansader; 09-22-2019 at 05:17 AM.
juliansader is offline   Reply With Quote
Old 09-22-2019, 02:29 AM   #38
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 3,714
Default

Quote:
Originally Posted by Joe90 View Post
A proper 'split on click' modifier for the midi editor. I have a modifier set to alt-click in the midi editor for splitting notes - I've tried any number of custom action combinations and I'm unable to make it cut the SELECTED notes, it seems to reset the selection on click, so I can either have it cut only the note I click on regardless of selection, or ALL the notes that cross the mouse cursor point horizontally. See this thread for more info if curious - https://forum.cockos.com/showthread.php?t=224118.
The native action "Edit: Split notes" should do the trick: As far as I can tell, if it is assigned to a mouse modifier, it automatically moves the edit cursor to the mouse and then only splits selected notes, so you can link it to Alt+click in the MIDI Note or MIDI Piano Roll contexts.


Quote:
Originally Posted by Joe90 View Post
- If this can't be scripted directly, then another way to solve this would be if I could 'arm' a midi toolbar button via a keyboard shortcut from the midi editor, as I've managed to create a toolbar action that does exactly what I've described,
You probably won't need this for splitting, but in case you ever need to arm a MIDI editor toolbar in the future, simply use the single-line script "reaper.ArmCommand(XXX, "MIDI Editor")", where XXX is the action ID.

Last edited by juliansader; 09-22-2019 at 02:39 AM.
juliansader is offline   Reply With Quote
Old 09-23-2019, 04:36 AM   #39
Joe90
Human being with feelings
 
Join Date: Aug 2019
Posts: 853
Default

You probably won't need this for splitting, but in case you ever need to arm a MIDI editor toolbar in the future, simply use the single-line script "reaper.ArmCommand(XXX, "MIDI Editor")", where XXX is the action ID.[/QUOTE]

Very cool tip! Thanks.
Joe90 is offline   Reply With Quote
Old 09-23-2019, 04:37 AM   #40
Joe90
Human being with feelings
 
Join Date: Aug 2019
Posts: 853
Default

Quote:
Originally Posted by juliansader View Post
You probably won't need this for splitting, but in case you ever need to arm a MIDI editor toolbar in the future, simply use the single-line script "reaper.ArmCommand(XXX, "MIDI Editor")", where XXX is the action ID.
Very cool tip! Thanks.
Joe90 is offline   Reply With Quote
Reply

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 11:30 PM.


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