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

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

Uploaded CPython 3.13 manylinux: glibc 2.34+ ARM64

signalflow-0.5.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

signalflow-0.5.3-cp313-cp313-macosx_12_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13 macOS 12.0+ x86-64

signalflow-0.5.3-cp313-cp313-macosx_12_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13 macOS 12.0+ ARM64

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

Uploaded CPython 3.12 manylinux: glibc 2.34+ ARM64

signalflow-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

signalflow-0.5.3-cp312-cp312-macosx_12_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12 macOS 12.0+ x86-64

signalflow-0.5.3-cp312-cp312-macosx_12_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12 macOS 12.0+ ARM64

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

Uploaded CPython 3.11 manylinux: glibc 2.34+ ARM64

signalflow-0.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

signalflow-0.5.3-cp311-cp311-macosx_12_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

signalflow-0.5.3-cp311-cp311-macosx_12_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11 macOS 12.0+ ARM64

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

Uploaded CPython 3.10 manylinux: glibc 2.34+ ARM64

signalflow-0.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

signalflow-0.5.3-cp310-cp310-macosx_12_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

signalflow-0.5.3-cp310-cp310-macosx_12_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

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

Uploaded CPython 3.9 manylinux: glibc 2.34+ ARM64

signalflow-0.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

signalflow-0.5.3-cp39-cp39-macosx_12_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

signalflow-0.5.3-cp39-cp39-macosx_12_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9 macOS 12.0+ ARM64

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

Uploaded CPython 3.8 manylinux: glibc 2.34+ ARM64

signalflow-0.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

signalflow-0.5.3-cp38-cp38-macosx_12_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.8 macOS 12.0+ x86-64

signalflow-0.5.3-cp38-cp38-macosx_12_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.8 macOS 12.0+ ARM64

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.3-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 4437f93f79dd4773a5f2f139e08ebfef8cfdc966d76afb5bab1a5d459c1bf1f8
MD5 4a433e0911494390de6d5a4348dc3224
BLAKE2b-256 4f3afa34e4da3ca500347aaf1a17140750fe4f0aad47f6afe9303799a643283a

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a6965e6845b3c22c5b5c486d2d082870c72fbf08b10e7cfc5086e7bfcfac4f8
MD5 b2805cf0a78e1e12aca69552cf9d4b25
BLAKE2b-256 a84980bb04ed345517c9a74821ac1581bc436d7dcb864d3614181d7eb93c0b0a

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp313-cp313-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp313-cp313-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 d92d49a57ccfdc63d46ff50d83dc5bffa42e779d4b1573196d65cd1fedcdf0c4
MD5 9007985448cba7a7fab4ccd74fa34c7e
BLAKE2b-256 da5aa45ebf569770412d30b10bc983abc34dc223369559d7414afdf08420555d

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp313-cp313-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 57d27a0d0a2b3aeb3b752a14b86eb4fa54ef9ce6feae8fc7a075f971edd7c793
MD5 311ed052d4ecb44a6d7b12d1514752af
BLAKE2b-256 16c1aa5527570c1e9002a76f3daf956dcb10ec4fac335cbed3dcd5d22ac9e27d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.3-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 178f4d483a79467085406bda6a47d60a7400867ec284290a12e16b342aea34e0
MD5 500bcb73ffbc4bfcf79f678ee833e993
BLAKE2b-256 e4b513571ded59ff0118ed5c6a78310fd70f24510e889793cf7145390f1dc78e

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f9dbf9001697be245e3e612339869014229a43f31c68c49e34a9a4880a19c57b
MD5 f83497fd4895dfb4bac6e754aa4f8a6c
BLAKE2b-256 3927574500feb63e8997264bd29220c389c23226706cc824a574929fa3d4a044

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp312-cp312-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp312-cp312-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 8331f013e99c7694351def1ffebce856b6bbc15f17925926a1e6fa9005ede621
MD5 af221ef414b59954b05a3f368933be4c
BLAKE2b-256 1ddcfc42177817e7254be14df3811e876edc4a31f5568a021ad10cfc9f9a521c

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp312-cp312-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp312-cp312-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b125f72db3d8d1e0a82d045555ff64037999615ec48259dacf5642f97f0356a7
MD5 f9b4091776680570d1ee457fe5986b68
BLAKE2b-256 de07ee6f80a5833fe116504807389d44f47bdaba1e09a7707e5983963511c47f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.3-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 ed197c6d704c5aa6417cc58b88609fcab2d2faeb929dfd96bb3d68cf22484adb
MD5 cdd8685170368c9f7fe19335bbd9458b
BLAKE2b-256 bf0076a75015e732aea8c1724bc51c335f379e9dbaa0388410d2d861ee3af0aa

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c990118ff1d6c2fcb2954ad63774a35071a90be737285e20116f5e97a5dfc34c
MD5 c961463eaf41c22b12aedcbd47ea085f
BLAKE2b-256 f6b2c5b5e67b0cf061284435098cf7a6d0375badc5e720127060b31071950a6b

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 e24faafde5f33e0ade97b5903804261071e3fe5561539cf338acb49e6fd47e12
MD5 0ef56a670ac5a22993cc6e5e7e49175e
BLAKE2b-256 d9807cf3bb87608014507595cdcfb36321447ea27326d260f1f805bc82bc8492

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b2006bad95ada7cc8e01dd83e9dee2f7da31c455205a8ba34a729f0cf3562025
MD5 24638654fe53880a7211a5cf4a1e9ccc
BLAKE2b-256 d76cd98466409fe096941313b8b557e8cf00927b51c12836f0e8d591c2be92af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.3-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 54965b17952aa25614105b09686b610458c541707e30de04b02fed23483a1ca9
MD5 198b1f0ffafc0c4bb78cad68e6238ae4
BLAKE2b-256 e1dbe032234d6911d30e3aba828be3196701bbc51c17fc202fd70f4b4099ef62

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb2a14f4cff95516bb789ca8261726144debcd37bb32e48f66d8242835dc9a1b
MD5 f860f359215a8ba99bbeeb4809e13b6f
BLAKE2b-256 55b9edea71614ae4a9b872e8c5feb5188b6475c5f04dac3cf1c56f2a3fd7acdb

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 c83c519f1e6ef3d67eb03d36b97ce932a5c716de9919a3aec8214c7cd84abd3c
MD5 12ee4099fa1f0749f8d32867a54af127
BLAKE2b-256 490d8b4347a7857e8585ed6eaa60370b32a1ee0cd77e609b93c2c6f4eb14c6e2

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 1833ee7565725bed9a745f6cb4890d7c6c77a0694993c0ca8883b190f679fdf4
MD5 aa786b987e9159e4fda211f343031e5b
BLAKE2b-256 6eca848070d8a3a326fc87f36b32f94495a8e85313f21082c462600a6db4e45e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.3-cp39-cp39-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 403a6c616533ddc53c414c83ebfe41dfc0f8f0919774e354dc647cc7f0cad458
MD5 fa453399525a158aff2396aa7967a605
BLAKE2b-256 a98e26be7f91a540ae92f26844dd2eed2e5b96ca0c2288268aee0859410efe3b

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa1865565d51f3927e89aa21101c9459aa146e1bf99aa582d371a9f389af45a8
MD5 25a598eb06f97f19051ac45dc9722fe1
BLAKE2b-256 fd860fdd72d825975e674ad5748683240b537c842612f7b52c3da3283852c153

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 9f9ee3fac17c7fc93a9fdc1cc4fba41311e09d0a14420a9e0c7f39bd6a9bef39
MD5 7db0ed83732002bd05b286682d69f447
BLAKE2b-256 e99284036d8dd122c069abefe9f054591d21b9f49c85ea33d9b4d64638c99329

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 6dbc07f6ecaa1aba969b473fab437ab947e0fb0b7a9ba4911b6b04284fed9ce8
MD5 6e27c84c12c85b1908b57e4bf6d69192
BLAKE2b-256 70e9ba628394f876677ecf760ce0a0508b48b1a2a09101551b9cb5ef151ee830

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.3-cp38-cp38-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 5262f73aa85e12daf3d9053a974cabbaceec777bb0563d394e61e2e5ed67daad
MD5 b6c0d491edb076d2c149b72bc37f48f8
BLAKE2b-256 47f364750df0fe05086b35ffb67f083911efbe829f1fe301f52ca497df81c56e

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eea963278d2b120fc31569b69ccb17fc07e266ea61dc9baf01637c814e82e55e
MD5 210eccffa2f745f1fd4f2e4c536d2836
BLAKE2b-256 eaa4b5dbe4468b509f253991131b163e1492e8ea547c3e3279a9ede654925068

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp38-cp38-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp38-cp38-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 c2907da482bfe4b29ed067744b794913bc31bea171a9c804a4fe1b059eb4760c
MD5 a51b2879d89c45646834d2badf96cfcf
BLAKE2b-256 ff5e47360fed483e8540ceaed370550415269c25b1e56a4073761052cf3452a6

See more details on using hashes here.

File details

Details for the file signalflow-0.5.3-cp38-cp38-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.3-cp38-cp38-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 63ee5e9b5d8509a7b53a72d76c07ea40ba9680e6980f40fec990fa7958503a9d
MD5 e187735d2868788d2c05efdc65a2c87c
BLAKE2b-256 da2c1b156da9a9b0402874881768f57267eb6f49a40dfd3e2deb6174fb36aec9

See more details on using hashes here.

Supported by

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