ArtSong™ is designed to allow combining of different types of algorithms within a single, shared music-composition environment.
Different algorithms can have very different input parameter requirements and output ranges. Under-the-hood ArtSong™ uses an object-oriented software design with 'component', 'variable', and 'function' objects in order to provide a consistant user-interface regardless of what algorithms might be used in a project.
Components are the structural elements of an ArtSong™ project. Components contain composition data used to control the composition process and the generated MIDI note and controller data. Components share a common user-interface for edit and display. The ArtSong™ project itself as well as the different algorithms, MIDI note and controller tracks, chord progressions, scales, etc. are all customized components.
Most components have properties which can be algorithmically controlled. Variables are the links between those component properties and the algorithmic functions. Variables implement a standardized 'music mapping-model' that separates algorithmic 'value generation' from 'value to music-property' mapping'. A variable's output value-range is assigned independantly of an algorithmic value-generator function.
Functions are the objectst used by the variable objects to generate values during the composition project. Most functions are built in but some algorithm components provide additional custom functions used to implement the algorithm's behaviors.