Giter VIP home page Giter VIP logo

spp's Introduction

Sine Plus Plus

[ many sines summed various ways ]

SPP is a harmonic oscillator written in SuperCollider. By default it will play 128 partials. It creates a wavetable once the amplitudes of the partials are set to minimize the CPU load. It has a QT GUI, several modes for setting the amplitudes array, and a built in reverb. It speaks OSC.

It looks like this :

alt text

Launching

Just run the spp.scd file from your SuperCollider interpreter and it will handle importing the other files.

Everything you need to customize your instance can be found in that same file.

The modes

The modes are used to create arrays of amplitudes for the partials. There are seven modes and each one has a different set of parameters. A mode is selected by clicking on one of the buttons at the top of the controls section of the GUI. The controls for that mode is (are) the one(s) immediately below the mode button (and up to the next button in the case where there are multiple controls).

[ R ] (Ramp)

A linear ramp that starts at an amplitude set by start and moves up or down each step by a value set by step.

[ D ] (Decay)

Implements the formula: 1 / ((i+1) ** k) with k set by k.

[ G ] (Geometric decay)

Implements the formula: 1 / (i ** k) with k set by k.

[ F ] (Formant)

Formant-like structure with a center partial and a spread set by width.

[ T ] (Teeth)

Partials starting on the partial set by start and spaced out from each other by space partials.

[ C ] (Cutoff)

Maximum amplitude for all partials up to the cutoff partial set by n.

[ S ] (Shelf)

Partials from start to end ramp from an amplitude set by slevel (start level) to another set by elevel (end level). Note that amplitudes are normalized, so the result might not be exactly what you would expect.

Custom amplitude arrays

There must be an easter-egg to do just that...

OSC addresses

By default, SuperCollider will be listening on localhost:57120.

Address Valid message
/spp/freq float from 10.0 to 500.0 (frequency in Hz)
/spp/level float from 0.0 to 1.0
/spp/amp float from 0.0 to 1.0
/spp/verb/mix float from 0.0 to 1.0
/spp/verb/room float from 0.0 to 1.0
/spp/verb/damp float from 0.0 to 1.0
/spp/mode one of ['r', 'd', 'g', 'f', 't', 'c', 's', 0]
/spp/ramp/start float from 0.0 to 1.0
/spp/ramp/step float from 0.0 to 1.0
/spp/decay/k float from 0.0 to 1.0
/spp/geom/k float from 0.0 to 1.0
/spp/formant/center float from 0.0 to 1.0
/spp/formant/width float from 0.0 to 1.0
/spp/teeth/start float from 0.0 to 1.0
/spp/teeth/space float from 0.0 to 1.0
/spp/cutoff/n float from 0.0 to 1.0
/spp/shelf/start float from 0.0 to 1.0
/spp/shelf/end float from 0.0 to 1.0
/spp/shelf/slevel float from 0.0 to 1.0
/spp/shelf/elevel float from 0.0 to 1.0

Issues

There are issues I'm working on. You can help if you're up for it. You can find them here.

spp's People

Contributors

inegm avatar

Stargazers

Tiago Vaz avatar

Watchers

James Cloos avatar

spp's Issues

Multiple instances break the level meter

When multiple instances are running, the level meters share the level of all instances simultaneously. This is because I haven't found a way to send OSC from the server on a custom path for each instance. Would sending the audio over separate buses to distinct instances of amplitude followers work ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.