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 -- 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 970. Example of the sinsyn 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 sinsyn.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> 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 endin </CsInstruments> <CsScore> 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 e </CsScore> </CsoundSynthesizer>
The example above shows partial tracking of an ifd-analysis signal and cubic-phase additive resynthesis.