EQ
Manual · version 0.2
A plain digital equaliser with up to 16 bands, where each band works on its own channel: stereo, left, right, mid or side. It does no analogue emulation and adds no colour. The curves are the textbook analogue responses, reproduced digitally without the usual squeeze near the top of the spectrum. A band can also be a Track band: bells that follow the pitch of a bass, an 808 or a voice, on its fundamental, its harmonics or both.

The idea
Logic's Channel EQ processes one channel set per instance. A side high-pass, a mid presence lift and a stereo air shelf need three instances in a row, each in its own window, and you cannot see what they do together. Here those are three bands in one window, with one summed curve per channel set.
Where it goes
Anywhere an EQ goes: a track, a group bus, the mix bus. There is no latency unless you switch on LOOKAHEAD for the Track bands; it is off by default, because an EQ goes on everything and should not carry latency unless it is asked to. With all bands off, or with bell, shelf and tilt bands at 0 dB, the audio passes bit for bit. 16 bands, 8 of them dynamic, use about 2.5 to 3 % of one core at 48 kHz stereo; with two of them Track bands of 8 harmonics each, about 6 %.
On a mono track, stereo, left, right and mid bands all act on the signal, and side bands do nothing. The band panel says so.
Per-band channels
| Channel | What it touches |
|---|---|
| STEREO | Left and right, with the same filter on both. |
| L, R | One side only. |
| MID | (L + R) / 2: what is in the centre, such as vocal, kick, bass and snare. |
| SIDE | (L - R) / 2: what differs between the sides, such as width, room and wide pads. |
The bands run in band order, 1 to 16, in series, each on its own channel.
Controls
The band panel under the display shows the selected band. Every value can be typed: click the number under a knob.
| Control | What it does |
|---|---|
| ON | Switches the band on or off, with a 20 ms fade. |
| SOLO | The output becomes a band pass at the band's frequency and Q, on the band's channel, so you hear what the band works on. It is the latching version of alt-click on the node. It is a window action, not a host parameter, and closing the window ends it. |
| TYPE | Bell, Low shelf, High shelf, Low cut, High cut, Notch, Band pass, Tilt or Track. Tilt pivots at the band frequency, and GAIN is the tilt across the spectrum: +6 means -3 dB at the bottom and +3 dB at the top. Shelves are 12 dB per octave, and Q sets their resonance as on an analogue shelf: 0.71 gives no overshoot, higher Q gives a dip and a bump either side of the frequency. Track is described below. |
| CHANNEL | STEREO, L, R, MID or SIDE. |
| SLOPE | Cuts only. 6, 12, 18, 24, 36, 48, 72 or 96 dB per octave, default 12. These are Butterworth cascades. Q adds resonance at the corner at every slope except 6 dB per octave; Q 0.71 is plain Butterworth, with -3 dB at the frequency. |
| FREQ | 10 Hz to 22 kHz. |
| GAIN | -30 to +30 dB, default 0. Dimmed for types without gain. |
| Q | 0.1 to 40, default 1. |
| DYNAMIC | With THRESHOLD, RANGE, ATTACK, RELEASE and SIDE CHAIN, described below. The live dynamic gain is shown, for example "now -3.2 dB". |
| LOOKAHEAD | In the header, off by default. Delays the audio by 41.8 ms so that Track bands land on each note. The header shows "no latency" or "latency 41.8 ms". |
| OUTPUT | -24 to +24 dB, default 0. On the right, with the IN and OUT peak meters and the loudness of the output. |
| BYPASS | Level-matched. At the moment you engage it, the difference between the output's and the input's short-term loudness is captured (capped at 20 dB). The input is then played at that level, with a 25 ms fade, so you compare the tone and not the volume. The label reads "level-matched bypass", or "matched +2.3 dB" while bypassed. |
The display
20 Hz to 20 kHz, gain scale on the left. Each band is a numbered node, coloured by its channel: green for stereo, left and right, amber for mid, blue for side. A small letter (L, R, M or S) by the node says which channel it is on. Each band's own curve is drawn faint. On top are the summed curves, one per channel set in use:
- Green: the stereo bands. When there are left or right bands, it splits into solid for left and dashed for right.
- Amber: stereo plus mid bands, which is what centred content gets.
- Blue: stereo plus side bands, which is what the wide content gets.
The summed curves are exact for content on that channel. A left or right band also changes the mid and side content, which the amber and blue curves do not show. A dynamic band shows its live gain as a moving ghost: the shaded area between its set curve and where it is right now, plus a small ring on the node's stem.
The analyser (ANALYSER: OFF, INPUT, OUTPUT, IN + OUT) shows the input filled in grey and the output as a light line, with its dBFS scale on the right. It is a 1/6-octave band analyser, so pink noise reads flat and a sine reads its own level. M / S splits it into mid (amber) and side (blue), SLOW gives averaged ballistics instead of fast ones, and RANGE sets the gain scale of the display to 12, 24 or 36 dB. These four settings and the selected band are saved with the plugin but are not automatable.
The mouse
- Drag a node to change frequency and gain. Hold shift for ten times finer movement. Cuts, notch and band pass have no gain, so they move sideways only.
- The mouse wheel over a node changes its Q. With no node under the mouse it changes the selected band's Q. Shift makes it finer.
- Double-click on empty space to add a band there, using the first free band. Below 60 Hz it becomes a low cut, above 10 kHz a high shelf, otherwise a bell, always at 0 dB. Bells start at Q 1; shelves and cuts start at Q 0.71, so there is no overshoot.
- Double-click a node to delete the band. It is switched off.
- Click a node to select it. Alt-click a node to hear what the band acts on, for as long as the button is held.
- Hover over a node to see its number, frequency, gain, Q, slope and channel.
- On a Track node, dragging up and down sets GAIN, dragging sideways sets OFFSET, and the wheel sets WIDTH, up being narrower.
Dynamic bands
DYNAMIC works on bell, shelf, tilt and Track bands. It is off by default. The dynamic gain adds to the band's GAIN.
| Control | What it does |
|---|---|
| THRESHOLD | -60 to 0 dB, default -20. The band's level, read as the peak of a sine in dBFS. |
| RANGE | -24 to +24 dB, default -6. Negative: the band's gain moves down when the band is loud, which compresses that band. Positive: it moves up, which expands or boosts it. |
| ATTACK, RELEASE | 1 to 200 ms, default 10. 10 to 2000 ms, default 150. These are time constants: after a step, the gain covers 63 % of its move in that time. |
| SIDE CHAIN | The detector listens to the plugin's side-chain input instead, on the same channel and frequency. In Logic, choose the source in the Side Chain menu of the plugin header. With SIDE CHAIN on and no side-chain signal, the band stays still and the panel says so. |
The ratio is fixed. Over a 6 dB soft knee around the threshold, the gain moves 1 dB for every dB the band is above the threshold, until it has moved the full RANGE. The detector listens through a band pass at the band's frequency and Q, on the band's own channel: a mid band hears only the mid, a stereo band the average of left and right. The detector of a Track band listens through band passes at all of its harmonics and adds their energy.
Track bands
A Track band is a set of narrow bells that sit on the detected pitch of a monophonic source and move with it: on the fundamental, on its harmonics, or both. Its own controls replace FREQ and Q in the band panel when TYPE is Track. GAIN, CHANNEL and DYNAMIC work as on the other bands.
| Control | What it does |
|---|---|
| FROM | 1 to 8, default 1. The first harmonic the band acts on. 1 is the fundamental. |
| COUNT | 1 to 16, default 1. How many harmonics, from FROM upwards. Harmonics above 0.45 x the sample rate are left out; they fade out from 0.42 x the sample rate up. |
| TAPER | -100 to +100 %, default 0. How GAIN is shared out. At 0 every harmonic gets GAIN. Negative: falling in a straight line, so at -100 % the first gets GAIN and the last 0 dB (four harmonics at -12 dB: -12, -8, -4 and 0). Positive: rising, so at +100 % the first gets 0 dB and the last GAIN. With COUNT 1, TAPER does nothing. |
| WIDTH | 5 to 200 cents, default 50. The width of each bell, between the points where it has half its gain in dB: a -6 dB, 50-cent bell is at -3 dB 25 cents either side of its harmonic. The same in cents for every harmonic, so the same Q (50 cents is Q 34.6). |
| OFFSET | -1200 to +1200 cents, default 0. Shifts the whole set, for example +700 to act a fifth above each harmonic. |
| SIDE CHAIN | On a Track band it also moves the pitch detection to the side-chain input, on the band's channel. With SIDE CHAIN on and no side-chain signal, the band stays out. |
The pitch comes from the band's own channel of the plugin's input: stereo and mid bands listen to the mid, left and right bands to that side, side bands to the side. Bands that listen to the same source share one pitch detector. The range is 30 Hz to 1500 Hz.
When there is no pitch (silence, noise, a breath, or polyphonic mush the detector is not sure of), the band stays on its last pitch and fades to 0 dB over 50 ms. When a pitch comes back it fades in over 20 ms, starting on the new note if it had faded out completely.
On the display the node sits on the pitch it follows, the fundamental before OFFSET, with the note name beside it ("7 G1"). A tick on the curve marks each harmonic the band acts on, at the gain that harmonic gets. Without a pitch the node is hollow at its last frequency, with "no pitch" under it. The band panel shows the pitch, for example "pitch G1, 49.0 Hz, 100 % sure".
A narrow bell on a low note needs time to settle, about Q / (pi x frequency). On an 808 at 55 Hz, a -6 dB, 50-cent bell on the 2nd harmonic (110 Hz) is within 1 dB of -6 dB 188 ms into the note. For short notes use a wider WIDTH: 100 to 200 cents settles two to four times faster.
LOOKAHEAD and latency
The pitch detector has to hear a stretch of the signal before it can say what the pitch was in the middle of it, and longest for the lowest notes: a whole period compared with the period before it, 67 ms at 30 Hz. LOOKAHEAD, a global switch in the header, decides how the Track bands deal with that.
Off
Zero latency, and the band follows the pitch late. Behind a pitch that moves, such as a glide or vibrato, it is late by 6.75 ms plus half of two figures added together: the period, and 15 ms or the period, whichever is longer.
| Pitch | Behind by |
|---|---|
| 30 Hz | 40 ms |
| 41 Hz | 31 ms |
| 55 Hz | 25 ms |
| 110 Hz | 19 ms |
| 220 Hz | 16.5 ms |
| 440 Hz | 15.4 ms |
| 1 kHz | 14.8 ms |
At a note change it gets halfway to the new note 20 to 27 ms after the note starts (55 to 440 Hz). That is fine on held notes and slow movement. On a fast 808 slide the bells trail the harmonics and mostly miss them while it moves: on the test 808 the glide was missed by up to 6.1 dB. On the test singer's vibrato the band is typically 10.3 cents off the pitch.
On
The plugin delays its audio by 41.8 ms (2007 samples at 48 kHz, 1844 at 44.1 kHz, 4011 at 96 kHz) and reports that to Logic, which compensates it. The detector still hears the input as it arrives, so the band lands on each note as it plays. It is on the pitch during glides (within 0.2 ms) and halfway to a new note within 2 ms of the change (55 to 440 Hz). On the test 808 the 2nd and 3rd harmonics stayed within 0.52 and 0.38 dB of a -6 dB target through the glide, and on the test singer's vibrato the median error was 0.65 cents. The bypass path and the side chain of dynamic bands are delayed by the same amount. The lookahead is set by the lowest note, 30 Hz, so higher sources get the same 41.8 ms.
Switching LOOKAHEAD crossfades the delayed and undelayed audio over 20 ms, so it does not click, and tells Logic about the new latency within 50 ms. The host applies it in its own time; some hosts do so only when playback starts again.
Working with it
- On a stereo bus: a SIDE low cut at 120 to 200 Hz keeps the low end mono, a MID bell at 2 to 4 kHz lifts vocal presence, a STEREO high shelf adds air, and a SIDE high shelf adds width at the top. That is four bands in one window, and the amber and blue curves show what the centre and the sides get.
- A dynamic MID bell at 6 to 8 kHz de-esses a centred vocal without dulling the cymbals at the sides.
- On the music bus, key a dynamic MID bell at 2 to 3 kHz from the vocal on the side chain.
- To tame the harmonic series of an 808 or a resonant vocal: a Track band with FROM 2, COUNT 3 to 5, a few dB down, and TAPER negative so the higher harmonics are touched less.
- To make a bass line read on small speakers: a Track band with FROM 2, COUNT 2, +3 to +6 dB and WIDTH 80 to 150 cents.
- To remove a ringing or a whistle that follows the melody: FROM on the ringing harmonic, COUNT 1, -12 dB or more, WIDTH 20 to 40 cents.
- To follow another instrument: put the bass on the side chain and switch on SIDE CHAIN in a Track band, to cut its notes out of the music bus or its 2nd harmonic out of the kick.
- Switch LOOKAHEAD on when a Track band has to follow slides and fast notes, and leave it off when the notes are held.
Under the hood
Each filter is built from second-order sections, plus one first-order section for the 6 and 18 dB per octave slopes, designed the matched way (Vicanek, "Matched Second Order Digital Filters", 2016). The analogue poles are mapped exactly to digital ones, and the numerator is fitted so the digital magnitude equals the analogue one exactly at DC and at the band frequency. The one remaining degree of freedom is set by weighted least squares over 0 to 0.9 Nyquist, instead of pinning it at Nyquist as the plain matched design does; that took the 10 kHz bell from 0.41 dB to 0.095 dB of error at 44.1 kHz. Cuts are the exact inverse of the matching boost, so +9 and -9 dB bells in series null to within 0.00001 dB. The notch is written as two exact analogue factors, which keeps the null exact and broad notches high up accurate. All filters are minimum phase, with no added latency, and run in double precision.
Measured up to 0.8 Nyquist (17.6 kHz at 44.1 kHz), a 10 kHz bell at Q 1 and +6 dB is within 0.095 dB of the analogue curve at 44.1 kHz and 0.078 dB at 48 kHz. The same bell made with the usual bilinear transform is off by 1.96 dB and 1.68 dB. Bells, plain shelves and tilt stay within 0.22 dB; resonant shelves, cuts at every slope, notch and band pass within 0.35 dB. A broad notch above 18 kHz is off by up to 0.9 dB.
The signal is converted to mid and side only when a band that does something needs it, and back when the next one needs left and right; every 16 samples it ends back in left and right. Bands that are off, and bell, shelf or tilt bands at 0 dB, are skipped entirely. Frequency, gain and Q glide with a 15 ms time constant, and the coefficients are recomputed at most every 16 samples, only while something moves. A change of type, slope or channel runs the old and the new filter side by side for a 20 ms crossfade. On session load the bands start at their settings, with no fade.
The dynamic detector is a matched band pass at the band's frequency and Q. Its power is averaged over two periods (0.5 to 30 ms), the soft knee and the 1:1 law apply, and the gain change follows a one-pole attack and release, applied through the band's coefficients every 16 samples.
The pitch detector is adapted from the one in Harmony: YIN on a copy decimated to about 8 kHz, a frame every 2.5 ms. Each lag is compared over its own window, 15 ms or the lag, whichever is longer, so a low note is always compared over a whole period while a voice keeps a 15 ms window and stays quick. A Track band reads its detector every 16 samples, smooths the pitch in log frequency over 5 ms, and redesigns its bells, one per harmonic. With the lookahead the voicing is read 10 ms ahead of the pitch, so the fades finish with the note and not after it.
The analyser takes nothing from the audio thread but copies of mid and side of the input and output, through a lock-free queue, and only while the window is open and the analyser is on. The window runs an 8192-point FFT 30 times a second and sums the power in 1/6-octave bands.
Limits: Track bands are for monophonic sources. A loud partial that is not part of the harmonic series pulls the pitch: a steady tone 8 dB below the fundamental at 11.2 times its frequency moves it by 27 cents, enough to put a 50-cent bell off its harmonic. Use SIDE CHAIN with a cleaner copy of the source when there is one. Chords and full mixes read as no pitch most of the time. Below 30 Hz there is no pitch, and above about 1.6 kHz the detector reads an octave low. Within 40 ms of a legato note change the band can be off by up to 76 cents. At low frequencies a dynamic band's attack cannot be faster than about two periods of its frequency. SOLO plays the plugin's input through the band pass, so it does not include the bands before it in the chain. An external side chain is read on the band's channel, and a mono side chain counts as centred.