LPCSynth

LPCVals - utilize LPC data

LPCSynth(buffer, signal, pointer, mul, add)

#cps, rmso, err = LPCVals(buffer, pointer)

- LPCSynth uses data from a LPC data file to filter a signal

- LPCVals returns pitch, rms and error data from the LPC data file

buffer - the buffer where data is stored from LPCFile (see LPCFile).

pointer - a pointer into the LPC data file, where 0 is the begining and 1 is the end.

signal - the signal to filter.

Usage

This uses the fate.lpc file, created with the following command:

lpanal -p 50 -h 300 fate.aiff fate.lpc

-p = num poles

-h = hop size in samples

analysis window are 2X the hop size

s = Server.local.boot;

// this file came with the JoshUGens... Leonard Bernstein talking about Beethoven.

// Place it in your SC3/sounds directory.

a = LPCFile.new("sounds/fate.lpc", server: s).loadToBuffer;

(

{

var cps, rmso, err, voc, noise, timepoint, dur;

timepoint = LFSaw.ar(0.8/a.sndDur, 1, 0.5, 0.5);

# cps, rmso, err = LPCVals.ar(a.buffer, timepoint);

// a periodic Blip to filter, amplitude is 1 - error

voc = Blip.ar(cps, (22000 / cps).floor, 1-err);

noise = PinkNoise.ar(err) * 20; // a noise source

// the rms values tend to be high... scale them back quite a bit!

Out.ar(0, LPCSynth.ar(a.buffer, voc + noise, timepoint, 0.00001 * rmso));

}.play(s)

)

// clean up

s.sendBundle(0.1, [\b_free, a.buffer]);