I programmed thirds, with the help of SuperCollider. This is the dumbest thing I've ever wasted 20 minutes on.
(
SynthDef.new("thirds", { |base=440|
var outArray, third;
third = base * 1.3;
outArray = [
SinOsc.ar(base, 0, 0.2),
SinOsc.ar(third, 0, 0.2)
];
Out.ar(0, outArray);
}).add;
)
x = Synth("thirds", [base: 440]);
These are more or less fourths, but good job.