I’m building a domain-specific language called Arpeggio that compiles code into songs. I outlined a tentative syntax for the language in Part 1, explored the musical theory behind it in Part 2, and implemented a Python music engine to power it in Part 3. Now it’s time to finally connect those components together by writing a parser and interpreter that turns our custom language into playable music. Syntax and Semantics The language design was detailed in Part 1, but here’s a quick recap...