;
;
; :mkchordrandom
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; wrapper around non-deterministic pc:make-chord (updated on 2020-10-04)
;
; Args:
; root
; chord-sym [default: '^]
; notes_number [default: 3]
; upper_limit [default: 120]
;
; Example:
; (println (mkchordrandom 60 '- 3 120))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-macro (:mkchordrandom . args)
;;(println args)
(cond ((length-equal? args 1) ;; just root
`(pc:make-chord ,(car args) 120 3 (pc:chord ,(car args) '^)))
((length-equal? args 2) ; root and chord-sym
`(pc:make-chord ,(car args) 120 3 (pc:chord ,(car args) ,(cadr args))))
((length-equal? args 3) ;; also notes_number
`(pc:make-chord ,(car args) 120 ,(caddr args) (pc:chord ,(car args) ,(cadr args))))
((length-equal? args 4) ;; also upper-limit
`(pc:make-chord ,(car args) ,(cadddr args) ,(caddr args) (pc:chord ,(car args) ,(cadr args))))
(else (print 'Error: 'arguments 'could 'not 'be 'resolved.))))