User Stories - edwardkort/WWIDesigner GitHub Wiki

This page contains the evolving list of user stories for WIDesigner.

  1. The user shall be able to define a scale symbol list, which is an ordered list of note names. The names shall contain only characters from the UTF-8 character set. The intent is to create reusable lists of names (such as diatonic, chromatic, pentatonic, 17-note microtonal) which along with a temperament can be used to construct a scale.
  2. The user shall be able to define a scale as a collection of string/frequency pairs.
  3. Note symbols normally associated with the same note (e.g. A#/Bb) need not have the same frequency; i.e., may represent different notes.
  4. The user shall be able to define temperaments, which are ordered lists of interval ratios.
  5. The user shall be able to construct a scale using a predefined scale symbol list, temperament, and root frequency.
  6. The user shall be able to define to set of fingering patterns for an instrument.
  7. The user shall be able to select a note, from a scale, to be associated with each fingering in a set.
  8. From a user's perspective, an instrument design consists of:
    • An instrument model, which determines the acoustic components that make up the instrument. The instrument model determines the possible repertoire of fingering patterns.
    • A mapping of fingering patterns to target notes in a specific scale.
    • Design dimensions, specific values for the dimensions of those components.
    • Dependent attributes of the design that the software calculates from the instrument model and dimensions.
    • Constraints on the design dimensions and dependent attributes.
  9. Some users will work only with predetermined instrument models, altering the dimensions for the model. Advanced users shall be able to alter the instrument model.
  10. Users will engage in "studies", altering the dimensions and constraints for an instrument design, and performing optimization runs on the design, comparing the outcome of each run.
  11. Forms of constraints include:
    • Equalities, where a design attribute has a specified value.
    • Inequalities, where a design attribute is bounded by a specified value.
    • Targets, where optimization attempts to get a design attribute as close as possible to a specified value.