[ANN] Pink 0.2.0, Score 0.3.0

304 views
Skip to first unread message

Steven Yi

unread,
Jul 24, 2015, 4:47:30 PM7/24/15
to clo...@googlegroups.com, pink-...@googlegroups.com
Hi All,

I'd like to announce the release of Pink 0.2.0 and Score 0.3.0:

[kunstmusik/pink "0.2.0"]
[kunstmusik/score "0.3.0"]

Pink is an audio engine library, and Score is a library for
higher-level music representations (e.g. notes, phrases, parts,
scores).

ChangeLogs are available at:

https://github.com/kunstmusik/pink/blob/master/CHANGELOG.md
https://github.com/kunstmusik/score/blob/master/CHANGELOG.md

The quick version is Pink now has some new effects (ringmod, freeverb,
chorus) as well as some new filters and delay-based audio functions.
Score has a new sieves namespace for Xenakis-style sieves. (An example
of sieves and freeverb is available in the music-examples project
[1]).

For any questions, please feel free to email me or post on the
pink-users list. For issues and PR's, please use the facilities on
Github for each of the projects.

Thanks!
steven


[1] - https://github.com/kunstmusik/music-examples/blob/master/src/music_examples/sieves.clj

Ruslan Prokopchuk

unread,
Jul 25, 2015, 12:24:14 AM7/25/15
to Clojure, pink-...@googlegroups.com, stev...@gmail.com
Steven, thank you for continuing to develop Pink & Score! I have some music projects as my slowly-moving-forward-hobbies, and having pure java, no deps like Supercollider, engine for one of them is very precious!

пятница, 24 июля 2015 г., 23:47:30 UTC+3 пользователь Steven Yi написал:

Steven Yi

unread,
Jul 25, 2015, 1:03:44 PM7/25/15
to Ruslan Prokopchuk, Clojure
Thanks Ruslan and best of luck in your musical work!

W. David Jarvis

unread,
Jul 28, 2015, 12:54:14 PM7/28/15
to Clojure, fer....@gmail.com, stev...@gmail.com
This might be a naive question, but for someone who's only tangentially familiar with the space, where does this fit in to the overall Clojure music/sound ecosystem (re: overtone et al)?

Justin Smith

unread,
Jul 28, 2015, 2:13:46 PM7/28/15
to Clojure, fer....@gmail.com, stev...@gmail.com, vena...@gmail.com
Overtone has its own composition logic, but for synthesis it is a client for the open source Supercollider audio synthesis server (which is a cross platform C++ program that can be controlled via the network). Pink and Score are built in Clojure and Java without using an external server.

Steven Yi

unread,
Jul 28, 2015, 6:24:31 PM7/28/15
to Justin Smith, Clojure, Ruslan Prokopchuk, vena...@gmail.com
I'd add a few other notes:

* Overtone uses Supercollider 3 (SC3) for its audio processing. Pink
relates more to SC3 than to Overtone, as Pink is an audio engine
library, but there's some overlap.
* You wouldn't likely use Overtone and Pink together. Score however is
a generic library and could be used with Overtone.
* Pink uses 64-bit (doubles) for its audio processing,
Overtone--because it uses SC3--uses 32-bit (floats) for its signal
processing chain
* Overtone and SC3 are much more mature systems with a pretty deep set
of signal processing and control signal generators. Pink has a lot
less functions at this time.
* Pink uses Clojure code for its signal processing, so one can write
unit generators in Clojure code, as well as study the existing unit
generator code as Clojure. You'd have to switch to C++ to read the
unit generator code in SC3 (though, I'd say the codebase for SC3 is
quite clean and easy to read, IMO)
* Pink has a slightly more functional approach to audio and events.
Overtone inherits SC3's approach, which ends up using busses for
transferring audio between Synths. This then ends up requiring a
little more management of ordering of nodes and processing order.
* For events, because Pink's "synths" are just plain Clojure
functions, it means you can write events where the arguments to the
synths can be other audio functions. This means you could do things
like reuse a synth-patch and give a fixed value for a frequency cutoff
of a filter, but you could also pass in an LFO summed with an Envelope
and a frequency value as the value for cutoff to get a dubsteb wobble,
for just that note instance. (You could do something close in SC3 by
using synth params but you'd have to schedule a separate synth to
modify values I think.)
* Pink's event system is processed synchronously with the audio
engine. Pink also allows adding control functions to run synchronously
with the engine. This allows one to do things like temporal recursion
with events and have it done without jitter. As far as I understand,
Overtone uses at-at, which uses a separate clock source from the SC3
engine. That would mean there'd be possible jitter between the event
thread and the audio engine thread when firing events.
* Overtone and SC3 will likely run faster as the audio processing is
done natively. Pink is optimized pretty well for Clojure/Java, but I
don't think it will ever get as fast as SC3. If you're expecting to
do a large amount of processing in realtime, Overtone may be the
better choice.
* Pink, however, may be a bit easier to use for non-realtime
processing. Since you can do anything synchronously with the engine,
you can run control functions and do temporal recursion even if you're
running faster than non-realtime, and you'd get the same exact results
as in realtime.

Just to note, I'm probably more familiar with SC3 than I am with
Overtone, so if I've misunderstood anything, I'm happy to be
corrected. Also, I'd say that Overtone will probably cover more
musical use cases at this time, due to the depth of unit generators,
but Pink's design covers some use cases that Overtone can not, and
allows expressing musical ideas in a unique way.

zcaudate

unread,
Jul 28, 2015, 8:12:59 PM7/28/15
to Clojure, noise...@gmail.com, fer....@gmail.com, vena...@gmail.com, stev...@gmail.com
This is so cool =)

Can you put up a video?

Gary Verhaegen

unread,
Jul 29, 2015, 10:35:41 AM7/29/15
to clo...@googlegroups.com
There's http://m.youtube.com/watch?v=wDcN7yoZ6tQ, though I guess it does not cover the latest features in this release.


On Wednesday, 29 July 2015, zcaudate <z...@caudate.me> wrote:
This is so cool =)

Can you put up a video?

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Steven Yi

unread,
Jul 29, 2015, 9:09:08 PM7/29/15
to Clojure, gary.ve...@gmail.com
I haven't had much time lately so that's all there is at the moment. The design of Pink hasn't changed much since that presentation, so the contents of the video should still be relevant for understanding the design. I'm hoping to have more time available from October and am planning on developing some tutorials, a website, and some personal musical works at that time. Until then, I'm happy to answer any questions over mailing list or email.  

Thanks!
steven

Chris Zheng

unread,
Jul 30, 2015, 9:37:44 AM7/30/15
to clo...@googlegroups.com
Wow, just watched the talk. I just recently inherited a USB keyboard so I'll be trying some things out with this

On a seperate topic, would pink be able to do distortion effects, ie.. Plugging in an acoustic guitar and having it modulate the waveforms?
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/W9DGDS3aF20/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.

Steven Yi

unread,
Jul 30, 2015, 10:01:32 AM7/30/15
to Clojure, z...@caudate.me
Unfortunately, not at the moment. I'll need to add audio input, as well as distortion audio functions. The first should be straightforward, the second I think there are different approaches to distortion, so I'd probably start with translating Csound's distort and distort1 opcodes and move on from there.  I'll see if I can spend a bit of time on both of these and will push out a new Pink when I get them implemented (workload at the moment is horrendous, so I'm unable to give an estimate on when). 

Thanks!
steven
Reply all
Reply to author
Forward
0 new messages