[{h1}anote: ASCII midi programming language] anote (ASCII note) is an ASCII programming language for controlling music, specifically designed to compile to MIDI and sheet music. It draws from some of the concepts of the languages [ABC] and [MML] but is designed to look as much like sheet music as the medium of ASCII text permits. [{h2}anote sheet music] Here is an example of the sheet music: [{## lang=anote} # 2.2.2.2.2.2. 4: g-- g g-- 4: e-- e- e-- 4: c-- c-- c-- " to- lov-e-- ]## The structure is as follows: [+ * The top row of numbers following [$#] are the step divisions that each column is played at. [+ * Every [$2] signifies the beginning of a new step. The 2 means it has a 1/2 step precision. * Each [$.] is played at the 1/2 step following the column labeled with [$2]. ] * The left [$4:] specify the row's octave. The values that follow are the notes to play at their column's specified step time. Each note is represented by one of the characters [$c d e f g a b], each representing their standard musical note. * The final row starting with [$"] is the lyrics. It is not parsed by the computer and is for humans to read. ] For each numbered column (each step time): [+ * The first column is "g e c", which is a standard c-chord. * The next two columns [$--] specify to hold the c-chord for 1-1/2 steps. * The blank space is a 1/2 step rest * A [$c] note is played and held for 1-1/2 steps ([$c--]). * A 1/2 step later [$e] is played and held for two half steps ([$e-]). * A 1/2 step later [$g] is played for a 1/2 step, then all keys are released. * Then a 1/2 step rest * Finally another c-chord is played and held for 1-1/2 steps. ] [{h3}Other Settings] anote provides several ways to control aspects of the music: [+ * There are several explicit settings that can be placed above the [$#] bar, preceeded by [$@]. This includes the instrument, tempo (default=60bpm), default volume override, base octave (default=0), etc. Multiple bars with the same name will be concatenated. [{## lang=anote} @name=bass_1 @instrument=double_bass volume=7 @tempo=4/4 octave=-3 # 1212... ]## * Lyrics can be placed on any number of lines by using [$"]. The songwriter will typically increase the note precision (i.e. use [$4...] for 1/4 note precision instead of just [$2.], which is 1/2 note precision) to allow space for lyrics when needed. * Multiple settings can be done on the row, for instance the volume can be set with [$4 v2.3:] (aka 4th octave, 2.3/10 volume). In addition, macros can be defined with [$var agg = v7 a9] (7/10 volume, 9/10 attack speed). Macros can be used with [$!name], i.e. [$4 !agg:]. ] Other note notations: [+ * A sharp note (half step up) is one of [$C D E F G A B]. Flats cannot be represented, except as sharps (i.e. "c-sharp" is the same note as "d-flat"). * The step precision can be controlled by increasing the number starting each step in the top row. For example, 1/8th step precision might be [$8...*...], 16th step precision might be [$G...*...+...*...] (G is the 16th letter from 1-9 A-Z). Note that [$. * - +] are all valid characters following the alphanumeric and are for the human writer to visually divide the step. ] [{h2}anote mixer]