ctford / leipzig

A music composition library for Clojure and Clojurescript.
Other
454 stars 26 forks source link

Support CLJS #9

Closed ctford closed 8 years ago

ctford commented 8 years ago

Leipzig's dependence on Overtone is very slim - at and now. If we provide equivalents for CLJS, then Leipzig should be able to support music in the browser, using web audio instead of Overtone synths.

lukateras commented 8 years ago

Then you could drop Overtone as a dependency and instead use overtone/at-at, which is the library that provides at and now for Overtone.

lukateras commented 8 years ago

This would fix #4 as well.

bion commented 8 years ago

overtone.core/at isn't provided by at-at: https://github.com/overtone/overtone/blob/master/src/overtone/sc/server.clj#L52

Overtone provides all of the scsynth interop. Rewriting all of the UGens and synthesis graph traversal logic for web audio would likely be the biggest chunk of work. If you're interested in making that happen in the browser you may take a look at CoffeeCollider, which has most of that functionality: https://github.com/mohayonao/CoffeeCollider

On Tue, Nov 3, 2015 at 9:58 PM, Yegor Timoshenko notifications@github.com wrote:

This would fix #4 https://github.com/ctford/leipzig/issues/4 as well.

— Reply to this email directly or view it on GitHub https://github.com/ctford/leipzig/issues/9#issuecomment-153586286.

ctford commented 8 years ago

As Leipzig is designed now, it doesn't actually have a direct dependency on ugens. The way you invoke an instrument is to implement a multimethod, so if you e.g. wanted to use CoffeCollider, you could (so long as we take care of at and now somehow.

On 4 November 2015 at 06:12, Bion Johnson notifications@github.com wrote:

overtone.core/at isn't provided by at-at:

https://github.com/overtone/overtone/blob/master/src/overtone/sc/server.clj#L52

Overtone provides all of the scsynth interop. Rewriting all of the UGens and synthesis graph traversal logic for web audio would likely be the biggest chunk of work. If you're interested in making that happen in the browser you may take a look at CoffeeCollider, which has most of that functionality: https://github.com/mohayonao/CoffeeCollider

On Tue, Nov 3, 2015 at 9:58 PM, Yegor Timoshenko <notifications@github.com

wrote:

This would fix #4 https://github.com/ctford/leipzig/issues/4 as well.

— Reply to this email directly or view it on GitHub https://github.com/ctford/leipzig/issues/9#issuecomment-153586286.

— Reply to this email directly or view it on GitHub https://github.com/ctford/leipzig/issues/9#issuecomment-153589691.

ctford commented 8 years ago

Leipzig now supports CLJS and is now used in Klangmeister (https://ctford.github.io/klangmeister).