EMU-Script

emu-icon

Reference Manual

An EMU-Script must contain at least 3 sections: the [composition] section, the [instruments] section, and at least one musical section. The other types of sections are optional. All sections of a script share the same structure:

    [section-name]
    attribute-1: value
    ...
    attribute-x: value

For a section name or attribute to be valid, it must begin with a letter and can only contain alphanumeric characters, hyphens, and underscores.

1. The composition section

The [composition] section is mandatory and provides the following information:

Here is an example:

    [composition]
    title: "Fly on the Windscreen"
    by: "Depeche Mode"
    BPM: 93
    time: 4/4
    transposition: -5
    CC: modw=1, reverb=16, delay=19
    playlist: intro, A, B, A, B, outro

2. The intruments section

This mandatory section contains the configuration of the instruments used in the composition. Each instrument defined in this section has a dedicated audio track and music staff. Here is the information that can be specified for an instrument:

Here is an example:

    [instruments]
    piano: "piano", channel=1, octave=3, velocity=99 
    synth: "MIDI Input", channel=2, octave=3, velocity=80 
    bass:  "bass", channel=11, octave=2, velocity=90
    drum: "drum", channel=12, velocity=120

The port MIDI Input is the port assigned to instruments connected to the computer using a USB cable.

3. The musical sections

Musical sections are the core building blocks of a musical composition. A musical section can be played many times in a composition and can also have some form of variation, such as:

When a section name ends with a number, it means that the section is a variation of another section. For instance, if a section name is A1, it means that the content of the section will be merged with the content of its “parent” section [A] (you will find an example in section 3.5).

3.1 Diatonic notes

In an EMU-Script, the notes of a major scale are always 1, 2, 3, 4, 5, 6, and 7. The transposition defined in the [composition] section is used to set the tonality and therefore the key of a composition. A transposition of 0 means that we are composing in C major, a transposition of +5 means that we are composing in F major, etc. The actual note played by the sequencer also depends on the reference octave of the instrument.

There are some modifiers that can be applied to diatonic notes:

Here is an example:

    [intro]
    piano: '6 '7 1 2 | 3 4 #5 6 | 7 1' 2' #3'

The vertical bar (|) acts as a measure separator. In the example, we have defined 3 measures.

3.2 Drum notes

The available drum notes are:

Here is an example:

    [intro]
    drum: i i i i | Bh h BSh h Bh h BSh h 

In the example, some drum notes are concatenated, meaning that they will be played at the same time.

3.3 Notes duration and silence

The duration of the notes in a measure depends on the time signature, the BPM, the number of notes in the measure, and on the use of time modifier operators. Those modifiers are:

Here are some examples, based on a 4/4 time signature:

3.4 Chords and intervals

There are three different types of notation for chords:

A chord name is built by concatenating its root note letter (C, D, E, F, G, A or, B), with one of the following suffixes:

Two types of chord inversions can be used with chord names:

3.5 Lyrics

If you wish, it is possible to add lyrics to a composition. Here is an example:

[A]
piano: 3 | 4 3 #2 3 | 4 | #4 5 - - | . 6 7 1' | 2' 1' 7 6 | 5 
bass: 1 5 | 1 - '7 1 | 2 6 | #2 3 - 5 | 4 | - | 3 - 4 #4 
text: "Oh" 

[A1]
text: "quand j'en tends chan | ter | No ël - - | . J'aime a re | voir mes joies d'en | fant"

[A2]
text: "quand j'en tends so | nner | au ciel - - | . L'heure où le  | bon vieill ard des | cend"

All lyrics must be quoted, and lyric lines must be prefixed by text:. The same time modifiers that are used for notes are also valid for lyrics (parenthesis, dash, dot).

3.6 Chord progression

A chord progression defines the harmonic structure of a composition. You can add a chord progression using lines that are prefixed by chord:. Here is an example:

    [verse]
    chord: C | Am | 'F 'G | C

Once a chord progression has been defined, it is possible to access the notes of the current chord using three built-in functions:

Here is an example of use:

    [verse]
    chord:   Am  |  Dm'    G      |   C 
    synth1: root | chord chord(2) | chord(4)  
    synth2:  '6  |  462    57     |  1351 
     

In the example, the synth1 and synth2 instruments play exactly the same notes.

3.7 Repetition

Sometimes, in a composition, measures of music are repeated. Two built-in functions are provided to avoid repetition in a script:

Here is a musical section that is equivalent to the previous example:

    [outro]
    synth: 1 | 2 3 | 4 - 3 2 | 4 - 3 2 | 15
    drum: B h B h | B h B h | B h B h | B h B h | B Sh B c

4. The sequences section

The [sequences] section lists the sequences that can be inserted in musical sections. A sequence defines a few measures of music that can be parameterized and that is not bound to a specific instrument. The parameters of a sequence can be accessed using the arg(n) and args, build-in functions. Here is an example:

[sequences]
seq1: arg(1) arg(3) arg(2) arg(1)
seq2: 2 - 3 4 | 5- (4) 3 - | args
seq3: . 3 4 5 | 4 3 36 -

[intro1]
piano: seq1(3 5 7) | seq2(2 1) | seq3

[intro2]
piano: 3 7 5 3 | 2 - 3 4 | 5- (4) 3 - | 2 1 | . 3 4 5 | 4 3 36 -

In this example, the [intro1] and [intro2] musical sections are equivalent.

5. The sounds section

The [sounds] section contains the definition of new sounds that can be used in musical sections. The sounds are not bound to any specific instrument. There are 3 types of sound that can be added:

Here is an example:

[sounds]
kick: midi(35)
hh: midi(44)
dw: strum(5 4 3 2 1), msec=5, vdec=3
up: strum(1 2 3 4 5), msec=6, vdec=5
a1: arp(1 1 1 2), step=3, duration=3
a2: arp(1 2 3 4 3 2), step=5, duration=8
 
[exemple]
guitar: a1/37 | - | dw/61351 up/'61351 | up/'57257 | a2/2461
drum: kick hh kick/hh hh | ...

6. The control section

In the [control] section, you can control the sound of the instruments during playback. Each line of the section has the following format:

/instrument/section/measure/attribute: value

Where:

There are 3 attributes that can be specified:

Here is an example:

[control]
/synth/program: 8.2
/synth/intro/2/cc: modw=2.5, reverb=4.0
/synth/outro/2..5/velocity: +20