Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::ModalShape Struct Reference

The spatial eigenfunction of one mode along a body's normalized length coordinate x in [0, 1]: phi(x) = sin(pi * half_waves * x + end_phase). More...

#include <modal_bank.hpp>

Public Attributes

float half_waves = 1.0f
 number of half-wavelengths across the body
float end_phase = 0.0f
 0 puts a node at x = 0; pi/2 an antinode

Detailed Description

The spatial eigenfunction of one mode along a body's normalized length coordinate x in [0, 1]: phi(x) = sin(pi * half_waves * x + end_phase).

How hard a strike at x excites a mode, and how loudly a pickup at x hears it, are both proportional to phi(x) — striking a node (phi = 0) does not excite that mode at all, which is why a string struck at its midpoint has no even harmonics.

This is the sinusoidal-eigenfunction family: ideal strings and the standing-wave idealization of pipes. Set half_waves = m (mode index) and end_phase = 0 for a string fixed at both ends; end_phase = pi/2 puts an antinode at x = 0 for a free end. Bodies whose eigenfunctions are NOT sinusoidal — Euler-Bernoulli bars, plates, shells, anything from a mesh solve — must not be forced into this form: compute their phi(x) with the solver that produced the modes and hand ModalBankT the resulting weights directly. The bank consumes weights, never positions, for this reason.

Member Data Documentation

◆ end_phase

float pulp::signal::ModalShape::end_phase = 0.0f

0 puts a node at x = 0; pi/2 an antinode

◆ half_waves

float pulp::signal::ModalShape::half_waves = 1.0f

number of half-wavelengths across the body


The documentation for this struct was generated from the following file:
  • /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/modal_bank.hpp