Text Format Music: the most elegant notation for Beethoven's Fifth (featuring MIDI+Lilypond software)

70 views
Skip to first unread message

Stephen Lafleur

unread,
Sep 7, 2022, 1:39:48 PM9/7/22
to The Music Notation Project | Forum
This message should display in monospace font. If it does not, click here.

Hello friends, I have spent quite some time working on a notation and software of mine, and I'm ready to introduce you all to it. It is called TFM: Text Format Music.

It is a plaintext format, which unlike XML and indeed all others, is read by columns rather than rows - top to bottom, then left to right, proceeding to master linebreaks denoted by ][ at which point it begins again. This enables it to resemble the output sheet music in a way never before achieved.

Without further ado, this is the first page-or-so of Beethoven's Fifth Symphony:

[]ch \a\
[]ch \b\
[]ch \c\
[]ch \d\
[]ch \h\
[]ch \i\
[]ch \k\
[]ch \l\
[]ch \m\
][
[4]IN \74 Flauti.          \
[3]IN \69 Oboi.            \
[3]IN \72b Clarinetti_in_B.\
[3]IN \71 Fagotti.         \
[3]IN \41 Violino_I.       \
[2]IN \41 Violino_II.      \
[2]IN \42 Viola.           \
[2]IN \43 Violoncello.     \
[2]IN \44 Basso.           \
][
[]]T:  Beethovens_Fifth
[_]k:  C lamic
[]]Q:       300
[_]CL \G       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x        x !x        x  x !x        x        x        x  x        x        x        x  x
[]]PI x        x  x        x  x  x        x        x        x  x        x        x        x  x
[]]rh \--------\--\--------\--\--\--------\--------\--------\--\--------\--------\--------\--\
[_]CL \G       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x        x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x        x  x        x  x  x        x        x        x  x        x        x        x  x
[]]rh \--------\--\--------\--\--\--------\--------\--------\--\--------\--------\--------\--\
[_]CL \G       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x  A3A3A3\F3\  G3G3G3\E3\  x        x        x        x  x        x        x        x  x
[]]PI x  A3A3A3\F3\  G3G3G3\E3\  x        x        x        x  x        x        x        x  x
[]]rh \--nanana\na\--nanana\na\aa\--------\--------\--------\--\--------\--------\--------\--\
[_]CL \F       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x        x  x        x  x  x        xC3      x        x  x        xB2      x        x  x
[]]PI x        x  x        x  x  x        xC3      x        x  x        xB2      x        x  x
[]]rh \________\__\________\__\__\________\naaaaaaa\aaaaaaaa\aa\aaaaaaaa\naaaaaaa\aaaaaaaa\aa\
[]]CL \G       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x        x  x        x  x  x        x        x        x  x        x        x        x  x
[=]PI x  G3G3G3\e3\  F3F3F3\D3\  x        x        x  e4e4e4\C4\        x        x  F4F4F4\D4\
[=]rh \__nanana\na\__nanana\na\aa\________\________\__nanana\na\aaaa____\________\__nanana\na\
[]]CL \G       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x  G3G3G3\e3\  F3F3F3\D3\  x  G3G3G3\e3      x        x  x  G3G3G3\D3      x        \G3\
[=]rh \--nanana\na\--nanana\na\aa\--nanana\naaaaaaa\aaaaaaaa\aa\aananana\naaaaaaa\aaaaaaaa\na\
[_]CL \C       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x  G2G2G2\e2\  F2F2F2\D2\  x        x  a3a3a3\G3      x  x        x  a3a3a3\G3      \D3\
[]]rh \--nanana\na\--nanana\na\aa\--------\--nanana\naaaaaaa\aa\aaaa----\--nanana\naaaaaaa\na\
[_]CL \F       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x  G1G1G1\e1\  F1F1F1\D1\  x        xC3      x        x  x        xB2      x        x  x
[]]rh \--nanana\na\--nanana\na\aa\--------\naaaaaaa\aaaaaaaa\aa\aaaaaaaa\naaaaaaa\aaaaaaaa\aa\
[_]CL \F       x  x        x  x  x        x        x        x  x        x        x        x  x
[]]PI x  G2G2G2\e2\  F2F2F2\D2\  x        x        x        x  x        x        x        x  x
[]]rh \__nanana\na\__nanana\na\aa\________\________\________\__\________\________\________\__\
][
[]PI x        x        x        x        x  G5G5F5\e5  xC5  xG5  x  a4a4a4\F4\  x
[]PI x        x        x        x        x  D5D5D5\C5  xC5  xB4  x  a4a4a4\F4\  x
[]rh \--------\--------\--------\--------\--nanana\na--\na--\na--\--nanana\na\aa\
[]PI x        x        x        x        x  G4G4F4\e4  xF$  xG4  x  a4a4a4\F4\  x
[]PI x        x        x        x        x  D4D4D4\C4  xC4  xB3  x  a4a4a4\F4\  x
[]rh \--------\--------\--------\--------\--nanana\na--\na--\na--\--nanana\na\aa\
[]PI x        x        x        x        x  C#E3A3\A3  xG#  xE3  x  b3b3b3\G3\  x
[]PI x        x        x        x        x  A2C#E3\F3  xD3  xC#  x  b3b3b3\G3\  x
[]rh \--------\--------\--------\--------\--nanana\na--\na--\na--\--nanana\na\aa\
[]PI x        xC3      xB2      xC3      \B2B2B2B2\C3  xa1  xG1  x  a1a1a1\F1\  x
[]PI x        xC3      xB2      xC3      \B2B2B2B2\C3  xa1  xG1  x  a1a1a1\F1\  x
[]rh \aaaaaaaa\naaaaaaa\naaaaaaa\naaaaaaa\nananana\na__\na__\na__\__nanana\na\aa\
[]PI x        x        x        x        x        x    x    xG4  x        x  x  x
[]RH \        \        \        \        \        \    \    \naaa\        \  \  \
[]PI x        x        x        x        x        x    xC4  xB3  x        x  x  x
[]PI x        x        x        x        x        x    xF#  xD3  x        x  x  x
[]PI x  G4G4F4\e4      \D4G4G4F4\e4      \D4G4G4F4\e4  xa2  xG2  x  a3a3a3\F3\  x
[]rh \aananana\naaaaaaa\nananana\naaaaaaa\nananana\na__\na__\na__\__nanana\na\aa\
[]PI x        x        x        x        x        xe4  xC4  xB3  x        x  x  x
[]PI x        x        x        x        x        xG3  xF#  xD3  x        x  x  x
[]PI x        x  e3e3F3\G3      x  e3e3F3\G3D4D4G3\C3  xa2  xG2  x  a3a3a3\F3\  x
[]rh \aaaaaaaa\aananana\naaaaaaa\aananana\nananana\na--\na--\na--\--nanana\na\aa\
[]PI x        \e3e3e3F3\G3      x  e3e3F3\G3    D3\e3  xa2  xG2  x  a2a2a2\F2\  x
[]rh \aaaaaaaa\nananana\naaaaaaa\aananana\naaaaana\na--\na--\na--\--nanana\na\aa\
[]PI x        xC3      xB2      xC3      \B2B2B2B2\C3  xa1  xG1  x  a1a1a1\F1\  x
[]rh \aaaaaaaa\naaaaaaa\naaaaaaa\naaaaaaa\nananana\na--\na--\na--\--nanana\na\aa\
[]PI x        x        x        x        x  B1B1B1\C2  xa1  xG1  x  a1a1a1\F1\  x
[]rh \________\________\________\________\__nanana\na__\na__\na__\__nanana\na\aa\

This is *just* the beginning of the full text, which can be found here:

There is much to be documented and much more to code, but it attempts to convey as much information as can be done in 2char pairs - this is hardcoded and as such requires no whitespace between. []PI pitch is NATURAL until it is flat; if desired, lowercase []pi pitch can be used which is natural until it is SHARP. (Double accidentals, sharps in flat notation, and flats in sharp notation are accounted for.) The rhythm is intuitive: \\--nanana\\naaaaa\\!

I look forward to any commentary, and I invite Linux users to try installation: build instructions with one example file are
# dependencies flex, g++, timidity (to play MIDI)
flex tfm.l;
g++ -DLY lex.tfm.c; #for Lilypond output instead
g++ lex.tfm.c; #for MIDI
./a.out Beethoven-Fifth.tfm;
timidity out.mid;

I should mention the Lilypond output is broken for everything that isn't Beethoven for now. Haha, I have much to work on!
Reply all
Reply to author
Forward
0 new messages