This file is indexed.

/usr/share/doc/pypy-mmllib/MMLFILE.rst is in pypy-mmllib 0.3.0.post1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Description of the (extended) music macro language
==================================================

Based on http://www.antonis.de/qbebooks/gwbasman/play.html and
https://www.mirbsd.org/man4/spkr .

Symbols of MML
--------------

:A-G[#,+,-][length]:
    A-G are notes. # or + following a note produces a sharp; - produces a
    flat.

:L(n):

    Sets the length of each note. L4 is a quarter note, L1 is a whole note,
    and so on. n may be from 1 to 64. Length may also follow the note to
    change the length for that note only. A16 is equivalent to L16A. Default
    is L4.

:ML:
    Music legato. Each note plays the full period set by L.

:MN:
    Music normal. Each note plays seven-eighths of the time determined by L
    (length).

:MS:
    Music staccato. Each note plays three-quarters of the time determined by
    L.

:N(n):
    Play note n. n may range from 0 to 84. In the 7 possible octaves, there
    are 84 notes. n set to 0 (or omitted) indicates a rest.

:O(n):
    Octave 0 sets the current octave. There are 7 octaves (0 through 6).
    Default is 4. Middle C is at the beginning of octave 2.

:P(n):
    Pause. n may range from 1-64; the current L value is used if omitted.

:T(n):
    Tempo. T sets the number of L4s in a minute. n may range from 32-255.
    Default is 120.

:. (period):
    A period after a note increases the playing time of the note by 3/2
    times the period determined by L (length of note) times T (tempo).
    Multiple periods can appear after a note, and the playing time is scaled
    accordingly. For example, A. will cause the note A to play one and half
    times the playing time determined by L (length of the note) times T (the
    tempo); two periods placed after A (A..) will cause the note to be
    played at 9/4 times its ascribed value; an A with three periods (A...)
    at 27/8, etc. Periods may also appear after a P (pause), and increase
    the pause length as described above.

:>:
    A greater-than symbol raises the current octave by one.

:<:
    A less-than symbol lowers the current octave by one.

:\|:
    Optionally used as a synchronisation mark for multi-track music. This is
    a proprietary extension in the Floppi-Music project.

Comments
--------

Lines starting with # are comments. At the beginning of the file,
comments may be used to encode metadata. This is yet to be specified.
The current implementation parses key/value pairs separated by a colon
and a space, strips both key and value, lower-cases the key and adds it
to a dictionary.

The MusicXML export currently specifically recognises these keys:

-  Title, Copyright, Encoder (person), Source
-  Composer, Lyrics, Arranger, Translator *xor* Artist (deprecated, only
   one)

Any other key is treated as miscellaneous field.

Voices
------

The voices of a song are interleaved. They are grouped per notation
system, and the notation systems are seperated by empty lines.