From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #5 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 Monday, August 24 1998 Volume 01 : Number 005 ---------------------------------------------------------------------- Date: Mon, 27 Jul 1998 13:24:25 -0700 (PDT) From: James McCartney <---@---.---> Subject: Re: binding generic Controllers to controlviews, external triggering At Mon Jul 27 11:08:01 1998, Ioannis Zannos wrote: > >James, > >some more suggestions / things I miss which I think >are basic for interactive use of SC: > >A number of messages exist for binding control views to >MIDI messages. What about binding control views to >internal control output? There will be a ControlOut ugen to deal with this. >Voicer is triggered by MIDI note on events only. >Could one make a voicer triggered by other types of >events? Of course one might build something similar >to voicer based on the expected TSpawn, but, I would >suggest making an class that enables one to simulate >MIDI events to SC itself. Would that be an easy >way around and a first step to generalising internal/external >control to SC? > >The synth task variable: > >Will it be able to address the synth instance from >inside the task of the synth to start Tspawn events? Assign your spawner to a variable and access that inside the task. Just in the same way that the sequence is addressed in the "z ananlog variant" task. Spawn, TSpawn and Voicer will have a message that allow starting an event from an external source, but that is not there yet. It will only be accurate to 1 control period in that case. >How about multiple periodic tasks in different rates >in one synth? These can come in very handy. Once you have one schedulable task it is only a matter of adding a scheduling queue on top of that to get multiple tasks. The necessary functionality is there. >(Hope this makes sense as I am still a bit >unclear how these aspects work in the present >version of SC2...) I think this is part of the problem. There could be some more stuff added, but people will have different ideas about how to do things (stimulus-response, rule-based, etc.). Higher level functionality can be built upon what is already there. >Perhaps event (i.e. non-continuous) triggers should be >treated as subclasses of a single class. This is something that could be investigated. > >By the way, a question I keep hearing from interested >parties: any prospects we may get MIDI output at some >point, or does the timing problem remain under current >OS conditions? Audio is calculated in bursts, so rather than implementing it and having bad timing, I have not implemented MIDI output. ------------------------------ Date: Tue, 28 Jul 1998 09:34:47 +0200 From: Ioannis Zannos <---@---.---> Subject: Re: binding generic Controllers to controlviews, external triggering At 1:24 PM -0700 27.7.1998, James McCartney wrote: >At Mon Jul 27 11:08:01 1998, Ioannis Zannos wrote: > >>A number of messages exist for binding control views to >>MIDI messages. What about binding control views to >>internal control output? > >There will be a ControlOut ugen to deal with this. Fine. >>Will it be able to address the synth instance from >>inside the task of the synth to start Tspawn events? > >Assign your spawner to a variable and access that inside the >task. Just in the same way that the sequence is addressed in the >"z ananlog variant" task. Spawn, TSpawn and Voicer will have a message that >allow starting an event from an external source, but that is not there >yet. It will only be accurate to 1 control period in that case. Also fine. Since there is audio rate accuracy when staying within a Spawn, and especially within audio rate UGen graphs, enough can be achieved with that. One can live quite well with control rate for the rest I think. But: Note that there are some types of sound synthesis that require specifying the number of samples for which an envelope will run. I am thinking especially of Xenakis' "GenDyn" on which Peter Hoffmann (currently at IRCAM, Peter.Hoffmann@ircam.fr) has done his PhD thesis with a realtime implementation. I find it very interesting and I think that many more such types of synthesis are conceivable. You might consider _at some time in the future_ making this kind of timing also available in SC. It means like saying: gendynenv1 = SEnv([0, 0.3, 0], [1234, 5000]...] where the durations are given in samples. (Maybe the amplitudes should also be given as integers...?) Especially since with SC2 it is possible to make curved envelopes, this may help advance GenDyn types of synthesis. By the way: Have you considered making spline or bezier types of curves available - or are your envelopes already this type? I often seem to have trouble in eradicating sharp corners, which should not be a problem with splines. I am not experienced in curve specification. >>How about multiple periodic tasks in different rates >>in one synth? These can come in very handy. > >Once you have one schedulable task it is only a matter of >adding a scheduling queue on top of that to get multiple tasks. >The necessary functionality is there. I am afraid I would need an example of "adding a scheduling queue on top" Would be too time consuming to figure this out myself, especially given the inborn complexity of managing UGen graphs in the synth from asynchronous events. >>(Hope this makes sense as I am still a bit >>unclear how these aspects work in the present >>version of SC2...) > >I think this is part of the problem. There could be some more >stuff added, but people will have different ideas about how >to do things (stimulus-response, rule-based, etc.). >Higher level functionality can be built upon what is already there. > >>Perhaps event (i.e. non-continuous) triggers should be >>treated as subclasses of a single class. > >This is something that could be investigated. > The problem is complicated. Probably it will need some cycles of refinement involving some trial and error messing around, till elegant solutions can be found. I think your Pyrite was a big step in that direction and now that SC is OO more steps can be made. I have put some thoughts in my short paper for ICMC98 so we can discuss it there. Hopefully I can bring some more code to demonstrate it - - my code is all SC 1.8x based, so I need TSpawn to work on these questions in SC 2.x. >>By the way, a question I keep hearing from interested >>parties: any prospects we may get MIDI output at some >>point, or does the timing problem remain under current >>OS conditions? > >Audio is calculated in bursts, so rather than implementing it >and having bad timing, I have not implemented MIDI output. Dont understand this. But one can leave it at that for now, and take it up once SC 2 is fully released and time comes for talking about ports or extensions. greetings, Iannis Ioannis Zannos Staatliches Institut fuer Musikforschung Tiergartenstr. 1, D-10785 Berlin, Germany Tel: +49 30 25481140 Fax: +49 30 25481172 ------------------------------ Date: Tue, 28 Jul 1998 10:51:45 +0200 From: Ioannis Zannos <---@---.---> Subject: PS: Communication with other programs and timing... At 1:24 PM -0700 27.7.1998, James McCartney wrote: >At Mon Jul 27 11:08:01 1998, Ioannis Zannos wrote: ... > >> >>By the way, a question I keep hearing from interested >>parties: any prospects we may get MIDI output at some >>point, or does the timing problem remain under current >>OS conditions? > >Audio is calculated in bursts, so rather than implementing it >and having bad timing, I have not implemented MIDI output. PS: Another idea: Now that SC can run concurrently with other programs, maybe communication could be done through another program that understands another type of protocol supported by Mac OS rather than MIDI. It also depends on what Mac OS X will bring. To early to speculate? Just thought I should keep this question alive - cant be ignored. I.Z. ------------------------------ Date: Tue, 28 Jul 1998 04:21:00 -0600 From: antiorp@tezcat.com (=cw4t7abs) Subject: Re: PS: Communication with other programs and timing... >PS: >Another idea: Now that SC can run concurrently with >other programs, err >maybe communication could be done through another >program that understands another type of protocol supported by >Mac OS rather than MIDI. tcp \ !p would b zuper >It also depends on what Mac OS X >will bring. To early to speculate? gemma.apple.com/techpubs/macosx \\ bias-inc == maf!a ------------------------------ Date: Tue, 28 Jul 1998 11:33:19 +0200 From: Ioannis Zannos <---@---.---> Subject: err ? ??? Re: PS: Communication with other programs and timing... At 4:21 AM -0600 28.7.1998, =cw4t7abs wrote: >>PS: >>Another idea: Now that SC can run concurrently with >>other programs, > >err > Err? ??? On my g3 i can run examples from the 2.2x demo nicely in the background, for example while writing this email. I.Z. ------------------------------ Date: Tue, 28 Jul 1998 11:51:29 +0200 (MET DST) From: oswald berthold <---@---.---> Subject: Re: PS: Communication with other programs and timing... Yo, but T C P communication abilities would indeed be nice, as for example pd does with netsend/netrecieve ... v ------------------------------ Date: Tue, 28 Jul 1998 12:16:06 +0200 From: Ioannis Zannos <---@---.---> Subject: Re: PS: Communication with other programs and timing... At 11:51 AM +0200 28.7.1998, oswald berthold wrote: >Yo, but T C P communication abilities would indeed be nice, as for example >pd does with netsend/netrecieve ... > >v Right, good to bring this up. I tried to get my hands on pd in April but somehow the search engines didnt help much. Miller Puckettes pages at San Diego seemed a bit out of date and in a mess. Any hints on good sources of pd? Maybe looking in that direction also can be of value to SC fans. Iannis - ------------ ------------------------------ Date: Tue, 28 Jul 1998 05:50:49 -0600 From: antiorp@tezcat.com (=cw4t7abs) Subject: Re: PS: Communication with other programs and timing... >Right, good to bring this up. I tried to get my hands on >pd in April but somehow the search engines didnt help much. >Miller Puckettes pages at San Diego seemed a bit out of date >and in a mess. Any hints on good sources of pd? >Maybe looking in that direction also can be of value to SC fans. > >Iannis >------------ ftp://iem.mhsg.ac.at/pd/ ------------------------------ Date: Tue, 28 Jul 1998 12:50:09 +0200 (MET DST) From: oswald berthold <---@---.---> Subject: Re: PS: Communication with other programs and timing... yep. http://iem.mhsg.ac.at/~geiger/ this is the apge for the linux version, theres a link to m.puckette's ftp page at crsa where the sgi & NT versions hang out, but which currently seems to be down, ;) i think the current version is 0.23 o _ _Right, good to bring this up. I tried to get my hands on _pd in April but somehow the search engines didnt help much. _Miller Puckettes pages at San Diego seemed a bit out of date _and in a mess. Any hints on good sources of pd? _Maybe looking in that direction also can be of value to SC fans. _ _Iannis _------------ _ _ ------------------------------ Date: Wed, 29 Jul 1998 10:15:47 +0000 From: mary <---@---.---> Subject: Audio Output Is it possible to save audio output directly to the hard drive? If not could these be implemented like it is in SC1. My preference would be for this basic capability to be implemeted in SC2 before some of the more esoteric objects. Mary ------------------------------ Date: Wed, 29 Jul 1998 14:50:31 -0400 From: Landon Rose <---@---.---> Subject: writing AudioIn James- A couple of questions with the two part program below: writing audio from mic on PowerBook 2400- ( Synth.write((AudioIn.ar(0)) ,4.0 , ":Sounds:fred" , 'AIFF' ).dump; ) tells me that the SoundFile ugen is writing headerFormat : Symbol 'Sun' sampleFormat : Symbol '32 big endian float' even tho I've specified 'AIFF'. What's going on? Also, the CPU bar freezes during this operation tho the patch "works". playing back the soundfile- ( var filename , sound , signal ; filename = ":Sounds:fred" ; sound = SoundFile.new; if (sound.read(filename), { signal = sound.data.at(0); Synth.scope(Samp.ar(signal, sound.sampleRate, 1, 0, 0, signal.size-2 , 0.1))}, { (filename ++ " not found.\n").post };) ) soundfile "fred" plays interesting sound but not what I intended! What's going on? Also- Record ugen specifies both 'signal' and 'input'. 'signal' I take to be AudioIn() and input some controller? Couldn't find anything in the docs on Record.ar() How does it work? Thanks. Landon ------------------------------ Date: Mon, 17 Aug 1998 14:54:22 +0200 From: hiaz <---@---.---> Subject: MIDIControlOut Geneva*kr(channel, controller, minval, maxval, warp, lagTime) Creates a ControlIn unit generator and a MIDIController hi is it also possible to create a ControlOut unit generator to send controller data to other machines ? thx hiaz ------------------------------ Date: Mon, 17 Aug 1998 08:27:02 -0700 From: James McCartney <---@---.---> Subject: Re: MIDIControlOut At 5:54 AM -0700 8/17/98, hiaz wrote: is it also possible to create a ControlOut unit generator to send controller data to other machines ? not currently. It is something requested often, so it may happen sometime. But even then the timing may not be satisfactory for all purposes since it will be generated in bursts at the audio buffer rate as the audio is calculated. A more complicated to implement approach would be to delay all midi output by one audio buffer, which would make the timing smoother at the cost of more latency. --- 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/SC2d22.sea.hqx ------------------------------ Date: Fri, 21 Aug 1998 18:23:23 +0200 From: "Iannis Zannos" <---@---.---> Subject: How to read and write sound files in SC2 (note Synth.write patch!) Hello, prompted by messages in this list a few weeks ago I looked into sound file I/O in SC2. Following info may be of help in this subject - including a patch for Synth.write which (apparently) is needed to write the sound file format header correctly. Although sound I/O from disk is possible in SC2, there seem to be still some bugs, which can be tested with the following code. Summary, with tips for present use: 1. AIFF 16 bit can be read, but the sample format reported by SC is different from that displayed by SoundMachine. (could be SoundMachines fault!) 2. Sun format files can be written by Synth.write(...). SoundMachine can read such files. SoundConverter or some other utility may be used to convert them to other formats. NOTE: - - To perform writing of sound file header with Synth.write, I changed the Synth *write method as follows. James, please check, also why AIFF header is still not written, despite the patch. This code was also included in my previous message. - - Common utilities for converting sound formats from Sun-au to AIFF are ConvertMachine, or SoundApp. Site: http://hyperarchive.lcs.mit.edu/, use the search utility provided there, or other search engines. 3. AIFF file write seems to omit the header. SC reports headerFormat 'none', and SoundMachine cannot read the file. 4. SoundFile.preload does not seem to be implemented. Cheers, Iannis. ///////////////////////////////////////////////// // 1. SoundFile.read reports wrong sampleFormat (?) var filename, sfile; filename = "so:Sounds:vbabyHappy"; sfile = SoundFile.new; sfile.read(filename); [sfile.headerFormat, sfile.sampleFormat].post; /* reports file type: [ AIFF, 16 big endian signed ] But SoundMachine reports: AIFF, 16 bit, little endian. Does SC2 report a wrong sound data format here? Note that this sound loads into SC2 and plays without problems. /////////////////////////////////////////////////// 2. Synth.write method patch for correct writing of sound format header. I have changed method *write of class Synth to set SoundFile variables headerFormat and sampleFormat, as follows: *write { arg inUgenGraph, inDuration, inPathName, inHeaderFormat = 'Sun', inSampleFormat = '32 big endian float', inBlockSize, inReleaseTime; var synth, file; synth = Synth.new(inUgenGraph, inBlockSize, 0, inReleaseTime); file = SoundFile.new; //////////////////////////////////////////////////////////////////////////// ///// // patch: file.headerFormat = inHeaderFormat; file.sampleFormat = inSampleFormat; //////////////////////////////////////////////////////////////////////////// ///// file.numChannels = synth.numChannels; file.writeHeader(inPathName); synth.write(file, inDuration); ^file } */ ////////////////////////////////////////// /* 3. Sound File read/write tests: - - Sun files can be read and written correctly. - -! AIFF files can be read, but Synth.write fails to write the header. I have not pursued this any more. I think that a list of implemented header format / sample format pairs should be given in the doc after checking the current implementation. */ // 3a. Read format of existing valid ŚSuną file var path, file, res; path = "so:Sounds:0Ahem.snd"; file = SoundFile.new; res = file.read(path); [res, file.headerFormat, file.sampleFormat].post; // printout: [ true, Sun, 16 big endian signed ] // 3b. Write sound file with above ŚSuną format Synth.write( FSinOsc.ar(400, EnvGen.kr(Env.new([0,0.2,0], [0.1, 2.9], 'sine'))), 3, "so:Sounds:01Test.snd", 'Sun', '16 big endian signed' ); // 3c. Read format of existing valid AIFF file var path, file, res; path = "so:Sounds:pcan1"; file = SoundFile.new; res = file.read(path); [res, file.headerFormat, file.sampleFormat].post; // printout: [ true, AIFF, 16 big endian signed ] // 3d. Write sound file with above AIFF format. Synth.write( FSinOsc.ar(400, EnvGen.kr(Env.new([0,0.2,0], [0.1, 2.9], 'sine'))), 3, "so:Sounds:00Test2.aiff", 'AIFF', '16 big endian signed' ); /* Note that trying the pairs 'AIFF', '16 little endian signed' 'AIFF', '16 little endian unsigned' results in error message: € ERROR: AIFF unsupported sound data format type: unsupported Also if I try string arguments: "AIFF", "16 big endian signed" a different error message occurs: "cannot write this header! [ ... clip ... ] So probably this part of SC implementation needs checking. */ // 3e. Check format of AIFF file written by SC2: headerFormat = none! // Checking the file above, written with 'AIFF', '16 big endian signed': var path, file, res; path = "so:Sounds:00Test2.aiff"; file = SoundFile.new; res = file.read(path); [res, file.headerFormat, file.sampleFormat].post; // printout: [ true, none, 16 big endian signed ] //////////////////////////////////////////////////////////////// // 4. SoundFile.preload does not seem to be implemented. var filename, sound; filename = "so:Sounds:vbabyHappy"; //filename = "so:Sounds:ptick"; sound = SoundFile.new; if (sound.preload(filename, 100000), { 'Done'.post; // sound.plot; },{ (filename ++ " not found.\n").post }); € ERROR: A primitive was not bound. 0 0 Instance of Method { (07642A18, gc=80, fmt=00, flg=81, set=04) instance variables [9] code : instance of Int8Array (07642B80, size=20, set=02) literals : instance of Array (07642B50, size=2, set=01) prototypeFrame : instance of Array (07642AA8, size=4, set=02) context : nil argNames : instance of Array (07642AE8, size=3, set=02) varNames : instance of Array (07642B28, size=1, set=00) ownerClass : instance of Meta_SoundFile (076408D8, size=0, set=7F) name : Symbol 'preload' primitiveName : nil } ERROR: Primitive 'none' failed. ------------------------------ Date: Fri, 21 Aug 1998 11:39:18 -0700 From: James McCartney <---@---.---> Subject: Re: AIFF Sound File Reading, Writing >Summary, with tips for present use: >1. AIFF 16 bit can be read, but the sample format reported >by SC is different from that displayed by SoundMachine. (could >be SoundMachines fault!) This looks like Sound Machine's fault. AIFF is a big endian file format, so "16 bit, little endian" is not a legal format for an AIFF file. >3. AIFF file write seems to omit the header. SC reports >headerFormat 'none', and SoundMachine cannot read the file. Thanks for bringing this to my attention. I'm looking at it. When Synth.write tries to update the header with the new length info, it munges the header somehow. > >4. SoundFile.preload does not seem to be implemented. Yes, but it is now. I have been working on the DiskIn and DiskOut unit generators. DiskIn plays back a sound from disk. The file can be preloaded for instant start, or not preloaded in which case it starts as fast as it can, playing a bit of silence before the first buffer is read. DiskIn will play looped files as well. Thanks for the patch to Synth.write. I have put that in as well as a check to see that writeHeader succeeded. --- 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/SC2d22.sea.hqx ------------------------------ Date: Fri, 21 Aug 1998 11:40:47 -0700 From: James McCartney <---@---.---> Subject: Re: AIFF Sound File Reading, Writing >>3. AIFF file write seems to omit the header. SC reports >>headerFormat 'none', and SoundMachine cannot read the file. > >Thanks for bringing this to my attention. I'm looking at it. >When Synth.write tries to update the header with the new length >info, it munges the header somehow. > This is now fixed. ------------------------------ Date: Fri, 21 Aug 1998 18:33:14 +0200 From: "Iannis Zannos" <---@---.---> Subject: Starting Synth from a GUI button Following is a problem report which I post here as it contains code maybe useful in starting/stopping Synth and Spawn processes from the GUI window. Some points on GUI behavior in the current SC2 version: Focus freezes on button at execution of Synth.play The problem with the following code is that if I delete the line bstart.action.value(); and I start the Synth by pressing the button Śstartą, then the focus will freeze on button Start. This means access to other control views is blocked. Thus, there are no means to uncheck the Checkbox item, in order to stop the process. As a consequence, it seems there are no useful means of starting the Synth from the GUI. I also noted that style of gui control views is not converted to code when doing "generate code to clipboard". That is to say, if I choose the style of a button to be "dark frame" or the like, this information is lost in the code generated to the clipboard. Is there a way yet to specify this kind of style by code? Best regards, Iannis Zannos SIM PS: James, when you make the next version of SC will you please remember to put TSpawn in it? I think it is important. /////////////////////////////////////////////////////// // example code: var test; test = { var w, bstart, bstop, check; var process1, task; w = GUIWindow.new("panel", Rect.new( 696, 190, 1096, 590 )); bstart = ButtonView.new( w, Rect.new( 10, 10, 150, 40 ), "Start", 0, 0, 1, 0, 'linear'); bstop = ButtonView.new( w, Rect.new( 10, 50, 150, 80 ), "Stop", 0, 0, 1, 0, 'linear'); check = CheckBoxView.new( w, Rect.new( 15, 98, 143, 118 ), "Checkbox", 1, 0, 1, 0, 'linear').prSetBorderStyle(7); bstart.action_({ var synth, process1; 'GO'.postln; process1 = Spawn.ar( { arg sp, c; if( check.value != 0, { 0 }, { 'STOP! '.post; sp.stop; }); FSinOsc.ar((c % 36) + 4 * 100, Line.kr(0.2, 0, 0.2)) }, 1, 0.2); synth = Synth.new(process1); synth.play(); }); bstop.action_({ 'Stopped'.postln; }); // check.action_( { if( check.value != 0, { 'yes! '.post; }, { 'no! '.post; }) } ); // I have to do this here, in order to maintain free focus. // cannot do it from the button when Synth is not already running. bstart.action.value(); }; test.value; ------------------------------ Date: Fri, 21 Aug 1998 18:37:39 +0200 From: "Iannis Zannos" <---@---.---> Subject: FW: AIFF Sound File Reading, Writing > fixed! Forwarding this for everybody's info - ---------- >From: James McCartney <---@---.---> >To: iani@sim.spk-berlin.de >Subject: Re: AIFF Sound File Reading, Writing >Date: Fri, 21 Aug 1998 8:36 PM > > >>>3. AIFF file write seems to omit the header. SC reports >>>headerFormat 'none', and SoundMachine cannot read the file. >> >> > >This is now fixed. > > > > ------------------------------ Date: Fri, 21 Aug 1998 11:54:18 -0700 From: James McCartney <---@---.---> Subject: Re: Starting Synth from a GUI button At 11:24 AM -0700 8/18/98, owner-sc-users@lists.io.com wrote: >I also noted that style of gui control views is not >converted to code when doing "generate code to clipboard". >That is to say, if I choose the style of a button to be >"dark frame" or the like, this information is lost in >the code generated to the clipboard. Is there a way >yet to specify this kind of style by code? It looks like your check box is being set to "groove out" (==7) below. That's what prSetBorderStyle does. Are you saying it doesn't work for you? ButtonViews shouldn't be able to set a border style. I notice the dialog lets you set a style, but this menu should not be allowed for ButtonViews. > check = CheckBoxView.new( w, Rect.new( 15, 98, 143, 118 ), > "Checkbox", 1, 0, 1, 0, 'linear').prSetBorderStyle(7); --- 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/SC2d22.sea.hqx ------------------------------ Date: Fri, 21 Aug 1998 12:02:36 -0700 From: James McCartney <---@---.---> Subject: Re: Starting Synth from a GUI button At 11:24 AM -0700 8/18/98, owner-sc-users@lists.io.com wrote: >Focus freezes on button at execution of Synth.play Yes I know about this. It also freezes when you press the spacebar to play a sound in a selected sample view. Anything you put in an action function does not return control to the window until it is complete. I will fix this, but perhaps not in this next version. It is a bit tricky. >PS: When you make the next version of SC will you please >remember to put TSpawn in it? I think it is important. It is already in there. I hope to upload a new version late this weekend or early next week. --- 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/SC2d22.sea.hqx ------------------------------ Date: Fri, 21 Aug 1998 10:57:50 -0700 From: Daniel Bondurant <---@---.---> Subject: G3 Upgrade cards I recently downloaded the SC2d22 upgrade from version 1.0, and can't seem to get anything to work - demos, examples, etc. all the basic stuff. I have a 8500 with a NewerTech G3 upgrade card in it. Could this be the problem? When I run the examples the % CPU used it always at 0%, and Supercollider crashes after about 5 seconds. The rest of the system specs are: OS8, Audiomedia III, DAE, FreeMidi 1.34 I did get a crash from FreeMidi's SoftSynth extension. Restarting and turning off SoftSynth didn't help any. Does Supercollider only run with OMS? Just looking for some help. (yes I did try all the usual mac debugging stuff) thanks - ------ daniel bondu@alphastate.com Turn off your computer and go outside ------------------------------ Date: Fri, 21 Aug 1998 15:50:19 -0400 From: kbabb@escape.com (Kenneth N Babb) Subject: Re: G3 Upgrade cards >I recently downloaded the SC2d22 upgrade from version 1.0, and can't seem >to get anything to work - demos, examples, etc. all the basic stuff. > >I have a 8500 with a NewerTech G3 upgrade card in it. Could this be the >problem? When I run the examples the % CPU used it always at 0%, and >Supercollider crashes after about 5 seconds. The rest of the system specs >are: OS8, Audiomedia III, DAE, FreeMidi 1.34 > >I did get a crash from FreeMidi's SoftSynth extension. Restarting and >turning off SoftSynth didn't help any. Does Supercollider only run with OMS? Daniel, I'm running SC2d22 on a 7600 with a NewerTech G3 upgrade card (220), freemidi 1.35 in OMS emulation mode, and OS 8.1. Haven't encountered any problems with SuperCollider. Kenneth Babb Composer, Sound Designer ------------------------------ Date: Sat, 22 Aug 1998 18:09:25 +1000 From: NIGEL FRAYNE <---@---.---> Subject: Re: G3 Upgrade cards >I recently downloaded the SC2d22 upgrade from version 1.0, and can't seem >to get anything to work - demos, examples, etc. all the basic stuff. > >I have a 8500 with a NewerTech G3 upgrade card in it. Could this be the >problem? When I run the examples the % CPU used it always at 0%, and >Supercollider crashes after about 5 seconds. The rest of the system specs >are: OS8, Audiomedia III, DAE, FreeMidi 1.34 SNIP.... NF: Woah! I was about to post a question asking for experience of using SC with a PowerLogix G3 upgrade card that I'm purchasing (hasn't arrived yet). Everyone else says the NewerTech is rock solid - but this post above has me even more worried... NIGEL FRAYNE ------------------------------ Date: Sat, 22 Aug 1998 14:43:53 -0700 From: James McCartney <---@---.---> Subject: Re: G3 Upgrade cards At 1:09 AM -0700 8/22/98, NIGEL FRAYNE wrote: >>I recently downloaded the SC2d22 upgrade from version 1.0, and can't seem >>to get anything to work - demos, examples, etc. all the basic stuff. >> >>I have a 8500 with a NewerTech G3 upgrade card in it. Could this be the >>problem? When I run the examples the % CPU used it always at 0%, and >>Supercollider crashes after about 5 seconds. The rest of the system specs >>are: OS8, Audiomedia III, DAE, FreeMidi 1.34 >SNIP.... > >NF: Woah! I was about to post a question asking for experience of >using SC with a PowerLogix G3 upgrade card that I'm purchasing (hasn't >arrived yet). Everyone else says the NewerTech is rock solid - but this >post above has me even more worried... > >NIGEL FRAYNE The problem was fixed by turning off DAE. --- 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/SC2d22.sea.hqx ------------------------------ Date: Sun, 23 Aug 1998 14:50:35 -0700 From: James McCartney <---@---.---> Subject: Re: questions ADMIN NOTE: In order to prevent spam from reaching the list, this list is restricted to posting only by those subscribed. This means that your return address must be the same as that with which you subscribed. Unfortunately many of you have multiple accounts and this is resulting in a lot of bounced messages when you post from an account other than the one you subscribed from. >BOUNCE sc-users@lists.io.com: Non-member submission from [michael >strohmann ] >From: michael strohmann <---@---.---> >To: sc-users@lists.io.com >Subject: questions >Message-ID: >MIME-Version: 1.0 >Content-Type: TEXT/PLAIN; charset=US-ASCII > >hi >I hope the following questions are easy to answer >1)Is it possible to controll the frequencies in the array of the >KLANK-objekt by varables? >I didn't succeed in trying it like this: >var a,b,c >a = MouseX.kr(120, 5000); >b = ... >c = ... >Synth.play(Klank.ar(`[[a,b,c],nil,[1,2,4]],...) > Klank's frequencies are not continously modulatable, it is a fixed frequency filter bank. Klank was written specifically to take advantage of this in order to get many more filters running in real time. If you want to continously modulate, you'll need to use Resonz. >2)How can I conncet an external controller(Mouse or MIDI) with the >if..then controll structure?? >Dindn't work like this: >x = MouseX.kr(...); >func = if x < 62, (...), (...); If you want to poll the value of an ExternalControlSource you can create it somewhere outside the Spawn and then call the value method on it. Your if syntax is wrong above. You could do something like this: x = MouseX.new(120, 5000); ... if ( x.value < 62, {...}, {...}); - --------------- If you want to do something that is continuous and conditional then you cannot use 'if' because it is not a unit generator. Synth.play( WhiteNoise.ar( MouseX.kr(0,1) < 0.5 ) ); It would help if you would post a complete example of what you are trying to do. I don't have you listed as a registered user. --- 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/SC2d22.sea.hqx ------------------------------ Date: Sun, 23 Aug 1998 23:42:33 -0400 (EDT) From: David Crandall <---@---.---> Subject: AM III Just to double-check. I occasionally run SC at work on Digidesign hardware (888s) on Macs that have the extension that treats the 888's channels 1 & 2 as if they were the Sound Manager. No problem. The question is, is there a similar way to make the Audiomedia III card think it's part of the SM, and will it run SC? My "other" boss has one, which he only addresses via Studio Vision... TIA, dc ------------------------------ Date: Mon, 24 Aug 1998 09:30:26 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: AM III (vs. Korg for SC2 - Also: Project II) >From: David Crandall <---@---.---> >To: sc-users@lists.io.com >Subject: AM III >Date: Mon, 24 Aug 1998 5:42 AM > >Just to double-check. I occasionally run SC at work on Digidesign >hardware (888s) on Macs that have the extension that treats the 888's >channels 1 & 2 as if they were the Sound Manager. No problem. The >question is, is there a similar way to make the Audiomedia III card think >it's part of the SM, and will it run SC? My "other" boss has one, which >he only addresses via Studio Vision... > >TIA, > >dc How does SC2 behave with AM III? I know that there were problems with the DAE when performing simultaneous input and output on SC1.x but have no experience with SC2. Is it possible to get more than 2 audio channels I/O with your configuration on SC? - I would not think so. James, are you planning to support Digidesign hardware anytime soon, or should people stick with the Korg card? Any thoughts about the new 16 channel PCI card by Digidesign named "Project II". According to http://www.digidesign.com/prod/projii/ it uses something called "Direct I/O" which bypasses the SoundManager and communicates directly with digital audio sequencers such as Digital Performer or Cubase Audio. Iannis Zannos SIM (Berlin - DE) ------------------------------ Date: Mon, 24 Aug 1998 10:28:06 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: Starting Synth from a GUI button >From: James McCartney <---@---.---> >Date: Fri, 21 Aug 1998 8:54 PM >It looks like your check box is being set to "groove out" (==7) below. >That's what prSetBorderStyle does. Are you saying it doesn't work >for you? ButtonViews shouldn't be able to set a border style. >I notice the dialog lets you set a style, but this menu should not >be allowed for ButtonViews. > > >> check = CheckBoxView.new( w, Rect.new( 15, 98, 143, 118 ), >> "Checkbox", 1, 0, 1, 0, 'linear').prSetBorderStyle(7); > Fine. The fact that setting a ButtonViews style in the dialog has a visible effect is misleading. Otherwise it is as you describe it. Thanks. Iannis Zannos SIM ------------------------------ Date: Mon, 24 Aug 1998 11:12:29 +0200 From: "Iannis Zannos" <---@---.---> Subject: No subclasses to Array possible? Following point may be clear to those with extensive Smalltalk background It is not self-explanatory to me, and therefore may be useful to bear in mind when developing new collection classes: I tried to make a subclass of Array in order to add some behavior for generation of event structures from data arrays. I could not succeed. After comparing the source code of List and Array it became clear to me that it would be preferable to subclass List rather than Array. I do not know if there are theoretical or historical reasons for not making subclasses of Array - but I wonder why such subclasses do not behave as expected when trying to apply the Array classes methods "add", "addAll". Description: Due to the implementation of the 'with' method in Array (letting the interpreter turn the arguments into an Array (cool...!), instances of subclasses of Array will return instances of Array and not of the desired subclass. I thought that this can be easily bypassed by overloading the with method in the subclass, but could not succeed. I cannot understand why an instance of a subclass of Array will react differently to the messages add or addAll - as documented below - even though the methods of these messages are not oveloaded. Moreover, I cannot find any way to create instances of subclasses of Array, since strangely SomeSubclass.new.addAll([ ... any list ...]) as well as similar means for filling the instance will return an empty instance. Should one subclass Array or not, and if so, how? Field : Array { // Overloading 'with' to return Field instance as required *with { arg ... args; var newColl; // answer an array of my class of the given arguments // the class Array has a simpler implementation, which does // not allow usage in subclasses because it always returns Array instances //newColl = this.new(args.size); // args.post; // args.do({ arg item, i; newColl.add(i, item) }); newColl = this.new(); newColl.addAll(args); ^newColl } // Example of further functionality: // Return a randomly selected subset of the receiver. // Note: cannot do this with Array.rand(...).collect(...) because // Array.rand does not produce all-unique index values sample { arg len = 1; ^this.scramble.copyRange(0, (len min: this.size) - 1); } sampleRange { arg len = 1, from = 0, range; var maxrange; maxrange = this.size - from - 1; range = (range ? maxrange) min: maxrange; ^(this.copyRange(from, range + from)).sample(len); } } /* tests: var t; t = Field.with(10, 20, 30); //t.class.post; // Field t.post; //[ ] [].addAll([1, 2, 4]).post; // [ 1, 2, 4 ] Array.new.addAll([ 1, 2, 4 ] ).post; //[ 1, 2, 4 ] Field.new.addAll([ 1, 2, 4 ] ).post; // [ ] Field.new.class.post; // Field */ ------------------------------ Date: Mon, 24 Aug 1998 11:38:07 +0200 From: "Iannis Zannos" <---@---.---> Subject: Blocks vs. Closures returned by methods, for Spawn A rather subtle point, but potentially a cause of frustration: The syntax ^{ /* anything ... */ } inside a method will return an instance of Block, not an instance of Closure. But you can return a Closure from a method by assigning it to a variable and then returning the variable: var closure; closure = { /* anything ... */ }; ^closure; This can be confusing when creating classes that will return ugen-graph generating closures to be used by other spawns. (To my understanding this is a fundamental technique for constructing event structures). The following code demonstrates an analysis of the situation and a solution. Question: Is there a reason for this behavior of { } syntax inside Class method definition code? Suggestion: Perhaps the differences of Blocks and Closures should be explained in the doc? Regards, Iannis Zannos SIM (PS apologies for eventual reposting due to problems with the emailing program). Example code: Chord { // 1. This method returns an output proxy generated by Spawn.ar. // This can be put as return value inside a closure that is the // first argument of another Spawn. *test { ^ Spawn.ar({FSinOsc.ar(400 + 1000.rand, Line.kr( 0.02, 0, 1.0.rand)) }, 1, 0, 4) } // 2. Here we try to return the closure itself, that would go as // first argument of another Spawn. // This does not work, because a Block is returned, not a Closure. *test2 { ^ { Spawn.ar({FSinOsc.ar(400 + 1000.rand, Line.kr( 0.02, 0, 1.0.rand)) }, 1, 0, 4) } } // 3. But assinging the "block" to a variable results in a closure - OK!. *test3 { var closure; closure = { Spawn.ar({FSinOsc.ar(400 + 1000.rand, Line.kr( 0.02, 0, 1.0.rand)) }, 1, 0, 4) } ^closure; } } ///////////////// Tests, examples: /* 1. Testing the classes returned: ( var oproxy, block, closurep; oproxy = Chord.test; block = Chord.test2; closurep = Chord.test3; [oproxy.class, block.class, closurep.class].post; // result: [ OutputProxy, Block, Closure ] ) */ /* 2. Testing with Spawn: // Spawn does not work on output proxy. Synth.play( Spawn.ar(Chord.test, 1, 0.3)); // You have to put it in a closure, then it is OK. Synth.play( Spawn.ar( { Chord.test }, 2, 0.3)); // ! Block, not closure, returned directly by ^, does not work! Synth.play( Spawn.ar( Chord.test2, 2, 0.3)); // This does not work either! Synth.play( Spawn.ar( { Chord.test2 }, 2, 0.3)); // a variable will return a closure. OK! Synth.play( Spawn.ar( Chord.test3, 2, 0.3)); */ /* Note for people that have not yet made their own classes: Evaluating the new class code from the interpreter will not work. To compile: - -- put the class code in a file named Chord.sc (.sc ending is mandatory!), - -- put this file into the DefaultLibrary folder (or in a folder whose alias is in the DefaultLibrary folder), - -- then recompile the system by Command-K. */ ------------------------------ End of sc-users-digest V1 #5 ****************************