Have you tried using lists? A list of values interpreted as pairs of a something and a time interval ( where the something is a note value or pointer) make an easy way if you want to stretch or shrink the sequence in time, just scale all the time delays.
A list sequencer takes a list in one go. It splits the first value off as a note and plays it to the output, then chomps the next element from the list and treats it as a delay to wait. After that delay time, it gives the rest of list (minus the last two elements) back to itself and does it all again....
So this list plays note 44, waits 125ms then plays note 50....
[44 125 50 125 44 250 52(
until it runs out of elements.
In attached example you can scale the speed using horizontal radio bar, it just multiplies all the time values by {0.25, 0.5, 1, 2, 4...}
On Tue, 10 Jul 2007 14:23:29 +0300 "Libero Mureddu" libero.mureddu@gmail.com wrote:
Hello,
I´m trying to implement a patch to play proportional canons in real time from a midi source. A proportional canon works in this way: if I play, let´s say, three notes at 200ms of speed, and if I decide that the proportion should be 2 times slower, the patch should playback the same three notes at 400ms speed.
I thought I could record the distance between notes with timer, and then send the time difference (multiplied by a certain factor), to pipe, but it seems that pipe cannot handle the change of delay time, if more than one change in delay has to be stored before playing back the previous.
Do you have any suggestion?
In other words, what I would like to do is to record and at the same time (or later) playing back at a slower speed.
Thanks a lot
Libero
Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu