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
*****************************