Quagmire

No, not that quagmire!

Rather, I am talking about an interesting software art project in which programs exist within a bitmap. From the author:

Quagmire is an emulation of an impossible 8bit processor, where all memory is addressed in 2 dimensions, and is represented by pixel value. Program execution threads can run up, down, left or right. Sections of code are visible in memory, as are the processes as they run. Unlike a normal computer the internal process of the machine is visible. Programs are drawings.

The programs are executed by scanning pixels in the bitmap/drawing and interpreting them as instructions that can change the original bitmap, including the parts that are being “run.”

The best way to illustrate this concept is will an illustration, or rather, a series of illustrations:

In the above example, the “program” in the lower-left corner switches various pixels on and off, and spawns more copies of itself in the process. After running for a while, one ends up with four animated “stripes” of execution.

The program changes dramatically if the “non-executed” area of the image is different. For example, we can paste my “digital fish” logo onto the image and then run the program again:

The very orderly execution over the empty image becomes much more complex in the presence of the fish logo.

Although the complex changes in the image can seem random, they are completely deterministic. Running the same program/image in Quagmire yields the same result every time. Indeed, this can be seen as an example of chaos in which simple processes can produce incredibly complex results that may seem random but are completely deterministic.

Some images produce less complexity. Applying the same program to a picture of Space Ghost (who has appeared in several posts on this forum recently) causes a small number of changes after which the program comes to a halt:

By contrast, applying the program code to an image of Luna appears to grow ever more noisy and complex:


The Quagmire site has more detailed technical information about the programming language (more of a machine language) and an implementation in which you can run your own programs. You can also find links to more examples of “software art.”

It would be interesting to explore software art that uses audio in addition to (or instead of) visual images…



Worthless Kitty Interlude: 1990 and 2041

I was listening to the radio last night on the way home, and the program host was referring to an event 17 years ago, in 1990. Some thoughts:

1990 is 17 years ago, or half a lifetime ago.
2007 will be half a lifetime ago in 2041.
In 2041, I will be 68 years old.

many cats can live to 17 years or more

my grandfather (on my mother's side) died at age 68 in 1982.






Fun with stats: digits in Pi

From Eve Andersson's Pi land, we have these histograms of the frequency of (base 10) digits.

The first 100 digits of pi:

0 8
1 8
2 12
3 12
4 10
5 8
6 9
7 8
8 12
9 13

Things even out pretty nicely by about 1 million digits:

0 99959
1 99757
2 100026
3 100230
4 100230
5 100359
6 99548
7 99800
8 99985
9 100106

The digits are just white noise, there might be an interesting pattern now and then, but that is to be expected statistically. Besides, these are base 10 digits, which are an arbitrary representation based on the fact that we have two hands with five fingers apiece…

I could share some more interesting facts and formulae, but printing the greek character pi on a blog is, as they say, a pain in the butt. And I am not in the mood for that tonight.



Warped Cannon

Courtesy of fellow experimental musician Gino Robair, we have the “Warped Cannon” page, which features the Pachelbel's Canon in a wide variety of tunings. The MIDI files on the site present the canon performed not in variants of the traditional just and equal-tempered scales, but several rather odd tunings as well. Of particular interest to me was the the Bohlen-Pierce variation, using the Bohlen-Pierce tuning that I have discussed in previous posts. While some readers/listeners may find this variation a little difficult to listen to, and even disturbing when contrasted with the original, I actually find it quite inspiring. I am always interested to hear pieces done in this tuning ahead any future BP compositions of my own.






Dissertation now (back) online

I have finally reposted my doctoral dissertation, this time in HTML format as well as PDF. The title is Perceptual Scheduling in Real-time Music and Audio Applications. I propose an algorithm for improving computational performance of expensive synthesis techniques, such as additive synthesis and resonance modeling that preserves audio quality, and measured both the improved CPU performance and the perceptual quality as measured by expert listeners in controlled experiments.

I think this actually a good time to review and reflect upon this work. Five years have passed since I graduated from UC Berkeley with my PhD. I probably have the only doctoral dissertation in Computer Science that includes James Brown as a citation. While I enjoyed working on the dissertation, including the formal experiments, the work I do now developing music software (and then using for my own composition and performance) is really a better match for who I am.

As discussed in an earlier post, I have had a sometimes challenging relationship with academic science. I have the technical and analytical “chops”, but I am too much of a creator and a romantic to find personal meaning and reward in rigorous experiments and analysis of data. I love the aesthetic appeal of science and mathematics, and especially look for unusal and serendipitous connections rather standard incremental results. Simply put, I am an artist, not a scientist, even when I'm working on software engineering projects.






The Logistic Function and its Discontents

This article explores the mathematical and more specifically the musical products of a very simple equation. In that exploration, we touch not only mathematics and music, but art, architecture, nature and philosophy; so those who are usually squeamish about mathematics are encouraged to read on.

Most readers who made it through high school algebra should be familiar with quadratic functions and the parabolas described by these functions on the x-y plane. For those who have forgotten, a parabola looks like this:

Parabolas are seen not only in high-school math classes, but often in nature as well. Among the most exquisite uses of parabolae can be found in the architecture of Antoni Gaudí. I had the priveledge of seeing many of his buildings and spaces in Barcelona, including this magnificent example of parabolic architecture:

But (as usual), I digress. For the remainder of this article, we will focus on a particular class of these functions, called logistic functions:

f(x) = ax(x-1)

Logistic functions have roots and 0 and 1, and describe a downward facing parabola (or “water-shedding parabola” in the parlance of my high-school pre-calculus teacher). The peak of this parabola depends on the value of a, and as we will soon see, this is the least of the interesting properties dependent on a.

Now, instead of simply graphing the function on an x-y plane, apply the output of the function back as the next input value in a process known as iteration:

xn+1 = axn(xn1)

This is a fancy way of saying “do the function over and over again.” What is interesting is that for different values of a, one will get different results. For low values (where a is less than one), repeated iterations get closer and closer to zero. If a is between 1 and 3, the it will end up at some value between zero and one. Above 3, things get more interesting. The first range bounces around between two values, as characterized below:

As a increases, eventually the results start bouncing among four values, and then eight, then sixteen, and so on. These “doubling periods” get closer and closer together (those interested in this part of the story are encouraged to look up the Feigenbaum constant). Beyond about 3.57 or so, things get a little crazy, and rather than settling into a period behavior around a few points, we obsserve what is best described as “chaotic behavior,” where the succession of points on the logistic function varies unpredictably.

It is not random in the same way that we usually think of (like rolling dice or using the random-number generators on our computers), but has rather intricate patterns within – those interested in learning more are encouraged to look up “chaos.” This chatoic behavior can be musically interesting, and I have used the chaotic range of the logistic function in compositions, such as the following except from my 2000 piece Spin Cycle/Control Freak.

One can more vividly observe the behavior I describe above as a graph called a bifurcation diagram. As the values is a increase (a is labelled as “r” in this graphic I shamelessly but legally ripped off from wikipedia), one can oberve vertically the period doubling where the logistic map converges on a single value, then bounces between two points, then four, then eight, and so on, until the onset of chaos at approximatley 3.57.

There are tons of books and online articles on chaos, the logistic function, and its bifurcation diagram. Thus, it’s probably best that interested readers simply google those phrases rather than suffer through more of my own writing on the topics. However, I do have more to say on my musical interpretations of these concepts.

Given my experience in additive synthesis and frequency-domain processing (if I have lost you, then skip to the musical excerpt at the end, it’s pretty cool), I of course viewed this map as a series of frequency spectra that grow more or less complex based on a. I implemented this idea in Open Sound World. using the logstic function and its bifurcation diagram to drive OSW’s additive synthesizer functions. The results were quite interesting, and have been used in several of my live performances. I use my graphics tablet to sweep through different values of a on the horizontal axis as in the bifurcation diagram:


Photo by Tiffany Worthington

The resulting sound is the synthesis of frequences based on the verticle slice through the diagram.

Click here to listen to an example.

In the periods of chaos, the sound is extremely complex and rich. Below 3.57 and in the observable “calm periods,” the sound is simpler, containing on a few components forming somethin akin to an inharmonic chord. In true chaotic fashion, small movements along the horizontal axis result in dramatic differences in the spectrum and the timbre. The leads to a certain “glitchy” quality in the sound – one can practice control over time to make smooth transitions and find interesting “islands of stability” within the timbral space.

I have used this simple but evocative computer instrument in several performances, including my 2006 Skronkathon performance as well as my work last year with the Electron SAlon series. I have really only scratched the surface the possibilities with this concept, and hope to have more examples int the future.

Fun with Emulator X: Bohlen 833 cents scale and harmonics

I have been experimenting lately with alternate tunings and scales. A couple that have particularly piqued my interest are the Bohlen-Pierce scale and the much-less-used Bohlen 833 cents scale. The latter is intriguing in that it is based on properties of the fibonacci sequence and the golden ratio (although Bohlen admits he did not have those concepts in mind when he stumbled upon this scale).

Based on the golden ratio (1.618034…), one can construct a harmonic series as multiples of 833 cents that has a very distinct timbre. This can be easily implemented in Emulator X as a series of sinewave voices (or voices of any other harmonic single-wave sample) tuned multiples of 833 cents above the fundamental:

The series above consists of a fundamental, three golden-ratio harmonics, followed by the octave above the fundamental (traditional first harmonic 2:1 ratio), and the three-golden-ratio sub-harmonics of the octave.

Using these and other harmonics, Bohlen was able to construct the following seven-step scale between the tonic and the tone 833 above.

Step
Ratio (dec.)
Ratio (cents)

Diff. to previous step (cents)
0
1.0000
0
1
1.0590
99.27
99.27
2
1.1459
235.77
136.50
3
1.2361
366.91
131.14
4
1.3090
466.18
99.27
5
1.4120
597.32
131.14
6
1.5279
733.82
136.50
7
1.6180
833.09
99.27

Emulator X does not have editable tuning tables, although it does have a 36ET tuning (36 divisions of the octave). Bohlen suggests that playing specific steps out of the 36ET scale yields a good appoximation of the 833 scale:

Step (just)
Cents (just)
Step (36/octave)
Cents (36/octave)
0
0
0
0
1
99.27
3
100.00
2
235.77
7
233.33
3
366.91
11
366.67
4
466.18
14
466.67
5
597.32
18
600.00
6
733.82
22
733.33
7
833.09
25
833.33

Combining the Bohlen 833 scale and harmonic series, which are both based on the golden ratio yields a new tonality. Although it is quite different from the traditional Western tonality based on integer ratios, it is nonetheless “harmonic” with respect to its own overtone series. This is perhaps a simple counter-example to to the Monk's Musical Musings from an earlier article.

But how does it sound? To that end, I provide the following audio example consisting of the scale played on the 833-timbre in Emulator X, along with some additional intervals. Because this is only an approximation using 36ET, things aren't perfectly “harmonic,” but I think one can get a feel for the tonality. I particularly like the “tri-tone” (600 cents above fundamental) here.

The next steps are to come up with a more musical timbre based on the harmonic series, as well as short composition using the scale…