A bow for the waveguide: Helmholtz motion on a string, which the modal loop's friction junction has and the waveguide's drives do not #143

Open
opened 2026-10-06 00:33:31 +00:00 by bcox · 0 comments
Owner

bcox asked on 2026-10-05 for a ticket for each family in his gaps.md that has none. Engine claims are from reading the tree at cd68bd3e on main; literature named below is from recollection and was not re-read. Nothing here is built, measured or listened to.

What the tree has

  • The modal engine bows. ModalLoop::SiteControls carries JunctionCurve::kFriction with drive (bow velocity, in the header's words) and force (bow pressure); dsp/junction.h is the passive table junction behind it, and the modal design is titled "a resonator bank you can bow". The loop's header records stable bowed cycles measured. So bowed bars, plates and the cuica exist.
  • The waveguide does not. WaveguideLayer::Drive is kBurst, kReed, kJet, kLip and kInput, dispatched in DriveFor. The waveguide design says "Energy injection comes from drive x pressure against a passive curve, exactly the modal loop's bowing posture; the drive-ceiling arithmetic carries over." The posture carried over; the bow did not: no drive arm reads the string's velocity at a bowing point against a bow velocity through the friction curve.
  • dsp/strings_junction.h solves N strings on one bridge without delay (#83's passive bridge, closed), and kInput reads another slot's tap. The tanpura's jawari (#104) is the other string nonlinearity the line lacks.

A bowed modal string is a bank of modes under a friction junction, which sustains; what it does not produce is the sawtooth-at-the-bridge waveform of Helmholtz motion, the stick-slip that a string under a bow does and a bar does not.

What bowing a waveguide is

The bow divides the string into two segments, nut side and bridge side. At the bowing point the junction reads the sum of the two incoming velocity waves, forms the difference against the bow velocity, and the friction curve gives what reflects and what passes (Smith's bowed string in Physical Audio Signal Processing: a scattering junction with the bow table as a function of that difference). Helmholtz motion emerges from the loop; nothing writes a sawtooth.

Shape and cost

A Drive::kBow arm in DriveFor: drive as bow velocity on the pressure lane, force as bow pressure, reusing dsp/junction.h's friction table and the modal loop's drive ceiling. The second segment is one more line in the voice's region sub-block, which the waveguide already owns per voice. Per sample it is one junction lookup and one more line read and write per voice.

A first step that needs no second segment: the bow at the string's end, against the bridge reflection, which gives the stick-slip without a bow position. Bow position then is the two-segment form, with the total length holding the pitch while the ratio moves.

Open

  • Whether the junction's friction curve, fitted for the modal loop's sites, is the right curve for a string; the bowed-string literature's curve has a hyperbolic shape in the difference velocity and a hysteresis the table cannot hold.
  • Bow position as a mod destination: moving energy between segments is what the player's hand does, and it changes two line lengths at once.
  • Torsional waves and bow-hair compliance: no.

#104, #83 (closed), #100, the modal design's "Interaction sites and the junction".

bcox asked on 2026-10-05 for a ticket for each family in his `gaps.md` that has none. Engine claims are from reading the tree at `cd68bd3e` on `main`; literature named below is from recollection and was not re-read. **Nothing here is built, measured or listened to.** ## What the tree has - The modal engine bows. `ModalLoop::SiteControls` carries `JunctionCurve::kFriction` with `drive` (bow velocity, in the header's words) and `force` (bow pressure); `dsp/junction.h` is the passive table junction behind it, and the modal design is titled "a resonator bank you can bow". The loop's header records stable bowed cycles measured. So bowed bars, plates and the cuica exist. - The waveguide does not. `WaveguideLayer::Drive` is `kBurst`, `kReed`, `kJet`, `kLip` and `kInput`, dispatched in `DriveFor`. The waveguide design says "Energy injection comes from drive x pressure against a passive curve, exactly the modal loop's bowing posture; the drive-ceiling arithmetic carries over." The posture carried over; the bow did not: no drive arm reads the string's velocity at a bowing point against a bow velocity through the friction curve. - `dsp/strings_junction.h` solves N strings on one bridge without delay (#83's passive bridge, closed), and `kInput` reads another slot's tap. The tanpura's jawari (#104) is the other string nonlinearity the line lacks. A bowed modal string is a bank of modes under a friction junction, which sustains; what it does not produce is the sawtooth-at-the-bridge waveform of Helmholtz motion, the stick-slip that a string under a bow does and a bar does not. ## What bowing a waveguide is The bow divides the string into two segments, nut side and bridge side. At the bowing point the junction reads the sum of the two incoming velocity waves, forms the difference against the bow velocity, and the friction curve gives what reflects and what passes (Smith's bowed string in *Physical Audio Signal Processing*: a scattering junction with the bow table as a function of that difference). Helmholtz motion emerges from the loop; nothing writes a sawtooth. ## Shape and cost A `Drive::kBow` arm in `DriveFor`: `drive` as bow velocity on the pressure lane, `force` as bow pressure, reusing `dsp/junction.h`'s friction table and the modal loop's drive ceiling. The second segment is one more line in the voice's region sub-block, which the waveguide already owns per voice. Per sample it is one junction lookup and one more line read and write per voice. A first step that needs no second segment: the bow at the string's end, against the bridge reflection, which gives the stick-slip without a bow position. Bow position then is the two-segment form, with the total length holding the pitch while the ratio moves. ## Open - Whether the junction's friction curve, fitted for the modal loop's sites, is the right curve for a string; the bowed-string literature's curve has a hyperbolic shape in the difference velocity and a hysteresis the table cannot hold. - Bow position as a mod destination: moving energy between segments is what the player's hand does, and it changes two line lengths at once. - Torsional waves and bow-hair compliance: no. ## Related #104, #83 (closed), #100, the modal design's "Interaction sites and the junction".
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bcox/tymbal#143
No description provided.