I got my Keeley Halo Pedal yesterday - I made some measurements as I was curious about the settings the default preset (1A) uses for the Halo sound.
Thanks to the block diagram posted by
@Robert Keeley himself here:
https://forum.fractalaudio.com/threads/keeley-halo.185333/page-4#post-2288551, we know the pedal uses 4 delay lines, Del1L, Del1R, Del2L, Del2R.
Del1L feeds into Del2L and Del1R feeds into Del2R.
Measurements
Here's what I measured for the default preset (The Halo sound), with the pedal in wet only mode and hooked into In3/Out3 of the Axe-Fx III set to unity gain:
- The modulation rate is set to around 0.252Hz
- The modulation depth is set to around 46%.
- There's two LFOs, which I'll call LFO1A = sin, LFO1B = cos, both in sync with each other and 90 degrees apart (naturally).
- Del1L is modulated with LFO1B.
- Del1R is modulated with LFO1A.
- Del2L is modulated with LFO1B.
- Del2R is modulated with a mix of 0.5*LFO1B + 0.1*LFO1A which results in a LFO output that's about half the depth of Del2L LFO and about a 11.25 degree shift.
- The output of Del1 into Del2 is lowered by -6dB (50%).
- Del1 time is set to around 362ms
- Del2 time is set to around 480ms.
- The wet level is set to around -11dBFS
- Feedback for Del1 and Del2 is around 43%
- With the depth knob at max - I measured around 10ms variation in Del1 L/R and around 15ms for Del2L and around 7ms for Del2R.
To emulate this on the Axe-Fx III, we can use two delay blocks set to Dual Delay Type
- Del1L = Delay Block 1 L
- Del2L = Delay Block 1 R
- Del1R = Delay Block 2 L
- Del2R = Delay Block 2 R
- Delay Block 1 Pan L and Pan R can be set to -100 as they are emulating the delay lines for the left channel
- Delay Block 2 Pan L and Pan R can be set to to 100 as they are emulating the delay lines for the right channel
Feedback
Following the block diagram, we can see that the feed from Del1 to Del2 is phase inverted, so we can use the negative feedback feature of the delay block to invert the phase - since I measured 50% reduction, we can set it to -50%
- On Both delay blocks, set Feedback L>R to -50%
- Set Feedback R>L to 0% as Del2 does not feed into Del1.
- Set Feedback L>L and Feedback R>R on both delay blocks to 43% to match the measured value.
Time and Modulation
- We can use LFO 1 in the controllers section, mainly because we can map which side A or B we can use and can control the depth more accurately (unsure how the depth scaling works for the built-in delay block LFOs).
- Output B Phase is set to 90 degrees
- Delay 1 Time L (Del1L) is mapped to LFO1B, with a parameter range of 357-367ms (approximates the setting of 362ms, with +-5ms)
- Delay 1 Time R (Del2L) is mapped to LFO1B, since I measured that Del1L and Del2L LFOs are in sync, with a parameter range of 473ms to 488ms, approximating the 15ms depth around 480ms.
- Delay 2 Time L (Del1R) is mapped to LFO1A, since Del1L and Del1R LFOs are 90 degrees apart, with the same parameter range map as Delay 1 Time L.
- Delay 2 Time R (Del2R) is mapped to use both LFO1B and LFO1A, with a 50% and 10% mix respectively
- The tricky part here is that the LFO1A/B outputs go from 0 to 1 - for periodic signals like the sin type, this means the mean is 0.5. When scaling however, the mean is impacted, for example for Scale 1 set to 50% the mean becomes 0.25.
- So we need to compensate with Offset to keep the same mean.
- The measurements show the mean for Del2R LFO matches the mean for Del2L LFO.
- We use the Scale parameter in the mapping section of the modifiers to simulate the measured depth of 46% for all (Delay 1 Time L/R, Delay 2 Time L/R)
Filtering
Saturation
Attached is a patch with all these parameters set.
Edit: Attached preset v3 which attempts to match saturation and filtering.
Here's a comparison between the Halo pedal and the Axe-Fx III - first is the Axe-Fx III, then the Halo pedal.
Edit: After matching filtering and saturation: