Beep new design
Andreas Raab
andreas.raab at gmx.de
Sat May 17 14:47:53 UTC 2003
Hi Stef,
Looks good to me. A little bit complex for what it's really doing but what
the heck ;-)
Cheers,
- Andreas
> -----Original Message-----
> From: squeak-dev-bounces at lists.squeakfoundation.org
> [mailto:squeak-dev-bounces at lists.squeakfoundation.org] On
> Behalf Of Stephane Ducasse
> Sent: Saturday, May 17, 2003 4:41 PM
> To: The general-purpose Squeak developers list
> Subject: Re: Beep new design
>
>
> Andreas
>
> have you any comment on this? Because I found that it remove the
> Smalltalk at: check and
> let applications change it
>
> Stef
>
> On Saturday, May 17, 2003, at 01:14 PM, Stephane Ducasse wrote:
>
> > Hi all
> >
> > Here is what we propose for removing beep from Object. I
> would like to
> > have your feedback.
> >
> >
> > Object subclass: #Beeper
> > instanceVariableNames: ''
> > classVariableNames: ''
> > poolDictionaries: ''
> > category: 'System-Support'!
> >
> > !Beeper commentStamp: 'sd 5/17/2003 13:04' prior: 0!
> > I'm a simple object been responsible to provide an audible
> feedback.
> > However, the feedback can be change by using my class side method
> > setDefault: with an object understanding the message play.
> >
> > So you can invoke Beeper as follow
> >
> > Beeper default beep
> > Beeper default play
> >
> > But the idiom is really Beeper beep
> >
> > Note that play is introduced to propose a common interface between
> > AbstractSound and Beeper.
> > This way we can have more enhanced beepers doing the following:
> >
> > SampleSound class>>initialize
> > "SampledSound initialize"
> >
> > IncrementFractionBits _ 16.
> > IncrementScaleFactor _ 2 raisedTo: IncrementFractionBits.
> > ScaledIndexOverflow _ 2 raisedTo: 29. "handle overflow before
> > needing LargePositiveIntegers"
> > self useCoffeeCupClink.
> > SoundLibrary ifNil: [SoundLibrary _ Dictionary new].
> > Beeper setDefault: (self new
> > setSamples:
> self coffeeCupClink
> > samplingRate: 12000)).
> >
> >
> > Then Beeper beep will play the coffeeCup sound.
> >
> >
> >
> >
> >
> >
> > !
> >
> > Beeper class
> > instanceVariableNames: 'default '!
> >
> > !Beeper methodsFor: 'playing' stamp: 'sd 5/17/2003 12:12'!
> > beepPrimitive
> > "Beep in the absence of sound support"
> >
> > <primitive: 140>
> > self primitiveFailed! !
> >
> > !Beeper methodsFor: 'playing' stamp: 'sd 5/17/2003 12:13'!
> > play
> >
> > self beepPrimitive
> > ! !
> >
> >
> > !Beeper class methodsFor: 'customize' stamp: 'sd 5/17/2003 13:08'!
> > clearDefault
> > "Beeper clearDefault set as default the primitive beep"
> >
> > default := nil! !
> >
> > !Beeper class methodsFor: 'customize' stamp: 'sd 5/15/2003 22:51'!
> > default
> >
> > default isNil
> > ifTrue: [default := self newDefault].
> > ^ default! !
> >
> > !Beeper class methodsFor: 'customize' stamp: 'sd 5/15/2003 22:52'!
> > newDefault
> > "Subclass may override me to provide a default beep"
> >
> > ^ self basicNew! !
> >
> > !Beeper class methodsFor: 'customize' stamp: 'sd 5/17/2003 12:11'!
> > setDefault: aPlayableEntity
> > "aBeepingEntity should anwers the message play"
> > default := aPlayableEntity! !
> >
> > !Beeper class methodsFor: 'instance creation' stamp: 'sd 5/17/2003
> > 13:12'!
> > beep
> > "The preferred way of producing a sonor feedback"
> >
> > self default play! !
> >
> >
> > !SampledSound class methodsFor: 'class initialization' stamp: 'sd
> > 5/17/2003 13:04'!
> > initialize
> > "SampledSound initialize"
> >
> > IncrementFractionBits _ 16.
> > IncrementScaleFactor _ 2 raisedTo: IncrementFractionBits.
> > ScaledIndexOverflow _ 2 raisedTo: 29. "handle overflow before
> > needing LargePositiveIntegers"
> > self useCoffeeCupClink.
> > SoundLibrary ifNil: [SoundLibrary _ Dictionary new].
> > Beeper setDefault: (self new
> > setSamples:
> self coffeeCupClink
> > samplingRate: 12000).
> > ! !
> >
> > SampledSound initialize!
> >
> >
>
>
More information about the Squeak-dev
mailing list
|