:mkchordrandom   macro


Defined in:  https://github.com/lambdamusic/extempore-extensions/blob/main/init/init_makers.xtm

Implementation

;
;
; :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.))))


Back to Index