Sources/SoundClass.cp

/*
    File:       SoundClass.cp
 
    Contains:   TSound is a simple object that plays sounds     
                TSound.cp contains the TSound member functions. 
 
    Written by: Kent Sandvik    
 
    Copyright:  Copyright © 1992-1999 by Apple Computer, Inc., All Rights Reserved.
 
                You may incorporate this Apple sample source code into your program(s) without
                restriction. This Apple sample source code has been provided "AS IS" and the
                responsibility for its operation is yours. You are not permitted to redistribute
                this Apple sample source code as "Apple sample source code" after having made
                changes. If you're going to re-distribute the source, we require that you make
                it clear in the source that the code was descended from Apple sample source
                code, but that you've made changes.
 
    Change History (most recent first):
                8/18/1999   Karl Groethe    Updated for Metrowerks Codewarror Pro 2.1
                
 
*/
#ifndef _SOUND_
#include "SoundClass.h"
#endif
 
 
// CONSTRUCTORS AND DESTRUCTORS
#pragma segment Sound
TSound::TSound(char* name)
// Construct the TSound class using the string name for the sound resource.
{
    strcpy(fSound, name);
    c2p(fSound);                                // convert it to a Pascal string
 
    fSoundHandle = ::GetNamedResource(kSoundType, (ConstStr255Param)fSound);// get the resource
    ASSERT(fSoundHandle != NULL, "\pDidn't find the Sound Resource");
    if (fSoundHandle != NULL)
        ::DetachResource(fSoundHandle);         // detach it so we could have multiple copies in memory
}
 
 
TSound::TSound(short resID)
// Construct the TSound class using a resource ID.
{
    fSoundID = resID;
    fSoundHandle = ::GetResource(kSoundType, fSoundID);
    ASSERT(fSoundHandle != NULL, "\pDidn't find the Sound Resource");
    if (fSoundHandle != NULL)
        ::DetachResource(fSoundHandle);         // detach it so we could have multiple copies in memory
}
 
 
#pragma segment Sound
TSound::~TSound()
// Destruct the sound handle.
{
    if (fSoundHandle != NULL)                   // we have a valid snd handle
    {
        ::DisposeHandle(fSoundHandle);
    }
}
 
 
// MAIN INTERFACE
#pragma segment Sound
void TSound::Play()
// Play the selected sound.
{
    if (fSoundHandle != NULL)                   // we have a valid snd handle
    {
        fError = ::SndPlay(NULL, (SndListHandle)fSoundHandle, false);// play synchronously
        VASSERT(fError == noErr, ("Problems with SndPlay = %d\n", fError));
    }
}
 
 
// _________________________________________________________________________________________________________ //
 
 
/*  Change History (most recent last):
  No        Init.   Date        Comment
  1         khs     12/21/92    New file
  2         khs     1/14/93     Cleanup
*/