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!