Class AudioReader

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class AudioReader
    extends Source
    This actor outputs samples from a sound file as doubles in the range [-1.0, 1.0]. If the file has multiple channels of output data, then the separate channels are sent on successive output channels. If the output has more channels than there are channels in the audio file, then nothing will be send on the output channels where there is no corresponding output data.

    The fileOrURL parameter should be set to the name of the file or a URL, in any form accepted by FileParameter. The default initial value is $CLASSPATH/ptolemy/actor/lib/javasound/voice.wav, which refers to a file that is found relative to the classpath.

    Supported file formats are WAV, AU, and AIFF. The sound file format is determined from the file extension.

    When the end of the file is reached, postfire() return false, which in some domains will cause the model to stop executing (e.g. SDF), and in some will prevent further firings of this actor (e.g. DE).

    There are security issues involved with accessing files and audio resources in applets. Applets are only allowed access to files specified by a URL and located on the machine from which the applet is loaded. The .java.policy file may be modified to grant applets more privileges.

    Note: Requires Java 2 v1.3.0 or later.

    Since:
    Ptolemy II 1.0
    Version:
    $Id$
    Author:
    Brian K. Vogel, Christopher Hylands, Edward A. Lee, Steve Neuendorffer
    See Also:
    LiveSound, SoundWriter, SoundPlayback
    Pt.AcceptedRating:
    Yellow (chf)
    Pt.ProposedRating:
    Green (eal)
    • Field Detail

      • fileOrURL

        public FileParameter fileOrURL
        The file name or URL from which to read. This is a string with any form accepted by FileParameter.
        See Also:
        FileParameter
    • Constructor Detail

      • AudioReader

        public AudioReader​(CompositeEntity container,
                           java.lang.String name)
                    throws NameDuplicationException,
                           IllegalActionException
        Construct an actor with the given container and name. In addition to invoking the base class constructors, construct the parameters and initialize them to their default values.
        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
        If the specified attribute is fileOrURL and there is an open file being read, then close that file and open the new one; do nothing if the file name is the same as the previous value of this attribute.
        Overrides:
        attributeChanged in class NamedObj
        Parameters:
        attribute - The attribute that has changed.
        Throws:
        IllegalActionException - If the specified attribute is fileOrURL and the file cannot be opened, or the previously opened file cannot be closed.
      • postfire

        public boolean postfire()
                         throws IllegalActionException
        This method causes one audio sample per channel to be read from the specified file. Each sample is converted to a double token, with a maximum range of -1.0 to 1.0. One double token per channel is written to the output port.
        Specified by:
        postfire in interface Executable
        Overrides:
        postfire in class AtomicActor<TypedIOPort>
        Returns:
        True if there are samples available from the audio source. False if there are no more samples (end of sound file reached).
        Throws:
        IllegalActionException - If there is a problem reading from the specified sound file.
      • prefire

        public boolean prefire()
                        throws IllegalActionException
        Return false if there is no more data available in the file. Otherwise, return whatever the superclass returns.
        Specified by:
        prefire in interface Executable
        Overrides:
        prefire in class Source
        Returns:
        True, unless the trigger input is connected and has no input.
        Throws:
        IllegalActionException - If the superclass throws it.
      • _openReader

        protected void _openReader()
                            throws IllegalActionException
        Initialize/Reinitialize audio reading. First close any open files. Then read the fileOrURL parameter and open the file specified by this parameter.
        Throws:
        IllegalActionException - If there is a problem initializing the audio reader.