[chuck-users] sndBuf.valueAt (Forrest Curo asks)

Mario Buoninfante mario.buoninfante at gmail.com
Mon Apr 20 14:31:39 EDT 2020


Hi,

In case you're interested I made a SampHold chugin that you can find here:
https://github.com/mariobuoninfante/ChucK_chugins

Cheers,
Mario

On Mon, 20 Apr 2020 at 18:05, Forrest Curo <treegestalt at gmail.com> wrote:

> "A sample and hold uses a periodic wave as an input. The wave is sampled
> at regular
> intervals. The resulting values are used as a control. It "samples" the
> wave and "holds" that
> value until a new value is sampled. It can be thought of as an analog to
> digital converter with
> a low frequency sampling rate (though technically the wave being sampled
> is also digital).
> The effect is similar to a strobe light or motion picture film taking
> snapshots of a smooth
> process. That smooth process is then quantized into discrete steps.
>
> "How is this useful in synthesis? Why would you want to freeze-frame a
> wave form?
> The idea is that even though the sample rate is too low to accurately
> represent the true shape
> of the wave, patterns will still emerge because the wave is periodic, and
> the sample rate is
> periodic."
>
> [David Cottle, _Computer Music with Examples in Supercollider 3]
>
> (This can be done in ChucK; the sndBuf containing the wave can be sampled
> via .valueAt without directly playing it.)
>
> On Sun, Apr 19, 2020 at 9:50 PM Forrest Curo <treegestalt at gmail.com>
> wrote:
>
>> I've achieved  dreadfulness with this. Okay, will vary the rhythm etc and
>> reduce the range, get a more interesting scale, but... hmm!
>> SawOsc s => JCRev r => dac;
>> .1 => s.gain;
>> .1 => r.mix;
>> 1 => int incsamp;
>> 0 => int ps;
>> 1 => float height;
>> 0 => float maxsofar;
>> 0 => float freq;
>> SndBuf buf;
>>
>> "/home/forrest/chuck/examples/basic/om.wav" => buf.read;
>>
>> buf.samples()  => int numSamples;
>>  Std.rand2(1, numSamples-1) => incsamp;
>> while(true){
>> (incsamp + ps) % numSamples => ps;
>> buf.valueAt(ps) + 0.125 => height;
>> Std.mtof(Math.ceil(Std.fabs(500.0 * height)) ) => freq => s.freq;
>>
>> if(freq > maxsofar) {
>> freq => maxsofar;
>> <<< maxsofar >>>;
>> }
>> 0.75::second => now;
>> }
>>
>>
>>
>>
>>
>>
>> On Sun, Apr 19, 2020 at 1:42 PM Forrest Curo <treegestalt at gmail.com>
>> wrote:
>>
>>> Um. that works.
>>> So does this:
>>> SndBuf s => blackhole;
>>> "/home/forrest/chuck/examples/basic/om.wav" => s.read;
>>> float samples;
>>> 0 => int i;
>>> while (s.pos() < s.samples())  {
>>>     <<< s.last() >>>;
>>>     s.pos() => i;
>>>     (s.valueAt(i)) => samples;
>>>     <<< samples >>>;
>>>     samp => now;
>>> }
>>>
>>> I was having trouble trying to read a sndBuf like an array, or put its
>>> contents into an array.
>>> Maybe I was reading numbers off the end of the file. Declaring
>>> 'float samples[]; '
>>> and doing
>>> 's.valueAt(i) => samples[i];'
>>>
>>> got me a 'Null pointer' error.
>>>
>>> Stumbling over syntax, I guess. Thanks for help!
>>>
>>> On Sun, Apr 19, 2020 at 10:54 AM Perry Cook <prc at cs.princeton.edu>
>>> wrote:
>>>
>>>> This is truly odd.  I don’t have easy means to test it.   I don’t
>>>> know why it wouldbe broken dependent on the dac, however.
>>>>
>>>> For fun you might try something like this, just to verify that the
>>>> valueAt() function is what’s busted.
>>>>
>>>> SndBuf s => blackhole;
>>>> “Fred.wav” => s.read;
>>>>
>>>> while (s.pos() < s.samples())  {
>>>>     <<< s.last() >>>;
>>>>     samp => now;
>>>> }
>>>>
>>>> PRC
>>>>
>>>> > On Apr 19, 2020, at 9:00 AM,
>>>> chuck-users-request at lists.cs.princeton.edu wrote:
>>>> >
>>>> > Send chuck-users mailing list submissions to
>>>> >       chuck-users at lists.cs.princeton.edu
>>>> >
>>>> > To subscribe or unsubscribe via the World Wide Web, visit
>>>> >       https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>> > or, via email, send a message with subject or body 'help' to
>>>> >       chuck-users-request at lists.cs.princeton.edu
>>>> >
>>>> > You can reach the person managing the list at
>>>> >       chuck-users-owner at lists.cs.princeton.edu
>>>> >
>>>> > When replying, please edit your Subject line so it is more specific
>>>> > than "Re: Contents of chuck-users digest..."
>>>> >
>>>> >
>>>> > Today's Topics:
>>>> >
>>>> >   1. sndBuf.valueAt (Forrest Curo)
>>>> >
>>>> >
>>>> > ----------------------------------------------------------------------
>>>> >
>>>> > Message: 1
>>>> > Date: Sun, 19 Apr 2020 07:30:15 -0700
>>>> > From: Forrest Curo <treegestalt at gmail.com>
>>>> > To: ChucK Users Mailing List <chuck-users at lists.cs.princeton.edu>
>>>> > Subject: [chuck-users] sndBuf.valueAt
>>>> > Message-ID:
>>>> >       <CAAn-Ecy0LKVHCWmoUL2Y7w67rsibhRAHOOkN1neZyU=az3vm=
>>>> g at mail.gmail.com>
>>>> > Content-Type: text/plain; charset="utf-8"
>>>> >
>>>> > Using chuck linux-jack this gives me reasonable numbers between -1
>>>> and 1.
>>>> > Using chuck linux-alsa I'm able to play the file I've read into
>>>> sndBuf; but
>>>> > trying to copy it via .valueAt gives absurdly high ["out of range"]
>>>> numbers
>>>> > at each point. [It can be a different high number different times I
>>>> run
>>>> > chuck, but the number it is turns up at every point I sample.]
>>>> >
>>>> > Is there a fix for this? Aside from using jack on a computer where it
>>>> > befnurgles the midi?
>>>> > -------------- next part --------------
>>>> > An HTML attachment was scrubbed...
>>>> > URL: <
>>>> http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200419/76d94eef/attachment-0001.html
>>>> >
>>>> >
>>>> > ------------------------------
>>>> >
>>>> > _______________________________________________
>>>> > chuck-users mailing list
>>>> > chuck-users at lists.cs.princeton.edu
>>>> > https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>> >
>>>> >
>>>> > End of chuck-users Digest, Vol 176, Issue 4
>>>> > *******************************************
>>>>
>>>> _______________________________________________
>>>> chuck-users mailing list
>>>> chuck-users at lists.cs.princeton.edu
>>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>>>
>>> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200420/a0bb1aa8/attachment-0001.html>


More information about the chuck-users mailing list