From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #7 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 Tuesday, September 15 1998 Volume 01 : Number 007 ---------------------------------------------------------------------- Date: Thu, 03 Sep 1998 10:59:31 +0200 From: "Iannis Zannos" <---@---.---> Subject: Smoothing away the ImpulseSequencer click with Decay2 - and remark Correction: The clicks of my previous posted example can be smoothed away with Decay2 as follows. ( Synth.scope({ Klank.ar( `[[ 158, 145, 391, 247, 116, 296, 140, 168, 236, 163 ], nil, Array.fill(10, 3)], Decay2.ar(ImpulseSequencer.ar(1, Impulse.ar(2)), 0.001, 1, PinkNoise.ar(4))) }, 3); ) But still the question remains, why does the first "pulse" always sound stronger than all the others? Probably an inherent property in the Klank algorithm... Regards, Iannis Zannos ------------------------------ Date: Thu, 03 Sep 1998 19:05:21 +0200 From: "Iannis Zannos" <---@---.---> Subject: Arguments vs. variables closure frames created via methods Following code shows that while method *variables* are accessible to closures generated by the method, method *arguments* are not accessible - unless I copy them to variables. Is this intended? It seems strange to me, as the behavior in the example below shows: - - if you comment out the code doing the copying from the arguments to the variables, then the closure assigns frame instances for them - not numeric values. - - If on the other hand args are copied to variables, then BOTH the args and the variables are accessible from the closure. In practice the above fact in SC2 means that one has to assign to a variable any argument used inside a closure generated by the method. This can become cumbersome when using closures for generating UGP-instruments to be spawned as sound events - as seen below. Best, Iannis SIM - ---------------- EXAMPLE -------------------------------------------------- *metals1 { arg amp = 80, decay = 0.004, resonatorn = 15, freqbase = 1000.0, freqrange = 8000.0, ringbase = 1.0, ringrange = 4.0; var ampv, decayv, resonatornv, freqbasev, freqrangev, ringbasev, ringrangev; /* #ampv, decayv, resonatornv, freqbasev, freqrangev, ringbasev, ringrangev = [amp, decay, resonatorn, freqbase, freqrange, ringbase, ringrange]; */ ^{ var freqs = 0, rings = 1, env = 2; // put in here so they are generated anew when spawning! [amp, decay, resonatorn, freqbase, freqrange, ringbase, ringrange].postln; [ampv, decayv, resonatornv, freqbasev, freqrangev, ringbasev, ringrangev].postln; [freqs, rings, env].postln; '==============================================='.postln; FSinOsc.ar(440, Line.ar(0.2, 0, 1)); /* freqs = Array.fill(resonatorn, { freqbase + freqrange.rand} ); rings = Array.fill(resonatorn, { ringbase + ringrange.rand} ); env = Env.linen(0.0001, ringbase + ringrange, 0.001, 1); EnvGen.ar(env, Klank.ar(`[freqs, nil, rings], Decay.ar(Impulse.ar(1), decay, EnvGen.ar(env, WhiteNoise.ar(amp))))) }; */ } } } /* Tests: play(CymbalTest.metals1 ); // Output without copying: [ instance of Method Interpreter : interpretCmdLine (0655C... ] [ nil, instance of Method Interpreter : interpret (0655CD78), ... ] [ 0, 1, 2 ] =============================================== // Output with copying, here both the arguments // and the variables are accessible to the closure! [ 80, 0.004, 15, 1000, 8000, 1, 4 ] [ 80, 0.004, 15, 1000, 8000, 1, 4 ] [ 0, 1, 2 ] ------------------------------ Date: Sun, 6 Sep 1998 10:25:35 -0700 From: James McCartney <---@---.---> Subject: Re: Arguments vs. variables closure frames created via methods This was another bug in methods which have ^{ ... } as their only expression. It was being optimized incorrectly. Thanks for pointing it out. It has been fixed. In other words, accessing method arguments from within closures is perfectly legal and will work correctly in SC2d24. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Sun, 6 Sep 1998 10:29:56 -0700 From: James McCartney <---@---.---> Subject: Re: Click in ImpulseSequencer fixed. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Mon, 07 Sep 1998 13:11:24 +0200 From: "Iannis Zannos" <---@---.---> Subject: MVC: Views, Windows, Models... Also: File::write 1. MVC (Model View Controller paradigm) Should Views or Windows have a model variable? Immediate use: providing "save" and "reset" methods for saving/recalling user settings. Further uses: communication with "Model" instances or any other object type data sources. Windows or Views may often need to know the application they belong to, for sending or receiving data. (I am now using a subclass of ControlView that supplies a "data" variable - will avoid making my own additions to View itself until this issue is discussed) - ---------- 2. File write: File.help says: write(item) Writes an item to the file. item - one of the following: ... any object - writes the indexable part of any non Slot format indexable object. What is a non Slot format indexable object?, what its indexable part? I tried with an array and a list, with no success. Regards, Iannis Zannos SIM ------------------------------ Date: Mon, 7 Sep 1998 10:13:42 -0700 From: James McCartney <---@---.---> Subject: Re: MVC: Views, Windows, Models... Also: File::write >1. MVC (Model View Controller paradigm) > >Should Views or Windows have a model variable? Yes they should. I'll put that in. You will be responsible for using the model variable yourself in the action proc. > >2. File write: > >File.help says: > >write(item) > >Writes an item to the file. >item - one of the following: > ... > any object - writes the indexable part of any non > Slot format indexable object. > >What is a non Slot format indexable object?, >what its indexable part? >I tried with an array and a list, with no success. String, Signal, Int8Array, Int16Array, Int32Array, FloatArray, DoubleArray, or any other class which has slot formats [int8],...[double]. Currently they are all written big endian. A class' instances may have both named slots and indexable slots. In order to have indexable slots, you use a declaration of the form '[' ']' ':' '{' Where is one of: slot, char, int8, int16, int32, float, double, color. If the format is 'slot' then anything may be stored in the slots. Otherwise only the given type may be stored there. If the format is not 'slot' then File write will be able to write it. You can then use the 'at', 'put' methods to access indexed slots. For example : MyClass [float] : MySuperclass { ... } --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Tue, 8 Sep 1998 11:55:09 +0100 From: finer@easynet.co.uk Subject: zoom I'm trying to open a signal view zoomed out to the maximum, though I'm not quite sure what that is ! So I have a line like this : v = SignalView.new( w, Rect.new( 25, 33, 153, 133 ), sample,-1, 1, 0, 10); Which I thought would set a zoom of 10. The signal view still opens on a much lower setting . Is this a bug ? Thanks, Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Tue, 8 Sep 1998 08:36:12 -0700 From: James McCartney <---@---.---> Subject: Re: zoom At 3:55 AM -0700 9/8/98, finer@easynet.co.uk wrote: >So I have a line like this : >v = SignalView.new( w, Rect.new( 25, 33, 153, 133 ), sample,-1, 1, 0, 10); > >Which I thought would set a zoom of 10. A zoom of 10 is still pretty low. Your view is 125 pixels wide. With a zoom of 10 that gets you about 1250 samples which is 1250/44100 seconds equalling only 28 milliseconds. What you might do is calculate the zoom as: bounds = Rect.new( 25, 33, 153, 133 ); zoom = ceil(sample.size / bounds.width); // fit sample to view v = SignalView.new( w, bounds, sample,-1, 1, 0, zoom); --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Tue, 08 Sep 1998 18:15:28 +0200 From: "Iannis Zannos" <---@---.---> Subject: Protection against memory overflow at recursive perform possible? A crash due to a programming error prompted me to examine the behavior of SC in recursive situations without end-of-recursion check. When using 'perform' there seems to be no graceful way out - even quitting the application per MacOS key command will cause the machine to crash. Noting that in a situation that requires 'perform' it may be very difficult to put in a foolproof test against this kind of recursion, the question is: is it possible to put in a memory overflow without compromising performance? Iannis Z. Berlin Test code RecursionTest { normal { arg foo = 1; foo.postln; if ( foo > 0, { this.normal(foo - 1); } ); } recursivePerformWithCheck { arg foo = 3; foo.postln; if ( foo > 0, { this.perform('recursivePerformWithCheck', (foo - 1)); } ); } recursivePerformWithoutCheck { arg foo = 3; foo.postln; // commenting this out may cause (will cause?) immediate crash // not commenting it will enter an endless printing loop. this.perform('recursivePerformWithoutCheck', (foo - 1)); } } /* RecursionTest.new.normal(1); 1 0 RecursionTest.new.recursivePerformWithCheck(1); 1 0 RecursionTest.new.recursivePerformWithoutCheck(1); */ ------------------------------ Date: Tue, 8 Sep 1998 11:50:08 -0700 From: James McCartney <---@---.---> Subject: Re: Protection against memory overflow at recursive perform possible? At 9:15 AM -0700 9/8/98, Iannis Zannos wrote: >A crash due to a programming error prompted me to examine >the behavior of SC in recursive situations without end-of-recursion >check. When using 'perform' there seems to be no graceful >way out - even quitting the application per MacOS key command >will cause the machine to crash. > >Noting that in a situation that requires 'perform' >it may be very difficult to put in a foolproof test >against this kind of recursion, the question is: >is it possible to put in a memory overflow without compromising >performance? No. Testing for stack overflow at every stack push would definitely kill performance which is why SC does not do it. You just crash.. A per function call check could be put in, but this would not catch all stack overflow situations since function calls are not the only thing that push the stack. Some arbitrary high water mark could probably be used that would catch it most of the time. However since it is not foolproof and does still impact performance to check every call, I did not put it in. The stack is 8192 slots deep. Each function which can be put on the stack uses 6 slots + numargs + numvars. Functions which create a closure are not pushed on the stack, but are allocated from the heap. You could conceivably use this as a hack to get around the problem, but then you'll still crash once the heap is depleted. It is best not to use deeeeeply recursive algorithms. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Tue, 8 Sep 1998 20:38:23 +0100 From: finer@easynet.co.uk Subject: Soundfile size In SC1 I can/could load quite big sound files -14Mb with 22Mb RAM allocated. In SC2 with comparable RAM I can only load around 4.5Mb. Wondering why. Thanks, Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Tue, 8 Sep 1998 17:25:43 -0700 From: James McCartney <---@---.---> Subject: Re: Soundfile size At 12:38 PM -0700 9/8/98, finer@easynet.co.uk wrote: >In SC1 I can/could load quite big sound files -14Mb with 22Mb RAM allocated. >In SC2 with comparable RAM I can only load around 4.5Mb. > >Wondering why. It may be because of the following. There is a bug in SCd23 where SignalView does not release the scopeSignal dependant. This leaves Signal buffers lying around in the Object.dependantsDictionary. Therefore they never get GC'ed, and memory gets fragmented. The fix is to change SignalView method 'release' to: release { signal.removeDependant(this); scopeSignal.removeDependant(this); // add this line super.release; } However I hope to have SC2d24 uploaded tonight, so this fix will be in there. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Tue, 8 Sep 1998 20:18:13 -0700 From: James McCartney <---@---.---> Subject: SC2d24 available SC2d24 is now at: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx This version has the following changes: Synth tasks have been removed and replaced with a real "sched" method for Synths. Multiple periodic tasks can be started. See the Synth help file for documentation and examples. The "z analog variant" example was modified to use the new scheme. TSpawn can have events triggered externally from a function, such as a Synth sched task, or Sequencer function. See the TSpawn help file for documentation and examples. EnvGen has a gate input for using waveforms to trigger envelopes. If no gate signal is supplied, then it works as now. See the EnvGen help file. Klang and Klank have freq scale and offset inputs, so that the same specifications arrays can be shifted and transposed for individual events. Klank also has a decay time scale input. These inputs are not modulateable however. Any patches using the mul, add inputs of Klang or Klank will need to be shifted over to accomodate the new inputs. Lots of bug fixes, among them : Various problems in the class library were fixed. SoundFile read/write format problems fixed. SignalView + Scope memory leak fixed. Returning a closure from a method fixed. Problem compiling #[] fixed. Default value for an ellipsis argument is now #[] rather than nil. This is more logical and interacts better with performList. TSpawn no longer spuriously triggers immediately upon starting up. ImpulseSequencer glitch fixed. Thanks to Iannis Zannos for finding many bugs. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Wed, 09 Sep 1998 09:41:11 +0200 From: "Iannis Zannos" <---@---.---> Subject: dependantsDictionary ? / SC Demo by James at ICMC98 From language examples file: ( // show all currently active dependancies, if any. Object.dependantsDictionary.keysValuesDo({ arg key, val; [key, val].postln; val.do({ arg item; item.postln; }); "------\n".post; }); ) Yet this will cause an error, and Object.dumpInterface shows no dependantsDictionary method. depentants returns an IdentitySet. - (not a Dictionary? ) ... Should be easy to fix for James. James, Cudos for the progress made in the recent versions. Best regards, Iannis Zannos SIM Berlin iani@sim.spk-berlin.de ------------------------------ Date: Wed, 9 Sep 1998 08:58:20 -0700 From: James McCartney <---@---.---> Subject: Re: dependantsDictionary ? / SC Demo by James at ICMC98 At 12:41 AM -0700 9/9/98, Iannis Zannos wrote: >From language examples file: > >( >// show all currently active dependancies, if any. >Object.dependantsDictionary.keysValuesDo({ arg key, val; > [key, val].postln; > val.do({ arg item; item.postln; }); > "------\n".post; >}); >) > >Yet this will cause an error, and Object.dumpInterface >shows no dependantsDictionary method. depentants returns >an IdentitySet. - (not a Dictionary? ) ... > >Should be easy to fix for James. Actually you can fix this yourself. Just change the classvar dependantsDictionary's declaration to have a getter method by adding a '<'. dependantsDictionary is an IdentityDictionary that contains associations whose values are IdentitySets. Every object that has dependants is a key in the dictionary and the associated value is an IdentitySet of that object's dependants. I had removed this method because you should only use the dependancy protocol and not alter this directly. You won't hurt anything though by adding it. Object.dumpInterface will only show instance methods of Object. You'd have to say Meta_Object.dumpInterface to get the class methods. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d23.sea.hqx ------------------------------ Date: Wed, 9 Sep 1998 09:05:14 -0700 From: James McCartney <---@---.---> Subject: Re: SC2d24 available At 8:18 PM -0700 9/8/98, James McCartney wrote: >Klang and Klank have freq scale and offset inputs, so that the same >specifications arrays can be shifted and transposed for individual events. >Klank also has a decay time scale input. >These inputs are not modulateable however. >Any patches using the mul, add inputs of Klang or Klank will need to >be shifted over to accomodate the new inputs. I just noticed that the UGen_Ref_Sheet doesn't properly reflect these changes. Look to the respective help files for the correct arguments. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Wed, 9 Sep 1998 11:47:47 -0700 From: James McCartney <---@---.---> Subject: SC DEMO at ICMC98 Fri Oct 2 at approx 2:00pm As alluded to in the Subject of Iannis' previous message, I will be giving a demonstration of SuperCollider 2. This session runs from 1:00pm to 2:30pm of which I am the third of three presenters, so that puts me at about 2:00pm. If any of you have patches that might be cool to demonstrate I'd like to see them. Iannis and I have talked about having an SC meeting the day after the conference, if anyone else might be interested in this. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Thu, 10 Sep 1998 18:14:53 +0100 From: finer@easynet.co.uk Subject: sound file size & crashes Running SC2. d24 with 22Mb RAM trying to load a 4.1Mb sound file caused the following : alloc failed 1 20 8388640 0 bgwfr t sz: 0 0 4 0 0 4 32 1 bgwfr t sz: 0 0 5 0 0 5 80 2 bgwfr t sz: 0 0 5 1 0 6 192 3 bgwfr t sz: 1 0 4 1 0 6 384 4 bgwfr t sz: 0 0 2 0 0 2 256 5 bgwfr t sz: 0 0 2 0 0 2 512 6 bgwfr t sz: 0 0 1 0 0 1 512 10 bgwfr t sz: 0 0 1 0 0 1 8192 13 bgwfr t sz: 1 0 0 0 0 1 65536 20 bgwfr t sz: 0 0 1 0 0 1 8388608 tot bgwfr t sz: 2 0 25 2 0 29 8464304 *DANGER: OUT of MEMORY. Operation failed. ) Despite the memory leak fix SC2 seems to still find it impossible to load anywhere near the size of files that could be loaded into SC1. Is this correct ? Another thing is that several patches of mine crash after compiling and throw up the norton crashguard message "unmapped memory exception". Sometimes the same patches run fine - any idea what might be going on ? Thanks, Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Thu, 10 Sep 1998 12:40:25 -0700 From: James McCartney <---@---.---> Subject: Re: sound file size & crashes At 10:14 AM -0700 9/10/98, finer@easynet.co.uk wrote: >alloc failed 1 20 8388640 > 0 bgwfr t sz: 0 0 4 0 0 4 32 > 1 bgwfr t sz: 0 0 5 0 0 5 80 > 2 bgwfr t sz: 0 0 5 1 0 6 192 > 3 bgwfr t sz: 1 0 4 1 0 6 384 > 4 bgwfr t sz: 0 0 2 0 0 2 256 > 5 bgwfr t sz: 0 0 2 0 0 2 512 > 6 bgwfr t sz: 0 0 1 0 0 1 512 >10 bgwfr t sz: 0 0 1 0 0 1 8192 >13 bgwfr t sz: 1 0 0 0 0 1 65536 >20 bgwfr t sz: 0 0 1 0 0 1 8388608 >tot bgwfr t sz: 2 0 25 2 0 29 8464304 >*DANGER: OUT of MEMORY. Operation failed. >) It looks like you had already loaded a file that has not been GC'ed. There may be a problem, but without more info on what you are doing I can't tell. >Despite the memory leak fix SC2 seems to still find it impossible to load >anywhere near the size of files that could be loaded into SC1. >In SC1 I can/could load quite big sound files -14Mb with 22Mb RAM allocated. This is not possible if your file was a 16 bit per sample file. With 22 Mb you can only load an 11 Mb file maximum because it will be doubled in size as it is converted to float. Since there is a couple of megs of overhead the actual maximum size is less. >Another thing is that several patches of mine crash after compiling and >throw up the norton crashguard message "unmapped memory exception". >Sometimes the same patches run fine - any idea what might be going on ? I have no way of knowing unless you can give an example patch. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Fri, 11 Sep 1998 09:25:31 +0100 From: finer@easynet.co.uk Subject: FFT If I'm right in my understanding that the FFT deconstructs it's input into sine waves of various different frequencies (and amplitudes and phases) and that these frequencies are defined by the size of the FFT then how does one get at the individual frequency bands ? If the FFT size is 512 does that mean that there is an array of 512 values each one pertaining to a different frequency band ? Presumably it's possible to make a very precise eq if this is the case. Thanks, Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Fri, 11 Sep 1998 09:50:08 +0100 From: finer@easynet.co.uk Subject: Re sound file size With 22Mb RAM allocated to SC 2.0d24 I used the simple example patch to load and play a sound file: ( // normal playback at same speed of recording var filename, sound, signal; filename = ":Sounds:Sounds SC1:bird"; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.play({ PlayBuf.ar(signal, sound.sampleRate, 1, 0, 0, signal.size-2) }); },{ (filename ++ " not found.\n").post }); ) - the file size was 4.1 Mb and resulted in the afore sent error. Following your explanation about doubling file size and adding on a bit more for overheads this still seems like a rather small file size to be rejected. Cheers, Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Fri, 11 Sep 1998 14:21:35 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: FFT Dear Jem, short answer: use FFT and IFFT input window and output window arguments. long answer: I posted a similar question to James directly some while ago. SC, like other programs including MSP put the individual "frequency bands" in a Signal (!!!) because for each FFT window there are as many frequency bands output as there are samples in the window. (from that point of view FFT effects no data reduction, if I understand correctly. Of course you would have quite some trouble trying to pick out and modify the individual samples of in the FFT output signal. Thats why you have to use the input or window, which gets multiplied by the respective signal. I have not tried this out yet, so if you succeed, please post a nice example! Cheers, Iannis Z. - ---------- >From: finer@easynet.co.uk >To: sc-users@lists.io.com >Subject: FFT >Date: Fri, 11 Sep 1998 10:25 AM > > >If I'm right in my understanding that the FFT deconstructs it's input into >sine waves of various different frequencies (and amplitudes and phases) and >that these frequencies are defined by the size of the FFT then how does one >get at the individual frequency bands ? > >If the FFT size is 512 does that mean that there is an array of 512 values >each one pertaining to a different frequency band ? > >Presumably it's possible to make a very precise eq if this is the case. > >Thanks, > > > > >Jem Finer > >Kentish Town >London NW5 >finer@easynet.co.uk > >44 171 267 6416 > > > ------------------------------ Date: Fri, 11 Sep 1998 15:55:24 -0700 From: James McCartney <---@---.---> Subject: Payment by credit card announcement. People may now pay for SuperCollider by credit card through Kagi at : http://order.kagi.com/?QE6 In addition the Kagi Register program will be included in future distributions of SuperCollider which will allow payment via check, money order, invoice, First Virtual or even foreign cash currency and sent by email, fax, or postal mail. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Fri, 11 Sep 1998 23:30:53 +0000 From: arsche@stad.dsl.nl Subject: Re: Payment by credit card announcement. Dear James, Does this mean that the people who paid around 300 dolars to get SC 1, have the pay again for the the definitive version of SC 2, thus probably alienating your faithful tribal following gathered with your unrelentness policy of updating version after version, in order to get a immaculate SC 2? Yours sincerely, Arie van Schutterhoef artistic director Schreck Ensemble laboratory for live electro-acoustic music Holland http://www.xs4all.nl/~schreck/ Tel: 00-31-71-5612287 Fax: 00-31-70-3859268 ------------------------------ Date: Fri, 11 Sep 1998 17:24:21 -0700 From: James McCartney <---@---.---> Subject: Re: Payment by credit card announcement. At 4:30 PM -0700 9/11/98, arsche@stad.dsl.nl wrote: >Dear James, > >Does this mean that the people who paid around >300 dolars to get SC 1, have the pay again >for the the definitive version of SC 2, thus >probably alienating your faithful tribal following >gathered with your unrelentness policy of updating >version after version, in order to get a immaculate >SC 2? No way, man! All version 1 users get 2.0 for free. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Sat, 12 Sep 1998 01:41:01 +0000 From: arsche@stad.dsl.nl Subject: Re: Payment by credit card announcement. Dear James, Bless you, sort of.... SC2d24 is a great improvemeent; I experimented which with a similar convolution patch in Max/msp and in SC2, and discovererd that the first one took about 30 to 40 % more CPU power, which is quite amazing. Some general questions about platforms etc... I know you considered porting SC to the Be OS, but it looks more and more that Be is leaving the PPC-platform in favour of that of Intel, so I presume that you're focusing now on the new Mac OS X with the certainty of running it on the upcoming G4 Macs... By the way, are Korg 1212-drivers in SC2d19 also usable for the SC2d24 version? cheers, Arie van Schutterhoef artistic director Schreck Ensemble laboratory for live electro-acoustic music Holland http://www.xs4all.nl/~schreck/ Tel: 00-31-71-5612287 Fax: 00-31-70-3859268 ------------------------------ Date: Sat, 12 Sep 1998 11:33:46 -0600 From: James McCartney <---@---.---> Subject: oscillator benchmark Here's a patch you can use to benchmark the performance of your machine. Vary n to the maximum value for your machine without glitching. A 300 Mhz G3 can have n as high as 290 or so. ( // interpolating oscillator benchmark // this patch sums, scales and outputs a bank of interpolating oscillators var n, t; // vary n until you find the maximum your machine can play without glitching n = 100; // generate a sine wave table t = Signal.newClear(512).sineFill([1]).normalize.asWavetable; { z = 0.0; n.do({ arg i; z = Osc.ar(t, 800, 0, 0.5, z); // daisy chain sum of oscils }); z / (n * 2) // scale final output }.play ) --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Sat, 12 Sep 1998 11:43:07 -0600 From: James McCartney <---@---.---> Subject: oscillator benchmark (correction) Oops, I had an extra multiply per oscillator in there. I changed the 0.5 mul input to a 1 which optimizes out the multiply, then I scaled by 1/4 rather than 1/2 as before.. I can get 320 oscillators on a 300 Mhz G3 with this patch. ( // interpolating oscillator benchmark // this patch sums, scales and outputs a bank of interpolating oscillators var n, t; // vary n until you find the maximum your machine can play without glitching n = 100; // generate a sine wave table t = Signal.newClear(512).sineFill([1]).normalize.asWavetable; { z = 0.0; n.do({ arg i; z = Osc.ar(t, 800, 0, 1, z); // daisy chain sum of oscils }); z / (n * 4) // scale final output }.play ) --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Sat, 12 Sep 1998 21:19:39 +0000 From: arsche@stad.dsl.nl Subject: Re: oscillator benchmark (correction) Dear James Thanks for the benchmark- test. Now I have some playing to do... Arie van Schutterhoef Schreck Ensemble Holland ------------------------------ Date: Sat, 12 Sep 1998 14:40:16 -0600 From: James McCartney <---@---.---> Subject: Re: Payment by credit card announcement. At 7:41 PM -0600 9/11/98, arsche@stad.dsl.nl wrote: >Some general questions about platforms etc... >I know you considered porting SC to the Be OS, >but it looks more and more that Be is leaving >the PPC-platform in favour of that of Intel, >so I presume that you're focusing now on the >new Mac OS X with the certainty of running it on >the upcoming G4 Macs... Actually BeOS makes a good bridge to intel, so I still want to do that port. >By the way, are Korg 1212-drivers in SC2d19 >also usable for the SC2d24 version? Not yet. Sound card drivers is the next task. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Sun, 13 Sep 1998 10:57:10 +0100 From: finer@easynet.co.uk Subject: Example patches James, The other day, in response to a question of mine regarding crashes you said : >I have no way of knowing [what the problem is] unless you can give an >example patch. I sent one to james@clyde.as.utexas.edu, the logic being that no one would really want a load of 1/2 useless code in their mail. Looking closely this morning at the bottom of one of your letters I noticed the address james@audiosynth.com Where is it best to send problem patches - to the whole mailing list or just to you - and if just to you which is the best address ? Thanks, Jem Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Sun, 13 Sep 1998 14:48:55 +0100 From: finer@easynet.co.uk Subject: WaveTables If, for example, one creates a new wavetable by changing settings in HarmonicsDialog either by the mouse or by the fill and alter menus, how does one then save or reverse engineer the new table? Thanks, Jem Jem Finer Kentish Town London NW5 finer@easynet.co.uk 44 171 267 6416 ------------------------------ Date: Sun, 13 Sep 1998 08:16:39 -0600 From: James McCartney <---@---.---> Subject: Re: Example patches At 3:57 AM -0600 9/13/98, finer@easynet.co.uk wrote: >James, > >The other day, in response to a question of mine regarding crashes you said : >>I have no way of knowing [what the problem is] unless you can give an >>example patch. > >I sent one to james@clyde.as.utexas.edu, the logic being that no one would >really want a load of 1/2 useless code in their mail. > >Looking closely this morning at the bottom of one of your letters I noticed >the address >james@audiosynth.com > >Where is it best to send problem patches - to the whole mailing list or >just to you - and if just to you which is the best address ? It depends. If you think it is something of interest to everyone, you can post it to the mailing list. Otherwise you can send it to support@audiosynth.com which is better than james@audiosynth.com. My james@clyde.as.utexas.edu may be going away at some point in the future so I'm transitioning over to other accounts. I'm looking at what may be causing the problem with the GC. I was tring to determine if you were doing anything unusual, but you're just running an example patch. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Mon, 14 Sep 1998 16:01:38 -0600 From: James McCartney <---@---.---> Subject: [CORRECTION] SC DEMO at ICMC98 Fri Oct 2 at _1:00pm_ It turns out that the demos will be 1.5 hours long and that the three scheduled demos will run concurrently. Therefore the SC demo will start at 1:00pm and I will have a lot more time to demo and Q&A. At 12:47 PM -0600 9/9/98, James McCartney wrote: >As alluded to in the Subject of Iannis' previous message, I will >be giving a demonstration of SuperCollider 2. This session runs >from 1:00pm to 2:30pm of which I am the third of three presenters, >so that puts me at about 2:00pm. > >If any of you have patches that might be cool to demonstrate I'd like >to see them. > >Iannis and I have talked about having an SC meeting the day after the >conference, if anyone else might be interested in this. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Mon, 14 Sep 1998 23:57:41 -0400 (EDT) From: David Crandall <---@---.---> Subject: Re: [CORRECTION] SC DEMO at ICMC98 Fri Oct 2 at _1:00pm_ Hate to sound so out of the loop,k but where is ICMC98? Just in case it's on the E. Coast... thanks dc ------------------------------ Date: Tue, 15 Sep 1998 00:20:56 -0600 From: James McCartney <---@---.---> Subject: Re: [CORRECTION] SC DEMO at ICMC98 Fri Oct 2 at _1:00pm_ At 9:57 PM -0600 9/14/98, David Crandall wrote: >Hate to sound so out of the loop,k but where is ICMC98? Just in case it's >on the E. Coast... Ann Arbor, MI --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Tue, 15 Sep 1998 11:06:30 +0100 From: finer@easynet.co.uk Subject: Re.Re Crashes James, Thanks - the Subject: Klank? Greetings -- Sorry if this seems remedial, but I'm learning 2d24 and have hit a wall in the examples. What is Klank? I've read all the literature (Moore, Dodge, Roads, Steiglitz, et al ...) but cannot find a definition of a "bank of fixed frequency resonators." Looking at the examples does not shed light through my thick skull. Can anyone enlighten me? Gratefully, Mark Ballora ------------------------------ Date: Tue, 15 Sep 1998 20:16:01 -0600 From: James McCartney <---@---.---> Subject: Re: Klank? At 6:48 PM -0600 9/15/98, Mark Ballora wrote: >Greetings -- > >Sorry if this seems remedial, but I'm learning 2d24 and have hit a wall in >the examples. > >What is Klank? > >I've read all the literature (Moore, Dodge, Roads, Steiglitz, et al ...) >but cannot find a definition of a "bank of fixed frequency resonators." >Looking at the examples does not shed light through my thick skull. > >Can anyone enlighten me? They are just band pass filters. If a band pass filter excited by an impulse, it will ring with a decaying sine wave. The narrower the filter the longer the ring time. Klank is a bank of band pass filters. You set the frequency and ring time of each filter. Each filter operates like a weight on a spring. When you pulse it, it begins to oscillate. Thus you can simulate the modes of oscillation in an object. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ftp://www.audiosynth.com//pub/updates/SC2d24.sea.hqx ------------------------------ Date: Tue, 15 Sep 1998 20:47:22 -0500 (CDT) From: antiorp@tezcat.com (=cw4t7abs) Subject: Re: Klank? >They are just band pass filters. If a band pass filter excited by an impulse, >it will ring with a decaying sine wave. The narrower the filter the >longer the ring time. Klank is a bank of band pass filters. You set >the frequency and ring time of each filter. Each filter operates like >a weight on a spring. When you pulse it, it begins to oscillate. Thus >you can simulate the modes of oscillation in an object. object = bm +? ------------------------------ End of sc-users-digest V1 #7 ****************************