window.runtime property | window.runtime.flash.media.Sound |
Inheritance | Sound EventDispatcher Object |
Runtime Versions: | AIR 1.0, |
In Flash Player 10 and later and AIR 1.5 and later, you can also use this
class to work with sound that is generated dynamically.
In this case, the Sound object uses the function you assign to a sampleData
event handler to
poll for sound data. The sound is played as it is retrieved from a ByteArray object that
you populate with sound data. You can use Sound.extract()
to extract sound data from a
Sound object,
after which you can manipulate it before writing it back to the stream for playback.
To control sounds that are embedded in a SWF file, use the properties in the SoundMixer class.
When you use this class, consider the following security model:
- Loading and playing a sound is not allowed if the calling file is in a network sandbox and the sound file to be loaded is local.
- By default, loading and playing a sound is not allowed if the calling file is local and tries to load and play a remote sound. A user must grant explicit permission to allow this type of access.
- Certain operations dealing with sound are restricted. The data in a loaded sound cannot
be accessed by a file in a different domain unless you implement a cross-domain policy file.
Sound-related APIs that fall under this restriction are
Sound.id3
,SoundMixer.computeSpectrum()
,SoundMixer.bufferTime
, and theSoundTransform
class.
However, in Adobe AIR, content in the application
security sandbox (content
installed with the AIR application) are not restricted by these security limitations.
For more information related to security, see the Flash Player Developer Center Topic: Security.
See also
Property | Defined By | ||
---|---|---|---|
bytesLoaded : uint [read-only]
Returns the currently available number of bytes in this sound object. | Sound | ||
bytesTotal : int [read-only]
Returns the total number of bytes in this sound object. | Sound | ||
constructor : Object
A reference to the class object or constructor function for a given object instance. | Object | ||
id3 : ID3Info [read-only]
Provides access to the metadata that is part of an MP3 file. | Sound | ||
isBuffering : Boolean [read-only]
Returns the buffering state of external MP3 files. | Sound | ||
isURLInaccessible : Boolean [read-only]
Indicates if the Sound.url property has been
truncated. | Sound | ||
length : Number [read-only]
The length of the current sound in milliseconds. | Sound | ||
prototype : Object [static]
A reference to the prototype object of a class or function object. | Object | ||
url : String [read-only]
The URL from which this sound was loaded. | Sound |
Method | Defined By | ||
---|---|---|---|
Creates a new Sound object. | Sound | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener
receives notification of an event. | EventDispatcher | ||
close():void
Closes the stream, causing any download of data to cease. | Sound | ||
dispatchEvent(event:Event):Boolean
Dispatches an event into the event flow. | EventDispatcher | ||
Extracts raw sound data from a Sound object. | Sound | ||
hasEventListener(type:String):Boolean
Checks whether the EventDispatcher object has any listeners registered for a specific type
of event. | EventDispatcher | ||
hasOwnProperty(name:String):Boolean
Indicates whether an object has a specified property defined. | Object | ||
isPrototypeOf(theClass:Object):Boolean
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter. | Object | ||
Initiates loading of an external MP3 file from the specified URL. | Sound | ||
loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
load MP3 sound data from a ByteArray object into a Sound object. | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
load PCM 32-bit floating point sound data from a ByteArray object into a Sound object. | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Generates a new SoundChannel object to play back the sound. | Sound | ||
propertyIsEnumerable(name:String):Boolean
Indicates whether the specified property exists and is enumerable. | Object | ||
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object. | EventDispatcher | ||
setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
Sets the availability of a dynamic property for loop operations. | Object | ||
toLocaleString():String
Returns the string representation of this object, formatted according to locale-specific conventions. | Object | ||
toString():String
Returns the string representation of the specified object. | Object | ||
valueOf():Object
Returns the primitive value of the specified object. | Object | ||
willTrigger(type:String):Boolean
Checks whether an event listener is registered with this EventDispatcher object or any of
its ancestors for the specified event type. | EventDispatcher |
Event | Summary | Defined By | ||
---|---|---|---|---|
[broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active. | EventDispatcher | |||
Dispatched when data has loaded successfully. | Sound | |||
[broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive. | EventDispatcher | |||
Dispatched by a Sound object when ID3 data is available for an MP3 sound. | Sound | |||
Dispatched when an input/output error occurs that causes a load operation to fail. | Sound | |||
Dispatched when a load operation starts. | Sound | |||
Dispatched when data is received as a load operation progresses. | Sound | |||
Dispatched when the runtime requests new audio data. | Sound |
bytesLoaded | property |
bytesLoaded:uint
[read-only] Runtime Versions: | AIR 1.0, |
Returns the currently available number of bytes in this sound object. This property is usually useful only for externally loaded files.
bytesTotal | property |
bytesTotal:int
[read-only] Runtime Versions: | AIR 1.0, |
Returns the total number of bytes in this sound object.
id3 | property |
id3:ID3Info
[read-only] Runtime Versions: | AIR 1.0, |
Provides access to the metadata that is part of an MP3 file.
MP3 sound files can contain ID3 tags, which provide metadata about the
file. If an MP3 sound that you load using the Sound.load()
method contains ID3 tags, you can query these properties. Only ID3 tags
that use the UTF-8 character set are supported.
AIR supports ID3 2.0 tags,
specifically 2.3 and 2.4. The following tables list the standard ID3 2.0 tags
and the type of content the tags represent. The Sound.id3
property provides
access to these tags through the format
my_sound.id3.COMM
, my_sound.id3.TIME
, and so on. The first
table describes tags that can be accessed either through the ID3 2.0 property name or
the ActionScript property name. The second table describes ID3 tags that are supported but do not have
predefined properties in ActionScript.
ID3 2.0 tag | Corresponding Sound class property |
COMM | Sound.id3.comment |
TALB | Sound.id3.album |
TCON | Sound.id3.genre |
TIT2 | Sound.id3.songName |
TPE1 | Sound.id3.artist |
TRCK | Sound.id3.track |
TYER | Sound.id3.year |
The following table describes ID3 tags that are supported but do not have
predefined properties in the Sound class. You access them by calling
mySound.id3.TFLT
, mySound.id3.TIME
, and so on. NOTE: None of
these tags are supported in Flash Lite 4.
Property | Description |
TFLT | File type |
TIME | Time |
TIT1 | Content group description |
TIT2 | Title/song name/content description |
TIT3 | Subtitle/description refinement |
TKEY | Initial key |
TLAN | Languages |
TLEN | Length |
TMED | Media type |
TOAL | Original album/movie/show title |
TOFN | Original filename |
TOLY | Original lyricists/text writers |
TOPE | Original artists/performers |
TORY | Original release year |
TOWN | File owner/licensee |
TPE1 | Lead performers/soloists |
TPE2 | Band/orchestra/accompaniment |
TPE3 | Conductor/performer refinement |
TPE4 | Interpreted, remixed, or otherwise modified by |
TPOS | Part of a set |
TPUB | Publisher |
TRCK | Track number/position in set |
TRDA | Recording dates |
TRSN | Internet radio station name |
TRSO | Internet radio station owner |
TSIZ | Size |
TSRC | ISRC (international standard recording code) |
TSSE | Software/hardware and settings used for encoding |
TYER | Year |
WXXX | URL link frame |
When using this property, consider the Flash Player security model:
- The
id3
property of a Sound object is always permitted for SWF files that are in the same security sandbox as the sound file. For files in other sandboxes, there are security checks. - When you load the sound, using the
load()
method of the Sound class, you can specify acontext
parameter, which is a SoundLoaderContext object. If you set thecheckPolicyFile
property of the SoundLoaderContext object totrue
, Flash Player checks for a URL policy file on the server from which the sound is loaded. If a policy file exists and permits access from the domain of the loading SWF file, then the file is allowed to access theid3
property of the Sound object; otherwise it is not.
However, in Adobe AIR, content in the application
security sandbox (content
installed with the AIR application) are not restricted by these security limitations.
For more information related to security, see the Flash Player Developer Center Topic: Security.
See also
isBuffering | property |
isBuffering:Boolean
[read-only] Runtime Versions: | AIR 1.0, |
Returns the buffering state of external MP3 files. If the value is true
,
any playback is
currently suspended while the object waits for more data.
isURLInaccessible | property |
isURLInaccessible:Boolean
[read-only] Runtime Versions: | 2 |
Indicates if the Sound.url
property has been
truncated. When the isURLInaccessible
value is true
the
Sound.url
value is only the domain of the final URL from which the sound loaded.
For example, the property is truncated if the sound is loaded from http://www.adobe.com/assets/hello.mp3
,
and the Sound.url
property has the value http://www.adobe.com
.
The isURLInaccessible
value is true
only when all of the following are also true:
- An HTTP redirect occurred while loading the sound file.
- The SWF file calling
Sound.load()
is from a different domain than the sound file's final URL. - The SWF file calling
Sound.load()
does not have permission to access the sound file. Permission is granted to access the sound file the same way permission is granted for theSound.id3
property: establish a policy file and use theSoundLoaderContext.checkPolicyFile
property.
Note: The isURLInaccessible
property was added for Flash Player 10.1 and AIR 2.0.
However, this property is made available to SWF files of all versions when the
Flash runtime supports it. So, using some authoring tools in "strict mode" causes a compilation error. To work around the error
use the indirect syntax mySound["isURLInaccessible"]
, or disable strict mode. If you are using Flash Professional CS5
or Flex SDK 4.1, you can use and compile this API for runtimes released before Flash Player 10.1 and AIR 2.
For application content in AIR, the value of this property is always false
.
See also
length | property |
length:Number
[read-only] Runtime Versions: | AIR 1.0, |
The length of the current sound in milliseconds.
url | property |
url:String
[read-only] Runtime Versions: | AIR 1.0, |
The URL from which this sound was loaded. This property is applicable only to Sound
objects that were loaded using the Sound.load()
method. For
Sound objects that are associated with a sound asset from a SWF file's library, the
value of the url
property is null
.
When you first call Sound.load()
, the url
property
initially has a value of null
, because the final URL is not yet known.
The url
property will have a non-null value as soon as an
open
event is dispatched from the Sound object.
The url
property contains the final, absolute URL from which a sound was
loaded. The value of url
is usually the same as the value passed to the
stream
parameter of Sound.load()
.
However, if you passed a relative URL to Sound.load()
the value of the url
property represents the absolute URL.
Additionally, if the original URL request is redirected by an HTTP server, the value
of the url
property reflects the final URL from which the sound file was actually
downloaded. This reporting of an absolute, final URL is equivalent to the behavior of
LoaderInfo.url
.
In some cases, the value of the url
property is truncated; see the
isURLInaccessible
property for details.
See also
Sound | () | Constructor |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Runtime Versions: | AIR 1.0, |
Creates a new Sound object. If you pass a valid URLRequest object to the
Sound constructor, the constructor automatically calls the load()
function
for the Sound object.
If you do not pass a valid URLRequest object to the Sound constructor,
you must call the load()
function for the Sound object yourself,
or the stream will not load.
Once load()
is called on a Sound object, you can't later load
a different sound file into that Sound object. To load a different sound file,
create a new Sound object.
load()
,
you can use the sampleData
event handler to load sound dynamically into the Sound object.
Parameters stream:URLRequest (default = null ) — The URL that points to an external MP3 file.
| |
context:SoundLoaderContext (default = null ) — An optional SoundLoader context object, which can define the buffer time
(the minimum number of milliseconds of MP3 data to hold in the Sound object's
buffer) and can specify whether the application should check for a cross-domain
policy file prior to loading the sound.
|
close | () | method |
public function close():void
Runtime Versions: | AIR 1.0, |
Closes the stream, causing any download of data to cease.
No data may be read from the stream after the close()
method is called.
Throws
IOError — The stream could not be closed, or
the stream was not open.
|
extract | () | method |
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number
Runtime Versions: | 1.5 |
Extracts raw sound data from a Sound object.
This method is designed to be used when you are working
with dynamically generated audio, using a function you assign
to the sampleData
event for a different Sound object.
That is, you can use this method to extract sound data from a Sound object.
Then you can write the data to the byte array that another Sound object is using
to stream dynamic audio.
The audio data is placed in the target byte array starting from the current position of the byte array.
The audio data is always exposed as 44100 Hz Stereo. The sample type is a 32-bit floating-point value,
which can be converted to a Number using ByteArray.readFloat()
.
Parameters
target:ByteArray — A ByteArray object in which the extracted sound samples are placed.
| |
length:Number — The number of sound samples to extract.
A sample contains both the left and right channels — that is, two 32-bit floating-point values.
| |
startPosition:Number (default = -1 ) — The sample at which extraction begins.
If you don't specify a value, the first call to Sound.extract() starts at the beginning
of the sound; subsequent calls without a value for startPosition
progress sequentially through the file.
|
Number — The number of samples written to the ByteArray specified in the target parameter.
|
See also
load | () | method |
public function load(stream:URLRequest, context:SoundLoaderContext = null):void
Runtime Versions: | AIR 1.0, |
Initiates loading of an external MP3 file from the specified URL. If you provide
a valid URLRequest object to the Sound constructor, the constructor calls
Sound.load()
for you. You only need to call Sound.load()
yourself if you
don't pass a valid URLRequest object to the Sound constructor or you pass a null
value.
Once load()
is called on a Sound object, you can't later load
a different sound file into that Sound object. To load a different sound file,
create a new Sound object.
For more information related to security, see the Flash Player Developer Center Topic: Security.
Parameters
stream:URLRequest — A URL that points to an external MP3 file.
| |
context:SoundLoaderContext (default = null ) — An optional SoundLoader context object, which can define the buffer time
(the minimum number of milliseconds of MP3 data to hold in the Sound object's
buffer) and can specify whether the application should check for a cross-domain
policy file prior to loading the sound.
|
Throws
IOError — A network error caused the load to fail.
| |
SecurityError — Local untrusted files may not communicate with
the Internet. You can work around this by reclassifying this file
as trusted.
| |
SecurityError — You cannot connect to commonly reserved ports.
For a complete list of blocked ports, see "Restricting Networking APIs" in the
ActionScript 3.0 Developer's Guide.
| |
IOError — The digest property of the stream object is not
null . You should only set the digest property of a URLRequest object
when calling the URLLoader.load() method when loading a SWZ file (an Adobe
platform component).
|
loadCompressedDataFromByteArray | () | method |
public function loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
Runtime Versions: | AIR 1.0, |
load MP3 sound data from a ByteArray object into a Sound object. The data will be read from the current ByteArray position and will leave the ByteArray position at the end of the specified bytes length once finished. If the MP3 sound data contains ID3 data ID3 events will be dispatched during this function call. This function will throw an exception if the ByteArray object does not contain enough data.
Parameters
bytes:ByteArray | |
bytesLength:uint |
loadPCMFromByteArray | () | method |
public function loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Runtime Versions: | AIR 1.0, |
load PCM 32-bit floating point sound data from a ByteArray object into a Sound object. The data will be read from the current ByteArray position and will leave the ByteArray position at the end of the specified sample length multiplied by either 1 channel or 2 channels if the stereo flag is set once finished. This function will throw an exception if the ByteArray object does not contain enough data.
Parameters
bytes:ByteArray | |
samples:uint | |
format:String (default = "float ")
| |
stereo:Boolean (default = true )
| |
sampleRate:Number (default = 44100.0 )
|
play | () | method |
public function play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Runtime Versions: | AIR 1.0, |
Generates a new SoundChannel object to play back the sound. This method returns a SoundChannel object, which you access to stop the sound and to monitor volume. (To control the volume, panning, and balance, access the SoundTransform object assigned to the sound channel.)
Parameters
startTime:Number (default = 0 ) — The initial position in milliseconds at which playback should
start.
| |
loops:int (default = 0 ) — Defines the number of times a sound loops back to the startTime value
before the sound channel stops playback.
| |
sndTransform:flash.media:SoundTransform (default = null ) — The initial SoundTransform object assigned to the sound channel.
|
SoundChannel — A SoundChannel object, which you use to control the sound.
This method returns null if you have no sound card
or if you run out of available sound channels. The maximum number of
sound channels available at once is 32.
|
See also
complete | Event |
flash.events.Event
property Event.type =
flash.events.Event.COMPLETE
Runtime Versions: | AIR 1.0, |
Dispatched when data has loaded successfully.
TheEvent.COMPLETE
constant defines the value of the type
property of a complete
event object.
This event has the following properties:
Property | Value |
---|---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
currentTarget | The object that is actively processing the Event object with an event listener. |
target | The network object that has completed loading. |
See also
id3 | Event |
flash.events.Event
property Event.type =
flash.events.Event.ID3
Runtime Versions: | AIR 1.0, |
Dispatched by a Sound object when ID3 data is available for an MP3 sound.
TheEvent.ID3
constant defines the value of the type
property of an id3
event object.
This event has the following properties:
Property | Value |
---|---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
currentTarget | The object that is actively processing the Event object with an event listener. |
target | The Sound object loading the MP3 for which ID3 data is now available.
The target is not always the object in the display list
that registered the event listener. Use the currentTarget
property to access the object in the display list that is currently processing the event. |
See also
ioError | Event |
flash.events.IOErrorEvent
property IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Runtime Versions: | AIR 1.0, |
Dispatched when an input/output error occurs that causes a load operation to fail.
Defines the value of thetype
property of an ioError
event object.
This event has the following properties:
Property | Value |
---|---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
currentTarget | The object that is actively processing the Event object with an event listener. |
errorID | A reference number associated with the specific error (AIR only). |
target | The network object experiencing the input/output error. |
text | Text to be displayed as an error message. |
See also
open | Event |
flash.events.Event
property Event.type =
flash.events.Event.OPEN
Runtime Versions: | AIR 1.0, |
Dispatched when a load operation starts.
TheEvent.OPEN
constant defines the value of the type
property of an open
event object.
This event has the following properties:
Property | Value |
---|---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
currentTarget | The object that is actively processing the Event object with an event listener. |
target | The network object that has opened a connection. |
See also
progress | Event |
flash.events.ProgressEvent
property ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
Runtime Versions: | AIR 1.0, |
Dispatched when data is received as a load operation progresses.
Defines the value of thetype
property of a progress
event object.
This event has the following properties:
Property | Value |
---|---|
bubbles | false |
bytesLoaded | The number of items or bytes loaded at the time the listener processes the event. |
bytesTotal | The total number of items or bytes that ultimately will be loaded if the loading process succeeds. |
cancelable | false ; there is no default behavior to cancel. |
currentTarget | The object that is actively processing the Event object with an event listener. |
target | The object reporting progress. |
See also
sampleData | Event |
flash.events.SampleDataEvent
property SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
Runtime Versions: | 1.5 |
Dispatched when the runtime requests new audio data.
Defines the value of thetype
property of a SampleDataEvent
event object.
This event has the following properties:
Property | Value |
---|---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
position | The point from which audio data is provided. |
See also
Note: To test this example, do the following:
- Add the AIRAliases.js file to the project directory.
- Place a file named MySound.mp3 in the same project directory.
- Create an application descriptor file for the project, and test the project using ADL.
<html> <head> <script src="AIRAliases.js" /> <script> function init() { var request = new air.URLRequest("app://MySound.mp3"); var soundFactory = new air.Sound(); soundFactory.addEventListener(air.Event.COMPLETE, completeHandler); soundFactory.addEventListener(air.Event.ID3, id3Handler); soundFactory.addEventListener(air.IOErrorEvent.IO_ERROR, ioErrorHandler); soundFactory.addEventListener(air.ProgressEvent.PROGRESS, progressHandler); soundFactory.load(request); song = soundFactory.play(); } function completeHandler(event) { air.trace("completeHandler: " + event); } function id3Handler(event) { air.trace("id3Handler: " + event); } function ioErrorHandler(event) { air.trace("ioErrorHandler: " + event); } function progressHandler(event) { air.trace("progressHandler: " + event); } </script> </head> <body onload='init()'> </body> </html>
Thu Sep 29 2011, 02:34 AM -07:00