This looks wonderful.
I may be missing it from the description, but when I think "procedural" I think that I should be able to change the variables with math, or at the very least increment variables. Are there any examples of that?
For example, I would think I could play a scale with something like
save myPlayable = C1 for 1b
do
play myPlayable
myPlayable.note++
while (myPlayable.note < C2)