window.runtime propertywindow.runtime.flash.media.Microphone
InheritanceMicrophone Inheritance EventDispatcher
Runtime Versions:  1.0

Use the Microphone class to capture audio from a microphone attached to a computer running Adobe AIR. Use the Microphone class to monitor the audio locally. Use the NetConnection and NetStream classes to transmit the audio to Flash Media Server. Flash Media Server can send the audio to other servers and broadcast it to other clients running Adobe AIR.

For information about capturing video, see the Camera class.

Important: Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the microphone. Make sure that your application window size is at least 215 x 138 pixels, which is the minimum size required to display the dialog box.

To create or reference a Microphone object, use the Microphone.getMicrophone() method.



Properties
 PropertyDefined By
  activityLevel : Number
[read-only] The amount of sound the microphone is detecting.
Microphone
  codec : String
The codec to use for compressing audio.
Microphone
  encodeQuality : int
The encoded speech quality when using the Speex codec.
Microphone
  framesPerPacket : int
Number of Speex speech frames transmitted in a packet (message).
Microphone
  gain : Number
The microphone gain—that is, the amount by which the microphone multiplies the signal before transmitting it.
Microphone
  index : int
[read-only] The index of the microphone, as reflected in the array returned by Microphone.names.
Microphone
  muted : Boolean
[read-only] Specifies whether the user has denied access to the microphone (true) or allowed access (false).
Microphone
  name : String
[read-only] The name of the current sound capture device, as returned by the sound capture hardware.
Microphone
  names : Array
[static] [read-only] An array of strings containing the names of all available sound capture devices.
Microphone
  rate : int
The rate at which the microphone captures sound, in kHz.
Microphone
  silenceLevel : Number
[read-only] The amount of sound required to activate the microphone and dispatch the activity event.
Microphone
  silenceTimeout : int
[read-only] The number of milliseconds between the time the microphone stops detecting sound and the time the activity event is dispatched.
Microphone
  soundTransform : SoundTransform
Controls the sound of this microphone object when it is in loopback mode.
Microphone
  useEchoSuppression : Boolean
[read-only] Set to true if echo suppression is enabled; false otherwise.
Microphone
Public Methods
 MethodDefined By
 Inherited
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
 Inherited
Dispatches an event into the event flow.
EventDispatcher
  
[static] Returns a reference to a Microphone object for capturing audio.
Microphone
 Inherited
Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
EventDispatcher
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object.
EventDispatcher
  
setLoopBack(state:Boolean = true):void
Routes audio captured by a microphone to the local speakers.
Microphone
  
setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
Sets the minimum input level that should be considered sound and (optionally) the amount of silent time signifying that silence has actually begun.
Microphone
  
setUseEchoSuppression(useEchoSuppression:Boolean):void
Specifies whether to use the echo suppression feature of the audio codec.
Microphone
 Inherited
Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
EventDispatcher
Events
 Event Summary Defined By
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active.EventDispatcher
  Dispatched when a microphone begins or ends a session.Microphone
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive.EventDispatcher
  Dispatched when a microphone reports its status.Microphone
Property Detail
activityLevelproperty
activityLevel:Number  [read-only]
Runtime Versions:  1.0

The amount of sound the microphone is detecting. Values range from 0 (no sound is detected) to 100 (very loud sound is detected). The value of this property can help you determine a good value to pass to the Microphone.setSilenceLevel() method.

If the microphone is available but is not yet being used because Microphone.getMicrophone() has not been called, this property is set to -1.

See also

codecproperty 
codec:String
Runtime Versions:  1.5

The codec to use for compressing audio. The default codec used is the Nellymoser codec. The enumeration class SoundCodec contains the various values that are valid for the codec property.

See also

encodeQualityproperty 
encodeQuality:int
Runtime Versions:  1.5

The encoded speech quality when using the Speex codec. Possible values are from 0 to 10. The default value is 6. Higher numbers represent higher quality but require more bandwidth, as shown in the following table. The bit rate values that are listed represent net bit rates and do not include packetization overhead.

Quality valueRequired bit rate (kilobits per second)
0 3.95
15.75
27.75
39.80
412.8
516.8
620.6
723.8
827.8
934.2
1042.2

See also

framesPerPacketproperty 
framesPerPacket:int
Runtime Versions:  1.5

Number of Speex speech frames transmitted in a packet (message). Each frame is 20 ms long. The default value is two frames per packet.

The more Speex frames in a message, the lower the bandwidth required but the longer the delay in sending the message. Fewer Speex frames increases bandwidth required but reduces delay.

gainproperty 
gain:Number
Runtime Versions:  1.0

The microphone gain—that is, the amount by which the microphone multiplies the signal before transmitting it. A value of 0 tells Flash Player to multiply by 0; that is, the microphone transmits no sound.

You can think of this setting like a volume knob on a stereo: 0 is no volume and 50 is normal volume. Numbers below 50 specify lower than normal volume, while numbers above 50 specify higher than normal volume. Valid values are 0 through 100, and 50 is the default value. The user can change this value in the Flash Player Microphone Settings panel.

See also

indexproperty 
index:int  [read-only]
Runtime Versions:  1.0

The index of the microphone, as reflected in the array returned by Microphone.names.

See also

mutedproperty 
muted:Boolean  [read-only]
Runtime Versions:  1.0

Specifies whether the user has denied access to the microphone (true) or allowed access (false). When this value changes, a status event is dispatched. For more information, see Microphone.getMicrophone().

See also

nameproperty 
name:String  [read-only]
Runtime Versions:  1.0

The name of the current sound capture device, as returned by the sound capture hardware.

See also

namesproperty 
names:Array  [read-only]
Runtime Versions:  1.0

An array of strings containing the names of all available sound capture devices. The names are returned without having to display the Flash Player Privacy Settings panel to the user. This array provides the zero-based index of each sound capture device and the number of sound capture devices on the system, through the Microphone.names.length property. For more information, see the Array class entry.

Calling Microphone.names requires an extensive examination of the hardware, and it may take several seconds to build the array. In most cases, you can just use the default microphone.

Note: To determine the name of the current microphone, use the name property.

See also

rateproperty 
rate:int
Runtime Versions:  1.0

The rate at which the microphone captures sound, in kHz. The allowed values are any of the following your sound device supports: 5, 8, 11, 22, or 44.

The default value is 8 kHz if your sound capture device supports this value. Otherwise, the default value is the next available capture level above 8 kHz that your sound capture device supports, usually 11 kHz.

silenceLevelproperty 
silenceLevel:Number  [read-only]
Runtime Versions:  1.0

The amount of sound required to activate the microphone and dispatch the activity event. The default value is 10.

See also

silenceTimeoutproperty 
silenceTimeout:int  [read-only]
Runtime Versions:  1.0

The number of milliseconds between the time the microphone stops detecting sound and the time the activity event is dispatched. The default value is 2000 (2 seconds).

To set this value, use the Microphone.setSilenceLevel() method.

See also

soundTransformproperty 
soundTransform:SoundTransform
Runtime Versions:  1.0

Controls the sound of this microphone object when it is in loopback mode.

useEchoSuppressionproperty 
useEchoSuppression:Boolean  [read-only]
Runtime Versions:  1.0

Set to true if echo suppression is enabled; false otherwise. The default value is false unless the user has selected Reduce Echo in the Flash Player Microphone Settings panel.

See also

Method Detail
getMicrophone()method
function getMicrophone(index:int = -1):Microphone
Runtime Versions:  1.0

Returns a reference to a Microphone object for capturing audio. To begin capturing the audio, you must attach the Microphone object to a NetStream object (see NetStream.attachAudio()).

Multiple calls to Microphone.get() reference the same microphone. Thus, if your code contains the lines mic1 = Microphone.get() and mic2 = Microphone.get(), both mic1 and mic2 reference the same (default) microphone.

If you want to get the default microphone, you need to call getMicrophone() with -1. If you call it without parameters, it will return the first microphone in the list.

Use the index property to get the index value of the current Microphone object. You can then pass this value to other methods of the Microphone class.

In general, you should not pass a value for index. Simply use the Microphone.getMicrophone() method to return a reference to the default microphone. By using the Microphone Settings panel, the user can specify the default microphone the application should use. If you pass a value for index, you might reference a microphone other than the one the user chooses. You can use index in rare cases—for example, if your application is capturing audio from two microphones at the same time.

When a SWF file tries to access the object returned by Microphone.getMicrophone() —for example, when you call NetStream.attachAudio()— Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the microphone. (Make sure your Stage size is at least 215 x 138 pixels; this is the minimum size Flash Player requires to display the dialog box.)

When the user responds to this dialog box, a status event is dispatched that indicates the user's response. You can also check the Microphone.muted property to determine if the user has allowed or denied access to the microphone.

If Microphone.getMicrophone() returns null, either the microphone is in use by another application, or there are no microphones installed on the system. To determine whether any microphones are installed, use Microphones.names.length. To display the Flash Player Microphone Settings panel, which lets the user choose the microphone to be referenced by Microphone.getMicrophone, use Security.showSettings().

Parameters

index:int (default = -1) — The index value of the microphone.

Returns
Microphone — A reference to a Microphone object for capturing audio.

Events
status:StatusEvent — Dispatched when a microphone reports its status. If the value of the code property is "Microphone.Muted", the user has refused to allow the SWF file access to the user's microphone. If the value of the code property is "Microphone.Unmuted", the user has allowed the SWF file access to the user's microphone.

See also

setLoopBack()method 
function setLoopBack(state:Boolean = true):void
Runtime Versions:  1.0

Routes audio captured by a microphone to the local speakers.

Parameters

state:Boolean (default = true)

setSilenceLevel()method 
function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
Runtime Versions:  1.0

Sets the minimum input level that should be considered sound and (optionally) the amount of silent time signifying that silence has actually begun.

Activity detection is the ability to detect when audio levels suggest that a person is talking. When someone is not talking, bandwidth can be saved because there is no need to send the associated audio stream. This information can also be used for visual feedback so that users know they (or others) are silent.

Silence values correspond directly to activity values. Complete silence is an activity value of 0. Constant loud noise (as loud as can be registered based on the current gain setting) is an activity value of 100. After gain is appropriately adjusted, your activity value is less than your silence value when you're not talking; when you are talking, the activity value exceeds your silence value.

This method is similar to Camera.setMotionLevel(); both methods are used to specify when the activity event is dispatched. However, these methods have a significantly different impact on publishing streams:

Parameters

silenceLevel:Number — The amount of sound required to activate the microphone and dispatch the activity event. Acceptable values range from 0 to 100.
 
timeout:int (default = -1) — The number of milliseconds that must elapse without activity before Flash Player or Adobe AIR considers sound to have stopped and dispatches the dispatch event. The default value is 2000 (2 seconds). (Note: The default value shown in the signature, -1, is an internal value that indicates to Flash Player or Adobe AIR to use 2000.)

See also

setUseEchoSuppression()method 
function setUseEchoSuppression(useEchoSuppression:Boolean):void
Runtime Versions:  1.0

Specifies whether to use the echo suppression feature of the audio codec. The default value is false unless the user has selected Reduce Echo in the Flash Player Microphone Settings panel.

Echo suppression is an effort to reduce the effects of audio feedback, which is caused when sound going out the speaker is picked up by the microphone on the same computer. (This is different from echo cancellation, which completely removes the feedback.)

Generally, echo suppression is advisable when the sound being captured is played through speakers — instead of a headset — on the same computer. If your SWF file allows users to specify the sound output device, you may want to call Microphone.setUseEchoSuppression(true) if they indicate they are using speakers and will be using the microphone as well.

Users can also adjust these settings in the Flash Player Microphone Settings panel.

Parameters

useEchoSuppression:Boolean — A Boolean value indicating whether echo suppression should be used (true) or not (false).

See also

Event Detail
activity Event
Event Object Type: flash.events.ActivityEvent
property ActivityEvent.type = flash.events.ActivityEvent.ACTIVITY
Runtime Versions:  1.0

Dispatched when a microphone begins or ends a session.

To specify the amount of sound required to trigger this event with an activating property of true, or the amount of time that must elapse without sound to trigger this event with an activating property of false, use Microphone.setSilenceLevel().

The ActivityEvent.ACTIVITY constant defines the value of the type property of an activity event object.

This event has the following properties:

PropertyValue
activatingtrue if the device is activating or false if it is deactivating.
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
currentTargetThe object that is actively processing the Event object with an event listener.
targetThe object beginning or ending a session, such as a Camera or Microphone object.

See also

status Event  
Event Object Type: flash.events.StatusEvent
property StatusEvent.type = flash.events.StatusEvent.STATUS
Runtime Versions:  1.0

Dispatched when a microphone reports its status. If the value of the code property is "Microphone.Muted", the user has refused to allow the SWF file access to the microphone. If the value of the code property is "Microphone.Unmuted", the user has allowed the SWF file access to the microphone.

Defines the value of the type property of a status event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
codeA description of the object's status.
currentTargetThe object that is actively processing the Event object with an event listener.
levelThe category of the message, such as "status", "warning" or "error".
targetThe object reporting its status.

See also