Independent Study: project ideas


This is the first week of the CCRMA winter term. One of the things I have elected to do is take an independent study. The intention of this post is to outline a proposal for what I intend to do. Since I am often tied up with many small projects that all tie together, I feel it would be best to define the proposal as a specific objective, but rather to outline a few underlying themes that would drive 2-4 concurrent projects within the 10-week timeline.


Sporth has been a project of mine for the past two years. It has been quite a successful project in my eyes, along with soundpipe. All my independent study time this quarter will be related to Sporth.

The reasoning for this is bittersweet. I am beginning to realize that it is time for me to have Sporth development take up less headspace. My code commits to both Sporth and Soundpipe have been dwindling. This isn't due to lack of interest, but simply to the fact that both projects have reached a level of satisfaction. There are less bugs that need to be looked at. They do their job pretty well. In my mind, they have nicely grown into what I wanted them to be the first place. So, I'm going to cram as much as I can into this quarter, and then take a moderate step back from Sporth development next quarter.

The Sporth Cookbook

Documentation has been something that Sporth needs more of. The Sporth Cookbook, aims to be documentation not just for Sporth, but for sound design in general. The cookbook as I see it right now will have three major sections.

Part 1 will be "the Kitchen", a short to-the-point section explaining how Sporth works. My aim for this is to have it be digestible in 1-2 sittings.

Part 2 will be "the Plumbing", which will examine Soundplumber, the name of the underlying API for Sporth. The goal of this will be to get familiar with the various data structures and terminology in Soundplumber and how they relate to Sporth. I imagine the structure of this chapter being mostly bottoms-up, culminating with the plumber_compute function.

Part 3 will be "the Recipes", which will be an ever growing set of analyized Sporthlings that I make. This chapter will be considered "complete" when all the ugens have been used up. My hope is that some of the concepts conveyed in this chapter could be applied to general modular sound design techniques.

I also want a generated glossary page, which have a reference page for each ugen, along with a link to every sporthling that uses it.


Proliferation is a bit of a wildcard category. I do many projects in the hopes that I can make Sporth more accesible to others. Who that "someone" is strongly varies from project to project.

Proliferation of Sporth is important, mainly because I think there is great artistic merit to using stack based and concatenative languages to produce sound, especially when you have a good set of unit generators at your disposal like Sporth does.

Right now, Sporth is limited to mostly C developers and Linux users who are comfortable on the commandline (aka ME). This is too high a bar for such a simple language. My hope is to create more frontends and ways of exploring Sporth without those prerequsites.

I also want to let more developers and Linux Users know that Sporth is a fast, portable way to do audio synthesis in projects. More projects that can showcase this are also on my mind.

Some project ideas that currently fall into the proliferation category include, Sporth for LMMS, a cross platform frontend for Sporth, Sporth on Android using the Android NDK.