Thank you for your response, but this is not the problem. I see I forgot to include my play-pattern function that includes the process (sorry for that):
(define (play-pattern pat rhy times tmpo ampl) ;; plays pattern times times, with tempo tmpo and amplitude ampl: (let* ((dur (in-tempo 1/4 tmpo))) (process repeat times for x = (next pat) for y = (next rhy) do (if (number? x) (mp:midi :key x :dur dur :amp (* ampl (pick .9 .95 1 .85)))) (wait (in-tempo y tmpo)) ))) The problem arises when I want to use this pattern based composition. make-cycle on the rhythm list made through concat doesn't work (all notes played simultaneously), whereas the rhythm list made through collect *does* work (music plays). I am using Grace 3.9.0 on Windows. <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virusvrij. www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> 2017-06-16 22:09 GMT+02:00 Aykut Caglayan <aykut_cagla...@yahoo.com>: > 'sprout' is sprouting a 'process'. > My suggestion: > > (define (make-rhy-list length) > ;; first create your rhythm list and assign it to a variable > (let ((rhy-list (loop with rhy = (list) repeat length > do > (set! rhy (concat rhy (pick '((1/4 1/4) > (1/3 1/3 1/3) > (1/8 1/8 1/8 1/8) > (1/16 1/16 1/8 1/16 1/8 1/16 1/8) > 1/2 1/2)))) > finally (return rhy)))) > ;;use the rhythm list within a process > (process for i in rhy-list > do > ;;you might want to send it through midi > (send "mp:midi" :dur i) > (wait i)))) > > (sprout (make-rhy-list 2)) > > > Message: 2 > > Date: Fri, 16 Jun 2017 11:58:15 +0200 > > From: Nikolaj Tollenaar <nikolt...@gmail.com> > > To: cmdist@ccrma.Stanford.EDU > > Subject: [CM] problem with list construction for rhythms > > Message-ID: > > <CAM4zxbXpu=e5brMrN8f1-mj2NpAbAHT8YShFhMUSYDssP+L2BQ@ > mail.gmail.com> > > Content-Type: text/plain; charset="utf-8" > > > > Dear all, > > > > I'm trying to construct a rhythm value list through this function: > > > > (define (make-rhy-list length) > > ;; chooses random groupings of values > > (loop with rhy = (list) repeat length > > do > > (set! rhy (concat rhy (pick '((1/4 1/4) > > (1/3 1/3 1/3) > > (1/8 1/8 1/8 1/8) > > (1/16 1/16 1/8 1/16 1/8 1/16 1/8) > > 1/2 1/2)))) > > finally (return rhy))) > > > > But, when I use these in a sprout, all notes are played simultaneously. > > > > (define rhy-lst1 (make-rhy-list 20)) > > (sprout (play-pattern (make-cycle '(70 72 80 88)) (make-cycle rhy-lst1) > 160 > > 115 0.9)) > > > > Why is this and what can I do about it? > > > > If I use the single element construction, sprout works as expected. > > > > Like so: > > > > (define (make-rhy-list length) > > ;; chooses random single values > > (loop for key from 1 to length > > collect (pick '(1/4 1/4 1/4 1/8 1/8 1/16 1/2 1/2)))) > > > > Greetings, > > > > Nikolaj > > > > > >
_______________________________________________ Cmdist mailing list Cmdist@ccrma.stanford.edu https://cm-mail.stanford.edu/mailman/listinfo/cmdist