From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #17 Reply-To: sc-users Sender: owner-sc-users-digest@lists.io.com Errors-To: owner-sc-users-digest@lists.io.com Precedence: bulk sc-users-digest Monday, November 30 1998 Volume 01 : Number 017 ---------------------------------------------------------------------- Date: Thu, 26 Nov 1998 03:04:04 +0000 From: richard james <---@---.---> Subject: vst? - --------------4527AB3ED99839B2CF8DCA09 Content-Type: text/plain; charset=us-ascii; x-mac-type="54455854"; x-mac-creator="4D4F5353" Content-Transfer-Encoding: 7bit but I may have a reason to write SC as a plug in to VST or Pd. James. Are you seriously considering writing a plug-in for VST that would be odd!!? riChard - --------------4527AB3ED99839B2CF8DCA09 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit but I may have a
reason to write SC as a plug in to VST or Pd.

James.
Are you seriously considering writing a plug-in for  VST that would be odd!!?

riChard
  - --------------4527AB3ED99839B2CF8DCA09-- ------------------------------ Date: Thu, 26 Nov 1998 00:13:15 -0600 From: James McCartney <---@---.---> Subject: Re: vst? At 9:04 PM -0600 11/25/98, richard james wrote: > but I may have a >reason to write SC as a plug in to VST or Pd. > >James. >Are you seriously considering writing a plug-in for VST that would be odd!!? That was not an announcement.. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Thu, 26 Nov 1998 02:16:19 -0600 From: antiorp@tezcat.com (=cw4t7abs) Subject: Re: vst? >At 9:04 PM -0600 11/25/98, richard james - 0+1 addtl human pzr - wrote: > >> but I may have a > >>reason to write SC as a plug in to VST or Pd. > >> > >>James. > >>Are you seriously considering writing a plug-in for VST that would be >odd!!? >That was not an announcement.. =_? ------------------------------ Date: Thu, 26 Nov 1998 18:39:41 +0900 From: Masayuki Akamatsu <---@---.---> Subject: GUI & MIDI question Hello, I have a question about GUI & MIDI control. I hope to do an action both by clicking a button and by recieving a external MIDI control message. My sample program is following: { var w; w = GUIWindow.new("panel", Rect.newBy( 128, 64, 400, 400 )); ButtonView.new( w, Rect.newBy( 32, 32, 128, 20 ), "ButtonView", 0, 0, 1, 0, 'linear'); w.at(0).mapToController(16,83); w.at(0).action = {"Pushed".post}; }.value; How can I do that well? Please someone help me. Thank you. Masayuki AKamatsu ------------------------------ Date: Thu, 26 Nov 1998 12:30:05 +0100 From: staffan@medialab.ericsson.se (Staffan Liljegren) Subject: Re: DIVE limitations, Goals, Approach, alternatives? Iannis , I was just trying to say that I am thinking that I believe that collaboration is more important than "virtuality" (standing as a catchall for the application of VR in different domains. Where archictecture and medicine are suitable for application of VR and perhaps 3d business meeting support not so suitable, due to the inmature graphics and sensory feedback). So the important bit should be on solving the distribution first (which DIVE and other early VR envs did). This is fundamental and it can be extremely har to introduce distribution at a later stage/version. For example VRML was conceived (at a WWWx BOF with Mark Pesce, Tbl and others) and they intentionally left the interaction and distribution out, to get "something pragmatic" up and running (1.x). It has later been easy to introduce interaction/behaviours (VRML97), but it will be hard to introduce distribution (I am not updated with all current efforts to do this, so please don't flood me with details). So the lesson would be that if You aim for collaboration You should have distribution as one of the initial design goals. So DIVE solved the distribution part, but currently it would need a rehaul of the graphics, video and MIDI/sound support if You want to do serious collaborative and interactive music applications. But it has served well as a research vehicle for exploring disitributed collaborative environments. I had a grad student in 96 who made DIVE VRML 1.x , but I do not think that DIVE has VRML 97 support yet. But that is my personal opinion and You should of course check out for Yourself and as Ken said; there are other VR envs out there also. There might be a lesson here for the MPEG4 design to think about, more on that later. Thanks for the info on CIUDAD! - -Staffan, who promises to get onto track and post SC related mails from now Iannis wrote, | | Staffan, what do you mean by: | | >But I seriously don't think that true VR envs are that exciting as general | >controllers or as the contrrolled env. | | Do you mean a) visual realism or high-resolution is not | substantial for the quality of a controller/environment? | b) Controllers should be general, i.e. generic, rather | simple so as to be easily adaptable to individual needs, | abstract so as to be non-specific? | c) Work should focus on existing generic controllers | (i.e. graphic tablet, mouse) and on refining the controlled | environment (i.e. SC programs, other systems) rather than | on 3D VR environments? | | Do you mean to say (a) that DIVE will do the job because | it can provide the required general 3D objects for | control and interaction, and more realism is not | important here, or on the contrary (b) that DIVE | is not so suitable for research in computer music | interactive systems because its goals are too much | VR and thus impose technical limitations or | practical difficulties in working with real-time audio? | | >I think it is more important with juxtapositions of | >video/audio (people), 3d graphics (manipulated objects) and distribution | >(several persons that can participate in a collaborative interactive performance. | | Same interests here, except we are reluctant to address | the video/audio streaming technical issues and would | rather start work first with simple purely synthetic | 3d objects as virtual sound sources or "general controllers". | | Are you suggesting to look elsewhere for more suitable | tools (Open GL?) and/or do most of the 3D programming | "on foot"? It may be sufficient for ad-hoc, single-user | applications and sure is the most efficient solutions - | but I would be reluctant to do any distributed work without | a good distributed database server for world modeling - | such as I believe DIVE provides. Any feasible low-budget | alternatives you can suggest (short of a Cray | or multiprocessor SGI with high-end graphics engine please)? ------------------------------ Date: Thu, 26 Nov 1998 15:44:20 +0000 From: finer@easynet.co.uk Subject: simplistic graphics letter This is all very interesting, this MPEG4 derived discussion. Myself I was looking forward to some simple graphics in SC2, being rather fond of the graphics in SC1. Obviously there are wonderful worlds to explore in highly sophisticated graphics programs that I don't have or know but that one day SC will maybe be able to interface with. Still I was a bit sad to read that SC2 graphics are now being nudged off the agenda. S'pose I'll have to get on the IAC bus to MAX. Best wishes, Jem Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias ------------------------------ Date: Fri, 27 Nov 1998 12:57:17 +1100 (EST) From: Lulu Ong <---@---.---> Subject: Re: simplistic graphics letter On Thu, 26 Nov 1998 finer@easynet.co.uk wrote: > Myself I was looking forward to some simple graphics in SC2, being rather > fond of the graphics in SC1. > > Still I was a bit sad to read that SC2 graphics are now being nudged off > the agenda. i definitely share your sentiments, and was afraid for a whil there that i was the only one who felt that way. Lulu Vislab Australian Technology Park www.vislab.usyd.edu.au ------------------------------ Date: Thu, 26 Nov 1998 21:53:08 -0600 From: antiorp@tezcat.com Subject: Re: simplistic letter graphics >On Thu, 26 Nov 1998 finer@easynet.co.uk wrote: > >> Myself I was looking forward to some simple graphics in SC2, being rather >> fond of the graphics in SC1. >> >> Still I was a bit sad to read that SC2 graphics are now being nudged off >> the agenda. > >i definitely share your sentiments, and was afraid for a whil there that i >was the only one who felt that way. all humanzsukc++ ------------------------------ Date: Fri, 27 Nov 1998 03:15:54 -0600 From: James McCartney <---@---.---> Subject: Tempo based scheduling Another feature of 2d29 is tempo based scheduling. This took me longer than I thought to work out, which is why 2d29 has been delayed. Synth.sched, repeat, repeatN all take beats as the scheduling units. (Though there is still another scheduler in seconds 'tsched'). Spawn's nextTime variable is now specified in beats. Synth's envelope releaseTime is now specified in beats. The default tempo is 60 beats per minute (1 beat == 1 second), so there needs to be no change to existing code. A Synth object manages tempo. Any Synth spawned from another Synth acting as a tempo base will inherit its tempo and be locked to it. Any Synth may be nominated as a new tempo base, so it is possible to have multiple regimes of tempo running at once. The top level synth is also the top level tempo base and has an initial default tempo of 60 BPM. Synth now has three new instance methods: synth.tempo - get the current tempo from this Synth's tempo base (which may be a parent Synth object). synth.tempo_(aTempo) - set the tempo for this Synth's tempo base (which may be a parent Synth object). synth.newTempoBase(aTempo) - make this Synth a tempo base. The top level synth is already a tempo base so this method is only necessary if you want to create multiple tempo bases. There are two new unit generators: SetTempo.kr(aSynth, tempo) - modulate the tempo of a tempo base. aSynth is made a tempo base if it is not one already. If aSynth is nil then the current tempo base is used. GetTempo.kr - get the current tempo. - --- Tempo is expressed in beats per SECOND. "Why? Everyone uses beats per minute!" Often conversions need to be made from seconds to beats and vice versa. If the time units are the same then that saves sprinkling 60.0's all over your code. beats = seconds * synth.tempo; seconds = beats / synth.tempo; instead of: beats = seconds * (synth.tempo / 60.0); seconds = beats * (60.0 / synth.tempo); If you want to specify tempo in BPM you can simply put in a 60 there: synth.tempo = 140/60; // 140 beats per minute - --- Envelope segment times are still specified in seconds. (synth.releaseTime is in beats) You can specify envelope segments in beats and convert them, though. An envelope whose times are written in beats can be scaled to seconds based on the reciprocal of the tempo at the beginning of the envelope by using EnvGen's timeScale argument: EnvGen.kr(env, timeScale: synth.tempo.reciprocal); Or each segment can be scaled when it is started by the instantaneous tempo: EnvGen.kr(env, timeScale: GetTempo.kr.reciprocal); Note that EnvGen does not continuously vary its playback rate of segments based on changing tempo. So if an envelope's segments add up to N beats, does not mean it will last that long if the tempo is changing. Scaling segments is only exact under constant tempo. - --- Accuracy: Scheduling is sample accurate under most normal circumstances. If there are multiple Spawn objects running with different block sizes and one of them is changing the tempo for all of them, then there may be a few samples difference in the start time of events, but there is guaranteed to be no drift. Separate processes running in the same tempo base always agree on the exact sample where tempo changed and will stay synced. While tempo is constant then even in the above special case, events are sample accurate. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Fri, 27 Nov 1998 11:09:50 +0100 From: "Iannis Zannos" <---@---.---> Subject: Re: GUI & MIDI question Masayuki, >{ var w; > w = GUIWindow.new("panel", Rect.newBy( 128, 64, 400, 400 )); > ButtonView.new( w, Rect.newBy( 32, 32, 128, 20 ), "ButtonView", 0, >0, 1, 0, 'linear'); > w.at(0).mapToController(16,83); According to your code w.at(0) is a button. It is unusual for a button to be coupled by a MIDI control message. (Sliders are normally used for that. ) Suggest writing a TSpawn which gets triggered by the MIDI condition which you need. James please note: I could not find any examples that show this, I think it would be good to provide them. I.e. to provide an example for triggering "notes" or other events with TSpawn whenever a MIDI-Note-In happens (without using Voicer.). This example may be put under MIDINoteGate. At the moment the places to look for are the help files for: MIDINoteGate, TSpawn. Note that Voicer which is used for playing events from MIDI uses its own primitives and does not rely on other SC MIDI objects, so you cannot use it easily for looking how to use MIDI objects such as MIDINoteGate. Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: Masayuki Akamatsu <---@---.---> >To: sc-users@lists.io.com >Subject: GUI & MIDI question >Date: Thu, 26 Nov 1998 10:39 AM > >Hello, > >I have a question about GUI & MIDI control. > >I hope to do an action both by clicking a button and by recieving a external >MIDI control message. > >My sample program is following: > >{ var w; > w = GUIWindow.new("panel", Rect.newBy( 128, 64, 400, 400 )); > ButtonView.new( w, Rect.newBy( 32, 32, 128, 20 ), "ButtonView", 0, >0, 1, 0, 'linear'); > w.at(0).mapToController(16,83); > w.at(0).action = {"Pushed".post}; >}.value; > >How can I do that well? >Please someone help me. > >Thank you. > > >Masayuki AKamatsu > > > ------------------------------ Date: Fri, 27 Nov 1998 11:21:58 +0100 From: "Iannis Zannos" <---@---.---> Subject: Re: DIVE limitations, Goals, Approach, alternatives? Staffan, >I was just trying to say that I am thinking that >I believe that collaboration is more important than >"virtuality" (standing as a catchall for the application of >VR in different domains. Where archictecture and medicine are >suitable for application of VR and perhaps 3d business meeting >support not so suitable, due to the inmature graphics and sensory >feedback). >So the important bit should be on solving the distribution >first (which DIVE and other early VR envs did). This is fundamental >and it can be extremely har to introduce distribution at a later >stage/version. For example VRML was conceived (at a WWWx BOF with OK finds me d'accord. Good point. Just as with MPEG4 the right mix between operability and features/completeness should be found. The weaknesses of VRML et al in the dictributed and interactive aspect are frustratingly obvious. Researchers still need something pragmatic to get started on work in this aspect, even if it is not so fancy, mature or standardized. Principles could be tested experimentally on a platform, with view to generalizing them by addressing the problems involved at the root. If DIVE is the best thing around in this direction at the moment, then we here (at SIM) should try to get started with DIVE<->OSC<->SC, even if the graphic is not so fancy. Another idea is to build an interface to a 3D animation program like MAX, i.e. fancy graphic controller. At the moment, professional animation and distributed/cooperative capabilities seem just not to be feasible in the same system, so these two aspects may as well be addressed separately. >-Staffan, who promises to get onto track and post SC related mails from now I think that a discussion about how to involve SC in a collaborative (and/or distributed, networked) environment with graphics would be on track. Iannis - ---------- >From: staffan@medialab.ericsson.se (Staffan Liljegren) >To: sc-users@lists.io.com >Subject: Re: DIVE limitations, Goals, Approach, alternatives? >Date: Thu, 26 Nov 1998 12:30 PM > >Iannis , > >I was just trying to say that I am thinking that >I believe that collaboration is more important than >"virtuality" (standing as a catchall for the application of >VR in different domains. Where archictecture and medicine are >suitable for application of VR and perhaps 3d business meeting >support not so suitable, due to the inmature graphics and sensory >feedback). > >So the important bit should be on solving the distribution >first (which DIVE and other early VR envs did). This is fundamental >and it can be extremely har to introduce distribution at a later >stage/version. For example VRML was conceived (at a WWWx BOF with >Mark Pesce, Tbl and others) and they intentionally left the >interaction and distribution out, to get "something pragmatic" up >and running (1.x). It has later been easy to introduce interaction/behaviours >(VRML97), but it will be hard to introduce distribution (I am not updated >with all current efforts to do this, so please don't flood me with details). > >So the lesson would be that if You aim for collaboration You should >have distribution as one of the initial design goals. > >So DIVE solved the distribution part, but currently it would need a rehaul >of the graphics, video and MIDI/sound support if You want to do serious collaborative and >interactive music applications. But it has served well as a research vehicle >for exploring disitributed collaborative environments. I had a grad student in >96 who made DIVE VRML 1.x , but I do not think that >DIVE has VRML 97 support yet. But that is my personal opinion and You should of >course check out for Yourself and as Ken said; there are other VR envs out >there also. > >There might be a lesson here for the MPEG4 design to think about, more >on that later. > > > >| >| Staffan, what do you mean by: ------------------------------ Date: Fri, 27 Nov 1998 15:19:03 +0100 From: "Iannis Zannos" <---@---.---> Subject: Re: Can't get the GuiUtilities files to compile > 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. - --MS_Mac_OE_2995024743_351642_MIME_Part Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit Hello Michael, >I'm new to SuperCollider, and am having a hard time getting GUIUtilities >to work. Trying to follow your instructions in the d:o.help file, but all >I get is a freeze. In the GuiUilities folder there's a (non-functional, >ie orphaned) alias for the Common folder (which looks for Macintosh HD, >not the name of my disk). I read your instr as meaning one should put an >alias the other way around. Wouldn't that make for a perpetual loop (if >it worked)? It doesn't. Where am I messing up? this problem has been answered before. Here I post a corrected version of the readme file, also as attachment, so that it may be included in SC.2d29. Follow the instructions below. Hope it is all clear now. Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 ======================================================= New installation instructions (10.11.1998) 1. Place an alias of this folder in the Common folder 2. Rename the following files, changing their endings from .sc to .scx: Common:GUI:View.sc --> View.scx Common:Collections:SequenceableCollection.sc --> SequenceableCollection.scx DefaultLibrary:Main.sc --> Main.scx 3. Type Command-K to recompile the class library 4. Type Command-R to run the new default main process, which will pop up a sound palette. For more info, see files in folder About GUI Utilities (doc). Enjoy. Iannis Zannos. 10.11.1998, 10:31 AM - ------------------------------------------------------------------------- PS: Old Read me file by James McCartney / with correction by IZ 27.11.1998: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (There was a problem with these instructions which is be solved by taking the files View.sc SequenceableCollection.sc Out of the folder ModifiedCommonClasses and onto the uppermost level of the folder GUIUtils. You should also make sure that the Common folder alias is actually connected to your Common folder (make a fresh alias of the Common folder and put it into GUIUtils. ). !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! These files were contributed by Iannis Zannos. Use the "Choose new Library" command in the Lang menu and select this folder to compile. Once compiled you can execute this expression for a demo: SoundManager.default or just type cmd-R which will do the same thing. (I made a Main class for this lib.) - --- james mccartney ====================================================== - ---------- >From: ml23476 <---@---.---> >To: >Subject: Can't get the GuiUtilities files to compile >Date: Fri, 27 Nov 1998 2:35 PM > >Hello Iannis, > >I'm new to SuperCollider, and am having a hard time getting GUIUtilities >to work. Trying to follow your instructions in the d:o.help file, but all >I get is a freeze. In the GuiUilities folder there's a (non-functional, >ie orphaned) alias for the Common folder (which looks for Macintosh HD, >not the name of my disk). I read your instr as meaning one should put an >alias the other way around. Wouldn't that make for a perpetual loop (if >it worked)? It doesn't. Where am I messing up? > >SC itself works fine using the default library, but when trying to comile >the new one the screen claims it's starting to compile but it goes on >forever (how long should it take?) Using an 8500, 604e, 180 MHz, OS 8.0 >(American). > >Greetings from Stockholm >Michael Bransome >Lingolab >synthesis@swipnet.se >lingolab@swipnet.se > - --MS_Mac_OE_2995024743_351642_MIME_Part Content-type: application/mac-binhex40; name="Zannos Lib - Read me" (This file must be converted with BinHex 4.0) :&&TKEQj[Fb"-D@)J,5"5C@&N)'eP!&4&@&463fTY!*!%"Mm!!!(`P%*1CAFJD@j cG'&XE'&dD@pZ)'PZFh4bG@0dD@pZFb!S-6!Z-6%Z-6Nj1#N0$6%Z#9"XB@0P)'& Z)'&XD@&c)'pQ)(4SDA-JCQpXC'9b)'PZ)(4SC5"$EfeYEfiJCQpXC'9b$3db,JP 5C@jKE@8JG'KP)'C[E'a[GfPZCb"QD@aPFb`JBfKKEQGTEQFJG'KPDA)JC@jND@j RFb"QFQpY)#jcBb"dEb!ZFf0i1Jd*3fpYE@pZ1NG956T@D@9h,R0M#C!',5dq)!P @D@9h,R0MH!d*3fpYE@pZ1N0[E'aPBh4TEfjc1P0PFA9PEQ0PB@*XC80[E'aPBh4 TEfiZFf-*,5dq)!P6CA&eC@jMC@&LE'9$EfaXC@0dD@pZ,R0MH!d*4'9QBA9XG%a TBR*KFRNk6@&TELjcB`Q3"LdY2JP0B@PZ,R0MH!d0-bi*9(P`C5"$EfeYB@jN,8X JG'mJFQ9MEfe`D@aP)(4SC5"ME'&cFb"XD@*bBA*j$3dd,JP8HA"P)%0[E@eKEQ3 Y8L"dEb"bG@iJG'KP)'jPGb"NC@CKG@ad)'eKD@iJF(*[Bf9cFb`JGfKTBfJJGfP XE#"`Eh!JGA!JB5"cEh9ZC#"`B@aPG(4P,L!0$8C[FL"YEh*P)'PZCQmX)(0PC5" QD@aPFb"TEL"QEfaNCA)J3@*[GA3J4e9*)&9dD@aTG'PPFb!SC'pM+5iJ$89ZDQp j,L!0$8PKEQjTFb"DB@jZEh-Z)!da-#ia-5ia16Ni,#!a-$Sc-5""63f3!bf3F`e 38cSJ$3e2E'3J8Q9KC#"YC5"QD@aP)'*j)%TKE@9c)%eM3f&bG'jPH6SJ$5KhDA4 S)'0[FR*PBh4TEfiJBRNJ59SX)$)h,M%a,M%j16JT$3dKN$-0+&4SCA*P)(GKFb" K)("bEf*XC@dJGfPdD#"dD'9cC5"TER0dFR9MG'P[ER-JGfKTBfJJDA-JBQ8J$A0 [E(CPC#"LH5"dB@YTEQFJG'KP)'CTE'9c)!d*9QPPGbjcBb!*$3P6CA&eC@jMC@& LE'9$EfaXC@0dD@pZ,R0M$8peG#"[CL"dD'8JCQpXC'9b)!d*6@pND@CTC@4$Efe YEfj$E'&cFf9c$@&ZC#"[ER4[)(4SC5"eF("PFQe[Fh3JE'9fC@`JEfBJG'KP)'C [E'4PFJd*4e9*9A4TE(-Z$3eCEh8JFfK[G@aN)'&XFfmJE@&VC5"cGA*P)(4SBA3 JG'KP)%0[E@e[EL"QEfaNCA)JB@aTBA-0DA-JB@0dG@&XE(NJBfpZEQ9MG'9N)(4 [)(P[GA)J3fpYE@pZ)'C[E'4PFL!SE@&VC5"K)!eQFQ9cD#"KE'PKFb"[CL"dD'8 J3fpYE@pZ)'C[E'4PFL"KEQ3JF(9d)'Pd)'PZG'mJ4e9*9A4TE(-Z$5NZ$C!$)C! `$94SCA0P)'CTE'9c)(GPFQ8JBfpZG(*TBR9dC@3JBRNJ5@&ZEQPc)&TKEQj[Fbi 09A0P)(4SC5!L3fK[Eh0P)'jPGb"-D@*bBA*j)L"MEfeYB@jN)'PZ)(4SC5"-B@j R)'ePER8JB@jN)(0PE'9MG#"dD'Pc)'C[E'4PFL"dEb"MEfe`D@aP,Je2EQ0P)'0 [EA"TE'9N)(P[G5"MB@iJCAKPBh9dC5"dD'Pc)'9iF(*PFh0TEfiJCQpb)'%JC'9 YEcS0$90[G@jN6@&ZB@GPFLjNC@CKG@ad$3e[FL"UGA0d)(4jF'8JBfeN,9)JGfK TBfJJGfPXE#"NEb"dD'8JFf&YC5"dD'PZCbiJ)#K*)'eKC'8JB5"0B@PZ)'0XBA0 c)'C[FL"dD'Pc)'aTBLiT$3dYN!-JDQ&YCA-JE@0MBA*dEQ9j$3qZ!!!"!*!$!DS !N!1U!*!$4T`r+pCZpSD*Si95pR(C3#HbQFqUmC)f4fJr$r!+Vm*E#bda-MQ3!c3 b06NcG'9YFf&N)'eP6P3TBf9cD@&XGA)!#e4&@&463fTY!*!BXS4c2`!!"Mm!!!( `j"AB$JDMRIdFUR"'1!Li&bFRh%b20Gl``$I6,p'QMeG-8U&MjXcZ'AefN!"4Edc cCempFb@KlkBbL1ee2E(NImLqbq"A1GEPa&+SXVJBKNBCCpq!3`M`9!dcf(+*BdC YjR%T0fUi#j90%d9B*MN2JV9)AN1h,Aj`fBT1ephJ'ldB9i-!N!1L!!J!N!81!!S !&3%!!!`!N!NU!!i!#J!9!*!$$!#3#!,#!!i!#J!9!3!!$!#3#!,R!!i!#J!9!*! $$!#3#!0"!!i!#J!9!J!!$!#3#!6k!!i!#J!9!*!$$!#3#!@q!"!!$!!%!*!$$!# 3#!A6!!i!#J!9!*!$$!#3$!%!N!-"UJ#3!kS!N!0'!i91@$(b!*!$(!"'!!&cG(P X!*!$%P0299!!N!-H!)$rr`#3#B$rr`#3!kB!N!6NH3: - --MS_Mac_OE_2995024743_351642_MIME_Part-- ------------------------------ Date: Fri, 27 Nov 1998 16:09:09 +0100 From: "Iannis Zannos" <---@---.---> Subject: One more clarification on compiling GUIUtils and generally. One more clarification on compiling: >not the name of my disk). I read your instr as meaning one should put an >alias the other way around. Wouldn't that make for a perpetual loop (if >it worked)? It doesn't. Where am I messing up? Circular aliases will cause the system to freeze. Remove such aliases, i.e. remove the old Common alias from GUIUtils if you are putting GUIUtils inside Common, and vice versa. >SC itself works fine using the default library, but when trying to comile >the new one the screen claims it's starting to compile but it goes on >forever (how long should it take?) Using an 8500, 604e, 180 MHz, OS 8.0 >(American). This is an effect of SC compiler not being able to resolve the compilation order because of conflicting duplicate class names at the same level of the hierarchy. I suggest that both the hierarchy/class name conflict and the circular alias problem be documented. Furthermore: would it be possible to post an error in the case of the hierarchy/class name conflict, like the usual "there is a discrepancy"? That would let people know that there is something wrong in the file hierarchy or the code... Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 - ---------- >From: ml23476 <---@---.---> >To: >Subject: Can't get the GuiUtilities files to compile >Date: Fri, 27 Nov 1998 2:35 PM > >Hello Iannis, > >I'm new to SuperCollider, and am having a hard time getting GUIUtilities >to work. Trying to follow your instructions in the d:o.help file, but all >I get is a freeze. In the GuiUilities folder there's a (non-functional, >ie orphaned) alias for the Common folder (which looks for Macintosh HD, >Greetings from Stockholm >Michael Bransome >Lingolab >synthesis@swipnet.se >lingolab@swipnet.se > Iannis Zannos SIM Tiergartenstr. 1, D-10785 Berlin, Germany Fax: +49 30 25481172 ------------------------------ Date: Fri, 27 Nov 1998 10:10:53 -0600 From: James McCartney <---@---.---> Subject: Re: One more clarification on compiling GUIUtils and generally. At 9:09 AM -0600 11/27/98, Iannis Zannos wrote: >Furthermore: would it be possible to post an error >in the case of the hierarchy/class name conflict, >like the usual "there is a discrepancy"? >That would let people know that there is something >wrong in the file hierarchy or the code... It would be a lot of work for a small benefit to do this. The compiler ignores filenames which are the same after the first one it finds. To determine why it finds one first would require maintaining data about where files were found and doing an analysis of the directory structure upon an error. This would slow down the compilation process. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 30 Nov 1998 02:19:29 +0900 From: Masayuki Akamatsu <---@---.---> Subject: Re: GUI & MIDI question Hello, Thank you for a kind reply. At 11:09 AM +0100 98.11.27, Iannis Zannos wrote: > >{ var w; > > w = GUIWindow.new("panel", Rect.newBy( 128, 64, 400, 400 )); > > ButtonView.new( w, Rect.newBy( 32, 32, 128, 20 ), "ButtonView", 0, > >0, 1, 0, 'linear'); > > w.at(0).mapToController(16,83); > > According to your code w.at(0) is a button. > It is unusual for a button to be coupled by a MIDI > control message. (Sliders are normally used for that. ) Yes, so. But Some MIDI Mixer/Controller(ex.Roland MCR-8 ) have not only sliders but push buttons. So I hope to use them. > Suggest writing a TSpawn which gets triggered by the MIDI > condition which you need. > > James please note: I could not find any examples that show > this, I think it would be good to provide them. > I.e. to provide an example for triggering "notes" or > other events with TSpawn whenever a MIDI-Note-In > happens (without using Voicer.). This example may > be put under MIDINoteGate. I'll try it. And some examples are welcome. Thank you. Masayuki Akamatsu ------------------------------ Date: Mon, 30 Nov 98 01:05:00 +0100 From: Michael <---@---.---> Subject: sc via audiomedia III Hello all- Newbie paying sc-user, stumped at getting audio through the AudioMedia III card. How can this be done? Am using Digidesign SoundDrivers 1.42 on an 8500, 604e, 180MHz, 112MB RAM, lotsa diskspace, OS 8.0 (US-version). Michael Bransome still in Stockholm ------------------------------ Date: Mon, 30 Nov 1998 10:19:10 +0000 From: finer@easynet.co.uk Subject: no way out . . ? Hello, Looking for a simple graphics solution via IAC bus to Max I realised a gross oversight on my part, that being that we can't send MIDI out - or can we ? ALSO - and sorry to harp on about this - I'm still trying to find a solution to the click I sometimes get in granulating a soundfile. I've tried LeakDC.ar (Playbuf.ar ( . . . .)), in response to the suggestion that Dc offset can occur during granulisation, but that seems to make more clicks ! Thanks, Jem Finer Jem Finer finer@easynet.co.uk Longplayer : http://www.ecna.org/artangel/longlayer.html Autodestruct/Marseille en Juin : http://www.chez.com/immedias ------------------------------ Date: Mon, 30 Nov 1998 07:42:33 -0600 From: James McCartney <---@---.---> Subject: Re: no way out . . ? At 4:19 AM -0600 11/30/98, finer@easynet.co.uk wrote: >Hello, > >Looking for a simple graphics solution via IAC bus to Max I realised a >gross oversight on my part, that being that we can't send MIDI out - or can >we ? > >ALSO - and sorry to harp on about this - I'm still trying to find a >solution to the click I sometimes get in granulating a soundfile. I've >tried LeakDC.ar (Playbuf.ar ( . . . .)), in response to the suggestion that >Dc offset can occur during granulisation, but that seems to make more >clicks ! LeakDC won't work in that instance. It is meant for continuous signals which a single grain is not. Send me some code that makes clicks. The stuff you sent me before did not click for me on the G3/300. Perhaps it is just a CPU overload thing? What is the CPU load you get? What hardware are you outputting to? --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 30 Nov 1998 10:09:02 -0500 (EST) From: "Ronald J. Kuivila" <---@---.---> Subject: [none] Is there any easy way to "hard synch" an oscillator? (I want to be able to be able to set the phase to an arbitrary position with an external trigger.) RJK ------------------------------ Date: Mon, 30 Nov 1998 09:26:16 -0600 From: James McCartney <---@---.---> Subject: Re: hard sync At 9:09 AM -0600 11/30/98, Ronald J. Kuivila wrote: >Is there any easy way to "hard synch" an oscillator? (I want to be able >to be able to set the phase to an arbitrary position with an external >trigger.) Not directly. You could set the frequency to zero and drive it from its phase input. What are you trying to do? If you are using the oscillator as an envelope then you might use EnvGen which can be triggered. You could also look at each trigger as a grain and Use TSpawn. If you are trying to hard sync for harmonics like SyncSaw then it really requires doing it in C code, because in order to eliminate jitter artifacts, hard sync must have sub sample accuracy. Otherwise you'd be limited to frequencies which have integer sample wavelengths. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 30 Nov 1998 13:08:36 -0600 From: James McCartney <---@---.---> Subject: SC2.0d29 now available SC2.0d29 is now available via ftp. in BinHex form : ftp://www.audiosynth.com/pub/updates/SC2d29.sea.hqx or in MacBinary form (smaller file size) : ftp://www.audiosynth.com/pub/updates/SC2d29.sea.bin Changes: - --- Tutorial The Tutorials folder has the beginnings of a series of tutorials. Comments and contributions are invited. - --- Wacom tablet support The Wacom graphics tablet is a very accurate repeatable high resolution controller that is ideal for electronic music. The Wacom Intuos pen device for example, gives information for x, y, x tilt, y tilt, pressure, proximity, two buttons and a tablet contact switch. Two tablet devices may be used at once. The following subclasses of ExternalControlSource have been added: TabletX, TabletY, TabletZ, TabletXTilt, TabletYTilt, TabletPressure, TabletProximity, TabletWheel, TabletButton. Not all tools support all controls. The Pen does not do Z for example. Z is really controlled by a wheel on the Wacom 4D mouse. TabletProximity works like a gate, not a continuous control. In order to prevent playing the tablet from inadvertantly causing selection and dragging of stuff on the Mac desktop, you should use the Wacom control panel to disable Mouse clicks from all device buttons. It will warn you about turning off Mouse clicking - ignore the warnings and do it anyway. There is an example file "wacom test" with some simple examples. - --- Tempo based scheduling. Scheduling of most things is now done in beats. Synth.sched, repeat, repeatN all take beats as the scheduling units. (Though there is still another scheduler in seconds 'tsched'). Spawn's nextTime variable is now specified in beats. Synth's envelope releaseTime is now specified in beats. The default tempo is 60 beats per minute (1 beat == 1 second), so there needs to be no change to existing code. A Synth object manages tempo. Any Synth spawned from another Synth acting as a tempo base will inherit its tempo and be locked to it. Any Synth may be nominated as a new tempo base, so it is possible to have multiple regimes of tempo running at once. The top level synth is also the top level tempo base and has an initial default tempo of 60 BPM. Synth now has three new instance methods: synth.tempo - get the current tempo from this Synth's tempo base (which may be a parent Synth object). synth.tempo_(aTempo) - set the tempo for this Synth's tempo base (which may be a parent Synth object). synth.newTempoBase(aTempo) - make this Synth a tempo base. The top level synth is already a tempo base so this method is only necessary if you want to create multiple tempo bases. There are two new unit generators: SetTempo.kr(aSynth, tempo) - modulate the tempo of a tempo base. aSynth is made a tempo base if it is not one already. If aSynth is nil then the current tempo base is used. GetTempo.kr - get the current tempo. - --- Tempo is expressed in beats per SECOND. "Why? Everyone uses beats per minute!" Often conversions need to be made from seconds to beats and vice versa. If the time units are the same then that saves sprinkling 60.0's all over your code. beats = seconds * synth.tempo; seconds = beats / synth.tempo; instead of: beats = seconds * (synth.tempo / 60.0); seconds = beats * (60.0 / synth.tempo); If you want to specify tempo in BPM you can simply put in a 60 there: synth.tempo = 140/60; // 140 beats per minute - --- Envelope segment times are still specified in seconds. (synth.releaseTime is in beats) You can specify envelope segments in beats and convert them, though. An envelope whose times are written in beats can be scaled to seconds based on the reciprocal of the tempo at the beginning of the envelope by using EnvGen's timeScale argument: EnvGen.kr(env, timeScale: synth.tempo.reciprocal); Or each segment can be scaled when it is started by the instantaneous tempo: EnvGen.kr(env, timeScale: GetTempo.kr.reciprocal); Note that EnvGen does not continuously vary its playback rate of segments based on changing tempo. So if an envelope's segments add up to N beats, does not mean it will last that long if the tempo is changing. Scaling segments is only exact under constant tempo. - --- Scheduling Accuracy: Scheduling is sample accurate under most normal circumstances. If there are multiple Spawn objects running with different block sizes and one of them is changing the tempo for all of them, then there may be a few samples difference in the start time of events, but there is guaranteed to be no drift. Separate processes running in the same tempo base always agree on the exact sample where tempo changed and will stay synced. While tempo is constant then even in the above special case, events are sample accurate. - --- Keyword Arguments Keyword arguments can now be used in method and function calls, so if you like you can write: SinOsc.ar(freq: 800, mul: 0.1) Keywords in calls to 'value' for functions also works: { arg a=1, b=2, c=3, d=4; [a,b,c,d].postln }.value(b:7, c:8); // posts: [ 1, 7, 8, 4] Keyword arguments are not quite as fast as positional arguments, but sometimes more convenient and more self documenting. You can specify the keywords in any order. Unlike in some languages, all arguments can be specified by keyword. I.e., there are no arguments specifically declared as keyword arguments. Some more regularization of argument naming will need to be done in the library to support this more uniformly. Some has already been done. - --- The classes Function and Closure have been made into the same class now named Function and the class Block has been renamed FunctionDef. Most people not familiar with Smalltalk or Scheme are more familiar with the name 'function' than 'closure'. This may make it a bit easier to bootstrap folks up. Closures (now called Functions) now have the arithmetic properties that Function did, so that { [ 100, 200, 300 ].choose } + { 10.rand } will produce a new Function that returns one of 100-109,200-209,300-309. - --- Miscellaneous changes: exprand is now a two argument message so that exprand(a, b) gives an exponentially distributed random value between a and b. biexprand was removed. new method rrand(a, b) now acheives the same result as a + (b-a).rand and is a bit faster. new method sum3rand(x) produces a value from -x to +x that is the sum of three random generators giving a slight bell like curve. Suggested by Larry Polansky as a cheap cheat for a gaussian distribution. 'ramp' method renamed 'series' to match name in other classes. Iannis Zannos' GUIUtils can now be compiled by choosing its folder without modifying any file names in Common. There are some more examples and contributed files. - --- --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ End of sc-users-digest V1 #17 *****************************