[Impromptu] problem using two metres
Michele Pasin
michele.pasin at kcl.ac.uk
Thu Mar 12 22:48:00 GMT 2009
>>>>>> to Andrew:
AAAAARRRGGHHHHH I knew there must have been a mistake somewhere :-)
Thanks very much for pointing that out.. btw the 'modulo' solution too
seems really cool!
>>>>> to Pierre-Yves:
tx for the idea - I'll try it out even if at first sight I think it's
not going exactly where I wanted - that is, having a 'master' patch
and a bunch of 'slaves' ..
cheers
mik
On 12 Mar 2009, at 00:29, Andrew Sorensen wrote:
> Hi Michele,
>
> You've run into ye oldie play-note vs play trap. This happens to me
> all the time :)
>
> The duration of play-note is in samples and the duration of play is in
> beats. So at 120bpm 10000 beats is equal to 5000 seconds - more than
> an hour. *second*, depending on your hardware, probably equals 44100,
> 48000 or 96000 so that's going to be many hours :)
>
> So basically you're killing the audio because you're not releasing any
> of your notes (i.e. polyphony problems). Change *second* to 1 and
> 10000 to 1 and youre code works fine.
>
> If you are using single metre's (i.e. not needing a 2 followed by a 3
> followed by a 2 for example) then you could just use modulo directly.
> Also remember that make-metre is currently "broken" - see Glen's post
> from a couple of days ago.
>
> ;; using modulo directly
> (define loop
> (lambda (beat)
> (case (modulo beat 8)
> ((0)
> (play piano 60 120 1)
> (play piano 36 120 1))
> ((1 2 3)
> (play piano 36 120 1))
> ((4 5 6 7)
> (play piano 40 120 1)))
> (callback (*metro* (+ beat (* .5 1/2))) 'loop (+ beat 1/2))))
>
> (loop (*metro* 'get-beat 4))
>
>
>
>
>
>
> On 11/03/2009, at 9:06 PM, Michele Pasin wrote:
>
>>
>> Hi dear Impromptu-fellows,
>>
>> would you have a go with the code below?
>> On my machine the audio constantly disappears after exactly 1 minute
>> and 33 seconds (I know, the melody sounds awful, it's because I
>> stripped it down to the bare basics for making my point).
>>
>> If you're wondering what kind of thing I was trying to do... well
>> basically I wanted to make a piece by organizing it into various
>> 'patches' of 4/4, and call them from a 'master' patch of 8/4 (or 16/4
>> or more..).
>> It was just an idea, maybe this approach is totally wrong since
>> conception! In such case, how would you approach it instead?
>>
>>
>> tx a lot!
>>
>> mik
>>
>>
>>
>>
>>
>> ===================================================
>>
>> (au:clear-graph)
>>
>> (define piano (au:make-node "aumu" "dls " "appl"))
>> (define *mixer* (au:make-node "aumx" "smxr" "appl"))
>>
>> (au:connect-node piano 0 *mixer* 1)
>> (au:connect-node *mixer* 0 *au:output-node* 0)
>>
>> (au:update-graph)
>> (au:print-graph)
>>
>> ;;; times
>>
>> (define *metro* (make-metro 120))
>> (define metre (make-metre '(4) 1)) ;; a classic 4/4
>> (define metre2 (make-metre '(8) 1))
>>
>> ;;;;;;;;;
>> ;;
>> ;;; this crashes the sound output ... I timed it, always after 1:33
>>
>> (define mel1
>> (lambda (beat)
>> (if (metre beat 1)
>> (play piano 60 60 *second*))
>> (if (metre2 beat 1 )
>> (play piano 48 60 *second*))
>> (if (metre2 beat 1 )
>> (mel2 beat 36))
>> (if (metre2 beat 5 )
>> (mel2 beat 40))
>> (callback (*metro* (+ beat .4)) 'mel1 (+ beat .5))))
>>
>>
>> (define mel2
>> (lambda (beat note)
>> (if #t
>> (play piano note 50 10000))
>> (if (not (metre beat 4))
>> (callback (*metro* (+ beat .4)) 'mel2 (+ beat 1) note))))
>>
>>
>>
>> (mel1 (*metro* 'get-beat))
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Impromptu mailing list
>> Impromptu at lists.moso.com.au
>> http://lists.moso.com.au/mailman/listinfo/impromptu
>
> _______________________________________________
> Impromptu mailing list
> Impromptu at lists.moso.com.au
> http://lists.moso.com.au/mailman/listinfo/impromptu
____________________________
Dr. Michele Pasin
Centre for Computing in the Humanities
King's College, London
http://staff.cch.kcl.ac.uk/~mpasin/
More information about the Impromptu
mailing list