Since this chord is… well, remarkably tense, I tried a method of applying what I learned from *Tuning, Timbre, Spectrum, Scale* by William Sethares. In that book he talks about the sonic perception of dissonance has to do with frequencies playing at the same time that have a beat frequency between around 10hz and 40 or 50hz; frequencies closer than that to each other will sound like a unison with a rhythmic beating, and frequencies farther than that will sound either unrelated and consonant or like harmonics of each other.

This chord is so dissonant because nearly every harmonic of C3 and Db3 conflict with each other, and since they’re low notes there are a lot of harmonics.

So I took a very mathematical and formal approach. I used additive synthesis in SuperCollider, and I divided the frequency space into 80-hz wide “buckets”. I sorted each harmonic of each of the notes (up to the 20th harmonic) into its bucket by frequency, and then wrote a program to only play one sine frequency from each bucket at a time. There ended up being 75 occupied buckets, so 75 sines.

I used a quiver of slow LFOs to choose which frequency at any given time, and then modulated the amplitude so that each harmonic was not playing at the time it switched frequency, and so that not all harmonics were playing all the time. All the LFOs were exact divisions of three minutes, so the track loops exactly at three minutes.

##
Here's the source

```
(
var notes = [ 48, 49, 63, 64, 70, 76 ];
var hz = notes.midicps;
var buckets = 333.collect({[]});
var amps = 333.collect({[]});
var options, length;
hz.do { |f, j|
20.do { |i|
var partial = f * (i + 1);
var bucket = (partial/80).floor;
buckets[bucket] = buckets[bucket].add(partial);
amps[bucket] = amps[bucket].add((i+1).reciprocal*(j+1).reciprocal.sqrt);
};
};
buckets.removeAllSuchThat(_.isEmpty);
amps.removeAllSuchThat(_.isEmpty);
options = [buckets, amps].flop;
options.postln;
buckets.size.postln;
length = 180;
{
var modulators = [
VarSaw.kr(length.reciprocal).unipolar,
VarSaw.kr(length.reciprocal, 0.25).unipolar,
VarSaw.kr(2*length.reciprocal).unipolar,
VarSaw.kr(3*length.reciprocal, 0.25).unipolar,
VarSaw.kr(3*length.reciprocal, 0.666).unipolar,
VarSaw.kr(4*length.reciprocal).unipolar,
VarSaw.kr(4*length.reciprocal, 0.75).unipolar,
];
var sound = [];
options.do { |option, i|
var fs, as;
var freq;
var amp;
var mod1 = modulators[i % modulators.size];
var mod2 = modulators[(i * 4) % modulators.size];
var through, middle, end;
#fs, as = option;
through = (mod1*fs.size) % 1;
middle = through*(1-through);
end = 1-middle;
freq = Select.kr(mod1*fs.size, fs);
amp = middle*Select.kr(mod1*as.size, as)*mod2;
sound = sound.add(SinOsc.ar(freq, mul: amp));
};
sound = sound.reshape(5, 15);
sound = Mix.ar(sound).tanh;
sound = Splay.ar(sound);
sound = Rotate2.ar(sound[0], sound[1], VarSaw.kr(length.reciprocal));
sound = MiVerb.ar(sound);
}.play;
//s.record(duration: length);
)
```