From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #31 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, March 17 1999 Volume 01 : Number 031 ---------------------------------------------------------------------- Date: Fri, 12 Mar 1999 06:31:40 -0600 From: James McCartney <---@---.---> Subject: Re: wacom and serial ports At 3:24 AM -0600 3/12/99, joel ryan wrote: >James, > >Im considering adding a wacom for SC >to my road gear. >But two problems: > >As well as SC2, I have an older SC1 based instrument >which is earning me a living. How likely is it >I could get to interface a Wacom pad to SC1(ie beyond mousey vanilla)? Any time I spend on SC1 is time taken away from SC2, so it is not likely. > >maybe more important, >if you have a G3Powerbook with one serial port (no USB) >what happens to midi i/o? >Are there any serial port PCM/CIA cards with real mac drivers ? >Or maybe USB cards for older macs? >Joel Ryan If you get the 9x12 tablet which uses the ADB port then you will have the serial port free for MIDI. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 12 Mar 1999 10:01:18 -0500 From: Mark Ballora <---@---.---> Subject: Re: Using "count" as an array index >At 5:16 PM -0600 3/11/99, Mark Ballora wrote: > >>var mylist, maxie; >>mylist = [ 220, 440, 880, 1000.rand, 1000.rand ]; >>maxie = mylist.size-1; > >If you want it to play your entire list, that should be: > >maxie = mylist.size; > Really? I'd put that maxie variable in when I was just doing simple iteration experiments, such as ( var mylist, maxie; mylist = [ 440, 880, 220, 1000.rand, 1000.rand ]; maxie = mylist.size-1; for (0, maxie, { arg i; mylist.at(i).postln }); ) If I don't subtract the one, it gets confused. I think it's because the list size is 5, but indexes at 0, 1, 2, 3, 4; it prints out my five values fine, but then tries to print mylist.at(5), and spits out Integer 5 ERROR: Primitive '_BasicAt' failed. Index out of range. [etc.] ... Perhaps this is a different type of operation, using a "for" iteration and using a sched routine? Thanks for the workaround you posted. I'll get cracking with it a bit later today. Mark ------------------------------ Date: Fri, 12 Mar 1999 12:28:56 -0600 From: James McCartney <---@---.---> Subject: Re: Using "count" as an array index At 9:01 AM -0600 3/12/99, Mark Ballora wrote: >>At 5:16 PM -0600 3/11/99, Mark Ballora wrote: >> >>>var mylist, maxie; >>>mylist = [ 220, 440, 880, 1000.rand, 1000.rand ]; >>>maxie = mylist.size-1; >> >>If you want it to play your entire list, that should be: >> >>maxie = mylist.size; >> > >Really? >I'd put that maxie variable in when I was just doing simple iteration >experiments, such as Different methods have different meanings. 'do' goes from zero to the receiver minus one. 'for' always goes from its start value up to and including its end value. 'trepeatN' takes the number of repeats as an argument, so you want it to be your list size. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 12 Mar 1999 12:50:23 -0600 From: James McCartney <---@---.---> Subject: Who is r.r.ramdas@siep.shell.com ? I am getting bounced messages for r.r.ramdas@siep.shell.com however this person is not subscribed to the list, so someone is forwarding their mail there. No one is on the list whose address contains ramdas, siep, or shell, so I don't know who to remove. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 12 Mar 1999 12:01:10 -0700 From: "David Cottle" <---@---.---> Subject: Documentation not found Hi, For some reason I've been getting the message 'Documentation folder not found' when I select a UGen (for example) and key command-h. It has only begun happening recently. Why is this? Here is an example. The path to SC is: Hiller/EM/SuperCollider/SCetc. The documentation is Hiller/EM/SuperCollider/Help The document I'm working in is Hiller/EM/SuperCollider/Course Materials/3_12 In the file 3_12 I type: "Spawn" Select it and type command-h It replaces Spawn with 'Documentation' folder not found. then it opens the Spawn documentation. True, it does show me the documentation, but then it replaces the word I was getting help for with 'documentation folder not found.' - -- ><><><><><><><><><><><> David Cottle composition, notation, contra lime@uiuc.edu ------------------------------ Date: Fri, 12 Mar 1999 14:06:45 -0400 From: douglas irving repetto <---@---.---> Subject: Re: Who is r.r.ramdas@siep.shell.com ? when i've had problems like this on the music-dsp list i've emailed postmaster@siep.shell.com or some varient asking for info on the offending address. i include lots of headers and such to show that i'm not just snooping around. this usually works and helps track down the real subscriber. douglas >I am getting bounced messages for r.r.ramdas@siep.shell.com >however this person is not subscribed to the list, so someone >is forwarding their mail there. No one is on the list whose address >contains ramdas, siep, or shell, so I don't know who to remove. > > > --- james mccartney james@audiosynth.com http://www.audiosynth.com >If you have a PowerMac check out SuperCollider2, a real time synth program: > - -------------------------------------------------------------------------- douglas irving repetto nee irving bellemead http://music.dartmouth.edu/~douglas music-dsp mailing list web site: http://shoko.calarts.edu/~glmrboy/musicdsp According to one lady engineer, people tend to recognise shapes of others in bunny suits and it's hard to recognise co-workers outside of the clean room, unless you just look at their eyes. - -------------------------------------------------------------------------- ------------------------------ Date: Fri, 12 Mar 1999 13:35:44 -0600 From: James McCartney <---@---.---> Subject: Re: Documentation not found At 1:01 PM -0600 3/12/99, David Cottle wrote: >Hi, > >For some reason I've been getting the message 'Documentation folder not >found' when I select a UGen (for example) and key command-h. It has only >begun happening recently. Why is this? Hate to ask the obvious, but what is the folder named "Documentation" named? and where is it? --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 13 Mar 1999 15:41:26 -0500 From: rkuivila@mail.wesleyan.edu Subject: bugs getting time from Synth's Hi James, The time of a synth is not intialized to zero. In the first example compFunc posts an erroneous value the first time it runs. Something more serious seems to be wrong inside of Spawn. In that case, attempts to get the synth's time or sampleCount yield more or less random numbers, as is shown in the second example. RJK ( // then repeat 8 times at a random interval, then change the interval and continue. { arg synth; var freqCtl, task, compFunc; freqCtl = ControlIn.kr(800, 0); // use a ControlIn to change a value // define a task task = { freqCtl.source = 600.rand + 300; }; // set a random frequency // the function below, when executed, starts a repeating task. It schedules // itself to be called upon completion through the local variable 'compFunc'. // This is not recursion, because the completion function is called // from the scheduler, not from itself. compFunc = { synth.trepeatN(0, 0.1 + 0.2.rand, 8, task, compFunc); synth.time.postln; }; compFunc.value; // start it SinOsc.ar(freqCtl, 0, 0.2); // return oscillator as output }.play ) ( // Spawn example 5 // use channel offset to select either right or left channel only var env; env = Env.new(#[0,1,0],#[0.01, 0.5]); Synth.play({ Spawn.ar({ arg spawn, i, synth; synth.time.postln; synth.sampleCount.postln; synth.channelOffset = 2.rand; // channel zero or one at random EnvGen.ar(env, // phase modulation oscillator pair in EnvGen's mul input PMOsc.ar(3000.0.rand, 3000.0.rand, 3.0.rand), 0, 0.04 ) // envelope }, 2, // two channels 0.25 // repeat every 1/4 second ) }) ) ------------------------------ Date: Sat, 13 Mar 1999 15:53:42 -0600 From: James McCartney <---@---.---> Subject: Re: bugs getting time from Synth's At 2:41 PM -0600 3/13/99, rkuivila@mail.wesleyan.edu wrote: >Hi James, > > The time of a synth is not intialized to zero. In the first example compFunc >posts an erroneous value the first time it runs. > > Something more serious seems to be wrong inside of Spawn. In that case, >attempts to get the synth's time or sampleCount yield more or less random >numbers, as is shown in the second example. > >RJK > >( >// then repeat 8 times at a random interval, then change the interval and >continue. >{ arg synth; > var freqCtl, task, compFunc; > > freqCtl = ControlIn.kr(800, 0); // use a ControlIn >to change a value > > // define a task > task = { freqCtl.source = 600.rand + 300; }; // set a random >frequency > > // the function below, when executed, starts a repeating task. It >schedules > // itself to be called upon completion through the local variable >'compFunc'. > // This is not recursion, because the completion function is called > // from the scheduler, not from itself. > compFunc = { synth.trepeatN(0, 0.1 + 0.2.rand, 8, task, compFunc); > synth.time.postln; > }; > > compFunc.value; // start it > > SinOsc.ar(freqCtl, 0, 0.2); // return >oscillator as output >}.play >) The first time compFunc is evaluated above is while the patch is being built, before playback has begun. Therefore the time is undefined. > > >( >// Spawn example 5 >// use channel offset to select either right or left channel only >var env; >env = Env.new(#[0,1,0],#[0.01, 0.5]); >Synth.play({ > Spawn.ar({ arg spawn, i, synth; > synth.time.postln; > synth.sampleCount.postln; > synth.channelOffset = 2.rand; // channel zero or one at random > EnvGen.ar(env, > // phase modulation oscillator pair in EnvGen's mul >input > PMOsc.ar(3000.0.rand, 3000.0.rand, 3.0.rand), 0, 0.04 > ) // envelope > > }, > 2, // two channels > 0.25 // repeat every 1/4 second > ) >}) >) The time is undefined while a synth is being built. This synth has not yet been installed into the Spawn so it has no time yet. The time is calculated from this Synth's offset from an absolute time. With the sample accurate scheduling all synths are running slightly asynchronously. The Synth does not know its offset until it is started by the Spawn. I'll look at getting the right time preset. It is a challenge because the Spawn does not really have any way to pass data to the Synth about to be created unless I add an argument to Synth.new. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 13 Mar 1999 19:12:37 -0500 From: Mark Ballora <---@---.---> Subject: More events from collections In the same vein as my question a couple of days ago, wherein I'm working with updating synth parameters with values taken from a collection; The new trepeatN works great. Now I'm trying to combine it with other sorts of processes, where each has its own source list of values. So now I have a new index problem. Here's something I could do with an OrcScore, but this way seemed tidier, given the simplicity of the process and instrument. But, it does not compile; it gets to 31 and says Index not an Integer. Can this work, or am I trying to turn an apple into an orange? ( var mydummylist, timedelta; timedelta = 0.1; mydummylist = Array.fill(100, { 1000 + 1000.rand } ); Synth.play({ Spawn.ar({ var spawn, i, synth; PSinGrain.ar(mydummylist.at(i), timedelta*1.5, 0.2); }, 1, timedelta, 100) }) ) ------------------------------ Date: Sat, 13 Mar 1999 18:25:03 -0600 From: James McCartney <---@---.---> Subject: Re: More events from collections At 6:12 PM -0600 3/13/99, Mark Ballora wrote: >( >var mydummylist, timedelta; >timedelta = 0.1; >mydummylist = Array.fill(100, { 1000 + 1000.rand } ); >Synth.play({ > Spawn.ar({ var spawn, i, synth; ^^^ arg It just stops dumping the array at 31 values, since it assumes you don't need to see all 1000 values. "That's enough, Data." -- Capt Picard. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 13 Mar 1999 17:46:12 +0100 From: joel ryan <---@---.---> Subject: Re: wacom and serial ports Thanks James, I understand the SC1/SC2 issue I appreciate the new version a lot and hope it will continue to grow. Im just going to have to do some rewrites when I can get some time. Would an ADB wacom be as powerful as the serial version with the 4DPen? >At 3:24 AM -0600 3/12/99, joel ryan wrote: >>James, >> >>Im considering adding a wacom for SC >>to my road gear. >>But two problems: >> >>As well as SC2, I have an older SC1 based instrument >>which is earning me a living. How likely is it >>I could get to interface a Wacom pad to SC1(ie beyond mousey vanilla)? >> >>maybe more important, >>if you have a G3Powerbook with one serial port (no USB) >>what happens to midi i/o? >>Are there any serial port PCM/CIA cards with real mac drivers ? >>Or maybe USB cards for older macs? >>Joel Ryan _____________________________________________ Joel Ryan Institute of Sonology :: Ballett Frankfurt STEIM [Stichting for Electro-Instrumental Music] Achtergracht 19, 1017 Amsterdam +31 (020) 624-3886 +31 (020) 626-4262 fax http://www.xs4all.nl/~steim http://www.frankfurt-ballett.de/joel.html _______________________ ------------------------------ Date: Sat, 13 Mar 1999 17:39:45 +0100 From: joel ryan <---@---.---> Subject: Re: Who is r.r.ramdas@siep.shell.com ? I contacted Rodey Ramdas and told him about his trail of bounces he's now : ramdas@lucent.com jr _____________________________________________ Joel Ryan Institute of Sonology :: Ballett Frankfurt STEIM [Stichting for Electro-Instrumental Music] Achtergracht 19, 1017 Amsterdam +31 (020) 624-3886 +31 (020) 626-4262 fax http://www.xs4all.nl/~steim http://www.frankfurt-ballett.de/joel.html _______________________ ------------------------------ Date: Sat, 13 Mar 1999 20:58:00 -0600 From: James McCartney <---@---.---> Subject: Re: wacom and serial ports At 10:46 AM -0600 3/13/99, joel ryan wrote: >Thanks James, > >I understand the SC1/SC2 issue >I appreciate the new version a lot and hope it will continue to grow. >Im just going to have to do some rewrites when I can get some time. > >Would an ADB wacom be as powerful as the serial version with the 4DPen? I've not tested the 9 x 12, so I can't say. The 4D thing is a mouse, tho.. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 13 Mar 1999 21:43:20 -0600 From: James McCartney <---@---.---> Subject: Re: bugs getting time from Synth's At 2:41 PM -0600 3/13/99, rkuivila@mail.wesleyan.edu wrote: >Hi James, > > The time of a synth is not intialized to zero. In the first example compFunc >posts an erroneous value the first time it runs. > > Something more serious seems to be wrong inside of Spawn. In that case, >attempts to get the synth's time or sampleCount yield more or less random >numbers, as is shown in the second example. > >RJK OK both these are fixed. Unecessary details: Those two functions were written before sched existed and used a different method of time calculation based on absolute time which is not valid in Synth.new. So I based it on relative sched task time which is valid. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 14 Mar 1999 11:22:49 -0500 From: rkuivila@mail.wesleyan.edu Subject: does anybody know what time it is? Hi James, Knowing the time is not much of an issue at root level. So is there a way to get the current time from the parent synth (of the spawn or synth) instead? RJK ------------------------------ Date: Sun, 14 Mar 1999 17:45:03 +0100 From: "Iannis Zannos" <---@---.---> Subject: Re: does anybody know what time it is? >So is there a way to get the current time from the parent synth (of the >spawn or synth) instead? how about synth.time ? Time is also passed in the now argument to closures used in Synth.repeat and variants. Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: rkuivila@mail.wesleyan.edu >To: sc-users@lists.io.com >Subject: does anybody know what time it is? >Date: Sun, 14 Mar 1999 5:22 PM > >Hi James, > > Knowing the time is not much of an issue at root level. >So is there a way to get the current time from the parent synth (of the >spawn or synth) instead? > >RJK > > > ------------------------------ Date: Sun, 14 Mar 1999 12:01:04 -0500 From: Mark Ballora <---@---.---> Subject: Re: More events from collections >At 6:12 PM -0600 3/13/99, Mark Ballora wrote: >>( >>var mydummylist, timedelta; >>timedelta = 0.1; >>mydummylist = Array.fill(100, { 1000 + 1000.rand } ); >>Synth.play({ >> Spawn.ar({ var spawn, i, synth; > ^^^ arg > >It just stops dumping the array at 31 values, since it assumes you >don't need to see all 1000 values. "That's enough, Data." -- Capt Picard. > i.e., yes, I was trying to turn an apple into an orange, and according to Starfleet protocol this is what OrcScores were created for? OK. But just to satisfy the curiosity of a cadet in training, could you quote a bit of Spawn's Prime Directive? I tried making a smaller array of 20 values, but the same thing happens. Specifically, how is dumping the array involved with assigning its values to successive spawned synths, and what does it base its assumptions on? ------------------------------ Date: Sun, 14 Mar 1999 11:40:49 -0600 From: James McCartney <---@---.---> Subject: Re: More events from collections At 11:01 AM -0600 3/14/99, Mark Ballora wrote: >i.e., yes, I was trying to turn an apple into an orange, and according to >Starfleet protocol this is what OrcScores were created for? > >OK. > >But just to satisfy the curiosity of a cadet in training, could you quote a >bit of Spawn's Prime Directive? > >I tried making a smaller array of 20 values, but the same thing happens. >Specifically, how is dumping the array involved with assigning its values >to successive spawned synths, and what does it base its assumptions on? NONONO you missed my main comment which is the source of your problem. Change 'var' to 'arg'. You made a simple typo. >>> Spawn.ar({ var spawn, i, synth; >> ^^^ arg --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 14 Mar 1999 13:01:37 -0500 From: Mark Ballora <---@---.---> Subject: Re: OrcScore If I may re-open the subject of variables in OrcScore ... I understand that the way to do it is not to put a pound sign before the array. Without it, it's assembled at compile time and thus can contain variables. My question regards using a file as the score, which contains variable names. The code below works if I paste a part of the score list into the patch, rather than referring to it by variable. It works if my score file contains literals and no variables. Is there a way to do it so that an external file used as a score can contain variable names? ( var mydummylist, timedelta; timedelta = 0.1; mydummylist = thisProcess.interpreter.executeFile("19093ShortList"); Synth.play({ OrcScore.ar( [ { arg spawn, i, synth, deltaTime, instrumentNum, dataval; PSinGrain.ar(512**dataval, timedelta*1.5, 0.2); } ], mydummylist, 1, timedelta) }) ) Score file: [ [timedelta, 0, 1.227000], [timedelta, 0, 1.156000], [timedelta, 0, 1.266000], [timedelta, 0, 1.320000], [timedelta, 0, 1.227000], ... ] ------------------------------ Date: Sun, 14 Mar 1999 13:03:37 -0500 From: Mark Ballora <---@---.---> Subject: _run_time is of course what I meant to say in the last post, not compile time. Sorry. ------------------------------ Date: Sun, 14 Mar 1999 12:02:13 -0600 From: James McCartney <---@---.---> Subject: Re: does anybody know what time it is? At 10:22 AM -0600 3/14/99, rkuivila@mail.wesleyan.edu wrote: >Hi James, > > Knowing the time is not much of an issue at root level. >So is there a way to get the current time from the parent synth (of the >spawn or synth) instead? > >RJK My question is what do you want the time for? Relative time is passed to you in the now argument of sched tasks. You can get a parent synth's time as follows: ( Synth.play({ arg synth1; Spawn.ar({ arg spawn, i, synth2; [synth1.sampleCount, synth1.time].postln; PSinGrain.ar(2000.rand, 0.5, 0.1); }, 1, 0.3); }) ) --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 14 Mar 1999 12:22:44 -0600 From: James McCartney <---@---.---> Subject: Re: OrcScore At 12:01 PM -0600 3/14/99, Mark Ballora wrote: >If I may re-open the subject of variables in OrcScore ... > >I understand that the way to do it is not to put a pound sign before the >array. Without it, it's assembled at compile time and thus can contain >variables. > >My question regards using a file as the score, which contains variable names. > >The code below works if I paste a part of the score list into the patch, >rather than referring to it by variable. >It works if my score file contains literals and no variables. > >Is there a way to do it so that an external file used as a score can >contain variable names? make it so that your score file is a function and then evaluate it with an argument. Be aware than compiling huge dynamic arrays will take more space than literal arrays will and will be slower. ( var mydummylist, timedelta, func; timedelta = 0.1; func = thisProcess.interpreter.executeFile("19093ShortList"); mydummylist = func.value(timedelta); Synth.play({ OrcScore.ar( [ { arg spawn, i, synth, deltaTime, instrumentNum, dataval; PSinGrain.ar(512**dataval, timedelta*1.5, 0.2); } ], mydummylist, 1, timedelta) }) ) Score file: { arg td; [ [td, 0, 1.227000], [td, 0, 1.156000], [td, 0, 1.266000], [td, 0, 1.320000], [td, 0, 1.227000], ... ] } --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 14 Mar 1999 13:12:35 -0600 From: James McCartney <---@---.---> Subject: Re: OrcScore I just want to point out that you don't need a variable to vary the playback rate of OrcScore since tempo based timing for Spawn was introduced. ( var mydummylist, func; mydummylist = Array.fill(100, { [0.1, 0, 1000 + 1000.rand] } ); Synth.play({ // use mouse to modulate tempo in the current tempo base. // tempo is measured in beats per SECOND to make converting // between seconds and beats simpler SetTempo.kr(nil, MouseX.kr(0.125, 4,'exponential')); OrcScore.ar( [ { arg spawn, i, synth, deltaTime, instrumentNum, freq; // OrcScore uses Spawn whose nextTime is measured in beats. // to convert beats to seconds divide by the tempo. PSinGrain.ar(freq, deltaTime/synth.tempo * 1.5, 0.2); } ], mydummylist, 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, 14 Mar 1999 16:53:23 -0500 From: rkuivila@mail.wesleyan.edu Subject: playthru init Hi there, Can someone direct me to a WWW site with an init to turn off playthru? The problem is that MacOS defaults to mixing any incoming audio with outgoing audio, making life unpleasant if you want to do audio processing. (I found one a while ago, but I cannot get find the site now.) RJK ------------------------------ Date: Sun, 14 Mar 1999 16:04:16 -0600 From: James McCartney <---@---.---> Subject: Re: playthru init At 3:53 PM -0600 3/14/99, rkuivila@mail.wesleyan.edu wrote: >Hi there, > > Can someone direct me to a WWW site with an init to turn off playthru? >The problem is that MacOS defaults to mixing any incoming audio with >outgoing audio, making life unpleasant if you want to do audio processing. >(I found one >a while ago, but I cannot get find the site now.) > >RJK You can use the "Sound" control panel, not "Monitors & Sound". Also on some systems it is apparently impossible to turn CD playthrough off. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 14 Mar 1999 17:34:20 -0500 From: rkuivila@mail.wesleyan.edu Subject: Re: playthru init I found the following link for a control bar utility that seems to do the trick. It might be worth putting either the link or the software on the audiosynth site... http://home.earthlink.net/~hickoxn/SOFTWARE.HTML RJK ------------------------------ Date: Mon, 15 Mar 1999 13:29:21 -0700 From: "David Cottle" <---@---.---> Subject: Removing error code (small but annoying glitch) Hi, Up until now I've used the "undo" to remove errors in code, but this sometimes does not remove the first line of code. Am I missing something? Is there a better way to remove error code? For example: ( Synth.play( { SinOsc(200) } ) ) Gives this error: ( Synth.play( { SinOsc(200) } ) € ERROR: Parse error start 16 in file 'selected text' line 4 char 9 : SinOsc(€200) } - ----------------------------------- € ERROR: Command line parse failed ) Command z then produces: ( Synth.play( { SinOsc(200) } ) € ERROR: Parse error ) - -- ><><><><><><><><><><><> David Cottle composition, notation, contra lime@uiuc.edu ------------------------------ Date: Tue, 16 Mar 1999 08:09:12 +1100 From: ggerrard <---@---.---> Subject: Tutorial Back last November there was talk of a SC tutorial being (re?)written. What's the status? I am quite frustrated with the lack of proper documentation. (Don't take that the wrong way James, as a documenter, you are a fantastic programmer!) When do you think we could expect to see the tutorial or some more professional doc. - --------------- Graeme Gerrard Resonant Multimedia ph. 03 9525 7869 mob 0414 396 754 "Somebody's been putting something in my food to make me paranoid." - PKD ------------------------------ Date: Mon, 15 Mar 1999 15:23:51 -0600 From: James McCartney <---@---.---> Subject: Re: Removing error code (small but annoying glitch) At 2:29 PM -0600 3/15/99, David Cottle wrote: >Hi, > >Up until now I've used the "undo" to remove errors in code, but this >sometimes does not remove the first line of code. Am I missing something? >Is there a better way to remove error code? The next version opens a new window to dump errors into. Occasionally it still does not catch the first error line, but most of the time it does. It always does for compile errors. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 15 Mar 1999 23:28:59 -0600 From: James McCartney <---@---.---> Subject: Re: Tutorial At 3:09 PM -0600 3/15/99, ggerrard wrote: >Back last November there was talk of a SC tutorial being >(re?)written. >What's the status? >I am quite frustrated with the lack of proper documentation. >(Don't take that the wrong way James, as a documenter, >you are a fantastic programmer!) > >When do you think we could expect to see the tutorial or >some more professional doc. Alberto de Campo is working on the tutorial. What I saw of it is pretty nice. He is doing this as a volunteer, so I hate to bug him. He is busy moving across the planet around now I beleive. I would like to know what areas you find you need docs for the most right now. Most of what I try to supply first is reference since that is absolutely necessary. Some folks are able to work just with that. If I execute the following I see that besides Meta classes, there are about 110 classes still without a help file. I'm getting to them... // this will take a while Class.allClasses.do({ arg class; if (class.hasHelpFile.not, { class.name.postln; }); }); --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 15 Mar 1999 18:59:59 -0700 From: "David Cottle" <---@---.---> Subject: Re: Documentation not found Hi, >>For some reason I've been getting the message 'Documentation folder not >>found' when I select a UGen (for example) and key command-h. It has only >>begun happening recently. Why is this? > > Hate to ask the obvious, but what is the > folder named "Documentation" named? and where is it? And I hate having made an obvious error. I assumed the Help folder was all it needed for command-h. I cleaned up my hard drive after a backup and the documentation folder got trashed in the clean up. Sorry to bother you. ------------------------------ Date: Tue, 16 Mar 1999 14:40:55 -0500 From: rkuivila@mail.wesleyan.edu Subject: issues with PlayBuf, question about GrainTap Hi James, I took another look at PlayBuf for the combfilter piece I am working on and discovered that some of the problems I had are actually symptoms of the relation between the blockSize and the buffer length. The two examples below are simply feeding back short delay lines using some attenuated noise to get things started. The first example shows some phased shift that produces some unintentionally nice feedback supression. Could you explain to me what is going on? The second example is phase locked, but it stops producing any sound if the blockSize is reduced below 32. The feedback supression symptom got me thinking - it would be nice if it was possible to have a timeDispersion on playback time as well as on start point in the delay line. Is there an easy way to this? RJK ( Synth.play( { arg synth, decaytime= 0.2, ratio1=1, ratio2=1, feedback=1.4; var input; var signal, fbksig; var output1; var output2; signal = Signal.newClear(640 * 2.0); input = WhiteNoise.ar(0.01); output1 = PlayBuf.ar(signal, Synth.sampleRate, ratio1, 0, 0, signal.size); output2 = PlayBuf.ar(signal, Synth.sampleRate, ratio2, 0, 0, signal.size); fbksig = feedback* LeakDC.ar((output1+output2),0.995); input = Compander.ar(input+fbksig, input+fbksig,0.9,1,0); RecordBuf.ar(signal, input, decaytime, (1-decaytime), 0, 1, 1); [output1,output2]; } ); ) ( Synth.play( { arg synth, decaytime= 0.2, ratio1=1.00, ratio2=1, feedback=1.4; var input; var signal, fbksig; var output1; var output2; synth.blockSize = 64; //No feedback if synth.blockSize<33 //Changing the default block size does not seem to affect this signal = Signal.newClear(640 * 2.0); input = WhiteNoise.ar(0.01); output1 = PlayBuf.ar(signal, Synth.sampleRate, ratio1, 0, 0, signal.size-synth.blockSize); output2 = PlayBuf.ar(signal, Synth.sampleRate, ratio2, 0, 0, signal.size-synth.blockSize); fbksig = feedback* LeakDC.ar((output1+output2),0.995); input = Compander.ar(input+fbksig, input+fbksig,0.9,1,0); RecordBuf.ar(signal, input, decaytime, (1-decaytime), 0, 1, 1); [output1,output2]; } ); ) ------------------------------ Date: Wed, 17 Mar 1999 09:16:51 -0500 From: rkuivila@mail.wesleyan.edu Subject: Some Synth questions Hi James, 1. I would like to be able to go from playing a synth to recording it and back without stopping synthesis. Is there any way to do this? I suppose it would be equivalent to stop synthesis w/o killing the synth and then start it up w/ record. The ability to stop synthesis from within code would also help GUIUtils. (You can crash GUIUtils if you try to save to disk while synthesis is running. The easiest fix would be to just stop synthesis and do the save.) 3. What does the bench message (i.e., synth.bench) do? 4. Could you make interpretation (i.e. interpreting and executing code selected and entered) during synthesis an option? Even if the capability causes glitches it would be very handy for development work where GUI's do not work well. For example, creating a list of some sort (notes, attacks, filter settings) and assigning it to running code. 5. Would it be possible to have a command-key dispatcher in Main (so keys other than command-R can trigger actions)? What about function keys? RJK ------------------------------ Date: Wed, 17 Mar 1999 09:10:52 -0600 From: James McCartney <---@---.---> Subject: Re: Some Synth questions At 8:16 AM -0600 3/17/99, rkuivila@mail.wesleyan.edu wrote: >Hi James, > >1. I would like to be able to go from playing a synth to recording it and back >without stopping synthesis. Is there any way to do this? The way that this would have to be supported would be at the primitive level and not through the DiskOut ugen. This may be done in future since it is a useful thing to have. It will add complexity to the synth engine since it will then have to know about recording and keep double buffers around at all times to be prepared for the possibility. > I suppose it would be equivalent to stop synthesis w/o killing the synth >and then start it up w/ record. 'record' is implemented in terms of 'play' with a DiskOut ugen. It is not a built in function. You cannot add ugens to a running synth. UGens initialize themseves (e.g. choosing their exec function) based on the types of their inputs. Changing a ugen's inputs would require reinitializing and restarting it. It is a mess I am not going to get into. The ControlIn ugen provides a pluggable input that can get around this. But in this case it would require always having this extra overhead even when you are not going to use it. >The ability to stop synthesis from within >code would also help GUIUtils. (You can crash GUIUtils if you try to save >to disk while synthesis is running. The easiest fix would be to just stop >synthesis and do the save.) Save what to disk? > >3. What does the bench message (i.e., synth.bench) do? It is for my purposes in optimizing UGens. If I compile with profiling on, then I can use this method to run a Synth without interrupt level or file i/o overhead. >4. Could you make interpretation (i.e. interpreting and executing code >selected and entered) during synthesis an option? Even if the capability >causes glitches it would be very handy for development work where GUI's do >not work well. For example, creating a list of some sort (notes, attacks, >filter settings) and assigning it to running code. The addition of coroutines are a step in this direction. The next step will be adding threads. Interpreting code while playing *will* likely cause a glitch. >5. Would it be possible to have a command-key dispatcher in Main (so keys >other than command-R can trigger actions)? What about function keys? Function keys are a possibility. All command keys are already mapped except for a few of the number keys. In the next version there is a Lib menu that is a hierarchical menu that you can fill with whatever you want, wavetables, sound files, functions to execute. Since there are not yet threads there are currently still some limitations to this while playing. - -- I've not had a chance to look more into your previous post yet. I'm not sure why it pops off when blockSize is small. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 17 Mar 1999 15:56:03 +0000 From: finer@easynet.co.uk Subject: Signal colour + other ?s Is there a way to colour the wave form in a Signalview ? DiscIn from a Zip drive is a bit glitchy - has anyone tried from a jaz - and if so is this smoother ? On the zip the cpu surges to over 1000 % every . . . well I guess every time it fills a buffer or something like that. The audio "stutters". clip (as opposed to clip2) is somehting that I can't get to work on a signal - eg ({SinOsc.ar(100).clip(-0.8,0.5)}).scope is it me or is it sc ? Thanks, jem ------------------------------ End of sc-users-digest V1 #31 *****************************