Agent skill

sound-effects-generator

Generate audio tones, noise, DTMF signals, and simple sound effects programmatically. Export to WAV or MP3 format.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/sound-effects-generator

SKILL.md

Sound 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

python
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

python
sfx = SoundEffectsGenerator(sample_rate=44100)

Tone Generation

python
# 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

python
# 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

python
# Single digit
sfx.dtmf("5", duration=200)

# Sequence (phone number)
sfx.dtmf_sequence("5551234", tone_duration=150, gap=50)

Beep Sequences

python
# 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

python
# Generate silence
sfx.silence(duration=1000)

Effects

python
# Fade in/out
sfx.tone(440, 2000).fade_in(200).fade_out(500)

# Volume adjustment
sfx.tone(440, 1000).volume(0.5)

Chaining

python
# Combine multiple sounds
sfx.tone(440, 500) \
   .silence(200) \
   .tone(880, 500) \
   .save("two_tones.wav")

Save

python
# Save to WAV
sfx.save("output.wav")

# Save to MP3 (requires pydub)
sfx.save("output.mp3", bitrate=192)

CLI Usage

bash
# 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

python
sfx = SoundEffectsGenerator()
sfx.beep_sequence(
    frequencies=[880, 1100, 880, 1100],
    durations=150,
    gap=50
)
sfx.fade_out(100)
sfx.save("alert.wav")

Notification Chime

python
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

python
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

python
sfx = SoundEffectsGenerator()
sfx.dtmf_sequence("18005551234", tone_duration=180, gap=80)
sfx.save("phone_dial.wav")

Test Tone Sweep

python
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

Didn't find tool you were looking for?

Be as detailed as possible for better results