Chapter 1. Introduction

Table of Contents

FOMUS (FOrmat MUSic) is a music notation tool for computer music composers. It is written in the Lisp programming language, and has been tested in the following interpreters: CMUCL (version 19), SBCL (version 0.9.4), OpenMCL (version 1), CLISP (version 2), Allegro (version 7) and LispWorks (version 4). As the program becomes more stable, it will also be tested in other lisp implementations. Supported operating systems are Linux, Max OS X and Windows. The purpose of it is to facilitate the conversion of "raw" algorithmic output data into readable music notation, a process that can be frustrating and time consuming since it often requires dumping data into some intermediary format (such as MIDI) and importing it into a notation program that only does a mediocre job of conversion. FOMUS attempts to remove this frustration by making a reasonably intelligent attempt at spelling notes, quantizing offsets and durations into readable rhythms, laying out the information into voices and staves, and other tasks (such as where to include clef changes or ottava markings). The user may also specify extra information such as articulations, text markings, time signature changes, notational details of musical instruments, etc.. When the program is run, it outputs a file suitable for importing straight into a notation program, after which a small amount of editing and layout work should be required to create a finished musical score.

Following is a list of some of the tasks FOMUS is designed to automate:

  • Part grouping and ordering
  • Transposition and checking of instrument ranges
  • Note spelling (semitones and quartertones are currently supported) and cautionary accidentals
  • Rhythmic quantizing (with tuplet choices that minimize the amount of error between input offsets and notational offsets)
  • Distribution of notes into voices and staves
  • Note splitting and tying, taking into account metrical divisions, dotted rhythms, and other special cases
  • Decisions regarding placement of clef changes and ottava brackets
  • Layout of articulations, slurs, beams, dynamic and text markings, and other notational elements

The following output formats are supported:

MusicXML files will import (more or less) into popular notation programs like Finale and Sibelius.

FOMUS integrates with Common Music, using some of its functionality if present and also functioning as a backend. FOMUS has also been designed to allow selection of modules that use different algorithms to perform the same tasks. As new functions are added, users can select the ones that give them the best results. These will be added to the program over time.

FOMUS is still in its initial (alpha) development stage, so please expect many bugs. If you wish to report one, please look at the DEBUG-FILENAME setting to see how to create a debug file and e-mail it to . Please send me suggestions and comments.

Thanks to Rick Taube, Kilian Sprotte, Mika Kuuskankare and Rob Canning for their help and suggestions. Also thanks to Kilian Sprotte for developing code for the test suite, available in the SVN repository as fomustest.