AtsSynth Resynthesize sine data from an ATS analysis file

AtsSynth.ar(atsbuffer, numPartials, partialStart, partialSkip, filePointer, freqMul, freqAdd, mul, add)

- resynthesizes information from an ATS file, with transformations.

atsbuffer - the buffer number that contains the AtsFile information

numPartials - the number of partials to synthesize

partialStart - the partial in the analysis to start the synthesis on. Partial 0 is the first partial.

partialSkip - an integer that indicates the increment of from partialStart of which partials to synthesize.

filePointer - a value (between 0 and 1) that indicates which part of the file to synthesize. Accepts ugens

or a static value.

freqMul - a multiplier on the sinusoidal frequency information.

freqAdd - a value to add to frequency information.

**WARNING** If you try to resynthesize partials that don't exist, those partials will fail silently. All valid partials will still be synthesized.

Usage

For resynthesis purposes, an ATS file needs to be loaded into a buffer. When loading an ATS file, you need to supply a buffer number to store ATS data in.

s.boot;

a = AtsFile.new("sounds/a11wlk01.ats").loadToBuffer;

( //play just the resynth, with LFSaw pointing into the file

{

AtsSynth.ar(a.buffer, a.numPartials, 0, 1,

filePointer: LFSaw.ar(a.sndDur.reciprocal, 1, 0.5, 0.5), mul: 1)

}.play(s);

);

( //multiply frequencies by 1.5

{

AtsSynth.ar(a.buffer, a.numPartials, 0, 1,

filePointer: LFSaw.kr(a.sndDur.reciprocal, 1, 0.5, 0.5), freqMul: 1.5, mul: 1)

}.play(s);

);

( //add 100 to all frequencies

{

AtsSynth.ar(a.buffer, a.numPartials, 0, 1,

filePointer: LFSaw.kr(a.sndDur.reciprocal, 1, 0.5, 0.5), freqAdd: 100.0, mul: 1)

}.play(s);

);

( //resynthesize every third partial only (partial skip)

{

AtsSynth.ar(a.buffer, a.numPartials * 0.3, 0, 3,

filePointer: LFSaw.kr(a.sndDur.reciprocal, 1, 0.5, 0.5), mul: 1)

}.play(s);

);

( //resynthesize only the top half of the partials

{

AtsSynth.ar(a.buffer, a.numPartials * 0.5, a.numPartials * 0.5, 1,

filePointer: LFSaw.kr(a.sndDur.reciprocal, 1, 0.5, 0.5), mul: 1)

}.play(s);

);