From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #264 Reply-To: sc-users Sender: owner-sc-users-digest@lists.io.com Errors-To: owner-sc-users-digest@lists.io.com Precedence: bulk sc-users-digest Thursday, March 22 2001 Volume 01 : Number 264 ---------------------------------------------------------------------- Date: Mon, 19 Mar 2001 22:31:11 -0500 From: Fred Szymanski <---@---.---> Subject: Re: recur ...check out Eric Roberts's "Thinking Recursively" (ISBN 0-471-81652-3), "a small text to solve large problems", John Wiley & Sons. >are there any books, like the art and science of recursion or something >along those lines? i'm one of those slow people, and this binary tree >project (which is also a doubly linked list... deleting a node kinda >sucks) is driving me nuts. just curious if anyone's found a decent book >on recursion, other than a few pages out of your typical programming >book. > >cheers, > >christian ------------------------------ Date: Mon, 19 Mar 2001 22:39:27 -0500 From: christian adam hresko <---@---.---> Subject: Re: recur Fred Szymanski wrote: > ...check out Eric Roberts's "Thinking Recursively" (ISBN 0-471-81652-3), "a > small text to solve large problems", John Wiley & Sons. > > cool deal. i check this out. thanks bunches. cheers, christian ------------------------------ Date: Wed, 21 Mar 2001 02:23:11 -0800 From: Jeremy Zuckerman <---@---.---> Subject: Re: oops > maybe this works the way you like it to: > > ( > Synth.scope({ > var nch, trig, p, silence; > nch = 8; > > trig = Impulse.kr(2); //improvised trigger > > p = MouseX.kr(-1,1); > silence = Plug.ar(0); > silence = Array.fill(nch-2, { silence }); > > TrigXFade.ar({ > var sound, out; > > sound = Pan2.ar(SinOsc.ar(300, 0,0.1), p); //results in 2 chsnnnels; > out = sound ++ silence; > out = out.scramble; > }, trig, 0.5, nch) > > > }); > ) > > > > > > ( > //random channel crossfading > Synth.scope({ > var nch, vols, openOld, fadetime; > nch = 8; > fadetime = 0.5; > openOld = Array.fill(2, { nch.rand }); //init openOld > > vols = Array.fill(nch, { Plug.kr(0) }); > thisSynth.repeat(0, 2, { var openNew; > openNew = Array.fill(2, { nch.rand }); > openOld.do({ arg i; vols.at(i).line(0, fadetime); }); > openNew.do({ arg i; vols.at(i).line(1, fadetime); }); > openOld = openNew; > }); > SinOsc.ar(300, 0, 0.1)*vols > }); > > ) Julian, Thanks for the help. Is there a way to dynamically specify where the Pan2 is being routed instead of using .scramble? jz ------------------------------ Date: Tue, 20 Mar 2001 13:14:32 +0100 From: Julian Rohrhuber <---@---.---> Subject: Re: oops > >Julian, >Thanks for the help. Is there a way to dynamically specify where the Pan2 >is being routed instead of using .scramble? >jz of course you can use any message that Array understands. You could have a look at Array.help, SequenceableCollection.help for that. you could use .rotate(1), for example. ------------------------------ Date: Wed, 21 Mar 2001 08:37:20 -0800 From: Jeremy Zuckerman <---@---.---> Subject: Re: oops on 3/20/01 4:14 AM, Julian Rohrhuber at sa6a014@uni-hamburg.de wrote: >> >> Julian, >> Thanks for the help. Is there a way to dynamically specify where the Pan2 >> is being routed instead of using .scramble? >> jz > > of course you can use any message that Array understands. > You could have a look at Array.help, SequenceableCollection.help > for that. you could use .rotate(1), for example. Thanks. I think that will help a lot. jz ------------------------------ Date: Wed, 21 Mar 2001 21:59:04 +0100 (CET) From: integer@www.god-emil.dk Subject: [ot] [!nt] \n2+0\ nn kontra mikrosoft - >Hello my dear, > > > from just phoned to say you won >one of the Top 25 Women on the Web awards. > >! > >=) > > >The award itself is a crystal piece of sculpture, the recipient will be asked to > give a short spiel, and the ceremony will be immortalised on CD, which will con >tain details of the winners (title, photo, biography) and videos of the April 24 > knees up. A full press corp will be at the event, and they expect to be covered > by CNNet, the Times, San Jose Mercury, and other tech-savvy news media. > >So I said I would pass on the glad tidings and ask you to confirm with her your >preferred title quick as a bunny, as the international press releases are being >sent out tomorrow. > >In the near term she also needs a photo and bio from you. > > >Expect an e-mail from her soon. > >Hug, http://www.top25.org/winner.html prev winners konkluz!e = progresz = !nev!tabl. zkueek. pre.konssept!n meeTz ver!f1kat!n. - Netochka Nezvanova - i was designed especially for you f3.MASCHIN3NKUNST head to toe and a few stops in between @www.eusocial.com 17.hzV.tRL.478 e | | +---------- | | < \\----------------+ | n2t | > e - - egoiste - i have no friends...i make my mind my friend - melt this right into your lips at least twice a day. ------------------------------ Date: Wed, 21 Mar 2001 16:36:41 -0600 From: MarkDavid <---@---.---> Subject: Re: oops > This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. - --MS_Mac_OE_3068037401_44112_MIME_Part Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit Maybe this code will help too. I came up with it (with much help from James and the list) because I was at one time working on something like what you want to do. I hope this helps- MD (Synth.scope({var a,b,c,d, modulator, out; a = SinOsc.ar([110,220,330,440]); /*a = AudioIn.ar([1,2,3,4]);*/ b = a.copyRange(0,1); c = a.copyRange(2,2); d = a.copyRange(3,3); e = b * SinOsc.ar(220,0,1); f = (c * 0.4) * SinOsc.ar(300,[0,0.5pi]); g = PitchShift.ar( (d * 0.5), /* stereo audio input*/ 0.04, /* grain size*/ FSinOsc.kr(10), /* mouse x controls pitch shift ratio*/ 0, /* pitch dispersion*/ 0.004 ); /* time dispersion*/ e ++ f ++ g;/*concatenate: this moves the channels from left to right so if you skip ch. 2 input and use 1,3,4 your outputs will be 1,2,3 also this order determines output order e,f,g = 1,2,3*/ }); ) on 3/18/01 3:05 AM, Jeremy Zuckerman at jzsc@dynamicimpulse.com wrote: > Sorry all. I sent this email from the wrong account (thanks for posting it > anyway James) : > > Would someone lend a hand with something I've been struggling with for a > while? > > I'm building an asynchronous panner. For example, if I want to pan from > chan1 to chan4 it appears that with the existing pan Ugens I'm forced to pan > across channels 2 and 3 first. I remedied this by building a class of two > crossfading PanAz's using sequencers to input the array values and index > through them: chan1 -> chan7 -> chan3 -> chan6 etc. Now I want to be able > to change the arrays of channel values dynamically. I tried using Pseq and > Pswitch inside of a Pbind but spawning the panner doesn't deliver the > desired results. I'd really appreciate any help. Here's an example of my > code: > > ( > /* asynchronous panner */ > > var w; > var in, chnls, width, check, rateSlider; > var positionA, positionB; > var gestMin, gestpace, xfade; > var offset; > var offsetA, offsetB; > var trigA, trigB; > > w = GUIWindow.new("panel", Rect.newBy(215, 91, 252, 206)) > .backColor_(rgb(104,118,231)); > check = CheckBoxView.new( w, Rect.newBy(29, 25, 141, 31), "on/off", 0, > 0, 1, 0, 'linear'); > rateSlider = SliderView.new( w, Rect.newBy(29, 99, 191, 63), "rate", 0, > 0, 5, 0, 'linear'); > StringView.new( w, Rect.newBy(29, 75, 128, 20), "Gesture Rate"); > > gestMin = 0.2; > offset = 2pi/1.333333; > offsetA = pi; > offsetB = 2pi; > s = Wavetable.sineFill( 1024, [1]); > t = Wavetable.sineFill( 2048, > [1, 0, 1/9, 0, 1/25, 0, 1/49, 0, 1/81, 0, 1/121], > [2pi, 2pi, pi, 2pi, 2pi, 2pi, pi, 2pi, 2pi, 2pi, pi] > ); > Synth.scope({ > in = WhiteNoise.ar(0.5); > chnls = 8; > gestpace = gestMin+rateSlider.kr; > width = 2.0; > > Pause.ar({ > trigA = Osc.kr(s, gestpace, offsetA); > trigB = Osc.kr(s, gestpace, offsetB); > positionA = Sequencer.kr( `([0, 6]), trigA ); > // 1st channel in array ('positionB') is heard last > positionB = Sequencer.kr( `([2, 4]), trigB ); > xfade = Osc.ar(t, gestpace, offset, 0.25, 0.25); > /* my class which I haven't included: > InputFunc2.ar(in, chnls, positionA, xfade, width, positionB ); > */ > PanAz.ar( chnls, in, 2.0*positionA/chnls, 0.5-xfade, width ) > + PanAz.ar( chnls, in, 2.0*positionB/chnls, xfade, width ); > }, check.kr); > }); > w.close > ) > Thanks all. > Jeremy - --MS_Mac_OE_3068037401_44112_MIME_Part Content-type: multipart/appledouble; boundary="MS_Mac_OE_3068037397_57513_MIME_Part" - --MS_Mac_OE_3068037397_57513_MIME_Part Content-type: application/applefile; name="DiscreteMultiChannel" Content-transfer-encoding: base64 Content-disposition: attachment AAUWBwACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAJAAAAPgAAACAAAAADAAAAXgAAABQAAAAC AAAAcgAAA5RURVhUU0NqbQEAApIETwAAAAAAAAAAAAAAAAAAAAAAAERpc2NyZXRlTXVsdGlD aGFubmVsAAABAAAAA04AAAJOAAAARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAA BBoACwBTAGEAbQBwAGwAZQAgAGMAbwBkAGUAAQAAAAAADgAArCy2ZbEitmWxngAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAZQFyA+kCVgMQ/////wIA//j/8MAAAABAAAAAAAAEGgAA AAAAAAAAAB4AAAQaAAwAUwBhAG0AcABsAGUAcgAgAFAAcgBvAGoAAQAAAAAACgAAOmq1riVD tfllWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0wCJA+QCGwPg/////wAAAkYAHQAA AAAACwAJAAQAAAAJAAAAAAAAAAAAAQALAAkABAAAAAkAAAAAwAAAAAAGAAsACQAEAAAACQAA AAAAAAAAAA4ACwAJAAQAAAAJAAAAAMAAAAAAEQALAAkABAAAAAkAAAAAAAAAAAAwAAsACQAE AAAACQAAAADAAAAAADYACwAJAAQAAAAJAAAAAAAAAAAAVAALAAkABAAAAAkAAAAAwAAAAABb AAsACQAEAAAACQAAAAAAAAAAALoACwAJAAQAAAAJAAAAAMAAAAAAwAALAAkABAAAAAkAAAAA AAAAAADmAAsACQAEAAAACQAAAADAAAAAAOwACwAJAAQAAAAJAAAAAAAAAAABBQALAAkABAAA AAkAAAAAwAAAAAEPAAsACQAEAAAACQAAAAAAAAAAAR8ACwAJAAQAAAAJwAAAAAAAAAABNwAL AAkABAAAAAkAAAAAAAAAAAFCAAsACQAEAAAACcAAAAAAAAAAAVIACwAJAAQAAAAJAAAAAAAA AAABVAALAAkABAAAAAkAAAAAwAAAAAFbAAsACQAEAAAACQAAAAAAAAAAAWQACwAJAAQAAAAJ wAAAAAAAAAABjAALAAkABAAAAAkAAAAAAAAAAAGUAAsACQAEAAAACcAAAAAAAAAAAaoACwAJ AAQAAAAJAAAAAAAAAAABtgALAAkABAAAAAnAAAAAAAAAAAHLAAsACQAEAAAACQAAAAAAAAAA AdoACwAJAAQAAAAJwAAAAAAAAAACkAALAAkABAAAAAkAAAAAAAAAAAAAAAABAAAAA04AAAJO AAAARgV6BIhLSAAAABwARgABc3R5bAAAABJTT1VQAAAAHgCA//8AAAAAAAAAAACA//8AAAJK AAAAAA== - --MS_Mac_OE_3068037397_57513_MIME_Part Content-type: text/plain; name="DiscreteMultiChannel"; x-mac-creator="53436A6D"; x-mac-type="54455854" Content-disposition: attachment Content-transfer-encoding: base64 KFN5bnRoLnNjb3BlKHt2YXIgYSxiLGMsZCwgbW9kdWxhdG9yLCBvdXQ7DQ1hID0gU2luT3Nj LmFyKFsxMTAsMjIwLDMzMCw0NDBdKTsNLyphID0gQXVkaW9Jbi5hcihbMSwyLDMsNF0pOyov DWIgPSBhLmNvcHlSYW5nZSgwLDEpOw1jID0gYS5jb3B5UmFuZ2UoMiwyKTsNZCA9IGEuY29w eVJhbmdlKDMsMyk7DQ0NDWUgPSBiICogU2luT3NjLmFyKDIyMCwwLDEpOwkJDQkJDQkJDWYg PSAoYyAqIDAuNCkgKiBTaW5Pc2MuYXIoMzAwLFswLDAuNXBpXSk7DQ1nID0gUGl0Y2hTaGlm dC5hcigNKGQgKiAwLjUpLAkvKiBzdGVyZW8gYXVkaW8gaW5wdXQqLw0JCTAuMDQsIAkJCS8q IGdyYWluIHNpemUqLw0JCUZTaW5Pc2Mua3IoMTApLCAvKiBtb3VzZSB4IGNvbnRyb2xzIHBp dGNoIHNoaWZ0IHJhdGlvKi8NCQkwLCAJCQkvKiBwaXRjaCBkaXNwZXJzaW9uKi8NCQkwLjAw NAkpOwkJLyogdGltZSBkaXNwZXJzaW9uKi8NCQkNZSArKyBmICsrIGc7Lypjb25jYXRlbmF0 ZTogdGhpcyBtb3ZlcyB0aGUgY2hhbm5lbHMgZnJvbSBsZWZ0IHRvIHJpZ2h0IA1zbyBpZiB5 b3Ugc2tpcCBjaC4gMiBpbnB1dCBhbmQgdXNlIDEsMyw0IHlvdXIgb3V0cHV0cyB3aWxsIGJl IDEsMiwzDWFsc28gdGhpcyBvcmRlciBkZXRlcm1pbmVzIG91dHB1dCBvcmRlciBlLGYsZyA9 IDEsMiwzKi8NDQkJfSk7DQ0pDQ0= - --MS_Mac_OE_3068037397_57513_MIME_Part-- - --MS_Mac_OE_3068037401_44112_MIME_Part-- ------------------------------ Date: Sun, 04 Mar 2001 23:51:21 +0400 From: John Eacott <---@---.---> Subject: Semaphore at interrupt level?? Im trying to use the Date.getDate method from within a Spawn and it gives me: Trying to acquire a semaphore at interrupt level, but no ready threads and this is not a Task. ERROR: Main thread must not acquire a semaphore at interrupt level. ERROR: Primitive '_SemaphoreAcquire' failed. a) What is a semaphore at interrupt level? b) How do I fix this? Thanks in advance, John - -- john eacott ======================================== composer - interactive sound design informal.org --- strangeattraction.com --- wmin.ac.uk eacottj@wmin.ac.uk --- john@informal.org ------------------------------ End of sc-users-digest V1 #264 ******************************