Environment: Siren
Subclasses of Voice implement the mappings between symbolic event parameters (like timbre descriptions and pitch names) and concrete output event data.
The instance variables are:
The global object Voices is a dictionary that note events can refer to with integer or symbolic keys.
accessing
instrument
name
stream
instrument: newValue
set my instrument.
stream
answer the stream of the receiver voice
stream: someStream
plug in a stream to the receiver voice
events
Answer an event list read from the receiver.
play: anEventList
Expand the list and play it now.
play: anEventOrList at: start
Expand the list and play it at the given time.
playEvent: anEvent
Play the argument now.
playEvent: anEvent at: aTime
make sure my subclasses implement this
readOnto: eventList
Read events from the receiver into the argument.
printing
Print the receivcer on the argument.
testing
Answer true
initialize-release
Close the stream, devise, or whatever.
initialize
Set up a Voice.
initializeNamed: aName
Set up a named Voice.
MetaClass: Voice class
class var accessing
class initialization
set up the shared dictionary for caching voices
reset
Reset all sub-instances of Voice.
setDefault: className
Set the default class to use for new voices
instance creation
Answer a voice.
named: aName
Answer the shared dictionary's voice item at the given name (or the name itself if it's a voice)
on: someStream
Answer a new voice instance on the given stream.