envelope follower / filter
-
- KVRist
- 52 posts since 5 Nov, 2006
thanks aciddose this sounds f**king sweet. one question - does the envelope follower track the peak amplitude? perhaps u cud make an option to alternate to rms aswell
good work man 
- KVRAF
- Topic Starter
- 12615 posts since 7 Dec, 2004
"perhaps u cud make an option to alternate to rms aswell"
no i wont do anything like that. i might consider implementing a more advanced envelope follower, but not right now. i'm not even too concerned about the filter plugin (or the other effects plugins) at the moment. once i do the effects pack update, adding guis and all that stuff, extra features will be included at the same time.
if i make changes to the follower, the attack/decay settings will be useless. they're only useful with this specific type of follower.
no i wont do anything like that. i might consider implementing a more advanced envelope follower, but not right now. i'm not even too concerned about the filter plugin (or the other effects plugins) at the moment. once i do the effects pack update, adding guis and all that stuff, extra features will be included at the same time.
if i make changes to the follower, the attack/decay settings will be useless. they're only useful with this specific type of follower.
- KVRAF
- 6478 posts since 16 Dec, 2002
so today I was finalising a mix and ended up making modern world class guitar sound by adding a peak 12dB filter to a wall of distorted guitars. I ended up automating freq parameter twitching it somewhat like a sample & hold random LFO, which prompted me here to ask a question:
Any chance of getting a simplistic LFO to the filter? (apologies as I don't know whether this was already covered here on the thread)

[edit]
and a super nasty bug found. I'm sure you're aware of it but the filter is perfectly capable of blasting out something reminiscent of zero digital db white noise on seemingly random. maybe it has to do with the odd headroom control, dunno. What's the purpose of it?
I've no clue how to get completely rid of the random blasts.
Any chance of getting a simplistic LFO to the filter? (apologies as I don't know whether this was already covered here on the thread)
[edit]
and a super nasty bug found. I'm sure you're aware of it but the filter is perfectly capable of blasting out something reminiscent of zero digital db white noise on seemingly random. maybe it has to do with the odd headroom control, dunno. What's the purpose of it?
I've no clue how to get completely rid of the random blasts.
- KVRAF
- Topic Starter
- 12615 posts since 7 Dec, 2004
"I've no clue how to get completely rid of the random blasts."
high headroom, zero saturation, less than full res.
this is fixed in the current version of the filter, it is still being worked on though and i wont be making changes to the filter plugin (the filter in xhip is what i'm refering to with 'filter') for a while. not until the changes i'm making are complete.
i'm going to add some lfos and various forms of modulation, maybe more options (36db,48db), saturation symmetry.
what settings were you using when you got noise blasts? normally they should have been occuring when you either 1) set the headroom too low (less than 36db) 2) full or nearly full res, high frequency with any amount of saturation.
what occurs inside the filter is, the clipper doesnt cut the range into valid values since it doesnt account for the saturation. normally this is ok, but at high frequencies the behaviour becomes such that when over a certain threshold, the values inside the filter move exponentially out of range. that causes wrapping distortion. the threshold is the point where the saturation causes the 90o phase point of the filter's transfer function to move above nyquist. you should notice the "wobble" in the frequency of the filter with saturation enabled. the width of this wobble depends upon how much saturation is applied. more saturation then moves the stability point at high res (higher res = more wobble) to lower frequencies.
the modified filter in the current (13) version of xhip solves this by dynamically adjusting the saturation level to ensure that the wobble always remains below nyquist. it has the benefical side effect of lowering the level of aliasing in the filter. are you able to reproduce the noise bursts in the current version of xhip?
the wrapping distortion caused by too low a setting for headroom can not be fixed unless i adjust the clipping values in the filter. the input signal would have to be clipped at very low headroom settings.
with the headroom set to 36db, the clipper acts accurately without saturation enabled. above or below this, it is possible to get wrapping distortion since the clip point isnt adjusted based upon the headroom setting. below, the input signal can directly push the filter out of range. above, the filter can gain more energy and force itself out of range. the clipping threshold is set based upon a headroom of 36db.
high headroom, zero saturation, less than full res.
this is fixed in the current version of the filter, it is still being worked on though and i wont be making changes to the filter plugin (the filter in xhip is what i'm refering to with 'filter') for a while. not until the changes i'm making are complete.
i'm going to add some lfos and various forms of modulation, maybe more options (36db,48db), saturation symmetry.
what settings were you using when you got noise blasts? normally they should have been occuring when you either 1) set the headroom too low (less than 36db) 2) full or nearly full res, high frequency with any amount of saturation.
what occurs inside the filter is, the clipper doesnt cut the range into valid values since it doesnt account for the saturation. normally this is ok, but at high frequencies the behaviour becomes such that when over a certain threshold, the values inside the filter move exponentially out of range. that causes wrapping distortion. the threshold is the point where the saturation causes the 90o phase point of the filter's transfer function to move above nyquist. you should notice the "wobble" in the frequency of the filter with saturation enabled. the width of this wobble depends upon how much saturation is applied. more saturation then moves the stability point at high res (higher res = more wobble) to lower frequencies.
the modified filter in the current (13) version of xhip solves this by dynamically adjusting the saturation level to ensure that the wobble always remains below nyquist. it has the benefical side effect of lowering the level of aliasing in the filter. are you able to reproduce the noise bursts in the current version of xhip?
the wrapping distortion caused by too low a setting for headroom can not be fixed unless i adjust the clipping values in the filter. the input signal would have to be clipped at very low headroom settings.
with the headroom set to 36db, the clipper acts accurately without saturation enabled. above or below this, it is possible to get wrapping distortion since the clip point isnt adjusted based upon the headroom setting. below, the input signal can directly push the filter out of range. above, the filter can gain more energy and force itself out of range. the clipping threshold is set based upon a headroom of 36db.
- KVRAF
- 6478 posts since 16 Dec, 2002
aha! that's it. I was using the default (24db I think) setting, which I thought was adequate for all cases not understanding it's purpose. Cheers for the detailed explanation.aciddose wrote:what settings were you using when you got noise blasts? normally they should have been occuring when you either 1) set the headroom too low (less than 36db)
speaking of the wobble of the saturation, I've always thought this was a feature with the filter - a fully intentional side effect (or at least a fortunate accident). I seem to recall you commenting on this behaviour on certain analog designs as well when you initially did research on the saturation.
And no, I've never heard these noise blasts with any version of xhip synth I've used.
-
- KVRAF
- 1958 posts since 16 Jan, 2005 from France's Dirty South
aciddose, i was meaning to ask you this (really i'm all over yout plugs lately, lovin xhip, the filterv6, a lot of your fxs...)
I've been (mis)using your reverb lately, wet 100%, size=0, time controls a kind of smearing effect, damp lopasses, a small bit of delay for a smooth granular 'send'.
It's really something, i love it on synths, would you care to explain me what's going on when doing this ?
Is there a thread discussing your effects somewhere, couldn't manage to find it ?
I've been (mis)using your reverb lately, wet 100%, size=0, time controls a kind of smearing effect, damp lopasses, a small bit of delay for a smooth granular 'send'.
It's really something, i love it on synths, would you care to explain me what's going on when doing this ?
Is there a thread discussing your effects somewhere, couldn't manage to find it ?
-
- KVRAF
- 5350 posts since 8 Aug, 2003 from Berlin Germany
Hey Aciddose-
Can you please give us the 11 o'clock news version of what is going on with xhip and what it is for those of us to weary to trod through the dozens for pages of the 'Thanks! Now finish xhip already! Darnit' thread?
Can you please give us the 11 o'clock news version of what is going on with xhip and what it is for those of us to weary to trod through the dozens for pages of the 'Thanks! Now finish xhip already! Darnit' thread?
- KVRAF
- Topic Starter
- 12615 posts since 7 Dec, 2004
the reverb is built from series delay elements. the delay elements are allpass filters with the integrator's output delayed. so, you get an allpass filter where the feedback inside the filter is delayed - this is an interesting configuration because it still operates the same as an allpass filter with a zero or single sample delay, the delay is just different.
so, basically, the delay elements are not the standard type, 'comb filters' which would produce ringing. they're instead allpass filters and they have a perfectly flat frequency responce, although the phase responce is then not flat. so, comb delay element = flat phase, peaks in frequency. allpass delay element = flat frequency, small phase shift at lower frequencies.
this (allpass delay element phase behaviour) turns out to be exactly what we want for a natural sounding reverb, since air resists lower frequencies more greatly than higher frequencies. lower frequencies travel through the air at a lower rate. the air acts (simplified) as an allpass filter.
with these allpass delay elements, i also provide for standard feedback. now an explaination of the controls:
- time
this adjusts the relative size of each delay element. the elements have increasing delay time as you get farther down the signal path and the times are non-linear. i use a function designed to produce a good balance of delay times for small to medium sized room effects, which is what i designed the reverb to produce. it doesnt produce very good large room effects, in the future the delay time function will be adjustable between different modes. (tiny, room, large, etc)
- diffuse
the diffuse parameter adjusts the frequency of the allpass filter elements. these are all set to a static value, equal for all delay elements. in the future i will change this to improve the effects produced.
- time
the time parameter adjusts the internal feedback of each delay element.
- delay
two (stereo) comb delay elements are applied to the output of the allpass delay elements. the channels are switched (pingpong) then the output of these comb elements is filtered and then fed back into the allpass elements for global feedback.
- feedback
this parameter controls the amount of global feedback (allpass -> comb -> filter <-| feedback)
- damp
this parameter controls the cutoff of a lowpass filter applied to the output of the comb delay elements.
- elements
this allows you to adjust how many allpass elements are used. four to seven are good numbers to use for medium sized room sounds. less than four will not converge to phase noise before the tail fades to zero. more than seven will have issues with very complex phase which creates noticable modification to the frequency spectrum. (too bright, too damp, or phasey)
- wet, dry (should be obvious?)
- headroom
the effects are all calculated in integer in order to increase accuracy, reduce noise and avoid other floating point processing problems such as denormal issues. the standard setting of -12db might not be enough for the reverb if you use very high level input or large amounts of feedback. if you get wrapping distortion (noise bursts, clicking, buzzing) increase the headroom as far as 90db. more than 90db headroom and you'll start to get decreased accuracy resulting in modification of the reverb tail and increasing noise floor. i wish i could use more bits for the calculations, 0db headroom sounds noticably better than -12db. (0db would be full 32bit range) i assume that this improvement will continue on up to 48 bits. on a 64 bit platform it would be possible to have 96db headroom (16 bits) and 288db accuracy (48 bits) at the same time.
so, basically, the delay elements are not the standard type, 'comb filters' which would produce ringing. they're instead allpass filters and they have a perfectly flat frequency responce, although the phase responce is then not flat. so, comb delay element = flat phase, peaks in frequency. allpass delay element = flat frequency, small phase shift at lower frequencies.
this (allpass delay element phase behaviour) turns out to be exactly what we want for a natural sounding reverb, since air resists lower frequencies more greatly than higher frequencies. lower frequencies travel through the air at a lower rate. the air acts (simplified) as an allpass filter.
with these allpass delay elements, i also provide for standard feedback. now an explaination of the controls:
- time
this adjusts the relative size of each delay element. the elements have increasing delay time as you get farther down the signal path and the times are non-linear. i use a function designed to produce a good balance of delay times for small to medium sized room effects, which is what i designed the reverb to produce. it doesnt produce very good large room effects, in the future the delay time function will be adjustable between different modes. (tiny, room, large, etc)
- diffuse
the diffuse parameter adjusts the frequency of the allpass filter elements. these are all set to a static value, equal for all delay elements. in the future i will change this to improve the effects produced.
- time
the time parameter adjusts the internal feedback of each delay element.
- delay
two (stereo) comb delay elements are applied to the output of the allpass delay elements. the channels are switched (pingpong) then the output of these comb elements is filtered and then fed back into the allpass elements for global feedback.
- feedback
this parameter controls the amount of global feedback (allpass -> comb -> filter <-| feedback)
- damp
this parameter controls the cutoff of a lowpass filter applied to the output of the comb delay elements.
- elements
this allows you to adjust how many allpass elements are used. four to seven are good numbers to use for medium sized room sounds. less than four will not converge to phase noise before the tail fades to zero. more than seven will have issues with very complex phase which creates noticable modification to the frequency spectrum. (too bright, too damp, or phasey)
- wet, dry (should be obvious?)
- headroom
the effects are all calculated in integer in order to increase accuracy, reduce noise and avoid other floating point processing problems such as denormal issues. the standard setting of -12db might not be enough for the reverb if you use very high level input or large amounts of feedback. if you get wrapping distortion (noise bursts, clicking, buzzing) increase the headroom as far as 90db. more than 90db headroom and you'll start to get decreased accuracy resulting in modification of the reverb tail and increasing noise floor. i wish i could use more bits for the calculations, 0db headroom sounds noticably better than -12db. (0db would be full 32bit range) i assume that this improvement will continue on up to 48 bits. on a 64 bit platform it would be possible to have 96db headroom (16 bits) and 288db accuracy (48 bits) at the same time.
- KVRAF
- Topic Starter
- 12615 posts since 7 Dec, 2004
-
- KVRAF
- 1958 posts since 16 Jan, 2005 from France's Dirty South
another one :
I never cared much for your compressor tbh aciddose, i have quite a few i really like, and it seemed to react in a really weird way everytime i tried it.
But, there is this one thing it's really great at :
A lot of times when i use a gate on synths or whatever, i try to compress the sound first, to further shape the gate reaction. Usually with a 50/100ms attack and very quick release, so i get more things going through.
It doesn't always work well with every comp, but the xhip comp is incredibly good (or maybe just easier) at that.
Anyway, could you tell us how it works, it's obviously not the average comp design, and i'd be interested in finding out on what sources i could put it to good use.
cheers
I never cared much for your compressor tbh aciddose, i have quite a few i really like, and it seemed to react in a really weird way everytime i tried it.
But, there is this one thing it's really great at :
A lot of times when i use a gate on synths or whatever, i try to compress the sound first, to further shape the gate reaction. Usually with a 50/100ms attack and very quick release, so i get more things going through.
It doesn't always work well with every comp, but the xhip comp is incredibly good (or maybe just easier) at that.
Anyway, could you tell us how it works, it's obviously not the average comp design, and i'd be interested in finding out on what sources i could put it to good use.
cheers
- KVRAF
- Topic Starter
- 12615 posts since 7 Dec, 2004
"it's obviously not the average comp design" it is exactly like the generic guitar pedal compressor you'll find at any guitar shop for $120. it is a feedback compressor without a 'threshold' which would require complicated analog or digital logic to implement. instead of the typical feedforward/threshold compressor design, mine simply takes the output signal of a amplitude modulating element directly, rectifies it and uses it's inverse to create an envelope. the compress control adjusts the amplification of this signal before it is inverted - the louder the signal, the lower the envelope gets pulled and therefore the greater the compression applied. the responce of this method is natually non-linear. since only a single integrator is used to generate the envelope rather than the usual four or five stages of smoothing in a feedforward compressor, mine exibits rather high levels of distortion. at full compression strength on a 0db input signal, with 1ms attack, 1s release, the distortion level is about 5-10% thd.
the effect performs exactly as a guitar pedal compressor does and has exactly the same controls - it shouldnt seem unnatural unless you're used to using vst compressors. to me, my compressor seems natural, while vst compressors seem unnatural. this is because they are completely different effects.
using a release which is faster than the attack, you'll actually get an expansion occuring rather than a compression. you might want to try using an expandor for that modification of gate responce. most "compressors" actually will not behave correctly with these settings since they're actually not natural compressors like mine. they use complex logic to adjust the linearity of the compression curve. mine doesnt use any logic other than the simple inverted envelope generator.
one very important thing to remember about my compressor is, it gives you a compression range about a hundred times more than most other compressors. 256 is extreme compression (-48db). most compressors will only offer about -24db or so, which is around a setting of 48.
the effect performs exactly as a guitar pedal compressor does and has exactly the same controls - it shouldnt seem unnatural unless you're used to using vst compressors. to me, my compressor seems natural, while vst compressors seem unnatural. this is because they are completely different effects.
using a release which is faster than the attack, you'll actually get an expansion occuring rather than a compression. you might want to try using an expandor for that modification of gate responce. most "compressors" actually will not behave correctly with these settings since they're actually not natural compressors like mine. they use complex logic to adjust the linearity of the compression curve. mine doesnt use any logic other than the simple inverted envelope generator.
one very important thing to remember about my compressor is, it gives you a compression range about a hundred times more than most other compressors. 256 is extreme compression (-48db). most compressors will only offer about -24db or so, which is around a setting of 48.
-
- KVRAF
- 1958 posts since 16 Jan, 2005 from France's Dirty South
thanks for the info, i tried it again keeping what you said in mind, and it will find it's place in my setup definitely...
Yet another one, i like the formant filter a lot, any chance that you could make it stereo in the next update ?
cheers
Yet another one, i like the formant filter a lot, any chance that you could make it stereo in the next update ?
cheers

