Live Code – Modular-esque

Live code session using csound-live-code and

Initial code happens for about 2m40s, then sound begins.

For those interested in the code, the session uses:

1. start UDO for working with the different always-on instruments
2. vco2 square wave for enveloping (has a nicer quality to it than
using lfo with type 3, IMO)
3. portk for frequency glide
4. chnset for immediate setting of a channel value as part of performance
5. chnset within an always-on instrument (“Mod”) together with k-rate
randh to show how to approach using continuous values with channels

Algorave: Algosix

This past weekend I was happy to participate in the Algosix celebration of Algorave with a live code performance. (The first few minutes of the test sound were me trying to check sound on the stream and failing to realize it was working…).

The video shows a little bit of vim, csound, and csound-live-code. In particular, it demonstrates the hex beats work in the live code project, as well as using phasors and non-interpolating oscillator functions for pitch values.   Drum sounds are from Iain McCurdy’s TR808 code and synth sounds were ones I have been working on in the live code project.

The event was a lot of fun with lots of different approaches, aesthetics, tools, etc. Lots of appreciation for the community and organizers of the event! (And many thanks for the opportunity to perform!)

Extensible Computer Music Systems – PhD Thesis Available Online

My PhD thesis, “Extensible Computer Music Systems” is now freely available online as a PDF at:

It captures my thoughts on the importance of extensibility in computer music software and different ways of approaching it for both developers and users.  The thesis discusses various extensibility strategies implemented in Csound, Blue, Pink and Score, from 2011-2016.

Looking back at the thesis, I’m proud of the work I was able to do.  I am sure my thoughts will continue to evolve over time, but I think the core ideas have been represented well within the thesis.  I hope those who take a look may find something of interest.

In addition to my acknowledgements in the thesis, I would also like to thank Ryan Molloy and Stephen Travis Pope for their close readings of my thesis as part of the Viva process.  I will be forever grateful for their comments and insights.

Reflections after a Thesis Submission

After a very long and tiring week, I managed to finish (with great support from my advisor, Victor, and my wife, Lisa) and submit my thesis for the PhD this past Friday. I flew back home on Saturday and have been focusing on getting myself organized and resting.  I am waiting now for the Viva Voce (thesis defense), which should be in November or December, depending upon the availability of the examiners. If that all goes well, I’ll have to do revisions to the thesis, then can submit the final hardcopy and will be done.

I haven’t had much time to write on this site for a very long while.  I’m happy to have a free moment now to sit and breathe and reflect. I think more than anything, after spending a long time developing and creating music systems, I have been extremely happy the past few days to spend time using those programs for composing.  I imagine it will take some time to integrate music making back into my daily life, to make it a real practice, but so far it is going well and I am excited to just to continue on and see where it all goes.

I have a number of projects for the short term, and should be busy through the rest of the year.  The weight of writing the thesis is now absent, and all the rest of the work seems much more manageable now.  If all goes well with the Viva, I will certainly enjoy this coming December, and I am looking forward to it already.


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.




Extending Aura with Csound Opcodes

Last week at the International Computer Music Conference 2014/Sound and Music Computing 2014 joint conference in Athens, Greece, I gave a paper entitled “Extending Aura with Csound Opcodes”.  The paper discusses work to allow using Csound opcodes by themselves, outside of the normal Csound engine, within Roger Dannenberg’s Aura interactive music framework. I’ve placed a copy of the paper here:

Download Paper (PDF)

The paper may be of interest to those involved with music systems design, particularly focusing on unit generators, and those wanting to know more about Csound’s internals. In the presentation, I focused on looking at all of the other things involved with Unit Generators besides just the processing algorithm, and gave a demonstration using an Aura-based application, using the Serpent programming language to create a short generative example using temporal recursion and dynamic allocation of Csound and Aura unit generators working together.

While the conference was exhausting, and certainly had technical issues due to the scope of what was scheduled, I had a great time at the conference. I saw many old friends and made a few new ones. 🙂 I’ll certainly be attending next year’s SMC 2015 in Maynooth, and hope to attend the ICMC 2015 in Denton, Texas too!

Being Mostly Offline

Since we moved to Ireland, our primary way of going online while at home has been on our cellphones. Originally we had planned to get either a cable modem or cellular WiFi hotspot, but since we were the traveling we did not get around to it the first month here. Since then, we had been using our cellphones for tethering once in a while in the mornings and evenings, and have decided to try not having internet at home.

So far, things have worked out very well. We are no longer going online first thing in the morning, allowing ourselves to get up and enjoy our tai chi practices with a more peaceful mind. Our evenings have been very serene, and we have been getting either more work or a lot more reading done.

Granted, getting used to less internet did take a little time to get used to, but once we did it has been fantastic. Since the amount if internet we get on our phones is limited, we are much more conscious of using the internet purposefully. We are able to get most of the things involving larger data amounts done while at our offices spaces on campus or at WiFi hotspots at coffee shops. I think though that even when we do have internet access we are using it less and more purposefully.

In some ways, our current relationship to the internet and being connected reminds me of the time before when the internet was pervasive. I have been enjoying this setup very much and I think it has been a great boost for general productivity, focus, and peace of mind. I am curious how things will develop over time, but I expect that we will continue to enjoy being mostly offline at home.

In Response to Computer Music Journal, Summer 2012 review of “The Audio Programming Book”

I was catching up with Computer Music Journal issues and noticed a review by Jeffrey Trevino and Drew Allen of The Audio Programming Book, in which I was a contributing author. The review has some valid points to make regarding the organization of the book and what it covers. However, I did find problematic one section of the review regarding my chapter on Modeling Orchestral Composition:

But why, you might ask, does an introduction to audio programming culminate in a computer model of the orchestra? The chapter should be reframed as an introduction to Csound, to avoid the current sense of aesthetic blindness. Rather than acknowledge the presence of the numerous higher-level electronic music programming systems that invite alternatives to the conservative score-orchestra model built into Csound, the chapter precludes the discussion of other approaches by failing to mention them. Instead of treating the score-orchestra metaphor flexibly, as is the case in most uses of Csound, the author cements its literal interpretation with a table entitled, “Comparing the Steps of Composing for Live Orchestra and Composing with [Csound’s] Orchestra Library.” (Emphasis Yi’s.) Lastly, he deals aesthetic alternatives their death blows in the form of an all-encompassing first-person plural: “By reusing an existing music software system, we can leverage the solutions already available and focus more closely on our compositional interests.”

I found this section of the review rather problematic and takes what I wrote out of context to serve the narrative of the reviewers that “the remainder of the printed text presents an arbitrary collection of special topic essays on possible relationships between Csound and programs written in C.”

There are a couple of points I wanted to discuss.  First is that the text is specifically working on modeling orchestral composition, and proposes a library design to do so. The focus of the article was on the composition aspect, or, how the composer writes for an orchestra, and how to model that aspect of the relationship between composer and orchestra. It was not specifically about the orchestra itself, but requires a discussion of the orchestra to understand the composing process for it.

In that regard, I feel that the criticism that I did not discuss a “score-orchestra metaphor flexibly” is in a way, criticism that I did not write a different text altogether. It seems that the reviewers read the text as being about a Music-N style score/orchestra design, or specifically, about Csound’s score/orchestra design. The reviewer’s misunderstanding is notable in their additions of [Csound’s] here:

“Comparing the Steps of Composing for Live Orchestra and Composing with [Csound’s] Orchestra Library.” (Emphasis Yi’s.)

Note, the original title of the table did not have “Csound’s” as the article was not about Csound’s score/orchestra at all.  The library that is the focus of the chapter uses Csound as a backend, but it in itself is a generic design of orchestral composition that could be developed to target other backends as well (i.e. PD, Max, SuperCollider, Chuck, etc.).

Note: When I wrote the chapter, I did have some reservations that there may be confusion.  Csound and Music-N languages do have a long-held design of a score and orchestra.  I did worry that it might get confused with the concepts I was trying to model.  For me, the Music-N score/orchestra are not the model of what I was doing, but just the tool I used to support the software model of the orchestral composition library. I tried to be clear of this distinction, but it seems to still have lead to some confusion.

This leads to the second issue I had with the reviewers’ comments regarding aesthetics.  In the text, I wrote a brief section on wanting to reuse an existing synthesis system.  This was so that the article could focus on orchestral composition and less on the synthesis details, which I believe are covered in other chapters of the book.  I discussed why MIDI was not sufficient for the library’s design goals, and discussed why I chose Csound.  However, I would have thought that readers who are familiar with SuperCollider, PD, Common Lisp Music, or other synthesis systems, would understand the chapter to be a generic design that could easily be implemented in other languages and systems.  I did have to discuss Csound’s ORC/SCO model to explain how the results of the orchestral composition library would ultimately map its results to another systems software model to get audible results.

To me, this is not even an aesthetic choice, but an implementation detail.  To me, the aesthetic choice here is that I wrote from a perspective of a composer looking at achieving compositional practices commonly found in orchestral composition and reproducing them in a computer music context. In that regard, that is the focus of the chapter, and is even the title of the text. I do not think then that not mentioning other aesthetic goals is a valid criticism.  To me, It is as if I criticized an article about Impressionist technique as leaving out mention about Dada or Post-Modernism.

As for other tools and ways of working, I’d like to state that I have supported and continue to support other tools and software synthesis systems.  I have often promoted that everyone should use the tools that best suits them, and ultimately the important thing to me is the musical result, and not the tools used.  I think it is the reviewers’ reading of the article as being about Csound has lead to misplaced criticism.

To summarize, I appreciate the work of the reviewers to review The Audio Programming Book.  However, in regards to the section on my own chapter, I feel they had misread the text.  In the end, I still find the chapter and the design of the library interesting and hope it will be as useful to others–using whatever system they use–as it has been for my own compositional work. Hopefully I have explained my own perspective clearly, and would invite any further discussion.