zynthian / zynthian-issue-tracking

Centralized Issue Tracking for Zynthian Project
https://github.com/orgs/zynthian/projects/1
11 stars 3 forks source link

Noise spikes when changing zs3 sub snapshots with continued audio input. #1239

Open wyleu opened 4 days ago

wyleu commented 4 days ago

Describe the bug When sub snapshots are used to change settings, considerable noise spikes are generated switching between different zs3 snapshots.

To Reproduce Steps to reproduce the behavior:

  1. Install last_State.zss last_state.zss.zip

  2. Use PC 5 & 6 to switch between zs3 states

  3. Hear switching noise on transition

Expected behavior A clean switch between these states. When used as a guitar effects pedal you frequently want to change quickly between bars. The noise renders this difficult as it's important to make sure there is no input audio

Setup: zyncoder: vangelis (1dd6f7a) zynthian-ui: vangelis (b2eaca7) zynthian-sys: vangelis (f842566) zynthian-data: oram (ddfa009) zynthian-webconf: vangelis (bd99d05)

Additional context Needs addressing to allow zs3 to be used in this context.

riban-bw commented 4 days ago

The supplied snapshot does not have any zs3. Please provide a snapshot with zs3 that will trigger the issue.

wyleu commented 4 days ago

Noise-spike.001.zip Here is the zss & the wav file. On changing from PC 5 to PC 6 a noise spike is heard. Not noticeable going the other way. Does it depend on the chain component? IF so we need to discover which are the villains in the ones we offer.

riban-bw commented 4 days ago

I think I see what is going on. In PR6, one of the chains has distortion. There is a short period when that chain is not muted and hence you get a short unexpected burst of distorted signal. Going the other way does not exhibit this because PR5 does not have the distortion in the chain.

So it looks like chains are being muted / unmuted in an order that does not best suit the changes in configuration. We could look at muting output during a ZS3 change similar to what is done during snapshot load but would need to ensure this did not interfere unduely with signal, e.g. a user may wish a chain to continue sounding during a ZS3 change - which is quite likely so any muting may need to be inteligent and chain based.

riban-bw commented 4 days ago

A proposal to fix this is to:

I think this should resolve this issue and be more robust without interferring with other signals.

riban-bw commented 4 days ago

I have implemented a fix in Vangelis (testing). Please test and validate the fix. This introduces a small delay loading zs3 only when required so that the appropriate chains can be muted (with soft mute appling). The delay is one jack cycle, e.g. 5.3ms at 48000fps, 256 frames.

wyleu commented 4 days ago

Fixed by

zyncoder: vangelis (1dd6f7a) zynthian-ui: vangelis (f1510ab) zynthian-sys: vangelis (f842566) zynthian-data: vangelis (ddfa009) zynthian-webconf: vangelis (bd99d05)

wyleu commented 4 days ago

Reopened in anticipation of release.