This is here


(in Swedish)



About me


Yes, I do some programming, mostly in C++. The programs may not be very useful to other people, they are just a part of my composition and animation tool kit.

Waveforms for wavetable oscillators

New waveforms for the people! This page describes some ideas for more or less smooth waveforms, bandlimited or not. The source code is available for experimentation.

Generative Music

An autonomous system of interacting oscillators

The Bourgillator is a complex system of interacting oscillators. It draws its inspiration from several research papers on topics such as the Kuramoto system and slow-fast systems of ordinary differential equations.

Each oscillator has a phase variable and two amplitude varables, a fast one which controls the output amplitude and a slower envelope follower. The oscillators are mutually coupled in ways that make them synchronise or repel each other. Furthermore, the relative amplitude among the oscillators influences the whole system by a discontinuous function designed to keep the system unstable. Instead of rapidly reaching a steady state, it will meander around in its phase space and sometimes suddenly tip over into a different pattern.

A few examples will illustrate the kind of processes that are possible. The specific form of the equations used in the system may be different in each of the following sound examples.

Bourgillations 1

After a short initial transient, the system appears to split into subpopulations of oscillators. Whereas some oscillators steadily increase in frequency, others have locked onto a repetitive pattern.


Intermittency or fluctuations between two states dominate this example.

Bourgillations 2

All oscillators are initialised to random frequencies, which result in the inharmonic timbre heard at the beginning. Gradually the oscillators begin to interact in ways that make the sound rougher.

The source code that generated these sounds is available for study, experimentation and improvement. Don't expect too much though, the program's only purpose was to generate the composition Bourgillator, and nothing besides that.


The composition Spielraum, part of Signals & Systems, was basically realised as the output from a single program. This program takes no input arguments, and generates a different version of the piece each time you run it. If you want to experiment with it, download the source code and compile it. The program is not very big, but probably could have been made even smaller. To compile it, you will need to have installed the libsndfile library on your computer. The output will be an 8-bit sound file and a Csound score file. There is also a Csound .orc file which should be used together with the score file to generate a background layer that fits with the other sound file.

A typical output:

This sound example is an extract from a 17 minutes output, where a large chunk in the middle was omitted.

Creative Commons License
These sound examples by Risto Holopainen are licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.