Note there are also a few different sample-hold chubgraphs in LiCK https://github.com/heuermh/lick/tree/master/lick/lfo https://github.com/heuermh/lick/tree/master/lick/lfo Cheers! michael
On Apr 20, 2020, at 2:10 PM, Forrest Curo
wrote: Yes, I'm interested! Whatever turns out easier, one could apply it to note lengths, amplitudes, other parameters in same way for same reasons: a bit of patterned randomness.
On Mon, Apr 20, 2020 at 11:32 AM Mario Buoninfante
mailto:mario.buoninfante@gmail.com> wrote: Hi, In case you're interested I made a SampHold chugin that you can find here: https://github.com/mariobuoninfante/ChucK_chugins https://github.com/mariobuoninfante/ChucK_chugins
Cheers, Mario
On Mon, 20 Apr 2020 at 18:05, Forrest Curo
mailto:treegestalt@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
mailto:treegestalt@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
mailto:treegestalt@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
mailto:prc@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@lists.cs.princeton.edu mailto:chuck-users-request@lists.cs.princeton.edu wrote:
Send chuck-users mailing list submissions to chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu
To subscribe or unsubscribe via the World Wide Web, visit https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users or, via email, send a message with subject or body 'help' to chuck-users-request@lists.cs.princeton.edu mailto:chuck-users-request@lists.cs.princeton.edu
You can reach the person managing the list at chuck-users-owner@lists.cs.princeton.edu mailto:chuck-users-owner@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
mailto:treegestalt@gmail.com> To: ChucK Users Mailing List mailto:chuck-users@lists.cs.princeton.edu> Subject: [chuck-users] sndBuf.valueAt Message-ID: mailto:g@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?