SignalFlow
SignalFlow is a sound synthesis framework designed for clear and concise expression of complex musical ideas. It has an extensive Python API, for fluid audio experimentation in iPython/Jupyter, with its core written in portable, hardware-accelerated C++11.
SignalFlow is in beta status. Interfaces may be subject to change.
Example
from signalflow import *
#--------------------------------------------------------------------------------
# An AudioGraph is made up of a network of interconnected Nodes, which generate
# and process audio.
#--------------------------------------------------------------------------------
graph = AudioGraph()
#--------------------------------------------------------------------------------
# Passing an array of frequencies creates a stereo output.
#--------------------------------------------------------------------------------
sine = SineOscillator([440, 880])
#--------------------------------------------------------------------------------
# Simple attack/sustain/release envelope with linear curves.
#--------------------------------------------------------------------------------
env = ASREnvelope(0.01, 0.1, 0.5)
#--------------------------------------------------------------------------------
# Use standard arithmetic operations to combine signals. When a multi-channel
# signal is multiplied by a mono signal, the mono signal is auto-upmixed.
#--------------------------------------------------------------------------------
output = sine * env
#--------------------------------------------------------------------------------
# Connect the output to the graph, and begin playback.
#--------------------------------------------------------------------------------
output.play()
graph.wait()
Installation
SignalFlow requires Python 3.8 or above, and supports macOS, Linux (x86_64), Raspberry Pi (3+), and Windows (64-bit).
In a nutshell, SignalFlow can be installed with pip: pip3 install signalflow.
For a complete walkthrough on setting up your system with Python and SignalFlow, see Installing SignalFlow.
Examples
Several example scripts are provided in examples.
To download the examples folder:
import signalflow_examples
signalflow_examples.download_examples()
Documentation
In-depth documentation, including a reference guide to each of the Node classes, can be found at signalflow.dev.
Node class library
The following Node classes are currently included with the base distribution:
Contributors
Thanks to the following contributors:
- Greg White (@gregwht): Examples, documentation and testing
- Arthur Carabott (@acarabott), Tim Murray-Browne (@timmb): Windows support
- Dan Stowell (@danstowell): Build improvements
- Marc Fargas (@telenieko): Generous donation of the
signalflowpypi namespace - Ed Gillett: Generous donation of Linux build machine
- Sid Gudka: Generous donation of Windows build machine
Support
Thanks to the following supporters and sponsors:
- The Python Software Foundation for funding development of learning materials
- JetBrains for providing the IDEs used to develop SignalFlow
License
Use of the SignalFlow library with a Python interpreter, script or notebook is licensed under the free and permissive MIT License.
Use of SignalFlow or its components outside of a Python environment (for example, embedded within a binary object) is subject to a separate agreement. Please contact the author to discuss.
Release files for signalflow 0.5.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| signalflow-0.5.4-cp313-cp313-manylinux_2_34_aarch64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.34+ ARM64 | Details |
| signalflow-0.5.4-cp312-cp312-manylinux_2_34_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.34+ ARM64 | Details |
| signalflow-0.5.4-cp311-cp311-manylinux_2_34_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.34+ ARM64 | Details |
| signalflow-0.5.4-cp310-cp310-manylinux_2_34_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.34+ ARM64 | Details |
| signalflow-0.5.4-cp39-cp39-manylinux_2_34_aarch64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.34+ ARM64 | Details |
| signalflow-0.5.4-cp38-cp38-manylinux_2_34_aarch64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.34+ ARM64 | Details |
Total release size: 22.7 MB
Release files / signalflow-0.5.4-cp313-cp313-manylinux_2_34_aarch64.whl
| Download URL | signalflow-0.5.4-cp313-cp313-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
0d4ad099b90627833e1a1ea989e113b34c2934fce1653f363518e8c7ef09450d
|
|
BLAKE2b-256 checksum How to use checksums |
04982a36732552d115bf19a7fe6f1260ae873cf68f886ed822754489382be998
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / signalflow-0.5.4-cp312-cp312-manylinux_2_34_aarch64.whl
| Download URL | signalflow-0.5.4-cp312-cp312-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
1e1c67072e525f4b4e2471dbb5c82676cc89893eaa96eb40d95d3012d10fffff
|
|
BLAKE2b-256 checksum How to use checksums |
a92f3fd9e985c1b8c25f02a9d502f46ee288d4a52650be626faa40fca2bf31ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / signalflow-0.5.4-cp311-cp311-manylinux_2_34_aarch64.whl
| Download URL | signalflow-0.5.4-cp311-cp311-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
e588f20c8941e1dfc1c2cb2282fb578db89591558533741a3741fd1f8a05607b
|
|
BLAKE2b-256 checksum How to use checksums |
adf623f4435b96b465980a29cbb1eb6db7bfa2b68ad718dd48fcb28f67f04e1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / signalflow-0.5.4-cp310-cp310-manylinux_2_34_aarch64.whl
| Download URL | signalflow-0.5.4-cp310-cp310-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
e1e75f56efde65ea484a46b00174d7633ac09958622b86135ce4c90f2bdc0c8e
|
|
BLAKE2b-256 checksum How to use checksums |
12e9f9e49999ecd9f40c68607f40c0710e3420044aa9176435035ed854832254
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / signalflow-0.5.4-cp39-cp39-manylinux_2_34_aarch64.whl
| Download URL | signalflow-0.5.4-cp39-cp39-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.9 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
107c1b2da79f45e3a89faf7fc950820eb463dcf31fbfc5ff725e265710353c87
|
|
BLAKE2b-256 checksum How to use checksums |
858bc622e2121e3f947fc34356ca1e87a82076bf82a7b85ae12cf2cb80a5a27d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / signalflow-0.5.4-cp38-cp38-manylinux_2_34_aarch64.whl
| Download URL | signalflow-0.5.4-cp38-cp38-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.8 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
504473e4d2805641922063e48a37c074d6322627087a8c39a46a8b1fa1b799c1
|
|
BLAKE2b-256 checksum How to use checksums |
f9a7ddf174f75bbaab63f724b503d3eca75ee0fa4b7166ea5f121d0fe077dbdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|