Modelling Instruments - edwardkort/WWIDesigner GitHub Wiki
Instrument Family
Internally, an instrument family (e.g. "whistle", "clarinet") is a list of acoustic components. Some of these components may have distinct playing states. Playing states are frequently discrete (a tonehole open or closed). We may encounter some with continuous values (a tuning slide 5 mm open, or a player's lips 8 mm from an embouchure hole); it may be sufficient to model these in discrete steps (5 mm, 6 mm, ...). Externally, an instrument family is a list of possible playing configurations, often an ordered list.
For a 6-hole whistle, for example, the playing configurations have conventional names: "xxxxxx", "xxxxxo", through "oxxxxx", in two registers.
Instrument Version
A version of an instrument (e.g. "high-D whistle", "Bb Clarinet") is a member of a family with a specific target range. The version is usually identified by the note name of its lowest note. An instrument version maps the list of possible playing configurations to target note names in a tuning system. The tuning system implies specific target frequencies for each playing configuration
A high-D whistle, for example, maps "xxxxxx" in the first register to "D5", "xxxxxo" in the first register to "E5", "oxxxxx" in the first octave to "D7" and in the second octave to "D7".
Instrument Instance
A specific instance of an instrument has known dimensions for its acoustical components. An instance maps the list of possible playing configurations to specific (ranges of) playing frequencies in each configuration. To compute this mapping, we may need the instance to provide other mappings, such as:
- A function that maps playing configuration and frequency to impedance.
- A function that maps playing configuration and frequency to loop gain.