Beep new design

Stephane Ducasse ducasse at iam.unibe.ch
Sat May 17 15:20:43 UTC 2003


Yes but we can remove all the beep stuff from Object, and Sound people 
can be happy too so I will produce a complete changes.


On Saturday, May 17, 2003, at 04:47 PM, Andreas Raab wrote:

> 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