Skip to content

cross2

Cross synthesis using FFT's.

This is an implementation of cross synthesis using FFT's.

Syntax

ares cross2 ain1, ain2, isize, ioverlap, iwin, kbias

Initialization

isize -- This is the size of the FFT to be performed. The larger the size the better the frequency response but a sloppy time response.

ioverlap -- This is the overlap factor of the FFT's, must be a power of two. The best settings are 2 and 4. A big overlap takes a long time to compile.

iwin -- This is the function table that contains the window to be used in the analysis. One can use the GEN20 routine to create this window.

Performance

ain1 -- The stimulus sound. Must have high frequencies for best results.

ain2 -- The modulating sound. Must have a moving frequency response (like speech) for best results.

kbias -- The amount of cross synthesis. 1 is the normal, 0 is no cross synthesis.

Examples

Here is an example of the cross2 opcode. It uses the file cross2.csd and fox.wav.

Example of the cross2 opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o cross2.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
; after example from Kevin Conder
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1

instr 1 ;play audio file

aout soundin "fox.wav"
     outs aout, aout
endin

instr 2 ;cross-synthesize

icps = p4
ifn  = p5               ; Use the "ahhc.aiff" sound and "eeec.aiff"
ain1 oscil 0.6, p4, ifn
ain2 soundin "fox.wav"  ; Use the "fox.wav" as modulator

  isize = 4096
  ioverlap = 2
  iwin = 3
  kbias init 1

aout cross2 ain1, ain2, isize, ioverlap, iwin, kbias
     outs aout, aout
endin

</CsInstruments>
<CsScore>
;audio files
f 1 0 128 1 "ahhc.aiff" 0 4 0
f 2 0 128 1 "eeec.aiff" 0 4 0

f 3 0 2048 20 2 ;windowing function

i 1 0 3

i 2 3 3  50     1 ;"eeec.aiff"
i 2 + 3  50     2 ;"ahhc.aiff"
i 2 + 3  100    1 ;"eeec.aiff"
i 2 + 3  100    2 ;"ahhc.aiff"
i 2 + 3  250    1 ;"eeec.aiff"
i 2 + 3  250    2 ;"ahhc.aiff"
i 2 + 3  20     1 ;"eeec.aiff"
i 2 + 3  20     2 ;"ahhc.aiff"
e

</CsScore>
</CsoundSynthesizer>

See also

Convolution and Morphing

Credits

Author: Paris Smaragdis
MIT, Cambridge
1997