Important: Inside Macintosh: Sound is deprecated as of Mac OS X v10.5. For new audio development in Mac OS X, use Core Audio. See the Audio page in the ADC Reference Library.
SndPlay
You can use theSndPlayfunction to play a sound resource that your application has loaded into memory.
FUNCTION SndPlay (chan: SndChannelPtr; sndHdl: Handle; async: Boolean): OSErr;
chan- A pointer to a valid sound channel. You can pass
NILinstead of a pointer to a sound channel if you want the Sound Manager to internally allocate a sound channel in your application's heap zone.sndHdl- A handle to the sound resource to play.
async- A Boolean value that indicates whether the sound should be played asynchronously (
TRUE) or synchronously (FALSE). This parameter is ignored (and the sound plays synchronously) ifNILis passed in the first parameter.DESCRIPTION
TheSndPlayfunction attempts to play the sound located atsndHdl, which is expected to have the structure of a format 1 or format 2'snd 'resource. If the resource has not yet been loaded, theSndPlayfunction fails and returns theresProblemresult code.All commands and data contained in the sound handle are then sent to the channel. Note that you can pass
SndPlaya handle to some data created by calling the Sound Input Manager'sSndRecordfunction as well as a handle to an actual'snd 'resource that you have loaded into memory.
The
- WARNING
- In some versions of system software prior to system software version 7.0, the
SndPlayfunction will not work properly with sound resources that specify the sound data type twice. This might happen if a resource specifies that a sound consists of sampled-sound data and an application does the same when creating a sound channel. For more information on this problem, see "Allocating Sound Channels" on page 2-20.![]()
chanparameter is a pointer to a sound channel. Ifchanis notNIL, it is used as a valid channel. IfchanisNIL, an internally allocated sound channel is used. If you do supply a sound channel pointer in thechanparameter, you can play the sound asynchronously. When a sound is played asynchronously, a callback procedure can be called when acallBackCmdcommand is processed by the channel. (This procedure is the callback procedure supplied toSndNewChannel.) See "Playing Sounds Asynchronously" on page 2-46 for more information on playing sounds asynchronously. The handle you pass in thesndHdlparameter must be locked for as long as the sound is playing asynchronously.If a format 1
'snd 'resource does not specify which type of sound data is to be played,SndPlaydefaults to square-wave data.SndPlayalso supports format 2'snd 'resources using sampled-sound data and abufferCmdcommand. Note that to useSndPlayand sampled-sound data with a format 1'snd 'resource, the resource must include abufferCmdcommand.SPECIAL CONSIDERATIONS
Because theSndPlayfunction moves memory, you should not call it at interrupt time.RESULT CODES
SEE ALSO
For an example of how to play a sound resource using theSndPlayfunction, see the chapter "Introduction to Sound on the Macintosh" in this book.For information on playing a sound resource without using the
SndPlayfunction, see "Playing Sounds Using Low-Level Routines" on page 2-61.