Csound Csound-dev Csound-tekno Search About

[Csnd] Partikkel questions

Date2009-02-27 13:39
FromUnUnUnium
Subject[Csnd] Partikkel questions
Hello,

I am learning Csound, and decided to jump into the deep end and go with
Partikkel - my implementation is Max/MSP based, so I have been looking
through the help patch, and have actually made some decent progress.

I have a few questions about the way Partikkel functions.

Firstly, is there any way to set each of the four "kwaveforms" to come out
of a separate output? I know there is a way to do this on a "per grain"
basis, but I would like to do it so that each of four waveforms are
statically assigned to separate output. Is this possible?

Secondly, I am slightly confused about how Partikkel knows how to scale the
phasor automatically, so that 0. is the beginning, and 1. is the end - I am
assuming it uses the table length of the kwaveform source source table to do
this. Is that correct? If this is the case, is there any way to set this
arbitrarily? The reason I ask is because I would like to be able to change
the record length of an incoming sample, and have it scale accordingly.

The reason I ask is becasue my plan is to record live into a Csound buffer,
and set an arbitrary record length (smaller than the buffer), and have
Partikkel scale playback length accordingly.

Is this a reasonable approach or am I missing something?

All the best, Jeremy
-- 
View this message in context: http://www.nabble.com/Partikkel-questions-tp22246051p22246051.html
Sent from the Csound - General mailing list archive at Nabble.com.


Date2009-03-01 22:51
FromOeyvind Brandtsegg
Subject[Csnd] Re: Partikkel questions
Hello Jeremy,

1:
To enable a several granular streams, using separate source waveforms
and synchronized operation in all other respects, I would use separate
instances of partikkel synchronized with partikkelsync. This would not
make use of partikkel's multiple source waveforms, nor the output
routing capabilities, but actually what you describe is several
separate granular generators so it makes sense to use several
instances.
2:
Yes, as you assume, the phasor range is scaled to the table length of
the source waveform. This might be different (length) for the
different source waveforms by the way. I routinely use a very long
table for live sampling, and assign "segments" from this table as
source waveforms. This is done by manipulating the phasor range and
offset.
pseudo code excerpt (beware, rewritten for this email, not tested in
this version):
ksourcelen = (audio table length)
kstart = (start index of the selected region of the audio table)
kend (end index of the selected region of the audio table)
klength = (kend-kstart)/ksourcelen
kphase = (the moving phase value, range 0 to 1)
ksamplepos = (kphase*klength)+(kstart/ksourcelen)
... and ksamplepos is the value you would send to partikkel asamplepos
parameter (of course, may be a-rate even if this example only uses
k-rate)

best
Oeyvind



2009/2/27 UnUnUnium :
>
> Hello,
>
> I am learning Csound, and decided to jump into the deep end and go with
> Partikkel - my implementation is Max/MSP based, so I have been looking
> through the help patch, and have actually made some decent progress.
>
> I have a few questions about the way Partikkel functions.
>
> Firstly, is there any way to set each of the four "kwaveforms" to come out
> of a separate output? I know there is a way to do this on a "per grain"
> basis, but I would like to do it so that each of four waveforms are
> statically assigned to separate output. Is this possible?
>
> Secondly, I am slightly confused about how Partikkel knows how to scale the
> phasor automatically, so that 0. is the beginning, and 1. is the end - I am
> assuming it uses the table length of the kwaveform source source table to do
> this. Is that correct? If this is the case, is there any way to set this
> arbitrarily? The reason I ask is because I would like to be able to change
> the record length of an incoming sample, and have it scale accordingly.
>
> The reason I ask is becasue my plan is to record live into a Csound buffer,
> and set an arbitrary record length (smaller than the buffer), and have
> Partikkel scale playback length accordingly.
>
> Is this a reasonable approach or am I missing something?
>
> All the best, Jeremy
> --
> View this message in context: http://www.nabble.com/Partikkel-questions-tp22246051p22246051.html
> Sent from the Csound - General mailing list archive at Nabble.com.
>
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>

Date2009-03-03 10:19
FromUnUnUnium
Subject[Csnd] Re: Partikkel questions
Hello Oeyvind,

Thank you very much for this! That formula makes perfect sense - basically,
we get a ratio of the desired length of the "segment" to entire length of
the Table, to scale the phasor to the shorter length, then add the offset to
target the exact section of the buffer. In preliminary testing, this seems
to work perfectly, though I am only using one segment for now.

I am still having trouble understanding how to scale the transposition
factor to play back the segment at its original pitch. Also, what is the
format for the "key" number to the four waves? Is it in hz?

I understand the use of several instances to get discrete outputs from
Partikkel instances -I may just stick with one though, and try to use the
channel masks to pan per grain.

Do understand correctly that the table containing Channel masks is "per
grain", and each time a grain is scheduled, it advances the index into that
table?

All the best and thanks again, Jeremy



Oeyvind Brandtsegg-2 wrote:
> 
> Hello Jeremy,
> 
> 1:
> To enable a several granular streams, using separate source waveforms
> and synchronized operation in all other respects, I would use separate
> instances of partikkel synchronized with partikkelsync. This would not
> make use of partikkel's multiple source waveforms, nor the output
> routing capabilities, but actually what you describe is several
> separate granular generators so it makes sense to use several
> instances.
> 2:
> Yes, as you assume, the phasor range is scaled to the table length of
> the source waveform. This might be different (length) for the
> different source waveforms by the way. I routinely use a very long
> table for live sampling, and assign "segments" from this table as
> source waveforms. This is done by manipulating the phasor range and
> offset.
> pseudo code excerpt (beware, rewritten for this email, not tested in
> this version):
> ksourcelen = (audio table length)
> kstart = (start index of the selected region of the audio table)
> kend (end index of the selected region of the audio table)
> klength = (kend-kstart)/ksourcelen
> kphase = (the moving phase value, range 0 to 1)
> ksamplepos = (kphase*klength)+(kstart/ksourcelen)
> ... and ksamplepos is the value you would send to partikkel asamplepos
> parameter (of course, may be a-rate even if this example only uses
> k-rate)
> 
> best
> Oeyvind
> 
> 
> 
> 2009/2/27 UnUnUnium :
>>
>> Hello,
>>
>> I am learning Csound, and decided to jump into the deep end and go with
>> Partikkel - my implementation is Max/MSP based, so I have been looking
>> through the help patch, and have actually made some decent progress.
>>
>> I have a few questions about the way Partikkel functions.
>>
>> Firstly, is there any way to set each of the four "kwaveforms" to come
>> out
>> of a separate output? I know there is a way to do this on a "per grain"
>> basis, but I would like to do it so that each of four waveforms are
>> statically assigned to separate output. Is this possible?
>>
>> Secondly, I am slightly confused about how Partikkel knows how to scale
>> the
>> phasor automatically, so that 0. is the beginning, and 1. is the end - I
>> am
>> assuming it uses the table length of the kwaveform source source table to
>> do
>> this. Is that correct? If this is the case, is there any way to set this
>> arbitrarily? The reason I ask is because I would like to be able to
>> change
>> the record length of an incoming sample, and have it scale accordingly.
>>
>> The reason I ask is becasue my plan is to record live into a Csound
>> buffer,
>> and set an arbitrary record length (smaller than the buffer), and have
>> Partikkel scale playback length accordingly.
>>
>> Is this a reasonable approach or am I missing something?
>>
>> All the best, Jeremy
>> --
>> View this message in context:
>> http://www.nabble.com/Partikkel-questions-tp22246051p22246051.html
>> Sent from the Csound - General mailing list archive at Nabble.com.
>>
>>
>>
>> Send bugs reports to this list.
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
>> csound"
>>
> 
> 
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
> 
> 

-- 
View this message in context: http://www.nabble.com/Partikkel-questions-tp22246051p22305789.html
Sent from the Csound - General mailing list archive at Nabble.com.


Date2009-03-04 10:48
FromOeyvind Brandtsegg
Subject[Csnd] Re: Re: Partikkel questions
Hello

>
> I am still having trouble understanding how to scale the transposition
> factor to play back the segment at its original pitch. Also, what is the
> format for the "key" number to the four waves? Is it in hz?
>

There is not set format, as very different ranges for the values might
be used in different contexts (e.g. playing back sampled audio or
single-cycle waveforms).
The kwavekey parameter for each wave is generally thought to be used
if you want to transpose each wave differently, and the kwavfreq
parameter transposes all 4. I've used sr/tablelength as kwavekay, and
then kwavfreq = 1 for original playback speed.

> I understand the use of several instances to get discrete outputs from
> Partikkel instances -I may just stick with one though, and try to use the
> channel masks to pan per grain.
>
> Do understand correctly that the table containing Channel masks is "per
> grain", and each time a grain is scheduled, it advances the index into that
> table?
>

Yes, this is correct. So if you do not want to use per grain control,
set the loop start and end points (index 0 and 1 in the table) to zero
and just modify the first data value (index 2 in the table)


best
Oeyvind

Date2009-03-05 12:02
FromUnUnUnium
Subject[Csnd] Re: Re: Partikkel questions
Thanks again Oeyvind,

Just to follow up, I figured out how to get the transposition right for my
purposes:

I multiplied the (segment length in samples by the total table length in
samples), then multiplied that number by (1 divided by the segment length in
seconds).

This allows me to play back the sample at it's original pitch, and apply
another transposition factor to pitch up or down.

All the best, Jeremy




Oeyvind Brandtsegg-2 wrote:
> 
> Hello
> 
>>
>> I am still having trouble understanding how to scale the transposition
>> factor to play back the segment at its original pitch. Also, what is the
>> format for the "key" number to the four waves? Is it in hz?
>>
> 
> There is not set format, as very different ranges for the values might
> be used in different contexts (e.g. playing back sampled audio or
> single-cycle waveforms).
> The kwavekey parameter for each wave is generally thought to be used
> if you want to transpose each wave differently, and the kwavfreq
> parameter transposes all 4. I've used sr/tablelength as kwavekay, and
> then kwavfreq = 1 for original playback speed.
> 
>> I understand the use of several instances to get discrete outputs from
>> Partikkel instances -I may just stick with one though, and try to use the
>> channel masks to pan per grain.
>>
>> Do understand correctly that the table containing Channel masks is "per
>> grain", and each time a grain is scheduled, it advances the index into
>> that
>> table?
>>
> 
> Yes, this is correct. So if you do not want to use per grain control,
> set the loop start and end points (index 0 and 1 in the table) to zero
> and just modify the first data value (index 2 in the table)
> 
> 
> best
> Oeyvind
> 
> 
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
> 
> 

-- 
View this message in context: http://www.nabble.com/Partikkel-questions-tp22246051p22350172.html
Sent from the Csound - General mailing list archive at Nabble.com.


Date2009-03-05 12:39
FromOeyvind Brandtsegg
Subject[Csnd] Re: Re: Re: Partikkel questions
Good to hear you got it working.

It seems your algorithm for original transposition is equivalent to mine,
but yours might be slightly more cpu consuming as you multiply and
divide by the same number (segment length). This could be optimized,
but then again, you probably only calculate this once each time you
assign a segment to partikkel so the difference is neglible.

It would be interesting to hear some sound examples or compositions
when start producing things with it.

best
Oeyvind

2009/3/5 UnUnUnium :
>
> Thanks again Oeyvind,
>
> Just to follow up, I figured out how to get the transposition right for my
> purposes:
>
> I multiplied the (segment length in samples by the total table length in
> samples), then multiplied that number by (1 divided by the segment length in
> seconds).
>
> This allows me to play back the sample at it's original pitch, and apply
> another transposition factor to pitch up or down.
>
> All the best, Jeremy
>
>
>
>
> Oeyvind Brandtsegg-2 wrote:
>>
>> Hello
>>
>>>
>>> I am still having trouble understanding how to scale the transposition
>>> factor to play back the segment at its original pitch. Also, what is the
>>> format for the "key" number to the four waves? Is it in hz?
>>>
>>
>> There is not set format, as very different ranges for the values might
>> be used in different contexts (e.g. playing back sampled audio or
>> single-cycle waveforms).
>> The kwavekey parameter for each wave is generally thought to be used
>> if you want to transpose each wave differently, and the kwavfreq
>> parameter transposes all 4. I've used sr/tablelength as kwavekay, and
>> then kwavfreq = 1 for original playback speed.
>>
>>> I understand the use of several instances to get discrete outputs from
>>> Partikkel instances -I may just stick with one though, and try to use the
>>> channel masks to pan per grain.
>>>
>>> Do understand correctly that the table containing Channel masks is "per
>>> grain", and each time a grain is scheduled, it advances the index into
>>> that
>>> table?
>>>
>>
>> Yes, this is correct. So if you do not want to use per grain control,
>> set the loop start and end points (index 0 and 1 in the table) to zero
>> and just modify the first data value (index 2 in the table)
>>
>>
>> best
>> Oeyvind
>>
>>
>> Send bugs reports to this list.
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
>> csound"
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Partikkel-questions-tp22246051p22350172.html
> Sent from the Csound - General mailing list archive at Nabble.com.
>
>
>
> Send bugs reports to this list.
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>