Sam Sounds

"Original Music & Stylish Covers"

From Boston's "Consultones" to Austin's creative rebirth

500+ Songs 15 Years Experience 10K+ Video Views

How the guitar amp turns a signal into sound

#SamSounds #SamSoundsVibes #GuitarAmp #NeoClassical #SongStudio

Tip the music

If a track or a cover made your day, a tip helps keep the music and the amp free to play.

Sound, code, and the same AI

The songs, the guitar amp, and this website were built with the same tools. Code is signal. Sound is signal. Both are waves.

The universe is made of waves. Light, gravity, probability, and the vibration of a string are different faces of the same idea. Predictive Insights AI and Sam Sounds are one practice: turning a signal into something you can hear, see, or use.

Music theory, Greek modes, and the amp are not separate from the analytics. They are the same work, heard instead of plotted.

Sam Plays Symphonic Electric Guitar

Sam Plays Symphonic Electric Guitar: classical, metal, and American rock.

Guitar amp screen showing the tuner and the factory preset list, with EPIC RTM 1 selected
Tuner and the 128 factory presets
Guitar amp knobs for drive, delay, feedback, wet mix, volume, and wah
Drive, delay, and wah
X-Y touchpad mapping delay and feedback, with the Hold button
X-Y touchpad

Browser amp and practice studio

Sam has a guitar amp and practice studio that runs in the browser on his computer. Live amp tones and cabinet IRs sit on the same screen as the knobs. A Focusrite Scarlett Solo takes the guitar in, and the sound plays out to speakers or a TV.

Practice plays backing tracks with guitar tab. New classical excerpts include Bourrée in E minor, Canon in D, Für Elise, Minuet in G, Lágrima, and Eine kleine Nachtmusik.

Song Studio holds Sunrise Redline and Sam's Neo-Classical, with tab for each part.

Smart pickup listens while he plays. A scream, a pick scrape, or a 24th-fret high E latches high gain. An open low E brings the tone back to clean.

Amp knobs with Smart pickup turned on, showing the hint that a scream, pick scrape, or 24th-fret high E latches high gain
Amp knobs, with Smart pickup on
Factory preset list with Essex A30 selected, plus bass, mid, treble, presence, and a Marshall cabinet IR
Preset and amp settings: Essex A30 and a cabinet IR
Practice tab on Paradise Road, with the backing track, chords C G Am F, scales, and lessons
Practice: Paradise Road, chords, scales, and lessons
Practice screen for Bach Bourrée in E minor, with the chord loop and the start of the guitar tab
Practice: Bourrée in E minor
Guitar tablature for the Bourrée in E minor lead melody, open position, with chord names over the staff
Classical tab: Bourrée melody
Song Studio open on Sunrise Redline, with part buttons, notation, and the start of the guitar tab
Song Studio: Sunrise Redline
Guitar tablature for Sunrise Redline, verse through guitar solo, with lyrics under the tab
Sunrise Redline guitar tab
Song Studio open on Sam's Neo-Classical, lead part selected, with notation and guitar tab
Song Studio: Sam's Neo-Classical
Guitar tablature for Sam's Neo-Classical, theme, arpeggio variation, and high-gain lead solo
Sam's Neo-Classical guitar tab

The amp, live: a screen recording of it running.

The Math of Sound: waves & transforms

How the amp turns a guitar string into numbers and back into sound. Each card spells out one infographic; open "View original infographic" to see it, and tap the image for full size.

A held note is a Fourier series

A string that rings on one pitch is close to periodic. A periodic wave can be written as a sum of sines: the fundamental, then twice that frequency, three times, and so on. That sum is a Fourier series.

1. The string plays a near-periodic wave

This wave repeats every period \(T\). Its frequency is

$$f_1 = \frac{1}{T} \quad \text{(the fundamental).}$$

Its Fourier series is

$$y(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} a_n \cos(2\pi n f_1 t) + b_n \sin(2\pi n f_1 t)$$

\(f_1\) is the pitch the tuner names. The sizes \(|c_n| = \sqrt{a_n^2 + b_n^2}\) shape the tone.

  • Guitar (richer): strong harmonics at \(f_1, 2f_1, 3f_1, 4f_1, \dots\)
  • Flute (purer): mostly the fundamental, with small harmonics.

Different instruments have different harmonic sizes → different tone.

2. Drive rewrites that series

The engine multiplies the string by the drive knob, bends it with a soft absolute-value term, then passes it through tanh twice.

string \(y(t)\) → × drive \(k \in [0, 1]\) → soft abs \(+\,\alpha\,|y(t)|\) (asymmetric bend) → tanh (flattens peaks) → tanh (flattens peaks) → processed wave \(z(t)\)

  • tanh flattens the peaks. A flattened wave needs extra odd harmonics in its Fourier series, so the tone gets brighter and harsher as \(k\) goes up.
  • The small absolute-value bend is asymmetric, so even harmonics show up too.
  • Nothing in this stage looks at a spectrum. The new harmonics are just what that new shape is made of.

As drive \(k\) increases (low → medium → high), the wave goes from a sine toward a square: brighter, harsher, more odd harmonics (and some even harmonics).

3. The tuner reads the string before this bend

It hears the series the string actually played, not the driven, bent version. Tuner input \(= y(t)\) (before drive processing). It names \(f_1\) and sees the harmonic sizes of the string's own motion.

Summary

  • A held note is a Fourier series: fundamental + harmonics.
  • Drive multiplies, bends, and flattens the wave → adds new harmonics (especially odd, plus even from asymmetry).
  • The tuner reads the string before this bend → it hears what was actually played.

Legend: linear / string path (what the tuner sees); nonlinear drive path (rewrites the series). Note: all plots are illustrative. Real string motion includes decay, slight inharmonicity, and noise.

View original infographic
Diagram: a held guitar note is a Fourier series, and drive rewrites that series before the tuner reads the clean string
A held note is a Fourier seriesA ringing string is a fundamental plus harmonics. The drive knob bends and flattens the wave, adding new harmonics, while the tuner reads the clean string.

Convolution: cabinet as impulse response

How a guitar note becomes the sound of a cabinet and microphone.

1. Impulse response = the cabinet's "click"

A single click \(\delta[n]\) into the cabinet, recorded by the mic, gives the impulse response \(h[n]\): 2048 samples at 48 kHz ≈ 43 ms.

irs/ contents (from POD Go backup, 8 November 2023): 48 kHz, 32-bit float, 2048 samples, ≈ 43 ms.

2. Playing guitar through the cabinet = convolution

Guitar → Amp (distorted) \(x[n]\) → Convolution (cabinet + mic) → \(y[n]\) (what the mic hears)

Every sample of the distorted string is replaced by a copy of the click (\(h\)), scaled by that sample, and the copies are added where they overlap.

3. The convolution sum (time domain)

$$y[n] = x[n]\,h[0] + x[n-1]\,h[1] + x[n-2]\,h[2] + \dots + x[n-k]\,h[k] + \dots$$
  • \(x\) = amp (input)
  • \(h\) = cabinet impulse response (IR)
  • \(y\) = microphone output (what you hear)

Different \(h\) → different sound. Marshall IR \((h_{\text{Marshall}})\) vs. Mesa IR \((h_{\text{Mesa}})\): same \(x[n]\), different \(h\) → different body and top end.

4. Cab mix & post-convolution filters

\(y[n]\) (convolution output) + dry amp \(x[n]\) via Blend (0–100%) → Low Cut (one-pole HPF) → High Cut (one-pole LPF) → Output (to next stage)

Cab mix blends convolution output back with the dry amp. Low cut and high cut are one-pole filters (6 dB/oct), like turning down rumble and hiss on the mic.

5. How the engine actually does it (FFT convolution)

Direct 2048-tap convolution on every block is too expensive for the audio callback. The engine uses the Fourier transform:

Input blocks \((x)\) → FFT → \(X[k]\) → Multiply \((X[k] \cdot H[k])\) → IFFT → Overlap / Add → Output blocks \((y)\)

  • \(H[k]\) is the FFT of \(h\), precomputed.
  • Overlap-add (or overlap-save) reassembles the blocks into continuous audio.
  • Far fewer operations per block → fits in the audio callback.
View original infographic
Diagram: cabinet sound as convolution of the distorted guitar with an impulse response, computed with an FFT and overlap-add
Convolution: the cabinet as an impulse responseA cabinet and mic are captured as a short "click." Playing through them is convolution, done fast with the FFT and overlap-add.

Guitar effects & processing as DSP building blocks

No FFT. Each output sample is a weighted sum of a few recent input samples and a few recent output samples.

1. Wah, tone stack, cab low & high cuts

Shapes: moving peak (wah), low shelf (lift lows), high shelf (cut highs).

Biquad (wah / tone stack), Direct Form I / Transposed Direct Form II:

$$y[n] = b_0 x[n] + b_1 x[n-1] + b_2 x[n-2] - a_1 y[n-1] - a_2 y[n-2]$$

One-pole cuts (low / high):

$$\text{Low cut (high pass): } y[n] = (1-\alpha)\,y[n-1] + \alpha\,x[n]$$ $$\text{High cut (low pass): } y[n] = \alpha\,y[n-1] + (1-\alpha)\,x[n]$$

The Fourier transform of the filter's own impulse response is its frequency response. Same family of idea as the cabinet: impulse response so short that the direct sum is cheaper than an FFT.

Cabinet as short impulse response (example)

$$y[n] = \sum_{i=0}^{M} b_i\, x[n-i]$$

A weighted sum, no recursion. A typical cab IR is very short (about 5 ms); its frequency response (FFT of the IR) is plotted from 20 Hz to 10 kHz, between about 0 dB and −20 dB.

2. Delay, feedback & comb filter

Input \(x[n]\) → (+) → Cabinet / Filter \(H(z)\) → Output \(y[n]\), with Feedback \(g\) (\(0 \le g < 1\)) through Delay (shift) back into the sum

Delay ring buffer: write \(y[n]\), read \(y[n-D]\). The delay is a shift. The ring buffer holds the cabinet's output and reads it back tens or hundreds of milliseconds later. Feedback adds that echo into later echoes.

A delayed copy of a wave, mixed with the original, is a comb:

$$y[n] = x[n] + g\,x[n-D]$$

Its magnitude response has notches at \(k / D\) Hz \((k = 0, 1, 2, \dots)\).

3. Stereo width (Haas delay)

A much shorter copy of the same trick, the Haas delay, with the louder copy swapped between left and right. Input \(y[n]\) → Delay (\(\tau\) samples, \(\tau \approx\) 5–30 ms) → Gain (L) [illegible: "hiquer left"] → Left Out; Gain (R) [illegible: "hoder right"] → Right Out.

A short delay (\(\tau\)) creates spatial width without a full echo. Same comb idea, but \(\tau\) is small and used for perception, not repetition.

All effects here are rational transfer functions

$$H(z) = \frac{Y(z)}{X(z)} = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2} + \dots}{1 + a_1 z^{-1} + a_2 z^{-2} + \dots}$$

For the cabinet cuts, many \(a_i = 0\) after the first few terms. Build complex sound with simple recurrence, delay, and feedback. No FFT required.

View original infographic
Diagram: wah, tone stack, delay, feedback, and Haas stereo width as short digital filters
Guitar effects as DSP building blocksWah, tone stack, delay, feedback, and stereo width are small filters: weighted sums of recent samples, no FFT needed.

Back into the room

From rewritten float samples to sound pressure in the earcups.

  1. render() returns 2 channels of float samples (example: 48 kHz, 32-bit float; left and right front).
  2. PipeWire (pw-cat): 32-bit float, 48 kHz audio stream (2 ch, F32LE, 48 kHz).
  3. System default sink (e.g., Logi USB headset): SINK: Logi USB Headset (Playback).
  4. Inside the headset: converter → drivers → pressure.
    • DAC (converter): builds a voltage from each sample.
    • Amplifier / driver: moves the voice coil and diaphragm.
    • Acoustic pressure in the earcup: the pressure wave you hear.
  5. What the pressure can contain (all encoded in the rewritten samples):
    • Tuner's note: a stable sinusoid at the target frequency (e.g., A4 ≈ 440 Hz).
    • Cabinet's click: a short transient impulse (e.g., mechanical click).
    • Clipped harmonic series: harmonics + hard clipping = bright, buzzy tone (e.g., saw-like + clip).
  6. How it got there: rewrite in frequency, invert back to time. Rewrite the spectrum (optional but explicit): $$X[k] = \mathrm{FFT}\{x[n]\} \;\xrightarrow{\text{modify } X[k]}\; X'[k] \;\longrightarrow\; x'[n] = \mathrm{IFFT}\{X'[k]\}$$ Send the [unclear: "newdomain"] samples to PipeWire (back to step 2).

Every sound you hear in the headset started as numbers: rewritten, transformed, inverted, and turned back into pressure.

View original infographic
Diagram: float samples travel through PipeWire to the headset, which turns them back into air pressure
Back into the roomThe processed samples stream through PipeWire to the headset, where the converter and driver turn them back into air pressure.

Paradise Road

Sam and his brother wrote this song and recorded it. It is based on real events. The chart is in C major at 94 bpm.

Virtual amp tracks

These three pieces were made on the virtual amp.

Overture, October 250

Length 5:38

Neo Guitar, Chorus and Keys

Length 8:18

Uncharted Journey

Length 3:21

Listen & Watch

More music from Sam: covers, originals, and jams. Pull up a chair and enjoy.

Channels & music

Videos

Greek modes

Ionian, Dorian, Phrygian, Lydian, Mixolydian, Aeolian, and Locrian. Greek musicians found them by tuning strings and listening. Sam still uses them when he plays guitar.

Read the Greek modes page

More from Sam

Thanks for listening! Music is one part of what Sam makes. Come say hi on any of these.

Watch the amp live · How the amp works