Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add latency compensation for block bypass #108

Closed
pierreguillot opened this issue Apr 6, 2018 · 5 comments
Closed

Add latency compensation for block bypass #108

pierreguillot opened this issue Apr 6, 2018 · 5 comments
Projects

Comments

@pierreguillot
Copy link
Owner

It seems that it should done manually in the processBlockBypass() method of the processor.

@pierreguillot pierreguillot added this to To do in v1.0.5 via automation Apr 7, 2018
@pierreguillot pierreguillot removed this from To do in v1.0.5 Apr 14, 2018
@pierreguillot pierreguillot added this to To do in v1.0.6 via automation Apr 14, 2018
@pierreguillot
Copy link
Owner Author

Perhaps the plugin should send a notification to the patch and let it manage with a [block~] object. This way, the plugin can still receive the other events...

@pierreguillot pierreguillot moved this from To do to In progress in v1.0.6 Jun 1, 2018
@alfonso73
Copy link

Hi Pierre, what this feature is intended for?

@pierreguillot
Copy link
Owner Author

Plugins have a bypass option or a bypass parameter (VST3). For the moment, when a plugin is bypassed, the DSP method of Pd is avoid and the incoming signals are unchanged. But if the patch implies latency, bypassing the plugin will creates artifacts such as pre-echoes or time-shifting. Moreover, one could want to cross-fade the signals to avoid glitches and crackles for examples.

The solution I'm working on is to add an option to deactivate the automatic bypass and let the plugin creator the possibility to manage it in the patch when receiving the notification (bypass 1 or 0). This way, the latency could be preserved and to avoid crackles, he could apply a ramp on the signal and use the object [block~].

@pierreguillot
Copy link
Owner Author

Here are several way to use this feature: Important: Use the option autobypass false.

  • To preserve latency and to avoid time-shifting (when using delays, FFT, etc.):

screen shot 2018-06-02 at 11 57 50 am

  • To apply a cross fade between the wet and the dry signals:

screen shot 2018-06-02 at 11 34 18 am

Note: You combine the two mechanisms.

  • To avoid unnecessary computation:
    Important: This mechanism, must be used in a subpatch or abstraction where the transformation of the original signal is performed. The two previous mechanisms to switch between the wet and dry signals must still be active.

screen shot 2018-06-02 at 11 35 28 am

@pierreguillot
Copy link
Owner Author

Close - see bypass

v1.0.6 automation moved this from In progress to Done Jun 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
v1.0.6
  
Done
Development

No branches or pull requests

2 participants