[ANN] Pink 0.1.0, Score 0.2.0

227 views
Skip to first unread message

Steven Yi

unread,
Mar 8, 2015, 2:36:27 PM3/8/15
to pink-...@googlegroups.com, clo...@googlegroups.com
Hi All,

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

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

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

For more information, please see the projects' docs at:

http://github.com/kunstmusik/pink
http://github.com/kunstmusik/score

and examples of using both at:

http://github.com/kunstmusik/music-examples

To note, this is the first stable version of Pink. I got into a bit
of "let me add just one more feature..." but decided it was time
enough to issue a release. Score's changes since 0.1.0 are primarily a
better organization of files, as well as organizing music into
measured and/or timed scores. See [1] for an example of measured
score use.

Next steps planned for Pink are some more unit generators (i.e. comb
filter, convolution) and effects (i.e. reverbs). Next steps planned
for Score are currently just adding Xenakis-style sieves. I've also
been using plotting code enabled as a separate Leiningen profile in
Pink, which I am planning to move to an additional library
(tentatively called pink-viz). The plans for pink-viz are to collect
useful functions for helping to write unit generators (i.e.
oscilloscope, bode plot, FFT spectrogram).

Thanks!
steven

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

Mikera

unread,
Mar 8, 2015, 6:40:40 PM3/8/15
to clo...@googlegroups.com, pink-...@googlegroups.com
Looks cool, thanks for sharing!

Not sure how useful it is, but I wrote some code and a blog post a while back about doing spectrograms in Clojure:

Steven Yi

unread,
Mar 8, 2015, 8:02:25 PM3/8/15
to clo...@googlegroups.com
Hi Mike,

That's fantastic, thanks for sharing! It definitely looks useful.  I've bookmarked the page and cloned the repo to study up on later.  I'm not sure I'll be able to use the implementation directly as I'm not quite sure yet what direction I'll go with for implementing FFT's in Pink (I have a todo to explore getting Pink working in Clojurescript, which might affect what libraries I go with).  imagez looks like it'd work very nicely for the pink-viz side though. Either way, I'll be sure to credit anything I use from your article and project. 

Thanks!
steven

aoeuyi qjkxbmwvz

unread,
Mar 9, 2015, 3:42:38 PM3/9/15
to clo...@googlegroups.com, pink-...@googlegroups.com
So the whole thing, including the engine is written in clojure/java? If so, how is the efficiency compared to supercollider or csound?

Steven Yi

unread,
Mar 9, 2015, 8:01:02 PM3/9/15
to clo...@googlegroups.com
Yes, Pink is written mostly in Clojure, with two Java classes there.
In terms of efficiency, Pink is slower than SC and Csound. I found it
a little hard to benchmark, as the systems aren't quite apples to
apples (e.g., SuperCollider use a 32-bit signal processing chain,
while Csound and Pink use 64-bit; I'm not sure what compiler flags
were used for SC vs. Csound; etc.).

I tried to come up with reasonable benchmark and what I did was use a
simple SynthDef in SuperCollider, using a SinOsc with default 8192
table. That's a linear interpolating table oscillator. I did the same
with Csound (oscili + gen10 sine), and Pink (oscili + gen-sine). So
in that regards, all three systems were run using interpolating
oscillators and 8192 sized tables. All three were run with 64-length
internal block size, and 512 external block size (buffer size sent to
the audio driver).

With Csound, I started get buffer underruns at around 2000
oscillators. With Pink I got underruns at about 340 oscillators.
With SC, I ran into an server limit on node instances once I got to
1030 (I'm guessing there is a 1024 limit). When I hit that limit, my
cpu was at about 25% (2011 Macbook Pro, Core i7). Comparing Csound
and Pink, Pink looks to be about 6.5-7x slower.

While I'm still searching for ways to optimize Pink, I'm okay with the
current performance as it is today, weighing it against the
expressiveness of the system, ease of development, and other factors.


On Mon, Mar 9, 2015 at 3:39 PM, aoeuyi qjkxbmwvz <askw...@gmail.com> wrote:
> So the whole thing, including the engine is written in clojure/java? If so,
> how is the efficiency compared to supercollider or csound?
>
> --
> 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 a topic in the
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojure/VC-Vk8o09CM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> clojure+u...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages