Quantcast

How to make brown-rhythm impulses

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

How to make brown-rhythm impulses

Bernard Geyer
Hello,

I try to emulate the brown-rhythm object from Karlheinz Essl (used in RTC-lib for Max)

He gives the following definition of it :

"Generates a brownian-movement-like rhythm of a geometrical row of entry delays (ED) between a minimum and a maximum entry delay and a certain number of ED-values. The brownian factor determines the distance between two succeding rhythmical values. A factor of 0 produces a periodic rhythm, wheras a factor of 1 will output random values of the given range."

I want to use it to trigger sound buffers.
I suppose it will work like Dust, excepted the random function choose between a certain number of specific values.

Should I modulate the frequency of Impulse in some way ?

Thanks in advance,
Bernard
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make brown-rhythm impulses

bbarros
On 1/1/17 8:54 PM, Bernard Geyer wrote:

> Hello,
>
> I try to emulate the brown-rhythm object from Karlheinz Essl (used in
> RTC-lib for Max)
>
> He gives the following definition of it :
>
> "Generates a brownian-movement-like rhythm of a geometrical row of entry
> delays (ED) between a minimum and a maximum entry delay and a certain number
> of ED-values. The brownian factor determines the distance between two
> succeding rhythmical values. A factor of 0 produces a periodic rhythm,
> wheras a factor of 1 will output random values of the given range."
>
> I want to use it to trigger sound buffers.
> I suppose it will work like Dust, excepted the random function choose
> between a certain number of specific values.
>
> Should I modulate the frequency of Impulse in some way ?
>


Maybe something like this?

(
SynthDef(\grain,
    { arg out=0, freq=440, sustain=0.05;
        var env;
        env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:2);
        Out.ar(out, SinOsc.ar(freq, 0, env))
    }).add;
)



(
a = Pbrown(0.0, 1.0, 1, inf).asStream;

{
    loop {
        Synth(\grain);
        a.next.wait;
    }
}.fork;
)

_______________________________________________
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: How to make brown-rhythm impulses

Nathan Ho
In reply to this post by Bernard Geyer
Bernard Geyer wrote
"Generates a brownian-movement-like rhythm of a geometrical row of entry delays (ED) between a minimum and a maximum entry delay and a certain number of ED-values. The brownian factor determines the distance between two succeding rhythmical values. A factor of 0 produces a periodic rhythm, wheras a factor of 1 will output random values of the given range."

I want to use it to trigger sound buffers.
I suppose it will work like Dust, excepted the random function choose between a certain number of specific values.
Hi Bernard,

In addition to Bernardo's demonstration of how to do this in the patterns system, you can also use TDuty and Dbrown to generate such a series of impulses on the server.


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

Re: How to make brown-rhythm impulses

Bernard Geyer
In reply to this post by bbarros
For each sound the process will be duplicated 8 times, to make the granulation complex enough. And I want to use 4 to 8 such "sounds" together.

For this reason I would like to do everything in the server, to avoid a so great number of OSC messages sent to the server.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to make brown-rhythm impulses

bbarros
On 1/1/17 10:23 PM, Bernard Geyer wrote:
> For each sound the process will be duplicated 8 times, to make the
> granulation complex enough. And I want to use 4 to 8 such "sounds" together.
>
> For this reason I would like to do everything in the server, to avoid a so
> great number of OSC messages sent to the server.
>

You can use Dbrown then

{
    var t, p;
    t = Dbrown(0.9, 10.1, 3, inf);
    p = Dbrown(0,3.0, 0.5, inf);
        TGrains.ar(2, Impulse.ar(t), b, 1, 0.6, 2/t, 1, 0.1, 4);
}.play



_______________________________________________
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: How to make brown-rhythm impulses

bbarros
On 1/1/17 11:22 PM, Bernardo Barros wrote:
> On 1/1/17 10:23 PM, Bernard Geyer wrote:
>> For each sound the process will be duplicated 8 times, to make the
>> granulation complex enough. And I want to use 4 to 8 such "sounds" together.
>>
>> For this reason I would like to do everything in the server, to avoid a so
>> great number of OSC messages sent to the server.
>>
>

Sorry, better example now.

I don't think you would have problems using a huge number of Synths for
granular synthesis.

b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");

(
{
    var t, p;
    t = Dbrown(0.9, 10.1, 3, inf);
    p = Dbrown(0,3.0, 0.2, inf);
    TGrains.ar(2, Impulse.ar(t), b, 1, p, 2/t, 1, 0.1, 4);
}.play
)




_______________________________________________
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: How to make brown-rhythm impulses

Glen Fraser
   t = Dbrown(0.9, 10.1, 3, inf);
   p = Dbrown(0,3.0, 0.2, inf);
   TGrains.ar(2, Impulse.ar(t), b, 1, p, 2/t, 1, 0.1, 4);

Out of curiosity, what does it mean to use Demand-rate UGens this way, without any Demand (.kr or .ar) generator to pull them at a specific rate?  In this case, will these Impulse/TGrains arguments be “demanded” at audio rate?  (it seems to be something like that in this case, but doesn’t work that way when you use a “raw” demand UGen as argument for, say, a SinOsc UGen)

{ SinOsc.ar(Dbrown(100, 4000, 2000)) }.plot(0.1) // does not work

{ SinOsc.ar(Demand.ar(Impulse.ar(100), 0, Dbrown(100, 4000, 2000))) }.plot(0.1) // works

Thanks,
Glen.

On 02 Jan 2017, at 03:27, Bernardo Barros <[hidden email]> wrote:

On 1/1/17 11:22 PM, Bernardo Barros wrote:
On 1/1/17 10:23 PM, Bernard Geyer wrote:
For each sound the process will be duplicated 8 times, to make the
granulation complex enough. And I want to use 4 to 8 such "sounds" together.

For this reason I would like to do everything in the server, to avoid a so
great number of OSC messages sent to the server.



Sorry, better example now.

I don't think you would have problems using a huge number of Synths for
granular synthesis.

b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");

(
{
   var t, p;
   t = Dbrown(0.9, 10.1, 3, inf);
   p = Dbrown(0,3.0, 0.2, inf);
   TGrains.ar(2, Impulse.ar(t), b, 1, p, 2/t, 1, 0.1, 4);
}.play
)




_______________________________________________
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: How to make brown-rhythm impulses

bbarros
On 1/2/17 6:43 AM, Glen Fraser wrote:
>
> Out of curiosity, what does it mean to use Demand-rate UGens this way,
> without any Demand (.kr or .ar) generator to pull them at a specific
> rate?  In this case, will these Impulse/TGrains arguments be “demanded”
> at audio rate?  (it seems to be something like that in this case, but
> doesn’t work that way when you use a “raw” demand UGen as argument for,
> say, a SinOsc UGen)


Hello,

TGrains and GrainBuf accept DUGen for some of its inputs, it has a
similar concept i.e. they request a new value after each trigger. In
fact all triggered UGens could theoretically have a DEMANDINPUT.

This is pretty handy since you can have per-grain parameter control
without having to be concerned by the rate that the grains are being
triggered.

Not sure if this is the best example for the original question.



_______________________________________________
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: How to make brown-rhythm impulses

Glen Fraser
Thanks for confirming, that’s cool, though not at all clear from the documentation of TGrains or GrainBuf — though now I see there is one example using “demand ugens as inputs" in TGrains helpfile, with no further explanation.

Thanks,
Glen.

> On 02 Jan 2017, at 12:01, Bernardo Barros <[hidden email]> wrote:
>
> On 1/2/17 6:43 AM, Glen Fraser wrote:
>>
>> Out of curiosity, what does it mean to use Demand-rate UGens this way,
>> without any Demand (.kr or .ar) generator to pull them at a specific
>> rate?  In this case, will these Impulse/TGrains arguments be “demanded”
>> at audio rate?  (it seems to be something like that in this case, but
>> doesn’t work that way when you use a “raw” demand UGen as argument for,
>> say, a SinOsc UGen)
>
>
> Hello,
>
> TGrains and GrainBuf accept DUGen for some of its inputs, it has a
> similar concept i.e. they request a new value after each trigger. In
> fact all triggered UGens could theoretically have a DEMANDINPUT.
>
> This is pretty handy since you can have per-grain parameter control
> without having to be concerned by the rate that the grains are being
> triggered.
>
> Not sure if this is the best example for the original question.
>
>
>
> _______________________________________________
> 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/


_______________________________________________
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...