;
;
; helper:mkmelody:pcrel
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; helper function: generate a random melody using pc:rel, a
; root note and a list of relative steps variations
;
;
; Example:
; (helper:mkmelody:pcrel 4 60 'm '(-1))
; => (60 58 56 55)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define helper:mkmelody:pcrel
(lambda (len startp scale stepslst)
(let loop ((i 0)
(lst (list startp)))
; (println lst)
(if (< i (- len 1))
(loop (+ i 1)
(cons (pc:relative (car lst)
(random stepslst)
(pc:scale 0 scale))
lst))
(reverse lst)))))