User Stories - edwardkort/WWIDesigner GitHub Wiki
This page contains the evolving list of user stories for WIDesigner.
- 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.
- The user shall be able to define a scale as a collection of string/frequency pairs.
- Note symbols normally associated with the same note (e.g. A#/Bb) need not have the same frequency; i.e., may represent different notes.
- The user shall be able to define temperaments, which are ordered lists of interval ratios.
- The user shall be able to construct a scale using a predefined scale symbol list, temperament, and root frequency.
- The user shall be able to define to set of fingering patterns for an instrument.
- The user shall be able to select a note, from a scale, to be associated with each fingering in a set.
- 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.
- 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.
- 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.
- 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.