Signal Generation

The generation module provides functions to generate various audio waveforms and noise types with precise control over frequency, amplitude, and duration. All functions return AudioSamples objects with embedded metadata.

Basic Waveforms

Advanced Signals

Noise Generators

Examples

Basic Waveform Generation

Generate a 440 Hz sine wave for 1 second:

import audio_samples as aus

# Generate a 440 Hz sine wave
sine = aus.generation.sine_wave(440.0, 1.0, 44100)

# Properties are embedded automatically
print(f"Sample rate: {sine.sample_rate()} Hz")
print(f"Duration: {sine.duration_seconds():.2f} seconds")
print(f"Samples: {sine.samples_per_channel()}")

Multi-tone Generation

Create complex signals by mixing waveforms:

# Generate harmonic series
fundamental = aus.generation.sine_wave(220.0, 1.0, 44100, 0.8)
second_harmonic = aus.generation.sine_wave(440.0, 1.0, 44100, 0.4)
third_harmonic = aus.generation.sine_wave(660.0, 1.0, 44100, 0.2)

# Mix harmonics
complex_tone = fundamental + second_harmonic + third_harmonic

# Normalize to prevent clipping
complex_tone.normalize(-1.0, 1.0, 'peak')

Noise Generation

Generate different types of noise for testing and synthesis:

# White noise (equal energy per frequency)
white = aus.generation.white_noise(2.0, 44100, 0.3)

# Pink noise (1/f power spectrum)
pink = aus.generation.pink_noise(2.0, 44100, 0.3)

# Brown noise (1/f² power spectrum)
brown = aus.generation.brown_noise(2.0, 44100, 0.01, 0.3)

Frequency Sweeps

Create frequency sweeps for testing and analysis:

# Linear chirp from 100 Hz to 2000 Hz
sweep = aus.generation.chirp(100.0, 2000.0, 5.0, 44100, 0.5)

# Can be used for impulse response measurement
print(f"Sweep range: 100 Hz to 2000 Hz over {sweep.duration_seconds():.1f} seconds")