Skip to content

Leaky Valve Connection


This connection simulates the behavior of a valve. It can be used as well to imitate vibrating lips. Note that you can make it with one or two accesses, plus one for the object playing the role of the tube. It is slightly different from the standard valve connection.

Syntax and Default Values

The 'leaky-valve connection can be created using the following Lisp syntax:

(make-connection 'leaky-valve
                  valveAccess initialPosition
                  ;; or valveAccess1 initialPosition1 valveAccess2 initialPosition2
                  ;; if there are 2 accesses on the valve/reed object

                          valveaccess=[valve/reed access], initialposition=0.001,
                          --  or: valveaccess1=[access1], initialposition1=0.001,
                          --      valveaccess2=[access2], initialposition2=0,
                          objectaccess=[tube (or other object) access],
NB: values are examples!
💡breath (i.e gamma), airdensity, airviscosity, underarea, frontarea, frontangle, aperturelength, canallength and weight are controllers. If a numerical value is passed, a dynamic controller is automatically created, controllable using Max messages:
MyLeakyValve@breath {value}
MyLeakyValve@airdensity {value}
MyLeakyValve@airviscosity {value}
MyLeakyValve@underarea {value}
MyLeakyValve@frontarea {value}
MyLeakyValve@frontangle {value}
MyLeakyValve@aperturelength {value}
MyLeakyValve@canallength {value}
MyNLeakyValve@weight {value}


The 'valve connection takes fourteen arguments (or twelve if made with two instead of three accesses):

  • valveAccess1: first access.
  • initialPosition1: initial position of the first access with respect to the valve. (numerical value, not a controller)
  • valveAccess2: second access.
  • initialPosition2: initial position of the second access with respect to the valve. (numerical value, not a controller)
  • objectAccess: access on the object used as a tube.
  • breath: a controller defining the breath pressure (also called 'gamma') of the air blowing in the valve. (unit: 7-Pascals)
  • airDensity: a controller for the density of air. (kg/m3)
  • airViscosity: a controller for the viscosity of air. (Pa)
  • underArea: a controller defining the surface of the under part of the valve. (m2)
  • frontArea: a controller defining the surface of the front part of the valve. (m2)
  • frontAngle: a controller for the inclination of the valve. (degrees)
  • apertureLength: a controller defining the length of the aperture/opening. (m)
  • canalLength: a controller for the length of the canal.
  • weight: (optional) controller weighing the interaction.

The two initial vertical positions must be numerical values, not controllers.

Typical values for air pressure (breath) range from 0 to 50000 Pa.

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 real-world value for air viscosity is around 1.78e-5 Pa.

Typical values for the surface area of the under part of the valve are from 1e-14 to 1e-3 m2.

Typical values for the surface area of the front part of the valve are also from 1e-14 to 1e-3 m2.

For the inclination (angle) of the valve, use whatever system you selected with set_angle_mode. By default, it is degrees.

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

You can make this connection with either 2 or 3 accesses: it could have two vibrating “lips” or one vibrating against a static surface, in addition to the object playing the role of a tube.


The leaky valve connection is similar to a reed connection.

[More information forthcoming...]


There are no special options for this connection.

★     ★