S
sound-effects-generator
About sound-effects-generator
sound-effects-generator is a Python library and CLI for creating programmatic audio, intended for test sounds, alerts, and audio cues. It generates tones, noise, DTMF signals, and sequences with basic effects and WAV or MP3 export.
Key features
- 01Sine, square, sawtooth, and triangle tones
- 02White, pink, and brown noise
- 03DTMF tones and sequences
- 04Multi-tone beep sequences
- 05Fade and volume controls
- 06WAV and MP3 export
Use cases
- 01Creating alert and notification sounds
- 02Generating audio test tones and sweeps
- 03Producing DTMF phone-number audio
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill sound-effects-generatorAfter installing, type/sound-effects-generatorin Claude Code to confirm it loaded.
Bundled filesscripts/requirements.txtscripts/sfx_generator.py
Details
From the project READMESound Effects Generator
Generate programmatic audio: pure tones, noise types, DTMF signals, and simple sound effects. Perfect for testing, alerts, audio cues, and placeholder sounds.
Quick Start
from scripts.sfx_generator import SoundEffectsGenerator
# Generate a tone
sfx = SoundEffectsGenerator()
sfx.tone(440, duration=1000).save("a440.wav")
# Generate white noise
sfx.noise("white", duration=2000).save("whitenoise.wav")
# Create a beep sequence
sfx.beep_sequence([440, 880, 440], durations=200, gap=100).save("alert.wav")
Features
- Tones: Sine, square, sawtooth, triangle waveforms
- Noise: White, pink, brown/red noise
- DTMF: Phone dial tones
- Sequences: Multi-tone patterns
- Effects: Fade, volume control
- Export: WAV, MP3
API Reference
Initialization
sfx = SoundEffectsGenerator(sample_rate=44100)
Tone Generation
# Pure sine wave
sfx.tone(frequency=440, duration=1000)
# Different waveforms
sfx.tone(440, duration=1000, waveform="sine") # Default
sfx.tone(440, duration=1000, waveform="square")
sfx.tone(440, duration=1000, waveform="sawtooth")
sfx.tone(440, duration=1000, waveform="triangle")
# With volume (0.0 to 1.0)
sfx.tone(440, duration=1000, volume=0.5)
Noise Generation
# White noise (equal energy all frequencies)
sfx.noise("white", duration=2000)
# Pink noise (1/f, natural sounding)
sfx.noise("pink", duration=2000)
# Brown noise (1/f^2, deeper)
sfx.noise("brown", duration=2000)
# With volume
sfx.noise("white", duration=1000, volume=0.3)
DTMF Tones
# Single digit
sfx.dtmf("5", duration=200)
# Sequence (phone number)
sfx.dtmf_sequence("5551234", tone_duration=150, gap=50)
Beep Sequences
# Single beep
sfx.beep(frequency=800, duration=200)
# Multiple beeps (same frequency)
sfx.beep_sequence([800, 800, 800], durations=100, gap=100)
# Melody (different frequencies)
sfx.beep_sequence([523, 659, 784, 1047], durations=200, gap=50)
# Varying durations
sfx.beep_sequence(
frequencies=[440, 880],
durations=[300, 500],
gap=100
)
Silence
# Generate silence
sfx.silence(duration=1000)
Effects
# Fade in/out
sfx.tone(440, 2000).fade_in(200).fade_out(500)
# Volume adjustment
sfx.tone(440, 1000).volume(0.5)
Chaining
# Combine multiple sounds
sfx.tone(440, 500) \
.silence(200) \
.tone(880, 500) \
.save("two_tones.wav")
Save
# Save to WAV
sfx.save("output.wav")
# Save to MP3 (requires pydub)
sfx.save("output.mp3", bitrate=192)
CLI Usage
# Generate tone
python sfx_generator.py --tone 440 --duration 1000 --output tone.wav
# Generate noise
python sfx_generator.py --noise white --duration 2000 --output noise.wav
# Generate DTMF
python sfx_generator.py --dtmf "5551234" --output phone.wav
# Generate beep pattern
python sfx_generator.py --beeps "800,800,800" --duration 100 --gap 100 --output alert.wav
# With waveform
python sfx_generator.py --tone 440 --waveform square --duration 1000 --output square.wav
CLI Arguments
| Argument | Description | Default |
|---|---|---|
--tone | Frequency in Hz | - |
--noise | Noise type (white, pink, brown) | - |
--dtmf | DTMF digits | - |
--beeps | Comma-separated frequencies | - |
--duration | Duration in ms | 1000 |
--gap | Gap between sounds (ms) | 100 |
--waveform | Tone waveform | sine |
--volume | Volume (0.0-1.0) | 0.8 |
--sample-rate | Sample rate | 44100 |
--output | Output file | Required |
Examples
Alert Sound
sfx = SoundEffectsGenerator()
sfx.beep_sequence(
frequencies=[880, 1100, 880, 1100],
durations=150,
gap=50
)
sfx.fade_out(100)
sfx.save("alert.wav")
Notification Chime
sfx = SoundEffectsGenerator()
# C-E-G chord progression
notes = [523, 659, 784] # C5, E5, G5
for freq in notes:
sfx.tone(freq, 200)
sfx.silence(50)
sfx.fade_out(200)
sfx.save("chime.wav")
White Noise Background
sfx = SoundEffectsGenerator()
sfx.noise("brown", duration=60000) # 1 minute
sfx.volume(0.3) # Quiet
sfx.fade_in(2000)
sfx.fade_out(2000)
sfx.save("background.mp3", bitrate=128)
DTMF Phone Number
sfx = SoundEffectsGenerator()
sfx.dtmf_sequence("18005551234", tone_duration=180, gap=80)
sfx.save("phone_dial.wav")
Test Tone Sweep
sfx = SoundEffectsGenerator()
# Generate tones from 100Hz to 1000Hz
for freq in range(100, 1001, 100):
sfx.tone(freq, 200)
sfx.silence(50)
sfx.save("sweep.wav")
Common Frequencies
| Name | Frequency (Hz) |
|---|---|
| A4 (Concert pitch) | 440 |
| Middle C (C4) | 261.63 |
| C5 | 523.25 |
| Standard dial tone | 350 + 440 |
| Busy signal | 480 + 620 |
Musical Notes (A4 = 440Hz)
| Note | Frequency |
|---|---|
| C4 | 261.63 |
| D4 | 293.66 |
| E4 | 329.63 |
| F4 | 349.23 |
| G4 | 392.00 |
| A4 | 440.00 |
| B4 | 493.88 |
| C5 | 523.25 |
Dependencies
numpy>=1.24.0
scipy>=1.10.0
soundfile>=0.12.0
Optional: pydub (for MP3 export)
Limitations
- No complex synthesis (no ADSR envelopes)
- No stereo panning
- Limited to basic waveforms
- MP3 export requires pydub + FFmpeg
Comments
Markdown supported