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

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.34+ ARM64

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

Uploaded CPython 3.8Windows x86-64

signalflow-0.5.2-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.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: signalflow-0.5.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for signalflow-0.5.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6966fc4b511759ee7bacb1bd8b38840e16224b459bf4001afcba16fda5ce9f3d
MD5 14fba7f2726093a0732a7b1bab824ab4
BLAKE2b-256 b9760ccc7fae88c48df43e98408ef189719ef8803f11367a793d9fef48cc002f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.2-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 8a9e0b6457f34bb6cdc375ac560f36a18065a62deff62915cc52c28171e74e94
MD5 c921a362d45e199dbe706115b6c5bf8e
BLAKE2b-256 3980c1e875a72161774eb5b567644eb0efcce1e86647ed488295a5febf310b8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: signalflow-0.5.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for signalflow-0.5.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8cf714033f8f24cd7aab9b4fef6a7a57c3be6e2d22c08cb374e71ef9b109c104
MD5 d5a2a97b3d8bd47f0bed294a3f322f49
BLAKE2b-256 14c822e0092445fdcc3975a670d2a8b9207f396fb46fee013efae82686c76164

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.2-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 db7e37e0422de50ee78f357a4734ca724284a631d7c6547a2eeae6a2e0edee84
MD5 e466fdcaa8731fc9dfe3f969404c7774
BLAKE2b-256 0bf7305276d1568bbe15dcf85b29e7a6705cd5f1fb3d8c3324a3e8870907f4f1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: signalflow-0.5.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for signalflow-0.5.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bc7f25b35a592b9ccf6059ece38322e9a0af782781a7b172f7aebccc62a860aa
MD5 aa2f4e318dcbf88d2498ed7d4cad4ac9
BLAKE2b-256 0eb79a5e5b4b45484468cd7b07c9f92c1194ea7fd41bdb34db724f6c885546b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.2-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e9519d09088aedbad2814ff458f667541cee7f1831794fe32d3b4ba5509f3956
MD5 1a258f932400ee03ed475fbbf61f1603
BLAKE2b-256 3ad70e0aed8bea41f0359ec0c8b720197032f953b209666938ef5e48ce9909ec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: signalflow-0.5.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for signalflow-0.5.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a1e37fcc23439eb63768c791e46567d752296bc092dbc2e083c76359018d87ab
MD5 8d4f66b2d295a275f1b9a50da3c5ad69
BLAKE2b-256 945690e6aee4ee881525120b4e4f08ed8f8b1c0e97d37b336b640e796c8ce867

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.2-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e5c2f65c88cfd358c84a3f883ef019685e07d948083d58a85bff1701ea248f6f
MD5 bf155bcb76d22c8343dc4d6ec125fe2b
BLAKE2b-256 711081c35166ec3ba5ede3989b88f3dedfb4087acff832fa7568cfd773de788e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: signalflow-0.5.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for signalflow-0.5.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2bb1a7bd9b23e7331ef15ca22da1b58d7920c835615f0e5d33c2922671dc619c
MD5 d9f9ce7ad9d5015502e65657ff644c51
BLAKE2b-256 eb54bb7bf6443d21ba32242647b0c7863d61e2f48e6971fd0ad0da2d4ea673ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.2-cp39-cp39-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 60a193b139d4d4b22fea7108d0faf659a6914605f320a6372919516466114f7d
MD5 41f518d132aec85ebd25940faee9dc92
BLAKE2b-256 32cc331cbd2593fe26d98b88d9385668973e30e57c931bc71e9d5c2a82c51648

See more details on using hashes here.

File details

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

File metadata

  • Download URL: signalflow-0.5.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for signalflow-0.5.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 42a6079bf395b48d179761148e66d181c28e200c9bcb1b958695d64aa5466f1b
MD5 f01c0acb225ff83c3bbb1da60dd14edf
BLAKE2b-256 0910d80b52fc94c58c6d77cedede362478d75ddc7bc52eb8374c07b2b5a9f236

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signalflow-0.5.2-cp38-cp38-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 dd12b94281df4bb21e2f8c19fa50d5ce9c99a738275d3bae880b4aebfe45516e
MD5 7e388a745813f7d96b8de8366c2a66fd
BLAKE2b-256 3a4601840f35842a140e3f845a83a8cc23f640ddc2d367f376bcf6003a0c48f2

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