The very first song has been generated by my program. I could go generate many more right now, but I wanted to take this moment to reflect on what I’ve accomplished.

The current implementation is not quite ideal, as some manual intervention is necessary before actual audio is played. It is also limited to the notes C, D, E, F, G, A, B, and rest (denoted z). In looking for a way to play my output, I discovered ABC notation, which I intend to use as input in the future. For now, I am translating the output by hand into ABC notation, which is fairly straightforward.

I trained a model with 3 states on the beginning of Twinkle, Twinkle, Little Star, which I encoded as

C
C
G
G
A
A
G
z
F
F
E
E
D
D
C
z
EOF

Here is what it sounds like played in key C

After training my model on this, I had it generate a sample, which terminated as soon as EOF was played (denotes the end of the file or song). The result was the very first song produced by my program.

C
z
F
F
G
D
C
E
D
C
z
G
E
D
G

Converted into ABC notation, this is

X:0
T:First Song
K:C
CzFFGDCEDCzGEDG

Here’s the song again

Here is the sheet music, which was generated with the help of http://www.concertina.net/tunes_convert.html after adding some annotations to the ABC file.

First Song Sheet Music