Skip to content

Normalised Valve Connection


This connection simulates the behavior of a reed or valve. The normalised valve connection has fewer arguments than the valve connection, and is much more intuitive and easier to use. This is made possible because there is a reference force, that of the complete block of the reed on the mouthpiece, to which one can normalise all force.

Syntax and Default Values

The normalised valve connection can be created using the following Lisp, mlys (Max) or mlys.lua syntax:

(make-connection 'normalised-valve
[mlys.normalised-valve @name MyNormalisedValve
                       @initial-position-in 0.001
                       @gamma 0
                       @airdensity 1.2
                       @zeta 0.7
                       @front-angle 1e-8
                       @aperture-length 0.01
                       @weight 1]

The first (and only) inlet is to be connected to the reed object (generally a The first and only outlet is to be connected to the sounding object (generally a tube such as mlys.closed-open-tube).
The parameters gamma (i.e breath pressure), air-density, zeta, front-angle, aperture-length and weight can be controlled via Max messages with:
MyNormalisedValve@gamma {value}
MyNormalisedValve@air-density {value}
MyNormalisedValve@zeta {value}
MyNormalisedValve@front-angle {value}
MyNormalisedValve@aperture-length {value}
MyNormalisedValve@weight {value}

                          valveaccess=<access on valve/reed>,
                          tubeaccess=<access on tube (or other object)>,

The parameters breath (=breath pressure, i.e 'gamma'), airdensity, zeta, frontangle, aperturelength and weight are controllers. If a numerical value is passed, a dynamic controller is automatically created, controllable using Max messages:
MyNormalisedValve@breath {value}
MyNormalisedValve@airdensity {value}
MyNormalisedValve@zeta {value}
MyNormalisedValve@frontangle {value}
MyNormalisedValve@aperturelength {value}
MyNormalisedValve@weight {value}


The 'normalised-valve connection takes nine arguments:

  • valveAccess: access on the object used as valve/reed.
  • initialPosition: initial height of the valve/reed (NB: a numerical value, not a controller!)
  • objectAccess: access on the object used as a resonator.
  • breath: a controller representing the breath (also called gamma)
  • airDensity: a controller for the density of air (kg/m3). Normal value is 1.2.
  • zeta: a controller for the “zeta” parameter which influences the timbre.
  • frontAngle: a controller defining the angle of the aperture/opening.
  • apertureLength: a controller defining the length of the aperture/opening. (m)
  • weight: a controller weighing the interaction.

The breath (or gamma) envelope controller is not a real-world pressure value and typically ranges in value between .3 and 1.8.

The real-world value for air density is 1.2 kg/m3, on earth at sea level at room temperature. You might need to play with this if you wish to blow in other Modalys objects.

The the “zeta” parameter should be a positive non-zero value. This parameter dramatically influences the timbre of the resulting sound. Values between 0 and 1 will dampen higher harmonics considerably. As the value of zeta increases from 1, the sound will become brighter and subjectively “buzzier.” A value of 5 is already quite bright. Common values range between 0.1 and 3.

The aperture angle is given in the system you selected with set_angle_mode (degrees or radians), and the aperture length, given in meters, is used to "scale" the connections.

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


The normalised-valve connection is similar to a reed connection, but allowing greater, more intuitive control over the brightness of the oscillation, via the zeta parameter. As with the reed connection, a two-mass, harmonic oscillator or very small plate may be used as a reed.

★     ★