Feature Files/VRSound.h

//////////
//
//  File:       VRSound.h
//
//  Contains:   Sound support for QuickTime VR movies.
//
//  Written by: Tim Monroe
//
//  Copyright:  © 1996-1997 by Apple Computer, Inc., all rights reserved.
//
//  Change History (most recent first):
//
//     <3>      03/13/98    rtm     removed for chunk-based sound files (AIFF and WAVE)
//     <2>      08/11/97    rtm     added support for chunk-based sound files (AIFF and WAVE)
//     <1>      12/09/96    rtm     first file
//     
//////////
 
#pragma once
 
// header files
#include <math.h>
#include <Endian.h>
 
#include "ComApplication.h"
 
#if TARGET_OS_MAC
#include "MacFramework.h"
#endif
 
#if TARGET_OS_WIN32
#include "WinFramework.h"
#endif
 
#include "VRScript.h"
 
// constants
 
// values that we pass in param1 of a callBackCmd
enum {
    kVRSound_Complete   = 1             // the sound has finished playing
};
 
#define kVRSound_NumFadeSteps   8       // number of steps while fading a sound to silence
#define kVRSound_FadeStepWait   5       // number of ticks to wait on each fade step
#define kVRSound_NumCmdsInQueue 4       // number of commands in a sound channel queue
#define kVRSound_SpeakerAngle   15.0    // angular distance (in degrees) of left or right speaker from viewer vector
 
 
// function prototypes
Boolean                     VRSound_CheckVersionNumber (const NumVersion *theVersion, UInt8 theMajor, UInt8 theMinor, UInt8 theBug);
SoundHeaderPtr              VRSound_GetSoundHeader (Handle theSndHandle);
long                        VRSound_GetSndBaseFrequency (Handle theSndHandle);
OSErr                       VRSound_GetVolume (SndChannelPtr theChannel, unsigned short *theLeftVol, unsigned short *theRightVol);
OSErr                       VRSound_SetVolume (SndChannelPtr theChannel, unsigned short theLeftVol, unsigned short theRightVol);
SndChannelPtr               VRSound_CreateSoundChannel (Boolean theSoundIsLocalized);
SSpSourceReference          VRSound_CreateLocalizedSource (void);
void                        VRSound_SetLocation (WindowObject theWindowObject, UInt32 theEntryID, float theX, float theY, float theZ, UInt32 theOptions);
short                       VRSound_GetSndResourceID (short theRefNum);
void                        VRSound_Update3DSoundEnv (WindowObject theWindowObject);
void                        VRSound_SetBalanceAndVolume (WindowObject theWindowObject, float thePan, float theTilt);
void                        VRSound_Init (void);
void                        VRSound_Stop (void);
void                        VRSound_InitWindowData (WindowObject theWindowObject);
void                        VRSound_DumpWindowData (WindowObject theWindowObject);
void                        VRSound_FadeNodeSounds (WindowObject theWindowObject);
void                        VRSound_DumpNodeSounds (WindowObject theWindowObject);
void                        VRSound_DumpSceneSounds (WindowObject theWindowObject);
void                        VRSound_DumpSelectedSounds (WindowObject theWindowObject, UInt32 theOptions);
void                        VRSound_FadeSilence (WindowObject theWindowObject, SndChannelPtr theChannel);
void                        VRSound_PlaySilence (WindowObject theWindowObject, SndChannelPtr theChannel);
void                        VRSound_PlayResource (WindowObject theWindowObject, SndChannelPtr theChannel, SndListHandle theResHandle, UInt32 theOptions);
void                        VRSound_PlaySound (WindowObject theWindowObject, UInt32 theNodeID, UInt32 theResID, UInt32 theEntryID, float theX, float theY, float theZ, float theProjAngle, UInt32 theSourceMode, UInt32 theMode, UInt32 theFade, UInt32 theOptions);
void                        VRSound_InstallCallbackMessage (VRScriptSoundPtr theEntry, short theMessage);
VRScriptSoundPtr            VRSound_GetFinishedSound (WindowObject theWindowObject);
PASCAL_RTN void             VRSound_CallbackProc (SndChannelPtr theChannel, SndCommand *theCommand);
void                        VRSound_CheckForCompletedSounds (WindowObject theWindowObject);
void                        VRSound_DumpEntryMem (VRScriptSoundPtr theEntry);