Pink 0.3.0

Hi All,

I’d like to announce the release of Pink 0.3.0:
[kunstmusik/pink “0.3.0”]

Pink is an audio engine library for making music systems and compositions.

The ChangeLog is available at:

This release introduces Pink processes. It reuses the state machine
macro system from core.async to allow writing event generation code
using loops and waits.  The state machine execution is wrapped in a
Pink control function and run synchronously with the engine.  Waits
may wait upon a given time value in seconds, a Pink Signal (i.e. cues
or latches), or upon a predicate function.  The use of signals and
predicates provides a means for interprocess communication, enabling
things like Lutoslawski-style aleatory (i.e., ad libitum writing)
where performers and conductors signal one other.  Further information
is available in the documentation for processes [1] and example code
is shown in [2]. (For those unfamiliar with Lutoslawski’s writing, the
performance instructions given at the bottom of pages 1 and 2 of his
3rd Symphony [3] may shed some light.)

This release also provides a translation of Scott Van Duyne’s piano
model from Common Lisp Music, biquad-based filters, and a number of
other audio, control, and utility functions.

Many thanks to Timothy Baldridge and other core.async contributors for
making the core.async ioc_macros easily extensible and reusable, and
again to Tim for the wonderfully clear videos on YouTube explaining
the design of the macros.


[1] –
[2] –
[3] –

Pink 0.2.0, Score 0.3.0

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,

ChangeLogs are available at:

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.

[1] –

Pink 0.1.0, Score 0.2.0

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:

and examples of using both at:

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).


[1] –

Developing Music Systems on the JVM with Pink and Score

My talk at Clojure/Conj 2014, entitled “Developing Music Systems on the JVM with Pink and Score” is now available online at:

I was a bit dismayed afterwards that I had mismanaged my time on stage and that my final example did not run (ended up being a small bug that was introduced while practicing the presentation earlier that day; now fixed in the code repository). However, I think overall I was able to cover enough of the systems. I also got some good feedback from people, both as compliments as well as great notes and questions that I look forward to incorporating back into the work.

I’m happy now to be back home and look forward to collecting my thoughts and figuring out next steps for everything. I am extremely grateful to have had the opportunity to present my work at the conference; many thanks to Cognitect for the opportunity and their incredible support.  I’m also blown away by the other speakers at the conference, as well as all the people I met there.  It’s a wonderful community, one which I hope continues to grow and keeps on being as positive a group as it is today.