[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sc-users] Multiple time signatures - Scheduling with bar numbers?
Am 21.12.2017 um 05:59 schrieb p.luc.gauthier@xxxxxxxxx:
> Hi there,
>
> 2017-12-17 14:26 GMT-05:00 <daniel-mayer@xxxxxxxx>:
>> .) consider Pspawner
>
> Yes !
> Thank you so very much Daniel !
> However, I did rather use Pspawn over Pspawner as it seamed more
> relevant to my need.
> I will definitely use Pspawner some time around.
Pspawn is James Harkins' more pattern-style variant of Pspawner, which was invented by Ron Kuivila. James was critical himself about Pspawn but I don't know in which cases it might cause problems. If it works well for you here, fine.
> The provided MWE displays a multiple time signatures proof of concept.
>
> One thing I would like to know is, how can I change the .beatsPerBar
> inside a Pbind in a more elegant way?
> I can change the \tempo, but not the .beatsPerBar of said tempo.
You need to use t.schedAbs inside the Pfunc as you did in the first post.
>
> On a side note, it's very good to know that you can have 3.5 as .beatsPerBar
I'm unsure about the consequences of this.
You could check out PSPdiv from miSCellaneous_lib quark, based on Pspawner.
It's a multi-layer pulse divider which can produce complex (poly-)rhythms with reduced input.
From the help file:
PSPdiv controls the timing of one or several layers of event patterns by a single pulse pattern. In every layer single pulse durations or integer multiples ('division bases') of pulse durations can be divided by Integers or proportionally. For every layer the event pattern data can be given as event pattern or a function, which is generating an event pattern for every divisional operation. Division bases and divisions as well as the pulse itself can be controlled by patterns.
PSPdiv is built on Pspawner and therefore allows sequential or parallel spawning: the type of embedding can be sequenced by a pattern for every divisional operation. So a single layer alone can produce a number of overlapping sequences.
Time division in space notation scheme with two layers and embedding of sequential type:
(see graphic)
https://github.com/dkmayer/miSCellaneous_lib/blob/master/HelpSource/Classes/attachments/PSPdiv/PSPdiv_graph_1.png
A sequence of regular or irregular pulses is given as pattern of floats, these durations are marked as proportional spaces in the graphic. The sequence of divBases collects groups of pulses and divides them according to the sequence of divs. The resulting durations of each layer are again marked by proportional spacing, common entry points of layers are marked by emphasized vertical lines.
Adapting your example:
// Function that produces Pattern from durs according to divBase and div input
p = { |durs|
// use durs calculated from pulse, div and divBase
var r = durs.size - 1;
Pbind(
\dur, Pseq(durs),
\instrument, \metronome,
\degree, 0,
\octave, Pseq([7, Pn(5, r)]),
\amp, Pseq([2/3, Pn(1, r)])
)
};
// same pulse divided
PSPdiv(1, p, Pseq([4, 4, 6], 2)).play
// proportional pulses divided (which here results in equal sub-pulses)
PSPdiv(Pseq([2, 2, 3], 2), p, Pseq([4, 4, 6], 2)).play
PSPdiv(Pseq([2, 2, 1], 2), p, Pseq([4, 4, 6], 2)).play
Greetings
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: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/