# Multiple Points Object

## Description

A Modalys object without physical properties which can nonetheless be represented in space and can vibrate in one dimension. A multiple-points object with N modes and P points is a core modal object defined by its N modal frequencies, N loss parameters ("bandwidth") and its "modal shapes" (NxP values). Any other modal object is actually equivalent to a multiple-points object: the points beings the result of the geometric discretization. The number of modes (N) and the number of points (P) don't need to be the same.

### Syntax and Default Values

A 'multiple-points object can be created using the following Lisp or Lua syntax:

``````(make-object 'multiple-points
(modes N)
(freqs cf)
(bws cb)
(amps ca))
``````
If N is the number of modes and P the number of points, freqs and bws are constant or dynamic controllers of dimension N, and amps (historically named that way...) represents the modal shapes: a list of N controllers, each of them of dimension P.

``````    modalys.create_object{kind="multiple-points", name="myMultiplePoints",
freqs=f,
bws=b,
shapes=a}
``````
If N is the number of modes (automatically deduced from the number of given frequencies) and P the number of points, freqs and bws are constant or dynamic controllers of dimension N, or just lua tables, and shapes represents the modal shapes: a table of N controllers, each of them of dimension P, or a NxP table.

### Parameters

The 'multiple-points object does not have any physical properties, but takes three parameter lists to set its frequency data directly:

• modes: number of modes (Lips only; In Lua, this is automatically deduced from the number of frequencies.)
• freqs: A list of frequencies (in Hz) to be assigned to the modes frequencies.
• bws: A list of bandwidths (in Hz) to be assigned to the mode loss coefficients.
• amps (or shapes): A array of amplitudes to be assigned to each point and mode.

Note: The three lists provided for the freq bw and amp parameters must have the same length. If different lengths are used, the lists are truncated to the length of the shortest list. A null list in any parameter will not be accepted and an error message will be displayed.

Multi-dimensional controllers may also be used in place of the lists to dynamically control the points's resonance parameters.

### Discussion

As we learned in the "Introduction to the Physics of Modalys" section found in the introductory part of this documentation, modal representation is directly related to the spectral components, and thus also to the human perception, of the synthesized signal. 'single-point objects are virtual objects which don't have any physical property (as mass or density) but have a spatial representation as a single point which can vibrate in one dimension. 'single-point objects are defined by their spectral components (frequency of resonance, bandwidth, amplitude) and are therefore important for bringing in Modalys a convergence between signal models and physical models - as 'multiple-points behave exactly as any other Modalys physical object.

It is important for the user to know that the modal loss coefficient for this object is set directly using the given resonance bandwidth, thereby giving the modal representation a straightforward connection between the signal and physics domains. (Although bandwidths and modal loss coefficients are not exactly the same thing, they do function similarly where damping of resonances is concerned, so the bandwidth parameter can be used directly in this context.)

### Accesses

A 'multiple-points object can be only accessed in the 'normal direction:

``````(make-access my-multiple-points my-controller 'normal)
``````
As a 'multiple-points object does not have spatial information, my-controller should be a constant between 0 and 1. In fact, any position (even a time-varying) can be used, but it will not influence the object motion. The position controller is necessary for keeping compatibility with other Modalys objects.

## Options

### Tuning

Since a multiple-points object is defined directly from frequency, bandwidth and amplitude data, its pitch is set automatically based on the frequency data it is given. A multiple-point with a 5-partial harmonic spectrum and 2 points can therefore be created this way:

``````(make-object 'multiple-points
(modes 5)
(freqs (const 220 440 660 880 1100))
(bws (const 8. 4. 2. 1. 0.5))
(amps (list (const 1. 0.1)
(const 0.866 0.08)
(const 0.707 0.07)
(const 0.612 0.06)
(const 0.5 0.05))) )
``````

★     ★