From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #381 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 Friday, July 6 2001 Volume 01 : Number 381 ---------------------------------------------------------------------- Date: Tue, 13 Nov 2001 13:28:27 +1100 From: Garth Paine <---@---.---> Subject: Re: sc working group at princeton >the supercollider working group at princeton will meet for the first time >this wednesday. anyone is welcome. details can be found here: >http://music.princeton.edu/~newton/group.html Looks like your having some fun - wish I could come - can't afford the airfare at the moment though ;-) - -- Cheers Garth see my installation pieces and hear my music at http://www.activatedspace.com.au Activated Space ph/fax. 61 3 59734747 ------------------------------ Date: Wed, 14 Nov 2001 21:12:39 +0100 From: "Pieter Volger" <---@---.---> Subject: ParameterWindow Hello, although I compiled GUIUTILS 2.0b SC 2.2.11 doesn't find ParameterWindow in "Tibetan Cymbals"-Example. any advice?? thank you for help Pieter ------------------------------ Date: Thu, 15 Nov 2001 15:59:05 +1000 From: Garth Paine <---@---.---> Subject: Re: User Groups Hi all, Can anyone give me some guidance for a friend who is coming to SF and want so hear some electronic music gig? I think he is coming in about 3 weeks. Thanks Cheers - -- Garth Paine Composer/Installation Artist www.activatedspace.com.au ------------------------------ Date: Thu, 15 Nov 2001 14:45:03 +0100 (CET) From: Giorgio Robino <---@---.---> Subject: Re: patch: stringsTexture hi mpw, > are just too many ugens to use the patch as is. (of course that's > why > it sounds sooo good.) I am glad :) manies things are to be improoved: 1/ the stringSingle{} function for a more "natural emulation" in different frequencies range, and with a stereo image, 2/ the aReverb{} function for a better over-hall reverb, 3/ a more intelligent dynamic evolution of the just-intonation ensemble parameters (my idea is to use Synth.tsched{} to scheduling events in run-time, like change the degree and so on, but I have some difficulties to understand how to do), maybe a more structured approach with patterns (Pbind and so on), maybe some "SC coder" have time and patience to improove ;-) bye Giorgio - --- Giorgio Robino http://www.giorgiorobino.com , mailto:giorgio.robino@giorgiorobino.com - --- DEEP LISTENINGS "ascolti profondi, the new music magazine" (rivista trimestrale di cultura musicale), vendita per solo per corrispondenza. Rivolgersi a Gianluigi Gasparetti, mailto:deeplist@tin.it - --- SUPERCOLLIDER is an Object Oriented Programming Environment for real-time audio and video processing. It is one of the finest and most versatile environments for signal processing and especially for creating music applications of all kinds, such as complete compositions, interactive performances, installations etc. It runs on Macintosh Power PC computers. The author of SuperCollider is James McCartney. He maintains a site at: http://www.audiosynth.com ------------------------------ Date: Thu, 15 Nov 2001 15:19:22 +0100 From: Julian Rohrhuber <---@---.---> Subject: Pfindur with Pfx James, you posted a very useful solution how to stop a Pattern after a given time, Pfindur: Pfindur : FilterPattern { var <>dur, <>tolerance; *new { arg dur, pattern, tolerance = 0.001; ^super.new(pattern).dur_(dur).tolerance_(tolerance) } asStream { ^Routine.new({ arg inevent; var item, stream, delta, elapsed = 0.0, nextElapsed; stream = pattern.asStream; loop ({ inevent = stream.next(inevent); delta = inevent.delta; nextElapsed = elapsed + delta; if (nextElapsed.round(tolerance) >= dur, { // must always copy an event before altering it. inevent = inevent.copy; // fix delta time. inevent.put(\delta, dur - elapsed); inevent = inevent.yield; // the note is not truncated here. maybe you want that.. // end of pattern nil.alwaysYield; },{ elapsed = nextElapsed; inevent = inevent.yield; }); }); }); } } in combination with Pfx the synths don't get released somehow: ( var pattern; pattern = Pbind(\degree, Pwhite(0, 5, inf), \dur, 0.25); pattern = Pfx(pattern, { arg in; RLPF.ar(in, 400, 0.2) }); Pn(Pfindur(2, pattern), inf).play; ) where do I need to change the system so that the effectsynth gets released properly? - -- ** ------------------------------ Date: Thu, 15 Nov 2001 12:41:14 -0600 From: matrix6k <---@---.---> Subject: Re: patch: stringsTexture This is a multi-part message in MIME format. - --------------AA8F0BEDCFE30DE432340C28 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit do you have this reverb class ? this might help out a lot. Giorgio Robino wrote: > > hi mpw, > > > are just too many ugens to use the patch as is. (of course that's > > why > > it sounds sooo good.) > > I am glad :) > > manies things are to be improoved: > > 1/ the stringSingle{} function for a more "natural emulation" in different frequencies range, and with a stereo image, > > 2/ the aReverb{} function for a better over-hall reverb, > > 3/ a more intelligent dynamic evolution of the just-intonation ensemble parameters > (my idea is to use Synth.tsched{} to scheduling events in run-time, like change the degree and so on, but I have some difficulties to understand how to do), maybe a more structured approach with patterns (Pbind and so on), > > maybe some "SC coder" have time and patience to improove ;-) > > bye > Giorgio > > --- > Giorgio Robino > http://www.giorgiorobino.com , mailto:giorgio.robino@giorgiorobino.com > --- > DEEP LISTENINGS > "ascolti profondi, the new music magazine" (rivista trimestrale di cultura musicale), vendita per solo per corrispondenza. Rivolgersi a Gianluigi Gasparetti, mailto:deeplist@tin.it > --- > SUPERCOLLIDER > is an Object Oriented Programming Environment for real-time audio and video processing. It is one of the finest and most versatile environments for signal processing and especially for creating music applications of all kinds, such as complete compositions, interactive performances, installations etc. It runs on Macintosh Power PC computers. The author of SuperCollider is James McCartney. He maintains a site at: http://www.audiosynth.com - --------------AA8F0BEDCFE30DE432340C28 Content-Type: text/plain; charset=us-ascii; x-mac-type="54455854"; x-mac-creator="74747874"; name="Reverb.sc" Content-Transfer-Encoding: 7bit Content-Description: Unknown Document Content-Disposition: inline; filename="Reverb.sc" //adaptations by Nick Collins //Gardner reverbs from Hans Mikelson article 11 Aug 2001 //added schroeder and Eric Lyon reverbs 10/9/01 //added ar class method on suggestion of Julian Rohrhuber 12/9/01 //a collection of better quality reverbs (for mono input) using //delay networks with feedback, filtering, multitaps //fully implemented conversion of Hans Mikelson's article on the Gardner reverbs in Csound to SuperCollider //presented in the Csound book (ed Boulanger, MIT Press 2000) //implementations of the more general reverbs from the Eric Lyon article preceeding it //speculative Schroeder reverbs with info gleaned from Curtis Roads, CM Tutorial, pp481-482 //to do //there are always more reverbs to convert and create! //parameters to multiply all decay times, delay times for the Gardner reverbs //only works for mono sources. Only have mono buffers in delay lines for Gardner revs Reverb { *ar { arg mode ... args; ^this.performList(mode, args) } //my allpass implementation *myallpass { arg in,delay,gain; var out,delayout,delaysamp,buffer; delaysamp= delay*Synth.sampleRate; buffer = Signal.new(delaysamp+(Synth.defaultBlockSize)); delayout = TapN.ar(buffer, delay); out= delayout-(gain*in); DelayWr.ar(buffer, in+(gain*out)); ^out } *allpass { arg in, delay,gain; var decay,loopGain; //formula from Roads pp 478 for comb filters- true also for ap? //time to decay by 60 dB loopGain= 20*(gain.log10); decay= (-60/loopGain)*delay; ^(AllpassN.ar(in,delay,delay,decay)) } *nestedallpass { arg in, delay1,gain1,delay2,gain2; var out,delay1out,delay1samp,buffer; delay1samp= delay1*Synth.sampleRate; buffer= Signal.new(delay1samp+(Synth.defaultBlockSize)); delay1out= TapN.ar(buffer,delay1); out= Reverb.allpass(delay1out,delay2,gain2)- (gain1*in); DelayWr.ar(buffer, in+(gain1*out)); ^out } *doublenestedallpass { arg in, delay1,gain1,delay2,gain2,delay3,gain3; var out,delay1out,delay1samp,buffer; delay1samp= delay1*Synth.sampleRate; buffer= Signal.new(delay1samp+(Synth.defaultBlockSize)); delay1out= TapN.ar(buffer,delay1); out= Reverb.allpass(Reverb.allpass(delay1out,delay2,gain2),delay3,gain3)- (gain1*in); DelayWr.ar(buffer, in+(gain1*out)); ^out } *grsmallroom { arg in; var inflt,out,delay0out,delay0samp,buffer,stage1out,stage2out; inflt= LPF.ar(in,6000); delay0samp= 0.024*Synth.sampleRate; buffer= Signal.new(delay0samp+(Synth.defaultBlockSize)); delay0out= TapN.ar(buffer,0.024); stage1out= Reverb.doublenestedallpass(delay0out,0.035,0.15,0.022,0.25,0.0083,0.3); stage2out= Reverb.nestedallpass(stage1out,0.066,0.08,0.03,0.3); out= 0.5*(stage1out+stage2out); DelayWr.ar(buffer, inflt+(0.5*BPF.ar(0.5*stage2out,1600,0.5))); ^out } *grmedroom { arg in; var inflt,out,sum1,buffer,stage1out,stage2out,stage3out,stage3in,feedback; inflt= LPF.ar(in,6000); buffer= Signal.new((Synth.defaultBlockSize)+1000); sum1= TapN.ar(buffer,0.005); //must be at least BlockSize+1 delay stage1out= Reverb.doublenestedallpass(sum1,0.035,0.25,0.0083,0.35,0.022,0.45); //delays and single allpass stage2out= DelayN.ar(Reverb.allpass(DelayN.ar(stage1out,0.005,0.005),0.03,0.45),0.067,0.067); stage3in= (0.4*DelayN.ar(stage2out,0.015,0.015))+inflt; stage3out= Reverb.nestedallpass(stage3in,0.039,0.25,0.0098,0.35); feedback= BPF.ar(DelayN.ar(stage3out,0.108,0.108,0.4),1000,0.5,0.5); out= 0.5*(stage1out+stage2out+stage3out); DelayWr.ar(buffer, inflt+feedback); ^out } *grlargeroom { arg in; var inflt,out,sum1,buffer,stage1out,stage2out,stage3out,stage3in,feedback; inflt= LPF.ar(in,4000); buffer= Signal.new((Synth.defaultBlockSize)+1000); sum1= TapN.ar(buffer,0.005); //must be at least BlockSize+1 delay stage1out=DelayN.ar(Reverb.allpass(Reverb.allpass(sum1,0.008,0.3),0.012,0.3),0.004,0.004); stage2out= DelayN.ar(Reverb.nestedallpass(DelayN.ar(stage1out,0.017,0.017),0.087,0.5,0.062,0.25),0.031,0.031); stage3out= Reverb.doublenestedallpass(DelayN.ar(stage2out,0.003,0.003),0.12,0.5,0.076,0.25,0.03,0.25); feedback= BPF.ar(0.5*stage3out,1000,0.5,0.5); out= 1.5*stage1out+(0.8*(stage2out+stage3out)); DelayWr.ar(buffer, inflt+feedback); ^out } ///4 comb followed by 2 allpass- basic Schroeder reverb //see Curtis Roads CM Tutorial pp 481 //relatively prime delay times //order 10 mS small room- stretch1= 0.2 //50 mS large- stretch1=1 *simple { arg in,stretch1=1.0,stretch2=1.0; var out,combdelays,combdecays; combdelays=stretch1*([0.0499,0.0431,0.0373,0.0311]); //coprime delay times combdecays= stretch2*[1,1,1,1]; out=Mix.arFill(4,{arg i; CombN.ar(in,combdelays.at(i),combdelays.at(i),combdecays.at(i),0.25)}); //allpass in series 2.do({ arg i; out= AllpassN.ar(out,0.01,[0.005,0.004].at(i),[0.05,0.07].at(i)); }); ^out } //pp482, later Schroeder design, Lowpassed TRD + MultiTap early reflections //can easily add extra parameters to control the early reflections *multitap { arg in,stretch1=1.0,stretch2=1.0,absorption=3000; var out,combdelays,combdecays; var early,earlyamps,earlydelays; combdelays=stretch1*([0.0691,0.0617,0.0557,0.0521]); //coprime delay times combdecays= stretch2*[1,1,1,1]; earlydelays=stretch1*([ 0.0311, 0.0349, 0.0373, 0.0409, 0.0431, 0.0449, 0.0499 ]); //coprime delay times earlyamps= Array.geom(7,0.5,0.4); out=Mix.arFill(4,{arg i; CombN.ar(in,combdelays.at(i),combdelays.at(i),combdecays.at(i),0.25)}); //allpass in series 2.do({ arg i; out= AllpassN.ar(out,0.01,[0.005,0.004].at(i),[0.05,0.07].at(i)); }); early= MultiTap.ar(`earlydelays,`earlyamps,in); ^(early+ LPF.ar(out,absorption)) } //eric lyon 1, similar to Schroeder fig 11.21(a) in Roads pp481 //4 allpass in series with filtered branches *fourallpass { arg in,istretch=1.0; var apout,revtimes,output; istretch= istretch/3; output=in; revtimes= istretch*[0.2,0.5,2.1,3.06]; apout= [in,1,1,1,1]; 4.do({arg i; apout.put(i+1,AllpassN.ar(apout.at(i),0.1,[0.04,0.09653,0.065,0.043].at(i),revtimes.at(i))); }); 4.do( { arg i; output = output+ (LPF.ar(apout.at(i+1),[5000,3000,1500,500].at(i),1.0));} ); ^output } //ericlyon2 //decorrelated stereo reverb constructed from allpass, comb, delay and filter units *stereoreverb { arg in,stretch=1.0; var aleft,aright,kdel1,addl1,afeed1,kdel2,afeed2; var aglobrev,aglobin,atap1,atap2,atap3; var kdel3,kdel4,afeed3,afeed4; aleft= AllpassN.ar(AllpassN.ar(in,0.1,0.1,1.7*stretch),0.07,0.07,1.01*stretch); aright=AllpassN.ar(AllpassN.ar(in,0.2,0.2,1.5*stretch),0.05,0.05,1.33*stretch); //original design chooses a new tap every 1 second, with interpolation between values kdel1 = Plug.kr(0.1+(0.01.rand2)); thisSynth.repeat(1.0, 1.0, { kdel1.line(0.1+(0.01.rand2),1.0); //source=0.1+(0.01.rand2) }); afeed1= (0.5*aleft)+ DelayN.ar(aleft,0.2,kdel1); //original design chooses a new tap every 0.95 seconds kdel2 = Plug.kr(0.1+(0.01.rand2)); thisSynth.repeat(0.95, 0.95, { kdel2.line(0.1+(0.01.rand2),0.95) }); //kdel2= 0.1+(0.01.rand); afeed2= (0.5*aright)+ DelayN.ar(aright,0.2,kdel2); aglobin= (afeed1+afeed2)*0.5; atap1= CombN.ar(aglobin,0.15,0.1,3.3*stretch); atap2=CombN.ar(aglobin,0.05,0.0434783,3.3*stretch); atap3=CombN.ar(aglobin,0.03,0.0243902,3.3*stretch); aglobrev=LPF.ar(AllpassN.ar(Mix.ar([atap1,atap2,atap3]),0.085,0.085,2.6*stretch),3000); kdel3 = Plug.kr(0.05+(0.003.rand2)); thisSynth.repeat(1.0, 1.0, { kdel3.line(0.05+(0.003.rand2),1.0); }); afeed3= DelayN.ar(aglobrev,0.1,kdel3); kdel4 = Plug.kr(0.05+(0.03.rand2)); thisSynth.repeat(1, 1, { kdel4.line(0.05+(0.003.rand2),1) }); afeed4= DelayN.ar(aglobrev,0.1,kdel4); ^[afeed3+afeed1,afeed4+afeed2] } } - --------------AA8F0BEDCFE30DE432340C28 Content-Type: text/plain; charset=us-ascii; x-mac-type="54455854"; x-mac-creator="74747874"; name="Reverb.help" Content-Transfer-Encoding: 7bit Content-Description: Unknown Document Content-Disposition: inline; filename="Reverb.help" Reverb Superclass: Object A collection of better quality reverbs for mono input. They take more CPU than simply chaining 4 allpass units. There are adaptions of Csound code by Eric Lyon and Hans Mikelson published in chapters 23 and 24 of the Csound Book (MIT Press, ed. Boulanger), as well as from Curtis Road's Computer Music Tutorial. I've adjusted these algorithms to allow some parameters. Proviso- Any of the methods may have a typo! Also, improvements in the available parameters would be the next step. Anyone who feels like improving this code and reposting, please go ahead. The class itself could be better designed. Class Methods All the reverbs are obtained as class methods that return particular ugen graphs. Gardner reverbs *grsmallroom(in) *grmedroom(in) *grlargeroom(in) Schroeder reverbs *simple(in,stretch1,stretch2) stretch1 for onset delay, stretch2 for decay time *multitap(in,stretch1,stretch2,absorption) absorption is filter cutoff frequency Eric Lyon reverbs *fourallpass(in,stretch) *stereoreverb(in,stretch) will return a stereo signal The following are used internally, but may be useful as well. The allpasses are designed to use parameters looptime (delay) and gain, not decay time. Note that myallpass can be used instead of allpass in the case that the Roads formula for conversion from gain and delay to decay is imprecise (see the code). *myallpass(in,delay,gain) *allpass(in,delay,gain) *nestedallpass(in, delay1,gain1,delay2,gain2) *doublenestedallpass(in, delay1,gain1,delay2,gain2,delay3,gain3) Finally, Julian Rohrhuber provided a simple way to make the Reverb class respond to an ar class method: *ar(mode, args) where mode is the symbol of the name of the desired reverb class method, and args are the params expected by that method. Instance Methods None. Better programming might redesign this class with stretch etc internal params + instance methods to call each type of reverb. Call the class ReverbUnit or something. For now, this is a preliminary release. Examples In normal usage, the user will want to mix some dry signal with wet. Calling the Reverb class reverbs will only get you wet signal! All the reverbs have defaults for every parameter but for input. Stretch always defaults to 1, when you get the parameters exactly as in original implementations. ( { var z; z=Impulse.ar(1,0.4); z+(0.4*Reverb.grlargeroom(z)) }.play ) ( { var z; z=Impulse.ar(1,0.4); Mix.ar([[z,z],0.4*Reverb.stereoreverb(z,1)]) }.play ) //audio rate method with selector of reverb method ( { var z; z = Impulse.ar(1,0.4); z + (0.4 * Reverb.ar(\grlargeroom, z)) }.play ) Author Nick Collins London released 10/9/01 - --------------AA8F0BEDCFE30DE432340C28-- _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com ------------------------------ Date: Fri, 16 Nov 2001 12:48:58 +0100 From: Alberto de Campo <---@---.---> Subject: Re: ParameterWindow Hi Pieter, Yes, this is my fault, I still haven't updated the tutorial for Ron Kuivila's Lib; I am still very busy with all kinds of things. Ron's Preset Class should work fine for this example; I will try and make an adaptation of that patch at least this weekend. best, adc Pieter Volger wrote: >Hello, >although I compiled GUIUTILS 2.0b SC 2.2.11 doesn't find ParameterWindow in >"Tibetan Cymbals"-Example. any advice?? >thank you for help >Pieter > - -- Alberto de Campo ACADEMY OF MEDIA ARTS Peter-Welter-Platz 2 D - 50676 Cologne / Germany phone : ++49-(0)221-20189-141 e-mail : adc@khm.de - -- ------------------------------ Date: Fri, 16 Nov 2001 14:42:09 +0100 (CET) From: Giorgio Robino <---@---.---> Subject: Re: patch: stringsTexture Hi > do you have this reverb class ? > this might help out a lot. yes I have but ... > Nick Collins > London > released 10/9/01 Nick, can you put a good set of pratical use examples of all the methods for the class formerly kindly supplied? Otherwise for give the correct parameters I have to read the functions source code with calm ;-), reuiring a lot of time. many thanks Giorgio - --- Giorgio Robino http://www.giorgiorobino.com , mailto:giorgio.robino@giorgiorobino.com - --- DEEP LISTENINGS "ascolti profondi, the new music magazine" (rivista trimestrale di cultura musicale), vendita per solo per corrispondenza. Rivolgersi a Gianluigi Gasparetti, mailto:deeplist@tin.it - --- SUPERCOLLIDER is an Object Oriented Programming Environment for real-time audio and video processing. It is one of the finest and most versatile environments for signal processing and especially for creating music applications of all kinds, such as complete compositions, interactive performances, installations etc. It runs on Macintosh Power PC computers. The author of SuperCollider is James McCartney. He maintains a site at: http://www.audiosynth.com ------------------------------ Date: Fri, 16 Nov 2001 14:59:01 +0100 From: Fredrik Olofsson <---@---.---> Subject: scheduling OSC hi list! how do you schedule osc-messages? ( var port; OSCPort.closeAll; port = OSCOutPort(8192,"127.0.0.1"); { arg synth; port.sendNoTags("/control", \start1); // <- works synth.sched(2, {port.sendNoTags("/control", \start2)}); // <- error code -3179 FSinOsc.ar(0,0); }.play ) tia/fredrik ------------------------------ Date: Fri, 16 Nov 2001 12:45:52 -0800 From: James Reynolds <---@---.---> Subject: Does ASIO reduce SC performance? I just got a Mobile I/O, the new firewire multi-I/O unit from Metric Halo. It sounds great, but I noticed that when using its ASIO driver, SC cpu usage is much higher than with soundmanager. Is this normal due to the reduced latency of ASIO, or is there possibly a problem with the (fairly new) ASIO driver for the Mobile I/O? For example, on an iBook/600/384M, I can get 470 oscillators in the osc benchmark patch under soundmanager, but only 298 with the ASIO driver. Also, the CPU peak often goes over 100 with ASIO, sometimes as high as 160. Can anyone post benchmarks for other ASIO drivers (especially the MOTU 828, also a firewire unit) Thanks, James Reynolds ------------------------------ Date: Fri, 16 Nov 2001 16:05:04 -0500 From: newton armstrong <---@---.---> Subject: Re: Does ASIO reduce SC performance? i haven't found that ASIO adds any significant overhead in the past, but: cpu is highly dependent on the sample buffer size you set for your device. there's only one setting (512 samples) for sound manager. it could be your device is set to a very small buffer size, which makes the cpu work harder. if you don't need low latency audio i/o, try changing the setting to a larger buffer. that should reduce your cpu workload substantially. On 16/11/01 3:45 PM, "James Reynolds" wrote: > I just got a Mobile I/O, the new firewire multi-I/O unit from Metric > Halo. It sounds great, but I noticed that when using its ASIO driver, > SC cpu usage is much higher than with soundmanager. Is this normal due > to the reduced latency of ASIO, or is there possibly a problem with the > (fairly new) ASIO driver for the Mobile I/O? > > For example, on an iBook/600/384M, I can get 470 oscillators in the osc > benchmark patch under soundmanager, but only 298 with the ASIO driver. > Also, the CPU peak often goes over 100 with ASIO, sometimes as high as > 160. > > Can anyone post benchmarks for other ASIO drivers (especially the MOTU > 828, also a firewire unit) > > Thanks, > > James Reynolds > ------------------------------ Date: Fri, 16 Nov 2001 13:34:14 -0800 From: cramakrishnan@acm.org Subject: Re: Does ASIO reduce SC performance? James Reynolds writes: > Can anyone post benchmarks for other ASIO drivers (especially the MOTU > 828, also a firewire unit) http://swiki.hfbk.uni-hamburg.de:8080/MusicTechnology/214 It would be great if you could add benchmarks for your interface there. - - sekhar - -- C. Ramakrishnan cramakrishnan@acm.org ------------------------------ Date: Fri, 16 Nov 2001 19:16:17 -0500 From: "Adam Overton" <---@---.---> Subject: spawn.stop() hello everyone i would like to know: can you start a Spawn again after you've already sent the message spawn.stop? if so, how? i am finding it rather hard to retract .stop thanks adam overton overtones99@hotmail.com _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp ------------------------------ Date: Sat, 17 Nov 2001 12:24:04 +0100 From: Fredrik Olofsson <---@---.---> Subject: scheduling OSC hi list! how do you schedule osc-messages? ( var port; OSCPort.closeAll; port = OSCOutPort(8192,"127.0.0.1"); { arg synth; port.sendNoTags("/control", \start1); // <- works synth.sched(2, {port.sendNoTags("/control", \start2)}); // <- error code -3179 FSinOsc.ar(0,0); }.play ) tia/fredrik ------------------------------ Date: Sat, 17 Nov 2001 12:56:28 +0100 From: Alberto de Campo <---@---.---> Subject: Re: ParameterWindow Hi again Pieter, > > Pieter Volger wrote: > >> Hello, >> although I compiled GUIUTILS 2.0b SC 2.2.11 doesn't find >> ParameterWindow in >> "Tibetan Cymbals"-Example. any advice?? >> thank you for help >> Pieter >> So here is a simple non-elegant version using the Preset Class that works. Hope I'll get around to finishing a tutorial update, but I really can't promise when. best, adc /////////////////////// Tibetan Cymbals done with ( Ron's SCLib Class) Preset. ( var p, freqs, rings; // default freqs and ringTimes: freqs = [ 2913, 2916.1, 2940, 2942, 2973, 2978, 6796, 6832, 6912, 9711, 9776, 9814, 9960, 12090, 12199]; rings = [9, 8.2, 6, 8.6, 10, 14, 2.2, 1.9, 2.5, 0.9, 1.7, 0.75, 0.5, 0.45, 0.4]; p = Preset.funcInit({ arg preset, repeatTime, masterVol, klankFreqs = 15, detuneRight = 15, ringsTimes = 15, amplitudes = 15, freqsScale, ringTimeScale; preset.setItems( repeatTime .setParams(5, 0.2, 15, 0.01, 'exponential').nocr, masterVol .setParams(0.25, 0, 1, 0.001, 'linear'), klankFreqs .setParams(freqs, 1000,15000, 0, 'linear').numerical, detuneRight .setParams(0, -10,10, 0, 'linear').numerical, amplitudes .setParams(1, 0, 1, 0.01, 'linear').numerical, ringsTimes .setParams(rings, 0, 30, 0.01, 'linear').numerical, freqsScale .setParams(1, 0.1, 10, 0.01, 'exponential').nocr, ringTimeScale .setParams(1, 0.1, 10, 0.01, 'exponential') ); preset.name_("Tibetan Cymbals"); // label preset.sound_({ // set the preset's sound function: // Spawn a new klank instance every time to make its specs changeable from hit to hit: TSpawn.ar( { arg spawn, i, synth; var lFreqs, rFreqs, ringTimes; spawn.releaseAll; // stop and fade out all previous klank(s); lFreqs = klankFreqs.value; // poll freqs, use for left channel; rFreqs = lFreqs + detuneRight.value; // poll detune controls for right chan. Klank.ar( // extended to two channels: [ `[ lFreqs, amplitudes.value, ringsTimes.value ], // left: original resonator `[ rFreqs, amplitudes.value, ringsTimes.value ] // right: slightly detuned freqs. ], Decay.ar(Impulse.ar(0, 0.1), 0.001), // a rounded-off inpulse as an attack. freqscale: freqsScale.value, // these controls could also be decayscale: ringTimeScale.value, // continuously changeable with .kr. mul: EnvGen.kr( // Use a variable duration Env to remove // each Klank when the next one begins. Env( [ 1, 1, 0 ], // levels ( sustain at full level until release), [ 0, 0.1 ], // times (fade out in 0.1 secs), -4, 1 // curve, and sustain node 1 ) ) ) }, 2, trig: Impulse.ar(repeatTime.kr.reciprocal), // trigger new Klanks. mul: masterVol.kr ) }) }); p.show; // make the Preset's GUIWindow. ) ///////////////////// - -- Alberto de Campo ACADEMY OF MEDIA ARTS Peter-Welter-Platz 2 D - 50676 Cologne / Germany phone : ++49-(0)221-20189-141 e-mail : adc@khm.de - -- ------------------------------ Date: Sat, 17 Nov 2001 13:41:41 +0100 From: Julian Rohrhuber <---@---.---> Subject: Re: scheduling OSC >hi list! >how do you schedule osc-messages? > >( >var port; >OSCPort.closeAll; >port = OSCOutPort(8192,"127.0.0.1"); >{ arg synth; >port.sendNoTags("/control", \start1); // <- works >synth.sched(2, {port.sendNoTags("/control", \start2)}); // <- >error code -3179 >FSinOsc.ar(0,0); >}.play >) > > >tia/fredrik I don't get an error there. Are you using mac os 9.1 ? - -- . ------------------------------ Date: Sat, 17 Nov 2001 13:48:15 +0100 From: Julian Rohrhuber <---@---.---> Subject: Re: Does ASIO reduce SC performance? >James Reynolds writes: >> Can anyone post benchmarks for other ASIO drivers (especially the MOTU >> 828, also a firewire unit) > >http://swiki.hfbk.uni-hamburg.de:8080/MusicTechnology/214 > >It would be great if you could add benchmarks for your interface >there. > >- sekhar > >-- >C. Ramakrishnan cramakrishnan@acm.org yes that would be good. Also the latencies would be interesting. I put up an update for that measuring program that prints milliseconds. - -- . ------------------------------ Date: Sat, 17 Nov 2001 07:32:17 -0600 From: James McCartney <---@---.---> Subject: Re: scheduling OSC on 11/17/01 5:24 AM, Fredrik Olofsson at fredrikolofsson@mac.com wrote: > hi list! > how do you schedule osc-messages? > > ( > var port; > OSCPort.closeAll; > port = OSCOutPort(8192,"127.0.0.1"); > { arg synth; > port.sendNoTags("/control", \start1); // <- works > synth.sched(2, {port.sendNoTags("/control", \start2)}); // <- error code - -3179 Unfortunately in recent OS's Apple made it impossible to send data on open transport from interrupt level. I'm not sure there is much I can do about it except say to either go back to pre OS 9.1 or wait for OSX. Here's my previous post on the topic: > > There are apparently some changes in Apple's OTSndUData call such that in > certain circumstances it is not async callable at interrupt level. This was > not the case in previous versions of MacOS. I have not determined yet what > these circumstances are or whether they can be circumvented. > - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Sat, 17 Nov 2001 16:25:52 +0100 From: Fredrik Olofsson <---@---.---> Subject: Re: scheduling OSC >>hi list! >>how do you schedule osc-messages? >> >>( >>var port; >>OSCPort.closeAll; >>port = OSCOutPort(8192,"127.0.0.1"); >>{ arg synth; >>port.sendNoTags("/control", \start1); // <- works >>synth.sched(2, {port.sendNoTags("/control", \start2)}); // <- >>error code -3179 >>FSinOsc.ar(0,0); >>}.play >>) >> >> >>tia/fredrik > >I don't get an error there. Are you using mac os 9.1 ? >-- >. yes, reading the old "Re: OSC fails under 9.1" thread it seems that i'm experiencing the send-during-synthesis problem. was there a fix? i've tried replacing apple enet extension with the older 2.3 version but with no luck. /fo ------------------------------ Date: Sat, 17 Nov 2001 18:36:33 +0100 From: Julian Rohrhuber <---@---.---> Subject: walk in the snow //walk in snow, julian rohrhuber 01/11 //mouse y controls rest //mouse x controls listening direction ( var w; w = GUIWindow.new("", Rect.newBy(-10, -10, 2000, 2000)).backColor_(rgb(225,225,225)); { var walk, bird; m = MouseX.kr(0, 2.5, 'linear', 0.2); walk = XFadeTexture.ar({ RLPF.ar( Decay2.ar(Dust.ar(MouseY.kr(0, 100)) , 0.02, 0.05, PinkNoise.ar( Lag.kr( LFPulse.kr(rrand(0.7, 1.0), 0.02, 6), rrand(0.4, 0.9) ) )), LFNoise1.kr(rrand(2, 1.1), 50, rrand(200,300)), rrand(0.4,0.5)) }, 3, 1, 1); bird = SinOsc.ar( Lag.kr(LFPulse.kr(3, LFNoise1.kr(0.1, 0.1, 0.5), 450, 3000), 0.1), 0, LFNoise0.kr(1, 0.01, -0.008).max(0) ); Pan2.ar(walk, LFNoise1.kr(0.2, 0.5, m).fold2(2) - 1) + Pan2.ar(bird, LFNoise0.kr(0.1, 1, m).fold2(2) - 1) // some light snowfall + Decay.ar(Dust.ar([20, 20], LFNoise1.kr(0.5, 0.001, 0.001)), 0.004, SinOsc.ar(LFNoise0.kr(80, 2000, 13000))) }.play; if(w.notNil, { w.close }); ) - -- . ------------------------------ Date: Sat, 17 Nov 2001 13:18:18 -0800 From: ben <---@---.---> Subject: couple weird things... if i use sc to write a soundfile, quit it and run logic i get 'asio error 1' - - requires reboot also... seems like every time i use the shaper object it passes on its lovely distortion to any other signal playing at the same time. ??? thanks! peace ben ------------------------------ Date: Sun, 18 Nov 2001 09:44:40 +0100 From: Pieter Volger <---@---.---> Subject: Re: ParameterWindow Hi Alberto, thank you for your kind support. Pieter Alberto de Campo wrote: > Hi again Pieter, > >> >> Pieter Volger wrote: >> >>> Hello, >>> although I compiled GUIUTILS 2.0b SC 2.2.11 doesn't find >>> ParameterWindow in >>> "Tibetan Cymbals"-Example. any advice?? >>> thank you for help >>> Pieter >>> > So here is a simple non-elegant version using the Preset Class that > works. > Hope I'll get around to finishing a tutorial update, but I really > can't promise when. > > best, > adc > > /////////////////////// > Tibetan Cymbals done with ( Ron's SCLib Class) Preset. > ( > var p, freqs, rings; > > // default freqs and ringTimes: > freqs = [ 2913, 2916.1, 2940, 2942, 2973, 2978, 6796, 6832, 6912, > 9711, 9776, 9814, 9960, 12090, 12199]; > rings = [9, 8.2, 6, 8.6, 10, 14, 2.2, 1.9, 2.5, 0.9, 1.7, 0.75, 0.5, > 0.45, 0.4]; > > p = Preset.funcInit({ arg preset, repeatTime, masterVol, > klankFreqs = 15, detuneRight = 15, ringsTimes = 15, amplitudes = 15, > freqsScale, ringTimeScale; > preset.setItems( > repeatTime .setParams(5, 0.2, 15, 0.01, 'exponential').nocr, > masterVol .setParams(0.25, 0, 1, 0.001, 'linear'), > klankFreqs .setParams(freqs, 1000,15000, 0, > 'linear').numerical, > detuneRight .setParams(0, -10,10, 0, 'linear').numerical, > amplitudes .setParams(1, 0, 1, 0.01, > 'linear').numerical, > ringsTimes .setParams(rings, 0, 30, 0.01, > 'linear').numerical, > freqsScale .setParams(1, 0.1, 10, 0.01, > 'exponential').nocr, > ringTimeScale .setParams(1, 0.1, 10, 0.01, 'exponential') > ); > preset.name_("Tibetan Cymbals"); // label > preset.sound_({ // set the preset's sound > function: > > // Spawn a new klank instance every time to make its specs > changeable from hit to hit: TSpawn.ar( { > arg spawn, i, synth; var lFreqs, rFreqs, ringTimes; > spawn.releaseAll; // stop > and fade out all previous klank(s); > lFreqs = > klankFreqs.value; // poll freqs, use for left channel; > rFreqs = lFreqs + detuneRight.value; // poll > detune controls for right chan. > Klank.ar( // extended to two channels: > [ `[ lFreqs, amplitudes.value, ringsTimes.value > ], // left: original resonator > `[ rFreqs, amplitudes.value, ringsTimes.value ] > // right: slightly detuned freqs. > ], > Decay.ar(Impulse.ar(0, 0.1), 0.001), // a rounded-off inpulse > as an attack. > > freqscale: freqsScale.value, // these > controls could also be > decayscale: ringTimeScale.value, // > continuously changeable with .kr. > mul: EnvGen.kr( // Use > a variable duration Env to remove > // each Klank when the next one > begins. > Env( [ 1, 1, 0 ], // levels ( sustain at > full level until release), > [ 0, 0.1 ], // times (fade out in > 0.1 secs), > -4, 1 // curve, and sustain node 1 > ) > ) > ) > }, 2, > trig: Impulse.ar(repeatTime.kr.reciprocal), // > trigger new Klanks. > mul: masterVol.kr > ) > }) }); > p.show; // make the Preset's GUIWindow. > ) > > ///////////////////// > ------------------------------ Date: Sun, 18 Nov 2001 10:34:21 +0000 From: Jem Finer <---@---.---> Subject: what happens to dead Signals ? > 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_3088924506_102941_MIME_Part Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit If one creates a Signal in an instrument, which is called from the lib menu, eg : ( Library.put(['recordAndPlay'], {var a; a = Instrument.new(\recordAndPlay, { var signal; signal = Signal.newClear(Synth.sampleRate * 2.0); RecordBuf.ar(signal, AudioIn.ar(1), 1, MouseY.kr(0.5, 1), 0, 1, 1); PlayBuf.ar(signal, Synth.sampleRate, MouseX.kr(0.5, 2.0,'exponential'), 0, 0, signal.size-2); }); a.play }) ); what happens to the signal when the instrument is deleted from the Mixer window - does it disappear via garbage collection or does it stay somewhere in ram until one hits command - full stop ? Thanks Jem - --MS_Mac_OE_3088924506_102941_MIME_Part Content-type: text/html; charset="US-ASCII" Content-transfer-encoding: quoted-printable what happens to dead Signals ? If one creates a Signal in an instrument, which is called from the lib menu= , eg :

(
Library.put(['recordAndP= lay'],
{var a;
a =3D Instrument.new(\reco= rdAndPlay, {
var signal;
  signal =3D Signal.newClear(Synth.sampleRate * 2.0);
  RecordBuf.ar(signal, AudioIn.ar(1), 1, MouseY.kr(0.= 5, 1), 0, 1, 1);
  PlayBuf.ar(signal,
          Synth.sampleRate,
          MouseX.kr(0.5, 2.0,'exponential'= ), 0, 0, signal.size-2);
});
a.play
})
);

what happens to the signal when the instrument is deleted from the Mixer wi= ndow - does it disappear via garbage collection or does it stay somewhere in= ram until one hits command - full stop ?

Thanks

Jem
=20 - --MS_Mac_OE_3088924506_102941_MIME_Part-- ------------------------------ Date: Sun, 18 Nov 2001 14:35:19 -0500 From: felix <---@---.---> Subject: Re: what happens to dead Signals ? > 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_3088938920_4166171_MIME_Part Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit It is 'alive' only while the instrument function is executing. it is alive only within the scope of the {} instrument's function. the instrument itself knows only of the function, not what you did with the function. From: Jem Finer <---@---.---> Reply-To: sc-users@lists.io.com Date: Sun, 18 Nov 2001 10:34:21 +0000 To: scmaillist Subject: what happens to dead Signals ? If one creates a Signal in an instrument, which is called from the lib menu, eg : ( Library.put(['recordAndPlay'], {var a; a = Instrument.new(\recordAndPlay, { var signal; signal = Signal.newClear(Synth.sampleRate * 2.0); RecordBuf.ar(signal, AudioIn.ar(1), 1, MouseY.kr(0.5, 1), 0, 1, 1); PlayBuf.ar(signal, Synth.sampleRate, MouseX.kr(0.5, 2.0,'exponential'), 0, 0, signal.size-2); }); a.play }) ); what happens to the signal when the instrument is deleted from the Mixer window - does it disappear via garbage collection or does it stay somewhere in ram until one hits command - full stop ? Thanks Jem - --MS_Mac_OE_3088938920_4166171_MIME_Part Content-type: text/html; charset="US-ASCII" Content-transfer-encoding: quoted-printable Re: what happens to dead Signals ?
It is 'alive' only while the instrument function is executing.  it is = alive only within the scope of the {} instrument's function.
the instrument itself knows only of the function, not what you did with the= function.


From: Jem Finer <jemfiner@blueyonder.co.uk><---@---.---> Reply-To: sc-users@lists.io.com
Date: Sun, 18 Nov 2001 10:34:21 +0000
To: scmaillist <sc-users@lists.io.com>
Subject: what happens to dead Signals ?

If one creates a Signal in an instrument, which is called from the lib menu= , eg :

(
Library.put(['recordAndP= lay'],
{var a;
a =3D Instrument.new(\reco= rdAndPlay, {
var signal;
 signal =3D Signal.newClear(Synth.sampleRate * 2.0);
 RecordBuf.ar(signal, AudioIn.ar(1), 1, MouseY.kr(0.5, 1),= 0, 1, 1);
 PlayBuf.ar(signal,
         Synth.sampleRate,
         MouseX.kr(0.5, 2.0,'exponential'), 0, = 0, signal.size-2);
});
a.play
})
);

what happens to the signal when the instrument is deleted from the Mixer wi= ndow - does it disappear via garbage collection or does it stay somewhere in= ram until one hits command - full stop ?

Thanks

Jem


- --MS_Mac_OE_3088938920_4166171_MIME_Part-- ------------------------------ End of sc-users-digest V1 #381 ******************************