Old 05-14-2014, 03:57 PM   #1
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,268
Default 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.
heda is offline   Reply With Quote
Old 05-14-2014, 04:00 PM   #2
richie43
Human being with feelings
 
Join Date: Dec 2009
Location: Minnesota
Posts: 9,090
Default

+ 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.
richie43 is offline   Reply With Quote
Old 05-15-2014, 06:14 AM   #3
Quest The Wordsmith
Human being with feelings
 
Quest The Wordsmith's Avatar
 
Join Date: May 2011
Location: Shaolin => NJ
Posts: 1,213
Default

Quote:
Originally Posted by richie43 View Post
+ 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.
__________________
freestylefam.com
Quest The Wordsmith is offline   Reply With Quote
Old 05-15-2014, 08:04 AM   #4
Refillable
Human being with feelings
 
Join Date: Sep 2012
Posts: 212
Default

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.
Refillable is offline   Reply With Quote
Old 05-15-2014, 08:47 AM   #5
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,268
Default

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.
heda is offline   Reply With Quote
Old 05-15-2014, 11:04 AM   #6
Refillable
Human being with feelings
 
Join Date: Sep 2012
Posts: 212
Default

Quote:
Originally Posted by heda View Post
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?
Refillable is offline   Reply With Quote
Old 05-25-2014, 03:56 PM   #7
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,268
Default

Quote:
Originally Posted by Refillable View Post
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.
heda is offline   Reply With Quote
Old 05-26-2014, 05:35 AM   #8
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
Default

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.
IXix is offline   Reply With Quote
Old 07-14-2018, 05:25 PM   #9
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

Was this ever addressed? Hitting the same thing a lot with H-Reverb and other tails.
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)
DeBased is offline   Reply With Quote
Old 07-15-2018, 07:11 AM   #10
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

.. 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.
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)

Last edited by DeBased; 07-15-2018 at 07:17 AM.
DeBased is offline   Reply With Quote
Old 07-15-2018, 07:57 AM   #11
karbomusic
Human being with feelings
 
karbomusic's Avatar
 
Join Date: May 2009
Posts: 29,269
Default

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.
karbomusic is offline   Reply With Quote
Old 07-15-2018, 11:29 AM   #12
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

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 : ).
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)
DeBased is offline   Reply With Quote
Old 08-30-2020, 12:25 PM   #13
Gass n Klang
Human being with feelings
 
Gass n Klang's Avatar
 
Join Date: Nov 2015
Location: Cologne
Posts: 1,640
Default

could we please have this...
__________________
https://juliusgass.de
Gass n Klang is offline   Reply With Quote
Old 09-15-2020, 07:16 AM   #14
xammax
Human being with feelings
 
Join Date: Jun 2020
Posts: 1
Default

+1
Really wish reaper had this feature.
xammax is offline   Reply With Quote
Old 05-27-2021, 06:13 AM   #15
Melodeath
Human being with feelings
 
Join Date: Jun 2010
Posts: 79
Default

Adding my support for this!
Melodeath is offline   Reply With Quote
Old 05-27-2021, 07:59 AM   #16
amagalma
Human being with feelings
 
amagalma's Avatar
 
Join Date: Apr 2011
Posts: 3,458
Default

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
__________________
Most of my scripts can be found in ReaPack.
If you find them useful, a donation would be greatly appreciated! Thank you! :)
amagalma is offline   Reply With Quote
Old 05-31-2021, 11:13 AM   #17
ferropop
Human being with feelings
 
ferropop's Avatar
 
Join Date: Jan 2016
Location: Los Angeles, CA
Posts: 3,127
Default

Quote:
Originally Posted by amagalma View Post
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.
ferropop is online now   Reply With Quote
Old 09-03-2021, 06:53 AM   #18
Seldrums
Human being with feelings
 
Seldrums's Avatar
 
Join Date: Jan 2012
Location: North Pole
Posts: 226
Default

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!
Seldrums is offline   Reply With Quote
Old 09-03-2021, 07:18 AM   #19
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,821
Default

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.
schwa is offline   Reply With Quote
Old 07-26-2022, 10:46 AM   #20
Melodeath
Human being with feelings
 
Join Date: Jun 2010
Posts: 79
Default

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
Melodeath is offline   Reply With Quote
Old 07-26-2022, 11:53 AM   #21
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,268
Default

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
heda is offline   Reply With Quote
Old 07-26-2022, 04:25 PM   #22
ferropop
Human being with feelings
 
ferropop's Avatar
 
Join Date: Jan 2016
Location: Los Angeles, CA
Posts: 3,127
Default

It's almost always Arturia verbs.
__________________
FERRO
Songs I've Written/Produced : https://sptfy.com/7SIW
Instagram : http://www.instagram.com/ferropop
ferropop is online now   Reply With Quote
Old 08-11-2022, 05:54 PM   #23
tgraph
Human being with feelings
 
tgraph's Avatar
 
Join Date: Jun 2014
Location: Silver City, NM
Posts: 526
Default 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.
tgraph 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 09:21 PM.


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