ObjectAL
 All Classes Functions Variables Properties Pages
Instance Methods | Class Methods | Protected Attributes | Properties | List of all members
OALAudioTrack Class Reference

Plays an audio track via AVAudioPlayer. More...

#import <OALAudioTrack.h>

Inheritance diagram for OALAudioTrack:
<OALSuspendManager> <OALSuspendListener>

Instance Methods

(bool) - preloadUrl:
 Preload the contents of a URL for playback. More...
 
(bool) - preloadUrl:seekTime:
 Preload the contents of a URL for playback. More...
 
(bool) - preloadFile:
 Preload the contents of a file for playback. More...
 
(bool) - preloadFile:seekTime:
 Preload the contents of a file for playback. More...
 
(bool) - preloadUrlAsync:target:selector:
 Asynchronously preload the contents of a URL for playback. More...
 
(bool) - preloadUrlAsync:seekTime:target:selector:
 Asynchronously preload the contents of a URL for playback. More...
 
(bool) - preloadFileAsync:target:selector:
 Asynchronously preload the contents of a file for playback. More...
 
(bool) - preloadFileAsync:seekTime:target:selector:
 Asynchronously preload the contents of a file for playback. More...
 
(bool) - playUrl:
 Play the contents of a URL once. More...
 
(bool) - playUrl:loops:
 Play the contents of a URL and loop the specified number of times. More...
 
(bool) - playFile:
 Play the contents of a file once. More...
 
(bool) - playFile:loops:
 Play the contents of a file and loop the specified number of times. More...
 
(void) - playUrlAsync:target:selector:
 Play the contents of a URL asynchronously once. More...
 
(void) - playUrlAsync:loops:target:selector:
 Play the contents of a URL asynchronously and loop the specified number of times. More...
 
(void) - playFileAsync:target:selector:
 Play the contents of a file asynchronously once. More...
 
(void) - playFileAsync:loops:target:selector:
 Play the contents of a file asynchronously and loop the specified number of times. More...
 
(bool) - play
 Play the currently loaded audio track. More...
 
(bool) - playAtTime:
 Plays a sound asynchronously, starting at a specified point in the audio output device’s timeline. More...
 
(bool) - playAfterTrack:
 Plays the currently preloaded track asynchronously when the specified track completes. More...
 
(bool) - playAfterTrack:timeAdjust:
 Plays the currently preloaded track asynchronously when the specified track completes. More...
 
(void) - stop
 Stop playing and stop all operations. More...
 
(void) - fadeTo:duration:target:selector:
 Fade to the specified gain value. More...
 
(void) - stopFade
 Stop the currently running fade operation, if any. More...
 
(void) - panTo:duration:target:selector:
 Pan to the specified pan value. More...
 
(void) - stopPan
 Stop the currently running pan operation, if any. More...
 
(void) - stopActions
 Stop any internal fade or pan actions. More...
 
(void) - clear
 Unload and clear all audio data, stop playing, and stop all operations. More...
 
(void) - updateMeters
 Updates the metering system to give current values. More...
 
(float) - averagePowerForChannel:
 Gives the average power for a given channel, in decibels, for the sound being played. More...
 
(float) - peakPowerForChannel:
 Gives the peak power for a given channel, in decibels, for the sound being played. More...
 
- Instance Methods inherited from <OALSuspendManager>
(void) - addSuspendListener:
 Add a listener that will receive manual suspend and interrupt events. More...
 
(void) - removeSuspendListener:
 Remove a registered listener. More...
 

Class Methods

(id) + track
 Create a new audio track. More...
 

Protected Attributes

bool interrupted
 
AVAudioPlayer * simulatorPlayerRef
 When the simulator is running (and the playback fix is in use), player will be copied to here, and then player set to nil. More...
 
NSOperationQueue * operationQueue
 Operation queue for running asynchronous operations. More...
 
OALActiongainAction
 The current action being applied to gain. More...
 
OALActionpanAction
 The current action being applied to pan. More...
 
OALSuspendHandlersuspendHandler
 Handles suspending and interrupting for this object. More...
 

Properties

NSURL * currentlyLoadedUrl
 The URL of the currently loaded audio data. More...
 
id< AVAudioPlayerDelegate > delegate
 Optional object that will receive notifications for decoding errors, audio interruptions (such as an incoming phone call), and playback completion. More...
 
float gain
 The gain (volume) for playback (0.0 - 1.0, where 1.0 = no attenuation). More...
 
float volume
 The volume (alias to gain) for playback (0.0 - 1.0, where 1.0 = no attenuation). More...
 
float pan
 Pan value (-1.0 = far left, 1.0 = far right). More...
 
bool muted
 If true, audio track is muted. More...
 
bool autoPreload
 If true, automatically preload again when playback stops. More...
 
bool preloaded
 If true, audio track is in preloaded state. More...
 
NSInteger numberOfLoops
 The number of times to loop playback (-1 = forever). More...
 
bool paused
 If true, pause playback. More...
 
AVAudioPlayer * player
 Access to the underlying AVAudioPlayer object. More...
 
bool playing
 If true, the audio player is currently playing. More...
 
NSTimeInterval currentTime
 The current playback position in seconds from the start of the sound. More...
 
NSTimeInterval deviceCurrentTime
 The value of this property increases monotonically while an audio player is playing or paused. More...
 
NSTimeInterval duration
 The duration, in seconds, of the currently loaded sound. More...
 
NSUInteger numberOfChannels
 The number of channels in the currently loaded sound. More...
 
bool meteringEnabled
 If true, this track is recording metering data. More...
 
- Properties inherited from <OALSuspendManager>
bool suspended
 If YES, this object is suspended. More...
 
- Properties inherited from <OALSuspendListener>
bool manuallySuspended
 Set to YES to manually suspend. More...
 
bool interrupted
 If YES, this object is interrupted. More...
 

Detailed Description

Plays an audio track via AVAudioPlayer.

Unlike AVAudioPlayer, however, it can be re-used to play another file. Interruptions can be handled by OALAudioSupport (enabled by default).

Method Documentation

- (float) averagePowerForChannel: (NSUInteger)  channelNumber

Gives the average power for a given channel, in decibels, for the sound being played.

0 dB indicates maximum power (full scale).
-160 dB indicates minimum power (near silence).
If the signal provided to the audio player exceeds full scale, then the value may be > 0.

Note: The value returned is in reference to when updateMeters was last called. You must call updateMeters again before calling this method to get a current value.

Parameters
channelNumberThe channel to get the value from. For mono or left, use 0. For right, use 1.
Returns
the average power for the channel.
- (void) clear

Unload and clear all audio data, stop playing, and stop all operations.

- (void) fadeTo: (float)  gain
duration: (float)  duration
target: (id)  target
selector: (SEL)  selector 

Fade to the specified gain value.

Parameters
gainThe gain to fade to.
durationThe duration of the fade operation in seconds.
targetThe target to notify when the fade completes (can be nil).
selectorThe selector to call when the fade completes. The selector must accept a single parameter, which will be the object that performed the fade.
- (void) panTo: (float)  pan
duration: (float)  duration
target: (id)  target
selector: (SEL)  selector 

Pan to the specified pan value.

Note: This will have no effect on iOS versions prior to 4.0.

Parameters
panThe value to pan to.
durationThe duration of the pan operation in seconds.
targetThe target to notify when the pan completes (can be nil).
selectorThe selector to call when the pan completes. The selector must accept a single parameter, which will be the object that performed the pan.
- (float) peakPowerForChannel: (NSUInteger)  channelNumber

Gives the peak power for a given channel, in decibels, for the sound being played.

0 dB indicates maximum power (full scale).
-160 dB indicates minimum power (near silence).
If the signal provided to the audio player exceeds full scale, then the value may be > 0.

Note: The value returned is in reference to when updateMeters was last called. You must call updateMeters again before calling this method to get a current value.

Parameters
channelNumberThe channel to get the value from. For mono or left, use 0. For right, use 1.
Returns
the average power for the channel.
- (bool) play

Play the currently loaded audio track.

Returns
TRUE if the operation was successful.
- (bool) playAfterTrack: (OALAudioTrack*)  track

Plays the currently preloaded track asynchronously when the specified track completes.

Note: This will have no effect on iOS versions prior to 4.0.

Parameters
trackThe track to play after
Returns
YES if the playback was successfully scheduled.
- (bool) playAfterTrack: (OALAudioTrack*)  track
timeAdjust: (NSTimeInterval)  timeAdjust 

Plays the currently preloaded track asynchronously when the specified track completes.

Note: This will have no effect on iOS versions prior to 4.0.

Parameters
trackThe track to play after
timeAdjustfine-tune value added to the time start offset.
Returns
YES if the playback was successfully scheduled.
- (bool) playAtTime: (NSTimeInterval)  time

Plays a sound asynchronously, starting at a specified point in the audio output device’s timeline.

Note: This will have no effect on iOS versions prior to 4.0.

Parameters
timeThe time (device time) to start playing at.
Returns
YES if the playback was successfully scheduled.
- (bool) playFile: (NSString*)  path

Play the contents of a file once.

Parameters
pathThe file containing the sound data.
Returns
TRUE if the operation was successful.
- (bool) playFile: (NSString*)  path
loops: (NSInteger)  loops 

Play the contents of a file and loop the specified number of times.

Parameters
pathThe file containing the sound data.
loopsThe number of times to loop playback (-1 = forever)
Returns
TRUE if the operation was successful.
- (void) playFileAsync: (NSString*)  path
loops: (NSInteger)  loops
target: (id)  target
selector: (SEL)  selector 

Play the contents of a file asynchronously and loop the specified number of times.

Parameters
pathThe file containing the sound data.
loopsThe number of times to loop playback (-1 = forever)
targetthe target to inform when playing has started.
selectorthe selector to call when playing has started.
- (void) playFileAsync: (NSString*)  path
target: (id)  target
selector: (SEL)  selector 

Play the contents of a file asynchronously once.

Parameters
pathThe file containing the sound data.
targetthe target to inform when playing has started.
selectorthe selector to call when playing has started.
- (bool) playUrl: (NSURL*)  url

Play the contents of a URL once.

Parameters
urlThe URL containing the sound data.
Returns
TRUE if the operation was successful.
- (bool) playUrl: (NSURL*)  url
loops: (NSInteger)  loops 

Play the contents of a URL and loop the specified number of times.

Parameters
urlThe URL containing the sound data.
loopsThe number of times to loop playback (-1 = forever)
Returns
TRUE if the operation was successful.
- (void) playUrlAsync: (NSURL*)  url
loops: (NSInteger)  loops
target: (id)  target
selector: (SEL)  selector 

Play the contents of a URL asynchronously and loop the specified number of times.

Parameters
urlThe URL containing the sound data.
loopsThe number of times to loop playback (-1 = forever)
targetthe target to inform when playing has started.
selectorthe selector to call when playing has started.
- (void) playUrlAsync: (NSURL*)  url
target: (id)  target
selector: (SEL)  selector 

Play the contents of a URL asynchronously once.

Parameters
urlThe URL containing the sound data.
targetthe target to inform when playing has started.
selectorthe selector to call when playing has started.
- (bool) preloadFile: (NSString*)  path

Preload the contents of a file for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
pathThe file containing the sound data.
Returns
TRUE if the operation was successful.
- (bool) preloadFile: (NSString*)  path
seekTime: (NSTimeInterval)  seekTime 

Preload the contents of a file for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
pathThe file containing the sound data.
seekTimeThe position in the file to start playing at.
Returns
TRUE if the operation was successful.
- (bool) preloadFileAsync: (NSString*)  path
seekTime: (NSTimeInterval)  seekTime
target: (id)  target
selector: (SEL)  selector 

Asynchronously preload the contents of a file for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
pathThe file containing the sound data.
seekTimeThe position in the file to start playing at.
targetthe target to inform when preparation is complete.
selectorthe selector to call when preparation is complete.
Returns
TRUE if the operation was successfully queued.
- (bool) preloadFileAsync: (NSString*)  path
target: (id)  target
selector: (SEL)  selector 

Asynchronously preload the contents of a file for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
pathThe file containing the sound data.
targetthe target to inform when preparation is complete.
selectorthe selector to call when preparation is complete.
Returns
TRUE if the operation was successfully queued.
- (bool) preloadUrl: (NSURL*)  url

Preload the contents of a URL for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
urlThe URL containing the sound data.
Returns
TRUE if the operation was successful.
- (bool) preloadUrl: (NSURL*)  url
seekTime: (NSTimeInterval)  seekTime 

Preload the contents of a URL for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
urlThe URL containing the sound data.
seekTimeThe position in the file to start playing at.
Returns
TRUE if the operation was successful.
- (bool) preloadUrlAsync: (NSURL*)  url
seekTime: (NSTimeInterval)  seekTime
target: (id)  target
selector: (SEL)  selector 

Asynchronously preload the contents of a URL for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
urlThe URL containing the sound data.
seekTimeThe position in the file to start playing at.
targetthe target to inform when preparation is complete.
selectorthe selector to call when preparation is complete.
Returns
TRUE if the operation was successfully queued.
- (bool) preloadUrlAsync: (NSURL*)  url
target: (id)  target
selector: (SEL)  selector 

Asynchronously preload the contents of a URL for playback.

Once the audio data is preloaded, you can call "play" to play it.

Parameters
urlThe URL containing the sound data.
targetthe target to inform when preparation is complete.
selectorthe selector to call when preparation is complete.
Returns
TRUE if the operation was successfully queued.
- (void) stop

Stop playing and stop all operations.

- (void) stopActions

Stop any internal fade or pan actions.

- (void) stopFade

Stop the currently running fade operation, if any.

- (void) stopPan

Stop the currently running pan operation, if any.

Note: This will have no effect on iOS versions prior to 4.0.

+ (id) track

Create a new audio track.

Returns
A new audio track.
- (void) updateMeters

Updates the metering system to give current values.

You must call this method before calling averagePowerForChannel or peakPowerForChannel in order to get current values.

Member Data Documentation

- (OALAction*) gainAction
protected

The current action being applied to gain.

- (NSOperationQueue*) operationQueue
protected

Operation queue for running asynchronous operations.

Note: Only one asynchronous operation is allowed at a time.

- (OALAction*) panAction
protected

The current action being applied to pan.

- (AVAudioPlayer*) simulatorPlayerRef
protected

When the simulator is running (and the playback fix is in use), player will be copied to here, and then player set to nil.

This prevents other code from inadvertently raising the volume and starting playback.

- (OALSuspendHandler*) suspendHandler
protected

Handles suspending and interrupting for this object.

Property Documentation

- (bool) autoPreload
readwritenonatomicassign

If true, automatically preload again when playback stops.

- (NSURL *) currentlyLoadedUrl
readnonatomicretain

The URL of the currently loaded audio data.

- (NSTimeInterval) currentTime
readwritenonatomicassign

The current playback position in seconds from the start of the sound.

You can set this to change the playback position, whether it is currently playing or not.

- (id< AVAudioPlayerDelegate >) delegate
readwritenonatomicassign

Optional object that will receive notifications for decoding errors, audio interruptions (such as an incoming phone call), and playback completion.


Note: OALAudioTrack keeps a WEAK reference to delegate, so make sure you clear it when your object is going to be deallocated.

- (NSTimeInterval) deviceCurrentTime
readnonatomicassign

The value of this property increases monotonically while an audio player is playing or paused.



If more than one audio player is connected to the audio output device, device time continues incrementing as long as at least one of the players is playing or paused.

If the audio output device has no connected audio players that are either playing or paused, device time reverts to 0.

Use this property to indicate “now” when calling the playAtTime: instance method. By configuring multiple audio players to play at a specified offset from deviceCurrentTime, you can perform precise synchronization—as described in the discussion for that method.

Note: This will have no effect on iOS versions prior to 4.0.

- (NSTimeInterval) duration
readnonatomicassign

The duration, in seconds, of the currently loaded sound.

- (float) gain
readwritenonatomicassign

The gain (volume) for playback (0.0 - 1.0, where 1.0 = no attenuation).

- (bool) meteringEnabled
readwritenonatomicassign

If true, this track is recording metering data.

If true, metering is enabled.

- (bool) muted
readwritenonatomicassign

If true, audio track is muted.

- (NSUInteger) numberOfChannels
readnonatomicassign

The number of channels in the currently loaded sound.

- (NSInteger) numberOfLoops
readwritenonatomicassign

The number of times to loop playback (-1 = forever).

Note: This value will be ignored, and get changed when you call the various playXX methods. Only "play" will use the current value of "numberOfLoops".

- (float) pan
readwritenonatomicassign

Pan value (-1.0 = far left, 1.0 = far right).

Note: This will have no effect on iOS versions prior to 4.0.

- (bool) paused
readwritenonatomicassign

If true, pause playback.

- (AVAudioPlayer *) player
readnonatomicretain

Access to the underlying AVAudioPlayer object.

WARNING: Be VERY careful when accessing this, as some methods could cause it to fall out of sync with OALAudioTrack (particularly play/pause/stop methods).

- (bool) playing
readnonatomicassign

If true, the audio player is currently playing.

If true, background music is currently playing.

We need to maintain our own value because AVAudioPlayer will sometimes say it's not playing when it actually is.

- (bool) preloaded
readnonatomicassign

If true, audio track is in preloaded state.

- (float) volume
readwritenonatomicassign

The volume (alias to gain) for playback (0.0 - 1.0, where 1.0 = no attenuation).


The documentation for this class was generated from the following files: