From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #118 Reply-To: sc-users Sender: owner-sc-users-digest@lists.io.com Errors-To: owner-sc-users-digest@lists.io.com Precedence: bulk sc-users-digest Friday, May 12 2000 Volume 01 : Number 118 ---------------------------------------------------------------------- Date: Wed, 10 May 2000 10:10:23 +0200 From: Hairi Vogel <---@---.---> Subject: Re: SWARK > -Are you the the one who built the "Alpha 77", used on > Soon over Babaluma", which produced the unbelievable > sounds? > > curious, > AvS > Yes , the Alpha77 was eledctronically designed by Herman Hogg , including his and my ideas and lots of soldering by a very young myself. The main reason the Alpha77 actually sounded special were two : - - it was projected to be extremely precise ( for it's times) , tuned to be a live - - laboratory ( very much what the band was in these days ) rather than a R'n'R machine . In fact it didn't even have a keyboard . Playing it meant programming it . - - the scaling and ranges of control signals was far better and wider than in modular synths like the EMS , Moog , ARP . This gave incredible sounds . There where oscillators with a continuos control range of over 10 octaves , and so on. That is today one of the areas of my interrest . Hairi ------------------------------ Date: Wed, 10 May 2000 03:05:50 -0500 From: James McCartney <---@---.---> Subject: Re: SWARK on 5/10/00 2:50 AM, Hairi Vogel at hvogel@tin.it wrote: > > > James McCartney wrote: > >> on 5/9/00 4:26 AM, Hairi Vogel at hvogel@tin.it wrote: >> >>> the player (2.2.7)refuses to play my compressed library giving the following >>> message: >>> • ERROR: A primitive was not bound. 0 411 >> >> Are you using the compile string primitive? >> This is not available in the player. > > i actually do . Well then it can't be an SCPlay file. I found the flip flop bug... - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Wed, 10 May 2000 10:39:14 +0200 From: Hans Tutschku <---@---.---> Subject: smaller windows (again) I would like to have GUI-windows for just one slider. Unfortunately the minimum default vertical size of a GUI window is quite large and canīt be changed by the user. I assume, that it is done in this primitive. prSetBounds { arg argBounds; _GUIWindow_SetBounds ^this.primitiveFailed } Is there a workaround to get GUI-windows, taking less screenspace on the vertical axis? Thanks, Hans ------------------------------ Date: Wed, 10 May 2000 09:32:44 -0500 From: James McCartney <---@---.---> Subject: Re: smaller windows (again) on 5/10/00 3:39 AM, Hans Tutschku at Hans.Tutschku@ircam.fr wrote: > Is there a workaround to get GUI-windows, taking less screenspace on > the vertical axis? no there is not currently. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Wed, 10 May 2000 13:41:21 -0700 From: Alberto de Campo <---@---.---> Subject: minor bugs in 2.2.8 Hi James, I found some minor bugs in 2.2.8: - ----------- Alter Menu:Set View Limits still does not work; it makes no changes and never returns. (I believe I mailed that one already, didn't I?) Parzen Window does something weird. Fill Menu: Buzz... dumps all the values into the text window. - ---------- Suggestion for Wavetable.read, i.e. Meta_RawArray::read : (I believe you suggested that in response to my first mail about it) *read { arg path; var file, array; file = File.new(path, "rb"); if (file.notNil, // better make it file.isOpen, // so it does not wait for a file { // that does not exist. array = this.readNew(file); file.close; ^array }); ^nil } This would make a line like var myTable; myTable = Wavetable.read("myDefaultTable.wt") ? Wavetable.sineFill(1024, [1]); myTable.plot; work directly. Or how about a general way of asking whether: File.exists("path") - -------- The example for Median as given in Filters.help: { Median.ar(Saw.ar(500, 0.1) + Dust2.ar(100, 0.9)) }.play; does not work, because Median has been generalized to expect a length as first arg. Median : UGen { var length; *ar { arg length=3, in = 0.0, mul = 1.0, add = 0.0; ^this.multiChannelPerform('ar1', length, in, mul, add) } Best regards, AdC ------------------------------ Date: Wed, 10 May 2000 23:55:16 +0200 From: Hairi Vogel <---@---.---> Subject: Re:compile string primitive > > >> Are you using the compile string primitive? > >> This is not available in the player. > > > > i actually do . > > Well then it can't be an SCPlay file. > > What is smoother at runtime ? - - interpret a string - - evaluate a function that has been generated by compiling a string some of the units in SWARK allow the definition of SC code which is stored in string views and gets executed evey time certain conditions occur .That's to cover any control angle not otherwise covered . Repetition of execution can be as fast as any control information is . ( up to 50cps i suppose to be ample , with kr rate precision ). it works well . lately i changed this feature to actually compile the string when its generated or loaded and execute the function instead of directly interpreting the string every time it's called . i can go to the previous system for Play versions. thanx for feedback Hairi ------------------------------ Date: Wed, 10 May 2000 19:00:07 -0500 From: James McCartney <---@---.---> Subject: Re: compile string primitive on 5/10/00 4:55 PM, Hairi Vogel at hvogel@tin.it wrote: > > What is smoother at runtime ? > - interpret a string > - evaluate a function that has been generated by compiling a string The second one is faster. The interpreter is expensive and should not be used while playing. However neither method will work in SCPlay. You cannot compile text in SCPlay. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Wed, 10 May 2000 23:23:17 -0400 From: Landon Rose <---@---.---> Subject: Recording with Pause question James- This is a patch which records to a file only when Pause is triggered by audio input. well, not exactly! Only when Pause is triggered by Trig.ar. (It won't run as is unless the line is removed, see question on this below) I hope to use it to record environment sounds which may occur in clusters but only infrequently during the course of a long time span- for instance several days. This way I could capture the sounds being made without the long silent periods between. I know of course that with any gate the beginning of the first sound would be cut off, but that is not an immediate concern. Two Questions: 1.Audio gate : Any reason not to use a negative number with AudioIn? Seems to work fine. 2.Length of soundfile- a problem arises in that if I am letting the patch run a day or two, at some point I could run out of hard disk space! Is there a way to create a predetermined length that the file would not go past? In the patch below file.numFrames gets a " message _numFrames not understood " when I try to run the patch. Shouldn't changing in SoundFile.sc "var numFrames" , let the variable numFrames be changed from within the patch? I tried this- the patch will run but the change in SoundFile.sc has no effect. The possible file length is still variable. ( // triggered recording with Pause var file, trigpulse; Synth.play({ arg synth; var outs; // create the graph to record to disk outs = AudioIn.ar([1,2],2); //create audio trigger, using neg number as a gate, trigpulse = Trig.ar((AudioIn.ar(1,1,-0.03) ), 3); // create a sound file file = SoundFile.new; file.numChannels = outs.size; file.headerFormat = 'AIFF'; file.sampleFormat = '16 big endian signed'; file.numFrames = (44100 * 9) ; // shouldn't this create a maximum length of file? if (file.writeHeader("triggertest2") and: file.prepareRecord, { Pause.ar({DiskOut.ar(file, 32768, outs)}, trigpulse); },{ file = nil; nil }).postln; },(1 * 60)); // endRecord updates the file header and closes the file if (file.notNil,{ file.endRecord }); ) //play file SoundFile.scope("triggertest2"); (// length of file var file; file = SoundFile.new; if ( file.readHeader("triggertest2") // read the file's header and: { file.preloadData; }, // preload the data { (file.numFrames/44100).postln }); ) Thanks Landon ------------------------------ Date: Wed, 10 May 2000 22:40:51 -0500 From: James McCartney <---@---.---> Subject: Re: Recording with Pause question on 5/10/00 10:23 PM, Landon Rose at landon@world.std.com wrote: > 1.Audio gate : Any reason not to use a negative number with > AudioIn? Seems to work > fine. The mul and add inputs are the same for all ugens and can have any value. > Shouldn't changing in SoundFile.sc "var <>numFrames" , > let the variable numFrames be changed from within the patch? > I tried this- the patch will run but the change in SoundFile.sc > has no effect. No. The file length gets overwritten once recording is finished. It is up to you to control how much time you record into the file by stopping the recording process. Usually if a variable does not allow write access then you should not write to it. Adding write access to variables in some cases, especially in the Core classes, can crash the system. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Thu, 11 May 2000 13:20:19 -0700 From: Mark Polishook <---@---.---> Subject: UGen.inputs question James, Code along the lines of *** SinOsc.ar.inputs_([400, 0, 0.1]) // *** will sometimes run ok -- and(at other times) will cause SC to quit (usually with a type 2 error). What are the guidelines for when inputs can be explicitly assigned and/or updated. Thanks, Mark ------------------------------ Date: Thu, 11 May 2000 15:32:05 -0500 From: James McCartney <---@---.---> Subject: Re: UGen.inputs question on 5/11/00 3:20 PM, Mark Polishook at polishoo@cwu.edu wrote: > SinOsc.ar.inputs_([400, 0, 0.1]) // Don't do this. > What are the guidelines for when inputs can be explicitly assigned and/or > updated. Never. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Thu, 11 May 2000 13:37:00 -0700 From: Mark Polishook <---@---.---> Subject: tablet tracking James, I know this has been covered in previous posts but I can't seem to find where... My tablet pen is now selecting everything it passes over. How do I restore it to the default it used to have? (prior to 2.2.8). - -thanks, Mark ------------------------------ Date: Thu, 11 May 2000 16:01:34 -0500 From: James McCartney <---@---.---> Subject: Re: tablet tracking on 5/11/00 3:37 PM, Mark Polishook at polishoo@cwu.edu wrote: > James, > > I know this has been covered in previous posts but I can't seem to find > where... > > My tablet pen is now selecting everything it passes over. How do I restore it > to the default it used to have? (prior to 2.2.8). > > -thanks, > > Mark > From the Release notes for 2.2.8 : Since the Wacom Graphire tablet is likely to be popular, the default is now for tabletTracking to be true at startup. If you want to turn off the tablet's tracking you can do false.tabletTracking. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Thu, 11 May 2000 14:17:56 -0700 From: Mark Polishook <---@---.---> Subject: Re: UGen.inputs question > > > What are the guidelines for when inputs can be explicitly assigned and/or > > updated. > > Never. This is a very clear guideline. :) Thanks, Mark > > > --- james mccartney james@audiosynth.com > SuperCollider - a real time synthesis programming language for the PowerMac. > ------------------------------ Date: Fri, 12 May 2000 08:20:13 -0400 From: Landon Rose <---@---.---> Subject: Re: Recording with Pause question James- In order to place a limit on length of SoundFile I create a TSpawn triggered by PulseDivider. Question: Isn't there a way to multiply by 0 from a TSpawn? Does it need an envelope? thus stopping DiskOut before Synth.play ends. I tried silencing AudioIn from TSpawn as well to no avail. ( var file, trigpulse; Synth.play({ arg synth; var outs; // create the graph to record to disk outs = AudioIn.ar([1,2],2); //create audio trigger, using neg number as a gate, trigpulse = Trig.ar((AudioIn.ar(1,1,-0.1); ), 1) ; // create a sound file file = SoundFile.new; file.numChannels = outs.size; // set the number of channels file.headerFormat = 'AIFF'; // set the desired header format file.sampleFormat = '16 big endian signed'; // set the sample format if (file.writeHeader("triggertest2") and: file.prepareRecord, { Pause.ar({DiskOut.ar(file, 32768, outs)}, trigpulse); TSpawn.ar({ (`(trigpulse * 0)).postln}, /* multiply trigpulse by 0 effectively silencing trigger to Pause */ 2, 1, PulseDivider.ar(trigpulse,2)); },{ file = nil; nil }).postln; },10); // endRecord updates the file header and closes the file if (file.notNil,{ file.endRecord }); ) Thanks Landon ------------------------------ End of sc-users-digest V1 #118 ******************************