This is here


(in Swedish)



About me




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

Time domain signal descriptors

These small functions actually might be useful for things like audio analysis, adaptive effects, or adaptive synthesis. The main part is a file of about 1k lines of code to play with. Many of the ideas are probably new.

A brief adventure in JavaScript

Wait a minute, do they pay so-called web developers to play with such things? I dabbled in some generative content on a dynamic web page and documented a few things I learned the hard way.

Peptalk the Oracle

This differs from the other projects by being a generative text program. Use it as an oracle and get words of wisdom, or often mere word salad. Engage in a dialogue and it might pick up a few of your words.

The source code in pure C (24 kB zip file) available with a CC BY-NC-SA 4.0 licence is mirrored here. For background, see also: Peptalk announcement, or visit:

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

Kolmogorov Variations

Eleven hard pieces of algorithmic electroacoustic music. The title was chosen as a reference to Kolmogorov complexity.

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.