From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #305 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, June 18 2001 Volume 01 : Number 305 ---------------------------------------------------------------------- Date: Sat, 16 Jun 2001 12:44:51 -0500 From: rkuivila@mail.wesleyan.edu (Ron Kuivila) Subject: Event question Hi James, I notice that it is possible to generate a Synth in the NRTVM and pass it to the RTVM for synthesis. What is the overhead of archiving and unarchiving? Would it be worth using this as a basis for event buffering? (By event buffering, I mean allowing a pattern to compute ahead of realtime by some limited amount in the NRTVM and then scheduling the Synth's it creates for performance at the appropriate time in the RTVM. Event buffering might also be used with OSC to allow a machine to act as a synthesis server for other machines or simply to allow networked realtime interaction.) RJK ------------------------------ Date: Sat, 16 Jun 2001 13:08:59 -0400 From: "crucial" <---@---.---> Subject: Re: CrucialLibrary Sorry, was trying to get it out the door before I had to go out the door. A fixed version is up. (found 2 other small goofs) You must put an alias to Common inside the CrucialLibrary folder. You have to do it yourself, as Mac aliases get lost and confused easily. Aaaaaalterations To Common folder must be alphabetically before Common to compile in the right order. >hmm i can seem to get the library to compile properly at all >fixed the paren in Instr.sc >i get these errors on compile: >€ ERROR: Superclass 'ArrayedCollection' of class 'Array' is not defined in >any file. >€ ERROR: Superclass 'Number' of class 'SimpleNumber' is not defined in any >file. >€ ERROR: Superclass 'Collection' of class 'MultiLevelIdentityDictionary' is >not defined in any file. >€ ERROR: Superclass 'RawArray' of class 'String' is not defined in any file. >€ ERROR: Superclass 'Instrument' of class 'Instr' is not defined in any >file. >€ ERROR: Superclass 'AbstractFunction' of class 'Pattern' is not defined in >any file. >€ ERROR: Superclass 'Set' of class 'Dictionary' is not defined in any file. >€ ERROR: Superclass 'Stream' of class 'IOStream' is not defined in any file. >€ ERROR: There is a discrepancy. > >i think i followed the directions right... >??? >-- > ben milstein > mintyfresh > www.soundmangle.com - www.elmconceptions.com > >> From: James McCartney <---@---.---> >> Reply-To: sc-users@lists.io.com >> Date: Fri, 15 Jun 2001 19:48:12 -0500 >> To: >> Subject: Re: CrucialLibrary >> >> >> There was a compile error in Instr.sc that I had to fix. mismatched paren. >> >> Nice work. I like the graphical exceptions / inspectors / browsers. >> >> I wound up throwing lots of exceptions just trying out the examples.. :-) >> Not sure what I'm doing.. >> >> --- james mccartney james@audiosynth.com >> SuperCollider - a real time synthesis programming language for the PowerMac. >> >> >> >> > > > _____(( http://crucial-systems.com _________________))_______ ------------------------------ Date: Sat, 16 Jun 2001 13:25:38 -0400 From: "crucial" <---@---.---> Subject: Re: CrucialLibrary well the final exception is often not of much use to figure out what went wrong. the call stack is the most interesting part, and that still splorks at you. .inspect is invaluable though. i have been debugging much faster. I have an idea for an Inspection that would let you use a \key to name an inspection point. so it would update the display every time it goes through that inspection point. you could turn it on and off, let one come through etc. >Hm... at some point I'll miss the times when SC was dropping an endless >error message right into the middle of my code. > >:) > >jo > > > _____(( http://crucial-systems.com _________________))_______ ------------------------------ Date: Sat, 16 Jun 2001 13:02:37 -0500 From: James McCartney <---@---.---> Subject: Re: Event question unarchiving is probably faster than running the code to create the synth. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Sat, 16 Jun 2001 17:25:20 -0400 From: "crucial" <---@---.---> Subject: sc3d5 Instrument vs. my Instrument I had some correspondence with JmC a while back about what I thought Instrument should/could do. many of us have solved the "automatic gui window for a function" problem. some of us several times. I feel this system is the most flexible, simple and stable. a comparison sc3d5 : the Instrument specifies a default control for each arg: ie one of the InstrumentParam subclasses: InstrumentKnobParam, InstrumentSliderParam etc. this limits possible input types to .kr rate float controls. IMHO overly couples the 'automatic' gui building to the Instrument itself. my system: the Instrument specifies the Spec for each arg Spec AudioInputSpec ControlSpec TrigSpec StaticSpec EnvSpec SymbolSetSpec EnumSpec etc. the Spec specifies the acceptable type of input and any magnitude limitations Patch specifies an Instrument (by namespace address) with controls/args to play that instrument with if no arg is specified, it gets a prototype as returned by Spec::defaultControlView ( I will enhance this: Patch would look in a global registery DefaultControls for desired/likely/useful/default prototype control objects. Spec is then decoupled from the default system, and you have access now to multiple possible prototypes, suitable for intelligent randomizing. ) thus by creating a Patch and gui-ing it, you build an 'automatic' gui window. you may supply some args, and omit others. and the Patch may be saved to disk at any point to catch exactly that sound with those controls. a Patch .values each arg as it passes it to the Instrument thus anything that responds to .value may be used as input a float, integer, Env, symbol or other natural arg any Player eg. another Patch ( played as input to this patch ) Sound File Player ( play sound file as input to this patch) StreamKr ( plays a pattern as a .kr signal ) EventStreamPlayer ( plays a pattern into .ar signal, used here as an input ) MousePlayer (obtains a Plug on the mouse ) TPlugProxy (obtains a Plug on wacom tablet ) MidiPlayer (obtains a .kr rate from midi controllers etc.) EnvPlayer ( plays a long .kr rate envelope ) CellularAutomataPlayer ( interprets a CA class into a .kr signal ) etc. etc.... any Editor eg. ( an editor asCompileStrings as its value, so you edit as you like, but the editor object disappears when you save ) NumberEditor (delivers a float when valued) EnvEditor ( delivers an Env when valued ) NumberKnobEditor (for sc3) this results in more flexibility, less coupling, and less assumptions in any given class as to what the other classes are supposed to do. eg. NumberEditor, EnvEditor are useful in many situations. InstrumentKnobParam is assumed to be only for Instruments. roles are simpler: Instrument is a function with a name, and specs for each arg Spec is acceptable input specification DefaultControls specify suitable defaults for a given spec Patch is an instrument's name and a set of args an example saved patch: (this uses orchestras and pattern objects I have not made public, so just look, don't execute) Patch.new([ 'variousefx', 'PitchCascade' ], ["HD:Applications:SC:Patches:percy:dhthump", // loads this Patch, used as .ar rate input 3.34884, 0.5, 0.30814, 0.636279, 0.119488, // a kr on one of my pattern objects Kr.new(PFork.new( PseqLive.new( #[ 3.51388, 3.49272, 3.56431, 3.60416, 3.57935, 3.3981, 3.60799, 3.61126 ], 3.37778, 3.64444, 0, inf), PseqLive.new( #[ 0.0477521, 0.465003, 0.0413732, 0.127661, 0.322302, 0.334772, 0.396163, 0.177477 ], 0, 0.533333, 0, inf), NumberGui.new(0.186047, 0, 1, 0, 'linear')), 0.05)]) // dhthump Patch.new([ 'simpleCombos', 'mix' ],// could have ring modded them together [Patch.new([ 'percOrc4', 'anakik', 'flat' ], [Kr.new(XOXlevels.new(#[ 1, 0, 0, 1, 0, 0, 0.555556, 0, 1, 0, 0, 0.805556, 0, 0, 0.388889, 0 ]), 0.05), 148, 0.186047, 0.0132558, 1]), Patch.new([ 'percOrc4', 'clong' ], [Kr.new(XOXlevels.new(#[ 1, 0, 1, 0, 0.722222, 1, 0, 0.75, 0, 0, 0.333333, 0.0833333, 0.444444, 1, 0, 1 ]), 0.05), 19, 290.698])]) this plays a banging, complex, self-varying dual voiced rhythm with less than %15 cpu. Kr(XOXlevels( ) ) is playing a trig rhythm, exciting Klanks etc. _____(( http://crucial-systems.com _________________))_______ ------------------------------ Date: Sat, 16 Jun 2001 16:43:52 -0500 From: James McCartney <---@---.---> Subject: Re: sc3d5 Instrument vs. my Instrument on 6/16/01 4:25 PM, crucial at felix@crucial-systems.com wrote: > many of us have solved the "automatic gui window for a function" problem. > some of us several times. I feel this system is the most flexible, simple and > stable. > Yes this sounds good. I will need some time to digest it. If someone has better solutions than mine, I'd rather go with those. So I would like to incorporate as many of yours and others' good ideas into the system. - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Sat, 16 Jun 2001 23:33:19 -0400 From: christian adam hresko <---@---.---> Subject: connecting windows i'm working on an idea here, and the first thing i need/want to know is how i can pass data, messages, params, etc from one window (or gui) to another. is there an example of this in the docs somewhere? i'm building something from scratch, so i'm not overly interested in 'custom' libraries just yet. example: anOsc[GUI] | | | | aFilter[GUI] | | | | stereoOut[GUI] each GUI would be it's own 'patch' and NOT be enclosed in the same Synth.play function. Synth.play would be evaluated after the code is 'linked' and consolidated into a single patch through my super-magic programming. i just want to know how to 'snag' code from window (or GUI) to window and/or how to morph the existing params of a patch in one window from another. if that makes any sense. cheers, christian ------------------------------ Date: Sat, 16 Jun 2001 23:47:41 -0400 From: christian adam hresko <---@---.---> Subject: spek delay i remember this discussion from a few months ago, and want to pursue the idea. i've been noodling around with NI's spektral delay lately, and it's quite impressive. there's been a bunch of threads on the music-dsp list (with algorithms... whoopee!) lately regarding the idea of frequency spectrum (bands) delays. has anyone made any significant progress trying to build their own 'spektral delay' using SC? i'm guessing with pitch detect and lots of FFT calculations on fairly small buffer sizes would make this doable in SC. the pretty sonogram is nice (in spektral delay) but i don't really need to be spending time on real-time graphical feedback. i just want to split a signal into 256 or 512 (1024 would be nice... but i'll start small) bands and mangle them and spit them back out. does SC support any other transforms other than FFTs? (like an STFT) and what in the hell is 'spectral rate?' found this in the docs, but i'm not quite clear what spectral rate is. if anyone has some snippets of code to start with, i'd be happy to work on this idea. if not, i'll just start from scratch. cheers, christian ------------------------------ Date: Sun, 17 Jun 2001 13:37:05 -0500 From: James McCartney <---@---.---> Subject: burn those idle cycles some small version 2 patches. ( //*** Synth.play({ var signal; signal = OverlapTexture.ar({ var t, c, e, f, n, r, p, pf; #p, pf = [[1,1],[1,1],[-1,2]].choose; // choose string or pipe r = #[8,4,2].choose; c = Impulse.kr(r,1); t = ImpulseSequencer.kr(`(#[ [1,1,0,0,0,0,0,0], [1,1,1,0,0,0,0,0], [1,1,1,1,0,0,0,0] ].choose.scramble), c); e = Trig.kr(t, rrand(0.3,0.9)/r); f = pf*Lag.kr(Sequencer.kr(`(Array.fill(#[1,2,3,4].choose, { rrand(24,96).midicps })), t), 0.1/r); n = LPZ2.ar(LFNoise2.ar(min(f*24, 12000), 0.2 * e)); Pan2.ar( CombA.ar(n, 0.1, 1/f, min(0.5,exprand(90,240)/f) * p) * 0.2, 1.0.rand2); }, 19, 0.5, 5, 2); 6.do({ signal = AllpassL.ar(signal, 0.03, [0.03.rand,0.03.rand], 3) }); signal }) ) The next two have about 500 ugens and may require a fast machine. ( //*** Synth.play({ var signal; signal = OverlapTexture.ar({ var f, r, n, a; f = rrand(24, 96).midicps; a = max(1, sqrt(800/f)); r = XLine.kr(exprand(0.1,20),exprand(0.1,20), 25.6); n = 12; a * Mix.arFill(n, { arg i; g = n.asFloat.rand + 1; Pan2.ar( FSinOsc.ar(f*g, SinOsc.kr( r * rrand(0.9,1.1),2pi.rand,0.08,-0.04).max(0)) * (2/g), 1.0.rand2 ) }); }, 12.8, 6.4, 6, 2); Mix.arFill(5, { CombN.ar(signal, 0.3, [rrand(0.1,0.3),rrand(0.1,0.3)], 8) }) * 0.3; }) ) ( //*** Synth.play({ var signal; signal = OverlapTexture.ar({ var f, r, n; f = rrand(24, 96).midicps; r = XLine.kr(exprand(0.1,20),exprand(0.1,20), 25.6); n = 12; Mix.arFill(n, { arg i; Pan2.ar( FSinOsc.ar(f * i + f, SinOsc.kr( r * rrand(0.9,1.1),2pi.rand,0.1,-0.05).max(0)) * (1/(i+1)), 1.0.rand2 ) }) * LFPulse.kr(exprand(0.2,1.2), rrand(0.1,0.2)); }, 12.8, 6.4, 6, 2); Mix.arFill(5, { CombN.ar(signal, 0.3, [rrand(0.1,0.3),rrand(0.1,0.3)], 8) }) * 0.5; }) ) - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Sun, 17 Jun 2001 15:00:22 -0400 From: andrei@world.std.com Subject: Re: burn those idle cycles Those sound great. The first one is kind of Autechresque sounding. Andrei James McCartney wrote: > some small version 2 patches. > > ( > //*** > Synth.play({ > var signal; > signal = OverlapTexture.ar({ > var t, c, e, f, n, r, p, pf; > #p, pf = [[1,1],[1,1],[-1,2]].choose; // choose string or pipe > r = #[8,4,2].choose; > c = Impulse.kr(r,1); > t = ImpulseSequencer.kr(`(#[ > [1,1,0,0,0,0,0,0], > [1,1,1,0,0,0,0,0], > [1,1,1,1,0,0,0,0] > ].choose.scramble), c); > e = Trig.kr(t, rrand(0.3,0.9)/r); > f = pf*Lag.kr(Sequencer.kr(`(Array.fill(#[1,2,3,4].choose, { > rrand(24,96).midicps })), t), 0.1/r); > n = LPZ2.ar(LFNoise2.ar(min(f*24, 12000), 0.2 * e)); > Pan2.ar( CombA.ar(n, 0.1, 1/f, min(0.5,exprand(90,240)/f) * p) * > 0.2, 1.0.rand2); > }, 19, 0.5, 5, 2); > 6.do({ signal = AllpassL.ar(signal, 0.03, [0.03.rand,0.03.rand], 3) }); > signal > }) > > ) > > The next two have about 500 ugens and may require a fast machine. > > ( > //*** > Synth.play({ > var signal; > signal = OverlapTexture.ar({ > var f, r, n, a; > f = rrand(24, 96).midicps; > a = max(1, sqrt(800/f)); > r = XLine.kr(exprand(0.1,20),exprand(0.1,20), 25.6); > n = 12; > a * Mix.arFill(n, { arg i; > g = n.asFloat.rand + 1; > Pan2.ar( > FSinOsc.ar(f*g, SinOsc.kr( r * > rrand(0.9,1.1),2pi.rand,0.08,-0.04).max(0)) * (2/g), > 1.0.rand2 > ) > }); > }, 12.8, 6.4, 6, 2); > Mix.arFill(5, { CombN.ar(signal, 0.3, [rrand(0.1,0.3),rrand(0.1,0.3)], > 8) }) * 0.3; > }) > > ) > > ( > //*** > Synth.play({ > var signal; > signal = OverlapTexture.ar({ > var f, r, n; > f = rrand(24, 96).midicps; > r = XLine.kr(exprand(0.1,20),exprand(0.1,20), 25.6); > n = 12; > Mix.arFill(n, { arg i; > Pan2.ar( > FSinOsc.ar(f * i + f, SinOsc.kr( r * > rrand(0.9,1.1),2pi.rand,0.1,-0.05).max(0)) * (1/(i+1)), > 1.0.rand2 > ) > }) * LFPulse.kr(exprand(0.2,1.2), rrand(0.1,0.2)); > }, 12.8, 6.4, 6, 2); > Mix.arFill(5, { CombN.ar(signal, 0.3, [rrand(0.1,0.3),rrand(0.1,0.3)], > 8) }) * 0.5; > }) > > ) > > --- james mccartney james@audiosynth.com > SuperCollider - a real time synthesis programming language for the PowerMac. > ------------------------------ Date: Mon, 18 Jun 2001 00:11:36 +0100 From: LUThER_SKIZZO <---@---.---> Subject: Re: burn those idle cycles on 17/6/01 7:37 pm GMT, James McCartney at asynth@io.com apparently typed: > some small version 2 patches. > > ( > //*** > Synth.play({ > var signal; > signal = OverlapTexture.ar({ > var t, c, e, f, n, r, p, pf; > #p, pf = [[1,1],[1,1],[-1,2]].choose; // choose string or pipe > r = #[8,4,2].choose; > c = Impulse.kr(r,1); > t = ImpulseSequencer.kr(`(#[ > [1,1,0,0,0,0,0,0], > [1,1,1,0,0,0,0,0], > [1,1,1,1,0,0,0,0] > ].choose.scramble), c); > e = Trig.kr(t, rrand(0.3,0.9)/r); > f = pf*Lag.kr(Sequencer.kr(`(Array.fill(#[1,2,3,4].choose, { > rrand(24,96).midicps })), t), 0.1/r); > n = LPZ2.ar(LFNoise2.ar(min(f*24, 12000), 0.2 * e)); > Pan2.ar( CombA.ar(n, 0.1, 1/f, min(0.5,exprand(90,240)/f) * p) * > 0.2, 1.0.rand2); > }, 19, 0.5, 5, 2); > 6.do({ signal = AllpassL.ar(signal, 0.03, [0.03.rand,0.03.rand], 3) }); > signal > }) > > ) > > > The next two have about 500 ugens and may require a fast machine. > > ( > //*** > Synth.play({ > var signal; > signal = OverlapTexture.ar({ > var f, r, n, a; > f = rrand(24, 96).midicps; > a = max(1, sqrt(800/f)); > r = XLine.kr(exprand(0.1,20),exprand(0.1,20), 25.6); > n = 12; > a * Mix.arFill(n, { arg i; > g = n.asFloat.rand + 1; > Pan2.ar( > FSinOsc.ar(f*g, SinOsc.kr( r * > rrand(0.9,1.1),2pi.rand,0.08,-0.04).max(0)) * (2/g), > 1.0.rand2 > ) > }); > }, 12.8, 6.4, 6, 2); > Mix.arFill(5, { CombN.ar(signal, 0.3, [rrand(0.1,0.3),rrand(0.1,0.3)], > 8) }) * 0.3; > }) > > ) > > ( > //*** > Synth.play({ > var signal; > signal = OverlapTexture.ar({ > var f, r, n; > f = rrand(24, 96).midicps; > r = XLine.kr(exprand(0.1,20),exprand(0.1,20), 25.6); > n = 12; > Mix.arFill(n, { arg i; > Pan2.ar( > FSinOsc.ar(f * i + f, SinOsc.kr( r * > rrand(0.9,1.1),2pi.rand,0.1,-0.05).max(0)) * (1/(i+1)), > 1.0.rand2 > ) > }) * LFPulse.kr(exprand(0.2,1.2), rrand(0.1,0.2)); > }, 12.8, 6.4, 6, 2); > Mix.arFill(5, { CombN.ar(signal, 0.3, [rrand(0.1,0.3),rrand(0.1,0.3)], > 8) }) * 0.5; > }) > > ) I love when programmers become composers... 3 excellent works. lb - -- >>LUThER_SKIZZO_999.......................................///eventually//me// E hiss999@dircon.co.uk hiss999@dircon.co.uk hiss999@dircon.co.uk >>>it////////takes////a////fool///to////recognise//another/one/ >................................the.....end//////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////. ------------------------------ Date: Mon, 18 Jun 2001 15:28:55 +1000 From: newton armstrong <---@---.---> Subject: OSC: Max->SC I found a thread on this topic in the archive, but it seems to have died before anything was answered conclusively, so here goes again... Has anybody got Max talking to SC on a single machine using OpenSoundControl? I seem to be getting data across the network using the loopback address (127.0.0.1) and matching port numbers, but i'm getting error messages at the SC end. I'm wondering if there's something wrong with the way i'm formatting the Max messages. The exact contents of the Max message box are: /sc/ping This produces: € ERROR: expected ',' char at beginning of tag string. in SC. As I understand it, SC should look up and value the function associated with symbol 'ping' in the *default method of OSCNode. ------------------------------ Date: Mon, 18 Jun 2001 11:51:58 +0200 From: Maurizio Giri <---@---.---> Subject: ehm... me too, for SC2 ( // 2001 Choir -- Maurizio Giri { var a, e, n, f, g, g1, j, o, gar, oar, dist, dur, osc, env, envdur; dur = 40; n = 7; // simultaneous events e = Env.new([0.0, 1.0, 0.0], [dur/2, dur/2], -3); // event env oar = [2, 3, 5, 7, 11].pyramid(1).pyramid(9); // octaves gar = [7, 0, 7, 2, 4, 6, 10, 0, 5, 11, 9]; // notes dist = (48.midicps-12.midicps)/96; // harmonic distortion envdur = [5, 7, 11, 13, 17, 19, 23, 29, 31, 37]; // note envs a = Spawn.ar({ arg spawn, i; spawn.nextTime = [1, 0, 2, 2, 0, 0, 3, 3, 5, 0, 0, 0, 23] .pyramid(1).pyramid(3).wrapAt(i); o = oar.wrapAt(i) * 12; j = (i/13).floor.asInteger; g1 = gar.wrapAt(j); g = [gar.wrapAt(i), g1, [g1+7, g1+5].choose].wrapAt(i); f = (g+o).midicps+((i%97)*dist); env = Osc1.ar(Signal.hanningWindow(1024), envdur.wrapAt(i)); if ( (i+1).isPrime, {osc = 0}, if ( ((i+1)%17) != 0, // noise modulated sines - cfr McCartney's Ex. 6 { osc = FSinOsc.ar([f, f + 0.2], LFNoise2.kr(f*[0.05, 0.04], 3/o))}, { osc = FSinOsc.ar([f, f + 0.2], LFNoise2.kr(f*[0.05, 0.04], 3/o)) *SinOsc.ar([67, 79].wrapAt(i).midicps)} ); ); osc*env*EnvGen.ar(e); }, 2, dur/n, 2001); CombN.ar(a, 0.3, 0.3, 4, 1, a.reverse); }.scope ) ------------------------------ Date: Mon, 18 Jun 2001 17:31:32 +0100 From: Andy Wilson <---@---.---> Subject: London Supercollider Day - events London 2pm - 7pm Saturday 14th July at Public Life (http://www.publiclife.org), Shoreditch, London Free Admission featuring... in no particular order; ( * : Presentation ** : Performance ) ================================================ * / ** "Movement - Fluid, Beat-based Music" John Eacott / jnrtv http://www.informal.org John is a composer for film and TV who has recently become attracted to generative / non-linear forms. ============================================= * / ** "Algorithmic Composition Methods for Breakbeat Science" Nick Collins Nick is a computer music researcher and, like everybody else in the world, probably thinks he's a composer too. ================================================ * "One Finger Music and the Terror of Infinity" Jem Finer Jem has only one finger but, bizarrely, has grown a third ear to compensate. ============================================= ** "Why generative dance music?" Ben Milstein Ben is minty fresh ============================================= * / ** "On Radio Silence..." Mathew Rogalsky http://www.mrogalsky.net Mathew is shy and has not defined his true self to the author. ps. this project sounds *very* cool. ============================================= ** "On Certainty" Bourbonese Qualk http://www.bourbonesequalk.com ============================================= Once again, please pass this on to any and all individuals and lists that may be interested / relevant. - -- { andy wilson << managing director << LShift << www.lshift.net } { www.andyw.com && www.faust-pages.com && www.directorxml.com } ------------------------------ Date: Mon, 18 Jun 2001 10:16:04 -0700 From: MarkDavid <---@---.---> Subject: Re: OSC: Max->SC on 6/17/01 10:28 PM, newton armstrong at newton@hard.net.au wrote: > I found a thread on this topic in the archive, but it seems to have died > before anything was answered conclusively, so here goes again... > > Has anybody got Max talking to SC on a single machine using > OpenSoundControl? I seem to be getting data across the network using the > loopback address (127.0.0.1) and matching port numbers, but i'm getting > error messages at the SC end. I'm wondering if there's something wrong with > the way i'm formatting the Max messages. > > The exact contents of the Max message box are: /sc/ping > This produces: € ERROR: expected ',' char at beginning of tag string. in SC. > > As I understand it, SC should look up and value the function associated with > symbol 'ping' in the *default method of OSCNode. I haven't played with OSC but I did do a project recently that used a MAX patch to control SC via MIDIController.kr. I used the IAC bus in OMS to get them to talk. It seemed to work okay, but I found it to be very processor intensive. Also I had to trick MAX (actually Max/MSP) to disable it's ASIO by starting SC first then running MAX. Hope this helps. - MarkDavid - -- Experience After-Life on the Bardo Plane of Existence: http://www.mdhosale.com/BookOfTheDead ------------------------------ End of sc-users-digest V1 #305 ******************************