Old 09-13-2016, 01:14 PM   #1
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 4,351
Default Lua: Stretch marker guard

Stretch marker guard is a lua Reaper script.
It allows to protect area around existing stretch marker. Could be useful if you have stretch markers at drums and you want keep some transient area unchanged by stretching algorithm. The idea is taken from this FR.


Installation:
  • if you haven`t ReaPack - install ReaPack extension, restart REAPER
  • if you have ReaPack - go to ActionList -> Syncronize packages
  • go to ActionList -> ReaPack: Browse packages... -> navigate and install Stretch marker guard package
  • go to ActionList -> ReaPack: Browse packages... -> navigate and install ReaImGui extension if its not installed/updated yet











(version from 2016 before 23.11.24 was completely based on existing markers and allowed to set only once, and look like this:
)

Last edited by mpl; 11-23-2024 at 02:00 PM.
mpl is offline   Reply With Quote
Old 09-13-2016, 01:22 PM   #2
vanhaze
Human being with feelings
 
vanhaze's Avatar
 
Join Date: Jul 2012
Location: Netherlands
Posts: 5,247
Default

mpl, Do you know this is really a revolutionary feature come true ?!

Jeeeeeezzz, i HAVE to try this NOW !!!

EDIT: I find "Transient Guard" a wonderful name, exactly hitting the nail.
vanhaze is offline   Reply With Quote
Old 09-13-2016, 02:47 PM   #3
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 10,672
Default

Very impressive, congrats !!
X-Raym is offline   Reply With Quote
Old 09-13-2016, 03:24 PM   #4
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,470
Default

excellent stuff as usual mpl.

An idea to improve it, could be to store the data of the stretch markers as they were before. So the reset button could work after closing the script.
heda is offline   Reply With Quote
Old 09-13-2016, 07:13 PM   #5
James HE
Human being with feelings
 
James HE's Avatar
 
Join Date: Mar 2007
Location: I'm in a barn
Posts: 4,467
Default

This looks really sweet

any thought to making the surrounding stretch pairs snap to grid divisions instead of ms? i.e 1/128, 1/64, 1/32, 1/16... etc?

this might be a useful creative thing for some sources.
James HE is offline   Reply With Quote
Old 09-13-2016, 10:06 PM   #6
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 4,351
Default

heda, I thought about that. That is goes not so complex, but maybe "Delete all non-1.0x markers" internal action is a better/simplier solution?
mpl is offline   Reply With Quote
Old 09-14-2016, 06:10 AM   #7
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: South, UK
Posts: 14,352
Default

Awesome! Will try when I've got time but this could be very useful thanks!
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is offline   Reply With Quote
Old 09-14-2016, 08:29 AM   #8
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,470
Default

Quote:
Originally Posted by mpl View Post
heda, I thought about that. That is goes not so complex, but maybe "Delete all non-1.0x markers" internal action is a better/simplier solution?
yes that is even better I think.
heda is offline   Reply With Quote
Old 09-15-2016, 08:16 AM   #9
Jaybee
Human being with feelings
 
Join Date: Aug 2015
Posts: 39
Default

This looks amazing but I'm not sure I've grasped how to use it in a real world situation. I've recently been looking at quantizing audio so explored Stretch Markers but I'm getting artifacts (especially on bass) that aren't there via the old-school split/quantize methods of correcting timing.

Here's what's happening:

1. Recorded bass line
2. Use Dynamic Split to detect Transients and write Stretch Markers
3. Set Grid resolution
4. Snap Stretch Markers to Grid

Now the bass line is perfectly in time *but* I'm getting lots of clicking/artifacts which were not there before the Stretch Markers moved. I gather this is because the Transients have stretched?

...and so by searching I found this thread...

Could anyone kindly explain for me the workflow on how using MPL's tool can eliminate my artifacts by protecting my transients? I have no idea what values to use inside the tool? I've taken my quantized Stretch Markers, applied MPLs tool and added a marker left and right of the transient (say an arbitary 20ms each). This just makes the artifacting/clicks even worse.

If I apply the tool before the quantize then I can't snap to grid as I can't define the Stretch Markers to use for the snap (i.e. just the transient) or can I?

Any help gratefully received! I can see by the thread responses this tool is very much appreciated, I just can't figure out how to use it properly
Jaybee is offline   Reply With Quote
Old 09-15-2016, 08:04 PM   #10
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 4,351
Default

Quote:
Now the bass line is perfectly in time *but* I'm getting lots of clicking/artifacts which were not there before the Stretch Markers moved. I gather this is because the Transients have stretched?
No. You'll get artifacts always when you stretch bass with any algorithm in any situation. Use dynamic split to split bass, then quantize small pieces. You cant just stretch any tonal (and especially low-freq) audio without artifacts. Even if you stretch slap stuff you can get this script to work but only for a start of every piece, other body of every note will be dirty and glitchy as hell after even a small stretching.

Last edited by mpl; 09-16-2016 at 03:06 AM.
mpl is offline   Reply With Quote
Old 09-16-2016, 06:33 AM   #11
Jaybee
Human being with feelings
 
Join Date: Aug 2015
Posts: 39
Default

Quote:
Originally Posted by mpl View Post
No. You'll get artifacts always when you stretch bass with any algorithm in any situation. Use dynamic split to split bass, then quantize small pieces. You cant just stretch any tonal (and especially low-freq) audio without artifacts. Even if you stretch slap stuff you can get this script to work but only for a start of every piece, other body of every note will be dirty and glitchy as hell after even a small stretching.
Now I understand! Thank you for the explanation
Jaybee is offline   Reply With Quote
Old 09-16-2016, 06:40 AM   #12
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,470
Default

I agree mpl, but also, to stretch tonal bass you can try to tweak the parameters of Elastique audio mode for that item. Preserve formats lowest pitches, and also activate "optimize for tonal option". Sometimes it works.
heda is offline   Reply With Quote
Old 09-16-2016, 07:31 AM   #13
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 4,351
Default

Year I guess this algos use zero-crossing detection to define optimal grain size. But results almost always was bad for me. Well, anyway it depending on how it sound in the mix If coefficient not so big, within final mix bad sounding stretch algos can be masked sometimes.
mpl is offline   Reply With Quote
Old 09-20-2016, 02:33 PM   #14
daxliniere
Human being with feelings
 
daxliniere's Avatar
 
Join Date: Nov 2008
Location: London, UK
Posts: 2,742
Default

Quote:
Originally Posted by mpl View Post
Stretch marker guard is another useless killer feature for REAPER. LOL.
Holy shit, man, this is amazing!!

Quote:
Originally Posted by mpl View Post
("Transient guard" sounds not exactly correct)
Nope, I think it's a perfect name, actually.
__________________
Puzzle Factory Sound Studios, London [Website] [Instagram]
[AMD 5800X, 32Gb RAM, Win10x64, NVidia GTX1080ti, UAD2-OCTO, FireFaceUCX, REAPER x64]
[Feature request: More details in Undo History]
daxliniere is online now   Reply With Quote
Old 09-20-2016, 02:36 PM   #15
daxliniere
Human being with feelings
 
daxliniere's Avatar
 
Join Date: Nov 2008
Location: London, UK
Posts: 2,742
Default

The Russian ReaScript contingent is blowing my mind, lately!
__________________
Puzzle Factory Sound Studios, London [Website] [Instagram]
[AMD 5800X, 32Gb RAM, Win10x64, NVidia GTX1080ti, UAD2-OCTO, FireFaceUCX, REAPER x64]
[Feature request: More details in Undo History]
daxliniere is online now   Reply With Quote
Old 09-23-2016, 05:13 AM   #16
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 4,351
Default

Heda, added to ReaPack both internal action and external script for removing non-1x markers. Hope didn`t broke something.

Last edited by mpl; 09-23-2016 at 12:50 PM.
mpl is offline   Reply With Quote
Old 12-30-2017, 11:04 PM   #17
lolilol1975
Human being with feelings
 
Join Date: Dec 2015
Posts: 1,741
Default

Hello mpl, I think this is a question for you:
https://forum.cockos.com/showthread.php?t=201295

How can we use your tool to do time stretching of drum parts ? Thank you.
lolilol1975 is offline   Reply With Quote
Old 12-31-2017, 11:58 AM   #18
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,619
Default

Quote:
Originally Posted by daxliniere View Post
The Russian ReaScript contingent is blowing my mind, lately!
must be the better vodka

mpl wow what a brilliant idea... thanks yet again for what you do!!!
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva
hopi is offline   Reply With Quote
Old 08-13-2018, 03:24 PM   #19
pipelineaudio
Mortal
 
pipelineaudio's Avatar
 
Join Date: Jan 2006
Location: Wickenburg, Arizona
Posts: 14,063
Default

This seems to have a bug that it brings back any stretch markers you deleted, but aside from that, pretty damn awesome!!!!
pipelineaudio is offline   Reply With Quote
Old 08-13-2018, 03:30 PM   #20
Thonex
Human being with feelings
 
Thonex's Avatar
 
Join Date: May 2018
Location: Los Angeles
Posts: 1,751
Default

Very slick!!!

Fantastic! This is a real gem!
__________________
Cheers... Andrew K
Reaper v7.30+• 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 11-28-2018, 06:28 PM   #21
shady
Human being with feelings
 
Join Date: Jun 2017
Posts: 110
Default

took me a few rounds of the licecap, and then i got it. dis is sick.
__________________
twitch.tv/suprshady trying to stream REAPER stuff.. more than twice a year
shady is offline   Reply With Quote
Old 09-05-2019, 05:27 PM   #22
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,351
Default

Ah cool man, thanks for this. I'd seen it in the list but couldn't figure out how it worked. Very helpful!
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 05-29-2024, 05:36 AM   #23
shake_puig
Human being with feelings
 
Join Date: May 2015
Posts: 6
Default

How can I use it by slightly adjusting? it seems to snap all the way to the right or left.
shake_puig is offline   Reply With Quote
Old 10-30-2024, 10:04 PM   #24
Scrumpy Jack
Human being with feelings
 
Scrumpy Jack's Avatar
 
Join Date: Apr 2009
Posts: 29
Default

Quote:
Originally Posted by shake_puig View Post
How can I use it by slightly adjusting? it seems to snap all the way to the right or left.
I just ran across this too, and it looks like this is caused by some naming collisions that happened since it was written. If you find & replace the script's functions math_q and SetExtState to use different names, the sliders work again as they used to. It's a very handy script!
Scrumpy Jack is offline   Reply With Quote
Old 11-23-2024, 01:53 PM   #25
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 4,351
Default

Quote:
Originally Posted by Scrumpy Jack View Post
I just ran across this too, and it looks like this is caused by some naming collisions that happened since it was written. If you find & replace the script's functions math_q and SetExtState to use different names, the sliders work again as they used to. It's a very handy script!
This is no longer needed, the script updated to some modern API implementation, it uses now printed take markers as a source for central markers, most of the code rebuilded for more stable usage.

Attached Images
File Type: gif 1.gif (214.8 KB, 191 views)
mpl is offline   Reply With Quote
Reply

Thread Tools

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:31 AM.


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