Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Popping sound at the start of every note.

Help
2012-03-11
2013-05-23
  • Rafael Vega
    Rafael Vega
    2012-03-11

    Hello.
    I've been trying Bristol as a replacement to another jack synth that I use. Mainly because it doesn't have MIDI control messages support and Bristol does :)
    However, I've found that there is a popping sound at the start of every note. This is more apparent in some models/presets than others. I'm pretty sure my jack configuration is fine and I've also tried ALSA and two different sound cards (laptop internal and firewire). I also tried outputting Bristol straight to system output, passing through Ardour, different frame rates and buffer sizes (big ones) and it's always the same…
    Here is a recording of what it sounds like:  http://public.elsoftwarehamuerto.org/Bristol.flac
    Is this a known issue with Bristol? can someone advice how to get rid of it? I'm willing to spend some time debugging this/compile on my macine/whatever if I can get some help from the devels or whoever knows their way around the code.
    Cheers!
    RV

     
  • Nick Copeland
    Nick Copeland
    2012-03-12

    I had a listen through the sample you posted and agree that it is an issue with the attack time, it was always very aggressive but there was also a recent change from a default exponential to default linear attack which probably does not help with what you are hearing. You can change back to exponential from the config stage however there is _another_ change that will go into the next release which is probably the correct fix.

    The change is to make the envelope 'time constant'. This is actually not the case with the current code so if you incr ease the sampling rate you also increase the fastest attack rate. The fix places the attack at 500us then gives you a rate which is independent of the sampling rate. I can make this a config time option if people are interested, it could be a runtime option which I think that is overkill but 500us is still pretty aggressive.

    The maximum attack duration does not change, that is also a config option which defaults to 10 seconds however having the parameters being a function of the sampling rate was bad coding.

    FYI some background on the changes: I have been doing work on 'low end' systems where I default to half rate sample, 22KHz and 24KHz to reduce the CPU footprint and hence extend battery life. At the same time I have been working on high end systems where we have been reviewing the improved sound quality with 96KHz and 192KHz and these really exacerbated the problem. There are other interesting results from the developments. The main filters are Huovilainen's which are 2x resampling, this was required since the algorithm loses frequency accuracy as it approaches Nyquist. At the higher rates I removed the resampling since the cutoff frequency is now nowhere near Nyquist and the result is that, for the filters at least, the change from 48 to 96KHz is almost free and you can still 'play' the filter at self oscillation.

    Let me review the code differences and perhaps post the new envelope.c here. That might not be possible: the envelopes actually drive the signalling to the engine regarding when to deactivate voices in polyphonic voice assignments and I don't want any more sticky or lost notes where this signalling might have changed.

    Regards, nick