Hi,
On Dec 24, 2007 12:28 AM, Andy Farnell padawan12@obiwannabe.co.uk wrote:
On Mon, 24 Dec 2007 00:00:13 +0100 "Libero Mureddu" libero.mureddu@gmail.com wrote:
Hi Andy,
thanks for your message, it clarified a lot my problem. In fact I need a "time aware" synchronous system, could you send a basic example of that? I can guess that I need a metro plus counter and different [mod]s, but I dont get how to use [moses] and [change] for that.
[moses] comes in when you want to create separate bars or phrases and attach copies or similar parts to them.
Say we have a subpatch or abstraction that plays a phrase [melody1] and it takes a count from 0-127, and another phrase in [melody2] that is different but the same length. To have them alternate you can say
[count 256] | [moses 127] |
[melody1] [- 128] | [melody2][change] is useful when you did an integer division or remainder with [/][int] or [div]. Even though the float output doesn't change in value it is repeated for every bang of the timebase. For example a counter mod 16 divided into four bars or four like this
[count 16] | [/ 4] | [int]
will output {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3}
Adding [change] turns this into {0, 1, 2, 3] changing on every fourth beat.
In another attempt that I did, I made a select with many arguments, each one representing a "playing point". Unfortunately it seems impossible to send a list of arguments as message and set dynamically all the values for set (at least I was unable to do that). [multiselect] that should do that is broken.
This idiom is useful to make a n beat sequencer with settable
[unpack f f f] | | | \ | \ | \ | [==] [==] [==] .......
With all the left inlets connected to the timebase (remember to use a big [t b b b b b ...]. A 1 is output for each match of a list you can update. Use [sel 1] to turn that to a bang if necessary.
Do you mean something like the attached patch? Where the big [t b b b b b...] should be placed and for what? Thanks a lot,
Libero
Do you have an example of the sample timing based idea that you mentioned? In fact, the compositions I'm working on are not longer than 4-5 minutes.
Thanks Libero
There's a few things to browse here, including an early example of a signal domain composition with loops and synths;
http://www.obiwannabe.co.uk/html/music/musictuts/Composition-000/Composition... http://www.obiwannabe.co.uk/html/music/musictuts/Composition-001/Composition... http://www.obiwannabe.co.uk/html/music/musictuts/Composition-002/Composition... http://www.obiwannabe.co.uk/html/compositions/compositions.html
From: Andy Farnell padawan12@obiwannabe.co.uk Subject: Re: [PD] complex metronomes sequencing problem To: pd-list@iem.at Message-ID: 20071223205532.01f5fcb3.padawan12@obiwannabe.co.uk Content-Type: text/plain; charset=US-ASCII
If you have two or more independent metronomes that form a polyrhythmic relationship then stopping them will lose the relationship. Each will begin its timing series from the same "zero point".
A synchronous system is probably better if you want to start and stop the composition at arbitrary points and have it resume.
The general problem with a synchronous system is that the smallest timing resolution is the division of the master clock at all points.
But there are also two quite distinct approaches to synchronous sequencers in Pd having different properties.
One is based on bangs and built from many subsystems that each hold their own state. These "state aware" subsequences use a local counter and a [select] object. The advantage here is that if you stop the master bang message source, each will remain in it's last state until new bangs start to flow. The disadvantage is that no part of the system is "time aware", so you cannot jump forwards or backwards a number of beats to see what the sequence is like without explicitly going through all steps.
The second kind is "time aware". Instead of sending bangs you send float messages which represent the current time. You can use combinations of [moses], [mod], [change] and simple arithmetic to make subsystems behave in different ways. You can jump forwards, backwards or pause the sequence in any way you like.
If you want sample accurate timing you can try an interesting approach that Chun Lee and I have both experimented with, composition entirely in the signal domain. You start with a very slow [phasor~] or [vline~] and calculate all sequence timings using a mixture of [wrap~], [rpole~]/[rzero~] and [min~]/[max~] to constrain, integrate or differentiate the timebase. This has some really nice features, like being able to warp the timebase and get swings or extremely smooth tempo changes. You can also warp parts independently and have them converge on some point in the future with sample accuracy (like spinning back a sample table and having it land exactly on the beat... which you cannot do in any other software afaik). The disadvantage to this is that you're limited to songs of less than about 5 mins because of rounding errors.
On Sun, 23 Dec 2007 21:08:08 +0100 "Libero Mureddu" libero.mureddu@gmail.com wrote:
Hello to everybody!
I have a problem and I'd need that someone could point me at least to the right approach to solve it.
Let's say I have three simple metronomes running, built with metro. Their speed is 1000 1001 and 1002 ms (in my case I have 88 of them, running at different speeds). I'd like to have the possibility to:
a) keep the proportion constant between them and change the global tempo (i.e. 100, 100.1, 100.2 etc) b) I'd like to stop and restore the metros with their right time differences: if they start at the same time (from the same bang), they create a particular net of rhythms, that I'd like to control, analyze and change. I'd like to be able to stop them at a certain point and restart from another but keeping the same rhythmic combination.
I know that this exist and is called sequencer :-) But I want to control this using pd but I don't know really how to do it, and also this is the simplest example: some parts could start at a certain point a change towards a different tempo in a certain time, having different dynamic according to a particular pattern etc. etc. So I think pd would a good platform to implement this.
I was thinking to have a global metro running at 1 ms speed with a counter that reads many different arrays: the first of 1000 values (the first "1" and the other values "0"), the second of 1001 values and the third 1002 values and so on.
But this works if I decide in advance the metros speed and leave it fixed, but I want to be able to modify the speed and still being able to restart, stop etc. Other idea was to have many qlists, but again, a note approach would give the problem of sync between the different notes.
Any help appreciated!
Thanks, best regards and
Merry Christmas!
Libero
-- Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
-- Use the source
PD-list mailing list PD-list@iem.at to manage your subscription (including un-subscription) see http://lists.puredata.info/listinfo/pd-list
End of PD-list Digest, Vol 33, Issue 163
-- Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu
-- Use the source
Sorry Libero, I made an error in that post that may have lead you on a goose chase. I meant to say [t f f f f f], implying that the float (representing time) to which you are comparing time points with [==] should be distributed across all objects in an ordered way.
On Mon, 24 Dec 2007 14:20:10 +0100 "Libero Mureddu" libero.mureddu@gmail.com wrote:
Hi,
On Dec 24, 2007 12:28 AM, Andy Farnell padawan12@obiwannabe.co.uk wrote:
On Mon, 24 Dec 2007 00:00:13 +0100 "Libero Mureddu" libero.mureddu@gmail.com wrote:
Hi Andy,
thanks for your message, it clarified a lot my problem. In fact I need a "time aware" synchronous system, could you send a basic example of that? I can guess that I need a metro plus counter and different [mod]s, but I dont get how to use [moses] and [change] for that.
[moses] comes in when you want to create separate bars or phrases and attach copies or similar parts to them.
Say we have a subpatch or abstraction that plays a phrase [melody1] and it takes a count from 0-127, and another phrase in [melody2] that is different but the same length. To have them alternate you can say
[count 256] | [moses 127] |
[melody1] [- 128] | [melody2][change] is useful when you did an integer division or remainder with [/][int] or [div]. Even though the float output doesn't change in value it is repeated for every bang of the timebase. For example a counter mod 16 divided into four bars or four like this
[count 16] | [/ 4] | [int]
will output {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3}
Adding [change] turns this into {0, 1, 2, 3] changing on every fourth beat.
In another attempt that I did, I made a select with many arguments, each one representing a "playing point". Unfortunately it seems impossible to send a list of arguments as message and set dynamically all the values for set (at least I was unable to do that). [multiselect] that should do that is broken.
This idiom is useful to make a n beat sequencer with settable
[unpack f f f] | | | \ | \ | \ | [==] [==] [==] .......
With all the left inlets connected to the timebase (remember to use a big [t b b b b b ...]. A 1 is output for each match of a list you can update. Use [sel 1] to turn that to a bang if necessary.
Do you mean something like the attached patch? Where the big [t b b b b b...] should be placed and for what? Thanks a lot,
Libero
Do you have an example of the sample timing based idea that you mentioned? In fact, the compositions I'm working on are not longer than 4-5 minutes.
Thanks Libero
There's a few things to browse here, including an early example of a signal domain composition with loops and synths;
http://www.obiwannabe.co.uk/html/music/musictuts/Composition-000/Composition... http://www.obiwannabe.co.uk/html/music/musictuts/Composition-001/Composition... http://www.obiwannabe.co.uk/html/music/musictuts/Composition-002/Composition... http://www.obiwannabe.co.uk/html/compositions/compositions.html
From: Andy Farnell padawan12@obiwannabe.co.uk Subject: Re: [PD] complex metronomes sequencing problem To: pd-list@iem.at Message-ID: 20071223205532.01f5fcb3.padawan12@obiwannabe.co.uk Content-Type: text/plain; charset=US-ASCII
If you have two or more independent metronomes that form a polyrhythmic relationship then stopping them will lose the relationship. Each will begin its timing series from the same "zero point".
A synchronous system is probably better if you want to start and stop the composition at arbitrary points and have it resume.
The general problem with a synchronous system is that the smallest timing resolution is the division of the master clock at all points.
But there are also two quite distinct approaches to synchronous sequencers in Pd having different properties.
One is based on bangs and built from many subsystems that each hold their own state. These "state aware" subsequences use a local counter and a [select] object. The advantage here is that if you stop the master bang message source, each will remain in it's last state until new bangs start to flow. The disadvantage is that no part of the system is "time aware", so you cannot jump forwards or backwards a number of beats to see what the sequence is like without explicitly going through all steps.
The second kind is "time aware". Instead of sending bangs you send float messages which represent the current time. You can use combinations of [moses], [mod], [change] and simple arithmetic to make subsystems behave in different ways. You can jump forwards, backwards or pause the sequence in any way you like.
If you want sample accurate timing you can try an interesting approach that Chun Lee and I have both experimented with, composition entirely in the signal domain. You start with a very slow [phasor~] or [vline~] and calculate all sequence timings using a mixture of [wrap~], [rpole~]/[rzero~] and [min~]/[max~] to constrain, integrate or differentiate the timebase. This has some really nice features, like being able to warp the timebase and get swings or extremely smooth tempo changes. You can also warp parts independently and have them converge on some point in the future with sample accuracy (like spinning back a sample table and having it land exactly on the beat... which you cannot do in any other software afaik). The disadvantage to this is that you're limited to songs of less than about 5 mins because of rounding errors.
On Sun, 23 Dec 2007 21:08:08 +0100 "Libero Mureddu" libero.mureddu@gmail.com wrote:
Hello to everybody!
I have a problem and I'd need that someone could point me at least to the right approach to solve it.
Let's say I have three simple metronomes running, built with metro. Their speed is 1000 1001 and 1002 ms (in my case I have 88 of them, running at different speeds). I'd like to have the possibility to:
a) keep the proportion constant between them and change the global tempo (i.e. 100, 100.1, 100.2 etc) b) I'd like to stop and restore the metros with their right time differences: if they start at the same time (from the same bang), they create a particular net of rhythms, that I'd like to control, analyze and change. I'd like to be able to stop them at a certain point and restart from another but keeping the same rhythmic combination.
I know that this exist and is called sequencer :-) But I want to control this using pd but I don't know really how to do it, and also this is the simplest example: some parts could start at a certain point a change towards a different tempo in a certain time, having different dynamic according to a particular pattern etc. etc. So I think pd would a good platform to implement this.
I was thinking to have a global metro running at 1 ms speed with a counter that reads many different arrays: the first of 1000 values (the first "1" and the other values "0"), the second of 1001 values and the third 1002 values and so on.
But this works if I decide in advance the metros speed and leave it fixed, but I want to be able to modify the speed and still being able to restart, stop etc. Other idea was to have many qlists, but again, a note approach would give the problem of sync between the different notes.
Any help appreciated!
Thanks, best regards and
Merry Christmas!
Libero
-- Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
-- Use the source
PD-list mailing list PD-list@iem.at to manage your subscription (including un-subscription) see http://lists.puredata.info/listinfo/pd-list
End of PD-list Digest, Vol 33, Issue 163
-- Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu
-- Use the source
-- Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu