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! 72 92.31%
No, it's a waste of time. 3 3.85%
I don't care. 3 3.85%
Voters: 78. 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: 7,460
Default API for true 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

Last edited by vitalker; 02-19-2019 at 11:32 AM.
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: 7,460
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
vitalker is offline   Reply With Quote
Old 02-08-2016, 12:29 PM   #3
Dstruct
Human being with feelings
 
Join Date: Jul 2006
Posts: 12,366
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: 7,460
Default

Quote:
Originally Posted by Dstruct View Post
Bug or Feature Request?
Feature request. Yeah, delete it please.
vitalker is offline   Reply With Quote
Old 02-08-2016, 01:05 PM   #5
Dstruct
Human being with feelings
 
Join Date: Jul 2006
Posts: 12,366
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
Win Conway
Human being with feelings
 
Join Date: Dec 2010
Posts: 3,769
Default

Isn't this sub projects ?
__________________
Stop posting huge images, smaller images or thumbnail, it's not rocket science!
Win Conway 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: Krefeld, Germany
Posts: 10,430
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
mschnell is online now   Reply With Quote
Old 03-09-2016, 01:49 AM   #9
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 7,460
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.
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: 7,460
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.
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: 4,461
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: 7,460
Default

Quote:
Originally Posted by Fergler View Post
Do please stop spamming though.
What is your post about?
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: 10,374
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: 7,460
Default

bump.
vitalker is offline   Reply With Quote
Old 03-04-2017, 12:30 AM   #15
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 442
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

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: 7,460
Default

Matthew can do this! Let's support him adding some required functions to API!
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: 60
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: 7,460
Default

Bump.
vitalker is offline   Reply With Quote
Old 08-04-2018, 10:35 AM   #20
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 442
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
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,861
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: 442
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
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,861
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: 442
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
matthewjumpsoffbuildings is offline   Reply With Quote
Old 08-12-2018, 04:52 AM   #25
andyp24
Human being with feelings
 
Join Date: Mar 2016
Posts: 1,043
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,861
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: 442
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
matthewjumpsoffbuildings is offline   Reply With Quote
Old 02-27-2019, 12:26 PM   #28
the brok
Human being with feelings
 
the brok's Avatar
 
Join Date: Oct 2006
Location: at home, mostly
Posts: 654
Default

i'd love for reaper to be able to glue nondestructively. there's too many tasks where new files are generated where nondestructive glueing would prevent from a mess on the hard drive, as well as keeping stuff from being cluttered very fast. i mean, in the end an item is nothing else than a container, holding the actual audio file anyway...
__________________
regards,
nico herz
BIGTONEsounddesign
the brok is offline   Reply With Quote
Old 08-03-2019, 07:46 PM   #29
puddi
Human being with feelings
 
puddi's Avatar
 
Join Date: Jun 2018
Posts: 375
Default

Non-destructive glue containers is one thing I'm sorely missing in Reaper. Not only does it tidy up the arrange view (without cluttering up the hard drive) but it also allows for easy propagation of groups of audio items.
puddi is offline   Reply With Quote
Old 08-03-2019, 10:58 PM   #30
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 7,460
Default

Quote:
Originally Posted by puddi View Post
Non-destructive glue containers is one thing I'm sorely missing in Reaper. Not only does it tidy up the arrange view (without cluttering up the hard drive) but it also allows for easy propagation of groups of audio items.
Justin has already responsed Reaper has subprojects for this purpose.
vitalker is offline   Reply With Quote
Old 08-04-2019, 03:00 AM   #31
puddi
Human being with feelings
 
puddi's Avatar
 
Join Date: Jun 2018
Posts: 375
Default

Quote:
Originally Posted by vitalker View Post
Justin has already responsed Reaper has subprojects for this purpose.
Ah, I don't really agree with that and think both have their own uses but I have to respect his opinion.
puddi is offline   Reply With Quote
Old 07-11-2020, 05:35 PM   #32
daxliniere
Human being with feelings
 
daxliniere's Avatar
 
Join Date: Nov 2008
Location: London, UK
Posts: 2,106
Default

If we had a way to reverse a Subproject, this would be solved. I do like the mockup shown in the first post, but not essential for me.

I still can't believe it wasn't part of the design of Subprojects for them to be reversable.
__________________
Dax Liniere
Puzzle Factory Sound Studios, London [Website] [Instagram]
[i7-4790K, 12Gb RAM, Win8.1x64, NVidia GTX1080ti, UAD2-OCTO, FireFaceUFX, REAPER x64]
daxliniere is offline   Reply With Quote
Old 03-06-2021, 03:33 PM   #33
BartR
Human being with feelings
 
Join Date: Oct 2014
Location: Belgium
Posts: 382
Default

THIS feature will be great! I did vote and I hope to see it soon.
__________________
Bart R.
BartR 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 10:40 PM.


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