From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #39 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 Wednesday, May 12 1999 Volume 01 : Number 039 ---------------------------------------------------------------------- Date: Fri, 07 May 1999 10:04:09 +0200 From: "Iannis Zannos" <---@---.---> Subject: Editable SC and OOP site Hello all, here is a new W3 site on Music Technology topics with focus on SC and OOP: http://141.20.150.214:88/MusicTechnology The SuperCollider pages start at: http://141.20.150.214:88/MusicTechnology.14 Some material I have been collecting and writing on Object Oriented Programming starts at: http://141.20.150.214:88/MusicTechnology.46 also see: http://141.20.150.214:88/MusicTechnology.15 These pages contain no graphics. But there is an interesting point: they are remote-editable by anybody, directly from the browser. You are thus all welcome to leave your comments, change, improve the pages, or contribute SC code... Best, Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 ------------------------------ Date: Fri, 7 May 1999 07:52:40 -0600 From: James McCartney <---@---.---> Subject: Re: Editable SC and OOP site At 2:04 AM -0600 5/7/99, Iannis Zannos wrote: >Hello all, > >here is a new W3 site on Music Technology topics >with focus on SC and OOP: > >http://141.20.150.214:88/MusicTechnology > >The SuperCollider pages start at: > >http://141.20.150.214:88/MusicTechnology.14 > >Some material I have been collecting and writing >on Object Oriented Programming starts at: > >http://141.20.150.214:88/MusicTechnology.46 >also see: >http://141.20.150.214:88/MusicTechnology.15 > Thanks Iannis. This looks like it will be a useful resource. Here is an error. Neither one of these is correct. You must not create a UGen outside of the Synth function. I put a little note to that effect on the page, but the example should be removed. var ugen; ugen = FSinOsc.ar(400, 0.1); // store a unit generator in a variable; Synth.play( { ugen }); // correct: put the variable with the unit generator in a function // and evaluate it. But: var ugen; ugen = FSinOsc.ar(400, 0.1); Synth.play( ugen ); // incorrect: put the ugen directly inside the Synth to play. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Fri, 07 May 1999 17:55:24 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: Editable SC and OOP site Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 >From: James McCartney <---@---.---> >To: sc-users@lists.io.com >Subject: Re: Editable SC and OOP site >Date: Fri, 7 May 1999 3:52 PM >Here is an error. Neither one of these is correct. >You must not create a UGen outside of the Synth function. >I put a little note to that effect on the page, but the example >should be removed. > Thanks, will do. Feel free to edit. Note: Right now (Friday, 7.5.99, 17:50 G+1) the site seems to be down. Are so many people suddenly trying it out? Hope to get it up soon again. Iannis. ------------------------------ Date: Fri, 07 May 1999 18:20:03 +0200 From: "Iannis Zannos" <---@---.---> Subject: SC Swiki site up again. Quoting emails... >Note: >Right now (Friday, 7.5.99, 17:50 G+1) the >site seems to be down. Are so many people suddenly >trying it out? Hope to get it up soon again. The site is up, but seems to be very sluggish. I do not know why, but will investigate the reasons. Declaration of intention: I have been thinking for a while of collecting some of the mails here into the FAQ on the said site. It is assumed that these are to be shared since they are mailed here. Credits will be listed for each citation. If anybody objects, please say so. Best, Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 >Feel free to edit. > >Note: >Right now (Friday, 7.5.99, 17:50 G+1) the >site seems to be down. Are so many people suddenly >trying it out? Hope to get it up soon again. > >Iannis. > > ------------------------------ Date: Fri, 7 May 1999 13:11:28 -0500 From: "Valentine, Bob" <---@---.---> Subject: [none] 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. - ------_=_NextPart_000_01BE98B5.072A99CC Content-Type: text/plain unsubscribe - ------_=_NextPart_000_01BE98B5.072A99CC Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 eJ8+Ih4SAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQWAAwAOAAAAzwcFAAcADQALABwABQAbAQEggAMADgAAAM8HBQAH AA0ACwAcAAUAGwEBCYABACEAAAA1OEJDREE3OUEwMDREMzExODIzQTAwQTBDOUEyNDIyQgANBwEE gAEAAQAAAAAAAAENgAQAAgAAAAIAAgABA5AGACgFAAAtAAAAAwAFgAggBgAAAAAAwAAAAAAAAEYA AAAAUoUAAPMVAAAeACWACCAGAAAAAADAAAAAAAAARgAAAABUhQAAAQAAAAUAAAA4LjA0AAAAAAMA JoAIIAYAAAAAAMAAAAAAAABGAAAAAAGFAAAAAAAACwAAgAggBgAAAAAAwAAAAAAAAEYAAAAAA4UA AAAAAAALAC+ACCAGAAAAAADAAAAAAAAARgAAAAAOhQAAAAAAAAMAAoAIIAYAAAAAAMAAAAAAAABG AAAAABCFAAAAAAAAAwAwgAggBgAAAAAAwAAAAAAAAEYAAAAAEYUAAAAAAAADADKACCAGAAAAAADA AAAAAAAARgAAAAAYhQAAAAAAAB4AQYAIIAYAAAAAAMAAAAAAAABGAAAAADaFAAABAAAAAQAAAAAA AAAeAEKACCAGAAAAAADAAAAAAAAARgAAAAA3hQAAAQAAAAEAAAAAAAAAHgBDgAggBgAAAAAAwAAA AAAAAEYAAAAAOIUAAAEAAAABAAAAAAAAAAIBCRABAAAAZwAAAGMAAACBAAAATFpGdfhHxrkDAAoA cmNwZzEyNRYyAPgLYG4OEDAzM50B9yACpAPjAgBjaArAYHNldDAgBxMCgH0ZCoF1YwBQCwN1bG4l AiBlC6YgdQCAdWK9BPJiExAKsQqAEfEAFQAAAwAmAAAAAAADADYAAAAAAAsAAgABAAAAAgFxAAEA AAAWAAAAAb6YtTF0UaR4hgR+EdOpt/X0U1/pUAAAQAA5ABAm9ga1mL4BAwDxPwkEAAAeADFAAQAA AAkAAABWQUxFTlRJTgAAAAADABpAAAAAAB4AMEABAAAACQAAAFZBTEVOVElOAAAAAAMAGUAAAAAA AwD9P+QEAAAeAHAAAQAAAAEAAAAAAAAAAwCAEP////8CAUcAAQAAADcAAABjPVVTO2E9IDtwPUNv bGxlZ2Ugb2YgRHVQYWc7bD1NU0UxLTk5MDUwNzE4MTEyOFotMTQ0NjMAAAIB+T8BAAAAVQAAAAAA AADcp0DIwEIQGrS5CAArL+GCAQAAAAAAAAAvTz1DT0xMRUdFIE9GIERVUEFHRS9PVT1EVVBBR0Uv Q049UkVDSVBJRU5UUy9DTj1WQUxFTlRJTgAAAAAeAPg/AQAAAA8AAABWYWxlbnRpbmUsIEJvYgAA HgA4QAEAAAAJAAAAVkFMRU5USU4AAAAAAgH7PwEAAABVAAAAAAAAANynQMjAQhAatLkIACsv4YIB AAAAAAAAAC9PPUNPTExFR0UgT0YgRFVQQUdFL09VPURVUEFHRS9DTj1SRUNJUElFTlRTL0NOPVZB TEVOVElOAAAAAB4A+j8BAAAADwAAAFZhbGVudGluZSwgQm9iAAAeADlAAQAAAAkAAABWQUxFTlRJ TgAAAABAAAcwECb2BrWYvgFAAAgwzJkqB7WYvgEeAD0AAQAAAAEAAAAAAAAAHgAdDgEAAAABAAAA AAAAAB4ANRABAAAANgAAADxGOTdDQ0YwRTMwQjhEMTExODFDMzAwQTBDOUEyNDIyQkUyNkQzQ0Bt c2UxLmNvZC5lZHU+AAAACwApAAAAAAALACMAAAAAAAMABhAKE+hDAwAHEAsAAAADABAQAAAAAAMA ERAAAAAAHgAIEAEAAAAMAAAAVU5TVUJTQ1JJQkUAAgF/AAEAAAA2AAAAPEY5N0NDRjBFMzBCOEQx MTE4MUMzMDBBMEM5QTI0MjJCRTI2RDNDQG1zZTEuY29kLmVkdT4AAACb1w== - ------_=_NextPart_000_01BE98B5.072A99CC-- ------------------------------ Date: Fri, 7 May 1999 14:43:08 -0400 From: Mark Ballora <---@---.---> Subject: Re: SC Swiki site up again. Quoting emails... >Declaration of intention: >I have been thinking for a while of collecting some of >the mails here into the FAQ on the said site. >It is assumed that these are to be shared since >they are mailed here. Credits will be listed >for each citation. If anybody objects, please >say so. > >Best, > >Iannis Zannos not(objection); I think a faq from this list is an excellent idea. M ------------------------------ Date: Fri, 07 May 1999 21:07:55 +0200 From: Staffan Liljegren <---@---.---> Subject: Re: Editable SC and OOP site Are You using the Squeak Web Server ? - -Staffan Iannis Zannos wrote: > Iannis Zannos > SIM > Tiergartenstr. 1, > D-10785 Berlin, Germany > Fax: +49 30 25481172 > > >From: James McCartney <---@---.---> > >To: sc-users@lists.io.com > >Subject: Re: Editable SC and OOP site > >Date: Fri, 7 May 1999 3:52 PM > > >Here is an error. Neither one of these is correct. > >You must not create a UGen outside of the Synth function. > >I put a little note to that effect on the page, but the example > >should be removed. > > > > Thanks, will do. > Feel free to edit. > > Note: > Right now (Friday, 7.5.99, 17:50 G+1) the > site seems to be down. Are so many people suddenly > trying it out? Hope to get it up soon again. > > Iannis. ------------------------------ Date: Fri, 07 May 1999 17:10:06 -0400 From: "crucial" <---@---.---> Subject: Password Expiration >>crucial >>in there to keep us half-educated programmers out. > >audiosynth >If I did that then super.new in the subclasses would not work. Yeah, that occurred to me just after I posted that. I think I got the concept from some Java discussion. btw. I need a new password. Your james@audiosynth.com and support@audiosynth.com both bounce me. I have 25 days left to live..... thankx. __________________________________________ :\\_______ http://crucial-systems.com __________________________________________ :\\_______ ------------------------------ Date: Sun, 9 May 1999 14:24:29 -0400 From: Mark Ballora <---@---.---> Subject: Re: TSpawn vs. Pause OK - I took a few days to clear some stuff off the desk, now I've had a closer look at the pseudo_arabie patch. I have a couple of small questions: markov function _much_ tidier with just an added level of list processing - -- I notice you use .at(index.asInteger) for the same reaon I used the .ceil method. Why does a float get generated? Does it have something to do with the value being stored in a Plug which might convert it to a float? A Spawn as an element of a function, with maxRepeats as an argument -- most excellent. I have a question regarding the accents. This template: pluck.value(1, nil, #[0], accentPattern) based on: accentPattern = Array.fill(10, { {0.3.rand} }); accentPattern.put(0, 0.9); accentPattern.put(6, 0.7); Is this correct: accentPattern is only called once, at runtime, yes? And then those random values are set for good? So we'd lose that ounce of spontaneity, since the random values aren't random throughout. Once again, James, thanks for the code licks. Mark ------------------------------ Date: Sun, 9 May 1999 13:59:54 -0600 From: James McCartney <---@---.---> Subject: Re: TSpawn vs. Pause At 12:24 PM -0600 5/9/99, Mark Ballora wrote: >OK - I took a few days to clear some stuff off the desk, now I've had a >closer look at the pseudo_arabie patch. I have a couple of small questions: > > >markov function _much_ tidier with just an added level of list processing >-- I notice you use .at(index.asInteger) for the same reaon I used the >.ceil method. Why does a float get generated? Does it have something to >do with the value being stored in a Plug which might convert it to a float? I wasn't paying attention to where the nextindex value was coming from. You're getting floating point values because Plug dezippers its value with a one pole filter. You don't want or need to use a Plug here. Get rid of nextindex = Plug.kr(0) and just make it nextindex = 0; Then get rid of .source and .poll on nextindex and just assign it like a variable. Then you can get rid of the .ceil and asInteger and your notes will then actually be correct. >A Spawn as an element of a function, with maxRepeats as an argument -- most >excellent. I have a question regarding the accents. > >This template: >pluck.value(1, nil, #[0], accentPattern) > >based on: >accentPattern = Array.fill(10, { {0.3.rand} }); >accentPattern.put(0, 0.9); >accentPattern.put(6, 0.7); > >Is this correct: >accentPattern is only called once, at runtime, yes? And then those random >values are set for good? No the array looks like this: [0.9, {0.3.rand}, {0.3.rand}, {0.3.rand}, {0.3.rand}, 0.7, {0.3.rand}, {0.3.rand}, {0.3.rand}, {0.3.rand} ] When the array is accessed the .value of the element is taken so that each beat gets its own new random value when performed. amp = amplist.wrapAt(i).value; --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Sun, 9 May 1999 14:06:20 -0600 From: James McCartney <---@---.---> Subject: Re: TSpawn vs. Pause Also here is a much cleaner and more efficient way to write the scheduling : synth.repeat(0, 1/persec, { var newldfreq, newhdfreq; // ALTER PITCHES OF DRUMS EACH TEMPO INCREMENT: newldfreq=125+25.rand; newhdfreq=200+100.rand; ldfreq.source=newldfreq; hdfreq.source=newhdfreq; }); // Start with intro, turn off after 15 sec. synth.sched(15, { intro.source=0; }); // Meas 9 - start tonic drone synth.sched(measure*8, { drone.source=1; }); // Meas 10 - start drums synth.sched(measure*10, { drumbeat.source=1; }); // Meas 12 - start choosing from a set of motifs synth.sched(measure*12, { motifspawner.source=1; }); // Meas 29 - stop playing the motifs synth.sched(measure*29, { motifspawner.source=0; }); // Meas 30 - stop droning tonic, use Markov to generate melody synth.sched(measure*30, { drone.source=0; chain.source=1; }); // Meas 50 - stop Markov melody, start tonic drone synth.sched(measure*50, { chain.source=0; drone.source=1; }); // Meas 52 - start playing from motifs synth.sched(measure*52, { motifspawner.source=1; }); // Meas 70 - stop playing the motifs synth.sched(measure*70, { motifspawner.source=0; }); // Meas 71 - start Markov melody, (this time with the tonic drone) synth.sched(measure*71, { chain.source=1; }); --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Sun, 9 May 1999 15:34:37 -0400 From: Mark Ballora <---@---.---> Subject: Re: TSpawn vs. Pause >I wasn't paying attention to where the nextindex value was coming from. > >You're getting floating point values because Plug dezippers its value >with a one pole filter. > >You don't want or need to use a Plug here. Get rid of nextindex = Plug.kr(0) >and just make it nextindex = 0; Then get rid of .source and .poll on >nextindex and just assign it like a variable. Then you can get rid of >the .ceil and asInteger and your notes will then actually be correct. > Ah -- this is much tidier. I was thinking that _anything_ within the synth ugen graph that I wanted to change after runtime had to be addressed with a Plug (formerly ControlIn). Would that only apply to arguments to ugens, but not to variables? What is "dezippering"? >>accentPattern = Array.fill(10, { {0.3.rand} }); >>accentPattern.put(0, 0.9); >>accentPattern.put(6, 0.7); >> >>Is this correct: >>accentPattern is only called once, at runtime, yes? And then those random >>values are set for good? > >No the array looks like this: > >[0.9, {0.3.rand}, {0.3.rand}, {0.3.rand}, {0.3.rand}, > 0.7, {0.3.rand}, {0.3.rand}, {0.3.rand}, {0.3.rand} ] > >When the array is accessed the .value of the element is taken >so that each beat gets its own new random value when performed. Of course! Because when you create accentPattern, the 0.3.rand is a function within a function. I missed those extra curly braces. So a function can be an array member. Fantastic. ------------------------------ Date: Sun, 9 May 1999 15:02:19 -0600 From: James McCartney <---@---.---> Subject: Re: TSpawn vs. Pause At 1:34 PM -0600 5/9/99, Mark Ballora wrote: >>I wasn't paying attention to where the nextindex value was coming from. >> >>You're getting floating point values because Plug dezippers its value >>with a one pole filter. >> >>You don't want or need to use a Plug here. Get rid of nextindex = Plug.kr(0) >>and just make it nextindex = 0; Then get rid of .source and .poll on >>nextindex and just assign it like a variable. Then you can get rid of >>the .ceil and asInteger and your notes will then actually be correct. >> > >Ah -- this is much tidier. I was thinking that _anything_ within the synth >ugen graph that I wanted to change after runtime had to be addressed with a >Plug (formerly ControlIn). Would that only apply to arguments to ugens, >but not to variables? If you're changing a value and you want it to affect the input of a UGen once the patch is running then you need a Plug. If you're just creating values to use as initial constant values to UGen inputs then you can use variables. >What is "dezippering"? dezippering is the difference between the first and second examples below: // lag value is zero - zipper artifacts should be noticeable. { SinOsc.ar(MouseX.kr(80, 12000, 'exponential', 0.0), 0, 0.1) }.play; // lag 0.2 smooths zipper artifacts. { SinOsc.ar(MouseX.kr(80, 12000, 'exponential', 0.2), 0, 0.1) }.play; --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Mon, 10 May 1999 13:29:29 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: Editable SC and OOP site >Are You using the Squeak Web Server ? > >-Staffan Yes I am. Swiki = Squeak-Wiki. There are links to info on Swiki and the Squeak server (called "PWS", i.e. Pluggable Web Server) on the home page of the said site. http://141.20.150.214:88/MusicTechnology Best, Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: Staffan Liljegren <---@---.---> >To: sc-users@lists.io.com >Subject: Re: Editable SC and OOP site >Date: Fri, 7 May 1999 9:07 PM > >Are You using the Squeak Web Server ? > >-Staffan ------------------------------ Date: Mon, 10 May 1999 09:56:52 -0600 From: James McCartney <---@---.---> Subject: Re: Questions on indexing arrays in wavetable calcs. At 4:52 AM -0600 5/10/99, Lawrence Ball wrote: >Dear SuperCollider Tech people, >I just purchased SC and would be grateful for help with the following: >A) I wish to use the following procedure to generate a sound stream: > (this I exemplify in Basic) > For y=1 to n > For x=1 to 8192 > Table1(x)=Table1(x)+Table2(x) modulo 32768 > Table3(x)=Table4(Table1(x)) > Next x > Next y > Output Table3 as a wave cycle. > Is this possible in SuperCollider? >B) Specifically- can I refer to a list (1Darray) as a variable? > - can I then output Table3's 8192 values? > I hope I don't sound too faithless- I did this on an >Apple2/Mountain Hardware in 1983 >and havn't found any package that can do it afterwards. SC sounds like it >can. >Many thanks for any help you can give me with this- even pointing me at the >right edoc pages. >Best wishes, Lawrence Ball First, you should join the mailing list. Many questions are discussed there and it is a great place to share learning the program with other people. I don't exactly understand what your loop is supposed to do since the variable y is not used for anything. It is certainly easy to generate and modify wavetables in SC. However wavetables are floats not integers in SC. You don't even need loops to do math operations on buffers of floats. SC is a much more powerful language than Basic so you can do many operations at a higher level. Here are a couple of examples you can copy into SC and execute. /////////////////////////////////////////////////////////// ( var size, s1, s2, s3, s4; size = 8192; // A Signal is a subclass of FloatArray that responds // to math operators. // create and fill buffer 1 with a function evaluated // on an interval (0 to 2pi) s1 = Signal.newClear(size); s1.waveFill({ arg x; (cos(x) * -0.5) + 0.5 }, 0, 2pi ); // create and fill buffer 2 with a different function s2 = Signal.newClear(size); s2.waveFill({ arg x; (x * 3) % 1.0 - 0.5 }, 0, 1 ); // add and scale the signals. no loop needed. s3 = (s1 + s2) * 0.5; // multiply the signals s4 = s1 * s2; // display the operands and results in a window SignalWindow.new("example 1", nil, [s1, s2, s3, s4]); ) /////////////////////////////////////////////////////////// ( // add a table with a shifted copy of itself var size, shift, s1, s2; size = 8192; shift = 768; // A Signal is a subclass of FloatArray that responds // to math operators. // create and fill a buffer with a function s1 = Signal.newClear(size); s1.waveFill({ arg x; (x * 3) % 1.0 - 0.5 }, 0, 1 ); // create a buffer for the result. s2 = Signal.newClear(size); size.do({ arg i; // 'put' is used to store into a sequentiable collection // and 'at' is used to access it. 'wrapAt' is used to // access it using wrap around indexing. s2.put(i, s1.at(i) + s1.wrapAt(i + shift) ); }); // display the operands and results in a window SignalWindow.new("example 2", nil, [s1, s2]); ) /////////////////////////////////////////////////////////// --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Mon, 10 May 1999 13:37:03 -0500 From: finer@easynet.co.uk Subject: fft filtered by oscillator As the fft "outputs a continuous signal that must be operated upon by a UGen" I thought perhaps that one could use an oscillator to filter the output of an fft. In this patch this doesn't happen though - I was wondering why. ( // fft filtered by oscillator { var fftsize, numffts, fftoffsets; var overlapWindow,filterOsc,cosineTable; var src1, fft, ifft,t, out; numffts = 2; fftsize = 512; fftoffsets = Array.series(numffts, 0, fftsize/numffts); overlapWindow = Signal.welchWindow(fftsize); cosineTable = Signal.fftCosTable(fftsize); // make filter oscillator t = Signal.newClear(fftsize).waveFill({arg x;(x.sin + ((x*2.0.rand).sqrt.sin))/2},0,fftsize - 1).asWavetable; filterOsc = Osc.ar(t, MouseX.kr(0.001,10),0, 0.5, 0.5); Scope.window("oscillating filter",Synth.sampleRate*0.1,Rect.new(4,60,300,250),filterOsc); src1 = WhiteNoise.ar; // transform src1 fft = FFT.ar(fftsize, fftoffsets, cosineTable, overlapWindow, nil, src1, 0.0); // inverse transform ifft = IFFT.ar(fftsize, fftoffsets, cosineTable, filterOsc, overlapWindow, fft.real, fft.imag); out = Mix.ar(ifft.real); Pan2.ar(out/numffts,0) }.scope(0.1); ) Thanks, Jem Jem Finer finer@easynet.co.uk ------------------------------ Date: Mon, 10 May 1999 16:22:07 -0500 From: finer@easynet.co.uk Subject: fft filtered by oscillator As the fft "outputs a continuous signal that must be operated upon by a UGen" I thought perhaps that one could use an oscillator to filter the output of an fft. In this patch this doesn't happen though - I was wondering why. ( // fft filtered by oscillator { var fftsize, numffts, fftoffsets; var overlapWindow,filterOsc,cosineTable; var src1, fft, ifft,t, out; numffts = 2; fftsize = 512; fftoffsets = Array.series(numffts, 0, fftsize/numffts); overlapWindow = Signal.welchWindow(fftsize); cosineTable = Signal.fftCosTable(fftsize); // make filter oscillator t = Signal.newClear(fftsize).waveFill({arg x;(x.sin + ((x*2.0.rand).sqrt.sin))/2},0,fftsize - 1).asWavetable; filterOsc = Osc.ar(t, MouseX.kr(0.001,10),0, 0.5, 0.5); Scope.window("oscillating filter",Synth.sampleRate*0.1,Rect.new(4,60,300,250),filterOsc); src1 = WhiteNoise.ar; // transform src1 fft = FFT.ar(fftsize, fftoffsets, cosineTable, overlapWindow, nil, src1, 0.0); // inverse transform ifft = IFFT.ar(fftsize, fftoffsets, cosineTable, filterOsc, overlapWindow, fft.real, fft.imag); out = Mix.ar(ifft.real); Pan2.ar(out/numffts,0) }.scope(0.1); ) Thanks, Jem Jem Finer finer@easynet.co.uk ------------------------------ Date: Mon, 10 May 1999 18:34:31 -0600 From: James McCartney <---@---.---> Subject: Re: fft filtered by oscillator At 12:37 PM -0600 5/10/99, finer@easynet.co.uk wrote: >As the fft "outputs a continuous signal that must be operated upon by a >UGen" I thought perhaps that one could use an oscillator to filter the >output of an fft. You can, but you have to filter the OUTPUT not try to plug a UGen into an argument that is expecting a Signal buffer. Since the argument is not the Signal that it is expecting, it assumes you do not want to do any filtering. I guess I need to print an error if you are not passing either a Signal or nil. The example "ring modulating the spectrum" is doing a UGen multiplying the spectrum. Look at that one. One problem is that the spectrum has a mirror symmetry, so you should ideally be multiplying the spectrum by a wave that also has this symmetry. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 11 May 1999 19:56:28 +1000 From: Garth Paine <---@---.---> Subject: CyberArts Performance I thought this might be of interest to the list as it is using networked SC. HelveticaMOBIUS Concert - CyberArts Festival TimesA Telepresence Musical Improvisation between Melbourne, Australia & Boston, May 15 & 16 Times(20 minutes) between 11AM and 1PM EST, Australia - (8PM to 10PM Boston time) (exact time to be Confirmed) TimesThis musical performance is part of the CyberArts Festival. It is sponsored by the Interactive Information Institute, Melbourne, Australia, and by Mobius, an artist-run centre for experimental arts in Boston Massachusetts. This performance breaks new ground by allowing the remote control of electronic instruments over the Internet. Landon Rose will play software instruments, custom developed by Garth Paine within the programming language SuperCollider.Times The instrument is played my moving the mouse across the screen at the remote location (Boston), thereby generating pitch and modulation data for the software instrument. In addition to the SuperCollider instrument, Landon Rose, or audience members in Boston will be able to select and trigger any of hundreds of sound files for playback on an Apple Macintosh here in Melbourne. The combination of the pre-structured sound files and SuperCollider instrument will create a rich and enveloping sound-score. Composer Garth Paine will also play additional elements into the score, and mix the outcome live in Melbourne for streaming over the Internet to the concert at Mobius in Boston where composer Landon Rose will further manipulate the signal before dispersing it through a multi-speaker sound system. This project is unique in that it uses Java technologies (developed by John, Vivek, Nilath) to allow the remote access to the musical instruments, and uses the Internet rather than ISDN links to stream the performance outcome to both a live and Internet based audience in realtime. The performance can be accessed at http://cis.iii.rmit.edu.auTimes. (sorry, but you will need Microsoft Media Player - get it at www.microsoft.com) Further development of this approach to musical composition and performance will see world wide public access to virtual instruments coupled with realtime sound streaming to create an open virtual performance space for anyone at anytime. We are grateful for the generous support of the interactive information institute (iCube), Melbourne, Australia, and the Mobius Artists Group, Boston, Massachusetts, USA. Feel free to attend the Performance at iCube, RMIT, Melbourne ------ Landon Rose - Composer/Performer Landon Rose has been a professional musician for the past twenty years. He received his college degree at the University of Massachusetts at Boston in 1987 graduating with Honors in Music . He went on to complete a Masters in World Music at Wesleyan University in Middletown Connecticut, graduating in 1991. There he studied composition with Alvin Lucier, Ron Kuivila and Anthony Braxton. He studied sculpture with Jeffrey Schiff. Mr. Rose works as a visiting sound artist in school programs throughout the greater Boston area. He is on the Artist Roster of the Massachusetts Cultural Council. He has received grants from both the MCC and local cultural councils the past four years for this work. One of his residency proposals received the highest rating score by the MCC panel for the spring semester('98). He is currently in residency at the Lincoln School in Brookline, Massachusetts, working with seventh and eighth graders building an experimental instrument using spinning disks, guitar pick-ups, loudspeakers and stovepipe. In 1994 he joined the Mobius Artists Group, Boston's artist-run centre for experimental work in all media. The scope of his work there includes: building instruments - sounding bows made from piano wire and reinforcement bar, amplified via phonograph cartridge, tie-clip microphone or guitar pick-up; creating electroacoustic computer music with SuperCollider, a real-time sound processing application for the Macintosh; composing music for others to play; composing music for film and video; and building sound objects- interactive sculptural pieces with sound as the primary element. Being a member of an artist group has helped him define a music which borders performance art on one side and sculpture on the other. Mr. Rose has recently become a member of the American Composers Forum and was awarded a grant with fellow composer Neil Leonard titled "The ElectroAcoustic Kite Project" which was performed May 16,1998 in Lars Anderson Park, Brookline. The artist speaks: Helvetica"I like to make sounds which herald the landscape of our environment and ring out an identity: the production of these sounds are often the result of an activity or process." TimesGarth Paine - Composer/Performer Garth Paine is a freelance composer, sound designer and installation artist. His work ranges through theatre, dance, video, film, multimedia and installations. He has been commissioned extensively in both Australia and the United Kingdom. His work with Company in Space toured in 1998 to SIGGRAPH (USA), Amsterdam and London. He has been invited to be composer/researcher in residence at the Staatliches Institut für Musikforschung (SIM), Berlin in the second half of 1999. Garth utilises a range of composition tools from the high end computer synthesis programs such as SuperCollider and MAX MSP to acoustic instruments and found objects. Garth has a fascination with the manipulation of found sounds, their spatialisation and reference within a human context. September 1996 saw his Intelligent Interactive Virtual Environment installation MQM exhibited at Linden Gallery in Melbourne, creating a virtual video and audio environment controlled by the movement and behaviour patterns of people within the space. This work led to a series of installation, the most recent, MAP 1 will tour in 1999 as a solo exhibition in Australia, Berlin (Germany), Linz (Austria) and Wellington (New Zealand). Garth Paine worked in the UK (1992-93) as composer/sound designer for the highly acclaimed British dance-theatre company Second Stride on Why Things Happen (1992), Fast and Dirty (1993), and Escape at Sea (1993). He was sound designer on the London West End production of Much Ado About Nothing (1993) and was associated with the works of choreographers Siobhan Davies, Lloyd Newson, Ian Spink, Ashley Page and Lynn Seymour. Whilst in the UK, he had works premiered at the Institute for Contemporary Arts, London, and had the good fortune of being assistant to composer Kevin Volans. Garth is always investigating new creative possibilities. His work in theatre, and video give him a wide experience as a collaborator. His preference is to be involved from the early stages of development so that the music and sound are a considered, vital and important contribution to every project. Cheers, Garth BTW: note that I have changed email and www addresses to activatedspace.com.au creativeaccess.com.au will not work after June 01, 1999 ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. Activated Space . Composer, Sound Designer, Installation Artist .. Interactives Designer, Exhibition Consultant ........ph. 61 3 95720133 garth@activatedspace.com.au http://www.activatedspace.com.au .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. ------------------------------ Date: Tue, 11 May 1999 19:20:59 +0200 From: julian rohrhuber <---@---.---> Subject: runtime listediting how can I edit a list in runtime? it would be very practical for many applications to have a window with the current array that can be changed and refreshed from the GUI. - --julian ------------------------------ Date: Tue, 11 May 1999 11:31:20 -0600 From: "David Cottle" <---@---.---> Subject: Smalltalk Hi, I'm sure I've asked this before. I want to know SC better, and the documentation seems to assume a working knowledge of Smalltalk. Where can I find an efficient (i.e. cheap and fast) tutorial for Smalltalk? I've looked pretty closely at Squeak, but I don't recognize a lot of what I see in SC. Do I need to spring for a text (Lewis' The Art and Science . . . )? - -- ><><><><><><><><><><><> David Cottle composition, notation, contra lime@uiuc.edu ------------------------------ Date: Tue, 11 May 1999 16:05:09 -0400 (EDT) From: Mark Ballora <---@---.---> Subject: Re: Smalltalk I found these two helpful: On to Smalltalk Patrick Henry Winston Addison Wesley also the site that came up on this list some months ago: http://www2.ncsu.edu/eos/info/ece480_info/project/spring96/proj63/www/tutorial/content.html On Tue, 11 May 1999, David Cottle wrote: > Hi, > > I'm sure I've asked this before. I want to know SC better, and the > documentation seems to assume a working knowledge of Smalltalk. Where can I > find an efficient (i.e. cheap and fast) tutorial for Smalltalk? I've looked > pretty closely at Squeak, but I don't recognize a lot of what I see in SC. > Do I need to spring for a text (Lewis' The Art and Science . . . )? > > -- > ><><><><><><><><><><><> > David Cottle > composition, notation, contra > lime@uiuc.edu > ------------------------------ Date: Tue, 11 May 1999 15:34:00 -0600 From: James McCartney <---@---.---> Subject: Re: runtime listediting At 11:20 AM -0600 5/11/99, julian rohrhuber wrote: >how can I edit a list in runtime? >it would be very practical for many applications to have a window >with the current array that can be changed and refreshed from the GUI. GUIUtils can do this. A similar thing could be done in your own code. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 11 May 1999 22:42:47 +0100 From: Arie van Schutterhoef <---@---.---> Subject: Re: Smalltalk >Where can I >find an efficient (i.e. cheap and fast) tutorial for Smalltalk? >><><><><><><><><><><><> >David Cottle >composition, notation, contra >lime@uiuc.edu Dear David, Maybe the following site can be of some use: http://lisa.uni-mb.si/student/seminar/smalltalk/links/index.htm Good luck, Arie van Schutterhoef <<<<<<<<<<<<<<<<<<<<<<<<<-////||\\\\->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Arie van Schutterhoef artistic director Schreck Ensemble # -laboratory for live electro-acoustic music- # The Netherlands e-mail:arsche@stad.dsl.nl http://www.xs4all.nl/~schreck/ Tel: 00-31-71-5612287 Fax: 00-31-70-3859268 <<<<<<<<<<<<<<<<<<<<<<<<<-////||\\\\->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ------------------------------ Date: Wed, 12 May 1999 08:56:51 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: Smalltalk >I'm sure I've asked this before. I want to know SC better, and the >documentation seems to assume a working knowledge of Smalltalk. Where can I >find an efficient (i.e. cheap and fast) tutorial for Smalltalk? I've looked >pretty closely at Squeak, but I don't recognize a lot of what I see in SC. >Do I need to spring for a text (Lewis' The Art and Science . . . )? 1. Book James recommended back in 1997, and 1998 in this list the following book: Kent Beck: Smalltalk Best Practice Patterns. Prentice Hall 1997, ISBN 0-13-476904-X. It is the "ABC" of good OOP coding - explaining for example how to use the super message or init methods elegantly etc etc. many things that you see all over but do not make sense immediately. VERY RECOMMENDED! 2. Web sites: There is a tutorial link site with a *long* list at: http://www.odateam.com/links/smalltalk/s_tutori.html also a look at the OOP and Design Patterns pages at http://141.20.150.214:88/MusicTechnology particularly: http://141.20.150.214:88/MusicTechnology.46 (At the moment only basic concepts explained, not yet enough detail). Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: "David Cottle" <---@---.---> >To: SC >Subject: Smalltalk >Date: Tue, 11 May 1999 7:31 PM > >Hi, > >I'm sure I've asked this before. I want to know SC better, and the >documentation seems to assume a working knowledge of Smalltalk. Where can I >find an efficient (i.e. cheap and fast) tutorial for Smalltalk? I've looked >pretty closely at Squeak, but I don't recognize a lot of what I see in SC. >Do I need to spring for a text (Lewis' The Art and Science . . . )? > >-- >><><><><><><><><><><><> >David Cottle >composition, notation, contra >lime@uiuc.edu > ------------------------------ Date: Wed, 12 May 1999 00:21:08 -0700 From: "Garry Kling" <---@---.---> Subject: SC not recognizing 1212 i/o Has anyone had any problems getting SC to recognize the Korg 1212 card? I installed the card 2 days ago, and have been trying every possible extension setup to get it to work, but SC doesn't recognize it. Sound Manager recognizes it, as does the korg utility, and I can get 2 channel out of SC with it under the sound manager setup. I disabled the ATI extensions as Korg suggests, as well as the extensions for the Audiomedia III card that I have. Any ideas? Garry Kling CEMS Central Washington University <<< James McCartney 5/11 1:56p >>> At 11:20 AM -0600 5/11/99, julian rohrhuber wrote: >how can I edit a list in runtime? >it would be very practical for many applications to have a window >with the current array that can be changed and refreshed from the GUI. GUIUtils can do this. A similar thing could be done in your own code. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ End of sc-users-digest V1 #39 *****************************