vbap — Distributes an audio signal among many channels.
Distributes an audio signal amongmany channels, up to 64 in the first form, arbitrary in the second.
ar1[, ar2...] vbap asig, kazim [,
kelev] [, kspread] [, ilayout]
array[] vbap asig, kazim [,
kelev] [, kspread] [, ilayout]
ilayout -- index of the speaker layout in the range 0-99, corresponding to a call to vbaplsinit.
asig -- audio signal to be panned
kazim -- azimuth angle of the virtual source
kelev (optional) -- elevation angle of the virtual source
kspread (optional) -- spreading of the virtual source (range 0 - 100). If value is zero, conventional amplitude panning is used. When kspread is increased, the number of loudspeakers used in panning increases. If value is 100, the sound is applied to all loudspeakers.
vbap takes an input signal, asig and distributes it among the outputs, according to the controls kazim and kelev, and the configured loudspeaker placement. If idim = 2, kelev is set to zero. The distribution is performed using Vector Base Amplitude Panning (VBAP - See reference). VBAP distributes the signal using loudspeaker data configured with vbaplsinit. The signal is applied to, at most, two loudspeakers in 2-D loudspeaker configurations, and three loudspeakers in 3-D loudspeaker configurations. If the virtual source is panned outside the region spanned by loudspeakers, the nearest loudspeakers are used in panning.
Warning | |
---|---|
Please note that all vbap panning opcodes require the vbap system to be initialized using vbaplsinit. |
Ville Pulkki: “Virtual Sound Source Positioning Using Vector Base Amplitude Panning” Journal of the Audio Engineering Society, 1997 June, Vol. 45/6, p. 456.
Here is an example of the vbap opcode. It uses the file vbap.csd.
Example 972. Example of the vbap 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 vbap.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 4 ;quad 0dbfs = 1 vbaplsinit 2, 4, 0, 90, 180, 270 instr 1 asig diskin2 "beats.wav", 1, 0, 1 ;loop beats.wav kaz line 0, p3, p4 ;come from right rear speaker & a1,a2,a3,a4 vbap asig, 180, 100, kaz ;change spread of soundsource printks "spread of source = %d\n", 1, kaz ;print spread value outq a1,a2,a3,a4 endin </CsInstruments> <CsScore> i 1 0 12 100 e </CsScore> </CsoundSynthesizer>
Its output should include lines like these:
spread of source = 0 spread of source = 8 spread of source = 17 spread of source = 25 spread of source = 33 spread of source = 42 spread of source = 50 spread of source = 58 spread of source = 67 spread of source = 75 spread of source = 83 spread of source = 92 spread of source = 100
vbapmove, vbap16, vbap16move, vbap4, vbap4move, vbap8, vbap8move, vbaplsinit, vbapz, vbapzmove