Your bounce is not running the same code as playback

Plugin formats let a synth know when it is being exported rather than played, and VST3 defines separate real-time, prefetch, and offline process modes. That is not a rumor from a forum thread. It is written into the format your instruments are built against.

There is a second flag underneath it. A plugin can ask whether it is inside a full export or inside a direct offline process on one clip, so the same instrument can behave three different ways depending on how the audio leaves your project.

Developers use that flag exactly as you would expect. The split between draft playback and linear phase rendering in Corona 7 is a current example, with a lighter path while you audition and a heavier one once the render starts. Your ears never hear the second path until the file lands.

Export mode is a flag your plugins can read​

The real-time path has to finish every block before the audio card asks for it. The offline path has no such deadline, so a developer can switch on filtering that would never survive live playback. Higher oversampling, longer filters, more accurate interpolation - all of it becomes affordable when nothing is waiting.

Some hosts make the two paths visible instead of hiding them. Sonar carries separate upsample on render and upsample on playback switches for each plugin, which is an admission that the quality you monitor and the quality you export were never guaranteed to match.

Most hosts keep it quiet. If you want to know whether your export path differs, bounce a short section offline, bounce the same section in real time, and null the two files against each other. Anything left over is the difference you have been arguing about. Do the same test with a single clip processed offline, since that route carries its own flag and can behave differently again.

Linear phase costs you time before the transient​

Offline renders often swap in a linear phase filter, which keeps every frequency aligned in time instead of smearing the phase relationships. The cost arrives before the sound does. Linear phase filters ring ahead of a transient, and that pre-echo grows with steeper slopes and bigger gain changes.

The latency is not small either. Pro-Q reports roughly 70 milliseconds in its lowest linear phase resolution at 44.1 kHz and around 1509 milliseconds at maximum, which the host has to compensate for using the figure the plugin reports.

That compensation is not automatic in the way most people assume. When a plugin changes its latency, the host has to ask for the new value and adjust, and the format documentation adds the phrase if supported. Older hosts and odd routing setups are where that quietly fails.

Compensation fixes the timing. It does nothing about the pre-ring. On sustained pads you will never notice, and on a plucked lead or a short percussive stab the attack loses its edge in a way that only shows up in the rendered file.

That is the honest trade. You get phase accuracy that real time cannot afford, and you pay for it in transient definition, so a render that measures better can still sound softer than the thing you approved.

Draft settings save CPU and change the sound​

Draft and eco modes cut the oversampling rate while you work. Corona 7 runs 8x oversampling and halves it for auditioning, which is a sensible way to keep a big unison patch playable on a laptop. It also means the aliasing you hear while programming is not the aliasing in your master.

The direction of the surprise depends on your settings. Leave draft mode on during playback, and your export gets cleaner than expected, which people rarely complain about. Leave a low-quality setting active for export, and you ship the rough version.

Sample rate matters here too. Corona 7 added an interpolator for 88.2 and 96 kHz sessions, so the same patch in a 96 kHz project is not going through the same math as it was at 48 kHz. Two projects, same preset, different output. Worth knowing before you decide a patch sounds harsh at one rate and fine at another.

None of this makes offline bouncing wrong. It makes the monitoring path a preview rather than a proof, and the gap widens with every quality setting a developer ties to the render flag. A mix that sounded clean while you worked can arrive with a top end you never actually auditioned.
 

Attachments

  • Your bounce is not running the same code as playback.webp
    Your bounce is not running the same code as playback.webp
    172.9 KB · Views: 1

Trending content

Sponsored

Top