Skip to content

supriya-project/supriya

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
GitHub Actions Bot
Mar 29, 2025
d925675 · Mar 29, 2025
Mar 15, 2025
Mar 11, 2024
Mar 14, 2025
Mar 26, 2025
Mar 29, 2025
Mar 29, 2025
Mar 15, 2025
Mar 18, 2025
Feb 9, 2025
Apr 14, 2024
Apr 14, 2024
Aug 8, 2022
Mar 29, 2025
Aug 21, 2024
Feb 8, 2024
Mar 9, 2023
Mar 15, 2025
Mar 15, 2025

Repository files navigation

Supriya

Supriya is a Python API for SuperCollider.

Supriya lets you:

Quickstart

1. Get Supriya

Install from PyPI:

pip install supriya

Or from source:

git clone https://github.com/supriya-project/supriya.git
cd supriya
pip install -e .

2. Get SuperCollider

Get SuperCollider from http://supercollider.github.io/.

3. Boot the server

Start your Python interpreter and import Supriya:

>>> import supriya

Boot the SuperCollider server:

>>> server = supriya.Server().boot()

4. Build a SynthDef

Import some classes:

>>> from supriya import Envelope, synthdef
>>> from supriya.ugens import EnvGen, Out, SinOsc

Make a synthesizer definition:

>>> @synthdef()
... def simple_sine(frequency=440, amplitude=0.1, gate=1):
...     sine = SinOsc.ar(frequency=frequency) * amplitude
...     envelope = EnvGen.kr(envelope=Envelope.adsr(), gate=gate, done_action=2)
...     Out.ar(bus=0, source=[sine * envelope] * 2)
...

Visualize the SynthDef (requires Graphviz):

>>> supriya.graph(simple_sine)

Allocate it on the server:

>>> _ = server.add_synthdefs(simple_sine)

... and then sync the server before proceeding to ensure the SynthDef has been fully parsed by scsynth:

>>> _ = server.sync()

5. Create some nodes

Create and allocate a group:

>>> group = server.add_group()

Create some synthesizers with the previously defined synthesizer definition, and allocate them on the server as a child of the previously created group:

>>> for i in range(3):
...     _ = group.add_synth(simple_sine, frequency=111 * (i + 1))
...

Query the server's node tree:

>>> print(server.query_tree())
NODE TREE 0 group
    1 group
        1000 group
            1003 simple_sine
                amplitude: 0.1, frequency: 333.0, gate: 1.0
            1002 simple_sine
                amplitude: 0.1, frequency: 222.0, gate: 1.0
            1001 simple_sine
                amplitude: 0.1, frequency: 111.0, gate: 1.0

6. Release and quit

Release the synths:

>>> for synth in group.children[:]:
...     synth.free()
...

Quit the server:

>>> server.quit()

License

This library is made available under the terms of the MIT license.