FOMUS is a open source software application that automates many musical notation tasks for composers. It facilitates the process of creating professionally notated scores by allowing the composer to separate consideration of logical attributes such as the times, durations and pitches of events from the representation of them in conventional music notation. It is especially useful for composers who work with algorithms and works with computer music software languages/environments such as CM/Grace, Pure Data and Lisp. It can also be used to import data from MIDI files into a graphical notation editor or creating scores from scratch using text files.
In FOMUS, input of musical events is narrowed down to a small set of basic attributes: time, duration, pitch, an list of marks and an optional dynamic level. Measures are also conceived as containers with time offsets and durations. With the change of a few settings, an entire score can be renotated with different rhythmic values (e.g., eighth notes instead of quarter notes), or in a different meter (e.g., 5/8 instead of 4/4). A score for percussion ensemble can be renotated with different layouts using single or multiple staves, or entire blocks of music can be easily shifted by any value (e.g., an eighth note or one third of an eighth note triplet). As the software develops the user will have multiple specialized algorithms to choose from for any given task and will be able to tailor the program to his/her own style or aesthetic. Until it develops to that point, FOMUS offers a general-purpose solution that produces reasonable results in most cases. If desired, many automated tasks can be switched off or overridden by the user, the goal being to allow varying levels of control over the output.
Following is a partial list of tasks or notational features that FOMUS automates:
The software is implemented as a shared library, and can be used in programming environments such as Lisp or Common Music or as an external in graphical programming environments such as Pure Data. It can also load files written in FOMUS's native file format and import data from other file formats (such as MIDI). Once the composer loads or inputs his/her information, FOMUS outputs a file (or multiple files) in one or more different formats suitable for importing into a graphical notation program such as LilyPond, Finale or Sibelius. The user can then load the output file into one of these programs and make further edits to produce a finished score. FOMUS thus determines symbolic aspects of notation while leaving issues related to graphical layout and positioning to another program where this type of editing can be done. The library can easily be extended to work with other programming environments and its plugin-style architecture allows the user to modify, add to or replace parts of its functionality.
A long term goal for this software for it to evolve into a “true” automatic notation program that can be used for automatic MIDI file conversion, automatic music transciption, etc.. In its present stage of development, however, it is missing a few essential algorithms (e.g., meter detection, key signature detection) that would make this possible. The user must supply this information when importing MIDI files, for example.