Enter through the gate.For creative collaborations: [email protected]For studio production, engineering, and mixing archives, visit Sound Fountain.

A 10-Year Retrospective on the production of Sweet FA

18-Oct-26

In honour of the 10 year anniversary of this funny little EP, I decided to write a few things about the process...

A 10-Year Retrospective on the production of Sweet FA

18-Oct-26

by Harley SmallIn honour of the 10 year anniversary of this funny little EP, I decided to write a few things about the process. I don't think anyone at the time expected this music to blow up the way it did. I gave my all to both Sweet FA and Being So Normal (like I do with every project), and the fact they have been heard by hundreds of millions of people will always be surreal to me.

Photo of The Space Studios circa January 2015

The Space Studios, circa January 2015, around the time we were recording Sweet FA.

On the opening track, you can hear running water in the background, which was the radiator or AC in the studio. We kept all the beds live off the floor and just decided it wasn't a big deal to have it in the mix. I love "weird little things" that stop a record from being perfect. They endear you to the recording. And this is the first of many weird little things that would define the first two releases.

Fun lore: Neil and I were spending a lot of time at my dad's house right before Peach Pit started, rehearsing there with our old bands. I was playing in my band Their There and had previously produced the Dogwood and Dahlia LP with Neil and Syd, so you can hear a lot of the same sonic textures on that album. When Neil put Peach Pit together, he asked me about my guitar setup and went out and bought the exact same thing.The Harley Small certified guitar chain on Sweet FA & Being So Normal:
Vintage Danelectro → a cranked Fender Blues Jr. (Or any silver face fender amp, really).
A signal chain that somehow became ubiquitous across 2010s indie rock, born right out of my living room.

Photo of living room circa June 2015

My living room circa June 2015 while recording my first album. With my Dano Pro, Blues Jr., AC30, some Traynor bass amp, and p-bass.

For Chris's lead guitar: He was great at dialling in his own tone, so I let him run with it. But my hand-painted ZVEX Fuzz Factory was the secret weapon used to make those solo sections really cut across both the title tracks on Sweet FA and Being So Normal.

Photo of hand-painted Zvex Fuzz Factory

This is the one, still use it at every show.

The Secret Sauce on Neil's Vocals:
Firstly, Neil is a great singer with a wonderful voice that is both soft and slightly rugged. I recorded everything with the one-two punch of a Neve 511 into a Crane Song Falcon, and from there straight into Pro Tools.
The key to the smoothness of his vocal sound on the records is a combo of three things:-A trusty Shure SM57 with a huge windscreen (which I’ve used for almost all my personal vocals forever).
-The double track.
-Soundtoys MicroShift blended at like 10% mix or less, until it’s just barely audible.
(And maybe, just maaaaybe a tiny bit of Melodyne).

Photos of Neve 511 and Crane Song Falcon

The vocal hardware. (But not the settings).

One of my favourite singers is Paul McCartney. He's such a creative singer and always does the craziest stuff with his voice. He would often sing in a mock baritone, and on Drop the Guillotine I asked Neil to do that for one of the harmonies, which you can hear in the left channel. Neil was too cool for The Beatles back then, but I snuck it in anyways ;) so, try a mock baritone instead of a pitch shifter next time you're tracking harms.

Speaking of harmonies, they're my favourite thing to write and record. A lot of indie artists don't spend much time on them, they just sing the first thing that comes to mind and call it a day. On the Peach Pit records, and pretty much everything I work on, I sit down at the piano and map out all of the harmonies and voice leading. It's really the most satisfying part of recording vocals or any layered harmonies like violin or horns etc.

For the drums: at the time, everyone was after that Andy Shauf, super thick, dead and punchy drum sound. I decided to go for the opposite approach and lean towards more of a Strokes style drum sound with a small snare, lots of room, and heavy toms. Mikey is a phenomenal musician and could play any part on the record with his eyes closed.

Another important drum note: automation. Drums are the most difficult thing to get right, they are truly what separates a great recording from a good one. Every tom hit is automated, "tom rides" if you will.

The drum machine on Drop the Guillotine is a Univox SR-55, something we had on hand at The Space (courtesy of one Max Zipursky). It reminded me a lot of Beach House's drum sounds and they're one of my favourites. I sampled the Univox and then chopped it to build the beat from scratch. I played all the keys on this track using a Korg SV-1 for both Rhodes and Wurli sounds.

Photo of sampling Univox SR-55 with OP-1

Sampling the Univox w/ OP-1 (and obligatory studio salt lamp)

For the bass, it was a DI straight into a Bo Hansen box I built myself with a Haufe ST8456 transformer. I love the way Pete often plays bass chords, especially on the title track, and that box just added to the thickness.

Photo of handmade Bo Hansen DI boxes

Photo I took of the finished boards and enclosures for the DI's, I was very proud of them. Circa October 2015.

Some other random technical info: both Sweet FA and Being So Normal were recorded into a Ramsa desk with various amounts of onboard EQ used on each track. Instrumental overdubs and vocals were mostly done through a Neve 511 into a Crane Song Falcon. On my 2-bus I use a Dramastic Audio Obsidian and for this EP in particular I had it gently hitting the lo-fi release, just to cook the edges a little bit and give it that warm, fuzzy feeling.

Photo of Obsidian 500 on the Sweet FA 2-Bus

Found this old post of the Sweet FA 2-bus.

I would check all of my mixes on a pair of vintage, made-in-Austria AKG K240s from the 70s that were given to me by my dad. Unfortunately one of the drivers broke and they're obsolete so there's no repairing them. They're some of the best sounding open back headphones I've ever heard. The modern ones you can buy on Amazon unfortunately don't even come close, I've tried.

Photo of vintage AKG K240s

Took this photo of them while mixing Sweet FA.

There are all kinds of other little details I could get into about arrangements and plugins and gear, but I'll save it for later and instead just say this:A sonic signature heard by hundreds of millions doesn’t fall out of the sky. It was built note-by-note, track-by-track in a Burnaby basement and at The Space Studios.-Harley Small

3d photo from a Nishika N8000 of Peach Pit

Photo I took of the band with my Nishika N8000, outside of The Space, during the Sweet FA sessions.

[ HARDWARE_TUNER // v1.0 ]
--
AWAITING INPUT
PRESS TO ENABLE INPUT
const noteStrings = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]; let audioCtx = null; let analyser = null; let isRunning = false; let buf = new Float32Array(2048); async function initTuner() { const startBtn = document.getElementById('start-btn'); const noteOut = document.getElementById('note-out'); const freqOut = document.getElementById('freq-out'); const statusOut = document.getElementById('status-out'); const segments = document.querySelectorAll('.meter-segment'); if (isRunning) return; try { statusOut.innerText = 'CONNECTING TO MIC...'; const AudioContext = window.AudioContext || window.webkitAudioContext; if (!AudioContext) { statusOut.innerText = 'ERR: WEB AUDIO NOT SUPPORTED'; return; } audioCtx = new AudioContext(); if (audioCtx.state === 'suspended') { await audioCtx.resume(); } if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { statusOut.innerText = 'ERR: REQUIRES HTTPS / SECURE SITE'; return; } const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); const source = audioCtx.createMediaStreamSource(stream); analyser = audioCtx.createAnalyser(); analyser.fftSize = 2048; source.connect(analyser); isRunning = true; startBtn.style.display = 'none'; statusOut.innerText = 'SYSTEM ACTIVE // PLAY INSTRUMENT'; function updatePitch() { analyser.getFloatTimeDomainData(buf); let ac = autoCorrelate(buf, audioCtx.sampleRate); if (ac === -1) { noteOut.innerText = "--"; freqOut.innerText = "LISTENING..."; clearMeter(segments); } else { let pitch = ac; let note = noteFromPitch(pitch); let detune = centsOffFromPitch(pitch, note); noteOut.innerText = noteStrings[note % 12]; freqOut.innerText = pitch.toFixed(1) + " Hz"; updateMeter(segments, detune); } if (isRunning) { requestAnimationFrame(updatePitch); } } updatePitch(); } catch (err) { console.error("Tuner Error:", err); if (err.name === 'NotAllowedError' || err.name === 'PermissionDeniedError') { statusOut.innerText = 'ERR: MIC PERMISSION DENIED'; } else { statusOut.innerText = 'ERR: ' + (err.message || err.name); } } } function autoCorrelate(buf, sampleRate) { let SIZE = buf.length; let rms = 0; for (let i = 0; i < SIZE; i++) { let val = buf[i]; rms += val * val; } rms = Math.sqrt(rms / SIZE); if (rms < 0.01) return -1; let r1 = 0, r2 = SIZE - 1, thres = 0.2; for (let i = 0; i < SIZE / 2; i++) { if (Math.abs(buf[i]) < thres) { r1 = i; break; } } for (let i = 1; i < SIZE / 2; i++) { if (Math.abs(buf[SIZE - i]) < thres) { r2 = SIZE - i; break; } } buf = buf.slice(r1, r2); SIZE = buf.length; let c = new Array(SIZE).fill(0); for (let i = 0; i < SIZE; i++) { for (let j = 0; j < SIZE - i; j++) { c[i] = c[i] + buf[j] * buf[j + i]; } } let d = 0; while (c[d] > c[d + 1]) d++; let maxval = -1, maxpos = -1; for (let i = d; i < SIZE; i++) { if (c[i] > maxval) { maxval = c[i]; maxpos = i; } } let T0 = maxpos; let x1 = c[T0 - 1], x2 = c[T0], x3 = c[T0 + 1]; let a = (x1 + x3 - 2 * x2) / 2; let b = (x3 - x1) / 2; if (a) T0 = T0 - b / (2 * a); return sampleRate / T0; } function noteFromPitch(frequency) { let noteNum = 12 * (Math.log(frequency / 440) / Math.log(2)); return Math.round(noteNum) + 69; } function centsOffFromPitch(frequency, note) { return Math.floor(1200 * Math.log(frequency / (440 * Math.pow(2, (note - 69) / 12))) / Math.log(2)); } function clearMeter(segments) { segments.forEach(s => s.className = 'meter-segment'); } function updateMeter(segments, cents) { clearMeter(segments); let step = Math.min(Math.max(Math.round(cents / 10), -4), 4); segments.forEach(s => { let pos = parseInt(s.getAttribute('data-pos')); if (pos === step) { if (pos === 0) s.classList.add('active-tune'); else if (pos < 0) s.classList.add('active-flat'); else s.classList.add('active-sharp'); } }); }