Skip to main content

SignalFlow is a sound synthesis library designed for clear and concise expression of sonic ideas

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

signalflow-0.5.4-cp313-cp313-manylinux_2_34_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

signalflow-0.5.4-cp312-cp312-manylinux_2_34_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

signalflow-0.5.4-cp311-cp311-manylinux_2_34_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

signalflow-0.5.4-cp310-cp310-manylinux_2_34_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

signalflow-0.5.4-cp39-cp39-manylinux_2_34_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ ARM64

signalflow-0.5.4-cp38-cp38-manylinux_2_34_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.34+ ARM64

File details

Details for the file signalflow-0.5.4-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.4-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0d4ad099b90627833e1a1ea989e113b34c2934fce1653f363518e8c7ef09450d
MD5 4bb9bf602476238d7c01002c5e9f2cb6
BLAKE2b-256 04982a36732552d115bf19a7fe6f1260ae873cf68f886ed822754489382be998

See more details on using hashes here.

File details

Details for the file signalflow-0.5.4-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.4-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 1e1c67072e525f4b4e2471dbb5c82676cc89893eaa96eb40d95d3012d10fffff
MD5 976713c206a7f79f6f0b757c01ce9ea5
BLAKE2b-256 a92f3fd9e985c1b8c25f02a9d502f46ee288d4a52650be626faa40fca2bf31ac

See more details on using hashes here.

File details

Details for the file signalflow-0.5.4-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.4-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e588f20c8941e1dfc1c2cb2282fb578db89591558533741a3741fd1f8a05607b
MD5 a1f8e5f2605e1df98bff548b2b1321a8
BLAKE2b-256 adf623f4435b96b465980a29cbb1eb6db7bfa2b68ad718dd48fcb28f67f04e1b

See more details on using hashes here.

File details

Details for the file signalflow-0.5.4-cp310-cp310-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.4-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e1e75f56efde65ea484a46b00174d7633ac09958622b86135ce4c90f2bdc0c8e
MD5 7d39d8309d6ecd35a3a7cd29c30a4398
BLAKE2b-256 12e9f9e49999ecd9f40c68607f40c0710e3420044aa9176435035ed854832254

See more details on using hashes here.

File details

Details for the file signalflow-0.5.4-cp39-cp39-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.4-cp39-cp39-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 107c1b2da79f45e3a89faf7fc950820eb463dcf31fbfc5ff725e265710353c87
MD5 60a5b49c3184ca85e5aa23173c48c68b
BLAKE2b-256 858bc622e2121e3f947fc34356ca1e87a82076bf82a7b85ae12cf2cb80a5a27d

See more details on using hashes here.

File details

Details for the file signalflow-0.5.4-cp38-cp38-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.4-cp38-cp38-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 504473e4d2805641922063e48a37c074d6322627087a8c39a46a8b1fa1b799c1
MD5 2aa4c86855fb0fe2fca77779ffe1d106
BLAKE2b-256 f9a7ddf174f75bbaab63f724b503d3eca75ee0fa4b7166ea5f121d0fe077dbdb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page