an open-source digital signal processing and sound synthesis language
about · links · contact
MBLOWBOTL -- simple Helmholtz resonator physical model
in RTcmix/insts/stk


quick syntax:
MBLOWBOTL(outsk, dur, AMP, FREQ, NOISEAMP, maxpressure[, PAN, PRESSUREENV])

CAPITALIZED parameters are pfield-enabled for table or dynamic control (see the maketable or makeconnection scorefile commands). Parameters after the [bracket] are optional and default to 0 unless otherwise noted.



   p0 = output start time (seconds)
   p1 = duration (seconds)
   p2 = amplitude (absolute, for 16-bit soundfiles: 0-32768)
   p3 = frequency (Hz)
   p4 = noise gain (0.0-1.0)
   p5 = max pressure (0.0 - 1.0)
   p6 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0.5]
   p7 = breath pressure table [optional; default is 1.0]

   p2 (amplitude), p3 (frequency), p4 (noise amp) and p6 (pan) can receive
   dynamic updates from a table or real-time control source.

   p7 (breath pressure table), if used, should be a reference to a pfield table-handle.

   Author:  Brad Garton, based on code from the Synthesis ToolKit



MBLOWBOTL is the "BlowBotl" physical model in Perry Cook and Gary Scavone's STK , the Synthesis ToolKit.

Usage Notes

MBLOWBOTL is a physical model instrument that recreates the haunting sound of a simple Helmholtz resonator. Once you hear this, you will probably never want to use any other instrument ever again. Well, maybe not...

Here's what Perry says about "BlowBotl":

    This class implements a helmholtz resonator (biquad filter) with a polynomial jet excitation (a la Cook).
The optional 'breath pressure table' (p7, "PRESSUREENV") functions independently of an amplitude-control envelope used in p2 ("AMP"). This allows you to design sharp attacks, etc.

MBLOWBOTL can produce other mono or stereo output.

Sample Scores

very basic:
   rtsetparams(44100, 2)
   load("MBLOWBOTL")

   amp = 30000
   ampenv = maketable("line", 1000, 0,1, 1,0)
   MBLOWBOTL(0, 3.5, amp*ampenv, 349.0, 0.3, 0.5)
   MBLOWBOTL(4, 3.5, amp*ampenv, 278.0, 0.7, 0.8)


slightly more advanced:
   rtsetparams(44100, 2)
   load("MBLOWBOTL")

   ampenv = maketable("line",1000, 0,0, 1,1, 2,0)
   amp = 20000.0 * 5
   noiseamp = 0.1
   st = 0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(7.03), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(7.05), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(7.07), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(7.08), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(7.10), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(8.00), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(8.02), noiseamp, 0.9)
   st = st + 2.0
   MBLOWBOTL(st, 2.0, amp*ampenv, cpspch(8.03), noiseamp, 0.9)


See Also

maketable, CLAR, MBLOWHOLE, MBOWED, MBRASS, MCLAR, METAFLUTE, MSAXOFONY