Lang-music
#lang music is a project that Michael Gunantra and I did for IU's C424 class. It's a music notation language inspired by MML, but instead of manipulating and concatenating strings, it's a structured language with full support for manipulating notes and bars.
It was done in about 500 lines of Racket and outputs MIDI data. The playback routine is still a little buggy but it's a fun prototype to play with nonetheless.
Examples
(defseq bass2a
< < d4. > f#4. f#8 g8
> a4 b8 a8 < g8 f#8 d8 < r32 c32 e32 g32
c2 > g2
> d8 c4 d4. c8 < < r32 g32 > b32 d32
< g2. > r8 r32 g32 > b32 d32
g)
(defseq bass2b
< < f#2. r4
r
d2 r2
r
> b2. r4
> b
)
(defseq bass2c
< a2. r4
r
g2 r2
r
> d2. r4
> d <
)
(defseq bass3a
< < d
d > >)
(defseq bass3b
< a
a >)
(defseq bass3c
< d
d >)
(dump-to-midi
"sweet.mid"
(play
(together (with-voice electric-guitar-clean (seq (loop 8 lead1)
(loop 2 lead2)
(loop 2 lead3)
(loop 2 lead4)
(loop 2 lead2)))
(with-voice electric-bass-finger bass1)
(loop 0 (with-voice side-stick (drumseq lead1)))
)
(together (seq (loop 2 lead2)
(loop 2 lead3)
(loop 2 lead4)
lead5)
(seq bass2a bass3a)
(seq bass2b bass3b)
(seq bass2c bass3c)
)))