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 <treegest...@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 <treegest...@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 <treegest...@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 <p...@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-requ...@lists.cs.princeton.edu wrote: >>>> > >>>> > Send chuck-users mailing list submissions to >>>> > 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 >>>> > or, via email, send a message with subject or body 'help' to >>>> > chuck-users-requ...@lists.cs.princeton.edu >>>> > >>>> > You can reach the person managing the list at >>>> > chuck-users-ow...@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 <treegest...@gmail.com> >>>> > To: ChucK Users Mailing List <chuck-users@lists.cs.princeton.edu> >>>> > Subject: [chuck-users] sndBuf.valueAt >>>> > Message-ID: >>>> > <CAAn-Ecy0LKVHCWmoUL2Y7w67rsibhRAHOOkN1neZyU=az3vm= >>>> 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? >>>> > -------------- 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@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@lists.cs.princeton.edu >>>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users >>>> >>> _______________________________________________ > chuck-users mailing list > chuck-users@lists.cs.princeton.edu > https://lists.cs.princeton.edu/mailman/listinfo/chuck-users >
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users