;; the play macro
(macro (play args)
(if (symbol? (cadr args))
`(play-note (*metro* beat) ,(cadr args) ,(caddr args) ,(cadddr args) (*metro* 'dur ,(car (cddddr args)))
,@(cdr (cddddr args)))
`(play-note (*metro* (+ beat ,(cadr args))) ,(caddr args) ,(cadddr args) ,(car (cddddr args))
(*metro* 'dur ,(car (cdr (cddddr args))))
,@(cddr (cddddr args)))))