# Function Calls

These Music library function calls control the advanced sound player. See Music Library Calls in the 3DO Music and Audio Programmer's Reference for additional information on these calls.

## Player Management Function Calls

The following calls are used to manage `SPPlayer`s:

- `spCreatePlayer()` Create an `SPPlayer`.
- `spDeletePlayer()` Delete an `SPPlayer`.
- `spGetPlayerSignalMask()` Get set of signals player sends to client for an `SPPlayer`.
- `spStartReading()` Start `SPPlayer` reading from an `SPSound`.
- `spStartPlaying()` Begin emitting sound for an `SPPlayer`.
- `spStop()` Stop an `SPPlayer`.
- `spPause()`Pause an `SPPlayer`.
- `spResume()` Resume playback of an `SPPlayer` that has been paused.
- `spService()` Process signals sent by the `SPPlayer`, read and spool more sound data, and process markers.
- `spGetPlayerStatus()` Get playback status of an `SPPlayer`.

## Sound Management Function Calls

The following calls are used to manage `SPSound`s:

- `spAddSample()` Create an `SPSound` for a Sample Item.
- `spAddSoundFile()` Create an `SPSound` for an AIFF sound file.
- `spRemoveSound()` Remove an `SPSound` from an `SPPlayer`.
- `spGetPlayerFromSound()` Get `SPPlayer` that owns the specified `SPSound`.
- `spIsSoundInUse()` Determines if `SPPlayer` is currently reading from a particular `SPSound`.

## Marker Management Function Calls

The following calls are used to add and remove `SPMarker`s or set up a static action at an `SPMarker`:

- `spAddMarker()` Add a new `SPMarker` to an `SPSound`.
- `spRemoveMarker()` Remove an `SPMarker` from an `SPSound`.
- `spFindMarkerName()` Finds an SPMarker by name belonging to the specified `SPSound`.
- `spGetSoundFromMarker()` Returns a pointer to the `SPSound` to which the specified `SPMarker` belongs.
- `spGetMarkerPosition()` Returns the frame position of an `SPMarker`.
- `spGetMarkerName()` Returns the name of an `SPMarker`.
- `spContinueAtMarker()` Restores the `SPMarker` to its default action.
- `spStopAtMarker()` Stop when playback reaches `SPMarker`.
- `spBranchAtMarker()`Set up a static branch at an `SPMarker`.
- `spLinkSounds()` Branch at end of one `SPSound` to beginning of another.
- `spLoopSound()`Branch at end of an `SPSound` back to its beginning.

## Decision Function Function Calls

The following calls are used to install and remove decision functions and to set `SPAction` from within decision functions:

- `spSetDefaultDecisionFunction()` Install a global decision function to be called for every `SPMarker`.
- `spClearDefaultDecisionFunction()`Removes a global decision function installed by `spSetDefaultDecisionFunction()`.
- `spSetMarkerDecisionFunction()`Install a marker decision function for the specified `SPMarker`.
- `spClearMarkerDecisionFunction`() Removes a marker decision function installed by`spSetMarkerDecisionFunction()`.
- `spSetBranchAction()` Called from within a decision function to specify that resulting decision is a branch to an `SPMarker`.
- `spSetStopAction()`Called from within a decision function to specify that resulting decision is to stop.

## Debug Function Calls

The following call is used to display debugging information about an `SPPlayer`.

- `spDumpPlayer()` Print debug information for an `SPPlayer`.

## Constants

The following constants are used to refer to special markers encounted in a sound (see spAddSample() and spAddSoundFile() for details):

- SP_MARKER_NAME_BEGIN Set to the beginning of the sample
- SP_MARKER_NAME_END Set to the end of the sample
- SP_MARKER_NAME_SUSTAIN_BEGIN Set to the beginning of the sustain loop if the sample has a sustain loop.
- SP_MARKER_NAME_SUSTAIN_END Set to the end of the sustain loop if the sample has a sustain loop.
- SP_MARKER_NAME_RELEASE_BEGIN Set to the beginning of the release loop if the sound file has a release loop.
- SP_MARKER_NAME_RELEASE_END Set to the end of the release loop if the sound file has a release loop.