Skip to main content

Python synthesizer Build Status Documentation Status

  • Virtual analog synthesizer.

Installation

$ pip install synthesizer

To play sounds with Player, install PyAudio as well.

$ pip install "synthesizer[audio]"

Install dependencies for PyAudio

Ubuntu

$ apt install portaudio19-dev

macOS

$ brew install portaudio

Basic usage

Play 440Hz sine wave

>>> from synthesizer import Player, Synthesizer, Waveform


>>> player = Player()
>>> player.open_stream()
>>> synthesizer = Synthesizer(osc1_waveform=Waveform.sine, osc1_volume=1.0, use_osc2=False)
# Play A4
>>> player.play_wave(synthesizer.generate_constant_wave(440.0, 3.0))

Play chord

# Play C major
>>> chord = ["C3", "E3", "G3"]
>>> player.play_wave(synthesizer.generate_chord(chord, 3.0))

# You can also specify frequencies to play just intonation
>>> chord = [440.0, 550.0, 660.0]
>>> player.play_wave(synthesizer.generate_chord(chord, 3.0))

You can use PyChord to handle chords easily.

>>> from pychord import Chord
>>> chord = Chord("Dm7/G")
>>> player.play_wave(synthesizer.generate_chord(chord.components_with_pitch(root_pitch=3), 3.0))

Attack and release

Each generated wave fades in and out (10 ms by default) to prevent click noise between notes.

>>> synthesizer = Synthesizer(osc1_waveform=Waveform.sine, attack=0.05, release=0.2)
# Disable the envelope
>>> synthesizer = Synthesizer(osc1_waveform=Waveform.sine, attack=0.0, release=0.0)

Specify audio device

>>> player.enumerate_device()
# index: 00, name: "Built-in Microphone", rate: 44100
# index: 01, name: "Built-in Output", rate: 44100
# index: 02, name: "UA-25EX 44.1kHz", rate: 44100
>>> player.open_stream(device_name="UA-25EX")

Write wav file

>>> from synthesizer import Writer
>>> writer = Writer()

>>> chord = ["C4", "E4", "G4"]
>>> wave = synthesizer.generate_chord(chord, 3.0)
>>> writer.write_wave("path/to/your.wav", wave)

Examples

play_pychord.py

Play chords using PyChord.

pip install pychord>=0.5.0
python example/play_pychord.py A C#m7 DM7 Bm7/E A

Supported OS

  • macOS
  • Linux

Supported versions

  • Python 3.10 and above

Author

License

  • MIT License

Metadata

Release files for synthesizer 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for synthesizer 0.3.1
File Size Uploaded
synthesizer-0.3.1.tar.gz 19.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for synthesizer 0.3.1
File Interpreter ABI Platform
synthesizer-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 27.4 kB

Release files / synthesizer-0.3.1.tar.gz

Download URL synthesizer-0.3.1.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dd89aca86a5b84a0a32fc2508f42cfd1bbd2d4ff0d98145747b75bb4b7a019f5
BLAKE2b-256 checksum
How to use checksums
32b6a6a48bccab95273c72d91b0c6ef4e81b7a6c702736acdc7aed231dae0a06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / synthesizer-0.3.1-py3-none-any.whl

Download URL synthesizer-0.3.1-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8eef8b60c40fd625357a38757b10abe574ffe11670c52b237c14ccc8f5f086f1
BLAKE2b-256 checksum
How to use checksums
e9c4a4d0fda26666dbe73573929292d09124ccff4a35ae18ca7292bacc5dbb1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

1 release file

0.1.5

1 release file

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page