Skip to main content

SignalFlow

pypi-version ci stability-beta

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:

Category Classes
Analysis CrossCorrelate, NearestNeighbour, OnsetDetector, VampAnalysis
Buffer BeatCutter, BufferLooper, BufferPlayer, BufferRecorder, FeedbackBufferReader, FeedbackBufferWriter, HistoryBufferWriter, SegmentPlayer
Buffer: Granulation SegmentedGranulator, Granulator
Control MouseX, MouseY, MouseDown
Envelope Accumulator, ADSREnvelope, ASREnvelope, DetectSilence, Envelope, Line, RectangularEnvelope
FFT FFTContinuousPhaseVocoder, FFTConvolve, FFTBufferPlayer, FFTContrast, FFTCrossFade, FFTLFO, FFTMagnitudePhaseArray, FFTRandomPhase, FFTScaleMagnitudes, FFTTransform, FFT, FFTNode, FFTOpNode, FFTFindPeaks, IFFT, FFTLPF, FFTNoiseGate, FFTPhaseVocoder, FFTTonality, FFTZeroPhase
Operators Add, AmplitudeToDecibels, DecibelsToAmplitude, Bus, ChannelArray, ChannelCrossfade, ChannelMixer, ChannelOffset, ChannelSelect, Equal, NotEqual, GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual, Modulo, Abs, If, Divide, FrequencyToMidiNote, MidiNoteToFrequency, Multiply, Pow, RoundToScale, Round, ScaleLinExp, ScaleLinLin, SelectInput, Subtract, Sum, TimeShift, Sin, Cos, Tan, Tanh
Oscillators Constant, Impulse, LFO, SawLFO, SawOscillator, SineLFO, SineOscillator, SquareLFO, SquareOscillator, TriangleLFO, TriangleOscillator, Wavetable, Wavetable2D
Processors Clip, Fold, Smooth, WetDry, Wrap
Processors: Delays AllpassDelay, CombDelay, OneTapDelay, Stutter
Processors: Distortion Resample, SampleAndHold, Squiz, WaveShaper
Processors: Dynamics Compressor, Gate, Maximiser, RMS
Processors: Filters BiquadFilter, DCFilter, EQ, MoogVCF, SVFilter
Processors: Panning AzimuthPanner, ChannelPanner, SpatialPanner, StereoBalance, StereoPanner, StereoWidth
Sequencing ClockDivider, Counter, Euclidean, FlipFlop, ImpulseSequence, Index, Latch, Sequence, TriggerMult, TriggerRoundRobin
Stochastic Logistic, PinkNoise, RandomBrownian, RandomChoice, RandomCoin, RandomExponentialDist, RandomExponential, RandomGaussian, RandomImpulseSequence, RandomImpulse, RandomUniform, StochasticNode, WhiteNoise

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 signalflow pypi 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:

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)

Table of built distributions (wheels) for signalflow 0.5.4
File
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

Release history Release notifications | RSS feed

This release

0.5.4 This release

6 release files

0.5.3

24 release files

0.5.2

12 release files

0.5.1

12 release files

0.5.0

30 release files

0.4.8

10 release files

0.4.7

15 release files

0.4.6

15 release files

0.4.5

10 release files

0.4.4

1 release file

0.4.3

16 release files

0.4.2

11 release files

0.4.0

16 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