From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #371 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, October 20 2001 Volume 01 : Number 371 ---------------------------------------------------------------------- Date: Thu, 18 Oct 2001 13:25:30 -0500 (CDT) From: "Jeremiah T. Isaacs" <---@---.---> Subject: ibook benchmarks could someone with the iBook dual USB possibly post their oscillator benchmark results for that machine? thinking of getting the new one, which is faster, but looking for at least a general idea. and any comments on the overall machine would be appreciated. i am getting it mainly for supercollider, and no, unfortunately i dont think i can afford the titanium (: things i already realize no pcmcia = only firewire/usb for a better audio interface (which i dont need right now, hell, for performing sometimes i feel lucky to have stereo..) tia - jeremiah - -- http://www.io.com/~jti ------------------------------ Date: Thu, 18 Oct 2001 22:58:59 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: preloading multiple audio files >Hi martin (and others), > >I use similar code to load samples (in a buffer) and play them >with the playbuf object but I need to load again after initialization... > >_Is it possible to load new samples (with a Gui) >while the code is already running? sc2 no sc3 yes > >_Is it also possible to get rid of unwanted, loaded samples while the code >is running? yes, always, just set them nil. > >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), what you can always do is record a new signal while playing. but not from disk in sc2. you could have a look at http://swiki.hfbk.uni-hamburg.de:8080/MusicTechnology/140 for some sampling utility classes. ------------------------------ Date: Thu, 18 Oct 2001 17:53:11 -0400 From: felix <---@---.---> Subject: Re: preloading multiple audio files on 10/18/01 11:55 AM, Fabs Mogini at fabs.mogini@virgin.net wrote: > Hi martin (and others), > > I use similar code to load samples (in a buffer) and play them > with the playbuf object but I need to load again after initialization... > > _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: Fri, 19 Oct 2001 08:10:16 +0000 From: Jem Finer <---@---.---> Subject: Re: FFT bin extraction on 18/10/01 13:13, godpup@ix.netcom.com at godpup@ix.netcom.com wrote: > > sc-users@lists.io.com wrote: >> In SC2 is there a way to access individual bins ? >> Jem > > are you trying to extract individual frequency bands? > > ch. yes, I want to be able to extract any number and permutation of bands via GUI or some other from of control Jem ------------------------------ Date: Fri, 19 Oct 2001 15:47:21 -0400 From: "Adam Overton" <---@---.---> Subject: .ar/.kr vs .ar1/.kr1 hello everyone first of all, thanks to everyone who answered my soundfile loading questions... next what is the difference between .ar/.kr and .ar1/.kr1... thanks adam _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp ------------------------------ Date: Fri, 19 Oct 2001 17:16:10 -0400 From: Andrei <---@---.---> Subject: de Campo tutorial It looks to me like the version of the de Campo tutorial that comes with SC2.2.11 is older than the version that came with SC2.2.10. Andrei ------------------------------ Date: Fri, 19 Oct 2001 23:46:28 +0200 From: Julian Rohrhuber <---@---.---> Subject: Re: .ar/.kr vs .ar1/.kr1 >hello everyone > >first of all, thanks to everyone who answered my soundfile loading >questions... > >next > >what is the difference between .ar/.kr and .ar1/.kr1... > > >thanks >adam looking at the code, you see that in .ar/.kr there is a message 'multichannelPerform' and kr1/ar1. this is the reason for the possibility that if you have an array as an input to a UGen, the way multichannelPerform is defined, it will create an array of two ugens. SinOsc.ar([100, 345], 0, [0.1, 0.05]) is the same as [ SinOsc.ar(100, 0, 0.1), SinOsc.ar(345, 0, 0.05)] kr1 / ar1 will only produce one single ugen. ------------------------------ Date: Fri, 19 Oct 2001 23:48:28 +0200 From: Julian Rohrhuber <---@---.---> Subject: cannot filter modulo { var a,b,c; a = SinOsc.ar(100, 0, 0.02); b = SinOsc.ar(200, 0, 0.02); c = a % b; }.play; //this outputs silence. { var a,b,c; a = SinOsc.ar(100, 0, 0.1); b = SinOsc.ar(200, 0, 0.1); c = a % b; RLPF.ar(c, 1500, 0.4) }.play; maybe this is a result of the maths in the in filter? ------------------------------ Date: Fri, 19 Oct 2001 17:52:51 -0400 From: felix <---@---.---> Subject: Re: .ar/.kr vs .ar1/.kr1 on 10/19/01 5:46 PM, Julian Rohrhuber at sa6a014@rzaixsrv2.rrz.uni-hamburg.de wrote: >> hello everyone >> >> first of all, thanks to everyone who answered my soundfile loading >> questions... >> >> next >> >> what is the difference between .ar/.kr and .ar1/.kr1... >> >> >> thanks >> adam > > looking at the code, you see that in .ar/.kr there is a message > 'multichannelPerform' and kr1/ar1. > this is the reason for the possibility that if you have > an array as an input to a UGen, the way multichannelPerform is defined, > it will create an array of two ugens. > > SinOsc.ar([100, 345], 0, [0.1, 0.05]) > is the same as > [ SinOsc.ar(100, 0, 0.1), SinOsc.ar(345, 0, 0.05)] > > kr1 / ar1 will only produce one single ugen. > > the short answer being: don't worry about the kr1 ar1 methods. they don't concern you. under the hood stuff. it has to do with multichannel expansion. xr1 produces only a single ugen and expects only single inputs. ------------------------------ Date: Sat, 20 Oct 2001 02:44:51 -0400 From: christian adam hresko <---@---.---> Subject: Re: FFT bin extraction Jem Finer wrote: > on 18/10/01 13:13, godpup@ix.netcom.com at godpup@ix.netcom.com wrote: > > > > > sc-users@lists.io.com wrote: > >> In SC2 is there a way to access individual bins ? > >> Jem > > > > are you trying to extract individual frequency bands? > > > > ch. > > yes, I want to be able to extract any number and permutation of bands via > GUI or some other from of control > > Jem hmmm.... you might have to write your own SC3 plugin for this. are you trying to do this in realtime? i think a lot of the things people are trying to do with transforms, might be resolved with the implementation of an STFT. your resolution isn't as good, but it's faster. extracting and manipulating individual frequency bands/bins in realtime is CPU intensive (very). i think this might fall into the category of being too much for the SC interpreter. you might also have to take into consideration window overlapping. smaller overlaps will allow for a quicker inverse transform, larger window overlaps give better resolution. actually, can you even change the window overlap in SC? maybe, ch. ------------------------------ Date: Sat, 20 Oct 2001 19:31:17 -0500 From: Ian Pojman <---@---.---> Subject: PlugIn docs Hi list. Are there any docs out there describing SC 3's PlugIn api? Any developers out there working on them? Also, what is the "ProjectName Data" subfolder for? (the CWSettingsMacOS.stg file? I don't see how to specify that from within CW5 gold) RE: FFT bins... maybe it'd be nice if there was some kind of API for that - maybe a non-UGen plugin - I'm assuming those are just as feasible within the SC machine right? Ian ------------------------------ End of sc-users-digest V1 #371 ******************************