Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER Feature Requests

View Poll Results: Would you like the Devs to improve API for this?
Yes, it's would be very useful! 47 88.68%
No, it's a waste of time. 3 5.66%
I don't care. 3 5.66%
Voters: 53. You may not vote on this poll

Reply
 
Thread Tools Display Modes
Old 02-07-2016, 12:52 PM   #1
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default FR:API for "real" Non-destructive glue

Quote:
Originally Posted by matthewjumpsoffbuildings

I need an API function that is similar to the recently added propagate take to items action, but with more flexibility. mainly I just want it to propagate the wav src from the source item to all items with matching names on all tracks. but ideally id want the function to have control over which properties of the source take are copied to the target takes, and maybe even some flexibility/options with the name matching (eg wildcards etc)

I have written a bit of code that does this, but its super slow with large projects since it manually loops through ALL items in a project and checks the name, then updates the wav src if it matches, and this gets really sluggish cause its running in LUA.

if there was a native API action to do something like this, that would make the script much more usable with large projects.
__________________________________________________
How it looks:



__________________________________________________
__________________________________________________
__________________________________________________
Let's help Matthew to add such a great feature to Reaper with updated API.
__________________________________________________
This is what he has made for now: http://forum.cockos.com/showthread.php?t=136273
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names

Last edited by vitalker; 03-30-2016 at 12:48 PM.
vitalker is offline   Reply With Quote
Old 02-07-2016, 12:58 PM   #2
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default Native API for "real" Non-destructive glue

Quote:
Originally Posted by matthewjumpsoffbuildings

I need an API function that is similar to the recently added propagate take to items action, but with more flexibility. mainly I just want it to propagate the wav src from the source item to all items with matching names on all tracks. but ideally id want the function to have control over which properties of the source take are copied to the target takes, and maybe even some flexibility/options with the name matching (eg wildcards etc)

I have written a bit of code that does this, but its super slow with large projects since it manually loops through ALL items in a project and checks the name, then updates the wav src if it matches, and this gets really sluggish cause its running in LUA.

if there was a native API action to do something like this, that would make the script much more usable with large projects.
__________________________________________________
How it looks:

__________________________________________________
__________________________________________________
__________________________________________________
Let's help Matthew to add such a great feature to Reaper.
__________________________________________________
This is what he has made for now: http://forum.cockos.com/showthread.php?t=136273
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 02-08-2016, 12:29 PM   #3
Dstruct
Human being with feelings
 
Join Date: Jul 2006
Location: Dresden, Germany
Posts: 12,218
Default

Bug or Feature Request?
Dstruct is offline   Reply With Quote
Old 02-08-2016, 01:03 PM   #4
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

Quote:
Originally Posted by Dstruct View Post
Bug or Feature Request?
Feature request. Yeah, delete it please.
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 02-08-2016, 01:05 PM   #5
Dstruct
Human being with feelings
 
Join Date: Jul 2006
Location: Dresden, Germany
Posts: 12,218
Default

Quote:
Originally Posted by vitalker View Post
Feature request. Yeah, delete it please.
Moved
Dstruct is offline   Reply With Quote
Old 02-24-2016, 02:26 AM   #6
raiirock
Human being with feelings
 
raiirock's Avatar
 
Join Date: Mar 2013
Location: Moscow
Posts: 99
Default

Awesome idea !
raiirock is offline   Reply With Quote
Old 03-08-2016, 10:39 PM   #7
gpunk_w
Human being with feelings
 
Join Date: Dec 2010
Posts: 3,187
Default

Isn't this sub projects ?
__________________
Reaper scripters, that is all !!!!!!!!!!!!!!!!
gpunk_w is offline   Reply With Quote
Old 03-08-2016, 11:06 PM   #8
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Germany
Posts: 5,960
Default

Isn't this groups ?

(I.e.: Glue and Subproject work by rendering and creating new wav files. Grouping is >"real" Non-destructive< in that sense.)

-Michael
__________________
www.boa-sorte.de
mschnell is offline   Reply With Quote
Old 03-09-2016, 01:49 AM   #9
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

Quote:
Originally Posted by gpunk_w View Post
Isn't this sub projects ?
Nope. When you create subproject, the new file is created. When you do non-destructive glue, the existed files used only.
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 03-09-2016, 01:52 AM   #10
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

Quote:
Originally Posted by mschnell View Post
Isn't this groups ?

(I.e.: Glue and Subproject work by rendering and creating new wav files. Grouping is >"real" Non-destructive< in that sense.)

-Michael
Yes, it's very close to grouping, but it's not the same. You have original files only here. So it's really non-destructive.
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 03-30-2016, 12:15 PM   #11
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 3,614
Default

This is how it should be done:

http://forum.cockos.com/showpost.php...90&postcount=4

Simply amazing workflow possibilities here, especially if you can create pooled copies just like MIDI.

Do please stop spamming though.
__________________
Check out my hip-hop, funk-rock band Theatre Crisp
Fergler is offline   Reply With Quote
Old 03-31-2016, 10:43 AM   #12
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

Quote:
Originally Posted by Fergler View Post
Do please stop spamming though.
What is your post about?
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 03-31-2016, 02:27 PM   #13
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 8,164
Default

Quote:
Originally Posted by vitalker View Post
What is your post about?
Your bumping frequency.
nofish is offline   Reply With Quote
Old 01-28-2017, 08:49 AM   #14
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

bump.
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 03-04-2017, 12:30 AM   #15
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 414
Default

I still havent done any new coding on the Glue Group script, I feel like the devs arent really interested in this right now. With all the focus on automation items (which Im really happy about), thats understandable.

However I still would love a "Propagate Takes to Items with same name" API function that allows you to specificy which properties of the source take are copied to the target items (eg wav source, reverse, volume, panning). That would definitely motivate me to work on the Glue Group script.

For people who dont understand what the difference between this script and the standard Glue function in reaper is - this script stores all the source items data in the reaper project file, so all the pieces you glue together are not lost, but can be reinserted any time, edited, and reglued, and any copies of the glue group will then be updated to reflect your edits.

It is very similar to project-in-project, but it doesnt require you to make any new projects, or switch to a new project tab to edit the loop. Its better for short 1-2 bar loops, for example drum loops etc, where you need to be able to drag and loop the item, and also you need instances to update everywhere when you edit one instance, but its not really big enough to justify a sub-project.

Its sort of a combination of pooling/ghosting for audio items + project in project without having to switch tabs to edit.

Oh btw if any devs are watching - I would love for this script to be made redundant How about making a version of project-in-project that stores the item data in the parent project instead of a separate project file, and allowing you to edit the items in place instead of having to switch to a new project tab
__________________
[array] soundcloud facebook arraytheband.com.au

Last edited by matthewjumpsoffbuildings; 03-04-2017 at 12:38 AM.
matthewjumpsoffbuildings is offline   Reply With Quote
Old 12-04-2017, 01:06 PM   #16
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

Matthew can do this! Let's support him adding some required functions to API!
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 03-15-2018, 05:04 AM   #17
MegaLorf
Human being with feelings
 
MegaLorf's Avatar
 
Join Date: Jul 2017
Location: Moscow
Posts: 44
Default

Nice idea.
MegaLorf is offline   Reply With Quote
Old 03-27-2018, 05:57 PM   #18
stamp
Human being with feelings
 
Join Date: Feb 2018
Posts: 30
Default

+1
This is a must!

Please devs consider adding this!
stamp is offline   Reply With Quote
Old 07-11-2018, 10:00 AM   #19
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 4,170
Default

Bump.
__________________
Quote:
Originally Posted by Sexan View Post
Make a thread "F%#! you Reaper! I quit!" to get more views and feedback since these kind of threads get much more traction
SoundCloudFR: "Real" Non-destructive GLUEAll the REAPER names
vitalker is offline   Reply With Quote
Old 08-04-2018, 10:35 AM   #20
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 414
Default

Im still waiting to see if the devs add an API function that allows me to do something similar to the existing "Propagate take properties to similarly named items on all tracks" action, most importantly a version of this that can be called via Lua scripts AND one that allows me to specify that I only want the wav src property of the selected items take to be copied to all other similarly named takes.

Either if this is added to Reapers API, or if someone like the SWS devs could add a native C++ function that I can somehow use via Lua, that would work too. My existing method of updating take sources manually in a big loop in Lua is just not performant enough.

Until then I really havent got much motivation to debug this and make sure it works with current Reaper version. Sorry :/
__________________
[array] soundcloud facebook arraytheband.com.au
matthewjumpsoffbuildings is offline   Reply With Quote
Old 08-04-2018, 02:24 PM   #21
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 2,135
Default

Ok you have an "API for non-destructive glue". You glued take "non-destructively", reversed it (or part of it), added stretch markers, added takeFX, added envelopes.

Now unglue it. What do you get?
Right, total shit.

There isn`t ever proper description or implementation suggestions here. Won`t happen.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 08-04-2018, 07:07 PM   #22
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 414
Default

Wow someone got out of the wrong side of the bed.

Actually no, you are completely wrong. My implementation, which is just some Lua scripts, easily accounts for your big "gotcha" issue.

When you unglue an item, my script simply remembers the state of the item you just unglued, stores that temporarily, and inserts the source items into the project in their ORIGINAL state. NOT reversed/stretched etc. and then when you reglue the child components, it renders the new glued wav, then reinserts the item you unglued and just updates the wav src of it and all other items in the same group.

Since only wav src is updated, all items in the group maintain their position, stretch, reversing, take fx, and any other per-item/per-take stuff you want to do to it. Its just the source wav that gets updated.

So, if i can think of a simple solution for this supposedly huge problem you think youve come up with, if the Reaper devs did decide to do something themselves i doubt they would have even the slightest issue.
__________________
[array] soundcloud facebook arraytheband.com.au
matthewjumpsoffbuildings is offline   Reply With Quote
Old 08-05-2018, 01:27 AM   #23
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 2,135
Default

Sorry, but it is totally workflow mess.

Subproject is your friend (although I would request some subproject API improvements, including fast subproject parsing to quickly extract sources, which I guess very close to what you want to do). Currently there is GetProjectFromSource(), but this one doesn't work for me.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 08-05-2018, 01:52 AM   #24
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 414
Default

dude i dont know wtf you are on about. i built some reascripts to do just this, and it worked fine, as i explained. youre saying it will be a workflow mess based on what? far out theres some weird people on reaper forums :/
__________________
[array] soundcloud facebook arraytheband.com.au
matthewjumpsoffbuildings is offline   Reply With Quote
Old 08-12-2018, 04:52 AM   #25
andyp24
Human being with feelings
 
Join Date: Mar 2016
Posts: 512
Default

Devs PLEASE consider either:

implementing a native non-destructive glue to achieve the aim of the scripts in this thread, and/or meta (pooled) items described here: https://forum.cockos.com/showthread.php?t=209957

Or:

add the API functions to allow matthewjumpsoffbuildings to continue developing his non-destructive glue scripts.

These would be a huge benefit in various kinds of production workflow including sound design for TV/radio, in a way that sub-projects don't quite work for.

Thanks
andyp24 is offline   Reply With Quote
Old 08-13-2018, 02:27 AM   #26
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 2,135
Default

Maybe I misunderstood here something but what functions you want to have exactly?

All I see here is abstract requests. Didn't saw ever function name, arguments, what it should do exactly. Correct me if I wrong but I thought this is how to make API requests (see API request thread in developer section).

Get/count items with source given matching patrern or what? I guess native propagate action also looping through items, and I would not say it is much faster then lua loop doing same thing.
__________________
SoundCloud | MPL Scripts discussion | ReaPack | Donate
mpl is offline   Reply With Quote
Old 08-13-2018, 02:34 AM   #27
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 414
Default

I have asked for an API version of the "propagate take to items" action, with the option to allow for control over which source take properties are propagated (in my case, i just want wav src)

eg something like this
Code:
reaper.PropagateToTakes(MediaItem_Take source_take, string source_property_to_propagate, boolean single_track_only)
as for it being faster, i have done testing, with a large number of items, looping through all items in a project via lua and updating the wav src is WAY slower than the native "propagate take to items" action, even though the native action updates all properties, not just wav src.
__________________
[array] soundcloud facebook arraytheband.com.au
matthewjumpsoffbuildings 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 06:47 PM.


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