babo
Prev | Orchestra Opcodes and Operators | Next

## babo

babo — A physical model reverberator.

## Description

babo stands for ball-within-the-box. It is a physical model reverberator based on the paper by Davide Rocchesso "The Ball within the Box: a sound-processing metaphor", Computer Music Journal, Vol 19, N.4, pp.45-47, Winter 1995.

The resonator geometry can be defined, along with some response characteristics, the position of the listener within the resonator, and the position of the sound source.

## Syntax

    a1, a2 babo asig, ksrcx, ksrcy, ksrcz, irx, iry, irz [, idiff] [, ifno]

## Initialization

irx, iry, irz -- the coordinates of the geometry of the resonator (length of the edges in meters)

idiff -- is the coefficient of diffusion at the walls, which regulates the amount of diffusion (0-1, where 0 = no diffusion, 1 = maximum diffusion - default: 1)

ifno -- expert values function: a function number that holds all the additional parameters of the resonator. This is typically a GEN2--type function used in non-rescaling mode. They are as follows:

- decay -- main decay of the resonator (default: 0.99)

- hydecay -- high frequency decay of the resonator (default: 0.1)

- rcvx, rcvy, rcvz -- the coordinates of the position of the receiver (the listener) (in meters; 0,0,0 is the resonator center)

- rdistance -- the distance in meters between the two pickups (your ears, for example - default: 0.3)

- direct -- the attenuation of the direct signal (0-1, default: 0.5)

- early_diff -- the attenuation coefficient of the early reflections (0-1, default: 0.8)

## Performance

asig -- the input signal

ksrcx, ksrcy, ksrcz -- the virtual coordinates of the source of sound (the input signal). These are allowed to move at k-rate and provide all the necessary variations in terms of response of the resonator.

## Examples

Here is a simple example of the babo opcode. It uses the file babo.csd, and beats.wav.

Example 44. A simple example of the babo 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
    ; Audio out   Audio in    No messages
    -odac           -iadc     -d     ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o babo.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    /* Written by Nicola Bernardini */
    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 2

    ; minimal babo instrument
    ;
    instr 1
           ix     = p4  ; x position of source
           iy     = p5  ; y position of source
           iz     = p6  ; z position of source
           ixsize = p7  ; width  of the resonator
           iysize = p8  ; depth  of the resonator
           izsize = p9  ; height of the resonator

    ainput soundin "beats.wav"

    al,ar  babo    ainput*0.7, ix, iy, iz, ixsize, iysize, izsize

           outs    al,ar
    endin

    </CsInstruments>
    <CsScore>

    /* Written by Nicola Bernardini */
    ; simple babo usage:
    ;
    ;p4     : x position of source
    ;p5     : y position of source
    ;p6     : z position of source
    ;p7     : width  of the resonator
    ;p8     : depth  of the resonator
    ;p9     : height of the resonator
    ;
    i  1  0  10 6  4  3    14.39 11.86 10
    ;           ^^^^^^^    ^^^^^^^^^^^^^^
    ;           |||||||    ++++++++++++++: optimal room dims according to
    ;           |||||||                    Milner and Bernard JASA 85(2), 1989
    ;           +++++++++: source position
    e

    </CsScore>
    </CsoundSynthesizer>

Here is an advanced example of the babo opcode. It uses the file babo_expert.csd, and beats.wav.

Example 45. An advanced example of the babo opcode.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    ; Audio out   Audio in    No messages
    -odac           -iadc     -d     ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o babo_expert.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    /* Written by Nicola Bernardini */
    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 2

    ; full blown babo instrument with movement
    ;
    instr 2
      ixstart = p4   ; start x position of source (left-right)
      ixend   = p7   ; end   x position of source
      iystart = p5   ; start y position of source (front-back)
      iyend   = p8   ; end   y position of source
      izstart = p6   ; start z position of source (up-down)
      izend   = p9  ; end   z position of source
      ixsize  = p10  ; width  of the resonator
      iysize  = p11  ; depth  of the resonator
      izsize  = p12  ; height of the resonator
      idiff   = p13  ; diffusion coefficient
      iexpert = p14  ; power user values stored in this function

    ainput    soundin "beats.wav"
    ksource_x line    ixstart, p3, ixend
    ksource_y line    iystart, p3, iyend
    ksource_z line    izstart, p3, izend

    al,ar     babo    ainput*0.7, ksource_x, ksource_y, ksource_z, ixsize, iysize, izsize, idiff, iexpert

              outs    al,ar
    endin

    </CsInstruments>
    <CsScore>

    /* Written by Nicola Bernardini */
    ; full blown instrument
    ;p4         : start x position of source (left-right)
    ;p5         : end   x position of source
    ;p6         : start y position of source (front-back)
    ;p7         : end   y position of source
    ;p8         : start z position of source (up-down)
    ;p9         : end   z position of source
    ;p10        : width  of the resonator
    ;p11        : depth  of the resonator
    ;p12        : height of the resonator
    ;p13        : diffusion coefficient
    ;p14        : power user values stored in this function

    ;         decay  hidecay rx ry rz rdistance direct early_diff
    f1  0 8 -2  0.95   0.95   0  0  0    0.3     0.5      0.8  ; brighter
    f2  0 8 -2  0.95   0.5    0  0  0    0.3     0.5      0.8  ; default (to be set as)
    f3  0 8 -2  0.95   0.01   0  0  0    0.3     0.5      0.8  ; darker
    f4  0 8 -2  0.95   0.7    0  0  0    0.3     0.1      0.4  ; to hear the effect of diffusion
    f5  0 8 -2  0.9    0.5    0  0  0    0.3     2.0      0.98 ; to hear the movement
    f6  0 8 -2  0.99   0.1    0  0  0    0.3     0.5      0.8  ; default vals
    ;        ^
    ;         ----- gen. number: negative to avoid rescaling

    i2 0 10  6  4  3   6   4  3  14.39  11.86  10    1  6 ; defaults
    i2 +  4  6  4  3   6   4  3  14.39  11.86  10    1  1 ; hear brightness 1
    i2 +  4  6  4  3  -6  -4  3  14.39  11.86  10    1  2 ; hear brightness 2
    i2 +  4  6  4  3  -6  -4  3  14.39  11.86  10    1  3 ; hear brightness 3
    i2 +  3 .6 .4 .3 -.6 -.4 .3  1.439  1.186  1.0 0.0  4 ; hear diffusion 1
    i2 +  3 .6 .4 .3 -.6 -.4 .3  1.439  1.186  1.0 1.0  4 ; hear diffusion 2
    i2 +  4 12  4  3 -12  -4 -3  24.39  21.86  20    1  5 ; hear movement
    ;
    i2 +  4  6  4  3   6   4  3  14.39  11.86   10   1  1 ; hear brightness 1
    i2 +  4  6  4  3  -6  -4  3  14.39  11.86   10   1  2 ; hear brightness 2
    i2 +  4  6  4  3  -6  -4  3  14.39  11.86   10   1  3 ; hear brightness 3
    i2 +  3 .6 .4 .3 -.6 -.4 .3  1.439  1.186  1.0 0.0  4 ; hear diffusion 1
    i2 +  3 .6 .4 .3 -.6 -.4 .3  1.439  1.186  1.0 1.0  4 ; hear diffusion 2
    i2 +  4 12  4  3 -12  -4 -3  24.39  21.86   20   1  5 ; hear movement
    ;       ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^   ^  ^
    ;       |||||||||||||||||||  |||||||||||||||||   |   --: expert values function
    ;       |||||||||||||||||||  |||||||||||||||||   +--: diffusion
    ;       |||||||||||||||||||  ----------------: optimal room dims according to Milner and Bernard JASA 85(2), 1989
    ;       |||||||||||||||||||
    ;       --------------------: source position start and end
    e

    </CsScore>
    </CsoundSynthesizer>

## Credits

Author: Paolo Filippi
Padova, Italy
1999

Nicola Bernardini
Rome, Italy
2000

New in Csound version 4.09

Prev | Up | Next
aweibull | Home | balance