Skip to content

Labium Connection


This connection simulates the action of a jet against a labium in a fipple, creating an air vortex. (Seriously, those are the correct terms, not typos!!)

(make-connection 'labium ... )

Syntax and Default Values

The 'labium connection can be created using the following Lisp syntax:

(make-connection 'labium acc_ref jet_ref noise_ctl  vortex_factor vortex_transition weight)


The 'labium connection takes six arguments:

  • acc_ref: access on the object used as a tube.
  • jet_ref: reference to a jet object (the object itself - not an access!)
  • noise_ctl: a controller for added breath noise.
  • vortex_factor: 3D-controller for the vortex factor
  • vortex_transition: vortex transition time
  • weight: (optional) controller weighing the interaction.

A reference to an actual jet object - not to an access - must be given as a second argument.

A noise controller can be added to provide additional noisiness (or a constant controller of 0 can be provided for no noise).

The vortex factor is a 3-dimensional controller for parameters of the vortex. The first two are parameters which control the vortex (on either side of the labium), and the last of the three controls vortex amplitude. A constant controller with appropriate values is (const 4.99 .1 1).

A controller with an appropriate value for the vortex transition time is (const 0.005).

The weight controller is optional. If not provided, it defaults to 1.


The labium connection works with the jet object to make a vortex, or whirlpool, of air when the jet stream hits the labium.

Unlike a lot of other connections in Modalys, such as the reed and various valve connections, the jet object receives the breath envelope controller as an argument, and the labium connection uses the jet object as an argument. A simple example of this is shown, below:

(setq breath-env (make-controller 'envelope 1 '((0 0) (0.1 100) (1 100) (1.1 0))))
(setq jet (make-object 'jet (pressure breath-env)))
(setq tube (make-object 'closed-open-tube))
(setq tube-acc (make-access tube (const 0) 'long))
(make-connection 'labium tube-acc jet (const 0) (const 4.99 .1 1) (const 0.005))
(setq tube-out (make-access tube (const .9) 'long))
(make-point-output tube-out)


Noise Controller

Adding a noise controller to the labium connection adds realism to the synthesis. A noise controller such as the following can be used:

(setq noise-ctl (make-controller 'arithmetic 1 '* (list (const 10) (make-controller 'random 1 1e-5))))
(make-connection 'labium tube-acc jet noise-ctl (const 4.99 .1 1) (const 0.005))

★     ★