Skip to content

Tube - closed/open


A model of a column of air in an acoustic tube (either cylindrical or conical) which is sealed at one end and open at the other.

Syntax and Default Values

A 'closed-open-tube can be created using the following Lisp syntax (the default values are shown for each of the physical parameters):

(make-object 'closed-open-tube
             (modes 20)
             (length 1)
             (air-elasticity .00000721)
             (air-density 1.2)
             (radius0 .01)
             (radius1 .01)
             (freq-loss 1)
             (const-loss 1))


The arguments for the physical parameters can be either numerical values or Modalys controllers (either dynamic or constant). If a given parameter is not supplied when using the Lisp syntax, the default parameter value will be used.

  • modes: number of modes.
  • length: in meters.
  • air-elasticity: in m2/kg. On the planet earth at room temperature at sea level this is normally 7.21e-6.
  • air-density: in kg/m3. On the planet earth at room temperature at sea level this is normally 1.2.
  • radius0: in meters at the closed end of the tube.
  • radius1: in meters at the open end of the tube.
  • freq-loss, const-loss: loss coefficients. See General object information.


An acoustic tube can be accessed only in its longitudinal direction:

(make-access my-tube my-controller 'long)
This makes a longitudinal access on my-tube at a point along its length specified by my-controller. The value for my-controller must be between zero and one.



The physical parameters can optionally be controllers instead of numerical values. Therefore, it is possible to modify the physical characteristics of an object, including its pitch, during synthesis. The following example creates a tube which varies in length from 1 meter to 50 cm in 2 seconds:

(setq my-ctrl (make-controller 'envelope 1 '((0 1.0) (2 0.5)) ))
(make-object 'closed-open-tube (length my-ctrl))


An acoustic tube can be tuned to a specific pitch, using the (set-pitch ...) function, by adjusting just one physical parameter:

  • 'length

For example:

(setq my-tube (make-object 'closed-open-tube))
(set-pitch my-tube 'length 440)
You could also use a controller to re-adjust the pitch dynamically, however this is extremely costly in terms of CPU usage, since the entire modal object must be re-computed for every sample. The following example makes a glissando from 220Hz to 440Hz over 2 seconds:

(setq my-tube (make-object 'closed-open-tube))
(set-pitch my-tube 'length (make-controller 'envelope 1 '((0 220.) (2 440.)) ))
Because of the intense amount of calculation required to compute an object based on a given pitch, hybrid objects can be used as a far more efficient way of making a continuous pitch change (glissando).

When using Modalys in real-time contexts, you can use messages to change the pitch of an object, instead of input signal controllers.

Use as a Tone-Hole

A very small closed-open tube can be adhered to another tube as an alternative to making a tone hole on a wind instrument:

(make-object 'closed-open-tube
         (modes 4)
         (length 2e-3)
         (radius0 5e-3)
         (radius1 5e-3)
         (freq-loss 10) )
This tone hole is adhered to a resonating air column (i.e. another tube serving as the instrument itself) at the closed end of the tube. Opening and closing the tone hole is achieved by modifying the interaction weight of the adhere connection itself. (A weight of 1 means the hole will be open, a weight of 0 means it will be closed.

★     ★