ptolemy.actor.lib.javasound
Class LiveSoundActor

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.javasound.LiveSoundActor
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
AudioCapture, AudioPlayer

public class LiveSoundActor
extends TypedAtomicActor

This actor forms a base class for actors that interact with real-time sound through the ptolemy.media.LiveSound class. This class manages the parameters for live sound.

Note: Requires Java 2 v1.3.0 or later.

Since:
Ptolemy II 4.0
Version:
$Id: LiveSoundActor.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer, Edward A. Lee (contributor)
See Also:
LiveSound, AudioPlayer, AudioCapture, Serialized Form
Accepted Rating:
Yellow (chf)
Proposed Rating:
Green (neuendor)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
protected  int _bitsPerSample
          Value of the bitsPerSample parameter.
protected  int _bufferSize
          The requested buffer size.
protected  int _channels
          The number of channels.
protected  boolean _isExecuting
          True if this actor is executing.
protected  int _sampleRate
          The value of the sampleRate parameter.
protected  int _transferSize
          The transfer size.
 SharedParameter bitsPerSample
          The number of bits per sample.
 SharedParameter bufferSize
          The requested buffer size in the audio hardware.
 SharedParameter channels
          The number of audio channels.
 SharedParameter sampleRate
          The sample rate in samples per second.
 SharedParameter transferSize
          The number of samples that will be transferred to the audio driver together.
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
LiveSoundActor(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
protected  void _initializeAudio()
          Initialize the audio system.
 void attributeChanged(Attribute attribute)
          Handle change requests for all parameters.
 void initialize()
          Initialize this actor.
 void wrapup()
          Wrapup execution.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

bitsPerSample

public SharedParameter bitsPerSample
The number of bits per sample. This is an integer that defaults to 16. This parameter is shared by all instances of this class and subclasses in the model, so changing it in one of those actors will cause it to change in all. An exception will be thrown if this parameter is set to an unsupported bit resolution (currently, only 8 and 16 bits are supported).


bufferSize

public SharedParameter bufferSize
The requested buffer size in the audio hardware. This affects how far ahead of real time the model can get. A larger buffer size may limit the responsivity of the model because changes in the model will be heard only after the buffer has been flushed. This is an integer that defaults to 1024, representing a buffer with 1024 samples per channel. At an 8 kHz sample rate, this means a worst-case latency of about 1/8 seconds. This parameter is shared by all instances of this class and subclasses in the model, so changing it in one of those actors will cause it to change in all.


channels

public SharedParameter channels
The number of audio channels. This is an integer that defaults to 1. This parameter is shared by all instances of this class and subclasses in the model, so changing it in one of those actors will cause it to change in all. An exception will be thrown if this parameter is set to an an unsupported channel number.


sampleRate

public SharedParameter sampleRate
The sample rate in samples per second. This is an integer that defaults to 8000. This parameter is shared by all instances of this class and subclasses in the model, so changing it in one of those actors will cause it to change in all. An exception will be thrown if this parameter is set to an unsupported sample rate.


transferSize

public SharedParameter transferSize
The number of samples that will be transferred to the audio driver together. This is an integer with default 128. This parameter is shared by all instances of this class and subclasses in the model, so changing it in one of those actors will cause it to change in all.


_bitsPerSample

protected int _bitsPerSample
Value of the bitsPerSample parameter.


_bufferSize

protected int _bufferSize
The requested buffer size.


_channels

protected int _channels
The number of channels. Initialized from the channels parameter.


_sampleRate

protected int _sampleRate
The value of the sampleRate parameter.


_transferSize

protected int _transferSize
The transfer size. Initialized from the transferSize parameter.


_isExecuting

protected boolean _isExecuting
True if this actor is executing. Set to true by initialize(), set to false by wrapup().

Constructor Detail

LiveSoundActor

public LiveSoundActor(CompositeEntity container,
                      java.lang.String name)
               throws IllegalActionException,
                      NameDuplicationException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
Handle change requests for all parameters. An exception is thrown if the requested change is not allowed.

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the change is not allowed.

initialize

public void initialize()
                throws IllegalActionException
Initialize this actor. Derived classes should extend this method to initialize the appropriate audio resource.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class AtomicActor
Throws:
IllegalActionException - If there is a problem beginning audio playback.

wrapup

public void wrapup()
            throws IllegalActionException
Wrapup execution. Derived classes should override this method to release access to the audio resources.

Specified by:
wrapup in interface Initializable
Overrides:
wrapup in class AtomicActor
Throws:
IllegalActionException - May be thrown by derived classes.

_initializeAudio

protected void _initializeAudio()
                         throws IllegalActionException,
                                java.io.IOException
Initialize the audio system. Set parameters in the audio system according to the parameters of this actor. Derived classes should call this method during initialize().

Throws:
IllegalActionException - If there is a problem reading or setting a parameter.
java.io.IOException - If there is a problem setting the bits per sample, channels or buffer size.