             content[i] = Float(sin(2 * 3.14_159_265 * Float(i + phaseOffset) / Float(count)))
         }
     }
+    
+    /// Instantiate the table as root frequency with partials, where the partial amplitudes are a percentage of the root frequency amplitude
+    func harmonicWave(with partialAmplitudes: [Float]) {
+        for i in indices {
+            var sum: Float = 0
+            
+            // Root
+            sum = Float(sin(2 * 3.14_159_265 * Float(i + phaseOffset) / Float(count)))
+
+            // Partials
+            for j in 0..<partialAmplitudes.count {
+                let partial = Float(sin(2 * 3.14_159_265 * Float((i * (j + 2)) + phaseOffset) / Float(count)))
+                sum += partial * partialAmplitudes[j]
+            }
+            
+            content[i] = sum
+        }
+    }
 
     /// Instantiate the table as a triangle wave
     func positiveTriangleWave() {

            positiveReverseSawtoothWave()
        case .positiveSquare:
            positiveSquareWave()
        case .zero:
            zero()
        case .custom:

import AVFoundation

/// Supported default table types
public enum TableType {
    /// Standard sine waveform
    case sine

