|
|
|
05-14-2014, 03:57 PM
|
#1
|
Human being with feelings
Join Date: Jun 2012
Location: Spain
Posts: 7,268
|
Flush FX before rendering
We have the option to Flush FX on stop.
It can only be activated if Run FX when stopped (good for certain VSTi) is active. If I deactivate it to save CPU when stopped, then Flush FX on stop is grayed out.. and then if you don't use Flush FX on stop... a lot of weird things happen. Even reverb tails being rendered at the beginning of a render.
Can we have Flush FX before rendering. It would never hurt I guess.
|
|
|
05-14-2014, 04:00 PM
|
#2
|
Human being with feelings
Join Date: Dec 2009
Location: Minnesota
Posts: 9,090
|
+ a zillion. I have been plagued by the reverb or delay at THE BEGINNING of a render before, ant it's maddening. But I have learned that if I "rewind" the cursor to before play starts, or even click somewhere in the timeline where the audio has stopped, I can render without worrying about this. But a more elegant solution would be awesome.
__________________
The Sounds of the Hear and Now.
|
|
|
05-15-2014, 06:14 AM
|
#3
|
Human being with feelings
Join Date: May 2011
Location: Shaolin => NJ
Posts: 1,213
|
Quote:
Originally Posted by richie43
+ a zillion. I have been plagued by the reverb or delay at THE BEGINNING of a render before, ant it's maddening. But I have learned that if I "rewind" the cursor to before play starts, or even click somewhere in the timeline where the audio has stopped, I can render without worrying about this. But a more elegant solution would be awesome.
|
Sorry bro, I'm not getting you. How do you avoid the reverb in the beginning when rendering? I have this issue too. My solution is to save, exit, then re-open and render.
|
|
|
05-15-2014, 08:04 AM
|
#4
|
Human being with feelings
Join Date: Sep 2012
Posts: 212
|
I think that is a problem with certain plugins. It happens in REAPER and Logic 7 as well when I use IK CSR. Put the play cursor after the last item in the project before rendering seems to help.
|
|
|
05-15-2014, 08:47 AM
|
#5
|
Human being with feelings
Join Date: Jun 2012
Location: Spain
Posts: 7,268
|
I'm trying to move the cursor to the beginning.. or to the end... nothing.. same reverb tail in render.. the only way to fix it for me is setting Flush FX on stop.
|
|
|
05-15-2014, 11:04 AM
|
#6
|
Human being with feelings
Join Date: Sep 2012
Posts: 212
|
Quote:
Originally Posted by heda
I'm trying to move the cursor to the beginning.. or to the end... nothing.. same reverb tail in render.. the only way to fix it for me is setting Flush FX on stop.
|
Does it happen when rendering online when you put the cursor in the beginning/after last item in project?
|
|
|
05-25-2014, 03:56 PM
|
#7
|
Human being with feelings
Join Date: Jun 2012
Location: Spain
Posts: 7,268
|
Quote:
Originally Posted by Refillable
Does it happen when rendering online when you put the cursor in the beginning/after last item in project?
|
yes it still happens.
I ended up setting up flush FX on stop, so it uses much more CPU even if it is stopped, but having reaper to not use CPU when stopped, stops VSTis from working while stopped. So if I want to test them while being stopped it is a bad thing. It should detect incoming midi signal when stopped and start the engine again until no more midi notes are received and after a reasonable time.. then stop engine again to save CPU.
|
|
|
05-26-2014, 05:35 AM
|
#8
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Yeah, flush before render would be good. I've been caught out a few times so I know to avoid it but it's still a bit of a pain. Would be great to just not have to worry about it.
|
|
|
07-14-2018, 05:25 PM
|
#9
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Was this ever addressed? Hitting the same thing a lot with H-Reverb and other tails.
|
|
|
07-15-2018, 07:11 AM
|
#10
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
.. thinking about it, it's not that easy - some plugs may for example make permanent noise even with silence fed through it. Think a noisy guitar amp sim etc. So you can't just flush with silence input until you detect silence output.
So I think the best solution is an option to 'pre-render <x> seconds of silence' to flush any tail-processing FX before a render is written to disk.
The time would be user adjustable (5-10 secs might be a good default).
EDIT: thinking about it more, a pre-render might throw off the phase location of any LFO type effects, so the render might sound different than when playing inside Reaper from the start. Maybe that can be avoided, but otherwise you could make the flush option effect-specific (disabled by default). For example, with me H-Reverb is the issue, so just pre-render flushing those instances would avoid most (all?) of my issues.
Last edited by DeBased; 07-15-2018 at 07:17 AM.
|
|
|
07-15-2018, 07:57 AM
|
#11
|
Human being with feelings
Join Date: May 2009
Posts: 29,269
|
Just an FYI since this almost always for a handful or less of FX, often just one or two, I just automate it out of the mix before the song starts so that there is nothing to render. IOW, let's say a delay with a number of repeats, I just automate the feedback or mix to zero just before the first bar starts.
__________________
Music is what feelings sound like.
|
|
|
07-15-2018, 11:29 AM
|
#12
|
Human being with feelings
Join Date: Jun 2010
Location: UK
Posts: 412
|
Yeah that's an OK workaround, another is to manually play some silence first before every render, or intentionally render a silent section at the start. But I find it easy to forget sometimes and then a whole (often slow) render is wasted. So an automated way would be great.
I don't know if effects actually get notified of a 'new' render or playback. If they do, they could flush their buffers themselves (I've mentioned it to Waves, I'll see what they say). Failing that, Reaper flushing silence before writing a render to disk seems like a good automatic solution.
EDIT: .. actually thinking about it, wouldn't it be nice if Reaper played previews of the render as it's taking place? Say it buffers 5 seconds and then plays them in chunks. That way you would instantly catch if something went wrong at the start (or anywhere in the render for that matter). So you would also catch eg. if you forgot to unmute a track (as I did earlier - twice : ), or if a plugin went rogue (ditto, after an unfreeze : ).
|
|
|
08-30-2020, 12:25 PM
|
#13
|
Human being with feelings
Join Date: Nov 2015
Location: Cologne
Posts: 1,640
|
could we please have this...
|
|
|
09-15-2020, 07:16 AM
|
#14
|
Human being with feelings
Join Date: Jun 2020
Posts: 1
|
+1
Really wish reaper had this feature.
|
|
|
05-27-2021, 06:13 AM
|
#15
|
Human being with feelings
Join Date: Jun 2010
Posts: 79
|
Adding my support for this!
|
|
|
05-27-2021, 07:59 AM
|
#16
|
Human being with feelings
Join Date: Apr 2011
Posts: 3,458
|
Could you check if this script bypasses the issue? (flushes the FX) :
Code:
local version = reaper.GetAppVersion()
local a,b = version:match("(6).(%d%d)")
a,b = tonumber(a), tonumber(b)
if a >= 6 then
if b < 29 then
unsupported = true
elseif b == 29 then
a, b = version:match("dev(%d%d)(%d%d)")
a,b = tonumber(a), tonumber(b)
if a < 5 then
unsupported = true
else
if b < 26 then
unsupported = true
end
end
end
else
unsupported = true
end
if unsupported then
reaper.MB("Unsupported version", "Aborting", 0)
return reaper.defer(function() end)
end
local proj_len = reaper.GetProjectLength( 0 )
local track1 = reaper.GetTrack( 0, 0 )
local ts_start, ts_end = reaper.GetSet_LoopTimeRange( 0, 0, 0, 0, 0 )
reaper.PreventUIRefresh( 1 )
-- Add dummy item
local dummy_item = reaper.AddMediaItemToTrack( track1 )
local dummy_pos = proj_len + 360
reaper.SetMediaItemInfo_Value( dummy_item, "D_POSITION", dummy_pos )
reaper.SetMediaItemInfo_Value( dummy_item, "D_LENGTH", 30 )
reaper.GetSetMediaItemInfo_String( dummy_item, "P_NOTES", "Dummy item", true )
reaper.GetSet_LoopTimeRange( true, true, dummy_pos, dummy_pos + 30, false )
-- settings
local proj_info = {"RENDER_SETTINGS","RENDER_BOUNDSFLAG"}
local settings_info = {0,2}
local proj_info_str = {"RENDER_FORMAT","RENDER_FORMAT2"}
local settings_info_str = {"bW11ZA==", ""}
-- Get current and set new settings
for i = 1, 2 do
local cur_val = reaper.GetSetProjectInfo( 0, proj_info[i], 0, false )
reaper.GetSetProjectInfo( 0, proj_info[i], settings_info[i], true )
settings_info[i] = cur_val
end
for i = 1, 2 do
local cur_val = ({reaper.GetSetProjectInfo_String( 0, proj_info_str[i], "", false )})[2]
reaper.GetSetProjectInfo_String( 0, proj_info_str[i], settings_info_str[i], true )
settings_info_str[i] = cur_val
end
-- Render with new settings
reaper.Main_OnCommand(41824, 0) -- Render project, using the most recent render settings
-- Set previous settings back
for i = 1, 2 do
reaper.GetSetProjectInfo( 0, proj_info[i], settings_info[i], true )
end
for i = 1, 2 do
reaper.GetSetProjectInfo_String( 0, proj_info_str[i], settings_info_str[i], true )
end
-- delete dummy item
reaper.DeleteTrackMediaItem( track1, dummy_item )
-- Restore time selection
reaper.GetSet_LoopTimeRange( true, true, ts_start, ts_end, false )
reaper.PreventUIRefresh( -1 )
reaper.UpdateArrange()
reaper.defer(function() end)
Requires at least v6.29+dev0526 - May 26 2021
|
|
|
05-31-2021, 11:13 AM
|
#17
|
Human being with feelings
Join Date: Jan 2016
Location: Los Angeles, CA
Posts: 3,127
|
Quote:
Originally Posted by amagalma
Could you check if this script bypasses the issue? (flushes the FX) :
Code:
local version = reaper.GetAppVersion()
local a,b = version:match("(6).(%d%d)")
a,b = tonumber(a), tonumber(b)
if a >= 6 then
if b < 29 then
unsupported = true
elseif b == 29 then
a, b = version:match("dev(%d%d)(%d%d)")
a,b = tonumber(a), tonumber(b)
if a < 5 then
unsupported = true
else
if b < 26 then
unsupported = true
end
end
end
else
unsupported = true
end
if unsupported then
reaper.MB("Unsupported version", "Aborting", 0)
return reaper.defer(function() end)
end
local proj_len = reaper.GetProjectLength( 0 )
local track1 = reaper.GetTrack( 0, 0 )
local ts_start, ts_end = reaper.GetSet_LoopTimeRange( 0, 0, 0, 0, 0 )
reaper.PreventUIRefresh( 1 )
-- Add dummy item
local dummy_item = reaper.AddMediaItemToTrack( track1 )
local dummy_pos = proj_len + 360
reaper.SetMediaItemInfo_Value( dummy_item, "D_POSITION", dummy_pos )
reaper.SetMediaItemInfo_Value( dummy_item, "D_LENGTH", 30 )
reaper.GetSetMediaItemInfo_String( dummy_item, "P_NOTES", "Dummy item", true )
reaper.GetSet_LoopTimeRange( true, true, dummy_pos, dummy_pos + 30, false )
-- settings
local proj_info = {"RENDER_SETTINGS","RENDER_BOUNDSFLAG"}
local settings_info = {0,2}
local proj_info_str = {"RENDER_FORMAT","RENDER_FORMAT2"}
local settings_info_str = {"bW11ZA==", ""}
-- Get current and set new settings
for i = 1, 2 do
local cur_val = reaper.GetSetProjectInfo( 0, proj_info[i], 0, false )
reaper.GetSetProjectInfo( 0, proj_info[i], settings_info[i], true )
settings_info[i] = cur_val
end
for i = 1, 2 do
local cur_val = ({reaper.GetSetProjectInfo_String( 0, proj_info_str[i], "", false )})[2]
reaper.GetSetProjectInfo_String( 0, proj_info_str[i], settings_info_str[i], true )
settings_info_str[i] = cur_val
end
-- Render with new settings
reaper.Main_OnCommand(41824, 0) -- Render project, using the most recent render settings
-- Set previous settings back
for i = 1, 2 do
reaper.GetSetProjectInfo( 0, proj_info[i], settings_info[i], true )
end
for i = 1, 2 do
reaper.GetSetProjectInfo_String( 0, proj_info_str[i], settings_info_str[i], true )
end
-- delete dummy item
reaper.DeleteTrackMediaItem( track1, dummy_item )
-- Restore time selection
reaper.GetSet_LoopTimeRange( true, true, ts_start, ts_end, false )
reaper.PreventUIRefresh( -1 )
reaper.UpdateArrange()
reaper.defer(function() end)
Requires at least v6.29+dev0526 - May 26 2021
|
Will test this tonight.
For context, this is a thread started in 2014 (and certainly not the first) that is simply asking for RENDERING YOUR FINAL PRODUCT to work properly.
I hate getting snippy like this, but I just can't believe it sometimes. Pick and choose my moments in the Pre forums to subtly bring this up when it seems the devs are working on Render stuff, but it goes unnoticed.
Just to double down : a bug that has existed since 2007 that affects rendering your final product, goes unnoticed in 2021.
|
|
|
09-03-2021, 06:53 AM
|
#18
|
Human being with feelings
Join Date: Jan 2012
Location: North Pole
Posts: 226
|
Yes please. If it were something as simple as a checkbox in options to flush all fx before render, it would always be checked here. Set it and forget it!
|
|
|
09-03-2021, 07:18 AM
|
#19
|
Administrator
Join Date: Mar 2007
Location: NY
Posts: 15,821
|
This has come up many times. Somewhere there is a long thread about it.
REAPER clears all of its own buffers before rendering, and informs all plugins that they should reset and flush their own buffers. There is a specific, documented VST call for this. If some plugin does not flush its buffers when it handles this call, that's the plugin's fault. There's nothing REAPER can do about it because REAPER does not have access to the plugin's buffers.
The suggestion that REAPER should pump silence through plugins before rendering, to deal with non-compliant plugins, is not workable, and would likely cause problems for compliant plugins while not improving the problem with non-compliant plugins. There's no amount of silence that would be sufficient to guarantee that buffers are empty.
Last edited by schwa; 08-11-2022 at 05:57 PM.
|
|
|
07-26-2022, 10:46 AM
|
#20
|
Human being with feelings
Join Date: Jun 2010
Posts: 79
|
I'm glad I found this thread. Reverb and delay tails at the beginning of tracks has been a nuisance for me for years. I can manually clear the buffer by playing back silence before I render, but it's really annoying. Has anyone else come up with a decent solution?
"Flush FX on stop" in preferences doesn't seem to do anything for me
|
|
|
07-26-2022, 11:53 AM
|
#21
|
Human being with feelings
Join Date: Jun 2012
Location: Spain
Posts: 7,268
|
Yes... This is still bugging me. I never know if the render is going to be fine. But you always need to listen to the rendered file to check it anyways.
I've found that if a plugin has both a VST version and a VST3 version, the VST3 version works better
|
|
|
07-26-2022, 04:25 PM
|
#22
|
Human being with feelings
Join Date: Jan 2016
Location: Los Angeles, CA
Posts: 3,127
|
It's almost always Arturia verbs.
|
|
|
08-11-2022, 05:54 PM
|
#23
|
Human being with feelings
Join Date: Jun 2014
Location: Silver City, NM
Posts: 526
|
pre render buffer dump
I arm all tracks - arm then off - and that flushes the buffer before rendering...
Seems like that should be an unnecessary step but it's the best I've come up with.
|
|
|
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 09:21 PM.
|