

Vivid: Sound Synthesis in Haskell [video] - mightybyte
https://www.youtube.com/watch?v=xo3zUvPsizo

======
eggy
How does this compare to Euterpea [1] another Haskell-based music development
DSL that can do real-time? It is Haskore and HasSound based, not
Supercollider. I couldn't make the comparison after watching most of the video
for Vivid.

[1]
[http://haskell.cs.yale.edu/euterpea/](http://haskell.cs.yale.edu/euterpea/)

~~~
vivid-synth
(I'm the author of Vivid) Euterpea has a high-level music language and FRP
framework that Vivid doesn't (yet). On the other hand, from conversations with
a developer of Euterpea, Vivid is probably far more performant for real-time.
Because of its performance and design goals, Vivid is also much more suited to
live performance (in my opinion).

You could say Euterpea is like writing a classical score to Vivid's rock band.

They aren't at all incompatible though, and I'd be excited to see Euterpea <->
Vivid interop.

~~~
eggy
Cool, I will give Vivid a shot since my goal is more livecoding than
composing. Any chance of integrating graphics like Overtone has with
Shadertone or Quil, or like Exetempore's builtin fuctions? Good work.

------
jlrubin
This is awesome work -- Tidal also has a bleeding edge interface to
supercollider, worth checking out.
[https://github.com/tidalcycles/Tidal/blob/master/examples/su...](https://github.com/tidalcycles/Tidal/blob/master/examples/supercollider.tidal)

------
mmarx
It's a pity that there is so much background noise on the audio, it really
makes this hard to watch, especially on headphones.

Vivid is an interface SuperCollider, apparently built with livecoding in mind.
The talk itself is mostly examples and provides little detail on how the
system works behind the scenes.

------
tessierashpool
fwiw, Clojure's Overtone is also an interface to SuperCollider.

pretty awesome, because I recall vaguely when SuperCollider first began, and I
don't think anybody said "this will be the common platform for live-coding
libraries in functional languages in the future" at the time.

~~~
subnaught
There's also a Scala client:
[http://www.sciss.de/scalaCollider/](http://www.sciss.de/scalaCollider/)

And if you go back to McCartney's original paper
([http://www.audiosynth.com/icmc96paper.html](http://www.audiosynth.com/icmc96paper.html)),
you can see that functional ideas have been in there from the beginning:

"The idea behind SuperCollider was to provide audio synthesis in a high level
language with dynamic typing, lists, garbage collection and closures. Normally
a language of this type is too slow to do signal processing. By creating a
signal data type which represents a buffer of samples over a short time frame,
and defining operators for that data type, it is possible to amortize the cost
of the interpreter over many samples."

~~~
pierrec
_" Normally a language of this type is too slow to do signal processing."_

That is one of the founding principles of many current sound synthesis
programming tools. In light of the recent developments in JIT-enhanced
languages (I'm thinking of LuaJIT), it should now be possibles to work with
less layers and more freedom, directly with the samples, in a high level
language.

And now comes the plug: This is exactly what protoplug allows you to do, and
as a VST plugin it works inside modern music-making software:

[http://www.osar.fr/protoplug/](http://www.osar.fr/protoplug/)

Obviously the design goals are very different from something like Vivid, and
it doesn't have the SuperCollider features to back it up.

