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.

In brief, SignalFlow can be installed with pip: pip3 install signalflow.

For complete per-platform instructions and setup guides, 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 classes

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

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.1-cp313-cp313-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.13 manylinux: glibc 2.34+ ARM64

signalflow-0.5.1-cp312-cp312-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.34+ ARM64

signalflow-0.5.1-cp311-cp311-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.34+ ARM64

signalflow-0.5.1-cp310-cp310-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.34+ ARM64

signalflow-0.5.1-cp39-cp39-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.34+ ARM64

signalflow-0.5.1-cp38-cp38-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.34+ ARM64

File details

Details for the file signalflow-0.5.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f2b2ae6ba66ad7617adbf9110f30e84004dda5e27d77e29add60184d40ff31e0
MD5 e0e70e8fb56b3815b2f39219b72e831d
BLAKE2b-256 2d38be1c0840757d2b19f6dba8e2dfedb4d18c7b97f9642f7a257eff4f07fe2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.1-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a06544aa27e8ad2db7242c2e1ad4e49ca38941dfd9345429677741bdaec6f329
MD5 1a4c19a4f0022bcb56c43f2fbd0fd915
BLAKE2b-256 88e9013529648d728e8ebbc4a4cc673c414d353e44072ca1e384cd04a50d731f

See more details on using hashes here.

File details

Details for the file signalflow-0.5.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f88c9790a78c2c5773b8b5bb7b4b85bcdd819686769adbda2437584510006d1b
MD5 a40b97e60da3e5b4c1b2cbea6fa77f33
BLAKE2b-256 3d4555d63636f748f8e36e4cf1cf47c44167b0df75f810f7a4c3965d5f87c8bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.1-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 1f5a35b36834a734d6033090cd9a65c647af953d07f8cb978756e01134e680aa
MD5 24c92f65851eb71299554ab6711ab92f
BLAKE2b-256 0ae8137848134babc7d7abc7e4b0c48225c11ff742df33f09e3ebe3b084492e3

See more details on using hashes here.

File details

Details for the file signalflow-0.5.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7bf20da53b0886a91343003ef3f3510a97c1911cc63eb4d5f2598bd22c4d66cc
MD5 c0829403cf0966284bfe61436e55f09d
BLAKE2b-256 18c1746bbf499ba23c7bd8f5a9ccac7a98e53e1ba7cf2fb3b1e57ee7e4454a8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.1-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 d607741f6d2b0224b85d3767d642db135d4a626d4360e9ab49047f11f6dc84eb
MD5 d6c72f0af87afa4d3c9c0e64f4425e8f
BLAKE2b-256 2cd9c43c47d43a1a8169a6ee584bedf877dc022b5a0b36155c169d375e351f23

See more details on using hashes here.

File details

Details for the file signalflow-0.5.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0953ee40d5d14c669a36c438ebc93e536056b89a15b86e71b6c671200a6372b5
MD5 385a7571a3b95c8ec3496b9d2c4da989
BLAKE2b-256 f93a50743dd7644df0fbb9204ce5f57f685826d4f72b75b3fb61c2346e99dc62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.1-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 fe3deee0046a127a2ddd0c4245e0693c5a4ded6de3ca1c7fc64b8a7f5bb88d67
MD5 b41c93510a32d970235fb73cf9a61d38
BLAKE2b-256 8e99360557237d20465f84d711aaec6207ac7f1b729ae56d39671fcec7ed01c1

See more details on using hashes here.

File details

Details for the file signalflow-0.5.1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1a9b669354a33873e879cd09a899e8dd5c0bebfef4a41c83f4c43fb3cceb4365
MD5 f219adba43c3abebe4ca08b1c6237d34
BLAKE2b-256 97655d3f65cb623bb3088d8d1a5bab990609bf6c4e1d744d2a9eec2812372859

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.1-cp39-cp39-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0aba04a8a3b8ecc05fe6e1a4eaa2471b3bc4327d2693a6c7114ed44533361287
MD5 9d0fff94701be4a5e196176ce04e48e9
BLAKE2b-256 7f3b734dc5e533bd691b9bb9310c09a5341269b8f5728489c0f27bb2d5311d6d

See more details on using hashes here.

File details

Details for the file signalflow-0.5.1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for signalflow-0.5.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1ad3da420f5e9df4180cf107d0d591fbef3e202d460f445163e664b1cc9b17bc
MD5 b9cb8101eca1beb0564ba7f41fd8752e
BLAKE2b-256 5696d77d7d9f2d18b593746777bfa713de8a2a502c4bfa4b5beae5f35dd42cc4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.1-cp38-cp38-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 631efe638f824f29d875a4237d203b49762568f7c3bbbc5aab7e5390fff9d40c
MD5 9d57a5744e0c755bc9c9aadd1ec5ecf0
BLAKE2b-256 3e3227d0fb59330cc4e173f42edc27f4d54eee1ba86e463cdf55d7b6cee70320

See more details on using hashes here.

Supported by

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