I composed Inarmonique 1 as a first study on spectral composition using sine wave interference patterns, aka Jean-Claude Risset's harmonic arpeggio. I have written previously on this topic here.
The particular approach of the piece is to use "spectral scans", that involve the beating effect, of inharmonic partials.
To get the result I implemented the famous Risset instrument in chucK, wich, compared to csound, in my opinion allows for greater freedom of instrument design and parameter setting, given its OOP nature.
First of all I needed an efficient additive synthesizer to create the wavetables:
Then in a 'score' file, the core 'risset' function. Delta is the basis on which detunings are calculated:
Finally, in the same score we can experiment with the 'classic' examples, and 2 new ones:
Since there isn't (still) an efficient way to destroy an object in chucK, I used concurrency (spork) as a workaround.
To run the code smoothly, remember to 'add' (spork) the class file shred (the additive synth) before sporking the 'score' file.
Inarmonique 1 is based on an extension of the last instrument inharm().