I was interviewed by Darwin Grosse for the Art + Music + Technology podcast. Listen to me ramble for 40-ish minutes while weirdly pacing around an abandoned basketball court in the summer heat. Check out the other interviews there too.

Here’s a patch I made that performs frequency domain filtering. It’s a time varying filter with random modulation of the position, number and spacing of multiple peaks. The patch works in both Purr Data and Pure Data Vanilla (at least in Windows). The patch seems to immediately crash Vanilla on macOS, but it works fine in Purr Data. I don’t know if I can fix this. You can ignore any “expr divide by zero detected” messages.

Here’s the original recording where I used this:

Here are some of the Renoise files I used for Panchromatic Window, plus two from Dissolving Sponge Reveals Wooden Duck, and some others that I haven’t recorded or released yet.

Typically I’d come up with the chord progression first, using whatever home keyboard I intended to use for the final recording, then roughly transcribe it (not necessarily completely or exactly) to Renoise using samples from SNES games and miscellaneous drum machines in order to work out the melodic parts. I’d then use recordings of the Renoise files as guide tracks to do the overdubs on the final recording. These demos aren’t especially polished, having mostly sparse arrangements, boring placeholder drum patterns and no effects or automation, but you can hear what I was trying to do without all the sloppy playing. Some of them have muted tracks and unused patterns containing early drafts of parts that I didn’t use in the final versions.

I generally like to use unusual chord voicings, slash chords, etc., but arranger keyboards often can’t handle that, so I’d decide in advance to use only seventh or ninth chords or whatever, and then write the whole thing using major and minor variants of those (I don’t often use dominant or diminished chords since I think tritones sound too dissonant in 12 equal). Within these limits, I’d generally aim to make it about as harmonically weird as I could manage without it being completely incomprehensible. In several cases I’d make a sort of game of it, where I’d use all 24 major and minor chords.


I dumped the waveform ROMs from the Yamaha RX5 WRC02, WRC03 and WRC04 cartridges. These each contain 2 128Ki x 8 mask ROMs in 28 pin packages, rather than the typical 32 pin 27C010 EPROM pinout, so I used an adapter to dump them. The cartridge PCBs will apparently also accept 32 pin EPROMs, although unfortunately there’s not enough room in the cartridge housing to install sockets. The RX5’s factory cartridge, sometimes called WRC01, has already been dumped and is available elsewhere. Other than the very rare third party Metra Sound Collection 1 and Collection 2 cartridges, which I don’t own, there are now ROM dumps available for all the RX5 cartridges. Renaming the files *.rx5bank will enable them to be loaded into the Pharmasonic Gligli’s RX5USB cartridge. The Pharmasonic cartridge can load four 128Ki x 8 banks and use two simultaneously, so you can use either a single complete cartridge or two parts of different cartridges.

The waveform data is heavily compressed, and the samples are stored as either 8 bit linear PCM or 12 bit linear PCM with 2 12 bit words packed into 3 bytes. The sample rate is 25 kHz for all sounds. Unlike most drum machines, all the samples are looped. The RX5’s two internal waveform ROMs are also 128Ki x 8 (I haven’t dumped these yet), so using a cartridge expands the total waveform memory from 256Ki x 8 to 512Ki x 8.

The RX5 allows the sounds to be copied to 12 copy locations, but these store only the waveform start, end and loop points and identify the 8 or 12 bit data format. If the cartridge is changed, the copied sounds aren’t initialized, so you can intentionally play the waveform data from another cartridge incorrectly, resulting in strange glitch sounds. Some of the sounds end up being distorted because they’re read out with the wrong format.


The RX5 sample playback engine is based on the YM3907 ADG and YM3908 WDP ICs. These ICs were only used in the RX5 and PTX8. Together with the YM2415 OPAW IC used in the HX-1 and HX-3 organs and CLP50 digital piano, this was the first incarnation of Yamaha’s AWM sample playback engine. AWM has a very interesting design and an remarkably dirty sound, but no aliasing. The later RX7 uses the YM2409 GEW1 IC. The sample playback engine and sound are basically the same as the RX5 and PTX8, but its capabilities are different (16 note polyphony without fixed assignment of sounds to monophonic channels, larger waveform ROM, panning, LFOs, pseudo-delay effects, simpler envelopes, no mixer, only stereo outputs). The most flexible AWM model is the TX16w, which uses the GEW1 IC with two YM2412 ADF digital filter ICs.

WRC02 Jazz & Fusion ROM dump
Sounds in WRC02 ROM A:
J.BD 1
J.BD 2
F.BD 1
F.BD 2
J.SD 1
J.SD 2
Pcl SD
Gtr D
Gtr U

Sounds in WRC02 ROM B:

WRC03 Heavy Metal ROM dump
Sounds in WRC03 ROM A:
H.BD 1
H.BD 2
H.BD 3
H.SD 1
H.SD 2
H.SD 3
H.SD 4

Sounds in WRC03 ROM B:
Gtr S

WRC04 Effect ROM dump
Sounds in WRC04 ROM A:
P.BD 1
P.BD 2
P.BD 3
P.SD 1
P.SD 2
P.SD 3
P.SD 4
P.SD 5
P.SD 6
FM Tom

Sounds in WRC04 ROM B:

Sounds in RX5 ROM/WRC01 factory cartridge ROM A:
SD 3
BD 3

Sounds in RX5 ROM/WRC01 factory cartridge ROM B:

Other than the factory cartridge, I always found WRC02 to be the most useful, especially since it has different hi-hat samples. I often used the various cartridges and copy glitch sounds (with extensive editing) in my early music.

I dumped the EPROMs for the Wersi MK-1/EX20 cartridges that I have (ROM 1, ROM 2, ROM 6). These all contain 27128 16Ki x 8 EPROMs. Two of them were socketed, but the clearance inside the cartridge was very tight. Wersi used low profile sockets and trimmed the pins of the EPROMs so that they would fit. I added a socket to the third one, but it was difficult to reassemble. If you have a cartridge, you should be able to burn new EPROMs and swap them out.

The most notable sound here is the CHOIR patch from ROM 1. There are 5 different formant waveforms that cycle between different vowels (a, ɛ, i, o, u) with each keypress. You can edit the sound and reprogram each of the waveforms (the formant effect is lost but the cycling remains; I used that effect here). But saving the sound to a user preset loses the cycling effect.

ROM 1 dump
ROM 1 sounds:

ROM 2 dump
ROM 2 sounds:
SYN 10
SYN 11
SYN 12
SYN 13
SYN 14
SYN 15
SYN 16
SYN 17
SYN 18
SYN 19
SYN 20
SYN 21

ROM 6 dump
ROM 6 sounds:

I sampled the drum sounds from the V50, and also dumped the waveform ROM. Like most of Yamaha’s sampled drums from that era (circa 1983-1989), the sound set is basically similar to the RX series drum machines. All sounds were recorded in stereo at 96 kHz with the default volume and pan settings.

YM3602 OPRW (1986): This drum IC was used only in the Electone HX models and the V50. It’s not especially flexible, but the sound quality is fairly good. Its advantage over the much more widely used YM2154 RYP4 is that it can use a larger waveform ROM, it uses a simpler serial interface, and its output can be digitally processed and mixed by other ICs. However, the output is stereo only and can’t be demultiplexed into individual channels. This also means that reverb or other effects can only be applied to all sounds globally.

The OPRW IC has 40 pins. The clock is 3.2 MHz, and the sample rate is 25 kHz, with the output being upsampled to 50 kHz using truncation. It’s 8 note polyphonic, with certain sounds assigned to monophonic groups that cut each other off. Unlike other ICs like the RYP4, most of the sounds can be played in any combination. It can address an external waveform ROM up to 512Ki x 8, which at the time was fairly large. The V50 and HX-1 each use a 512Ki x 8 ROM, and the HX-3 and HX-5 use 128Ki x 8. The HX series has mainly acoustic drum sounds, and the V50 uses a different ROM with some of the synthetic sounds from the RX5/RX7 sound set. The IC can apparently play up to 128 drum sounds, although in practice only 63 sounds are used at most (61 drum sounds in the V50, plus sine and square wave tones accessible via the test mode). There are 8 velocity levels, 16 volume levels and 7 pan positions (the volume and pan settings can be programmed for each sound). The IC can play looped waveforms (this is used for the sine and square wave tones only; none of the other sounds are looped), but it can’t transpose or reverse sounds. The sounds are enveloped, but I think this is controlled by the ROM, so there’s no way to change the decay time. Other than the sine and square tones, all sounds have a fixed duration with no dependence on gate time. There’s a single serial output that carries 2 channels. The output format is linear PCM up to 22 bits, but here the dynamic range seems to be limited to 17 bits at most (the YM3017, YM3028 and YM3032 DACs will clip everything above that). Yamaha used this format in most of their products at the time; usually the sync signal is labeled 31-62Y64 (this doesn’t identify the serial format; it just describes the timing of the sync signal). There’s also a serial input that can be used for daisy chaining other tone generator ICs. The serial input is added to the OPRW’s drum sounds and fed to the output. The IC is controlled entirely by Yamaha’s serial data bus, which was used by many different ICs at the time. The use of serial input, output and control signals allows the pin count to be fairly low, despite using many pins for the external ROM.

The ROM contains both waveform and header data. The waveform data is encoded in an unusual way. The first part of the sample is linear 8 bit PCM, but partway through the decay it switches to DPCM. The DPCM portion is scaled up in the ROM to increase the dynamic range. The switchover is controlled by the header data, and occurs after the peak of the derivative has dropped below what can be represented by the rescaled DPCM format. For sample playback, the linear portion of the waveform data is directly loaded into the most significant 8 bits of a 10 bit accumulator. After the switchover, the DPCM portion of the waveform is shifted right by 2 bits (multiplied by 0.25) and added to the current value of the accumulator for each sample. Not all samples are stored this way; some are entirely linear PCM. The resulting sound is then enveloped, but the original waveform data isn’t heavily compressed as it is in many other drum machines. This form of data compression seems to be quite effective. The transition from linear PCM to DPCM isn’t audible, and overall the sound is surprisingly clean, despite storing only 8 bit data.

There doesn’t seem to be much potential for modification or extension of the IC’s capabilities. Attempting to circuit bend the ROM would probably result in a mess, including DC offsets, since the ROM contains the header data used to address the desired portion of the waveform data, and to control the transition from linear PCM to DPCM. It would be possible replace the sounds, and a new ROM could be piggybacked on top of the old one without removing it, using a switch connected to the chip enable pins to select between the old ROM and the new one. But due to the relative complexity of the modification and the limited number of V50 and HX Electone users, this is likely not worth the effort. It’s not possible to get more outputs, and the pitch of the sounds can’t be modified by changing the master clock frequency, since the serial output data has to be synchronized with the other tone generator, mixing, effect and converter ICs.

Recorded mostly with multitracked home keyboards, 2015-2019.

Streaming link

The Casio Cosmo Synthesizer was a prototype computer-based workstation instrument conceived along the lines of the NED Synclavier and Fairlight CMI. It was most notably used by Isao Tomita on Dawn Chorus, where he used the waveform drawing feature to sonify astronomical radio signals. The complete system consisted of a computer (Casio FP-6000S with monitor, keyboard, mouse, graphics tablet and an expansion unit containing special interface cards to connect to the other hardware), controller keyboard (Casiotone 6000, which is velocity and pressure sensitive), MIDI interface, 2 SPU units (sample playback) and 6 PDU units (phase distortion; these are apparently roughly equivalent to the CZ-101 or CZ-1000, but with no control panel). Everything was controlled via MIDI, but the SPU units also connected directly to the computer for waveform editing. The PDU modules likely use the same µPD933 ICs as the CZ series, but possibly with 16 bit linear DACs rather than the CZ’s lower quality floating point DACs. The CZ-101 and CZ-1000 were introduced a few months after the Cosmo Synthesizer, but the SPU remained in development for two more years as the ZZ-1. It was apparently completed and ready for production, but was canceled because it seemed to not be commercially viable. Only very vague specifications were released, and of course no service manuals are available, but both the SPU and ZZ-1 are described in greater detail in several patents.

The MIDI interface, SPU, PDU and ZZ-1 are shown in this video:

The original brochure is available here.

SPU front panelCasio SPU panel

SPU tone generator block diagram

Casio SPU

The SPU is described in US patents 4681008, 4970935 and 5160798 (these are nearly identical), with a more detailed description of the hardware given in patent 4667556. It’s a 4 note polyphonic sampler with VCAs for amplitude scaling and no filters. It performs 12 bit linear sampling at 40 kHz and has 128 Ki x 12 of sample memory for about 3.28 seconds of sample time. This can be divided into up to 8 samples of arbitrary length, which are assigned to different keyboard zones and velocity levels, each with its own set of voice parameters. ADSR amplitude envelopes are generated in software. The SPU has 4 output jacks for each of the 4 voices, plus a mono mix output. At heart, the SPU appears to be a very basic sampler, although it’s velocity sensitive and introduces some advanced features, like triggered sampling with pre-recording, velocity switching of multisamples and automatic selection of loop points at zero crossings. Its biggest asset is that the waveform memory can be read and written by the host computer via a dedicated bus. This enables software-based waveform editing, synthesis and drawing using a mouse or graphics tablet. Another very unique feature is that each of the voice channels can independently be used to either read from or write to the waveform memory. This means that it’s simultaneously capable of sampling and polyphonic sample playback. In the SPU, this is only used to monitor the sound as it’s being sampled. In the ZZ-1, however, this feature is further exploited to obtain modulation delay and resampling effects. Other details are less clear, but it appears to use time mutiplexed phase accumulators with linear interpolation (17 integer bits and 13 fractional bits). This makes the SPU the first sampler to use linear interpolation (although there were synthesizers that did this going back to the Allen Digital Computer Organ in 1971). It’s also vaguely implied that the playback sample rate might be 160 kHz (since the phase increment when recording samples is 0.25).

Linear interpolation

Casio SPU interpolation

Japanese patent JPH06110466 describes the SPU’s editor software that ran on the FP-6000S computer. There was also software for editing the PDU’s sounds, a 16 track real time sequencer and a separate step sequencer that displayed notes on a staff. There are some screenshots of the sequencer software here.

Sound loading screen

Casio cosmo UI 1

Editing the waveform using the mouse

Casio cosmo UI 2

Setting sample start, end and loop points

Casio cosmo UI 3

Sound parameter edit screen

Casio cosmo UI 4

ZZ-1 front panel

Casio ZZ-1 panel

ZZ-1 tone generator block diagram

Casio ZZ-1

The ZZ-1 was intended to be the commercial version of the SPU. Yukihiro Takahashi (ex-Yellow Magic Orchestra) and Hajime Tachibana (ex-Plastics) served as design consultants. Takahashi may have recorded the drum sounds for the RZ-1 (which were later reused as lower quality samples in the MSM6294 ICs), and I think Tachibana, who also worked as a graphic designer, designed the front panels for the ZZ-1 and some of the CZ models (so you can think of him as you struggle to clean the dust out of the crevices of your CZ-5000). The ZZ-1 is mostly similar to the SPU, retaining the computer interface. This seemed to be modified for use with computers other than the FP-6000S, although I don’t know what platforms Casio intended to support. The sample memory is still 128 Ki x 12, but the samples can now be recorded at 5, 10, 20 or 40 kHz. It also adds polyphonic voltage controlled filters and the ability to use its simultaneous sampling and playback capability as either a 3 tap modulation delay (described in patents 4864625 and 5050216, which are nearly identical) or for 3 note polyphonic resampling, sample mixing and overdubbing (described in patents 4754680, 5025700 and 5136912, which are nearly identical). The channel used to write to the waveform memory can also pass the input signal directly to the DAC, so that the dry signal can be present in the output without requiring an additional analog signal path. The ZZ-1 has two types of feedback, one from a single delay tap (between the VCF and VCA) and a second that feeds the mix out (the sum of all delay taps) back to the input. It’s described as offering delay, reverb and chorus effects, but I expect the reverb would be very poor, really just a multitap delay with one tap used for feedback. The delay effects should be approximately comparable to the Korg SDD-3300. It should also hypothetically be possible to implement pitch shifting, though this isn’t mentioned in the patents. It must be noted that the ZZ-1 can function either as a sampler or a delay, but not both at the same time. The ZZ-1 also has 8 outputs on the rear panel. While this might seem to imply 8 note polyphony (i.e. adding a second tone generator that shares the same sample memory), I think it’s more likely that it’s still 4 note polyphonic, and the 8 outputs are for the 8 different samples (this would be useful as a drum sampler). This would mean that the ZZ-1 also adds some signal routing circuits.

Modulation delay example for a chorus effect

Casio ZZ-1 delay modulation

It seems that by the time the ZZ-1 was ready for production in 1986, it wasn’t really a competitive product. Compared to the competition, it was overpriced and underpowered. Even with the unique and fairly powerful delay functionality and resampling/overdubbing capabilities, a sampler with only 4 note polyphony and 128 KiWords of sample memory was unimpressive. Likely these restrictions were fixed into the designs of custom ICs and thus could not be easily improved. At the same time, the exchange rate was rapidly becoming less favorable for Japanese companies. The estimated price of the ZZ-1 was ¥ 1,000,000. In early 1985 this would have been about 4000 USD; by mid 1986 it was about $6400. For comparison, the Sequential Circuits Prophet 2000 came out in 1985 and cost about $2500, and the Emu Emax was introduced in 1986 starting at $2995. Both of these were considerably more capable samplers than the ZZ-1. The ZZ-1 seemed to get an unenthusiastic reception from prospective distributors, so its release was canceled. The FZ-1 was quickly developed as a more professional sampler, apparently by some of the same team that designed the SPU and ZZ-1. It was released in 1987 for ¥ 298,000.

Other than the SPU, the ZZ-1 doesn’t seem to be related to any other Casio product. It’s likely that it was based on one or more custom ICs that were never produced in quantity. It did, however, influence Casio’s later designs. The FZ and SK models do have a few things in common with the ZZ-1, and the linear interpolation and high playback sample rate were used in many subsequent Casio products. It’s also possible that the VCFs used in the ZZ-1 may have been the NJM2090 ICs used in the HT and HZ models.

Get the PD patch here. It’s simplified and permits manual control. It runs in PD Vanilla. The full album is here.

Here are 8 sawtooth oscillators gliding up and down in pitch in equal intervals. They start at unison and end in octaves, a tritone from the starting pitch. In between are a surprising number of audible consonances, even though the overall sound is generally very dissonant. To avoid extremes in pitch, each oscillator is actually a Shepard-Risset glissando that returns to the same pitch every two octaves.

The most frequently used model of consonance is harmonic concordance. For a simultaneity of multiple tones, consonance is heard when partials from one tone coincide with partials from another. For tones consisting of a harmonic series, this happens at integer ratios. For inharmonic tones, consonances occur at different intervals where the inharmonic partials coincide.

In the video you can see only a very small number of harmonics, but the effect is illustrated rather clearly. Consonances are audible when lines intersect and overlap. This isn’t the only way to represent it on a spectrogram. There’s a lot to explore by viewing it at different scales. It probably looks more interesting when zoomed out, but I think the video corresponds most closely to what’s actually audible.

Here the consonances occur both at small integer ratios, and because the same inteveral is stacked 8 times, also at roots of those ratios, up to the seventh root. The greatest consonances occur when fundamental frequencies (and consequently all harmonics) coincide at equal divisions of the octave, up to 7 EDO. At 8 EDO intervals (odd multiples of 150 cents), all tones are equally spaced and none overlap. In general, partials audibly coincide about every 2 cents.

Here’s a list of audibly consonant intervals. The columns represent the time where the interval occurs, the interval size in cents and the equivalent ratio. This isn’t a complete list; it includes only the relatively simple intervals. I made it by stepping through all possible intervals 0.1 cents at a time and noting the consonances. Then I found the ratios using an octave script. The output is edited somewhat.

00:00 0000.000 unison
00:25 0025.106 sixth root of 12/11
00:32 0032.075 fourth root of 14/13
00:32 0032.093 sixth root of 19/17
00:32 0032.985 cube root of 18/17
00:33 0033.001 fifth root of 11/10
00:33 0033.025 seventh root of 8/7
00:33 0033.985 sixth root of 9/8
00:36 0036.481 fifth root of 10/9
00:38 0038.512 fifth root of 19/17
00:38 0038.529 sixth root of 8/7
00:41 0041.251 fourth root of 11/10
00:42 0042.766 cube root of 14/13
00:44 0044.400 square root of 20/19
00:44 0044.478 sixth root of 7/6
00:45 0045.092 seventh root of 6/5
00:46 0046.191 cube root of 13/12
00:46 0046.235 fifth root of 8/7
00:50 0050.212 cube root of 12/11
00:52 0052.607 sixth root of 6/5
00:53 0053.374 fifth root of 7/6
00:55 0055.001 cube root of 11/10
00:55 0055.866 square root of 16/15
00:57 0057.756 cube root of 21/19
00:57 0057.777 seventh root of 24/19
00:57 0057.794 fourth root of 8/7
00:57 0057.842 fifth root of 13/11
01:00 0060.801 cube root of 10/9
01:03 0063.128 fifth root of 6/5
01:04 0064.386 sixth root of 5/4
01:06 0066.718 fourth root of 7/6
01:07 0067.970 cube root of 9/8
01:09 0069.286 square root of 13/12
01:11 0071.090 eighth root of 25/18
01:12 0072.514 sixth root of 9/7
01:15 0075.319 square root of 12/11
01:17 0077.058 cube root of 8/7
01:17 0077.186 eighth root of 10/7
01:18 0078.910 fourth root of 6/5
01:22 0082.502 square root of 11/10
01:23 0083.007 sixth root of 4/3
01:24 0084.467 21/20
01:24 0084.602 cube root of 22/19
01:26 0086.852 fourth root of 11/9
01:28 0088.801 20/19
01:28 0088.957 cube root of 7/6
01:29 0089.868 fourth root of 16/13
01:31 0091.202 square root of 10/9
01:33 0093.603 19/18
01:36 0096.578 fourth root of 5/4
01:39 0099.609 fifth root of 4/3
01:41 0101.955 square root of 9/8
01:45 0105.214 cube root of 6/5
01:48 0108.771 fourth root of 9/7
01:50 0110.254 cube root of 23/19
01:51 0111.591 fourth root of 22/17
01:51 0111.731 16/15
01:52 0112.043 cube root of 17/14
01:55 0115.587 square root of 8/7
01:56 0116.107 fourth root of 17/13
01:56 0116.993 sixth root of 3/2
02:04 0124.511 fourth root of 4/3
02:08 0128.697 eighth root of 29/16
02:13 0133.435 square root of 7/6
02:15 0135.614 sixth root of 8/5
02:18 0138.376 sixth root of 21/13
02:18 0138.404 seventh root of 7/4
02:18 0138.573 13/12
02:20 0140.391 fifth root of 3/2
02:27 0147.393 sixth root of 5/3
02:30 0150.000 one step in 8 EDO (all tones are equally spaced)
02:30 0150.637 12/11
02:30 0150.727 fifth root of 17/11
02:34 0154.372 fourth root of 10/7
02:37 0157.821 square root of 6/5
02:46 0166.015 cube root of 4/3
02:51 0171.429 one step in 7 EDO
02:55 0175.489 fourth root of 3/2
02:56 0176.872 fifth root of 5/3
02:56 0176.905 sixth root of 24/13
02:59 0179.736 square root of 16/13
03:02 0182.404 10/9
03:03 0183.728 fifth root of 17/10
03:06 0186.626 fifth root of 12/7
03:13 0193.157 square root of 5/4
03:15 0195.623 fourth root of 11/7
03:19 0199.218 fifth root of 16/9
03:20 0200.000 one step in 6 EDO
03:23 0203.422 fourth root of 8/5
03:23 0203.910 9/8
03:25 0205.829 cube root of 10/7
03:26 0206.999 fifth root of 20/11
03:28 0208.754 square root of 14/11
03:29 0209.873 fifth root of 11/6
03:32 0212.182 square root of 23/18
03:32 0212.206 cube root of 13/9
03:36 0216.687 17/15
03:37 0217.493 sixth root of 17/8
03:37 0217.542 square root of 9/7
03:41 0221.090 fourth root of 5/3
03:43 0223.095 sixth root of 13/6
03:43 0223.181 square root of 22/17
03:47 0227.107 square root of 13/10
03:51 0231.174 8/7
03:53 0233.985 cube root of 3/2
04:00 0240.000 one step in 5 EDO
04:02 0242.206 fourth root of 7/4
04:09 0249.022 square root of 4/3
04:10 0250.188 seventh root of 11/4
04:12 0252.607 sixth root of 12/5
04:13 0253.805 22/19
04:14 0254.972 cube root of 14/9
04:18 0258.688 seventh root of 37/13
04:18 0258.721 fifth root of 19/9
04:24 0264.344 square root of 19/14
04:24 0264.386 sixth root of 5/2
04:26 0266.871 7/6
04:28 0268.475 square root of 15/11
04:31 0271.229 cube root of 8/5
04:31 0271.708 seventh root of 3/1
04:33 0273.001 fifth root of 11/5
04:35 0275.659 square root of 11/8
04:35 0275.702 sixth root of 13/5
04:40 0280.176 cube root of 13/8
04:40 0280.782 fifth root of 9/4
04:43 0283.007 sixth root of 8/3
04:43 0283.025 fourth root of 25/13
04:44 0284.197 cube root of 18/11
04:49 0289.210 13/11
04:51 0291.256 square root of 7/5
04:54 0294.786 cube root of 5/3
05:00 0300.000 one step in 4 EDO
05:00 0300.004 seventh root of 37/11
05:01 0301.500 square root of 17/12
05:08 0308.744 square root of 10/7
05:11 0311.043 cube root of 12/7
05:15 0315.641 6/5
05:18 0318.309 square root of 13/9
05:22 0322.942 cube root of 7/4
05:24 0324.341 square root of 16/11
05:27 0327.017 fifth root of 18/7
05:32 0332.030 cube root of 16/9
05:32 0332.075 fourth root of 28/13
05:36 0336.130 17/14
05:39 0339.609 fifth root of 8/3
05:42 0342.857 two steps in 7 EDOs
05:44 0344.999 cube root of 20/11
05:45 0345.601 fourth root of 20/9
05:47 0347.390 fifth root of 30/11
05:47 0347.393 sixth root of 10/3
05:47 0347.408 11/9
05:50 0350.978 square root of 3/2
05:56 0356.502 fifth root of 14/5
05:57 0357.794 fourth root of 16/7
05:59 0359.472 16/13
06:03 0363.498 fifth root of 20/7
06:06 0366.718 fourth root of 7/3
06:07 0367.300 sixth root of 25/7
06:10 0370.400 cube root of 19/10
06:12 0372.893 square root of 20/13
06:16 0376.819 square root of 17/11
06:18 0378.910 fourth root of 12/5
06:20 0380.391 fifth root of 3/1
06:20 0380.436 cube root of 29/15
06:22 0382.458 square root of 14/9
06:26 0386.314 5/4
06:31 0391.246 square root of 11/7
06:36 0396.578 fourth root of 5/2
06:40 0400.000 one step in 3 EDO
06:44 0404.377 fourth root of 28/11
06:44 0404.442 24/19
06:46 0406.843 square root of 8/5
06:54 0414.006 seventh root of 16/3
06:57 0417.493 sixth root of 17/4
06:57 0417.508 14/11
06:57 0417.695 fourth root of 21/8
07:00 0420.264 square root of 13/8
07:04 0424.364 23/18
07:04 0424.511 fourth root of 8/3
07:13 0433.803 seventh root of 52/9
07:14 0434.985 cube root of 17/8
07:15 0435.084 9/7
07:22 0442.179 square root of 5/3
07:26 0446.191 cube root of 13/6
07:26 0446.363 22/17
07:26 0446.999 fifth root of 40/11
07:30 0450.000 three steps in 8 EDO
07:30 0450.212 cube root of 24/11
07:32 0452.607 sixth root of 24/5
07:34 0454.214 13/10
07:37 0457.901 sixth root of 44/9
07:39 0459.098 seventh root of 32/5
07:40 0460.801 cube root of 20/9
07:40 0460.816 fourth root of 29/10
07:44 0464.428 17/13
07:46 0466.565 square root of 12/7
07:47 0467.970 cube root of 9/4
07:50 0470.781 21/16
07:53 0473.098 square root of 19/11
07:55 0475.489 fourth root of 3/1
08:00 0480.000 two steps in 5 EDO
08:03 0483.007 sixth root of 16/3
08:04 0484.413 square root of 7/4
08:18 0498.045 4/3
08:25 0505.214 cube root of 12/5
08:33 0513.001 fifth root of 22/5
08:34 0514.286 three steps in 7 EDO
08:35 0515.803 cube root of 22/9
08:39 0519.824 cube root of 32/13
08:41 0521.090 fourth root of 10/3
08:44 0524.681 square root of 11/6
08:48 0528.687 19/14
08:48 0528.771 cube root of 5/2
08:50 0530.714 square root of 24/13
08:53 0533.282 fourth root of 24/7
09:00 0540.279 square root of 28/15
09:02 0542.206 fourth root of 7/2
09:03 0543.015 26/19
09:04 0544.134 square root of 15/8
09:05 0545.028 cube root of 18/7
09:11 0551.318 11/8
09:11 0551.405 cube root of 13/5
09:14 0554.399 fourth root of 18/5
09:19 0559.420 cube root of 29/11
09:23 0563.382 18/13
09:26 0566.015 cube root of 8/3
09:26 0566.050 square root of 25/13
09:29 0569.599 sixth root of 36/5
09:39 0579.609 fifth root of 16/3
09:42 0582.512 7/5
09:47 0587.794 cube root of 36/13
09:47 0587.807 fourth root of 35/9
09:54 0594.171 cube root of 14/5
10:00 0600.000 one step in 2 EDO
10:05 0605.829 cube root of 20/7
10:12 0612.206 cube root of 26/9
10:17 0617.488 10/7
10:30 0630.376 square root of 29/14
10:33 0633.985 cube root of 3/1
10:36 0636.498 fifth root of 44/7
10:36 0636.618 13/9
10:38 0638.478 square root of 23/11
10:45 0645.601 fourth root of 40/9
10:48 0648.682 16/11
10:55 0655.866 square root of 32/15
10:56 0656.985 19/13
10:57 0657.794 fourth root of 32/7
10:59 0659.721 square root of 15/7
11:09 0669.286 square root of 13/6
11:15 0675.222 cube root of 29/9
11:15 0675.319 square root of 24/11
11:18 0678.910 fourth root of 24/5
11:20 0680.176 cube root of 13/4
11:24 0684.197 cube root of 36/11
11:25 0685.714 four steps in 7 EDO
11:34 0694.786 cube root of 10/3
11:41 0701.955 3/2
11:55 0715.587 square root of 16/7
12:00 0720.000 three steps in 5 EDO
12:04 0724.511 fourth root of 16/3
12:13 0733.435 square root of 7/3
12:15 0735.572 26/17
12:19 0739.199 cube root of 18/5
12:20 0740.006 23/15
12:29 0749.788 cube root of 11/3
12:30 0750.000 five steps in 8 EDO
12:33 0753.001 fifth root of 44/5
12:33 0753.637 17/11
12:37 0757.821 square root of 12/5
12:44 0764.916 14/9
12:59 0779.736 square root of 32/13
13:02 0782.492 11/7
13:13 0793.157 square root of 5/2
13:15 0795.558 19/12
13:20 0800.000 two steps in 3 EDO
13:23 0803.400 seventh root of 103/4
13:33 0813.686 8/5
13:47 0827.107 square root of 13/5
13:50 0830.253 21/13
13:56 0836.502 fifth root of 56/5
14:00 0840.528 13/8
14:02 0842.206 fourth root of 7/1
14:09 0849.022 square root of 8/3
14:12 0852.592 18/11
14:14 0854.399 fourth root of 36/5
14:15 0855.001 cube root of 22/5
14:17 0857.143 five steps in 7 EDO
14:23 0863.870 28/17
14:35 0875.659 square root of 11/4
14:41 0881.691 square root of 36/13
14:44 0884.359 5/3
14:51 0891.256 square root of 14/5
14:56 0896.859 square root of 31/11
15:00 0900.000 three steps in 4 EDO
15:05 0905.214 cube root of 24/5
15:10 0910.790 22/13
15:15 0915.803 cube root of 44/9
15:24 0924.341 square root of 32/11
15:33 0933.129 12/7
15:46 0946.195 19/11
15:50 0950.978 square root of 3/1
15:57 0957.794 fourth root of 64/7
16:00 0960.000 four steps in 5 EDO
16:06 0966.015 cube root of 16/3
16:08 0968.826 7/4
16:27 0987.747 23/13
16:33 0993.001 fifth root of 88/5
16:36 0996.090 16/9
16:40 1000.000 five steps in 6 EDO
16:57 1017.596 9/5
17:00 1020.264 square root of 13/4
17:08 1028.571 six steps in 7 EDO
17:22 1042.179 square root of 10/3
17:29 1049.363 11/6
17:30 1050.000 seven steps in 8 EDO (all tones are equally spaced)
17:30 1050.013 square root of 37/11
17:41 1061.427 24/13
17:46 1066.565 square root of 24/7
18:04 1084.413 square root of 7/2
18:08 1088.269 15/8
18:28 1108.798 square root of 18/5
18:37 1117.498 square root of 40/11
18:44 1124.681 square root of 11/3
18:52 1132.100 25/13
18:59 1139.199 cube root of 36/5
19:04 1144.134 square root of 15/4
19:05 1145.036 31/16
20:00 1199.700 octave (slightly detuned)

One thing worth noting here is that many intervals are almost exactly equal divisions of other intervals. For example, the 11/9 neutral third (347.408 cents) is close to two equal divisions of 3/2 (350.978 cents), three equal divisions of 20/11 (344.999 cents), four equal divisions of 20/9 (345.601 cents), five equal divisions of 30/11 (347.390 cents) and six equal divisions of 10/3 (347.393 cents). This implies that interesting chords can be constructed by stacking these intervals.

Made in Pure Data, 2018.

Spotify link