Skip to content

Pluck Connection


A connection where one access plucks another.

(make-connection 'pluck ... )

Syntax and Default Values

A 'pluck interaction can be created using the following Lisp syntax:

(make-connection 'pluck acc_ref1 init_pos1 acc_ref2  init_pos2 release_ctl weight)


The 'pluck connection takes six arguments:

  • acc_ref1: access on plucking object.
  • init_pos1: initial position of the plucking object's access. (numerical value, not a controller)
  • acc_ref2: access on object to be plucked.
  • init_pos2: initial position of the plucked object's access. (numerical value, not a controller)
  • release_ctl: controller determining the release of the pluck interaction (force in Newtons).
  • weight: (optional) controller weighing the interaction.

The two positions must be numerical values, not controllers. The weight controller is optional. If not provided, it defaults to 1.

The release_controller is a one-dimensional controller describing the limit of force (in Newtons) that the plectrum can apply to the string before the string "slips" off and the pluck happens.


For the pluck connection, one access, usually on the small mass of a 'mono-two-mass or 'bi-two-mass object, pushes another access, usually a string. When a force threshold, determined by the value of my-controller, is attained between the “plectrum” and the “string,” the two objects detach, snap back, and vibrate. A reasonable plectrum object is obtained using a 'bi-two-mass object with the following parameters:

(setq my-plucker (make-object 'mono-two-mass
         (small-mass .001)
         (large-mass .01)
         (stiffness0 100000)
         (stiffness1 100000)
         (freq-loss0 100)
         (freq-loss1 100)
         (const-loss0 0)
         (const-loss1 0) ))
Having made the pluck connection between two access, one or both objects must be moved so that the two accesses interact. The initial positions of the two accesses in relation to one another is determined by the values given for init-pos1 and init-pos2. (To move the plectrum, it is necessary to use another connection; 'position, 'force, or 'speed, for example.)

A pluck sound will be most easily obtained using the 'position controller to move the plectrum. If a 'force controller is used, the amount of force must exceed the value given for the 'pluck connection's my-controller, otherwise the objects will never release from one another, and no sound will be obtained. In all cases,be careful not to cross the plectrum over the string too rapidly, otherwise the interaction may not work properly.



In older versions of Modalys, the arguments were provided in a slightly different order:

(make-connection 'pluck acc_ref1 acc_ref2 init_pos1 init_pos2 release_ctl)
You may need to update this connection to the new syntax if you come across any very old Modalys files.
★     ★