From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #71 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 Saturday, November 6 1999 Volume 01 : Number 071 ---------------------------------------------------------------------- Date: Mon, 01 Nov 1999 20:24:17 -0500 From: Mic Berends <---@---.---> Subject: Re: VxPocket support? Landon - did you get that "uneven buffers size" / simultaneous i/o problem sorted? i didn't want to reply to Mark's post being uninformed... Cheers, Mic. Landon Rose wrote: > > James- > been trying to configure the new VXPocket PC card to SC 2.1.8( on a > PB2400). The A/D converter spec says 24bit 48k, though the VX control panel > lists 44.1k and 32k as other options. > Also, I sometimes get this message in the start-up information > window in SC > "input and output buffers not the same size?? 2016 512 > set to: 512 512" > only question I have ( besides "how do I make this thing work?") > for you is when the start-up configuration window says > Prefs : > hardware = apple > sampleRate = 44100 > clockSource = 0 > bufMultiple = 1 > useSoundInput = 1 > defaultBlockSize = 64 > > SC's reading what it sees on board this computer and it doesn't see the VX? > > I do get sound- high freq pulse waves like Morse code. > > I gave the SC address to: > Neil Glassman, President > Digigram Inc. > glassman@digigram.com > http://www.digigram.com > > He asked about SC. > Thanks > > Landon - -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>v ^ Mic Berends : in the end, : Tomorrow Maximum v ^ MINDESIGN limited : there can be : Heaven Kissing EP v ^ http://www.mindesign.com/ : only one. : available now. v ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ------------------------------ Date: Mon, 01 Nov 1999 20:36:12 -0700 From: "David Cottle" <---@---.---> Subject: Reading files at interupt Hi, I got an error "Operation cannot be performed at interrupt level." when trying to read items from a file for playback. Am I to understand that I can't do playback while reading values from files? I'm doing a section on music driven by non-musical criteria, and one method is reading text from a file and translating characters into musical parameters. Is there a better way to do this? ------------------------------ Date: Mon, 1 Nov 1999 22:24:46 -0600 (EST) From: "AUDIOSYNTH.COM" <---@---.---> Subject: Re: Reading files at interupt You can read from a File but only from within a Task. The reason is that file reading is an asynchronous event requiring a return value. If you were to wait until the value had been read, synthesis could not continue and you would have a glitch. Thus you need a separate thread which is what a Task is. See the Task help file. On Mon, 1 Nov 1999, David Cottle wrote: > Hi, > > I got an error "Operation cannot be performed at interrupt level." when > trying to read items from a file for playback. Am I to understand that I > can't do playback while reading values from files? > > I'm doing a section on music driven by non-musical criteria, and one method > is reading text from a file and translating characters into musical > parameters. Is there a better way to do this? > ------------------------------ Date: Tue, 02 Nov 1999 09:51:46 +0000 From: Martin Robinson <---@---.---> Subject: Re: iMac? (Again) SC seems to crash when I close the 'Audio Setup...' dialog on my iMac (333MHz, 64MB, OS8.6), no polite error messages either - just dies! I only need to do this to stop the play-through from CD (by opening Audio Setup and closing it again). Which makes me wonder whether it's possible to stop play-through in code [or what the chances are of having it implemented? :)]. >>>>>>Martin Robinson :: (Ex)tractor :: && ________ >>><<<_sonicArts.at(middlesexUniversity.london.uk); ______ <><><>__this.liveElectronics.interFaces.diffusion ____ >><<>>___extractor.artistsInResidence.at(breweryArtsCentre) ___ >>><<>____kendal :: 19 - 20 - 21 :: november :: 1 9 9 9 __ || ------------------------------ Date: Tue, 2 Nov 1999 13:31:26 -0800 (PST) From: "Alex L. Potts" <---@---.---> Subject: help with modular window control? can anyone help me with this? i'm trying to spawn seperate gui windows from one main control window that will act as individual controls for seperate synthesis functions. an example would be several Pause ugens added together, but each of their ugen functions would be controlled by an individual gui panel. i'm able to spawn the windows and the first one works. however, the subsequent windows do not. here is some simplified code. any help will be appreciated: ( var w1, b1; w1 = GUIWindow.new("main panel", Rect.newBy(168, 80, 205, 475)) .backColor_(rgb(208,108,11)); b1 = CheckBoxView.new( w1, Rect.newBy(14, 18, 128, 20), "1", 0, 0, 1, 0, 'linear') .backColor_(rgb(230,232,149)); {arg synth; var f, w2, b1s1, b1c1; f = { w2 = GUIWindow.new("triggered panel", Rect.newBy(520, 88, 312, 191)).backColor_(rgb(222,142,115)); w2.backColor = Color.new(128 + 128.rand, 128 + 128.rand, 128 + 128.rand); b1s1 = SliderView.new( w2, Rect.newBy(14, 20, 31, 140), "SliderView", 0.2, 0, 1, 0, 'linear'); b1c1 = CheckBoxView.new( w2, Rect.newBy(164, 21, 128, 20), "CheckBoxView", 0, 0, 1, 0, 'linear'); b1.action = { w2.close; if( (b1.value > 0.5), {f.value }, {w2.close}) }; }; f.value; Pause.ar({ PinkNoise.ar(b1s1.kr(0))}, b1c1.kr(0)) }.play; GUIWindow.closeAll; ) ------------------------------ Date: Wed, 3 Nov 1999 10:05:23 +0100 From: rkuivila@mail.wesleyan.edu (Ron Kuivila) Subject: a bug in the dependancy mechanism Hi James, The dependancy mechanism doesn't update all dependants when their number exceeds the number of places initially allocated in the addDependant. The following appears to fix things: *changed { arg theChanger; var theDependants, yupyup; theDependants = this.dependants; yupyup = theDependants.copy; yupyup.do({ arg item,i; item.update(this, theChanger); }); } Perhaps it is another mysterious optimization bug. RJK ------------------------------ Date: Wed, 3 Nov 1999 05:41:20 -0500 (EST) From: Matthew Rogalsky <---@---.---> Subject: query re: misconception Hello James & all Having read & understood the "misconception" clarification, I'm trying to apply that to some code that will check if Wacom pen has actually been applied to the surface, before its location is updated. I am getting the TabletPressure boolean, all right, but it's not clear to me how that value should be tested in my if-then which follows. Here is what I'm doing, which doesn't work: - ----- pressureTest = TabletPressure.kr(0.0,1.0,'linear',0,0) > 0.0; (pressureTest == 1).if ( { bigX = TabletX.kr(0, tabletwidth,'linear',0,0); bigY = TabletY.kr(0, tabletheight,'linear',0,0); }, { // else don't update location } ); - ---- This is within a synth. The "misconception" file was helpful but it doesn't contain an example of using the boolean test result in an if-then construct. thanks for any help mattr ------------------------------ Date: Wed, 03 Nov 1999 11:01:48 +0000 From: Martin Robinson <---@---.---> Subject: Re: help with modular window control? Alex, Make b1s1 and b1c1 Plugs with initial source 0. Then set the sources of these Plugs inside your function f to the slider and check-box respectively. This way the Plugs are repatched for each 'spawned' window. Otherwise two Plugs are created in the last line of your ugenGraphFunc: Pause.ar({ PinkNoise.ar(b1s1.kr(0))}, b1c1.kr(0)) and the sources of these Plugs are the first slider and check-box that are 'spawned'. Reassigning b1s1 and b1c1 to different sliders and check-boxes inside function f doesn't in turn change the sources of these Plugs. Nice colours :) ( var w1, b1; w1 = GUIWindow.new("main panel", Rect.newBy(168, 80, 205, 475)) .backColor_(rgb(208,108,11)); b1 = CheckBoxView.new( w1, Rect.newBy(14, 18, 128, 20), "1", 0, 0, 1, 0, 'linear') .backColor_(rgb(230,232,149)); Synth.play({ arg synth; var f, w2, b1s1, b1c1; b1s1 = Plug.kr(0); b1c1 = Plug.kr(0); f = { w2 = GUIWindow.new("triggered panel", Rect.newBy(520, 88, 312, 191)) .backColor_(rgb(222,142,115)); w2.backColor = Color.new(128 + 128.rand, 128 + 128.rand, 128 + 128.rand); b1s1.source_(SliderView.new( w2, Rect.newBy(14, 20, 31, 140), "SliderView", 0.2, 0, 1, 0, 'linear') ); b1c1.source_(CheckBoxView.new( w2, Rect.newBy(164, 21, 128, 20), "CheckBoxView", 0, 0, 1, 0, 'linear') ); b1.action = { w2.close; if( (b1.value > 0.5), { f.value }, { w2.close } ) }; }; f.value; Pause.ar({ PinkNoise.ar(b1s1) }, b1c1) }); GUIWindow.closeAll; ) Martin. >>>>>>Martin Robinson :: (Ex)tractor :: && ________ >>><<<_sonicArts.at(middlesexUniversity.london.uk); ______ <><><>__this.liveElectronics.interFaces.diffusion ____ >><<>>___extractor.artistsInResidence.at(breweryArtsCentre) ___ >>><<>____kendal :: 19 - 20 - 21 :: november :: 1 9 9 9 __ || ------------------------------ Date: Wed, 3 Nov 1999 11:22:46 -0500 (EST) From: David Crandall <---@---.---> Subject: Mixer/mixerplayer I've been off the list for a couple of months, so please excuse if this has been covered. I haven't found anything about it in my old posts. Did I overlook something obvious, or is there documentation of the Mixer and MixerPlayer somewhere? I've found the MixerPlayer.sc file but at this point on the learning curve, need a little help in understanding it. specifically, how does one create the library for loading into the mixer, and are there certain processes that won't work with it (I'm thinking realtime processing, FFT, etc.). Assuming that only one RT process could access the inputs at a time, will sliding the volume to 0 make the input available to another process (I notice the CPU usage drops when the volume is 0, does that mean the process is paused or suspended somehow)? thanks in advance, dc ------------------------------ Date: Wed, 3 Nov 1999 15:45:43 -0800 (PST) From: "Alex L. Potts" <---@---.---> Subject: Re: help with modular window control? martin, thanks a lot for the info. on Plugs. works great. alex ------------------------------ Date: Thu, 04 Nov 1999 10:10:10 +0100 From: Julian Rohrhuber <---@---.---> Subject: Re: advanced new be technique. oktoverfest. > // I tried it again, it works for me like this: > > ( > > s = Signal.newClear(512); > > t = Array.fill(512, { arg i; i/512 }); > > s.waveFill({ arg x, i; t.wrapAt(x.asInteger)}, 0, 512); // t is an array; > > s.plot; > > ) > > yes, that's it, except for the part to get the data into negative land. ( s = Signal.newClear(512); t = Array.fill(512, { arg i; i/512 }); s.waveFill({ arg x, i; t.wrapAt(x.asInteger)-1 }, 0, 512); // t is an array; { Osc.ar(s.asWavetable, 100)}.play; ) works for me... Cheers, Julian ------------------------------ Date: Thu, 04 Nov 1999 11:17:46 +0000 From: Martin Robinson <---@---.---> Subject: Re: query re: misconception Matt, hello again... Gate does what you want. I haven't got my Wacom to hand but here's an example with mouse control. Mouse x (mx) controls amplitude, mouse y (my) control frequency. However, using Gate 'my' only updates when 'mx' is less than 0.5. ( Synth.play({ var mx, my; mx = MouseX.kr(0, 1); my = MouseY.kr(100, 1000, 'exponential'); my = Gate.kr(my, mx<0.5); SinOsc.ar(my, 0, mx); }) ) or Latch only updates when you cross from >0.5 to <0.5: ( Synth.play({ var mx, my; mx = MouseX.kr(0, 1); my = MouseY.kr(100, 1000, 'exponential'); my = Latch.kr(my, mx<0.5); SinOsc.ar(my, 0, mx); }) ) It should be straight forward to change this for what you want. Regards, Martin >>>>>>Martin Robinson :: (Ex)tractor :: && ________ >>><<<_sonicArts.at(middlesexUniversity.london.uk); ______ <><><>__this.liveElectronics.interFaces.diffusion ____ >><<>>___extractor.artistsInResidence.at(breweryArtsCentre) ___ >>><<>____kendal :: 19 - 20 - 21 :: november :: 1 9 9 9 __ || ------------------------------ Date: Fri, 5 Nov 1999 11:08:40 -0500 (EST) From: Landon Rose <---@---.---> Subject: Re: VxPocket support? Mic- Yes, it all works fine. Basically chose VX inout from the Sound Control panel, set input preferences first before opening SC. Then you can set SC from Audio Setup. I have a current problem with digital input ( intermittant static pops) but I think it's in my old Sony TCD-3, not with the card. I also purchased a Hosa Coaxial=Optical data link box to link up the DAT with the card. Good luck. Landon >Landon - >did you get that "uneven buffers size" / simultaneous i/o problem sorted? >i didn't want to reply to Mark's post being uninformed... > >Cheers, >Mic. > ------------------------------ Date: Sat, 06 Nov 1999 03:21:15 -0500 From: christian hresko <---@---.---> Subject: Intro/Outro just like to do a quick introduction. recently purchased supercollider (i'm a poor college student, so i will have to skip many MANY meals for a few months) and hope to bewilder friends and faculty with all the nifty ugens. (and possibly put on a few shows at my college... which will eventually lead to fame and stardom within the realms of computer music of course. hehe...) thought about max/msp, but supercollider is exquisitely wicked. (although pure data is very cool as well. just wish i had a linux box) anyway, when i have something productive to say (or a bunch of questions) i hope to hear from some of you. oh yeah, i'm very interested in hearing what you guys (and girls) are doing with SC... cheers, christian : very happy that i 'pumped' 450 oscillators out of my G3 without any glitching during the benchmark test... - -- " there's nothing worse in life than being ordinary " ------------------------------ Date: Sat, 6 Nov 1999 14:22:03 -0700 From: James McCartney <---@---.---> Subject: Re: Files and SCPlay - a request ! At 9:20 AM -0700 10/19/99, finer@easynet.co.uk wrote: >James, > >I gather that : > >>The interpreter primitive is not implemented in SCPlay. >>You cannot interpret text in SCPlay, which is what 'executeFile' does. > > >Is there any way that the interpreter primitive could be implemented in SCPlay. It will not be, because then it would be basically the same as the full version. >My file is over 200 Mb . oops. Can't you just make it a method of Main.sc ? --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 14:21:53 -0700 From: James McCartney <---@---.---> Subject: Back home.. OK I'm back home finally and will go through some of the questions here. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 14:25:35 -0700 From: James McCartney <---@---.---> Subject: Re: turning things off? At 2:25 PM -0700 10/22/99, Mark Polishook wrote: >James, > >In the example below, myFunc2 plays for about 2 minutes when I trigger >TSpawn from a CheckBoxView. How can I force it (myFunc) to turn off >before all the patterns it contain run their course? > >In other words, how can I turn it on and off (within the space of a few >seconds) several times in a row and/or just let it run its course, to be >re-triggered as necessary, without accumulating more and more CPU usage. > >--- Anytime you have accumulating CPU usage it is because voices are not being deallocated and that is always due to not putting an envelope over your outputs. All outputs of a Spawn or TSpawn should be multiplied by an envelope. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 14:30:43 -0700 From: James McCartney <---@---.---> Subject: Re: OMS makes SC crash badly. At 11:22 PM -0700 10/23/99, Mic Berends wrote: >2.3.6 on my PBG3 + SC 2.2.3 under OS8.6 is not good for me, no errors just >complete locking of the computer. was a bugger to trace, so if you've been >having problems like i have since 2.1 disable it and make yourself happy. I've never had a problem with OMS. >perhaps James would consider adding FreeMIDI support if MOTU would be a bit more >open with their SDK, unfortunately newer versions of FreeMIDI no longer emulate >OMS but switch with it. OMS also crashes the world when other apps try to >access it. i know there's a 2.3.7 but not what it's supposed to fix and most >revs lately have been to deal with new macs & OSes... i'm going to want MIDI in >though so i'll give it a go and report back. Now that Opcode is dead on the operating table it seems that an alternative to OMS should be considered. Unfortunately a FreeMIDI SDK is not available AFAIK. MidiShare would be really good since it has from what I've seen a slightly cleaner approach than OMS, is cross platform, and is open source. However it requires running a separate app to be OMS compatible and I think it doesn't know how to talk to a Studio 4, so you'd still need OMS. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 14:37:55 -0700 From: James McCartney <---@---.---> Subject: Re: SC 2.2.3 newbie ?s + possible bugs. At 11:24 PM -0700 10/23/99, Mic Berends wrote: >(Signal) overdub seems to be broken; i use it in exactly the same context as >overwrite which works fine. Do you have an example? The example in Signal.help works fine : ( s = Synth.collect({ BrownNoise.ar(0.3) }, 0.05); t = Synth.collect({ FSinOsc.ar(800, 0.3) }, 0.02); s.overDub(t, 1000).plot; ) >two questions on the following: >1. why doesn't osc1.ar play the wavetable, it errors out; using osc.ar with >appropriate args works fine. Osc1 takes a Signal not a Wavetable. They are separate data types. Generally non-interpolating oscillators take Signals and interpolating ones take Wavetables. >2. how can i make "a" into a wavetable and add it to "t" by uncommenting "t = t >+ a"? i would like it to wrap at 1 as well. the Signal stuff seems overly >cumbersome given the new Wavetable functionality... There is no "new Wavetable functionality". A Wavetable is in a special format to facilitate fast interpolation. A Signal is raw data values. When you view a Wavetable in a WavetableView it looks the same, but the data is stored differently. You must do all your math with Signals and then as a final step convert to a Wavetable (to put it in its special format). --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Sat, 06 Nov 1999 16:01:07 -0500 From: Mic Berends <---@---.---> Subject: Re: Back home.. yay! hi James! hope you are well rested and occidental. please if you would take a look @ the thread Julian and i have been on about for a number of days regarding the wavetable adds and stuff (bugs, maybe?). look forward to your elucidation. cheers. - -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>v ^ Mic Berends : in the end, : Tomorrow Maximum v ^ MINDESIGN limited : there can be : Heaven Kissing EP v ^ http://www.mindesign.com/ : only one. : available now. v ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ------------------------------ Date: Sat, 6 Nov 1999 15:12:33 -0700 From: James McCartney <---@---.---> Subject: Re: further on the newbie path... At 2:04 PM -0700 10/24/99, Mic Berends wrote: >okay, let me describe what i am trying to do: >it is an extrapolation of Lawrence Ball's Harmonic Mathematics technique, which, >if i am grokking it correctly, simply amounts to pushing a sawtooth wave >vertically through a wavetable by iterative adds with wrapping or reflecting of >values >1 or <<-1. > >his BASIC code: > >FOR x= 1 to 256 >Fraction(x)=Fraction(x)+x >IF Fraction(x)<<=256 THEN GOTO L1 >Fraction(x)=Fraction(x)-256 >Array(x)=Array(x)+1 >IF Array(x)>limit(say,32767) THEN Array(x)=Array(x)-limit >L1: >update sample as readtable(Array(x)) >NEXT x > >very different method of working in SC due to structure and using floats. i'm >not even entirely sure how the above code is supposed to work, but my process is >as i explained above. i'm trying to do this in real-time as opposed to >concatenating a longer table for sample output... The above to me looks like a kind of cellular automata, but I couldn't say for sure without knowing what Fraction(x) is initialized as. If it starts as all zeroes, then the 'if' statement is never exercized. And what is 'say' ? To write that literally SC code: ( var fraction, array, limit = 32767; fraction = Signal.newClear(256); array = Signal.newClear(256); 256.do({ arg x; if (fraction.at(x) > 256, { fraction.put(i, fraction.at(i) - 256); array.put(i, array.at(i) + 1); if (array.at(i) > limit, { array.put(i, array.at(i) - limit) }); }); }); The way the original code is written indicates to me that it is intended to be called iteratively. - ---- Now your code seems to be doing something completely different : > >my SC code: > >( >// declarations >var a, b; > >// fill wavetables >b = Signal.sineFill(1024, [1]); >a = Signal.newClear(1024); >a.waveFill({ arg x; (x*2)-1 }, 0, 1 ); // make a sawtooth wave >b.asWavetable // unsure if this is necessary or even legal > >// this is the function i want to iterate with wrapping / reflecting >(b = a + b; >{ Osc1.ar(b, 1) } >).play >) > Try this: ( var a, b; // fill wavetables b = Signal.sineFill(1024, [1]); a = Signal.newClear(1024); a.waveFill({ arg x; (x*2)-1 }, 0, 1 ); // make a sawtooth wave // this is the function i want to iterate with wrapping / reflecting b = a + b; b = b.asWavetable; b.plot; { Osc.ar(b, 200) }.scope ) >strangely enough it seems to make no difference if it use Osc or Osc1, and i >cannot change the pitch at all with Osc so something is buggered. i have no >idea how to wrap wavetables values in an add and have had much difficulty with >things as follows - methods that i thought should have worked are commented out >followed by what "did work": I don't know what you mean by "wrap wavetables values in an add". > >( >// declarations >var a, b, t, x; > >// fill wavetables > >// t = Wavetable.sineFill(1024, [1]); // [not a Signal? can't do math ops on...] >t = Array.series(1024, 0, (1/1024)); // [seems like tables created @ 2x >specified size...] Do your math on Signals not Wavetables. > >// a = Signal.newClear(1024).fill(t).plot; // [doesn't work, says wrong type] You can only fill a Signal with a Float value, not an Array. >a = Signal.newClear(1024); >a.waveFill({ arg x; (x*2)-1 }, 0, 1 ); > >b = Signal.sineFill(1024, [1]); > >// b.overDub(a, 0); // [overDub broken, overWrite in same context works fine] Looks like it is working fine to me: a = Signal.newClear(1024); a.waveFill({ arg x; (x*2)-1 }, 0, 1 ); b = Signal.sineFill(1024, [1]); b.overDub(a, 0); b.plot; // b is the sum of a sine and a ramp. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Sat, 06 Nov 1999 16:18:45 -0500 From: Mic Berends <---@---.---> Subject: Re: OMS makes SC crash badly. James McCartney wrote: > > At 11:22 PM -0700 10/23/99, Mic Berends wrote: > >2.3.6 on my PBG3 + SC 2.2.3 under OS8.6 is not good for me, no errors just > >complete locking of the computer. was a bugger to trace, so if you've been > >having problems like i have since 2.1 disable it and make yourself happy. > > I've never had a problem with OMS. maybe it's one of those infamous mac three-way conflicts then, or a lib is corrupt. i'll give a go with a 2.3.8 and report back. hey's when's midi out? i want to build the following modules: audio to MIDI cc's [bandpass] soundIn-pitch-cpsmidi-midiout? audio to MIDI note+vel [window, threshold, deadzone] [bandpass] as well as - valve module vocoder microwave vector synth > > >perhaps James would consider adding FreeMIDI support if MOTU would be a bit more > >open with their SDK, unfortunately newer versions of FreeMIDI no longer emulate > >OMS but switch with it. OMS also crashes the world when other apps try to > >access it. i know there's a 2.3.7 but not what it's supposed to fix and most > >revs lately have been to deal with new macs & OSes... i'm going to want MIDI in > >though so i'll give it a go and report back. > > Now that Opcode is dead on the operating table it seems that an alternative > to OMS should be considered. Unfortunately a FreeMIDI SDK is not available > AFAIK. MidiShare would be really good since it has from what I've seen > a slightly cleaner approach than OMS, is cross platform, and is open source. > However it requires running a separate app to be OMS compatible and > I think it doesn't know how to talk to a Studio 4, so you'd still need > OMS. please please please use freemidi. it is elegant and robust. here are SDKs: http://www.motu.com/english/other/developer/welcome.html if it errors out for you just delete the "1" from "www1" in the URLinks. Cheers, Mic. - -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>v ^ Mic Berends : in the end, : Tomorrow Maximum v ^ MINDESIGN limited : there can be : Heaven Kissing EP v ^ http://www.mindesign.com/ : only one. : available now. v ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ------------------------------ Date: Sat, 6 Nov 1999 15:18:13 -0700 From: James McCartney <---@---.---> Subject: Re: advanced newbie technique. (drunken monkey style) At 11:44 PM -0700 10/25/99, Mic Berends wrote: >hi Julian! >thanks for the response. of course i have to get into this whilst everyone is @ >ICMC... :| > >Julian Rohrhuber wrote: >> have you tried using modulo, like this: >> a.waveFill({ arg x; (x*2) % 2 -1 }, 0, 1); > >why is this preferable to my: >a.waveFill({ arg x; (x*2)-1 }, 0, 1 ); >(i'm not all that clear on what modulo is; the output numbers and plot look the >same, what is the difference? it is still float values...) > >there is a problem with both of them that i get >Signal[-1 .. 0.998047] >when i want Signal [-1 .. 1], correct? Wave tables are meant to wrap, so the last value is not acheived, because it will be the first sample after the wrap. >it seems like the two methods i need most, Signal.asWavetable and Signal.overDub >are broken, but i have to assume i just don't know what's going on... They are not broken.. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 15:21:44 -0700 From: James McCartney <---@---.---> Subject: Re: GUIUtils At 3:57 PM -0700 10/27/99, Scott Wilson wrote: >Hi all, > >After compiling the GUIUtils library, I get the following error when >executing Bang-R, or any of the example libraries. I checked back, and this >seems to be a problem with earlier versions of SC as well. Poking around a >bit hasn't yet tracked down the source of the problem. > >Any thoughts? > >Scott Wilson > >ERROR: >Message 'streamContentsLimit' not understood. Looks like some incompatibility with the new Streams implementation of asString. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 15:35:58 -0700 From: James McCartney <---@---.---> Subject: Re: 1212 io, signalview At 4:09 AM -0700 10/28/99, andreas pieper wrote: >hi, > >is there a way to prevent sc from crashing with the korg 1212 board when i >saturate the cpu (way) over 100%? using the mac sound hardware is much more >forgiving in this respect. > Yes there is a potential fix for this, but the consequence might be glitching when very close to 100% CPU. Might not be good for live performance. >another thing which keeps me scratching my head: whats the deal with the >zoom parameter in SignalView? i just wanted to display a sample in a >signalview, and with the given signal.size (and the signalview dimensions) >i failed to calculate the right zoom value to display the whole sample. zoom is in number of samples per pixel. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 15:38:54 -0700 From: James McCartney <---@---.---> Subject: Re: polling Array values At 4:30 PM -0700 10/30/99, Matthew Rogalsky wrote: >I have not found a reference in any of the documentation which would >answer this question: > >I have an Array with values being continuously changed. I see the values >changing in GUI numerical views, polling the array elements inside a >trepeat. However, when I try to use the array values to, for instance, >control the freq. of an oscillator: >SinOsc.ar(myArray.at(0)); >all I get is the value the array was initialized with. > >This question is similar to one I asked not long ago, to which the answer >was: use a Plug to get the changing value. But wrapping myArray.at(0) in a >Plug still does not give me the changing value. Well you have to change the 'source' variable in the Plug to make the value change... --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 15:45:17 -0700 From: James McCartney <---@---.---> Subject: Re: query re: misconception At 3:41 AM -0700 11/3/99, Matthew Rogalsky wrote: >Hello James & all > >Having read & understood the "misconception" clarification, I'm trying to >apply that to some code that will check if Wacom pen has actually been >applied to the surface, before its location is updated. I am getting the >TabletPressure boolean, all right, but it's not clear to me how that value >should be tested in my if-then which follows. Here is what I'm doing, >which doesn't work: > >----- >pressureTest = TabletPressure.kr(0.0,1.0,'linear',0,0) > 0.0; > >(pressureTest == 1).if ( == is not a BinaryOpUGen. You must use an inequality. > >The "misconception" file was helpful but it doesn't contain an example of >using the boolean test result in an if-then construct. I'm afraid you didn't understand it. It is not a boolean test. It is a unit generator that produces 1 or zero as its output. This is then used to multiply by the arguments to produce a result. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 15:48:56 -0700 From: James McCartney <---@---.---> Subject: Re: Mixer/mixerplayer At 9:22 AM -0700 11/3/99, David Crandall wrote: >I've been off the list for a couple of months, so please excuse if this >has been covered. I haven't found anything about it in my old posts. > >Did I overlook something obvious, or is there documentation of the Mixer >and MixerPlayer somewhere? > >I've found the MixerPlayer.sc file but at this point on the learning >curve, need a little help in understanding it. It is not documented, because all of the details are not yet worked out. >specifically, how does one create the library for loading into the mixer, >and are there certain processes that won't work with it (I'm thinking >realtime processing, FFT, etc.). If you use the Instrument class, then the 'play' method will play it in a mixer channel. >Assuming that only one RT process could >access the inputs at a time, will sliding the volume to 0 make the input >available to another process (I notice the CPU usage drops when the volume >is 0, does that mean the process is paused or suspended somehow)? it is paused but still allocated to that channel. By unchecking the box, you deallocate that channel. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 16:04:25 -0700 From: James McCartney <---@---.---> Subject: Re: OMS makes SC crash badly. At 2:18 PM -0700 11/6/99, Mic Berends wrote: > hey's when's midi out? It is there now. See MIDIOut.help --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 6 Nov 1999 16:51:07 -0700 From: James McCartney <---@---.---> Subject: Re: Some NaN related bugs/problems At 1:23 AM -0700 10/28/99, Ron Kuivila wrote: >Hi James, > >It looks like Gate is not initialized on start up. >So, it returns a deal breaking NaN in the following code: > >Synth.play({ > thisSynth.sched(0.1, {x.poll.postln;}); > SinOsc.ar(400,0,x = Gate.kr(TabletX.kr(0.001,1,'exponential') - >0.001, TabletButton.kr)); >}) I'm not seeing a problem here. > >Also, the Butterworth hipass is unstable with low cutoff frequencies. For >example: > { HPF.ar(Saw.ar(200,0.1),0, 5) }.play; >dies immediately. > That is due to the filter math. Fixing it would require double precision. A cutoff of zero is not possible for this filter. This will not be changed. >Here are a couple of minor wishes: > >1. It would be nice to have an efficient way to force exponential faders to >zero. >For example, there might be a warp type 'clippedExponential' that subtracts >the minimum >from the result. A 'curve' type such as for envelope might be better. > >2. It would also be nice to have a 'reset' message for Ugens that just >looks for any NaN's in the Ugens variables and sets them to 0 (or maybe a >specified value). --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sat, 06 Nov 1999 19:42:54 -0500 From: Mic Berends <---@---.---> Subject: limit functions for arrays. i see a place where i went wrong was thinking that i had an op to wrap arrays, when i can only wrap values in an array. let me explain: adding two signals of values range [-1 to +1] gives you a signal of range [-2 to +2]. what i would like to do is: either // wrap, avoids division if x > 1 then x = -2 + (1-x) if x < -1 then x = 1 - abs(1+x) or // bounce, avoids division if x > 1 then x = (2 - x) if x < -1 then x = (-2 + abs(x)) i'm sure there's a more general way to do this, but this should give you some idea of how a non-mathematician approaches these things... thanks for your help. Cheers, Mic. P.S. yes, what i am trying to do is somewhat like cellular automata i suppose. imagine iteratively adding a wave with the wrap and bounce functions, the harmonics will come in and out of phase due to the mathematical relationships of the array values. - -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>v ^ Mic Berends : in the end, : Tomorrow Maximum v ^ MINDESIGN limited : there can be : Heaven Kissing EP v ^ http://www.mindesign.com/ : only one. : available now. v ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ------------------------------ Date: Sat, 6 Nov 1999 19:00:17 -0700 From: James McCartney <---@---.---> Subject: Re: limit functions for arrays. At 5:42 PM -0700 11/6/99, Mic Berends wrote: >i see a place where i went wrong was thinking that i had an op to wrap arrays, when i can only wrap values in an array. let me explain: > >adding two signals of values range [-1 to +1] gives you a signal of range [-2 to +2]. what i would like to do is: > >either > >// wrap, avoids division >if x > 1 then x = -2 + (1-x) >if x << -1 then x = 1 - abs(1+x) > >or > >// bounce, avoids division >if x > 1 then x = (2 - x) >if x << -1 then x = (-2 + abs(x)) > >i'm sure there's a more general way to do this, but this should give you some idea of how a non-mathematician approaches these things... < > >thanks for your help. These functions exist and are called wrap and fold. Signal.newClear(1024).waveFill({ arg x; sin(x).wrap(-0.5, 0.5) }, 0, 2pi).plot Signal.newClear(1024).waveFill({ arg x; sin(x).fold(-0.5, 0.5) }, 0, 2pi).plot --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Sat, 06 Nov 1999 21:11:59 -0500 From: Mic Berends <---@---.---> Subject: Re: limit functions for arrays. James replied: > These functions exist and are called wrap and fold. > Signal.newClear(1024).waveFill({ arg x; sin(x).wrap(-0.5, 0.5) }, 0, 2pi).plot > Signal.newClear(1024).waveFill({ arg x; sin(x).fold(-0.5, 0.5) }, 0, 2pi).plot supercool. can you tell me what is the best method to use wrap and fold when i'm trying to do something simple like adding signals thusly: b = a + b; ? i am trying to learn the language as fast as possible, but have been banging up against this for so long i'd like to see a result of some kind! i see a great division between filling signals/wavetables using functions and trying to do arithmetical ops and booleans/overDubs on same. i expect this is because of my limited understanding of the SC model. arg x, i confuses me the most. do we have the ability to do calcs using polar math (deg, rad, etc.) and (r, theta, phi, etc), so that i can use them in time functions and matrix slicing? or do i simply need to brush up on my trigonometric maths so that i understand how to derive these terms? i have a rather unique and spotty grasp on the field, due i think in working with 3D graphics for so long without much explicit math training. Cheers, Mic. P.S. i was trying to use the graphing calculator for some visualisation and Ron Avitzur wrote back with the following concerning my "limit functions" (yes, i know they're not really, it's a differential calculus term if i remember correctly...) i thought it was interesting. > I'm not sure what you mean by limit function, but I don't think there > is a way to do so. There is no way to write a conditional. I'll put this > on the list of features under consideration for future releases. You can > do it with cosiderable effort and an ugly expression using something like > (1 + sgn(x-n)) / 2, which is 0 for xn, so that > (1 + sgn(x-a))(f(x) / 2) + (1 + sgn(a-x))(g(x) / 2), gives > f(x) for x > a and g(x) for x < a. - -- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>v ^ Mic Berends : in the end, : Tomorrow Maximum v ^ MINDESIGN limited : there can be : Heaven Kissing EP v ^ http://www.mindesign.com/ : only one. : available now. v ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ------------------------------ End of sc-users-digest V1 #71 *****************************