From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #57 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 Wednesday, September 1 1999 Volume 01 : Number 057 ---------------------------------------------------------------------- Date: Fri, 27 Aug 1999 03:02:51 -0600 From: James McCartney <---@---.---> Subject: Re: Help me find a term for AI At 12:51 AM -0600 8/27/99, Ioannis Zannos wrote: >> > To me, "fluid music" has such a nice sound I'd be surprised it's not >> > already in use. > >Yes it's a nice term - my vote goes for it. Note that there is >a term "fluid architecture". Thus fluid music that fits in very well >as a pendant. Well if it is what I'm thinking of it is "liquid architecture" a term coined by Marcos Novak who has done a lot of thinking about architecture, music, and virtual reality. He used to teach here in Austin. http://flux.carleton.ca/SITES/PROJECTS/LIQUID/Novakbio.html http://www.cda.ucla.edu/Pages/novak.html http://www.aud.ucla.edu/~marcos/ (And Iannis, I was surprised to learn when I was in Athens that the architect friends of your friend Vassilis Kokkas knew about Marcos Novak. Hey I used to hang out and have coffee with him!) --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 27 Aug 1999 12:13:58 +0200 From: Ioannis Zannos <---@---.---> Subject: Re: Help me find a term for AI James McCartney wrote: > (And Iannis, I was surprised to learn when I was in Athens that > the architect friends of your friend Vassilis Kokkas knew about > Marcos Novak. Hey I used to hang out and have coffee with him!) Right, I remember you telling us when we had a session at Vassili's place in Berlin, where he showed us his work on simple 3D object emulation with Pyrite and MAX, where a rotating tetrahedron would produce parameters for driving sounds on a SampleCell. Which brings me to another topic: Martin Carlé has developed a nice framework for interactive installations with Pyrite, that lets one plug in Max patches for setting parameters via gui, and manages the communication between various data processing modules written in Pyrite. Well, Pyrite is in a sense a parent of SC, but as Ron J. K. also noted, it is still a great tool for teaching programming inside Max - it also makes life much easier when one is using MAX for example, because one needs video in or other types of specialized input. There will probably be a report on this framework at some point. In discussing the framework, we noted that pyrite objects *make a private copy* of each list which is input via an inlet. (I guess that the copy is made by the MAX system by default). Which is of course an overhead - especially when you want to share an largish array of data input for example by a video object (VNS) at a rate of ca 30 frames/second, between a number of pyrite objects. The only way to share data globally within the entire pyrite system would be to write the data to a MAX table and access it by tableAt or so. So question: How is table access implemented in Pyrite? Is the table address translated to a memory address at pyrite program compile time, or is it accessed via max table symbol lookup at runtime? Knowing the overhead involved in accessing a table is essential for deciding whether to share data via tables. Greetings from pyrite. Iannis Zannos SIM ------------------------------ Date: Mon, 30 Aug 1999 09:35:26 +0200 From: Staffan Liljegren <---@---.---> Subject: Gina - using drumpani here is a short illustrative "etude" which uses the drumpani from a previous posting of mine. - -Staffan ( // Gina, la mina o la china ? // Staffan Liljegren, 990828, staffan@medialab.ericsson.se var b,p, rev,chor,e,drumpani,t0,t1; e = Env.new(#[1, 1, 0],#[1.4, 0.1]); // a simple tunable drum with variable size and partials close to the timpani // dec decides the size (eg attack decay and ring times of partials) // of the "drumpani" drumpani = { arg dec,freq,amp,pan; var o; o=Klank.ar( `[[0.85,1,1.51,1.68,1.99,2.09, 2.44,2.67,2.79,2.89,2.99, 3.08, 3.19]*freq, Array.fill(12, { arg i; 1/(i+1) }).addFirst(0.5), Array.fill(13, { dec + (10*dec).linrand })], Decay2.ar(Impulse.ar(0),0.001,dec,GrayNoise.ar(0.01*amp)) ) * EnvGen.kr(e); Pan2.ar(o, pan); }; // "growing and shrinking" drums randomly panned in the middle t0 = Pbind( \tempo, 2.2, \dec, Pseq([Pseries(0.05, 0.01, 24), Pseries(0.29, -0.01, 24)], inf), \amp, Pfunc({0.2+0.5.rand}), \pan, Pwhite(-0.2, 0.2), \degree, Prand([0,3,6, \rest, \rest], inf), \ugenFunc, drumpani, \dur, Prand([ Pseq([1/4], 4), Pseq([1/2],2)], 12) ); t1 = Pbind( \tempo, 2.2, \octave, 4, \dec, Pseq([0.15,0.3], inf), \amp, Pfunc({0.4+0.3.rand}), \pan, Pwhite(-0.2, 0.2), \degree, Prand([0,3], inf), \ugenFunc, drumpani, \dur, Prand([ Pseq([ 0.5,2.5], 1), Pseq([ 1.5], 2)], 4) ); chor = {arg in; DelayL.ar(in, 0.05, [0.025+0.025.rand, 0.025+0.025.rand],1.0, in)}; rev = { arg in; 4.do({ in = AllpassN.ar(in, 0.04, [0.04.rand, 0.04.rand], 1.8); }); in}; p = Pbind( \tempo, 2.2, \legato, 0.1, \amp, Pseq([0.3,0.1, 0.2,0.1], inf), \dur, 0.25, \pan, Pbrown(-1.0, -0.3, 0.3), \degree, Pshuf([0,0,0,4,4,5,5,\rest,6,6,6,7],4) + Prand( [0,0,0,0,[0,-6], [2,0], [0,-4]], 48) ); b = Pbind( \tempo, 2.2, \legato, Pseq([0.1, 0.9],4), \amp, Pfunc({0.1+0.2.rand}), \dur, Pseq([3],4), \pan, Pbrown(0.3, 1.0, 0.2), \degree, Prand([-14,-14,-7, -7,-11,-10,-10, \rest,\rest], 4) ); Pseq([ Pmulp(\stretch, Pgeom(2.5, 4/5, 4), Ppar([t0, t0])), // transpose drums ? Sure ! Pfx(Paddp(\mtranspose, Pseq([0,2,-3],2), Ppar([t0,b,p])), chor), Pfx(Paddp(\mtranspose, Pseq([0,-4,4],2), Ppar([t1,b,p])), rev), Pmulp(\stretch, Pgeom(1.0, 0.8, 4), Ppar([t0, t0])) ],1).play ) James McCartney wrote: > I was finally able to track down two very hard to find crashing bugs. > This version should be the most solid since a long time. > > === > > Version 2.2.1 is now available via ftp: > > BinHex : > ftp://www.audiosynth.com/pub/updates/SC2.2.1.sea.hqx > > MacBinary (smaller) : > ftp://www.audiosynth.com/pub/updates/SC2.2.1.sea.bin > > SCPlay is now distributed in a separate file : > > BinHex : > ftp://www.audiosynth.com/pub/updates/SCPlay2.2.1.sea.hqx > > MacBinary (smaller) : > ftp://www.audiosynth.com/pub/updates/SCPlay2.2.1.sea.bin > > === > > Changes in Version 2.2.1 > > The pseudo variable thisSynth replaces Synth.newSynth as the way to > get the current Synth. Synth.newSynth now prints a note to change your > code. > > A wait method was added to Routine. > > A serious bug was fixed that trashed memory when an error occured upon > starting a UGen. > > A serious bug was fixed that trashed memory when an error occured in > Synth.new followed by a recompile of the library. > > An error in the class library in version 2.2 was fixed that broke > generating GUI code. > > --- james mccartney james@audiosynth.com http://www.audiosynth.com > If you have a PowerMac check out SuperCollider2, a real time synth program: > > > --- james mccartney james@audiosynth.com http://www.audiosynth.com > If you have a PowerMac check out SuperCollider2, a real time synth program: > ------------------------------ Date: Mon, 30 Aug 1999 09:26:30 -0400 From: Mark Ballora <---@---.---> Subject: audio latency Greetings all -- I've been engaged as a SC consultant for a piece involving a string player and live dsp via SC. The composer is reporting unusually long latencies, 100-300ms, in engaging processing, even when running simple code from the Examples folder. Adjusting buffer size apparently does not help. Since practically all aspects of the current development model he's using are a few versions old, I'm certain that it's a configuration problem. (To begin with, the most current version of SC should certainly be employed.) I wonder if we could draw from anyone's previous experience on an optimal configuration of platform, OS and sound processor. We have access to all hardware and software, we'd just like some hints as to what to start assembling. Here's the current setup: Mac 7500 with 300Mhz G3 card OS 8.0 Sound Manager SC 2.1.2 Thanks in advance for any pointers -- Mark Ballora ------------------------------ Date: Mon, 30 Aug 1999 09:25:56 -0600 From: James McCartney <---@---.---> Subject: Re: audio latency At 7:26 AM -0600 8/30/99, Mark Ballora wrote: >Here's the current setup: > >Mac 7500 with 300Mhz G3 card >OS 8.0 >Sound Manager >SC 2.1.2 Is VM off? You'd be better off using a sound card rather than the Sound Mgr. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 30 Aug 1999 11:17:29 -0400 (EDT) From: "Ronald J. Kuivila" <---@---.---> Subject: Re: audio latency Dear Mark, It appears that having virtual memory enabled is the primary cause of long latency. RJK ------------------------------ Date: Mon, 30 Aug 1999 11:09:12 -0700 From: Mark Polishook <---@---.---> Subject: Model James, The SC Model class: in what contexts do you envision it being used? - do dependent relationships currently exist within SC?...or is this a future possibility (based upon the methods that now exist in Model). - -mark ------------------------------ Date: Mon, 30 Aug 1999 12:07:54 -0600 From: "David Cottle" <---@---.---> Subject: printing Hi, (More course material questions) When I format a printed line I do something like this: count.post; " : ".post; b.post; " = ".post; a.postln; Is there a more concise way to combine a line to post, like in C: printf("%d : %4d = %s", b, a, string); Just wondering. ------------------------------ Date: Mon, 30 Aug 1999 21:55:30 +0200 From: Staffan Liljegren <---@---.---> Subject: Re: printing Just concatenate and use postln, ie: ( a=3; ("// " ++ "a = " ++ a).postln; ) Staffan Liljegren David Cottle wrote: > Hi, > > (More course material questions) > > When I format a printed line I do something like this: > > count.post; > " : ".post; > b.post; > " = ".post; > a.postln; > > Is there a more concise way to combine a line to post, like in C: > > printf("%d : %4d = %s", b, a, string); > > Just wondering. ------------------------------ Date: Mon, 30 Aug 1999 14:59:50 -0600 From: James McCartney <---@---.---> Subject: Re: printing At 12:07 PM -0600 8/30/99, David Cottle wrote: >Hi, > >(More course material questions) > >When I format a printed line I do something like this: > >count.post; >" : ".post; >b.post; >" = ".post; >a.postln; > >Is there a more concise way to combine a line to post, like in C: > >printf("%d : %4d = %s", b, a, string); > >Just wondering. Not that concisely, but since IOStreams were added you can do this sort of like in C++: Post <<<< count <<<< " : " <<<< b <<<< " = " <<<< a <<<< Char.nl; --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Mon, 30 Aug 1999 15:28:14 -0600 From: "David Cottle" <---@---.---> Subject: Re: printing Hi, > Just concatenate and use postln, ie: > ( > a=3; > > ("// " ++ "a = " ++ a).postln; > > ) I like this, but with one caveat: The first value must be a string. In the example I gave I started with a variable: (count ++ " : " ++ b ++ " = " ++ a.at(item)).post; does not work ("" ++ count ++ " : " ++ b ++ " = " ++ a.at(item)).post; does. ------------------------------ Date: Mon, 30 Aug 1999 22:28:05 -0600 From: James McCartney <---@---.---> Subject: Re: printing At 3:28 PM -0600 8/30/99, David Cottle wrote: >("" ++ count ++ " : " ++ b ++ " = " ++ a.at(item)).post; Post << count << " : " << b << " = " << a.at(item) ; --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 31 Aug 1999 18:58:54 +0100 From: finer@easynet.co.uk Subject: Longplayer/Computer(s) that never stop Hello, Sorry if this is slightly not SC : I'm in the process of implementing a long running project, Longplayer, which exists at the moment as an SC program - it creates a very long piece of music . Problem is I've yet to find a Mac that'll be relied upon to run for a few years without crashing . . . So . . . I've been trying to get advice/help with creating some kind of network of computers such that should one crash another will seamlessly take over, without a gap in the music. So far the only help I've had seems to advise translating the program and running it on PCs with operating systems I don't understand etc etc - in short I wonder why can't it be done on Macs. I'm sure it must be possible ! Has anyone ever tried such a thing ? Any advice ? Or ideas ? I'd love to hear. Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://easyweb.easynet.co.uk/artangel/finer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias Project George : http://www.isness.org/george ------------------------------ Date: Tue, 31 Aug 1999 18:58:55 +0100 From: finer@easynet.co.uk Subject: OSC I think I may have seen this question before - but I can't find it : Does Open Sound Control now work ? And if so is there any documentation about ? Cheers, Jem Jem Finer finer@easynet.co.uk Longplayer : http://easyweb.easynet.co.uk/artangel/finer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias Project George : http://www.isness.org/george ------------------------------ Date: Tue, 31 Aug 1999 13:18:15 -0600 From: James McCartney <---@---.---> Subject: Re: OSC At 11:58 AM -0600 8/31/99, finer@easynet.co.uk wrote: >I think I may have seen this question before - but I can't find it : > >Does Open Sound Control now work ? No, sorry. I've been delayed. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 31 Aug 1999 13:50:13 -0600 From: James McCartney <---@---.---> Subject: Re: Longplayer/Computer(s) that never stop At 11:58 AM -0600 8/31/99, finer@easynet.co.uk wrote: >Hello, > >Sorry if this is slightly not SC : > >I'm in the process of implementing a long running project, Longplayer, >which exists at the moment as an SC program - it creates a very long piece >of music . > >Problem is I've yet to find a Mac that'll be relied upon to run for a few >years without crashing . . . > I've run an SC program for a week straight. Garth Paine I beleive, ran a continuous 3 week installation using SC. I think that if you are in a set situation with a single program running, MacOS will stay running for a much longer time than if you are using it in a normal manner, i.e. starting and quitting programs, opening and closing documents and especially using the net. Once you are talking years though the OS matters less than the hardware. You will have a hardware failure at some point. (Apple does sell servers. Not sure if this is a way to go..) >systems I don't understand etc etc - in short I wonder why can't it be done >on Macs. > >I'm sure it must be possible ! > >Has anyone ever tried such a thing ? I would go ahead and try it. One thing I have noticed though is that an Audiomedia III can occasionally get 'derailed' by an inopportune disk or network interrupt if there is a high CPU load. It is fixed by opening and closing the Audio Setup dialog. This reinitializes the card. So the Audiomedia III might not be a good card to use in that situation. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 31 Aug 1999 13:58:07 -0600 From: James McCartney <---@---.---> Subject: [BOUNCE] RE: Longplayer/Computer(s) that never stop From: Eric Kuehnl <---@---.---> To: "'sc-users@lists.io.com'" Subject: RE: Longplayer/Computer(s) that never stop Date: Tue, 31 Aug 1999 11:45:58 -0700 I did an installation last year that was supposed to run indefinitely. I found that there was no way to prevent the Mac from crashing every few days. What you can do is buy a little ADB dongle thing that automatically reboots the machine after a crash. This may not be satisfactory for your situation. I'm sure it would be possible to have two computers running the same SC patch. The patch could have a secondary function of checking for a continuous audio or MIDI signal from the other computer. If the input were to go silent, you could reasonably assume the machine had crashed and have the backup machine take over. With the above mentioned ADB dongle the crashed machine would reboot after a minute or two and take over as the backup. You would be fine so long as the crashes didn't happen more than every few minutes. Not sure about the music having a continous flow. - -Eric - -----Original Message----- From: finer@easynet.co.uk [mailto:finer@easynet.co.uk] Sent: Tuesday, August 31, 1999 10:59 AM To: sc-users@lists.io.com Subject: Longplayer/Computer(s) that never stop Hello, Sorry if this is slightly not SC : I'm in the process of implementing a long running project, Longplayer, which exists at the moment as an SC program - it creates a very long piece of music . Problem is I've yet to find a Mac that'll be relied upon to run for a few years without crashing . . . So . . . I've been trying to get advice/help with creating some kind of network of computers such that should one crash another will seamlessly take over, without a gap in the music. So far the only help I've had seems to advise translating the program and running it on PCs with operating systems I don't understand etc etc - in short I wonder why can't it be done on Macs. I'm sure it must be possible ! Has anyone ever tried such a thing ? Any advice ? Or ideas ? I'd love to hear. Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://easyweb.easynet.co.uk/artangel/finer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias Project George : http://www.isness.org/george ------------------------------ Date: Tue, 31 Aug 1999 21:02:10 +0200 (CEST) From: "--||--<>-" <---@---.---> Subject: Re: Longplayer/Computer(s) that never stop >>systems I don't understand etc etc - in short I wonder why can't it be >>done >>on Macs. >> >>I'm sure it must be possible ! >> >>Has anyone ever tried such a thing ? >I would go ahead and try it. yeah, and dont forget to tell us the outcome in 3 years ... ;)))) std 0 ------------------------------ Date: Tue, 31 Aug 1999 14:01:00 -0600 From: James McCartney <---@---.---> Subject: [BOUNCE] RE: Longplayer/Computer(s) that never stop From: Eric Kuehnl <---@---.---> To: "'sc-users@lists.io.com'" Subject: RE: Longplayer/Computer(s) that never stop Date: Tue, 31 Aug 1999 11:50:38 -0700 The ADB device I mentioned in my previous post is called "MacCoach" and can be found for US$69 at Cyberian Outpost. http://www.outpost.com Good luck! - -Eric - -----Original Message----- From: finer@easynet.co.uk [mailto:finer@easynet.co.uk] Sent: Tuesday, August 31, 1999 10:59 AM To: sc-users@lists.io.com Subject: Longplayer/Computer(s) that never stop Hello, Sorry if this is slightly not SC : I'm in the process of implementing a long running project, Longplayer, which exists at the moment as an SC program - it creates a very long piece of music . Problem is I've yet to find a Mac that'll be relied upon to run for a few years without crashing . . . So . . . I've been trying to get advice/help with creating some kind of network of computers such that should one crash another will seamlessly take over, without a gap in the music. So far the only help I've had seems to advise translating the program and running it on PCs with operating systems I don't understand etc etc - in short I wonder why can't it be done on Macs. I'm sure it must be possible ! Has anyone ever tried such a thing ? Any advice ? Or ideas ? I'd love to hear. Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://easyweb.easynet.co.uk/artangel/finer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias Project George : http://www.isness.org/george --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 1 Sep 1999 02:45:31 +0200 (CEST) From: Pieter Suurmond <---@---.---> Subject: Re: Longplayer/Computer(s) that never stop Try something l!ke an S!l!con Graph!cs Indy. If you can *understand* SC you 'll sure be able to manage un!x && C++. {(unlike SC) It will never let the OS freeze or crash, and above all: There 's many very good books and manuals on C & unix}. To my op!n!on SC, or at least !ts manuals, are very ^crypt!c and 'd!fficult to read for (mus!c!an; composersHello, > >Sorry if this is slightly not SC : > >I'm in the process of implementing a long running project, Longplayer, >which exists at the moment as an SC program - it creates a very long piece >of music . > >Problem is I've yet to find a Mac that'll be relied upon to run for a few >years without crashing . . . > >So . . . I've been trying to get advice/help with creating some kind of >network of computers such that should one crash another will seamlessly >take over, without a gap in the music. So far the only help I've had seems >to advise translating the program and running it on PCs with operating >systems I don't understand etc etc - in short I wonder why can't it be done >on Macs. > >I'm sure it must be possible ! > >Has anyone ever tried such a thing ? >Any advice ? >Or ideas ? > >I'd love to hear. > >Thanks, > >Jem > > > >Jem Finer >finer@easynet.co.uk > >Longplayer : http://easyweb.easynet.co.uk/artangel/finer.html >Autodestruct/Marseille en Juin : http://www.chez.com/immedias >Project George : http://www.isness.org/george Pieter Suurmond Utrecht School of the Arts e-mail: pieter@kmt.hku.nl Music Technology department www: http://www.hku.nl/~pieter/ PO box 2471 phone: (+31) 35 6836464 1200 CL Hilversum fax: (+31) 35 6836480 Netherlands ------------------------------ Date: Wed, 1 Sep 1999 02:45:27 +0200 (CEST) From: Pieter Suurmond <---@---.---> Subject: The never ending TeaSpoon: Schudele_secs failed. Dear SC-people, We (wanna) analyze real-time violin-input. After machine detected 5 zero-crossings we would like a gra!n to be spawned (its length depending on measured time between two crossings). So we MUST? use external triggering to be able to pass duration as argument to TSpawn. We try scheduling here but synth.trepeat doesn't like it. Anyone any suggestions? ++ Is the following structure capable of producing OVERLAPPING TSpawns? (when actual Spawn-duration is greater than Schudele_secs). ++ What are we doing wrong here? (I *know* I am NOT doing any signal processing here, only patching some UGens). ( { arg synth; var t, yy, z, output, tsp, e, tt, ttt; e = Env.new(#[0,1,0],#[0.5, 0.5],'sine'); output = TSpawn.ar({ arg argTSpawn, i, synth, duration; EnvGen.ar(e, LFSaw.ar(440), 0, duration) }, 1, nil, 0); tsp = output.source; // To access TSpawn's // trigger-inp externally. z = SinOsc.ar(Line.ar(8000,50,0.01),0,0.1); // Test input-signal z. yy = PulseDivider.ar(Trig1.ar(z, 0.0001), // Zero-cross 5, // Count 5 crossings 0); tt = 1/max(600,ZeroCrossing.ar(yy)); // Duration between // 5 crossings in seconds. // tt = { arg y; 1/max(600,ZeroCrossing.ar(y)) }; // Referring to tt as a // FUNCTION doesn't work // either. synth.trepeat(0, { tt }, // Or "{ tt(yy) }" as // function? { tsp.trigger(0.4) } // In future we wanna pass ); // DURATION instead of 0.4 output // as argument to TSpawn. }.scope ) Thanks, <<<<<<<<<<<<<<<<<<<<<<<<<-////||\\\\->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Schreck Ensemble # -laboratory for l!ve electro-acoust!c mus!c- # The Netherlands schreck@xs4all.nl, arsche@stad.dsl.nl, pieter@kmt.hku.nl http://www.xs4all.nl/~schreck/ Tel: 00-31-71-5612287 Fax: 00-31-70-3859268 <<<<<<<<<<<<<<<<<<<<<<<<<-////||\\\\->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ------------------------------ Date: Tue, 31 Aug 1999 20:48:50 -0600 From: James McCartney <---@---.---> Subject: (off topic) Re: Longplayer/Computer(s) that never stop At 6:45 PM -0600 8/31/99, Pieter Suurmond wrote: >To my op!n!on SC, or at least !ts manuals, are very ^crypt!c and 'd!fficult >to read for (mus!c!an; composersWould however be n!ce when SC could be ported to un!x (so the OS >prevents you from reboot!ng every hour) or BE-OS (so !t w!ll become >really real-t!me). For the purposes of a real time audio app, BeOS is no more real time than using a sound card callback routine on MacOS. Both are just as real time. (I've been making a living programming BeOS since late 1995.) Now that Apple has announced the G4 machines today, SC on the Mac using Altivec will be much faster than a BeOS port. BeOS is interesting and I have been a proponent of it in the past, but it has some serious longevity problems I think. Since the OS is based on C++ they are stuck with a particular vtable format to maintain binary compatibility. C++ linkage is much more brittle than a simple C linkable API. Someday C++ will no longer be the language of choice. When that day comes, BeOS will have to be rewritten. Really the only advantage BeOS has is the SMP kernel and scheduler. Everything else in BeOS could be added to other systems. I'm not sure that this is enough to keep them going for the long term. One thing that worries me about BeOS is that for the only 20 or so lines of third party software listed in their IPO prospectus, I am responsible for two of them. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 31 Aug 1999 22:21:36 -0600 From: James McCartney <---@---.---> Subject: Re: The never ending TeaSpoon: Schudele_secs failed. At 6:45 PM -0600 8/31/99, Pieter Suurmond wrote: > tt = 1/max(600,ZeroCrossing.ar(yy)); // Duration between > // 5 crossings in seconds. > > synth.trepeat(0, > { tt }, // Or "{ tt(yy) }" as > // function? > { tsp.trigger(0.4) } // In future we wanna pass > ); // DURATION instead of 0.4 tt is a unit generator, not a number. You cannot use it as a number. It is not one. When you are creating a patch you are manipulating objects you are not doing math, even though it looks like math. a UGen + a UGen returns a binary operator UGen object that when played will sum the signals of the two UGens. It is not a number. ZeroCrossing.ar is a UGen max(600,ZeroCrossing.ar(yy)) is a BinOpUGen 1/max(600,ZeroCrossing.ar(yy)) is a BinOpUGen You can poll a UGen to get a value, but there is a better way to do what you have written above. You do not need to pass a value to the function. A function can get a value from its surrounding context all you have to do is set it. If I knew how you intended to derive your duration value, I'd show you. Here is a solution. I found a bug while making it. ( { arg outersynth; var yy, z, out, e, previousTime=0; e = Env.new(#[0,1,0],#[0.5, 0.5],'sine'); z = SinOsc.ar(MouseX.kr(1,200),0,0.1); // Test input-signal z. yy = PulseDivider.ar(z, 5); yy = Trig1.ar(z, 0.005); yy = OnePole.ar(yy, 0); // this is a workaround for a bug in the trigger // UGens reporting their end times incorrectly. // The OnePole has no end time. // Without the OnePole, the Trig1 erroneously tells // the TSpawn that it has come to an end and the // TSpawn stops.. // This will be fixed in the next release. out = TSpawn.ar( { arg spawn, i, innersynth; var time, duration; // calculate time from previous event and use that as a duration. // multiply duration by two so events overlap. time = outersynth.time; duration = (time - previousTime) * 2; previousTime = time; innersynth.channelOffset = 2.rand; // random channel PMOsc.ar( 3000.0.rand, 3000.0.rand, 3.0.rand, mul: EnvGen.ar(e, levelScale: 0.1, timeScale: duration * 2) ) }, 2, // two channels nil, yy); //4.do({ out = AllpassN.ar(out, 0.04, [0.04.rand, 0.04.rand], 2) }); out }.scope(0.2); ) --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Wed, 01 Sep 1999 09:50:39 +0200 From: Garth <---@---.---> Subject: Re: Longplayer/Computer(s) that never stop James McCartney wrote: > I've run an SC program for a week straight. Garth Paine I beleive, > ran a continuous 3 week installation using SC. > I think that if you are in a set situation with a single > program running, MacOS will stay running for a much longer time than > if you are using it in a normal manner, i.e. starting and quitting > programs, opening and closing documents and especially using the net. > Once you are talking years though the OS matters less than the hardware. > You will have a hardware failure at some point. > (Apple does sell servers. Not sure if this is a way to go..) I did run SC in an installation for 24 days non stop - no problems - this patch was being driven by and interactive interface using the VNS, so I was always receiving quite a lot of MIDI data, and remained stable. I only used the MAC sound I7O - line in and granulated output. I also do a lot of things in museums where I have to guarantee the system for 2 years and say it will work for at least 5. I dont use computers!!! Although many other companies use MAC#s to run interactives, and they say they are much more stable then PC#s. There are a number of devices around tht can hang on the adb port etc and check for activity on the CPU and restart the MAC if it has locked up. The problem for you is of course that it would start the piece from the beginning again. Sound like you need several rdundant machines and one to check them all and switch audio sourse to a machine that is active. Of course any one of them could go down at any moment - thats computers for you!!!! Aircraft always carry 3 compasses - so tthat, if one is reading differently to the others, they know which one is wrong. ------------------------------ Date: Wed, 01 Sep 1999 10:02:40 +0200 From: Staffan Liljegren <---@---.---> Subject: Take 2: Gina - using drumpani All, I changed this a little so the intro drum is now in two octaves and has a better tempo . I've also added some comments - -Staffan ( // Gina, la mina o la china ? // Staffan Liljegren, 990830, staffan@medialab.ericsson.se var bass,mel, rev,chor,e,drumpani,drum0,drum1; // a simple tunable drum with variable size and partials close to the timpani // 'dec' decides the size (eg attack decay and ring times of partials) // of the "drumpani" e = Env.new(#[1, 1, 0],#[1.4, 0.1]); drumpani = { arg dec,freq,amp,pan; var o; o=Klank.ar( `[[0.85,1,1.51,1.68,1.99,2.09, 2.44,2.67,2.79,2.89,2.99, 3.08, 3.19]*freq, Array.fill(12, { arg i; 1/(i+1) }).addFirst(0.5), Array.fill(13, { dec + (10*dec).linrand })], Decay2.ar(Impulse.ar(0),0.001,dec,GrayNoise.ar(0.01*amp)) ) * EnvGen.kr(e); Pan2.ar(o, pan); }; // "growing and shrinking" mid drums randomly panned in the middle drum0 = Pbind( \tempo, 2.2, \dec, Pseq([Pseries(0.05, 0.01, 24), Pseries(0.29, -0.01, 24)], inf), \amp, Pfunc({0.2+0.5.rand}), \pan, Pwhite(-0.2, 0.2), \degree, Prand([0,3,6, \rest, \rest], inf), \ugenFunc, drumpani, \dur, Prand([ Pseq([1/4], 4), Pseq([1/2],2)], 12) ); // low drums drum1 = Pbind( \tempo, 2.2, \octave, 4, \dec, Pseq([0.15,0.3], inf), \amp, Pfunc({0.4+0.3.rand}), \pan, Pwhite(-0.2, 0.2), \degree, Prand([0,3], inf), \ugenFunc, drumpani, \dur, Prand([ Pseq([ 0.5,2.5], 1), Pseq([ 1.5], 2)], 4) ); // Simple effects for chorus and reverb chor = {arg in; DelayL.ar(in, 0.05, [0.025+0.025.rand, 0.025+0.025.rand],1.0, in)}; rev = { arg in; 4.do({ in = AllpassN.ar(in, 0.04, [0.04.rand, 0.04.rand], 1.8,1.1); }); in}; mel = Pbind( \tempo, 2.2, \legato, 0.1, \amp, Pseq([0.3,0.1, 0.2,0.1], inf), \dur, 0.25, \pan, Pbrown(-1.0, -0.3, 0.3), \degree, Pshuf([0,0,0,4,4,5,5,\rest,6,6,6,7],4) + Prand( [0,0,0,0,[0,-6], [2,0], [0,-4]], 48) ); bass = Pbind( \tempo, 2.2, \legato, Pseq([0.1, 0.9],4), \amp, Pfunc({0.1+0.2.rand}), \dur, Pseq([3],4), \pan, Pbrown(0.3, 1.0, 0.2), \degree, Prand([-14,-14,-7, -7,-11,-10,-10, \rest,\rest], 4) ); Pseq([ // First drum pattern in two octaves with increasing tempo (=decreasing stretch) Pmulp(\stretch, Pgeom(2.0, 4/5, 4), Ppar([drum0, Pset(\octave,4,drum0)])), // First drum, bass and melody modulated and chorused Pfx(Paddp(\mtranspose, Pseq([0,2,-3],2), Ppar([drum0,bass,mel])), chor), // 2nd drum, bass and melody with different modulations and reverb Pmul(\stretch, 0.95, Pfx(Paddp(\mtranspose, Pseq([0,-4,4],2), Ppar([drum1,bass,mel])), rev)), // Speed up the drums even more Pmulp(\stretch, Pgeom(0.9, 0.9, 4), Ppar([drum0, Pset(\octave,4,drum0)])) ],1).play ) ------------------------------ Date: Wed, 1 Sep 1999 11:36:40 +0100 From: finer@easynet.co.uk Subject: long duration computing Thanks for all the replys to my long duration computing question - if anything else occurs please let me know ! The dongle/MacCoach option is good to know but probably no use in that it would break the flow of music. re Eric Kuenhl's suggestion : >I'm sure it would be possible to have two computers running the same SC >patch. The patch could have a secondary function of checking for a >continuous audio or MIDI signal from the other computer. If the input were >to go silent, you could reasonably assume the machine had crashed and have >the backup machine take over. Maybe the way to go . . . presumably each machine would have an audio in from the other(s) and a bit of SC code checking on the amplitude of the signal. Is there a way for SC to check the time and date so as to reset a crashed patch at a particular place ? Is it better to use an independant "clock" when trying to sync a number of Macs ? (And if so what/how ?) Sorry, I'm very ignorant of these matters. Jem ------------------------------ Date: Wed, 1 Sep 1999 07:56:41 -0400 From: David Crandall <---@---.---> Subject: Re: long duration computing On Wed, 1 Sep 1999 finer@easynet.co.uk wrote: > The dongle/MacCoach option is good to know but probably no use in that it > would break the flow of music. Well I wonder if a long delay line like a customized JamMan (correct name?) or some such could be sampling and holding audio (we'd only hear its output) and if the backup computer had been following along, it could then just pick up where the first left off. Or if a one-computer solution were in use, the sound would loop till the reboot was complete (the computer having saved its state every 30 sec or so and starting back from that point). After all, what's a 3 minute pause in a 5 year piece? If the piece were MIDI a buffer could be whacked together using some Motorola HC11's or whatever, that would simply not pass a note-off unless a valid program was generating it (or maybe those "stuck notes" would just naturally bridge the gap). But the idea of a non-computer sound project sounds intriguing (or better yet, non-electronic? a mechanical sound piece wouldn't necessarily ever have to "reboot," but lots of programming-related concepts could be used to set it up). I'll have to dig up your old posts on this project, it's got me thinking now.. dc ------------------------------ Date: Wed, 1 Sep 1999 14:10:56 +0100 From: finer@easynet.co.uk Subject: misconception vs MIDIOut This patch outputs a sine tone when incoming audio falls below a certain threshold - how do I get it to send out midi ? I've tried inserting MIDIOut(9).noteOn(1, 60,64) in various places but can't get it to work. (// outputs sine tone if AudioIn is off { var osc, noise, fsin, in, out; in = AudioIn.ar(1); osc = Amplitude.kr(in); //osc = Amplitude.kr(in); noise = in;//PinkNoise.ar(0.1); fsin = FSinOsc.ar(1000, 0.1); out = ((osc > 0.001) * (noise - fsin)) + fsin; }.scope; ) Thanks, Jem Jem Finer finer@easynet.co.uk Longplayer : http://easyweb.easynet.co.uk/artangel/finer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias Project George : http://www.isness.org/george ------------------------------ End of sc-users-digest V1 #57 *****************************