tradsyn — Streaming partial track additive synthesis
The tradsyn opcode takes an input containg a TRACKS pv streaming signal (as generated, for instance by partials),as described in Lazzarini et al, "Time-stretching using the Instantaneous Frequency Distribution and Partial Tracking", Proc.of ICMC05, Barcelona. It resynthesises the signal using linear amplitude and frequency interpolation to drive a bank of interpolating oscillators with amplitude and pitch scaling controls.
asig -- output audio rate signal
fin -- input pv stream in TRACKS format
kscal -- amplitude scaling
kpitch -- pitch scaling
kmaxtracks -- max number of tracks in resynthesis. 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 tradsyn opcode. Play tradsyn.csd
Example 1111. Example of the tradsyn opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; 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 tradsyn.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ipch = p4 ain diskin2 "beats.wav", 1 fs1,fsi2 pvsifd ain,2048,512,1 ; ifd analysis fst partials fs1,fsi2,.003,1,3,500 ; partial tracking aout tradsyn fst, 1, ipch, 500, 1 ; resynthesis outs aout, aout endin </CsInstruments> <CsScore> f1 0 8192 10 1 i 1 0 2 1.5 ;up a 5th i 1 + 2 .5 ;octave down e </CsScore> </CsoundSynthesizer>
The example above shows partial tracking of an ifd-analysis signal and linear additive resynthesis with pitch shifting.