From sc-users-owner@bga.com Wed Jan 1 14:10:04 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id OAA08798 for sc-users-outgoing; Wed, 1 Jan 1997 14:10:04 -0600 Received: from cliff.cris.com (cliff.cris.com [199.3.12.45]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id OAA08756 for ; Wed, 1 Jan 1997 14:10:00 -0600 Received: from [206.173.169.42] (cnc158042.concentric.net [206.173.169.42]) by cliff.cris.com (8.8.3/(96/11/08 1.11)) id PAA21514; Wed, 1 Jan 1997 15:09:57 -0500 (EST) [1-800-745-2747 The Concentric Network] Date: Wed, 1 Jan 1997 15:09:57 -0500 (EST) X-Sender: boldrsnd@pop3.concentric.net (Unverified) Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: sc-users@bga.com From: boldrsnd@concentric.net (Dennis Burns) Subject: Re: Grain demo distortion Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com >How large is the sound file? 1.8 seconds >Are you running something else in the background? no. > Could be another program getting the CPU for bursts. >Are you outputting to Digidesign drivers? no. >Are you writing to disk? I've tried it both ways, writng to disk and not writing. >Are you running with virtual memory on and using more RAM than you have? no. > You could be swapping. I have found that the setting that I'm using on the grain demo may be overloading SC somehow. When I input the sample FLOATING_1 I also run into the same problem. I'll try to approximate my graphical setting below: pr | * | pd |* | pq |* | tr | * | td | * | tq | * | gd | * | overlp | *| vol | *| >The majority of the space used is for audio buffers which you declare. >Buffers use 4 byte floats. You should be able to compute the size >you need by adding up the sizes of the buffers you declare and adding >about 4 Mb for overhead. Does the paragraph above refer to the settings in GLOBALS? Is the "space used is for audio buffers" set by the frame and subsize. I'm assuming so, but I rather be totally clear on this. Also I'm not sure I received an answer from ypou on the question; How much memory should be given to SC? I believe the "recommended size" is just under 5 megs. Will SC run somoother with more RAM alloted to it? Thanks for your patience and Happy New Year! Dennis Burns Bolder Sounds Boulder,Colorado CD ROM "Eclectic" in Akai and K2000 format Reviewed in the June issue of "Electronic Musician" Reviewed in "Sound On Sound" Sept. 1996 http://www.concentric.net/~boldrsnd/ From sc-users-owner@bga.com Wed Jan 1 16:47:06 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id QAA28613 for sc-users-outgoing; Wed, 1 Jan 1997 16:47:06 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id QAA28599 for ; Wed, 1 Jan 1997 16:46:59 -0600 Received: from [128.83.253.132] (slip-66-4.ots.utexas.edu [128.83.253.132]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id QAA27568 for ; Wed, 1 Jan 1997 16:48:01 -0600 Message-Id: In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 1 Jan 1997 15:45:48 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: Grain demo distortion Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 3:09 PM -0500 1/1/97, Dennis Burns wrote:> I have found that the setting that I'm using on the grain demo may >be overloading SC somehow. When I input the sample FLOATING_1 I also run >into the same problem. > I'll try to approximate my graphical setting below: > > pr | * | > pd |* | > pq |* | > > tr | * | > td | * | > tq | * | > > gd | * | > overlp | *| > vol | *| > > Oh, well then you're just overloading your PowerPC. There is a limit to the amount of overlap for a given CPU. The faster your CPU the higher you can set the overlap. Overlap is equivalent to the number of simulaneous voices. >>The majority of the space used is for audio buffers which you declare. >>Buffers use 4 byte floats. You should be able to compute the size >>you need by adding up the sizes of the buffers you declare and adding >>about 4 Mb for overhead. > > Does the paragraph above refer to the settings in GLOBALS? Is the >"space used is for audio buffers" set by the frame and subsize. I'm >assuming so, but I rather be totally clear on this. > Also I'm not sure I received an answer from ypou on the question; >How much memory should be given to SC? I believe the "recommended size" is >just under 5 megs. Will SC run somoother with more RAM alloted to it? Lets say you have the following : defaudioin Lin, Rin; defaudioout L, R; defaudiobuf buf1; defdelay d1(30.0); -- thirty second delay line and your frame size is set to 4096. so for each audioin or audioout : size = 4096 * 2 (double buffering) * 4 (bytes per float); so total for these buffers is 32K bytes, peanuts.. For the audiobuf it depends on the size of the AIFF/SD2 file. Since files are stored in 16 bits and loaded as 32 bit floats the memory requirement is about twice the file size. For your 1.8 second sound this is: size = 1.8 * 44100 * 4 = 310K; again well within the capability of the standard size setting. For the thirty second delay line the size is: size = 30 * 44100 * 4 = 5Mb. In this case you should boost the application size to 9Mb or so. You can always find out how much memory is available by using the Free Memory menu command. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Thu Jan 2 02:35:10 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id CAA06199 for sc-users-outgoing; Thu, 2 Jan 1997 02:35:10 -0600 Received: from cliff.cris.com (cliff.cris.com [199.3.12.45]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id CAA06190 for ; Thu, 2 Jan 1997 02:35:07 -0600 Received: from [206.173.169.45] (cnc158045.concentric.net [206.173.169.45]) by cliff.cris.com (8.8.3/(96/11/08 1.11)) id DAA23054; Thu, 2 Jan 1997 03:35:04 -0500 (EST) [1-800-745-2747 The Concentric Network] Date: Thu, 2 Jan 1997 03:35:04 -0500 (EST) X-Sender: boldrsnd@pop3.concentric.net Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: sc-users@bga.com From: boldrsnd@concentric.net (Dennis Burns) Subject: Re: Grain demo distortion Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com James, Thanks for your informative reply. I'll give it a go. >>>The majority of the space used is for audio buffers which you declare. >>>Buffers use 4 byte floats. You should be able to compute the size >>>you need by adding up the sizes of the buffers you declare and adding >>>about 4 Mb for overhead. >> >> Does the paragraph above refer to the settings in GLOBALS? Is the >>"space used is for audio buffers" set by the frame and subsize. I'm >>assuming so, but I rather be totally clear on this. >> Also I'm not sure I received an answer from ypou on the question; >>How much memory should be given to SC? I believe the "recommended size" is >>just under 5 megs. Will SC run somoother with more RAM alloted to it? > >Lets say you have the following : > >defaudioin Lin, Rin; >defaudioout L, R; >defaudiobuf buf1; >defdelay d1(30.0); -- thirty second delay line > >and your frame size is set to 4096. > >so for each audioin or audioout : > >size = 4096 * 2 (double buffering) * 4 (bytes per float); > >so total for these buffers is 32K bytes, peanuts.. > >For the audiobuf it depends on the size of the AIFF/SD2 file. >Since files are stored in 16 bits and loaded as 32 bit floats the >memory requirement is about twice the file size. For your 1.8 second >sound this is: > >size = 1.8 * 44100 * 4 = 310K; >again well within the capability of the standard size setting. > >For the thirty second delay line the size is: > >size = 30 * 44100 * 4 = 5Mb. >In this case you should boost the application size to 9Mb or so. > >You can always find out how much memory is available by using the >Free Memory menu command. > > > > --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com >If you have a PowerMac check out SuperCollider, a real time synth program: >ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-dem >o.hqx Dennis Burns Bolder Sounds Boulder,Colorado CD ROM "Eclectic" in Akai and K2000 format Reviewed in the June issue of "Electronic Musician" Reviewed in "Sound On Sound" Sept. 1996 http://www.concentric.net/~boldrsnd/ From sc-users-owner@bga.com Sun Jan 5 12:16:55 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id MAA13915 for sc-users-outgoing; Sun, 5 Jan 1997 12:16:55 -0600 Received: from maelzel.ircam.fr ([129.102.1.10]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id MAA13887 for ; Sun, 5 Jan 1997 12:16:40 -0600 Received: from hildegard.ircam.fr (hildegard.ircam.fr [129.102.144.17]) Received: from [129.102.145.33] (mac-pedago-studio-assist.ircam.fr [129.102.145.33]) by hildegard.ircam.fr (8.7.5/jtpda-5.2/ircam) with SMTP id TAA01798 for ; Sun, 5 Jan 1997 19:16:37 +0100 (MET) Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Mailer: Eudora F1.5.1 Date: Sun, 5 Jan 1997 19:17:58 +0100 To: sc-users@bga.com From: Richard.Dudas@ircam.fr (dudas) Subject: for-do fondue Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com Dear sc-users, I've been doing a bit of basic Scheme programming recently (the Ircam physical modelling software, Modalys, has a Scheme-based text interface -- heaven only knows why), and thus I've been getting carried away with lists and vectors of objects and all of the do-while and for-do loops which automatically create them. I probably shouldn't have tried to do it in SC... but IT WORKS BEAUTIFULLY! (Despite a certain loss in efficiency.) SuperCollider is indeed a very supple, elegant language! I was actually hoping that using for-do loops would be MORE efficient than writing it all out by hand, but it's not. Anyway, I thought I'd share my test with you all. The following program has three "instruments" -- test1, test2 and test3 -- which all do the same thing: sum up 5 oscillators. Each test does it in a slightly different way. I suggest using one at a time to see how much of the CPU each one uses. (My favourite one is the first, because you can give it a list of frequencies of any size without having to define extra oscillators.) Have fun! -Richard Here's the program: ----------------------------------------------------------------------- -- vectortest - RD 1997 -- These are some tests I made to compare the efficiency of using lists to -- automatically-generate vectors of oscillators. It's too bad that test1, -- which seems to me a very flexible and elegant way of summing up a (variable) -- number of oscillators, uses just over the double of my cpu (on a 7600/132) -- when compared to the long way of doing the summation (test3), albeit with -- a fixed number of oscillators. -- Is there no way of optimizing the compilation of this type of thing? -- Or perhaps an optimization of my for-do loop code?? -- --------------------------------------------------- defaudioout L R; start{ -- choose one of the three to test: test1; --test2; --test3; } -- --------------------------------------------------- test1 { -- uses about 19-21% of the cpu (with 5 freqs) osclist = []; freqlist = [110 220 330 550 770]; -- even add a few more frequencies! for i=0; i; Wed, 8 Jan 1997 17:34:09 -0600 Received: (from lasCCS@localhost) by hamp.hampshire.edu (8.7.3/8.7.3) id SAA02642; Wed, 8 Jan 1997 18:36:05 -0500 (EST) Date: Wed, 8 Jan 1997 18:36:05 -0500 (EST) From: Lee A Spector <---@---.---> To: sc-users@bga.com Subject: Re: non-midi control of SuperCollider? In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com On Tue, 31 Dec 1996, James McCartney wrote: [about the ADB I/O device and using it to control SC] > Their code currently operates synchronously, meaning that when you > poll for data it waits until it gets some. This is bad for SuperCollider. > It looks possible to rewrite it for asynchronous operation, but I > need to ask them a couple of questions. Thanks for looking into this James. If you can provide an interface for the ADB I/O then SCers will be able to control their patches with anything that can send a control voltage or vary a resistance -- directly & without MIDI. Short of this, an AppleEvents hook in SC would also help -- although one would have to use another application to talk to the ADB I/O, one could at least avoid MIDI. -- Lee Spector Asst. Professor of Computer Science E-mail: lspector@hampshire.edu School of CCS, Hampshire College WWW: http://hampshire.edu/~lasCCS/ Amherst, MA 01002 Phone: 413-582-5352, Fax: 413-582-5438 From sc-users-owner@bga.com Thu Jan 9 23:20:54 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id XAA05746 for sc-users-outgoing; Thu, 9 Jan 1997 23:20:54 -0600 Received: from halley.planet.it ([194.21.24.8]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id XAA05731 for ; Thu, 9 Jan 1997 23:20:51 -0600 Received: from pluto.planet.it ([194.21.24.1]) by halley.planet.it (post.office MTA v2.0 0813 ID# 167-30114U1010) with ESMTP id AAA26448 for ; Thu, 9 Jan 1997 22:44:01 +0100 Received: (from root@localhost) by pluto.planet.it (8.7.1/8.7.1) id WAA19997; Thu, 9 Jan 1997 22:59:46 +0100 Received: from zoom.bga.com (zoom.realtime.net [205.238.128.40]) by pluto.planet.it (8.7.1/8.7.1) with SMTP id AAA00395 for ; Thu, 9 Jan 1997 00:56:16 +0100 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id RAA29138 for sc-users-outgoing; Wed, 8 Jan 1997 17:34:12 -0600 Received: from hamp.hampshire.edu (lasCCS@hamp.hampshire.edu [192.33.12.137]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id RAA29113 for ; Wed, 8 Jan 1997 17:34:09 -0600 Received: (from lasCCS@localhost) by hamp.hampshire.edu (8.7.3/8.7.3) id SAA02642; Wed, 8 Jan 1997 18:36:05 -0500 (EST) Date: Wed, 8 Jan 1997 18:36:05 -0500 (EST) From: Lee A Spector <---@---.---> To: sc-users@bga.com Subject: Re: non-midi control of SuperCollider? In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com On Tue, 31 Dec 1996, James McCartney wrote: [about the ADB I/O device and using it to control SC] > Their code currently operates synchronously, meaning that when you > poll for data it waits until it gets some. This is bad for SuperCollider. > It looks possible to rewrite it for asynchronous operation, but I > need to ask them a couple of questions. Thanks for looking into this James. If you can provide an interface for the ADB I/O then SCers will be able to control their patches with anything that can send a control voltage or vary a resistance -- directly & without MIDI. Short of this, an AppleEvents hook in SC would also help -- although one would have to use another application to talk to the ADB I/O, one could at least avoid MIDI. -- Lee Spector Asst. Professor of Computer Science E-mail: lspector@hampshire.edu School of CCS, Hampshire College WWW: http://hampshire.edu/~lasCCS/ Amherst, MA 01002 Phone: 413-582-5352, Fax: 413-582-5438 From sc-users-owner@bga.com Mon Jan 13 17:21:29 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id RAA01989 for sc-users-outgoing; Mon, 13 Jan 1997 17:21:29 -0600 Received: from crl.dec.com (crl.dec.com [192.58.206.2]) by zoom.bga.com (8.6.12/8.6.12) with SMTP id RAA01971 for ; Mon, 13 Jan 1997 17:21:25 -0600 Received: by crl.dec.com; id AA23155; Mon, 13 Jan 97 17:52:59 -0500 X-Sender: Eirikur@jamin.lkg.dec.com Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Mon, 13 Jan 1997 17:52:45 -0500 To: From: Eirikur Hallgrimsson <---@---.---> Subject: Slow random control.... and chaos Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com I want to have a parameter in a program that is varied as though it were by an analog sample+hold of noise, as clocked by an LFO. Has anyone done this? I'd love to be bailed-out. This seems like a resonable thing to want. I didn't see anything builtin that really did it. I rather expected to find an LFO with a random waveform, but didn't. I tried to do this with Klatch of Knoise triggered by Ksinosc, but didn't get it to work. Ideally, I would have then used Klag to provide smoothing, giving me three controls: Rate Lag Amplitude I would then see about playing with the type of Knoise, and the frequency parameter, which I don't really understand. --------------- Chaos.... I'd really love to play with a chaotic signal generator. I just realized that I could probably process an audiobuff to replace it with a chaotic signal, but there may be roadblocks there, too. Eirikur Eirikur Hallgrimsson eh@ranger.enet.dec.com Generic Epistemologist "We are here because, like Dr. Frankenstein, we crave the creation, the birth. We speak in a magical language that < 1% of the population even vaguely comprehends. We hang at bars playing darts, drinking cheap beer, and discussing iterations, instances, and interrupts." -- Tyler C. Regas From sc-users-owner@bga.com Mon Jan 13 18:04:59 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id SAA09732 for sc-users-outgoing; Mon, 13 Jan 1997 18:04:59 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id SAA09721 for ; Mon, 13 Jan 1997 18:04:57 -0600 Received: from [128.83.111.48] (slip-25-16.ots.utexas.edu [128.83.111.48]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id SAA02305 for ; Mon, 13 Jan 1997 18:06:06 -0600 Message-Id: In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Mon, 13 Jan 1997 17:04:16 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: Slow random control.... and chaos Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 5:52 PM -0500 1/13/97, Eirikur Hallgrimsson wrote: >I want to have a parameter in a program that is varied as though it were by >an analog sample+hold of noise, as clocked by an LFO. > >Has anyone done this? I'd love to be bailed-out. > >This seems like a resonable thing to want. I didn't see anything builtin >that really did it. I rather >expected to find an LFO with a random waveform, but didn't. Anoise0 or Knoise0 both produce a wave form that steps between random values. The frequency parameter tells how many times per second that the value changes. e.g. osc = Knoise0(10); returns a noise generator that generates 10 random values per second. >--------------- > >Chaos.... I'd really love to play with a chaotic signal generator. I >just realized that I could >probably process an audiobuff to replace it with a chaotic signal, but >there may be roadblocks there, too. You can use waveFill() to fill an audio buffer with any function you want. It is not very fast though so it is only useful as a way to initialize a buffer, not fill it in real time. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Tue Jan 21 21:15:39 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id VAA10365 for sc-users-outgoing; Tue, 21 Jan 1997 21:15:39 -0600 Received: from tango.create.ucsb.edu (create.ucsb.edu [128.111.92.40]) by zoom.bga.com (8.6.12/8.6.12) with SMTP id VAA10341 for ; Tue, 21 Jan 1997 21:15:34 -0600 Received: by tango.create.ucsb.edu (4.1/SMI-4.1) id AA12436; Tue, 21 Jan 97 19:06:18 PST From: stp@create.ucsb.edu (Stephen Travis Pope) Message-Id: <9701220306.AA12436@tango.create.ucsb.edu> Date: Tuesday, 21 Jan 97 7:10:34 pm Subject: "note lists" in SC To: sc-users@bga.com Fonts: 953 1 Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com Hello all, I'd like a simple SC program that allows me to write (or import) Music-V-style note lists, e.g., note(start_time, duration, other_params); note(start_time, duration, other_params); ... I tried using the "[time, call].sched" message in the start function, as in start { [0, instrument(args)].sched [1, instrument(args)].sched ... } but all notes played simultaneously. I tried writing a separate function (outside of start{}) to do the scheduling, with the same results. I also tried using tempo bases as described in the manual, but got consistent compiler error messages about a too-short list used with sched. I know that I *could* store the note-list in a 2-D array and write a function to read through it, sort the notes by instrument, and call the instrument functions with the inter-note delays (calling [].sched from within the instrument), but it seems like there ought to be an easier way. What am I missing? stp Stephen Travis Pope, Center for Research in Electronic Art Technology (CREATE), Department of Music, U. of California, Santa Barbara (UCSB) Editor--Computer Music Journal, MIT Press stp@create.ucsb.edu, http://www.create.ucsb.edu/~stp/ From sc-users-owner@bga.com Tue Jan 21 21:30:51 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id VAA12909 for sc-users-outgoing; Tue, 21 Jan 1997 21:30:51 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id VAA12892 for ; Tue, 21 Jan 1997 21:30:47 -0600 Received: from [128.83.112.77] (slip-38-13.ots.utexas.edu [128.83.112.77]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id VAA20002 for ; Tue, 21 Jan 1997 21:32:03 -0600 Message-Id: In-Reply-To: <9701220306.AA12436@tango.create.ucsb.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Tue, 21 Jan 1997 20:30:30 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: "note lists" in SC Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 7:10 AM +0000 1/21/97, Stephen Travis Pope wrote: >Hello all, > >I'd like a simple SC program that allows me to write (or import) >Music-V-style note lists, e.g., > > note(start_time, duration, other_params); > note(start_time, duration, other_params); > ... > >I tried using the "[time, call].sched" message in the start function, as in > > start { > [0, instrument(args)].sched > [1, instrument(args)].sched > ... > } > >but all notes played simultaneously. I tried writing a separate function You are calling the function and then passing its result to the scheduler. You need to schedule the function itself. Do this: (encase each call in a function block ) start { [0, { instrument(args) } ].sched [1, { instrument(args) } ].sched ... } Or this: (pass a pointer to the functions and a list of args) start { [0, `instrument arg1, arg2, argN ].sched [1, `instrument arg1, arg2, argN ].sched ... } --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Tue Jan 21 21:37:58 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id VAA13918 for sc-users-outgoing; Tue, 21 Jan 1997 21:37:58 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id VAA13906 for ; Tue, 21 Jan 1997 21:37:56 -0600 Received: from [128.83.112.77] (slip-38-13.ots.utexas.edu [128.83.112.77]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id VAA20013 for ; Tue, 21 Jan 1997 21:39:11 -0600 Message-Id: In-Reply-To: References: <9701220306.AA12436@tango.create.ucsb.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Tue, 21 Jan 1997 20:37:38 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: "note lists" in SC Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com Also note that there is a limit of 511 to how many things you can schedule at once. If you want to schedule a long list of things, you should use a function that makes one call at a time and reschedules itself. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Wed Jan 22 01:11:19 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id BAA17310 for sc-users-outgoing; Wed, 22 Jan 1997 01:11:19 -0600 Received: from hurricane.netspace.net.au (hurricane.netspace.net.au [203.10.110.65]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id BAA17292 for ; Wed, 22 Jan 1997 01:11:16 -0600 Received: from [203.33.160.69] (dialup-m5-69.Melbourne.netspace.net.au [203.33.160.69]) by hurricane.netspace.net.au (8.8.4/8.7.1) with SMTP id SAA27226 for ; Wed, 22 Jan 1997 18:09:02 +1100 (EST) X-Sender: nfrayne@pop.netspace.net.au Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 22 Jan 1997 18:11:27 +1100 To: sc-users@bga.com From: nfrayne@netspace.net.au (NIGEL FRAYNE) Subject: new lister comment Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com Hi all This is a bit of a dud way to begin my time on this list ... Just wanted to say how surprised I was to discover this list - by accident. While I'm a low res user of SuperC I am very impressed with it and intend investing some real time to get to grips with it - therefore I look to this list as very relevant reading, if not a resource for help. Wouldn't it be a good idea to advise SuperC owners of the existence of this list? Looking forward to lots more contact.... NF. _______________________________________ NIGEL FRAYNE MELBOURNE AUSTRALIA nfrayne@netspace.net.au _______________________________________ From sc-users-owner@bga.com Wed Jan 22 09:40:54 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id JAA12678 for sc-users-outgoing; Wed, 22 Jan 1997 09:40:54 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id JAA12658 for ; Wed, 22 Jan 1997 09:40:49 -0600 Received: from [128.83.251.94] (slip-56-14.ots.utexas.edu [128.83.251.94]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id JAA21176 for ; Wed, 22 Jan 1997 09:42:04 -0600 Message-Id: In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 22 Jan 1997 08:40:32 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: new lister comment Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 6:11 PM +1100 1/22/97, NIGEL FRAYNE wrote: >Hi all > > >This is a bit of a dud way to begin my time on this list ... > >Just wanted to say how surprised I was to discover this list - by accident. >While I'm a low res user of SuperC I am very impressed with it and intend >investing some real time to get to grips with it - therefore I look to this >list as very relevant reading, if not a resource for help. > >Wouldn't it be a good idea to advise SuperC owners of the existence of this >list? When I started the list I emailed everyone who gave me an address with their order. Everyone who received SC after that got a sheet of paper telling how to sign up. Sorry if I missed you.. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Wed Jan 22 12:48:23 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id MAA21441 for sc-users-outgoing; Wed, 22 Jan 1997 12:48:23 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id MAA21428 for ; Wed, 22 Jan 1997 12:48:21 -0600 Received: from [128.83.251.94] (slip-56-14.ots.utexas.edu [128.83.251.94]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id MAA22205 for ; Wed, 22 Jan 1997 12:49:38 -0600 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 22 Jan 1997 11:48:00 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: customers lost in cyberspace Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com If anyone knows email addresses for the following customers, I would appreciate it. Please reply directly to me, not the list. Paul Harkness CAL State Hayward Dee Copley Electro-Acoustic Music Hanover, NH Dajuin Yao Oakland, CA 94618 Robb Drinkwater The Art Institute of Chicago Bonnie Gilman Bard College Hirofumi Saito San Francisco, CA 94102 Gerald Bennett Swiss Center for Computer Music John Rehberger Montclair, NJ 07042 --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Wed Jan 22 13:25:24 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id NAA27944 for sc-users-outgoing; Wed, 22 Jan 1997 13:19:40 -0600 Received: from dune.artic.edu (dune.artic.edu [198.40.25.4]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id NAA27554 for ; Wed, 22 Jan 1997 13:17:16 -0600 Received: from [198.40.23.186] (23186.artic.edu [198.40.23.186]) by dune.artic.edu (8.8.4/8.8.4) with SMTP id NAA22344; Wed, 22 Jan 1997 13:17:09 -0600 (CST) Date: Wed, 22 Jan 1997 13:17:09 -0600 (CST) Message-Id: <199701221917.NAA22344@dune.artic.edu> X-Sender: edeuts@198.40.25.4 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: sc-users@bga.com From: emd@artic.edu (E. Michael Deutscher) Subject: Re: customers lost in cyberspace Cc: rdrink@artic.edu Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com >If anyone knows email addresses for the following customers, I would >appreciate it. Please reply directly to me, not the list. ... >Robb Drinkwater >The Art Institute of Chicago ... I think his address is rdrink@artic.edu . My cc will bounce if it's not. --Mike E. Michael Deutscher Department of Art and Technology / Department of Sound The School of the Art Institute of Chicago 112 S. Michigan Ave., Chicago IL 60603 Phone: 312-345-3558, Fax: 312-345-3565 From sc-users-owner@bga.com Fri Jan 24 04:28:40 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id EAA21473 for sc-users-outgoing; Fri, 24 Jan 1997 04:28:40 -0600 Received: from berlin.shuttle.de (berlin.shuttle.de [194.95.246.252]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id EAA21459 for ; Fri, 24 Jan 1997 04:28:35 -0600 Received: from [194.95.246.124] (p124.b.shuttle.de [194.95.246.124]) by berlin.shuttle.de (8.8.3/8.7.1) with SMTP id LAA12135; Fri, 24 Jan 1997 11:28:15 +0100 (MET) Message-ID: <32E88273.12CB@musik.b.shuttle.de> Date: Fri, 24 Jan 1997 11:35:47 +0200 From: Staatliches Institut fuer Musikforschung PK <---@---.---> Organization: SIM - Berlin X-Mailer: Mozilla 3.0 (Macintosh; I; 68K) MIME-Version: 1.0 To: sc-users@bga.com CC: Hans.Tutschku@ircam.fr Subject: Table save/read bug. File saving problems References: <9701220306.AA12436@tango.create.ucsb.edu> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com Hello, 1. Table saving/reading a while ago (dec. 96) I sent here code for saving /reading tables to/from file. This code had problems due to the limit of items allocated to lists at a time (128 items). The problems are not due to the code but to SC handling of file I/O in conjunction with list construction (append). James, you told me to bother you again if you do not answer, which I do here. 2. File problems. The same problem notice also by others, of files not being saved correctly, happened to me again on a Pulsar 225 MHz machine with 80MB, 50 of them allocated to SC, while saving files, repeatedly. Situation: 1. Save a file. 2. Edit the code, but do not compile or run it. 3. Try menu item Save as under "File" menus. The menu item changes to "Saved Audio As..." 4. As soon as the save dialog box is checked OK, an error appears: No audio in R or L. 5. When trying to reload the new file error message: out of memory (or something similar) occurs, and the loaded file is empty. In similar situations as above (not documented) the machine crashes when trying to reload the file. I have kept copies of the corrupted files and will send them to you soon. Regards Ioannis Zannos SIM From sc-users-owner@bga.com Fri Jan 24 04:56:48 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id EAA24604 for sc-users-outgoing; Fri, 24 Jan 1997 04:56:48 -0600 Received: from berlin.shuttle.de (berlin.shuttle.de [194.95.246.252]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id EAA24579 for ; Fri, 24 Jan 1997 04:56:30 -0600 Received: from [194.95.246.124] (p124.b.shuttle.de [194.95.246.124]) by berlin.shuttle.de (8.8.3/8.7.1) with SMTP id LAA14426; Fri, 24 Jan 1997 11:56:14 +0100 (MET) Message-ID: <32E88903.1C7A@musik.b.shuttle.de> Date: Fri, 24 Jan 1997 12:03:46 +0200 From: Staatliches Institut fuer Musikforschung PK <---@---.---> Organization: SIM - Berlin X-Mailer: Mozilla 3.0 (Macintosh; I; 68K) MIME-Version: 1.0 To: sc-users@bga.com Subject: [Fwd: Re: freadlist readlimit problem. Table2File, File2Table.] Content-Type: multipart/mixed; boundary="------------2C3026537385" Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com This is a multi-part message in MIME format. --------------2C3026537385 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Here again the problematic code for Table2File File2Table. Perhaps the problem is when rounding the indiex in the tablefil function? Ioannis Zannos SIM --------------2C3026537385 Content-Type: message/rfc822 Content-Transfer-Encoding: 7bit Content-Disposition: inline Received: from [194.95.246.124] (p124.b.shuttle.de [194.95.246.124]) by berlin.shuttle.de (8.7.5/8.7.1) with SMTP id KAA01041; Thu, 7 Nov 1996 10:46:47 +0100 (MET) Message-ID: <3281BECE.5446@musik.b.shuttle.de> Date: Thu, 07 Nov 1996 10:49:53 +0000 From: Ioannis Zannos <---@---.---> Reply-To: iani@musik.b.shuttle.de Organization: SIM X-Mailer: Mozilla 3.0 (Macintosh; I; PPC) MIME-Version: 1.0 To: sc-users@bga.com Subject: Re: freadlist readlimit problem. Table2File, File2Table. References: Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii James McCartney wrote: > > I will look at these.. If I don't respond, bug me again. > > --- james mccartney james@clyde.as.utexas.edu Here is the complete code again, that is supposed to bypass the 128 item size limit in lists problem. There are still "jumps" at the seams when export-importing tables. Please have a look, or respond as to correcting the length limits of readlist / readline. There are jumps in 2 places when reloading the saved table! When this problem is fixed, then the following file would be a fine utility for everybody to save and load their tables. -------------------------------------------------------------- defaudioin Lin Rin; defaudioout L R; deftable t1 t2 t3 t4 t5; init { addMenuCmd('load table', `loadTable); addMenuCmd('save table', `saveTable); } start { } ------------ GENERAL USER QUERIES getTableFromUser { var tablename, theTable; tablename = (getStringFromUser("t1", "enter table name:")); theTable = tablename.spell.list2sym.resolveName; if (\table == theTable.type) then ^theTable; else ^0; end.if; } ------------ LOADING TABLES loadTable { var filename tablename theTable theData; filename = (getStringFromUser("xm:sc:TABLES:", "enter full file name:")); readTableFromFile(filename, getTableFromUser); } readTableFromFile { arg filename theTable; var theData; if theTable then theData = filename.readListFromFile; list2Table(theData, theTable); end.if; } list2Table { arg theList theTable; -- theList.post; waveFill( theTable, { arg ind curval tabind; ^theList @@ (ind.round(1)); }, 0, theList.size - 1); } readListFromFile { arg filename; var result theData; ['reading file', filename].post; fid = fopen(filename 'r'); if fid == \ then 'FILE NOT FOUND'.post; else result = []; while (theData = freadlist(fid)).size > 0 do result $! theData; end; end.if; fclose(fid); -- 'DATA READ!'.post; ^result; } ------------ SAVING TABLES saveTable { var filename tablename theTable theData; filename = (getStringFromUser("xm:sc:TABLES:", "enter full file name:")); saveTableToFile(filename, getTableFromUser); } table2List { arg theTable; result = []; for i = 0; i < 512; i = i + 1 do result.add(theTable.waveAt(i)); end.for; ^result; } saveTableToFile { arg filename theTable; var theData; if theTable then theData = table2List(theTable); saveListToFile(theData, filename); end.if; } saveListToFile { arg theData, filename; ['writing file', filename].post; fid = fopen(filename 'w'); if fid == \ then 'FILE NOT FOUND'.post; else theData.fwritelist(fid); end.if; fclose(fid); } X-Mozilla-Status: 0010 Content-Length: 4225 --------------2C3026537385-- From sc-users-owner@bga.com Fri Jan 24 11:55:45 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id JAA25054 for sc-users-outgoing; Fri, 24 Jan 1997 09:06:54 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id JAA25042 for ; Fri, 24 Jan 1997 09:06:52 -0600 Received: from [128.83.254.101] (slip-75-5.ots.utexas.edu [128.83.254.101]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id JAA28376; Fri, 24 Jan 1997 09:08:09 -0600 Message-Id: In-Reply-To: <32E88273.12CB@musik.b.shuttle.de> References: <9701220306.AA12436@tango.create.ucsb.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Fri, 24 Jan 1997 09:06:36 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: Table save/read bug. File saving problems Cc: Hans.Tutschku@ircam.fr Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 11:35 AM +0200 1/24/97, Staatliches Institut fuer Musikforschung PK wrote: >Hello, > >1. Table saving/reading > >a while ago (dec. 96) I sent here code for saving >/reading tables to/from file. This code had problems >due to the limit of items allocated to lists at a time >(128 items). The problems are not due to the code >but to SC handling of file I/O in conjunction with >list construction (append). James, you told >me to bother you again if you do not answer, which I do here. Part of this is the read limit of 255 chars. I'll look at it this weekend. > >2. File problems. > >The same problem notice also by others, of files not being >saved correctly, happened to me again on a Pulsar 225 MHz >machine with 80MB, 50 of them allocated to SC, while saving >files, repeatedly. >Situation: >1. Save a file. >2. Edit the code, but do not compile or run it. >3. Try menu item Save as under "File" menus. > The menu item changes to "Saved Audio As..." >4. As soon as the save dialog box is checked OK, an > error appears: No audio in R or L. >5. When trying to reload the new file error message: > out of memory (or something similar) occurs, and > the loaded file is empty. >In similar situations as above (not documented) the machine >crashes when trying to reload the file. > >I have kept copies of the corrupted files and will send them to >you soon. I'll look at it. thanks, --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Tue Jan 28 17:06:11 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id QAA03004 for sc-users-outgoing; Tue, 28 Jan 1997 16:49:01 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id QAA02993 for ; Tue, 28 Jan 1997 16:48:59 -0600 Received: from [128.83.253.117] (slip-65-5.ots.utexas.edu [128.83.253.117]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id QAA11309 for ; Tue, 28 Jan 1997 16:50:19 -0600 X-Sender: james@clyde.as.utexas.edu (Unverified) Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Tue, 28 Jan 1997 16:48:53 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Manual errata Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com 1) The following functions which are stated to operate in place actually do not and allocate a new list : stutter, pyramid, rotate, slide, flop, flat, flatten --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Tue Jan 28 23:28:14 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id XAA19440 for sc-users-outgoing; Tue, 28 Jan 1997 23:28:14 -0600 Received: from europe.std.com (europe.std.com [199.172.62.20]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id XAA19424 for ; Tue, 28 Jan 1997 23:28:07 -0600 Received: from world.std.com by europe.std.com (8.7.5/BZS-8-1.0) id AAA20209; Wed, 29 Jan 1997 00:28:05 -0500 (EST) Received: from [192.0.2.1] (world.std.com) by world.std.com (5.65c/Spike-2.0) id AA21822; Wed, 29 Jan 1997 00:28:01 -0500 Date: Wed, 29 Jan 1997 00:28:01 -0500 X-Sender: landon@world.std.com (Unverified) Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: sc-users@bga.com From: landon@world.std.com (Landon Rose) Subject: granulation questions Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com I am working on a simple program using Apgrain. Actually have already used a version of it in performance. All I want to do is be able to very precisely control the rate which the Apgrain function "scrolls through" the soundfile. Initially I created a GUI which controlled the 'offset' argument of the function. Worked fine but not very precise, especially if I want the granulation of a 1.5 sec soundfile to last for example for exactly 28 seconds. Before my specific questions here's what I finally came up with: defaudioout L R; defaudiobuf OneSound; init { loadAllAudio ; } start { scroll; } scroll { amp = Apgrain(OneSound, now/20 , 1.0 , 0.14 , 1.0 , `dspRemove); { ( amp.value ).out(L).out(R); }.dspAdd(1); [ (0.02) thisFunc ].sched; } This version falls short altho it accomplishes the basic idea. It doesn't allow me to create a envelope to controll the offset start time through the file. Initially I tried the ramp functions (not envelopes, but I thought a reasonable place to begin) Aline, Kline, and Pline. Took me awhile to realize the obvious- each time the start function rescheduled, the ramp function rescheduled also, thus never creating a ramp! At least I think that's what's happening. I tried scheduling 'amp' or 'Apgrain' which didn't work and scheduling 'scroll' crashes the program. Thus if the only way to schedule the Apgrain function is to schedule the 'start' function, how do I schedule a function which the 'offset' argument of Apgrain can poll? Landon Rose From sc-users-owner@bga.com Tue Jan 28 23:42:04 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id XAA17200 for sc-users-outgoing; Tue, 28 Jan 1997 23:14:59 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id XAA17183 for ; Tue, 28 Jan 1997 23:14:56 -0600 Received: from [128.83.111.164] (slip-33-4.ots.utexas.edu [128.83.111.164]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id XAA12131 for ; Tue, 28 Jan 1997 23:16:14 -0600 Message-Id: In-Reply-To: <32E88903.1C7A@musik.b.shuttle.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Tue, 28 Jan 1997 23:14:50 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: [Fwd: Re: freadlist readlimit problem. Table2File, File2Table.] Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 12:03 PM +0200 1/24/97, Staatliches Institut fuer Musikforschung PK wrote: >Here again the problematic code for Table2File File2Table. >Perhaps the problem is when rounding the indiex in the >tablefil function? Here is the code you posted rewritten to solve the problem. The problem is that freadlist can only read and parse lines of 1023 chars. fwritelist/freadlist are only meant to write out lists of about 64 values max. The idea was to support writing event parameter lists. The easiest solution is to just put the samples one per line. Also, waveFill is meant to evaluate functions. If you just want to fill a table sample by sample it is easier just to use wavePut() in a for loop. You don't have to worry about the rounding that you tried to do with waveFill Here's the new code. The original code will follow it. -------------------------------------------------------------- defaudioin Lin Rin; defaudioout L R; deftable t1 t2 t3 t4 t5; init { addMenuCmd('load table', `loadTable); addMenuCmd('save table', `saveTable); } start { } ------------ GENERAL USER QUERIES getTableFromUser { var tablename, theTable; tablename = (getStringFromUser("t1", "enter table name:")); theTable = tablename.spell.list2sym.resolveName; if (\table == theTable.type) then ^theTable; else ^0; end.if; } ------------ LOADING TABLES loadTable { var filename tablename theTable theData; filename = (getStringFromUser("xm:sc:TABLES:", "enter full file name:")); readTableFromFile(filename, getTableFromUser); } readTableFromFile { arg filename theTable; var theData; if theTable then theData = filename.readListFromFile; list2Table(theData, theTable); end.if; } list2Table { arg theList theTable; -- theList.post; -- theList is a list of lists of two elements: [index, value] -- the following loop puts each value at its index in the table for i=0; i 0 do result.add(theData); end; -- the result list is a list of lists end.if; fclose(fid); -- 'DATA READ!'.post; ^result; } ------------ SAVING TABLES saveTable { var filename tablename theTable theData; filename = (getStringFromUser("xm:sc:TABLES:", "enter full file name:")); saveTableToFile(filename, getTableFromUser); } table2List { arg theTable; -- create a list of lists of [index, value] from the table result = []; for i = 0; i < 512; i = i + 1 do result.add([i, theTable.waveAt(i)]); end.for; ^result; } saveTableToFile { arg filename theTable; var theData; if theTable then theData = table2List(theTable); saveListToFile(theData, filename); end.if; } saveListToFile { arg theData, filename; ['writing file', filename].post; fid = fopen(filename 'w'); if fid == \ then 'FILE NOT FOUND'.post; else theData.forEach({ arg sublist; sublist.fwritelist(fid); }); end.if; fclose(fid); } >would be a fine utility for everybody to save and load their tables. >-------------------------------------------------------------- >defaudioin Lin Rin; >defaudioout L R; >deftable t1 t2 t3 t4 t5; > >init { > addMenuCmd('load table', `loadTable); > addMenuCmd('save table', `saveTable); >} > >start { } > >------------ GENERAL USER QUERIES > >getTableFromUser { var tablename, theTable; > tablename = (getStringFromUser("t1", "enter table name:")); > theTable = tablename.spell.list2sym.resolveName; > if (\table == theTable.type) then ^theTable; else ^0; end.if; >} > >------------ LOADING TABLES > >loadTable { var filename tablename theTable theData; > filename = (getStringFromUser("xm:sc:TABLES:", "enter full file >name:")); > readTableFromFile(filename, getTableFromUser); >} > >readTableFromFile { arg filename theTable; var theData; > if theTable then > theData = filename.readListFromFile; > list2Table(theData, theTable); > end.if; >} > >list2Table { arg theList theTable; > -- theList.post; > waveFill( theTable, > { arg ind curval tabind; ^theList @@ (ind.round(1)); }, > 0, theList.size - 1); } > >readListFromFile { arg filename; > var result theData; > ['reading file', filename].post; > fid = fopen(filename 'r'); > if fid == \ > then 'FILE NOT FOUND'.post; > else > result = []; > while (theData = freadlist(fid)).size > 0 > do result $! theData; end; > end.if; > fclose(fid); -- 'DATA READ!'.post; > ^result; >} > >------------ SAVING TABLES > >saveTable { var filename tablename theTable theData; > filename = (getStringFromUser("xm:sc:TABLES:", "enter full file >name:")); > saveTableToFile(filename, getTableFromUser); >} > >table2List { arg theTable; > result = []; > for i = 0; i < 512; i = i + 1 do > result.add(theTable.waveAt(i)); > end.for; > ^result; >} > >saveTableToFile { arg filename theTable; var theData; > if theTable then > theData = table2List(theTable); > saveListToFile(theData, filename); > end.if; >} > >saveListToFile { arg theData, filename; > ['writing file', filename].post; > fid = fopen(filename 'w'); > if fid == \ > then 'FILE NOT FOUND'.post; > else theData.fwritelist(fid); > end.if; > fclose(fid); >} --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Wed Jan 29 00:32:42 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id AAA28413 for sc-users-outgoing; Wed, 29 Jan 1997 00:32:42 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id AAA28395 for ; Wed, 29 Jan 1997 00:32:38 -0600 Received: from [128.83.111.164] (slip-33-4.ots.utexas.edu [128.83.111.164]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id AAA12278 for ; Wed, 29 Jan 1997 00:33:57 -0600 Message-Id: In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 29 Jan 1997 00:32:33 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: granulation questions Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 12:28 AM -0500 1/29/97, Landon Rose wrote: > how do I schedule a function >which the 'offset' argument of Apgrain can poll? This is a good question and the solution illustrates how to use dsp stages to implement global controllers over many other events. The solution is to have two processes. One process calculates the control function and puts the value into a variable that the other process can access. The second process schedules a lot of small grains. The control process is put in dsp stage 0 and the grain events are put into dsp stage 1. This insures that the offset value is calculated first each control period. Here's a working example: defaudioout L R; defaudiobuf floating_1; init { loadAllAudio; } start { grainInstrument(floating_1, 1.0, 28.0); } grainInstrument { arg buf, rate, dur, amp = 0.1, graindur = 0.14, overlap = 6.0; var offset; -- the offset value will be stored here. -- set a flag that the grain process will check before rescheduling runFlag = 1; -- create and start the control process -- the completion function clears the run flag. -- graindur is subtracted from the buffer duration to prevent wrap around offsetUgen = Kline(0, timeOf(buf)-graindur, dur, { runFlag = 0; dspRemove; }); { offset = offsetUgen.value; }.dspAdd(0); -- calculate a time interval to reschedule grains schedTime = graindur/overlap; -- the following function schedules many grains. -- It must have a separate context because it will reschedule -- new copies of itself, and each copy needs a separate copy -- of the 'osc' variable. The function wrapper provides this. value({ -- play a grain osc = Apgrain(buf, offset, rate, graindur, amp, `dspRemove); { osc.value.out(L).out(R); }.dspAdd(1); -- reschedule as long as the control process is still active. -- uses schednj to prevent uneven grain scheduling if runFlag then [schedTime, thisFunc].schednj end.if }); } Aside: >I tried scheduling 'amp' or 'Apgrain' which didn't work and scheduling >'scroll' crashes the program. A possible reason why you crashed: You should always make sure to schedule a pointer to a function and not call the function. [0.1, myfunc].sched; -- this is usually the wrong thing to do. -- myfunc is called and its RESULT is scheduled. [0.1, `myfunc].sched; -- this is how to schedule a function If however myfunc is a function returning a function then you must know what you are doing so ignore this warning. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Wed Jan 29 06:43:05 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id GAA02278 for sc-users-outgoing; Wed, 29 Jan 1997 06:37:03 -0600 Received: from berlin.shuttle.de (berlin.shuttle.de [194.95.246.252]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id GAA02258 for ; Wed, 29 Jan 1997 06:36:58 -0600 Received: from [194.95.246.124] (p124.b.shuttle.de [194.95.246.124]) by berlin.shuttle.de (8.8.3/8.7.1) with SMTP id NAA05376; Wed, 29 Jan 1997 13:36:44 +0100 (MET) Message-ID: <32EF3818.5283@musik.b.shuttle.de> Date: Wed, 29 Jan 1997 13:44:24 +0200 From: Staatliches Institut fuer Musikforschung PK <---@---.---> Organization: SIM - Berlin X-Mailer: Mozilla 3.0 (Macintosh; I; 68K) MIME-Version: 1.0 To: sc-users@bga.com CC: iani@sim.spk-berlin.de Subject: Re: lines and things References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com I am not aware if this has been answered already, since unfortunately my SC mail collection is no longer complete, so here my two pennies worth on the problem: The first solution to smoothing signal transitions is to use KLag. There is a demo on it called something like smooth mouse or lag (look it up). Have you tried this? Iannis Zannos SIM dudas wrote: > > Dearest SC users, > > I've been trying to put together a global interface for a new patch of > effects, etc... > > What I'd like to have is based on the usual idea of having a checkbox in > the GUI turn on and off different processes. Here's a very simple example > using a single checkbox in the GUI controlling the playing of a sine wave. > (let's assume that eventually I might have something a little more exciting > than a sine wave...): > > -------------------------------------- > defaudioout L R; > > start { > inst1; > } > > inst1 { > osc = Asinosc(400,0); > { > if 1.getItemValue != 0 then > (osc.value *! 0.2).out(L).out(R); > end.if > }.dspAdd(0); > } > ---------------------------------- > > Nice, but that sharp turn-on and turn-off is not so pleasant to listen to. > So why not add a couple of line functions to fade it in and out. > > Not so simple, unless I'm overlooking something... > Here's what I first tried to do: > > **************** Which doesn't work. > ----------------------------------------------- > defaudioout L R; > > start { > instA; > } > > instA { > osc = Asinosc(300,0); > fadein = Aline(0.0, 0.5, 2.0, {this.dspRemove}); > fadeout = Aline(0.2, 0.0, 2.0, {this.dspRemove}); > { > if 1.getItemValue != 0 then > (osc.value *! fadein.value()).out(L).out(R); > elseif 1.getItemValue == 0 then > (osc.value *! fadeout.value()).out(L).out(R); > end.if > }.dspAdd(0); > } > ---------------------------- > **************** Which doesn't work. > > Then I thought of doing it with an Abpf() - embedded in a class, like those > used for the voicer in Tutorial No.8 (It was my idea that I could also pass > a DSP function to an instance of the fader class to replace the sine wave > which I provisionally put inside it...): > > ************** this Doesn't work either... > ------------------------------ > defaudioout L R; > defenvelope aev; -- simple 3 pt envelope with sustainable middle pt > > start { > instB; > } > > instB { > working = 0; > > { > if 1.getItemValue > working then > working = 1.getItemValue; > blah = fader(300); > elseif 1.getItemValue < working then > working = 1.getItemValue; > blah.release; > working.post; > end.if > }; > } > > class fader {arg freq ; > > osc = Asinosc(freq,0); > aenv = Abpenv(aev, 0.5, 0, 1, {dspRemove;}); > { > (osc.value *! aenv.value).out(L).out(R); > }.dspAdd(0); > > method release {aenv.release;} > } > > -------------------------------------- > ************** this Doesn't work either... > > If anyone knowledgable could give me a hand on this one, as well as the > noise gate problem mentioned in my last mailing, I'd be MOST appreciative. > > For those who can't help me, you'll be pleased to know that the final patch > will be posted to the sc-users ftp site when functional and finished, as it > is my habit to do so. > > -Richard From sc-users-owner@bga.com Wed Jan 29 10:12:24 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id KAA07526 for sc-users-outgoing; Wed, 29 Jan 1997 10:12:24 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id KAA07514 for ; Wed, 29 Jan 1997 10:12:21 -0600 Received: from [128.83.253.109] (slip-64-13.ots.utexas.edu [128.83.253.109]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id KAA13306; Wed, 29 Jan 1997 10:13:41 -0600 Message-Id: In-Reply-To: <32EF3818.5283@musik.b.shuttle.de> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 29 Jan 1997 10:12:18 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: Re: lines and things Cc: iani@sim.spk-berlin.de Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com At 1:44 PM +0200 1/29/97, Staatliches Institut fuer Musikforschung PK wrote: >I am not aware if this has been answered already, since >unfortunately my SC mail collection is no longer complete, >so here my two pennies worth on the problem: > >The first solution to smoothing signal transitions is to >use KLag. There is a demo on it called something like >smooth mouse or lag (look it up). Have you tried this? I did already answer this. All mail on this list is archived. Send the 'help' command on a single line to majordomo@bga.com and you will get a complete list of the commands. This will show you how to get an index of the available archive files and how to request copies of them. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx From sc-users-owner@bga.com Wed Jan 29 13:03:18 1997 Received: (from daemon@localhost) by zoom.bga.com (8.6.12/8.6.12) id NAA14359 for sc-users-outgoing; Wed, 29 Jan 1997 13:03:18 -0600 Received: from clyde.as.utexas.edu (clyde.as.utexas.edu [128.83.129.156]) by zoom.bga.com (8.6.12/8.6.12) with ESMTP id NAA14336 for ; Wed, 29 Jan 1997 13:03:15 -0600 Received: from [128.83.253.109] (slip-64-13.ots.utexas.edu [128.83.253.109]) by clyde.as.utexas.edu (8.6.11/2.01) with ESMTP id NAA13925 for ; Wed, 29 Jan 1997 13:04:32 -0600 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 29 Jan 1997 13:03:09 -0700 To: sc-users@bga.com From: James McCartney <---@---.---> Subject: the future of SuperCollider Sender: owner-sc-users@bga.com Precedence: bulk Reply-To: sc-users@bga.com Other constraints on my time are beginning to ease up so I will be able to devote more time to SuperCollider now than I have been. I am still working on SC 1.1b6. This will fix more bugs and add a few functions. It should be out by the end of Feb. This message discusses plans for the future rewritten SuperCollider program. The first version of the new SuperCollider virtual machine will run on the BeOS. Once the Apple/Next OS comes out then it will be ported to that. Circumstances may lead to an SGI port as well. (Assuming K.Taylor at SGI does agree to lend me a box). The new virtual machine is still in an early stage, so don't expect to see anything from this for 6 months. New SC features (subject to change) : Fully object oriented with single inheritance. All data are objects. The method lookup semantics are the same as Smalltalk, however lookup is optimized at link time to be just an add, a load and a compare, so it is very fast compared to the naive method lookup scheme. Multiprocessing, multitasking capable. Each operating system thread can contain a separate virtual machine 'Process'. Each virtual machine 'Process' can contain multiple time sliced 'Threads'. Processes communicate by messaging, their address spaces (GC environments), are separate. Virtual machine Threads share all the data of their Process. The reason for this architecture is for efficient garbage collection. There are no good real time multiprocessor garbage collection algorithms which do not suffer periods of blocking or excessive copying. This architecture allows the use of a simple and fast real time uniprocessor garbage collection algorithm for each Process. The messaging model allows sending data between Processes but prevents passing object references between Processes. Typically there will be a Process per CPU for computing audio streams. Each of these will be basically the same scheduling/DSP loop as the current SuperCollider architecture. In addition you will be able to start additional Processes to do background tasks, user interface tasks, etc. User written method primitive plug-in libraries. You can write method primitives in C, put them in libraries and have them loaded in. Primitives are referenced by name, not by an index as in Smalltalk, so there is no limit to the number may be loaded in. This allows you to write your own unit generators or anything else. Finalization. Objects who have a 'finalize' method will have that method called after they have been garbage collected. This allows you to deallocate host allocated objects such as windows, files, etc. Objects should only be given finalize methods if they truly need it, because these objects must be checked at the end of each GC and thus violate the true real time nature of the GC. As long as there are only a few such objects, the impact will be negligable. Exceptions. Exception handlers can be defined for a method. Source files are separated. The source is not built into the patch. In fact, Patch files are not all-in-one things anymore because of : Persistent objects. Wavetables, samples, envelopes and any other object can be stored in persistent object files. (Changing the number or order of instance variables will break pickled objects. Storing functions in files is also slightly fragile. If the method that originally contained the function is recompiled such that there are more or fewer functions in the method, then the pickled function reference may be incorrect or may revert to NIL.) Loop unrolling is more flexible, so 'subframe size' is not limited to multiples of 8, although multiples of eight are still slightly faster. If you like you can run at 1 sample per control period if you are trying to implement feedback filters at the high level. (Though this is better done at the low level as a C plug-in.) Unboxed doubles. The current SC has this, but it is worth mentioning. Floating point operations do not allocate or create garbage as it does in most Smalltalks, Python and other object oriented virtual machines. The result of all of the above is a very flexible high level soft real time language which will have applications beyond sound synthesis if one were to develop them. --- james mccartney james@clyde.as.utexas.edu james@lcsaudio.com If you have a PowerMac check out SuperCollider, a real time synth program: ftp://mirror.apple.com//mirrors/Info-Mac.Archive/gst/snd/super-collider-demo.hqx