Giter Site home page Giter Site logo

sndflo's Introduction

Data-flow programming for SuperCollider?

sndflo allows to program SuperCollider using the Flowhub visual data-flow IDE.

Status

Proof-of-concept working for wiring up Synth's.

Install

Note: Only tested on GNU/Linux. Should work fine on other platforms with minor adjustments in install.

Prerequities

Install

git clone https://github.com/jonnor/sndflo.git
cd sndflo

# Install as SuperCollider extension, ref http://doc.sccode.org/Guides/UsingExtensions.html
# On Linux
mkdir -p ~/.local/share/SuperCollider/Extensions || true
ln -s `pwd` ~/.local/share/SuperCollider/Extensions/sndflo
# On Mac OSX
mkdir -p "$HOME/Library/Application Support/SuperCollider/Extensions" || true
ln -s `pwd` "$HOME/Library/Application Support/SuperCollider/Extensions/sndflo"

npm install -g node-gyp
npm install

Running

# For Mac OSX only, specify where sclang is
export PATH=$PATH:/Applications/SuperCollider/SuperCollider.app/Contents/Resources/

node sndflo.js --verbose --user MY_FLOWHUB_UUID

Will start up SuperCollider, loading the sndflo runtime and FBP protocol bridge. On success should output something like

Listening at WebSocket port 3569 
OSC send/receive ports:  57120 57122
Registered with Flowhub, should be accessible in UI

Go to http://app.flowhub.io, refresh the runtime list. You should see our sndflo runtime listed, be able to create projects for 'sndflo' and connect.

Note: on GNU/Linux sclang might fail with a segfault if X11 is not available. You can use xvfb-run to work around this.

Vision

  • Program audio pipelines visually, by Synth's wiring together with Busses
  • Program synths visually, by creating SynthDefs by combining UGens
  • Do not replace sclang, integrate with it
    • Allow to use SynthDefs created in sclang in visual pipelines
    • Allow to drive visually created Synth pipelines using sclang Events/Patterns
  • Seamless integration with other FBP
    • MicroFlo for communicating with microcontrollers (sensing/acting)
    • NoFlo for general-purpose use, and generating composition/scores
    • Combined audio processing with noflo-webaudio
  • Program scores visually, using Streams and Patterns

Usecases

  • Generative & algorithmic composed music
  • Reactive and interactive art installations
  • Audio effect pipelines, processing sound inputs
  • Audio and music analysis, feature extraction

sndflo's People

Contributors

brianfay avatar jonnor avatar spenhar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

www3838438

sndflo's Issues

error running soundflo

ERROR: duplicate Class found: 'SndFloUiConnection'
/home/s***/.local/share/SuperCollider/Extensions/sndflo/classes/Runtime.sc
/home/s***/.local/share/SuperCollider/Extensions/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/classes/Runtime.sc

ERROR: duplicate Class found: 'SndFloRuntime'
/home/s***/.local/share/SuperCollider/Extensions/sndflo/classes/Runtime.sc
/home/s***/.local/share/SuperCollider/Extensions/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/classes/Runtime.sc

ERROR: duplicate Class found: 'SndFlo'
/home/s***/.local/share/SuperCollider/Extensions/sndflo/classes/SndFlo.sc
/home/s***/.local/share/SuperCollider/Extensions/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/classes/SndFlo.sc

terminate called after throwing an instance of 'boost::filesystem::filesystem_error'

what(): boost::filesystem::status: Too many levels of symbolic links: "/home/s***/.local/share/SuperCollider/Extensions/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo/sndflo"

/home/s***/Programs/sndflo/sndflo.coffee:345
throw err;
^

Error: Runtime exited with non-zero code: null :SIGABRT
at ChildProcess. (/home/s***/Programs/sndflo/sndflo.coffee:115:26)
at ChildProcess.emit (events.js:193:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:255:12)

Protocol: Consider making OSC a FBP transport

The adapter code would then be unncessary, implemented in noflo-runtime instead. Would allow easy use in the Flowhub Chrome app for instance...
Discovery remains a challenge though. Maybe just use live-mode URL?

The WebSocket bridging code could be generic for when needing to use webapp? MicroFlo could also use this...

Multiple running network after reconnect

If disconnected while network running, reconnecting Flowhub and then hitting "start" again. We get two networks running, where it is impossible to stop the first network

Streaming to browser/other devices

Should be low latency. In my experience this is tricky with HTML5 video/audio element (usually supporting HTTP/RTP etc), so it could be that WebRTC or WebSocket+WebAudio is way to go.

We could either hook into JACK, or SuperCollider itself. SuperCollider might also allow us to spy on internal busses, useful for debugging (edge introspection)

Mostly finding dead projects so far...

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.