sinsyn — Streaming partial track additive synthesis with cubic phase interpolation


The sinsyn opcode takes an input containg a TRACKS pv streaming signal (as generated, for instance by the partials opcode). It resynthesises the signal using linear amplitude and cubic phase interpolation to drive a bank of interpolating oscillators with amplitude scaling control. sinsyn attempts to preserve the phase of the partials in the original signal and in so doing it does not allow for pitch or timescale modifications of the signal.


asig sinsyn fin, kscal, kmaxtracks, ifn


asig -- output audio rate signal

fin -- input pv stream in TRACKS format

kscal -- amplitude scaling

kmaxtracks -- max number of tracks in sinsynthesis. Limiting this will cause a non-linear filtering effect, by discarding newer and higher-frequency tracks (tracks are ordered by start time and ascending frequency, respectively)

ifn -- function table containing one cycle of a sinusoid (sine or cosine).


Here is an example of the sinsyn opcode. It uses the file sinsyn.csd.

Example 1003. Example of the sinsyn opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

; Select audio/midi flags here according to platform
-odac      ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o sinsyn.wav -W ;;; for file output any platform

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

kmxtr init p4
ain   diskin2 "fox.wav", 1
fs1,fsi2 pvsifd ain, 2048, 512,1	; ifd analysis
fst   partials fs1, fsi2, .03, 1, 3, 500 ; partial tracking
aout  sinsyn fst, .5, kmxtr, 1		; scale amplitude down
      outs aout, aout

f1 0 8192 10 1

i 1 0 2.7 15	;filtering effect by using low number of tracks
i 1 + 2.7 500	;maximum number of tracks

The example above shows partial tracking of an ifd-analysis signal and cubic-phase additive resynthesis.

See also

Tools for Real-time Spectral Processing (pvs opcodes)


Author: Victor Lazzarini
June 2005

New plugin in version 5

November 2004.