From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #374 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 Thursday, October 25 2001 Volume 01 : Number 374 ---------------------------------------------------------------------- Date: Wed, 24 Oct 2001 20:30:01 -0500 From: James McCartney <---@---.---> Subject: Re: Dartmouth-Symposium.hqx on 10/24/01 2:04 PM, Julian Rohrhuber at sa6a014@rzaixsrv2.rrz.uni-hamburg.de wrote: > >> Lost Features: >> Per event programmatic patch generation. >> This version only loads pregenerated code. That code is generated >> from SC code that looks much the same as before. >> A major feature of SC2 is lost, but this feature made small buffers >> difficult. > > vs. > >> Spawning new events is very much faster and is more real time friendly. > > I thought Spawn would generate patches per event. > What does programmatic patch generation mean in this case? You can only spawn a precompiled patch in sc server. You can still use programmatic patch building to functionally define a family of synths, but you cannot define them at the time of an event. They must be defined beforehand. There are ugens for random constants for patches that relied on that. Only a few examples in SC2 actually use programmatic patch building in a way that cannot be done in SC server. >> There is no longer .ar and .kr, you specify the clock division you want. > > will future sc code look like this? > > #{{ > RLPF(nil, Pulse(1, 200, 0.5, 0.1), SinOsc(64, 0.3, 1500, 1600), 0.2) > }.play}.send; about right. RLPF does not have a clock division argument because it uses the same clock division as its input signal. RLPF(Pulse(1, 200, 0.5, 0.1), SinOsc(64, 0.3, 1500, 1600), 0.2) - --- james mccartney james@audiosynth.com SuperCollider - a real time synthesis programming language for the PowerMac. ------------------------------ Date: Wed, 24 Oct 2001 19:34:28 -0700 (PDT) From: Lee Azzarello <---@---.---> Subject: Re: controllers, serial and otherwise On Wed, 24 Oct 2001, Jeremiah T. Isaacs wrote: > > Also, I remember some people were using Max and OSC to do this. Max is a > fairly expensive serial adapter (: and I am also suspicious that Max > would convert the serial data to midi internally anyway, defeating any > resolution gains I was hoping to get. In my experience, most commercial Joysticks are 7-bit resolution anyway. Even through the values are higher than 0-127, they just make lerger jumps. - -l[e^2] - ----------------- chmod -R 777 / chown -R nobody / imagine true freedom http://eds.org/~lee ------------------------------ Date: Thu, 25 Oct 2001 00:59:39 -0500 From: matrix6k <---@---.---> Subject: arpeggiators? Hi- Anyone got any voicer arpeggiators they'd be willing to share as an example ? thank you. - -michael _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com ------------------------------ Date: Thu, 25 Oct 2001 15:13:03 +0100 From: "Fabs Mogini" <---@---.---> Subject: Re: preloading multiple audio files felix martin and julian.. ...Thanks for your answers! At least I know what is not possible to do in SC2. FAbrice - ---------- >From: felix <---@---.---> >To: >Subject: Re: preloading multiple audio files >Date: Thu, Oct 18, 2001, 10:53 pm > > on 10/18/01 11:55 AM, Fabs Mogini at fabs.mogini@virgin.net wrote: > >> _Is it possible to load new samples (with a Gui) >> while the code is already running? > > you can't read the headers while synthesis is happening. you can read all > the headers you want before starting synthesis and then read the data when > you need it. you can save the headers to a text file and read that in (even > while playing), set the header info in sound file and then just pretend you > read the headers. see SoundFilePlayer in my library. > > >> >> _Is it also possible to get rid of unwanted, loaded samples while the code >> is running? > > when all references to the signal drop to 0 the gc monster comes out of his > little hole and drags off the corpses. > >> >> I plan to start to playing and looping the new sample only >> when it is sure it has been loaded (then I can wait for the next bar to >> start using it), > > when you start the loading process, set the signal to a clear buffer of 32 > samples (so it can be created with very little cpu). play that, it will be > quiet. when the sound file has read its data in, switch to that signal. > > > >> >> Any idea? >> Cheers >> fabrice Mogini >> >> ---------- >>> From: Martin Robinson <---@---.---> >>> To: sc-users@lists.io.com >>> Subject: Re: preloading multiple audio files >>> Date: Thu, Oct 18, 2001, 11:35 am >>> >> >>> Hi, >>> >>> Use arrays to avoid repeating code (including "if"s): > > you can also just forget the ifs. i mean what are you supposed to do if it > fails anyway ? it only happens if the samples moved or your path was > wrong. and if that's the case, you can't get on with your little > performance anyway. like we aren't used to having errors pop up in our face > that we have to figure out... > > >>> >>> ( >>> // no preload, loop >>> var numFiles = 2, filenames, files; >>> filenames = Array.fill(numFiles, { GetFileDialog.new.path }); >>> >>> files = Array.fill(numFiles, { SoundFile.new }); >>> if ( >>> files.every({ arg file, i; >>> file.readHeader(filenames.at(i)) >>> }), // read the file's header >>> >>> { // read was successful >>> files.do({ arg file, i; >>> file.sustainLoopStart = file.numFrames - 10000; >>> file.sustainLoopEnd = file.numFrames; >>> }); > > possible next improvement: > its a little more graceful to use a Spawn to loop over the files. then you > can get overlap / crossfade. set the Spawn event time to file.duration - > crossfadeTime > > You also might have a look at my library: SoundFilePlayer aka SFP > > files = Array.fill(numFiles,{ SFP.getNew }); > { > Mix.ar( > file.collect({ arg sfp; sfp.ar }) > ) > > }.play > > > there's also SFPLoop that loops a section. > > // wrap each sfp in a loop > files = files.collect({ arg sfp; SFPLoop(sfp) }); // default to loop the > whole thing > > > SFPSkip skips a section, SFPClip plays a smaller part of the file. > SFPRepeat that repeats a certain section. > > you can stack them on top of each other: > > SFPSkip( > SFPLoop( > SFP(path), > 10,20), //loop from 10 to 20 seconds > 3,8) //skip from 3 to 8 seconds > > > you can throw them into Patterns as well. > > > >>> >>> Synth.scope({ >>> Mix.ar( >>> files.collect({ arg file, i; >>> DiskIn.ar(file, true) * 0.4 >>> })/numFiles >>> ) >>> }, 0.5); >>> }); >>> ) >>> >>>> somewhat similar in nature to paul lansky's 'idle chatter'... >>> >>> [ 1, 1.25992, 1.49831 ] // equal tempered major triads >>> >>> >>> >>> -- >>> >>> >>> ..>>>>Martin Robinson :: (Ex)tractor :: && ________ >>>>>> <<<_[sonic arts]_[middlesex university]_[en4 8ht] ______ >>> ________________________________________________________________ >>> ________________________________________________________________ >>>>> <<>>___t.+44 [0] 7970 405 903 // f.+44 [0] 7970 702 976 __ >>>>> <><>____e. _ >>> >>> >> >> > ------------------------------ Date: Thu, 25 Oct 2001 11:04:10 -0400 From: felix <---@---.---> Subject: SC Server My friend has developed the open source mp3 dj tool GDAM (its on sourceforge). that also uses a client / server separation using x-windows. its running on os x now. it does sequencing, lots of filtering, time effects, auto beat matching etc. etc. the client can be on a separate machine from the audio engine. they have one issue right now. if the client dies, the processes it started keep playing. they just need something to allow selective killing of processes. it runs on osx now, using x-windows and gtk (the gimp's tool kit). x-windows is a windowing system (kind of like the finder), gtk is a graphic tool kit. gtk works now under x-windows, but eventually will be able to run natively in osx. x-windows is kind of fun anyway. the gui stuff is built using GLADE which is an open source gui-builder (sliders, buttons etc.) that saves as XML. i imagine there is some kind of application proxy (like apple's os x interface builder ). so GLADE is a good candidate for useful gui building to talk to SC server. so is IB. simplistic little cocoa tutorial: IB lets you build a gui, and save it as a file. the actions of the sliders etc. are pointed at a proxy application. when your application starts up, it re-constitutes the gui from the file, and the actions then are directed via the proxy to your application. and vice versa. we can develop a useful framework in various languages with which to talk to the server. i have felt for a long time that there really is no point in anyone on this list or james wasting their time building up GUI stuff when there are many mature frameworks out there. no one has ever complimented me on my gui, but i've got lots of compliments for my sound :) i very much enjoy writing audio code in sc (language). its very suited to it. i've been messing around with power loom (lisp ontological knowledgebase) and open prolog. tried porting a couple of logic programming concepts into sc, but doing inference engines and all that.... a waste for me to attempt it. and i don't have a doctorate in AI. but i've got some good object selection systems going so far. re: buffers are there any other systems that do per sample calculation ? perhaps SC could intelligently guess a good buffer size if you don't supply one. then it could optimise itself. and when we know better or require it, we can specify. on 10/23/01 9:11 PM, Arie van Schutterhoef at arsche@xs4all.nl said: >> Here's the "slides" for the Dartmouth talk. Actually an SC file. >> >> ftp://www.audiosynth.com/pub/misc/dartmouth-symposium.hqx > > "SuperCollider Server, a new architecture. > language and synth engine are two separate apps. > MacOS X command line > communication via Open Sound Control > http://www.cnmat.berkeley.edu/OSC > the synth engine can be controlled by things other than the SC language > still experimental, performance not yet fully characterized." > > -amazingly how similar changes towards 'becoming a server' is > also being applied to Ircam jMax 3 (Read Norbert Schnell at > http://www.ircam.fr/listes/archives/jmax/msg02705.html): > "While until now the server needed > the client for startup, configuration > and file handling, in jMax 3 the server > FTS can run completely independent form > its client in any context." > > AvS > > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > ................................................................. > > ^ Arie van Schutterhoef | arsche@xs4all.nl > ^_北北北北北北北北北北北盻_""""""""""""""""""""""""""""""""" | > ` |Schreck Ensemble http://www.xs4all.nl/~schreck/ | > ` |# -laboratory for live electro-acoustic music- # | > ` |Tel: 00-31-71-5612287 Fax: 00-31-70-3859268 | > > *========================================================++ > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > ................................................................. > > > > ------------------------------ Date: Thu, 25 Oct 2001 18:49:00 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: Dartmouth-Symposium.hqx > > > I thought Spawn would generate patches per event. >> What does programmatic patch generation mean in this case? > >You can only spawn a precompiled patch in sc server. >You can still use programmatic patch building to functionally define a >family of synths, but you cannot define them at the time of an event. >They must be defined beforehand. >There are ugens for random constants for patches that relied on that. >Only a few examples in SC2 actually use programmatic patch building in a way >that cannot be done in SC server. so something like that: Spawn.ar({ arg spawn, i; if(i.even, { PSinGrain.ar(100 + 800.rand, 0.01, 0.1) }, { Line.kr(1, 0, 0.1)*Saw.ar(100 + 800.rand, 0.1) }); }, 1, 0.1); would have to be expressed entirely differently, replacing 800.rand by Rand(800) and the if statement by something entirely different? > > >>> There is no longer .ar and .kr, you specify the clock division you want. >> >> will future sc code look like this? >> >> #{{ >> RLPF(nil, Pulse(1, 200, 0.5, 0.1), SinOsc(64, 0.3, 1500, 1600), 0.2) >> }.play}.send; > >about right. RLPF does not have a clock division argument because it uses >the same clock division as its input signal. > >RLPF(Pulse(1, 200, 0.5, 0.1), SinOsc(64, 0.3, 1500, 1600), 0.2) so we can still have the .ar / .kr expression as *ar { ... args; this.performList(args.addFirst(1)) } *kr { ... args; this.performList(args.addFirst(64)) } (if anyone cares...) ------------------------------ Date: Thu, 25 Oct 2001 19:00:04 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: SC Server >My friend has developed the open source mp3 dj tool GDAM >(its on sourceforge). that also uses a client / server separation using >x-windows. its running on os x now. > >... >it runs on osx now, using x-windows and gtk (the gimp's tool kit). >x-windows is a windowing system (kind of like the finder), gtk is a graphic >tool kit. gtk works now under x-windows, but eventually will be able to >run natively in osx. x-windows is kind of fun anyway. what did you need to get x-windows running on osx? > >i have felt for a long time that there really is no point in anyone on this >list or james wasting their time building up GUI stuff when there are many >mature frameworks out there. > >no one has ever complimented me on my gui, but i've got lots of compliments >for my sound :) > >i very much enjoy writing audio code in sc (language). its very suited to >it. I've been enjoying writing gui stuff in sc3, and I think it is worth having one langage for audio and gui as you can translate concepts and overcome certain control paradigms. of course, sc hasn't yet allowed to make a 'magic, separate' app out of a program, so maybe now is the time to do that in other frameworks and let them talk to the sc server. ------------------------------ Date: Thu, 25 Oct 2001 12:26:18 -0500 From: Ian Pojman <---@---.---> Subject: Re: SC Server On Thursday, October 25, 2001, at 12:00 PM, Julian Rohrhuber wrote: >> My friend has developed the open source mp3 dj tool GDAM >> (its on sourceforge). that also uses a client / server separation >> using >> x-windows. its running on os x now. >> >> ... >> it runs on osx now, using x-windows and gtk (the gimp's tool kit). >> x-windows is a windowing system (kind of like the finder), gtk is a >> graphic >> tool kit. gtk works now under x-windows, but eventually will be able >> to >> run natively in osx. x-windows is kind of fun anyway. > > what did you need to get x-windows running on osx? > It's easy. http://sourceforge.net/projects/xonx >> >> i have felt for a long time that there really is no point in anyone on >> this >> list or james wasting their time building up GUI stuff when there are >> many >> mature frameworks out there. >> >> no one has ever complimented me on my gui, but i've got lots of >> compliments >> for my sound :) >> >> i very much enjoy writing audio code in sc (language). its very >> suited to >> it. > > I've been enjoying writing gui stuff in sc3, and I think it is worth > having > one langage for audio and gui as you can translate concepts and overcome > certain control paradigms. > of course, sc hasn't yet allowed to make a 'magic, separate' app out > of a > program, so maybe now is the time to do that in other frameworks and let > them talk to the sc server. > I think separating the synth engine from the controlling element makes SC as much more versatile as SC2 is compared to other apps.. I cant wait to write cocoa apps to interface with it. It's not the fact that the apps can be separate that is so cool - its that we can use awesome APIs like Cocoa with SC, without hitches! No limitations. ------------------------------ Date: Thu, 25 Oct 2001 19:28:53 +0200 From: heiko goelzer <---@---.---> Subject: ArrayND > This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. - --B_3086882933_269750 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit dear users, here is something like a pre-release version of my ArrayND-approach. It should give you a handler for n-dimensional arrays. the idea for this thing was in original from julian and felix. at this point i want to thank for the help on this nasty piece of code. at some point i was about to go mad with thinking in multi dimensions. i hope you can enjoy it. there is a copy of a help-file from the mathworks matlab distribution on how indexing works for n-dimensional matrices. i also added some basic sample patches as an intro. at the moment i am concerned with hardware issues so that more refined examples and applications of this quite abstract work have to wait. tell me if something is not working properly or if questions arise. all the best heiko ps.: yes i changed the name from ArrayXD to ArrayND. - --B_3086882933_269750 Content-type: application/octet-stream; name="ArrayND_25.10.01.sit"; x-mac-creator="53495421"; x-mac-type="53495435" Content-disposition: attachment Content-transfer-encoding: base64 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 /////wAAAAAAAAAAAAA= - --B_3086882933_269750-- ------------------------------ Date: Thu, 25 Oct 2001 19:41:46 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: SC Server > >It's easy. >http://sourceforge.net/projects/xonx thank you. > >>> >>>i have felt for a long time that there really is no point in anyone on this >>>list or james wasting their time building up GUI stuff when there are many >>>mature frameworks out there. >>> >>>no one has ever complimented me on my gui, but i've got lots of compliments >>>for my sound :) >>> >>>i very much enjoy writing audio code in sc (language). its very suited to >>>it. >> >>I've been enjoying writing gui stuff in sc3, and I think it is worth having >>one langage for audio and gui as you can translate concepts and overcome >>certain control paradigms. >>of course, sc hasn't yet allowed to make a 'magic, separate' app out of a >>program, so maybe now is the time to do that in other frameworks and let >>them talk to the sc server. >> >I think separating the synth engine from the controlling element >makes SC as much more versatile as SC2 is compared to other apps.. I agree in that. What I meant was the language concept of sc which is very neat, independant of whether you are doing GUI or sound. Of course it is better to be able to cross-interface as well. A question about aesthetics: I can't imagine the cocoa api to be limited to the aqua look and feel - Are there Interface builders that are independent of this appearance? ------------------------------ Date: Thu, 25 Oct 2001 13:19:45 -0500 From: Ian Pojman <---@---.---> Subject: Re: SC Server > > I agree in that. > What I meant was the language concept of sc which is very neat, > independant > of whether you are doing GUI or sound. Of course it is better to be > able to > cross-interface as well. > > A question about aesthetics: > I can't imagine the cocoa api to be limited to the aqua look and feel - Whats wrong with the Aqua l&f? :D > Are there Interface builders that are independent of this appearance? InterfaceBuilder is an application distributed with OS X devtools. You could use any interface builder, though, if you mean WYSIWYG GUI app IDE's. Take a WYSIWYG Java IDE for example...... ------------------------------ Date: Thu, 25 Oct 2001 13:32:54 -0700 From: THOMAS P MILEY <---@---.---> Subject: Re: OSC question - followup First, Thanks to Garry and Newton for helping on this. After doing some re-configuring I got things working. I had to make some adjustments. Some of the changes are noted below. To review; I was trying to get 2 machines linked through my EtherLan hub to communicate. I tried various combinations. First I tried Newton's suggestion: > Connect via: Ethernet > Configure: Manually > IP Address: 205.45.67.2 > Router address: 127.0.0.1 This worked for the loopback case. The most important thing here seemed to be setting the router address to 127.0.0.1. I did not have to specify a subnet mask, I let the Mac TCP/IP program configure it automatically. > If you're not on a LAN, you should be able to use whatever IP's you want, so > long as they are on the same subnet. > > For example: > > machine 1: 127.111.10.01 > machine 2: 127.111.10.02 I could get this to work provided that I did not do the following: > Since both machines are on the same hub and router, use > 255.255.255.0 as your subnet mask, though I'm not sure you need it. The > router address should be the address of the one your hub is uplinked to. > I could use either IP address (205.45.67.1 and .2, or 127.111.10.01 and .02), NOT specify a subnet mask, and SPECIFY 127.0.0.1 as the Router address. I haven't tried to use this configuration over the internet yet, so things could change... > > Hope this helps... let us know if either recommendation doesn't work, and be > sure to include the tcp/ip settings. Thanks again, Thomas Miley ------------------------------ Date: Thu, 25 Oct 2001 14:45:59 -0700 From: Garry Kling <---@---.---> Subject: Re: OSC question - followup on 25/10/2001 01:32 PM, THOMAS P MILEY at tmiley@prodigy.net wrote: >> Since both machines are on the same hub and router, use >> 255.255.255.0 as your subnet mask, though I'm not sure you need it. The >> router address should be the address of the one your hub is uplinked to. >> Oops! I'm sorry I wasn't clear - this is my setup here, as I am on a LAN. In the case that you are on a LAN, your sys admin can specify the TCP/IP info anyway (provided you do not use a DHCP server). Sorry for the confusion/bad advice. I'm still not clear on this myself, but it works for me. When you go over the internet, you should probably be somewhere with a static IP to make things easier. When you use the internet, you'll have to use your own dedicated IP addresses, so your OSC messages will go to where you expect them to. I haven't tried anything across the internet yet, so when you figure that out, you can help us! ;) Garry - -- /* * Garry Kling * MAT UC Santa Barbara * kling007@earthlink.net * */ ------------------------------ Date: Thu, 25 Oct 2001 23:58:59 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: ArrayND >dear users, > >here is something like a pre-release version of my ArrayND-approach. It >should give you a handler for n-dimensional arrays. the idea for this thing >was in original from julian and felix. at this point i want to thank for the >help on this nasty piece of code. at some point i was about to go mad with >thinking in multi dimensions. i hope you can enjoy it. there is a copy of a >help-file from the mathworks matlab distribution on how indexing works for >n-dimensional matrices. i also added some basic sample patches as an intro. >at the moment i am concerned with hardware issues so that more refined >examples and applications of this quite abstract work have to wait. tell me >if something is not working properly or if questions arise. > >all the best > > heiko > >ps.: yes i changed the name from ArrayXD to ArrayND. > thanks! this must have been a major brainwarp. ------------------------------ Date: Fri, 26 Oct 2001 00:14:44 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: OSC question - followup >To review; I was trying to get 2 machines linked through my EtherLan hub to >communicate. I tried various combinations. First I tried Newton's >suggestion: > > > > Connect via: Ethernet >> Configure: Manually >> IP Address: 205.45.67.2 >> Router address: 127.0.0.1 > >This worked for the loopback case. The most important thing here seemed to >be setting the router address to 127.0.0.1. I did not have to specify a >subnet mask, I let the Mac TCP/IP program configure it automatically. > >> If you're not on a LAN, you should be able to use whatever IP's you want, so >> long as they are on the same subnet. >> >> For example: >> >> machine 1: 127.111.10.01 >> machine 2: 127.111.10.02 > >I could get this to work provided that I did not do the following: >> Since both machines are on the same hub and router, use >> 255.255.255.0 as your subnet mask, though I'm not sure you need it. The >> router address should be the address of the one your hub is uplinked to. >> > >I could use either IP address (205.45.67.1 and .2, or 127.111.10.01 and >.02), NOT specify a subnet mask, and SPECIFY 127.0.0.1 as the Router >address. I haven't tried to use this configuration over the internet yet, >so things could change... > >> >> Hope this helps... let us know if either recommendation doesn't work, and be >> sure to include the tcp/ip settings. > >Thanks again, > >Thomas Miley normally when you're inside a lan you have the 192.168. ip space which is per definition the ip when you have a gateway between you and the internet. (But might be different in your special case, of course) We used to have the following setup: ip: 192.168.172.x router 192.168.127.254 (has to be the same subnet in all cases!) netmask has to be same on all machines, as far as I know. when doing stuff over the net, like the elevator client/server, the ip starts with the same two numbers as the name server. Some firewalls don't allow udp, but can (of course) be selectively opened. I don't know if this applies to your situation, but maybe it helps. ------------------------------ End of sc-users-digest V1 #374 ******************************