Python synthesizer

- 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
Links
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)
| File | Size | Uploaded | |
|---|---|---|---|
| synthesizer-0.3.1.tar.gz | 19.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|