From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #33 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 Sunday, March 28 1999 Volume 01 : Number 033 ---------------------------------------------------------------------- Date: Tue, 23 Mar 1999 22:11:30 -0700 From: "David Cottle" <---@---.---> Subject: Font size error Hi, I think this is a bug: I often use a larger font when teaching in the lab so that everyone can see. I've noticed, however, that several functions don't work well: selecting by double clicking, positioning the cursor, and balancing parentheses. Try this: Synth.scope( { SinOsc.ar(200) } ) And set it to 18 points, then try to position the cursor anywhere in the SinOsc.ar line, or double click on the SinOsc. - -- ><><><><><><><><><><><> David Cottle composition, notation, contra lime@uiuc.edu ------------------------------ Date: Wed, 24 Mar 1999 07:07:17 -0600 From: James McCartney <---@---.---> Subject: Re: Font size error At 11:11 PM -0600 3/23/99, David Cottle wrote: >Hi, > >I think this is a bug: I often use a larger font when teaching in the lab >so that everyone can see. I've noticed, however, that several functions >don't work well: selecting by double clicking, positioning the cursor, and >balancing parentheses. > >Try this: > >Synth.scope( > { > SinOsc.ar(200) > } >) > >And set it to 18 points, then try to position the cursor anywhere in the >SinOsc.ar line, or double click on the SinOsc. I don't have any problem. What font are you using? I tried Monaco, Helvetica, and "SuperCollider" all at 18 points. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 24 Mar 1999 07:21:58 -0600 From: James McCartney <---@---.---> Subject: Re: Font size error At 11:11 PM -0600 3/23/99, David Cottle wrote: >Hi, > >I think this is a bug: I often use a larger font when teaching in the lab >so that everyone can see. I've noticed, however, that several functions >don't work well: selecting by double clicking, positioning the cursor, and >balancing parentheses. > >Try this: > >Synth.scope( > { > SinOsc.ar(200) > } >) > >And set it to 18 points, then try to position the cursor anywhere in the >SinOsc.ar line, or double click on the SinOsc. OK, I do see a problem if you use tabs and a bitmap font, which "SuperCollider" is. If you change to Monaco, the problem goes away. I'm not sure there is a fix for the bitmap font. The "SuperCollider" font is not meant to be used at other than size 9. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 24 Mar 1999 08:56:35 -0400 From: rkuivila@mail.wesleyan.edu Subject: string comparison, documentation desiderata, NumericalView How do you do string comparison in SC2? I have found the SC1 manual pretty crucial to finding out the significance of different list messages. It would be quite useful to fold the relevant portions of that manual into the help pages. Making the manual available as a text file would probably be enough to encourage users to make such pages on a volunteer basis. NumericalView does not seem to be willing to go 'exponential' RJK ------------------------------ Date: Wed, 24 Mar 1999 07:14:41 -0700 From: "David Cottle" <---@---.---> Subject: Re: Font size error Hi, >>so that everyone can see. I've noticed, however, that several functions >>don't work well: selecting by double clicking, positioning the cursor, and [...] > OK, I do see a problem if you use tabs and a bitmap font, > which "SuperCollider" is. If you change to Monaco, the problem [...] It does have something to do with the tabs. In the example I gave: SinOsc.ar(200) you can get the SinOsc to select if you click to the left of the code. About as far over as the positon you would expect the code to be without the tabs. I'll just use another font. Fortunately, my favorite font--Techno--works fine. Techno is really easy to see too. ------------------------------ Date: Wed, 24 Mar 1999 09:59:17 -0600 From: James McCartney <---@---.---> Subject: Re: string comparison, documentation desiderata, NumericalView At 6:56 AM -0600 3/24/99, rkuivila@mail.wesleyan.edu wrote: >How do you do string comparison in SC2? There should be a primitive but there isn't. You'd have to write a < method for String. >I have found the SC1 manual pretty crucial to finding out the significance >of different list messages. It would be quite useful to fold the relevant >portions >of that manual into the help pages. Making the manual available as a text file >would probably be enough to encourage users to make such pages on a >volunteer basis. The SC1 manual does not always properly describe SC2 methods, esp regarding which operations are in-place. SC2 is more functional in style so that fewer operations are have side effects than in SC1. Also be sure you are looking in the right place. Collection.help and SequenceableCollection.help have documentation for methods that Array and List inherit. >NumericalView does not seem to be willing to go 'exponential' You mean for mouse manipulation? What does 'exponential' mean to you for a NumericalView? --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 24 Mar 1999 11:55:45 EST From: Dpcoffin@aol.com Subject: Query from a low-tech lurker I wonder if I might briefly interrupt the technical exchanges here to ask a few questions as a potential SC purchaser, but very unlikely programmer? Background--I have greatly enjoyed the first demo of SC, and find the streaming, not-repetative audio that many of the example patches offer to be very useful and evocative as accompaniment to my work (which is based on real- time instrumental interaction with complex audio signal processing), but I have no training in programming languages, and no real interest in learning anything more than basic code, messing around with syntax errors, etc. As I contemplate buying the program (and as I blanch over the totally over-my-head programming issues discussed here!), I wonder: How much do you all think can be done in SC with little or no understanding of the programming language--in other words, just by manipulating graphic parameters in existing, provided structures? Are there many other algorithms with graphically adjustable parameters available already (besides those in the demo), and/or are new ones posted anywhere for sharing by members of the SC community? Is it feasible/useful to "program" SC simply by pasting new operators (?) into existing structures, the way one would exchange different FX modules in a hardware multi-processor? Greatly appreciate any comments-- Thanks! David Coffin ------------------------------ Date: Wed, 24 Mar 1999 15:42:00 -0400 From: rkuivila@mail.wesleyan.edu Subject: Re: string comparison, documentation desiderata, NumericalView >>NumericalView does not seem to be willing to go 'exponential' >You mean for mouse manipulation? What does 'exponential' mean to you >for a NumericalView? Yes, I want to use them for altering oscillator frequencies, just like I would a slider. I'll check the collection help pages, thanks for the tip. RJK ------------------------------ Date: Wed, 24 Mar 1999 23:04:02 +0000 From: "Iannis Zannos" <---@---.---> Subject: Re: Query from a low-tech lurker >How much do you all think can be done in SC with little or no understanding of >the programming language--in other words, just by manipulating graphic >parameters in existing, provided structures? Very little. SC is primarily a code based environment. The point has been raised often that "composers want to use graphical user interfaces; they do not bother with code". Basically I believe this attitude is wrong and it is supported by parties that see therein a confirmation that their software is best for "musicians". Understanding and writing code *IS NOT* more difficult than working with graphic interfaces. People are less used to it and there is less support for it in the musician community. The above cited prejudiced attitude is self-maintaining. It is easy to get into the habit of mentally "seing" a piece of code like a graphic patch, once you get the trick of it. Unfortunately this trick is not being taught and there is too little literature to support people who are motivated to learn it. I believe that the tutorials being written at this moment will help people with less experience in programming to catch up, when they get published or available on the net. >Are there many other algorithms with graphically adjustable parameters >available already (besides those in the demo), and/or are new ones posted >anywhere for sharing by members of the SC community? GUIUtils is a package distributed with SC in the Contributions folder, for creating GUIs to "adjust parameters graphically" with sliders etc, on the basis of user code written in a certain format. >Is it feasible/useful to "program" SC simply by pasting new operators (?) into >existing structures, the way one would exchange different FX modules in a >hardware multi-processor? Yes, this is a good way to start learning SC. Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: Dpcoffin@aol.com >To: sc-users@lists.io.com >Subject: Query from a low-tech lurker >Date: Wed, 24 Mar 1999 4:55 PM > >I wonder if I might briefly interrupt the technical exchanges here to ask a >few questions as a potential SC purchaser, but very unlikely programmer? >Background--I have greatly enjoyed the first demo of SC, and find the >streaming, not-repetative audio that many of the example patches offer to be >very useful and evocative as accompaniment to my work (which is based on real- >time instrumental interaction with complex audio signal processing), but I >have no training in programming languages, and no real interest in learning >anything more than basic code, messing around with syntax errors, etc. As I >contemplate buying the program (and as I blanch over the totally over-my-head >programming issues discussed here!), I wonder: >How much do you all think can be done in SC with little or no understanding of >the programming language--in other words, just by manipulating graphic >parameters in existing, provided structures? >Are there many other algorithms with graphically adjustable parameters >available already (besides those in the demo), and/or are new ones posted >anywhere for sharing by members of the SC community? >Is it feasible/useful to "program" SC simply by pasting new operators (?) into >existing structures, the way one would exchange different FX modules in a >hardware multi-processor? >Greatly appreciate any comments-- >Thanks! >David Coffin > ------------------------------ Date: Thu, 25 Mar 1999 09:47:21 -0500 (EST) From: rkuivila@mail.wesleyan.edu Subject: SortedList is broken, fix attached Adding these to the methods of SortedList fixes the problem: insertAt{arg index, object; this.insert(index,object);} addLast {arg object; super.add(object); } However, they only get called 1 or 2 times. It might be better to just substitute the calls needed in place. RJK ------------------------------ Date: Thu, 25 Mar 1999 10:33:23 -0600 From: James McCartney <---@---.---> Subject: instance specific methods Here's how to add instance specific methods to SuperCollider. An instance specific method is a method that is specific to a single object instead of to a class of objects. The scheme presented here uses a global dictionary of unique methods. The drawback to this is that methods must be specifically removed when not needed or the instance will never get garbage collected, because the dictionary will keep a reference to it. This is not a fast means of method dispatch. I may add direct support for this in the virtual machine to reduce the overhead in doesNotUnderstand. Sending doesNotUnderstand in SC is faster than in most Smalltalks because of the fast method lookup scheme and because variable argument lists allow SuperCollider not to have to allocate a Message object to hold the arguments. Add a uniqueMethods classvar to Object: Object { classvar < ------------------------------ Date: Thu, 25 Mar 1999 19:03:30 +0000 From: "Iannis Zannos" <---@---.---> Subject: Re: instance specific methods VERY cool. Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: James McCartney <---@---.---> >To: sc-users@lists.io.com >Subject: instance specific methods >Date: Thu, 25 Mar 1999 4:33 PM > > >Here's how to add instance specific methods to SuperCollider. >An instance specific method is a method that is specific >to a single object instead of to a class of objects. >The scheme presented here uses a global dictionary of unique >methods. The drawback to this is that methods must be specifically >removed when not needed or the instance will never get garbage >collected, because the dictionary will keep a reference to it. > >This is not a fast means of method dispatch. I may add direct support >for this in the virtual machine to reduce the overhead in doesNotUnderstand. >Sending doesNotUnderstand in SC is faster than in most Smalltalks because >of the fast method lookup scheme and because variable argument lists >allow SuperCollider not to have to allocate a Message object to hold >the arguments. > >Add a uniqueMethods classvar to Object: > >Object { > classvar >--- > >Change the doesNotUnderstand method as follows: > > doesNotUnderstand { arg selector ... args; > var methodDict, methodFunc; > > // check for an instance specific method > if (uniqueMethods.notNil > and: { (methodDict = uniqueMethods.at(this)).notNil } > and: { (methodFunc = methodDict.at(selector)).notNil },{ > ^methodFunc.valueArray(args) > }); > > error("Message '" > ++ selector.asString > ++ "' not understood.\n"); > "RECEIVER:\n".post; > this.dump; > "ARGS:\n".post; > args.dump; > this.dumpBackTrace; > this.halt > } > >---- > >Add the following methods to Object: > > > // instance specific method support > > // add a method > addUniqueMethod { arg selector, function; > var methodDict; > if (uniqueMethods.isNil, { > uniqueMethods = IdentityDictionary.new > }); > methodDict = uniqueMethods.at(this); > if (methodDict.isNil, { > methodDict = IdentityDictionary.new; > uniqueMethods.put(this, methodDict); > }); > methodDict.put(selector, function); > } > // remove all unique methods of the receiver > removeUniqueMethods { > if (uniqueMethods.notNil, { > uniqueMethods.removeAt(this); > }); > } > // remove a unique method of the receiver > removeUniqueMethod { arg selector; > var methodDict; > if (uniqueMethods.notNil, { > methodDict = uniqueMethods.at(this); > if (methodDict.notNil, { > methodDict.removeAt(selector); > if (methodDict.size < 1, { > uniqueMethods.removeAt(this); > }); > }); > }); > } > > >---- > > >Test it by adding a specific method to the Integer 5 : > >5.addUniqueMethod('blorg', { arg x; > ("Hey, I've been blorgged with " ++ x.asString).postln; >}); > >5.blorg('glork'); > >Hey, I've been blorgged with glork > > > > --- james mccartney james@audiosynth.com http://www.audiosynth.com >If you have a PowerMac check out SuperCollider2, a real time synth program: > > > > > ------------------------------ Date: Thu, 25 Mar 1999 14:27:47 -0500 (EST) From: rkuivila@mail.wesleyan.edu Subject: Re: instance specific methods Hi James, How does the instance specific method access its vars and methods? Would instance specific methods be a good way to attach different synthesis algorithms to different instances of the same GUI interface? RJK ------------------------------ Date: Thu, 25 Mar 1999 13:55:53 -0600 From: James McCartney <---@---.---> Subject: Re: SortedList is broken, fix attached At 8:47 AM -0600 3/25/99, rkuivila@mail.wesleyan.edu wrote: >Adding these to the methods of SortedList fixes the problem: > > insertAt{arg index, object; this.insert(index,object);} > addLast {arg object; super.add(object); } > >However, they only get called 1 or 2 times. It might be better to just >substitute the calls needed in place. > >RJK Thanks. I just substituted the calls. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Thu, 25 Mar 1999 14:01:56 -0600 From: James McCartney <---@---.---> Subject: Re: instance specific methods At 1:27 PM -0600 3/25/99, rkuivila@mail.wesleyan.edu wrote: >Hi James, > > How does the instance specific method access its vars and methods? I should have added a receiver argument : doesNotUnderstand { arg selector ... args; ...blah... ^methodFunc.valueArray(this, args) ...blah... } - --- f = { arg receiver, x; (receiver.asString ++ "was blorgged with " ++ x.asString).postln; }; 5.addUniqueMethod('blorg',f); 'abc'.addUniqueMethod('blorg',f); 5.blorg('glork'); 5 was blorgged with glork 'abc'.blorg('flarg'); abc was blorgged with flarg > Would instance specific methods be a good way to attach >different synthesis algorithms to different instances of the >same GUI interface? A better way would be to use action functions. Buttons and such are meant to be pluggable so this mechanism should not be needed. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Thu, 25 Mar 1999 14:30:19 -0600 From: James McCartney <---@---.---> Subject: Re: Query from a low-tech lurker At 10:55 AM -0600 3/24/99, Dpcoffin@aol.com wrote: >I wonder if I might briefly interrupt the technical exchanges here to ask a >few questions as a potential SC purchaser, but very unlikely programmer? >Background--I have greatly enjoyed the first demo of SC, and find the >streaming, not-repetative audio that many of the example patches offer to be >very useful and evocative as accompaniment to my work (which is based on real- >time instrumental interaction with complex audio signal processing), but I >have no training in programming languages, and no real interest in learning >anything more than basic code, messing around with syntax errors, etc. As I >contemplate buying the program (and as I blanch over the totally over-my-head >programming issues discussed here!), I wonder: >How much do you all think can be done in SC with little or no understanding of >the programming language--in other words, just by manipulating graphic >parameters in existing, provided structures? >Are there many other algorithms with graphically adjustable parameters >available already (besides those in the demo), and/or are new ones posted >anywhere for sharing by members of the SC community? >Is it feasible/useful to "program" SC simply by pasting new operators (?) into >existing structures, the way one would exchange different FX modules in a >hardware multi-processor? >Greatly appreciate any comments-- >Thanks! >David Coffin One thing I would like to do is have a set of effects and synths with GUIs that could be used directly. However I would discourage anyone who expects to be able to use SuperCollider without coding. I agree with Iannis Zannos that coding is really not so different than using a graphical interface. A patch cord in a graphical environment is just a function argument in a programming language. The mapping is pretty simple. And once you begin to get an understanding of it, coding is far more powerful. Graphical user interfaces provide a certain set of operations which initially make things easy to manipulate. Soon however you'll want to automate things. A graphical environment is not able to express many things that a programming language can. For instance you can wire up a group of 6 or 8 modules in a window, but how do you automatically wire up any number of modules specified by a variable? That kind of thing is simple in SuperCollider. Some GUIs have scripting languages, but often scripting languages are weak as programming languages. Programming languages are the best tools humans have come up with for manipulating information. So far there are no visual programming languages which are as powerful as text languages. SuperCollider tries to provide a language which has a high level of abstraction that is as efficient as possible for real time audio. I think anyone who can remember all the stupid rules for 4 part voice leading can learn to program .. and get more interesting results ;-} --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 26 Mar 1999 14:45:13 +1100 From: Graeme Gerrard <---@---.---> Subject: SC benchmarks [Excuse me if this comes twice to the list. I think my original post was rejected because I mail from a different account.] Is there a list of the oscillator benchmark tests on various Macs somewhere? I mean the 2 patches that come in the examples folder (pasted below). I don't know what the original values for n were. I get n = 120 for the interpolating osc, and n = 800 for the klang on my poor old 7300/200 (OS8.5.1) Are these benchmark tests meaningful? Anyone have any Blue & White G3 figures? ( // 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 ) ( // Klang benchmark var n; // vary n until you find the maximum your machine can play without glitching n = 200; play({ Klang.ar(`[Array.fill(n, 800), nil, nil], 1, 0, 0.1/n); })) ------------------------------ Date: Fri, 26 Mar 1999 10:20:05 -0500 From: rkuivila@mail.wesleyan.edu Subject: Re: SC benchmarks I have noticed that there is about a 20% variance in the average CPU percentage I get when running the same program at different times. (For example, the piece I am working on right now shows CPU usage at 25% some times and 30% others.) Are there any obvious reasons for this? More importantly, is there any way of keeping it at the lower usage rate? RJK ------------------------------ Date: Fri, 26 Mar 1999 10:51:42 -0800 (PST) From: "B. Battey" <---@---.---> Subject: Linear vs. 'all pass' interpolation In noticed today that various SC ugens have an 'all pass' interpolation version in addition to the standard linear interpolation version. I haven't run across all pass interpolation before, so I'd be interested to know a touch more about it -- esp. the relative quality of all pass interpolation and its CPU cost. Bret ------------------------------ Date: Fri, 26 Mar 1999 17:23:46 -0500 From: rkuivila@mail.wesleyan.edu Subject: Synchronous file dialogs? Hi James, It appears that the file dialogs return asynchronously. This is what is messing up using a file dialog just before starting synthesis - the file dialog action doesn't get control until SC has already gone into interrupt mode. I thought I might be able to hack around it by setting and reseting a flag and calling the MacOS WaitNextEvent, but I couldn't find a way to call it within SC. Are there any easy work arounds? RJK ------------------------------ Date: Fri, 26 Mar 1999 16:42:57 -0600 From: James McCartney <---@---.---> Subject: Re: Synchronous file dialogs? At 4:23 PM -0600 3/26/99, rkuivila@mail.wesleyan.edu wrote: >Hi James, > > It appears that the file dialogs return asynchronously. This is what is >messing up using a file dialog just before starting synthesis - the file >dialog action doesn't get control until SC has already gone into interrupt >mode. You're right it is asynchronous. It has to be in order to be callable from interrupt. If you want to use it synchronously, you put any code that is to happen when the dialog is dismissed into the action function. Put your Synth.play code in the action function. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 27 Mar 1999 09:43:03 -0500 From: rkuivila@mail.wesleyan.edu Subject: Re: Synchronous file dialogs? >At 4:23 PM -0600 3/26/99, rkuivila@mail.wesleyan.edu wrote: >>Hi James, >> >> It appears that the file dialogs return asynchronously. This is what is >>messing up using a file dialog just before starting synthesis - the file >>dialog action doesn't get control until SC has already gone into interrupt >>mode. > >You're right it is asynchronous. It has to be in order to be callable >from interrupt. >If you want to use it synchronously, you put any code that is to happen >when the dialog is dismissed into the action function. >Put your Synth.play code in the action function. > > > --- james mccartney james@audiosynth.com http://www.audiosynth.com >If you have a PowerMac check out SuperCollider2, a real time synth program: > OK, but could we have a synchronous dialog available in the next release? Since there is the possibility of opening files for both recording and playback, this makes a fairly complicated way of starting up SoundManager. (Having to check the various cases.) RJK ------------------------------ Date: Sat, 27 Mar 1999 09:05:24 -0600 From: James McCartney <---@---.---> Subject: Re: Synchronous file dialogs? At 8:43 AM -0600 3/27/99, rkuivila@mail.wesleyan.edu wrote: >>At 4:23 PM -0600 3/26/99, rkuivila@mail.wesleyan.edu wrote: >>>Hi James, >>> >>> It appears that the file dialogs return asynchronously. This is what is >>>messing up using a file dialog just before starting synthesis - the file >>>dialog action doesn't get control until SC has already gone into interrupt >>>mode. >> >>You're right it is asynchronous. It has to be in order to be callable >>from interrupt. >>If you want to use it synchronously, you put any code that is to happen >>when the dialog is dismissed into the action function. >>Put your Synth.play code in the action function. > >OK, but could we have a synchronous dialog available in the next release? >Since there is the possibility of opening files for both recording and >playback, this makes a fairly complicated way of starting up SoundManager. >(Having to check the various cases.) It will not be in the next release. Once there are threads then the dialogs will be made synchronous, but then in order to use them from interrupt you will have to spawn a thread. Otherwise you will get an error because synthesis would have to be stopped. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 28 Mar 1999 04:40:00 +1000 From: Graeme Gerrard <---@---.---> Subject: Re: SC benchmarks rkuivila@mail.wesleyan.edu wrote: > > >I have noticed that there is about a 20% variance in the average CPU >percentage I get when running the same program at different times. (For >example, the piece I am working on right now shows CPU usage at 25% some >times and 30% others.) > I also noticed something like this when I ran the benchmark tests. Once I bumped the numbers up to where I was getting clicks, I had to put the setting significantly below that threshold to avoid clicks in subsequent runs. Restarting SC fixed that of course. No one else got any info on this? ------------------------------ Date: Sat, 27 Mar 1999 13:09:18 -0600 From: James McCartney <---@---.---> Subject: Re: SC benchmarks At 12:40 PM -0600 3/27/99, Graeme Gerrard wrote: >rkuivila@mail.wesleyan.edu wrote: > >> >> >>I have noticed that there is about a 20% variance in the average CPU >>percentage I get when running the same program at different times. (For >>example, the piece I am working on right now shows CPU usage at 25% some >>times and 30% others.) >> >I also noticed something like this when I ran the benchmark tests. >Once I bumped the numbers up to where I was getting clicks, >I had to put the setting significantly below that threshold to >avoid clicks in subsequent runs. > >Restarting SC fixed that of course. > >No one else got any info on this? Cache access patterns can cause different values on different runs. Usually performance is better on subsequent runs, though. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 27 Mar 1999 14:29:00 -0500 From: rkuivila@mail.wesleyan.edu Subject: Re: Synchronous file dialogs? >It will not be in the next release. Once there are threads then >the dialogs will be made synchronous, but then in order to use them >from interrupt you will have to spawn a thread. Otherwise you >will get an error because synthesis would have to be stopped. This is a major bummer - it breaks the possibility of adding user friendly sound file handling to SoundManager. (The problem is starting synthesis from the dialog callback puts synthesis at a system interrupt level, killing most GUI interaction.) Couldn't you just provide access to the synch/asynch flag that gets passed to MacOS? (While we are on the topic, it would also be very handy to be able to toss a little text into a GetFileDialog to let the user know what kind of file is being asked for.) RJK ------------------------------ Date: Sat, 27 Mar 1999 14:05:51 -0600 From: James McCartney <---@---.---> Subject: Re: Synchronous file dialogs? At 1:29 PM -0600 3/27/99, rkuivila@mail.wesleyan.edu wrote: >>It will not be in the next release. Once there are threads then >>the dialogs will be made synchronous, but then in order to use them >>from interrupt you will have to spawn a thread. Otherwise you >>will get an error because synthesis would have to be stopped. > >This is a major bummer - it breaks the possibility of adding user friendly >sound file handling to SoundManager. (The problem is starting synthesis >from the dialog callback puts synthesis at a system interrupt level, >killing most GUI interaction.) No it doesn't. It is possible. There is another problem with d29 where calls from the GUI from non interrupt level that start Synth.play hang the GUI, but that is now fixed. > > Couldn't you just provide access to the synch/asynch flag that gets passed >to MacOS? (While we are on the topic, it would also be very handy to be >able to toss a little text into a GetFileDialog to let the user know what >kind of file is being asked for.) There is no flag. It is written that way in supercollider. The dialog primitive sends a message in a fifo to the application, the application unqueues it, opens the dialog. Once the dialog is complete, the application sends a message in a fifo to the virtual machine, the virtual machine unqueues it and calls the completion function. I could change the way it is written, but that will not happen in this release. That does not prevent doing what you want to do though, because that was governed by something else which has been fixed. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 27 Mar 1999 15:38:27 -0700 From: "David Cottle" <---@---.---> Subject: Parenthesis matching glitch Hi, Has anyone else experienced this glitch: Now and again SC loses track of parentheses. It doesn't match correctly even though the code is correct. At that time when I double click on the left side of a left parenthesis: <- here ( Synth.scope( etc. It selects everything from the beginning to that parenthesis. If I open a fresh new file and type "()" the system gives an error flash (beep) indicating that it couldn't match the parenthesis. Sometimes I can "fix" it by typing a whole series of left parentheses then one right. It matches with one of the left parentheses and then everything seems OK. - -- ><><><><><><><><><><><> David Cottle composition, notation, contra lime@uiuc.edu ------------------------------ Date: Sun, 28 Mar 1999 11:57:27 +0000 From: "Iannis Zannos" <---@---.---> Subject: SC2 buffer delay?, Active SuperCollider Sites? Back to an old known topic: What is the current delay of SC synthesis output due to buffer size? Is the delay due to the Macintosh SoundManager still high as in previous Mac OS versions? Is this delay smaller when using an audio card such as Korg 1212 or Digidesign? Here is a quote from an old post found in http://www.annihilist.com/loop/archive/posts/DigestV97-4.txt > The bad part is that thanks to various output buffers, there is > a minimum delay from signal input to signal output, which in the few > tests I've been able to do with the demo program, is a minimum of > around 0.4 seconds. The point is that some musicians (will remain unnamed here) prefer to work with other, more expensive systems just because of this "problem" of SC. Can we have an update on this topic? Also: Are there any new SC sites around? My web-search has yielded a few - old ones. These will be collected and posted in due time. Best, Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 ------------------------------ Date: Sun, 28 Mar 1999 09:15:23 -0600 From: James McCartney <---@---.---> Subject: Re: SC2 buffer delay?, Active SuperCollider Sites? At 5:57 AM -0600 3/28/99, Iannis Zannos wrote: >Back to an old known topic: >What is the current delay of SC synthesis output >due to buffer size? Is the delay due to the >Macintosh SoundManager still high as in previous >Mac OS versions? Is this delay smaller when using >an audio card such as Korg 1212 or Digidesign? > >Here is a quote from an old post found in >http://www.annihilist.com/loop/archive/posts/DigestV97-4.txt > >> The bad part is that thanks to various output buffers, there is >> a minimum delay from signal input to signal output, which in the few >> tests I've been able to do with the demo program, is a minimum of >> around 0.4 seconds. That post is from Jan 1997 and refers to SC version 1.0 and the Mac Sound Mgr. Even using the Sound Mgr on a newer Mac the latencies are much better. Apple reduced the buffer sizes on newer Macs to 512. The Sound Mgr is still not as fast as a sound card even with the same buffer size. Sonorus, Korg and AudiomediaIII have 512 sample buffers. The Digi Project 2 and ProTools cards have 256 sample buffers so should be twice as good. I have received an NDA from Steinberg for ASIO, but am still waiting on the SDK. This will allow me to support the MOTU 2408 card which can have 64 sample buffers. It remains to be seen how much performance degradation there is going to such small buffers. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 28 Mar 1999 11:32:31 -0500 From: rkuivila@mail.wesleyan.edu Subject: Re: Parenthesis matching glitch Usually if you click on a closed paren set up at the top of the file it resets things to normal. RJK ------------------------------ End of sc-users-digest V1 #33 *****************************