Quantcast

Understanding Independent Keys in a Pbind

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Understanding Independent Keys in a Pbind

bobby donnegan
Hi there,

I'm trying to understand some more complex Pbind behavior, but hitting a snag.
I'd like to have one element moving at a different speed than the
other elements.

I've looked at Pstep, which allows the "rate of change" of a Key to be
tucked into the overall duration of a pattern...but I'm trying to find
something that will let me move one element much faster than the Event
duration.

For instance, if I wanted to run the \degree much faster than the \octave:
Pbind(\degree, Pseq([1, 2, 3], inf), \octave, Prand([3, 4, 5, 6],
inf),\dur, 1).play;

Hypothetically, running a faster event duration and using a Pstutter
for the \octave key would "work", but it would mean new instantiations
with each event.

I guess I'm wondering if there is some kind of Pmono/Pbind hybrid
where a frequency can be moved around in a single event and specific
Synth, multiple times..

Sorry if I'm missing something obvious here..but I'd love to know if
this is possible.

--
--Bobby D.--

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Understanding Independent Keys in a Pbind

ddw_music
bobby donnegan wrote
Hi there,

I'm trying to understand some more complex Pbind behavior, but hitting a snag.
I'd like to have one element moving at a different speed than the
other elements.

For instance, if I wanted to run the \degree much faster than the \octave:
Pbind(\degree, Pseq([1, 2, 3], inf), \octave, Prand([3, 4, 5, 6],
inf),\dur, 1).play;

Hypothetically, running a faster event duration and using a Pstutter
for the \octave key would "work", but it would mean new instantiations
with each event.

I guess I'm wondering if there is some kind of Pmono/Pbind hybrid
where a frequency can be moved around in a single event and specific
Synth, multiple times..
In a word, no, not directly (not in the main pattern library).

A Pbind generates a stream of events. An event stream may have one and only one rhythm. You can't write one Pbind with two levels of rhythm. You could run two Pbinds simultaneously in a Ppar. Come to think of it: one Pbind could make notes in a specific group, and the other could "set" synth controls for the group (which would pass those values to any synths inside).

Or have a look at Pspawner, where the Pspawner function is the upper, "note" level which generates patterns to handle the faster parameter control.

hjh
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Understanding Independent Keys in a Pbind

Daniel Mayer
In reply to this post by bobby donnegan

Am 11.03.2017 um 07:00 schrieb Bobby Donnegan <[hidden email]>:

> Hi there,
>
> I'm trying to understand some more complex Pbind behavior, but hitting a snag.
> I'd like to have one element moving at a different speed than the
> other elements.
>
> I've looked at Pstep, which allows the "rate of change" of a Key to be
> tucked into the overall duration of a pattern...but I'm trying to find
> something that will let me move one element much faster than the Event
> duration.
>
> For instance, if I wanted to run the \degree much faster than the \octave:
> Pbind(\degree, Pseq([1, 2, 3], inf), \octave, Prand([3, 4, 5, 6],
> inf),\dur, 1).play;
>
> Hypothetically, running a faster event duration and using a Pstutter
> for the \octave key would "work", but it would mean new instantiations
> with each event.
>
> I guess I'm wondering if there is some kind of Pmono/Pbind hybrid
> where a frequency can be moved around in a single event and specific
> Synth, multiple times..
>

See PmonoPar and PpolyPar from miSCellaneous lib.

PmonoPar is like Pmono, but allows an arbitrary number of differently timed setting streams in parallel.
PpolyPar allows an arbitrary number of monophonic streams as well as an arbitrary number of
differently timed setting streams applied to them in parallel.

Three setting streams for a default synth can be written like this:

(
p = PmonoPar([
    [
        \dur, 1.0,
        \pan, Pser([-0.9, 0, 0.9], 8)  
    ],[
        \dur, 0.4,
        \midinote, Pseq((70..75), 7)
    ],[
        \dur, 0.2,
        \amp, Pseq([0.05, 0.3], 30)  
    ]
]).trace.play;
)


Your example with octave is a bit more subtle as it affects parameters of the same value conversion mechanism (pitch).
But it can be written quite straight with data sharing:

(
p = PmonoPar([
    [
        \oct, Prand([4, 5, 6, 7], inf).collect(~oct = _),  
        \dur, 1,
    ],[
        \dur, 0.2,
        \octave, Pfunc { ~oct },  
        \degree, Pseq([1, 2, 3], inf),  
    ]
]).trace.play;
)


Actually PmonoPar grew from a list discussion based on a very cool example by
Jonatan Liljedahl and PsetGroup was a first name choice. If you are interested in history:


http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/demo-of-multiple-control-patterns-for-single-synth-td7586323.html

http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/Event-question-td7586264.html

http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/Parallel-patterns-controlling-single-synth-with-independent-timing-td7586230.html


Indeed one could think about applying this mechanism and interface also to the Pbind paradigm.
I don't remember exactly why I finally haven't implemented such a variation,
but I think there can be a number of difficult and ambiguous cases with overlapping events.

Nevertheless it might be worth rethinking it.

Regards

Daniel

----------------------------------------------------
http://daniel-mayer.at/software_en.htm
----------------------------------------------------





_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Loading...