# Mathematical Foundations
The mathematics underlying Quiver's design and DSP algorithms.
## Category Theory
### Quivers
A **quiver** \\( Q = (V, E, s, t) \\) consists of:
- \\( V \\): Set of vertices (objects)
- \\( E \\): Set of edges (arrows/morphisms)
- \\( s: E \to V \\): Source function
- \\( t: E \to V \\): Target function
In Quiver:
- Vertices = Modules
- Edges = Patch cables
- Source/Target = Output/Input ports
### The Free Category
Given a quiver \\( Q \\), the **free category** \\( \text{Path}(Q) \\) has:
- Objects: Same as \\( Q \\)'s vertices
- Morphisms: Paths (sequences of composable arrows)
- Composition: Path concatenation
This is what `patch.compile()` computes.
### Arrow Laws
For arrows \\( f: A \to B \\), \\( g: B \to C \\), \\( h: C \to D \\):
**Identity:**
\\[ \text{id}_B \circ f = f \circ \text{id}_A = f \\]
**Associativity:**
\\[ (h \circ g) \circ f = h \circ (g \circ f) \\]
**First/Second:**
\\[ \text{first}(f) = f \times \text{id} \\]
\\[ \text{second}(f) = \text{id} \times f \\]
## Digital Signal Processing
### Sampling Theory
**Nyquist-Shannon Theorem:**
A signal can be perfectly reconstructed if sampled at rate \\( f_s > 2f_{max} \\).
At 44.1 kHz: \\( f_{max} = 22.05 \\) kHz
### Z-Transform
The z-transform converts discrete signals to the z-domain:
\\[ X(z) = \sum_{n=-\infty}^{\infty} x[n] z^{-n} \\]
Unit delay: \\( z^{-1} \\) (one sample delay)
### Transfer Functions
**Lowpass filter (1-pole):**
\\[ H(z) = \frac{1-p}{1-pz^{-1}} \\]
Where \\( p = e^{-2\pi f_c / f_s} \\)
**State-Variable Filter:**
\\[ \begin{aligned}
\text{LP} &= \text{LP}\_{n-1} + f \cdot \text{BP}\_{n-1} \\\\
\text{HP} &= \text{input} - \text{LP} - q \cdot \text{BP}\_{n-1} \\\\
\text{BP} &= f \cdot \text{HP} + \text{BP}\_{n-1}
\end{aligned} \\]
## Waveform Mathematics
### Sine Wave
\\[ x(t) = A \sin(2\pi f t + \phi) \\]
### Sawtooth (Band-Limited)
Fourier series:
\\[ x(t) = \frac{2}{\pi} \sum_{k=1}^{\infty} \frac{(-1)^{k+1}}{k} \sin(2\pi k f t) \\]
### Square Wave
\\[ x(t) = \frac{4}{\pi} \sum_{k=1,3,5,...}^{\infty} \frac{1}{k} \sin(2\pi k f t) \\]
Only odd harmonics!
### Triangle Wave
\\[ x(t) = \frac{8}{\pi^2} \sum_{k=1,3,5,...}^{\infty} \frac{(-1)^{(k-1)/2}}{k^2} \sin(2\pi k f t) \\]
## Envelope Mathematics
### Exponential Segments
**Attack (charging capacitor):**
\\[ v(t) = V_{max} (1 - e^{-t/\tau}) \\]
**Decay/Release (discharging):**
\\[ v(t) = V_{start} \cdot e^{-t/\tau} \\]
Time constant \\( \tau \\): time to reach \\( 1 - 1/e \approx 63.2\% \\)
### RC Time Constant
\\[ \tau = RC \\]
For envelope times: \\( \tau = \text{time} / \ln(1000) \approx \text{time} / 6.9 \\)
## FM Synthesis
### Basic FM Equation
\\[ y(t) = A \sin(2\pi f_c t + I \sin(2\pi f_m t)) \\]
- \\( f_c \\): Carrier frequency
- \\( f_m \\): Modulator frequency
- \\( I \\): Modulation index
### Sidebands
FM produces sidebands at:
\\[ f_c \pm n \cdot f_m \quad (n = 1, 2, 3, ...) \\]
Number of significant sidebands ≈ \\( I + 1 \\)
### Bessel Functions
Amplitude of each sideband given by Bessel functions:
\\[ A_n = J_n(I) \\]
## Filter Response
### Pole-Zero Form
\\[ H(z) = \frac{\sum_{k=0}^{M} b_k z^{-k}}{\sum_{k=0}^{N} a_k z^{-k}} \\]
### Cutoff Frequency
For bilinear transform:
\\[ \omega_d = \frac{2}{T} \tan\left(\frac{\omega_a T}{2}\right) \\]
### Resonance (Q)
\\[ Q = \frac{f_0}{\Delta f} \\]
Where \\( \Delta f \\) is bandwidth at -3dB.
High Q → narrow peak → self-oscillation
## Analog Modeling
### Thermal Noise
\\[ V_n = \sqrt{4kTRB} \\]
- \\( k \\): Boltzmann constant
- \\( T \\): Temperature (K)
- \\( R \\): Resistance
- \\( B \\): Bandwidth
### Saturation Functions
**Tanh (soft):**
\\[ y = \tanh(x \cdot \text{drive}) \\]
**Polynomial (3rd order):**
\\[ y = x - \frac{x^3}{3} \\]
**Asymmetric:**
\\[ y = \tanh(a \cdot x^+) - \tanh(b \cdot x^-) \\]
## V/Oct System
### Pitch to Frequency
\\[ f = f_0 \cdot 2^V \\]
\\( f_0 = 261.63 \\) Hz (C4) at 0V
### Frequency to Pitch
\\[ V = \log_2\left(\frac{f}{f_0}\right) \\]
### Semitone
\\[ \Delta V = \frac{1}{12} \text{ V} \approx 83.33 \text{ mV} \\]
### Cent
\\[ \Delta V = \frac{1}{1200} \text{ V} \approx 0.833 \text{ mV} \\]
## SIMD Mathematics
### Vectorized Operations
For 4-wide SIMD:
\\[ [a_1, a_2, a_3, a_4] + [b_1, b_2, b_3, b_4] = [a_1+b_1, a_2+b_2, a_3+b_3, a_4+b_4] \\]
Single instruction, multiple data.
### Block Processing
Process \\( N \\) samples per function call:
- Reduces function call overhead by factor of \\( N \\)
- Enables vectorization
- Improves cache locality
## References
- Smith, J.O. *Mathematics of the Discrete Fourier Transform*
- Välimäki, V. *Discrete-Time Synthesis of the Sawtooth Waveform*
- Mac Lane, S. *Categories for the Working Mathematician*
- Chowning, J. *The Synthesis of Complex Audio Spectra by Means of FM*