Audio output is a tone similar to a stuck metal bar, using a physical model developed from solving the partial differential equation. There are controls over the boundary conditions as well as the bar characteristics.
iK -- dimensionless siffness parameter. If this parameter is negative then the initialisation is skipped and the previous state of the bar is continued.
ib -- high-frequency loss parameter (keep this small)/
iT30 -- 30 db decay time in seconds.
ipos -- position along the bar that the strike occurs.
ivel -- normalized strike velocity.
iwid -- spatial width of strike.
A note is played on a metalic bar, with the arguments as below.
kbcL -- Boundary condition at left end of bar (1 is clamped, 2 pivoting and 3 free).
kbcR -- Boundary condition at right end of bar (1 is clamped, 2 pivoting and 3 free).
kscan -- Speed of scanning the output location.
Note that changing the boundary conditions during playing may lead to glitches and is made available as an experiment. The use of a non-zero kscan can give apparent re-introduction of sound due to modulation.
Here is an example of the barmodel opcode. It uses the files barmodel.orc and barmodel.sco.
Example 39. Example of the barmodel opcode.
/* barmodel.orc */ ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1. instr 1 aq barmodel 1, 1, p4, 0.001, 0.23, 5, p5, p6, p7 out aq endin /* barmodel.orc */
/* barmodel.sco */ i1 0.0 0.5 3 0.2 500 0.05 i1 0.5 0.5 -3 0.3 1000 0.05 i1 1.0 0.5 -3 0.4 1000 0.1 i1 1.5 4.0 -3 0.5 800 0.05 e /* barmodel */