SoundHack externals for Max7 (32/64 bit macOS) – ß1

I have completed porting 7 of 11 of my previous Max externals to the Max7 format as 32/64 bit universal macOS externals. This is beta software, so if any of you would like to try them, I would enjoy feedback (error messages, crash reports) if they don’t work on your machine.

If you would like externals for earlier versions of Max – please check the freeware section of

download – soundhackm7macbeta1

Pure Data patch for John Cage’s “Williams Mix”

Paper: The Computer Music Realization of John Cage’s Williams Mix

My current files for the performance version of John Cage’s “Williams Mix” can be downloaded here:
To run this patch, you will need the following PD externals:

– knob, within the flatgui distribution

– shuffle, within the motex distribution macos, windows and linux

– +binaural~, within the soundhack distribution (scroll down)

A sample sound file library is included here:
The sound file folder will need to be in the PD path. Once that is set, you can open wmmain.pd. It will seem to freeze, but it takes a while for PD to load 600 sounds into memory. If you do not have enough RAM in your computer, the piece may crash.

Screen Shot 2016-08-28 at 11.06.00 AM
To run the piece, click “Open” to open the score file, click the number corresponding to your speaker format (2, 2 binaural, 4, 6 or 8), and click play. The piece is 4:15 long. There is a button on the upper right which will “shuffle” the file choices for each subcategory. This should only be done when the score indicated the piece is “mobile”. This is my interpretation of Cage’s score as applied to this computer arrangement.

Using your own sounds
You will want to collect new sounds if you wish to create your own performance of the piece. You will want to consult Cage’s instructions for the sound collection (about 500 sounds in 6 categories are required). You will need to use 44.1k, monaural, 16 bit wave files to be compatible with this piece. Place them in folder which is in the PD search path.

Screen Shot 2016-08-28 at 11.08.28 AM
Edit wmfileopen.pd, creating a “wmtable bird2.wav” for a soundfile named bird2.wav. Repeat for each of your sound files. This may take some time!

Screen Shot 2016-08-28 at 11.10.29 AM
After this, you will need to modify the random sound selectors wmfileloadA.pd, wmfileloadB.pd, wmfileloadC.pd, wmfileloadD.pd, wmfileloadE.pd and wmfileloadF.pd. This means repopulating the selection tree for each of Cage’s 48 subcategories. The selection symbol will match the sound file name. Again, a time-consuming process.

It will take a lot of work and some PD expertise to use this computer realization of Williams Mix.

I am supplying this patch purely for educational and research purposes.

“Williams Mix” is 1/15 second too short….

I was just looking over the structure of “Williams Mix”. It is divided into 11 sections that repeat a rhythmic structure 5 6 16 3 11 5. In section 4, the 3 subsection is one inch short. I imagine when they were calculating tape start times for editing, they forget to carry the one. The 16 subsection is based on a 10.25 inch length, so is 164 inches. It starts at 1129.75 inches and ends 1293.75 inches. The 3 subsection is also based on a 10.25 tape length, so should be 30.75 inches. However, it ends at 1323.5 inches: 1323.5 – 1293.75 = 29.75. Earth shattering news?

So the piece shouldn’t be 4:15.8, but 4:15.866666…

noise study – structure

In James Tenney’s “Computer Music Experiences” article, he presents the following chart:

CME Fig 3.tifFrom this we can see 3 parameters, “note duration”, “intensity” and “bandwidth”. The subsequent values “mean pitch level” and “pitch range” are determined from the “bandwidth” profile. The charts that Tenney gives for “mean pitch levels” and “pitch range” don’t seem terribly useful at first glance (pitch level of “1” and pitch range of “5”?). However, looking at Matthew’s Music III paper, I see that pitch is specified in octaves, so that Middle C is 3.0. It looks very much like all of the 5 voices started with a mean of C1, C2, C3, C4 and C5. What isn’t completely clear is whether the center of the note varied, or if the bandwidth simply was controlled by the noise intensity alone. The intensity is certainly using the Music III CVT01 function, which used decibels. CVT01 = 10^P3/20.0, which means the amplitudes vary from 1.0 (0) to 501 (54).

In the instrument, there is a noise frequency and amplitude input, each of which can vary or remain constant. There is also the oscillator frequency input, which can also vary (by linear change) or remain constant. Tenney mentions that “for center frequency, the toss of a coin was used to determine whether the initial and final values for a given note were to be the same or different”. From listening to the piece, it seems that the other parameters (noise frequency and amplitude) were generated in a similar fashion.


Williams Mix

My current project is creating a new performance version of Williams Mix. I have received the score from the John Cage Trust and am measuring and noting all of the tape edits from the original 192 page score. This detailed information will be used to create a computer music program or patch with which I can perform the piece. I do not think anyone has taken this approach yet.

Soon I will be putting out a call for sound file  contributions to this version. I will try to cast my net wide, as Cage’s original note calls for “all acoustic phenomena”. However, if I miss you and you would like to contribute to this project, please get in touch.


Some notes on For Ann (rising)

James Tenney composed For Ann (rising) in 1969 and made several realizations with tape and signal generators. In 1991 I was asked to engineer a compilation of his early computer and electronic music, “Selected Works 1961-1969″. Instead of using one of the tape versions of For Ann (rising), we decided to realize it digitally in Csound. Jim described the piece to me over the phone. The piece consists of 240 sine wave sweeps, each of which lasts 33.6 seconds long and rises 8 octaves (4.2 seconds per octave). Each sweep has a trapezoidal amplitude envelope which rises from 0.0 to 1.0 gain in the first two octaves, stays at 1.0 for the 4 mid octaves, and drops from 1.0 to 0.0 for the top two octaves of each sweep. A new sweep starts every 2.8 seconds. The Csound orchestra and score was simply:

instr 1
kf expon 40, 33.6, 10240
ka linseg 0, 8.4, 2000, 16.8, 2000, 8.4, 0
a1 oscil ka, kf, 1
out a1
f1 0 16385 10 1
i1 0 42
i1 2.8 42
i1 5.6 42
and so on.....

The tuning difference between each successive sweep is a 12tet minor 6th. I have recently put together a new realization of For Ann (rising) in Pure Data. I am using metro, delay and vline to generate the sweeps in this version, as these objects (unlike many objects in PD) are sample accurate, and should give consistent tuning accuracy. Also for this realization, I have added the capability to perform the piece with the original 12tet minor 6th, a just 1.6 ratio, and a golden mean (phi) ratio between successive sweeps.

The PD patch is available here, for those who want to hear the piece.