Pre-Conj Interview: Steven Yi

Steven Yi’s talk at the conj is about music systems on the JVM, focusing on two systems he built, called Pink and Score.

Background

Pink is a library for signal generation and processing and event handling. It is designed as a low-level library to use to build your own audio system. It is written in Clojure.

Score is a library for composing musical scores. Those scores are generic, so that they can be played by a variety of backend systems. Score is written in Clojure.

Why it matters

Electronic music is an interesting field. It is one that Lisp has been applied to for many years. To paraphrase Sam Aaron, creator of Overtone, Clojure’s high-level allows a programmer to leverage programming ability to create better music. Pink and Score join Overtone and Rich Hickey’s Harmonikit as music systems developed in Clojure.

Introduction

Interview

PF.tv: How did you get into Clojure?

Steven Yi: I think I came across it online about two years ago when it started to get a bit of a buzz. I had long wanted to learn a Lisp, but Common Lisp and Scheme never really clicked when I tried. Clojure was different though, and since I do a fair amount of Java programming, the possibility to integrate Clojure with my JVM music software Blue helped motivate me to get into it.

PF.tv: Can you briefly describe Blue, Pink, and Score?

SY: Blue is a music composition environment, written in Java using the Netbeans RCP. It is a graphical environment with a score timeline, graphical instruments, mixer and effects, and more. It uses Csound as its audio engine and signal processing system. (Disclosure: I’m also one of the core developers of Csound.)

Pink is a Clojure library for building music systems. It features a low-level audio engine, higher-order events, and includes signal generation and processing functions.

Score is a Clojure library for higher-level music work, particularly for generating notes and scores using various strategies. It is designed to be generic and usable with multiple backends. Using Score and Pink together can be particularly effective and expressive, having one language for the full musical stack.

PF.tv: Overtone has been getting a lot of attention lately. How do Pink and Score compare to Overtone?

SY:Ah yes, certainly the elephant in the room. 🙂 I’ll certainly address comparisons to Overtone in more detail during the talk. In a nutshell, Overtone builds upon SuperCollider. Of those two, Pink would compare more to SuperCollider than to Overtone, as it is concerned with low-level audio engine design. Score deals with higher-level abstractions in music, many of which are covered in Overtone. However, because of the full-stack Clojure design between Pink and Score, Score can interact with Pink in ways Overtone/SuperCollider can not. Pink/Score are currently not as mature nor as performant as Overtone/SuperCollider. There’s a lot of overlaps between the various systems, and use cases and requirements for a user’s project will guide them to one system or the other.

Hopefully that’s enough to get going! I think the breakdown of music systems design I’m planning for the talk should hopefully make things clear.

PF.tv: Is there any resource that could help someone new to Clojure, or new to music systems, get the most out of your talk?

SY: think it’s a tough question about music systems as I don’t know of any resources out there that really introduce the subject. Having some experience with Overtone would certainly be useful. I can say I’ll probably mention SuperCollider, Csound, Common Lisp Music, Nyquist, and Common Music during the talk: