josiah-wolf-oberholtzer / Supriya

Licence: mit
A Python API for SuperCollider

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Supriya

Dx7 Supercollider
My accurate Yamaha DX-7 clone. Programmed in Supercollider.
Stars: ✭ 395 (+136.53%)
Mutual labels:  audio, music, dsp, synthesizer, synthesis, supercollider
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (+40.72%)
Mutual labels:  audio, music, synthesis, composition
Sonic Pi
Code. Music. Live.
Stars: ✭ 8,736 (+5131.14%)
Mutual labels:  audio, music, synthesizer, synthesis
Main-Supercollider-Files
my supercollider codes, version history is at the branches
Stars: ✭ 21 (-87.43%)
Mutual labels:  dsp, synthesizer, supercollider, synthesis
Daisysp
A Powerful, Open Source DSP Library in C++
Stars: ✭ 291 (+74.25%)
Mutual labels:  audio, music, dsp, synthesizer
Pyo
Python DSP module
Stars: ✭ 904 (+441.32%)
Mutual labels:  audio, music, dsp, synthesis
Sporth
A small stack-based audio language.
Stars: ✭ 325 (+94.61%)
Mutual labels:  audio, music, dsp, synthesis
Supercollider
An audio server, programming language, and IDE for sound synthesis and algorithmic composition.
Stars: ✭ 4,036 (+2316.77%)
Mutual labels:  audio, music, synthesis, supercollider
Jssynth
Make music in your browser with this synthesizer and sequencer
Stars: ✭ 25 (-85.03%)
Mutual labels:  audio, music, synthesizer
Shadowmusic
A temporal music synthesizer
Stars: ✭ 28 (-83.23%)
Mutual labels:  music, synthesizer, synthesis
Voc
A physical model of the human vocal tract using literate programming, based on Pink Trombone.
Stars: ✭ 129 (-22.75%)
Mutual labels:  music, dsp, synthesis
Soundpipe
A lightweight music DSP library.
Stars: ✭ 921 (+451.5%)
Mutual labels:  music, dsp, synthesis
Synthdefs
Synthdef Pool
Stars: ✭ 54 (-67.66%)
Mutual labels:  synthesizer, synthesis, supercollider
Essentia
C++ library for audio and music analysis, description and synthesis, including Python bindings
Stars: ✭ 1,985 (+1088.62%)
Mutual labels:  audio, music, dsp
Fsynth
Web-based and pixels-based collaborative synthesizer
Stars: ✭ 146 (-12.57%)
Mutual labels:  audio, synthesizer, supercollider
Music Synthesis With Python
Music Synthesis with Python talk, originally given at PyGotham 2017.
Stars: ✭ 48 (-71.26%)
Mutual labels:  music, synthesis, supercollider
Webaudiofont
Use full GM set of musical instruments to play MIDI and single sounds or effects. Support for reverberation and equaliser. No plugins, no Flash. Pure HTML5 implementation compatible with desktop and mobile browser. See live examples.
Stars: ✭ 600 (+259.28%)
Mutual labels:  audio, music, synthesizer
Hifiberry Os
Linux distribution optimized for audio playback
Stars: ✭ 487 (+191.62%)
Mutual labels:  audio, music, dsp
Beep.js
Beep is a JavaScript toolkit for building browser-based synthesizers.
Stars: ✭ 1,294 (+674.85%)
Mutual labels:  audio, music, synthesizer
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+653.29%)
Mutual labels:  audio, music, synthesizer

supriya

Supriya_ is a Python_ interface to SuperCollider_.

Supriya lets you:

  • boot and communicate with SuperCollider_'s scsynth synthesis server
  • construct and compile SynthDef unit generator graphs in native Python code
  • build and control graphs of synthesizers and synthesizer groups
  • object-model scysnth OSC communications explicitly via Request and Response classes
  • compile non-realtime synthesis scores via Supriya's nonrealtime.Session class

.. note:: This project is still under heavy development, is not yet stable, and is not yet intended for deployment in the field.

Send compliments or complaints to [email protected], or register an issue at https://github.com/josiah-wolf-oberholtzer/supriya/issues.

Supriya is compatible with Python 3.6+ only.

.. image:: graph.png :align: center

GitHub_ | PyPI_ | Documentation <http://supriya.mbrsi.org/>_ | Issue Tracker <https://github.com/josiah-wolf-oberholtzer/supriya/issues>_ | Mailing list <http://groups.google.com/group/supriya-dev>_ |

Quickstart

  1. Get Supriya and SuperCollider

Get Supriya from `GitHub`_::

    ~$ git clone https://github.com/josiah-wolf-oberholtzer/supriya.git
    ~$ cd supriya
    supriya$ pip install -e .

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

Run the tests to make sure everything's OK::

    supriya$ pytest

Consult our installation instructions for detailed help on getting Supriya,
setting it up, and installing any additional dependencies like `Graphviz`_.


2. Make some noise
``````````````````

Start your Python interpreter and import Supriya::

    >>> import supriya

Boot the SuperCollider server::

    >>> server = supriya.Server.default()
    >>> server.boot()
    <Server: udp://127.0.0.1:57110, 8i8o>

Create and allocate a group::

    >>> group = supriya.realtime.Group().allocate()

Make a synthesizer definition and send it to the server::

    >>> builder = supriya.synthdefs.SynthDefBuilder(
    ...     amplitude=1.0,
    ...     frequency=440.0,
    ...     gate=1.0,
    ...     )

::

    >>> with builder:
    ...     source = supriya.ugens.SinOsc.ar(
    ...         frequency=builder['frequency'],
    ...         )
    ...     envelope = supriya.ugens.EnvGen.kr(
    ...         done_action=supriya.DoneAction.FREE_SYNTH,
    ...         envelope=supriya.synthdefs.Envelope.asr(),
    ...         gate=builder['gate'],
    ...         )
    ...     source = source * builder['amplitude']
    ...     source = source * envelope
    ...     out = supriya.ugens.Out.ar(
    ...         bus=0,
    ...         source=source,
    ...         )
    ...

::

    >>> synthdef = builder.build().allocate()

Synchronize with the server::

    >>> server.sync()
    <Server: udp://127.0.0.1:57110, 8i8o>

Create a synthesizer with the previously defined synthesizer definition::

    >>> synth = supriya.Synth(synthdef)
    >>> synth
    <Synth: ???>

Allocate it on the server as a child of the previously created group::

    >>> group.append(synth)
    >>> synth
    <Synth: 1001>

Query the server's node tree::

    >>> response = server.query_remote_nodes(include_controls=True)
    >>> print(response)
    NODE TREE 0 group
        1 group
            1000 group
                1001 f1c3ea5063065be20688f82b415c1108
                    amplitude: 0.0, frequency: 440.0

Release the synth::

    >>> synth.release()

Quit the server::

    >>> server.quit()
    <Server: offline>


..  _GitHub: https://github.com/josiah-wolf-oberholtzer/supriya
..  _Graphviz: http://graphviz.org/
..  _Homebrew: http://brew.sh/
..  _PyPI: https://pypi.python.org/pypi
..  _Python: https://www.python.org/
..  _SuperCollider: http://supercollider.github.io/
..  _Supriya: https://github.com/josiah-wolf-oberholtzer/supriya
..  _libsndfile: http://www.mega-nerd.com/libsndfile/
..  _pip: https://pip.pypa.io/en/stable/
..  _virtualenv: https://readthedocs.org/projects/virtualenv/
..  _virtualenvwrapper: https://virtualenvwrapper.readthedocs.org/en/latest/
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].