From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #11 Reply-To: sc-users Sender: owner-sc-users-digest@lists.io.com Errors-To: owner-sc-users-digest@lists.io.com Precedence: bulk sc-users-digest Tuesday, October 20 1998 Volume 01 : Number 011 ---------------------------------------------------------------------- Date: Tue, 13 Oct 1998 11:48:04 +0200 From: "Iannis Zannos" <---@---.---> Subject: Re: more GUI questions >From: Mark Ballora <---@---.---> >Date: Mon, 12 Oct 1998 11:17 PM >1) >When I use, say: > >.mapToController(3,9); > >after a slider definition, this means it's controller number 3, and what >does the second argument tell it? Mark, for such questions you should better consult SuperCollider first. Type mapToController in any SC code window, select it with the mouse, then type command-y (apple-y) on it. It will tell you this: ControlView : this.mapToController(channel, ctlnum) Meaning: 1st arg is MIDI channel, 2nd arg is controller number. (which is different from what you write above). >2) >I've been working on a GUI which displays a number of values. Despite my >careful initial planning, I have to make changes to the GUI along the way. >I would implement them by editing the GUI, copying the code to the >clipboard, and then comparing it to my original code. It became more >complicated as objects became defined by variables, and actions between >sliders and number boxes were defined, and the like. Is it at all >realistic to ask whether there is a way to save accompanying code when we >save GUI revisions to the clipboard? Question is for James to answer, but my guess is this feature is not on the top of a to-do list. Just learn to write code neatly... No way around to manually defining the look of your gui. Some gui-building utilities are waiting for upload to the group and more improvements in the gui building basic features of SC are planned, so code will be simpler than it is now - which is simple enough already. >3) >It seems that the slider-to-ugen mapping depends on where the slider is >listed. When I moved the line of code which defined the slider, its >variable and its controller mapping: >s=SliderView.new( w, Rect.newBy( 92, 16, 198, 19 ), "SliderView", 0, 0, 2, >0.05, 'linear').mapToController(1,9); // standard deviation volume > >to the top of the list of sliders (since this one wound up being the top on >the screen), the mapping changed, and none of my sliders worked, but were >offset by one. Have I just gone to the Twilight Zone, or is there >something known in this universe which could account for such activity? One cannot answer accurately without seeing your code. But note that View items are stored in the variable "views" of a GUIWindow in the order in which they are created. If you need to address View items individually later on in the code, it is safer to assign them to named variables so you have certain access to them. Bye, Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 ------------------------------ Date: Tue, 13 Oct 1998 09:28:18 -0400 (EDT) From: Mark Ballora <---@---.---> Subject: Re: more GUI questions On Tue, 13 Oct 1998, Iannis Zannos wrote: > for such questions you should better consult SuperCollider > first. Type mapToController in any SC code window, select > it with the mouse, then type command-y (apple-y) on it. > It will tell you this: Thank you! I've been typing command-h. > > ControlView : this.mapToController(channel, ctlnum) > > Meaning: 1st arg is MIDI channel, 2nd arg is controller number. > (which is different from what you write above). > ------------------------------ Date: Tue, 13 Oct 1998 09:37:00 -0400 (EDT) From: Mark Ballora <---@---.---> Subject: Re: more GUI questions Mark: > >It seems that the slider-to-ugen mapping depends on where the slider is > >listed. When I moved the line of code which defined the slider, its > >variable and its controller mapping: > > >s=SliderView.new( w, Rect.newBy( 92, 16, 198, 19 ), "SliderView", 0, 0, 2, > >0.05, 'linear').mapToController(1,9); // standard deviation volume > > > >to the top of the list of sliders (since this one wound up being the top on > >the screen), the mapping changed, and none of my sliders worked, but were > >offset by one. Have I just gone to the Twilight Zone, or is there > >something known in this universe which could account for such activity? Iannos:> > One cannot answer accurately without seeing your code. But note > that View items are stored in the variable "views" of > a GUIWindow in the order in which they are created. If you need > to address View items individually later on in the code, it is > safer to assign them to named variables so you have > certain access to them. Mark: Not sure I follow. Didn't I assign the slider to a named variable? That "s=" part? ------------------------------ Date: Tue, 13 Oct 1998 11:03:31 -0600 From: James McCartney <---@---.---> Subject: Re: OrcScore playback rate? At 9:34 PM -0600 10/11/98, Mark Ballora wrote: >So I'm working with an OrcScore. >It so happens that my score is a file which is read -- I don't think that's >relevant to this question, but ... > >What I'd like to do is control the rate of playback, that is, the score >deltaTime, with a slider value. In other words, having a score file that >looks like this: > >#[ >[ControlIn.kr(w.at(0)), 0, 0.050895, 0.862154, "0h 0m"], >[ControlIn.kr(w.at(0)), 0, 0.065141, 0.829684, "0h 5m"], >[ControlIn.kr(w.at(0)), 0, 0.065251, 0.839669, "0h10m"], >... >] > >I get errors with this type of argument. What is the right way to do this? > >thanks -- Mark First, remove the '#' character. # builds a list at compile time, but it may only contain literals. Message sends like 'kr' or any other expressions are not literal values. Second you don't really want to create a ControlIn for each event, since you only want an instantaneous value of the slider. You could do something like the following: [ [w.at(0).value, ...], [w.at(0).value, ... Or even better would be to give the slider an action routine that sets the deltaTime. The action routine is called whenever the slider moves and is passed the view as an argument. var deltaTime = 0.5; ... w.at(0).action = { arg view; deltaTime = view.value; } ... [ [deltaTime, ...], --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 13 Oct 1998 11:06:03 -0600 From: James McCartney <---@---.---> Subject: Re: Audio Setup bug? At 8:38 AM -0600 10/10/98, Maurizio Giri wrote: >Hi, James, > >when I select the Audio Setup item, in the file menu (SC2d27), my PPC >8100/110 with Audiomedia II crashes (tried with system 7.5.1 and MacOs 8.1, >both with and without Digidesign Sound Drivers exstension installed) > >That's maybe because it is a Nubus computer? I am going to upload SC2d28 soon and it has some fixes for starting up audio for drivers that don't support certain features of the sound manager. Hopefully this will fix your problem. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 13 Oct 1998 11:15:17 -0600 From: James McCartney <---@---.---> Subject: Re: more GUI questions At 3:17 PM -0600 10/12/98, Mark Ballora wrote: >1) >When I use, say: > >.mapToController(3,9); > >after a slider definition, this means it's controller number 3, and what >does the second argument tell it? Iannis answered this: use command-Y to find out the arguments for any message selector. > >2) >I've been working on a GUI which displays a number of values. Despite my >careful initial planning, I have to make changes to the GUI along the way. >I would implement them by editing the GUI, copying the code to the >clipboard, and then comparing it to my original code. It became more >complicated as objects became defined by variables, and actions between >sliders and number boxes were defined, and the like. Is it at all >realistic to ask whether there is a way to save accompanying code when we >save GUI revisions to the clipboard? I may have a fix for this in the future, but not real soon. > >3) >It seems that the slider-to-ugen mapping depends on where the slider is >listed. Only if you refer to them by index. If you refer to them by a variable name, then there should not be a problem. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 14 Oct 1998 02:40:20 +1000 From: garth@creativeaccess.com.au (Garth Paine) Subject: Re: Disk Out >>Using the first Disk recording method described in the DiskOut.Help using >>DiskOut.ar with with file.endRecord I have successfully recorded to disk, >>then loaded >>the resulting soundfile into SoundHack, Peak etc. I did screw it up a >>couple of times intially because >>I left out endRecord. After correcting that, it works properly on the >>patches I've tried so far. Could you post the code for this as I have been having problems also, and mastering out to DAT and back in again is very time consuming. Cheers, Garth See information about my new immersive interactive sound installation at http://creativeaccess.com.au/~garth/Map1/MaP1_Sound_Installation.html << >< >> . Composer, Sound Designer .. Interactives Designer ... Interactive Installation Artist .... Exhibition Consultant http://www.creativeaccess.com.au/~garth << >< >> ------------------------------ Date: Tue, 13 Oct 1998 14:03:12 -0500 From: Mark Ballora <---@---.---> Subject: Re: more GUI questions >>3) >>It seems that the slider-to-ugen mapping depends on where the slider is >>listed. > >Only if you refer to them by index. If you refer to them by a variable >name, then there should not be a problem. > Yes, this is what I want to do. So, I've got a declaration like d=SliderView.new( w, Rect.newBy( 92, 143, 198, 19 ), "SliderView", 0, 0, 10, 0, 'linear').mapToController(4,9); // global mean or d=SliderView.new( w, Rect.newBy( 92, 143, 198, 19 ), "SliderView", 0, 0, 10, 0, 'linear'); // global mean How do I refer to the values by variable name? Neither of these works: Resonz.ar(LFNoise2.ar(1000,0.25), 1/globalmean*200, 0.005, d.value) Resonz.ar(LFNoise2.ar(1000,0.25), 1/globalmean*200, 0.005, ControlIn.kr(d.value)) I've looked thru the menus and .helps and didn't find the answer. If I've missed the explanation, kindly refer me to the appropriate section. Cheers -- Mark Ballora ------------------------------ Date: Tue, 13 Oct 1998 13:41:53 -0600 From: James McCartney <---@---.---> Subject: Re: more GUI questions At 1:03 PM -0600 10/13/98, Mark Ballora wrote: >>>3) >>>It seems that the slider-to-ugen mapping depends on where the slider is >>>listed. >> >>Only if you refer to them by index. If you refer to them by a variable >>name, then there should not be a problem. >> >Yes, this is what I want to do. >So, I've got a declaration like > >d=SliderView.new( w, Rect.newBy( 92, 143, 198, 19 ), "SliderView", 0, 0, >10, 0, 'linear').mapToController(4,9); // global mean > >or > >d=SliderView.new( w, Rect.newBy( 92, 143, 198, 19 ), "SliderView", 0, 0, >10, 0, 'linear'); // global mean > >How do I refer to the values by variable name? Neither of these works: > >Resonz.ar(LFNoise2.ar(1000,0.25), 1/globalmean*200, 0.005, d.value) >Resonz.ar(LFNoise2.ar(1000,0.25), 1/globalmean*200, 0.005, >ControlIn.kr(d.value)) You don't want to refer to the value, but to the control. You want ControlIn.kr(d) or more briefly: d.kr d.value gets the value RIGHT NOW, meaning right now when you are creating this Resonz, so it never changes. ControlIn.kr(d.value) is a ControlIn wrapped around a constant value. So write: Resonz.ar(LFNoise2.ar(1000,0.25), 1/globalmean*200, 0.005, d.kr) For the delta time example given previously, you do not want a continuous value, but instead the current value at the start of an event. So in that case you want to poll the value at that instant. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 13 Oct 1998 14:02:12 -0600 From: James McCartney <---@---.---> Subject: Re: OrcScore playback rate? At 11:03 AM -0600 10/13/98, James McCartney wrote: Oops! The example I gave does not work. >Or even better would be to give the slider an action routine that >sets the deltaTime. The action routine is called whenever the slider >moves and is passed the view as an argument. > >var deltaTime = 0.5; >[etc..] The easiest way to do this is to write your own class that lets you change the playback rate. Then just pass a ControlIn object as the timeScale argument. OrcScore { // orchestra is an array (or dictionary) of instrument functions. // score is an array of arrays of parameters to be passed to the instrument function. *ar { arg orchestra, score, argNumChannels = 1, argNextTime = 1.0, argMaxRepeats = 1, timeScale = 1.0, mul = 1.0, add = 0.0; var maxrepeats; maxrepeats = if (argMaxRepeats.notNil, { argMaxRepeats * score.size },{ nil }); ^Spawn.ar( { arg spawn, eventCount, synth; var pfields, instrument; pfields = score.wrapAt(eventCount); spawn.nextTime = pfields.at(0) * timeScale.poll; instrument = orchestra.at(pfields.at(1)); instrument.valueArray(spawn, eventCount, synth, pfields); }, argNumChannels, argNextTime, maxrepeats, mul, add ) } } Also in Object.sc a method needs to be added: poll { ^this.value } I will probably make both of the above changes to the class library. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Tue, 13 Oct 1998 19:37:36 -0500 From: Mark Ballora <---@---.---> Subject: Re: OrcScore playback rate? Gulp -- could ya hold my hand just a bit with the below (I think the problem is I don't know SmallTalk, tho C and Lisp are friends). Just what do I do? Paste this into an existing file? > >The easiest way to do this is to write your own class that lets you >change the playback rate. Then just pass a ControlIn object as the timeScale >argument. > >OrcScore { > > // orchestra is an array (or dictionary) of instrument functions. > // score is an array of arrays of parameters to be passed to the >instrument function. > *ar { arg orchestra, score, argNumChannels = 1, argNextTime = 1.0, >argMaxRepeats = 1, > timeScale = 1.0, mul = 1.0, add = 0.0; > > var maxrepeats; > > maxrepeats = if (argMaxRepeats.notNil, { argMaxRepeats * >score.size},{ nil }); > ^Spawn.ar( > { arg spawn, eventCount, synth; > var pfields, instrument; > pfields = score.wrapAt(eventCount); > spawn.nextTime = pfields.at(0) * >timeScale.poll; > instrument = orchestra.at(pfields.at(1)); > instrument.valueArray(spawn, eventCount, >synth, pfields); > }, > argNumChannels, argNextTime, maxrepeats, mul, add > ) > } >} > >Also in Object.sc a method needs to be added: > >poll { ^this.value } > OK -- this I can manage. > > >I will probably make both of the above changes to the class library. Is that the short answer to my first question? Here's another question, which I think may relate to my first question: I don't quite grok the nature/use of .sc files. For example, Zannos Lib. I read the directions: Use the "Choose new Library" command in the Lang menu and select this folder to compile. Once compiled you can execute this expression for a demo: SoundManager.default But nothing happens, via expression or command key. Clearly, I'm missing something. I choose the new Library menu item, then the Zannos Lib folder, right? Thanks -- Mark Ballora ------------------------------ Date: Wed, 14 Oct 1998 13:09:00 -0600 From: James McCartney <---@---.---> Subject: Re: Disk Out At 10:40 AM -0600 10/13/98, Garth Paine wrote: >>>Using the first Disk recording method described in the DiskOut.Help using >>>DiskOut.ar with with file.endRecord I have successfully recorded to disk, >>>then loaded >>>the resulting soundfile into SoundHack, Peak etc. I did screw it up a >>>couple of times intially because >>>I left out endRecord. After correcting that, it works properly on the >>>patches I've tried so far. > >Could you post the code for this as I have been having problems also, and >mastering out to DAT and back in again is very time consuming. The easy way to record your output is to use the 'record' method instead of 'play': Synth.record({ PinkNoise.ar(0.2) }, 10, "rectest"); which records 10 seconds of pink noise to the file "rectest". The default format is AIFF 16 bit signed. This calls DiskOut, endRecord, etc for you. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Thu, 15 Oct 1998 16:46:51 -0700 From: Mark Polishook <---@---.---> Subject: amp and freq modulation How would one implement simple amplitude modulation and/or frequency modulation as described in Dodge (and shown there with UG diagrams). I know that this is probably very elementary (and I can set this stuff up in Csound) but I somehow seem to be missing something in my understanding of how to do it in SC. THANKS IN ADVANCE! - -mark ------------------------------ Date: Thu, 15 Oct 1998 20:10:04 -0600 From: James McCartney <---@---.---> Subject: Re: amp and freq modulation At 5:46 PM -0600 10/15/98, Mark Polishook wrote: >How would one implement simple amplitude modulation and/or frequency >modulation as described in Dodge (and shown there with UG diagrams). > >I know that this is probably very elementary (and I can set this stuff >up in Csound) but I somehow seem to be missing something in my >understanding of how to do it in SC. Amplitude modulation is just multiplication. Most ugens have 'mul' inputs which do multiplication of the signal. Besides that there are a slew of ugens that do other amplitude modulations variants: ring1..ring4, sumsqr, difsqr, sqrsum, sqrdif. There are examples for all of these in their help files. I really greatly prefer phase modulation over FM. The Yamaha "FM" chips are actually doing phase modulation internally. Phase modulation will produce the exact same waveform as frequency modulation. The equivalent modulator for PM is the integral of the corresponding FM modulator. The integral of a sinusoid is another sinusoid, so this is trivial. The advantages of PM are two: 1) The index of modulation does not depend on the frequency of the carrier. The modulation index is simply the amplitude of the modulator. This simplifies patches. 2) FM can produce a DC offset. If this wave is then used as an FM input to another oscillator, that DC offset will shift the fundamental frequency. PM does not have this problem, since a DC offset only causes a phase shift. If you look at the help files for Osc, there are FM and PM examples there. Also there is a PMOsc which implements a simple phase modulation pair. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Thu, 15 Oct 1998 19:19:42 -0700 From: Mark Polishook <---@---.---> Subject: Re: amp and freq modulation Jim, Thanks for the helpful explanation. Could you also say a few words about ADD? Mark > At 5:46 PM -0600 10/15/98, Mark Polishook wrote: > >How would one implement simple amplitude modulation and/or frequency > >modulation as described in Dodge (and shown there with UG diagrams). > > > >I know that this is probably very elementary (and I can set this > stuff > >up in Csound) but I somehow seem to be missing something in my > >understanding of how to do it in SC. > > Amplitude modulation is just multiplication. Most ugens have 'mul' > inputs which do multiplication of the signal. Besides that there are > a slew of ugens that do other amplitude modulations variants: > ring1..ring4, sumsqr, difsqr, sqrsum, sqrdif. There are examples > for all of these in their help files. > > I really greatly prefer phase modulation over FM. The Yamaha "FM" > chips are actually doing phase modulation internally. > Phase modulation will produce the exact same waveform as frequency > modulation. The equivalent modulator for PM is the integral of the > corresponding FM modulator. The integral of a sinusoid is another > sinusoid, so this is trivial. The advantages of PM are two: > 1) The index of modulation does not depend on the frequency of the > carrier. The modulation index is simply the amplitude of the > modulator. > This simplifies patches. > 2) FM can produce a DC offset. If this wave is then used as an FM > input to > another oscillator, that DC offset will shift the fundamental > frequency. > PM does not have this problem, since a DC offset only causes a phase > shift. > > If you look at the help files for Osc, there are FM and PM examples > there. > Also there is a PMOsc which implements a simple phase modulation pair. > > --- james mccartney james@audiosynth.com > http://www.audiosynth.com > If you have a PowerMac check out SuperCollider2, a real time synth > program: > - -- * * * * * * * * Mark Polishook Assistant Professor of Composition Music Department Central Washington University Ellensburg, WA 98926 tel.: 509-963-1245 fax: 509-963-1239 e-mail: polishoo@cwu.edu http://www.cwu.edu/~music/composition ------------------------------ Date: Fri, 16 Oct 1998 13:57:10 +0100 From: finer@easynet.co.uk Subject: sound in and out Hello, Now running SuperCollider 2.0d27 on os 8.1 on a G3 through a 1212 card I'm finding that sound carrys on regardless - that is if I send sound through one of the example 5 patches (for example) the untreated sound carrys on along side the treated sound. I'm not sure if this is bad routing of audio through the 1212 (though the same behaviour happens if I use sound manager), os 8.1 or a bug. Hope there's an easy fix. Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ Date: Fri, 16 Oct 1998 09:55:29 -0500 From: Ned Bouhalassa <---@---.---> Subject: Unsubscribing Sorry to be a pain but I've misplaced the instructions on how to unsubscribe from this list - can someone email me the info? ned@cam.org ------------------------------ Date: Fri, 16 Oct 1998 09:28:12 -0600 From: James McCartney <---@---.---> Subject: Re: sound in and out At 6:57 AM -0600 10/16/98, finer@easynet.co.uk wrote: >Hello, > >Now running SuperCollider 2.0d27 on os 8.1 on a G3 through a 1212 card I'm >finding that sound carrys on regardless - that is if I send sound through >one of the example 5 patches (for example) the untreated sound carrys on >along side the treated sound. >I'm not sure if this is bad routing of audio through the 1212 (though the >same behaviour happens if I use sound manager), os 8.1 or a bug. >Hope there's an easy fix. What sound source are you using? On some G3 models apparently apple decided that the CD always routes through to the output. You can't turn it off. It sucks. Their idea I think was that users don't understand what is going on if they put in a CD and don't hear it, so they made it impossible to turn off. If you are not using a CD, try turning off the automatic routings in the Korg utility software. Does that help? --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 16 Oct 1998 13:41:51 +0000 From: mary <---@---.---> Subject: Audio Out James Where is my syntax error here?. Is there any chance of you making a general command for audio save. like there was in SC1 which would make using SC a little easier for those of us who want to use SC as a tool for making music. Also do you have plans to support the ProTools ProjectII card or AudiomediaIII. Thank you, Mary ( // resonators tuned in a harmonic series with pitch ratios from a just scale var p; p = 12; // number of overtones Synth.record({ XFadeTexture.ar({ var noise, spec, freq, resFreqs; noise = BrownNoise.ar(0.4); // a list representing a just diatonic scale expressed as ratios. // one value is chosen at random and multiplied by a 120 Hz fundamental freq = #[ 1.0, 1.125, 1.25, 1.333, 1.5, 1.667, 1.875, 2.0, 2.25, 2.5, 2.667, 3.0, 3.333, 3.75, 4.0 ].choose * 120.0; spec = Array.fill(2, { `[ // filter bank specification resFreqs = Array.ramp(p, freq, freq ) + Array.fill(p, { 0.5.rand2 }), Array.fill(p, { arg i; 3/(i+1) }), Array.fill(p, { 0.5 + 4.0.rand } ) ], 10, "test" }); Klank.ar(spec, noise) }, 1, 7, 2) })) ------------------------------ Date: Fri, 16 Oct 1998 13:02:33 -0600 From: James McCartney <---@---.---> Subject: Re: Audio Out At 7:41 AM -0600 10/16/98, mary wrote: >James > >Where is my syntax error here?. You do not provide the record time or file format arguments. I have no answer for the others at present. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 16 Oct 1998 18:39:41 +0100 From: finer@easynet.co.uk Subject: Playbuf and sound in /out Thanks for the reply - the sound source I'm using is a line in- so a bit of guitar for example - not the internal cd drive. I'll try what you suggested and see what happens. In the meantime a question re Playbuf. I'm trying to loop a section of a long piece of audio. The loop is 5 seconds long. I calculate the start and end points in terms of samples. I've a 5 second long envelope - Osc1.ar(table,5) - in the * slot of Playbuf. The loop point is set to 0 but I'd have thought that if the end point minus start point = 5 seconds and the env. = 5 seconds it wouldn't try and loop anyway. But it does. It plays a bit as it should and then shoots back to 0. I'll send the code if you like but maybe it's something obvious. Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ Date: Fri, 16 Oct 1998 19:27:07 +0100 From: finer@easynet.co.uk Subject: re Playbuf and sound in / out Ooooops - I've solved the playbuf part ! Please ignore . Still trying to figure out the 1212 problem. Cheers, Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ Date: Fri, 16 Oct 1998 20:21:33 +0100 From: finer@easynet.co.uk Subject: Korg 1212 Hello again, I've tried all permutations known to man - mute all, all through etc etc and regardless the sound in - (analogue input of the 1212 into SC) - plays on. I can even play a cd in from an external cd and have it play along with an SC patch. Not that I want to at all. I've tried the same thing on my laptop ie through sound manager and it behaves, ie you only hear sound in when you start a patch with AudioIn in it. Or when you choose Audio Setup. The opposite happens on the G3 - selecting Audio Setup is the only thing that shuts up the sound in. So it's certainly not a SC problem. But that's a bit odd in itself; the contrary behaviour. Could it be an os 8.1 problem - my laptop is still os 7.5 or 7.6 or something, anyway its not os 8 + ? Or a system problem - I know we're into korg helpline territory here but the manual says that if you choose Built In sound in/out in the Sound control panel then in the korg utility the sound manager routing parameers will be greyed out - they're not. I'd love to hear from anyone with a similar setup to see if they've the same problems or any advice as to how to solve the damn thing. Thamks, jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ Date: Fri, 16 Oct 1998 15:43:16 +0000 From: mary <---@---.---> Subject: Re: Audio Out James McCartney wrote: > You do not provide the record time or file format arguments. > James I do provide them as per your example. Could you please show me how > to write them correctly for this example. ], 10, "test" Thanks for your prompt reply, Mary ------------------------------ Date: Fri, 16 Oct 1998 23:58:39 +0100 From: finer@easynet.co.uk Subject: Korg 1212 / OS 8 Part 2 : Having reactivated my old 8200 running os 8.1 I found that that too exhibits the behaviuor described in last post "Korg 1212" which would seem to suggest that somethings afoot in 8.1 re routing of sound. Surprised that there's been no other mention. Mystified, Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ Date: Fri, 16 Oct 1998 19:23:32 -0600 From: James McCartney <---@---.---> Subject: Re: Korg 1212 / OS 8 After having talked with Korg I've figured out the problem, it is mine. A fix will be in the next version. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 16 Oct 1998 20:38:24 -0700 From: "Thomas Miley" <---@---.---> Subject: Re: Audio Out > > Also do you have plans to support the ProTools ProjectII card or > AudiomediaIII. The AudioMediaIII is supported by Digidesign - you can download their extensions and select that card as the default out... tm ------------------------------ Date: Sat, 17 Oct 1998 09:21:31 +0100 From: finer@easynet.co.uk Subject: Re: Korg 1212 / OS 8 - Good News >After having talked with Korg I've figured out the problem, it is mine. >A fix will be in the next version. This is wonderful news - I'm not mad after all ! I'm still worried though by the possibility that os8 plays a part in all this, in that running SC2 on a machine WITHOUT a 1212 card, ie through Sound Manager, the same thing happened. [ incoming sound is audible before, during and after running a patch such as : { AudioIn.ar([1,2]) }.play; Thus in a more complicated patch to process audio in real time I also hear the dry sound. This never happened on the same machine with os 7.5 where all incoming audio stopped the moment SC2 booted up, only to be heard again when running a patch with AudioIn. ] Sorry to bore on about this. Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ Date: Mon, 19 Oct 1998 12:21:59 -0400 (EDT) From: David Crandall <---@---.---> Subject: Re: NuBus stuff (was Re: Audiomedia II Info.) (sorry for dupe msgs) On Mon, 19 Oct 1998, Anthony Ballo wrote: > David Crandall wrote: > > Just spoke to a friend who is a Mac doctor and said that the 8100 with a > > G3 upgrade turns into one hell of a nice computer. Anyone tried sound on > > such a beast? > > You know, I have been contemplating just that - getting one of the > G3 borads for my 8100. I have seen two companies : Sonnus and Newer > Tech's boards in the magazines and was wondering if anyone else > has done it. As far as my stock 8100, it does audio just fine. More to the point, does supercollider/ Max/MSP work on any NuBus cards, incl AM II? dc ------------------------------ Date: Mon, 19 Oct 1998 15:05:29 -0600 From: James McCartney <---@---.---> Subject: Fwd: from laurson@amadeus.siba.fi (Mikael Laurson) >I have the following questions concerning SC2d27 f: > >1) It seems that the Synth.play play method does not accept the blockSize >argument. >(Synth.play works though if the blockSize is given inside the >ugenGraphFunction : > synth.blockSize = 32;) The docs are wrong. There IS NO blockSize argument for Synth.play. You set it in the graph function as you mention. Look in the source code Synth.sc for the correct arguments, or use cmd-Y. > >2) Is there a limit how large scores SC2 can handle? In my case > things work OK until I increase the number of events up to > about 5000 notes. After that I get the following error message: >" * ERROR: Command line parse failed >ERROR: >Message '++' not understood." > >when trying to load the score. > >I load my score with the following code > > myscore = thisProcess.interpreter.executeFile(":score"); > > where the score has the following format: > >#[ >[0.0,'sine',0.09,0.47,261.63,1.0,-1.0], >etc ...... >] I'll have a look. How large is your SC2 "Get Info" memory size? Does boosting it help? >3) What is the best way to add new methods to SC kernel classes (such as >Ugen, Array)? >Currently I add my new methods directly by changing the original source code. >Is there another way to do the same thing (i.e. without having to touch the >original >source code)? In version SC2d28 files with the same name in outer folders will mask those below, so you can override the common class files without changing them. This is still not a complete solution, since you are still subject to changing your files when a new version of the class library comes out. > >4) Sometimes it would be handy to define functions that would have global names. >It seems that in SC2 you can define functions only locally. (in SC1 you >were able >to define global functions). Currently the only way I know to solve this >problem >is to define new methods for numbers, arrays, etc. but this rather >inconvenient as I have >to change the source code (see question 3 above). Classes are the only global values in SC and it is likely to remain that way. classvars in Object are essentially globals, but you don't want to be adding your own stuff there usually. If you want your own global functions, you can define your own class to hold them. This doesn't require changing the common classes. MyFuncs { *myfunc1 { arg a, b, c; } *myfunc2 { arg a, b, c; } *myfunc3 { arg a, b, c; } } - ---- MyFuncs.myfunc1(1, 2, 3); - --- Another way is to use the yet to be documented Environment class. Using Environments you can do something like this. In your Main::startUp method you set a global environment. This will be built in a future version of SC2, but it works now. Main : Process { startUp { currentEnvironment = Environment.new } ... Then you can do something like : ~myfunc1 = { arg a, b, c; ... }; The '~' character indicates a property variable. It gets defined in a dictionary contained in the currentEnvironment. You can push Environments to override values in sub scopes. The following will post : nil 123 456 123 ( ~myVar.postln; // property not defined, prints nil ~myVar = 123; // define a value for the property Environment.push({ ~myVar.postln; // outer value still in effect, prints 123 ~myVar = 456; // override value in this scope ~myVar.postln; // new value in effect, prints 456 }); // when this scope is exited, the old value "comes back" ~myVar.postln; // prints 123 ) The thing to be careful about with Environments is that you can wind up keeping around garbage in the dictionary unless you clear it out, especially if your code crashes inside a scope. It would be nice to have exceptions to take care of this, but that is not there at present. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 19 Oct 1998 19:20:12 -0500 From: Mark Ballora <---@---.---> Subject: Re: Fwd: from laurson@amadeus.siba.fi (Mikael Laurson) I was about to ask the same question. I have a huge score file, and my patch coughs at line 4997. Using a shorter file (4995 lines), it runs. Boosting the memory size didn't change how much it read before it choked. Is there a way to take the score file in smaller bytes, rather than trying to swallow the whole thing at once? I believe this is what my C score-prep routines do, no? (That is to say, using fscanf() to read one line at a time, and fprintf() to send the processed values out to the score file.) >> Mikael Laurson: >>2) Is there a limit how large scores SC2 can handle? In my case >> things work OK until I increase the number of events up to >> about 5000 notes. After that I get the following error message: >>" * ERROR: Command line parse failed >>ERROR: >>Message '++' not understood." >> >>when trying to load the score. >> >>I load my score with the following code >> >> myscore = thisProcess.interpreter.executeFile(":score"); >> >> where the score has the following format: >> >>#[ >>[0.0,'sine',0.09,0.47,261.63,1.0,-1.0], >>etc ...... >>] >James: >I'll have a look. How large is your SC2 "Get Info" memory size? >Does boosting it help? ------------------------------ Date: Mon, 19 Oct 1998 20:49:18 -0700 From: csz@wco.com (Carter Scholz) Subject: Re: Fwd: from laurson@amadeus.siba.fi (Mikael Laurson) >I was about to ask the same question. I have a huge score file, and my >patch coughs at line 4997. Using a shorter file (4995 lines), it runs. >Boosting the memory size didn't change how much it read before it choked. > >Is there a way to take the score file in smaller bytes, rather than trying >to swallow the whole thing at once? I believe this is what my C score-prep >routines do, no? (That is to say, using fscanf() to read one line at a >time, and fprintf() to send the processed values out to the score file.) > > >>James: >>I'll have a look. How large is your SC2 "Get Info" memory size? >>Does boosting it help? I'm having the same problem. My score chokes at about 3000 lines. Increasing memory size doesn't change anything. ------------------------------ Date: Tue, 20 Oct 1998 14:16:16 +0100 From: finer@easynet.co.uk Subject: click clack/grain Hello , Below is a simple grain patch for sound files that begs a couple of questions: 1. Why does it sometimes play with a horrible click and sometimes not ? I've tried it on different machines and with different files and the same thing happens. 2. Is there any harm to be done by setting the loopstart point in Playbuf to the same value as the offset, ie to make it loop around the whole sample ? - ---------------------------------------------------------------------------- - ------- ( // simple grain var filename, sound, signal,l,tbl,w; w = GUIWindow.new("panel", Rect.newBy( 482, 495, 322, 111)); NumericalView.new( w, Rect.newBy( 15, 16, 64, 20 ), "NumericalView", 0.1, 0.01, 1, 0.01, 'linear'); NumericalView.new( w, Rect.newBy( 15, 40, 64, 20 ), "NumericalView", 0.08, 0.01, 1, 0.01, 'linear'); NumericalView.new( w, Rect.newBy( 15, 64, 64, 20 ), "NumericalView", 300, 50, 1000, 1, 'linear'); StringView.new( w, Rect.newBy( 92, 16, 128, 20 ), "grain duration"); StringView.new( w, Rect.newBy( 92, 40, 128, 20 ), "grain density"); StringView.new( w, Rect.newBy( 92, 64, 128, 20 ), "speed"); filename = ":Sounds:floating_1"; sound = SoundFile.new; sound.read(filename); signal = sound.data.at(0); l = signal.size; tbl = Signal.welchWindow(512); Synth.scope( {Spawn.ar({arg spawn,i,synth; var dur,start; dur = w.at(0).value; start = (w.at(2).value*i).floor%l; spawn.nextTime = w.at(1).value; Pan2.ar( PlayBuf.ar(signal, sound.sampleRate, 1, start, start, l, Osc1.ar(tbl,dur)), SinOsc.ar(1/dur,0,0.5,0.5)) },2) }); w.close; ) - ---------------------------------------------------------------------------- - --------------- Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html ------------------------------ End of sc-users-digest V1 #11 *****************************