//////////
//
//	File:		SoundSnippets.h
//
//	Contains:	Code snippets showing how to perform a few typical sound-related operations.
//
//	Written by:	Tim Monroe
//				Some routines based on code by Jim Reekes.
//
//	Copyright:	© 1998 by Apple Computer, Inc., all rights reserved.
//
//	Change History (most recent first):
//
//	   <1>	 	04/17/98	rtm		first file
//	 
//////////

#ifndef __MACTYPES__
#include <MacTypes.h>
#endif

#ifndef __cmath__
#include <Math.h>
#endif

#ifndef __FIXMATH__
#include <FixMath.h>
#endif

#ifndef __MOVIES__
#include <Movies.h>
#endif

#ifndef __QUICKTIMECOMPONENTS__
#include <QuickTimeComponents.h>
#endif

#ifndef __RESOURCES__
#include <Resources.h>
#endif

#ifndef __SOUND__
#include <Sound.h>
#endif

#ifndef __SCRIPT__
#include <Script.h>
#endif

// constants
#define kNoWait						true
#define kWait						false
#define kNumberOfBufferChunks		10
#define kNumberOfCmdsInQueue		8
#define kSampleResourceID			2222

#define kNumberOfTargetBytes		(40*1024L)

#define kSaveSoundPrompt			"Save sound file as:"
#define kSaveSoundWaveName			"Untitled.wav"
#define kSaveSoundFileName			"Untitled"


// function prototypes
void						SndSnip_SaveSoundMovieAsWAVEFile (Movie theMovie);
void						SndSnip_SaveSoundMovieAsAnyTypeFile (Movie theMovie);
void						SndSnip_SaveSoundTrackAsAnyTypeFile (Movie theMovie);
void						SndSnip_ExtractSoundTrackIntoHandle (Movie theMovie);
void						SndSnip_PlayWAVEFileWithQuickTime (void);
void						SndSnip_SetVolumeOfSoundTrack (Movie theMovie, short theVolume);
OSErr						SndSnip_PlaySoundResourceUsingBufferCmds (void);
PASCAL_RTN void				SndSnip_CallbackProc (SndChannelPtr theChannel, SndCommand *theCommand);
void						SndSnip_CheckBuffers (void);
static OSErr				SndSnip_InstallBufferCmd (SndChannelPtr theChannel, SoundHeaderPtr theHeaderPtr);
static OSErr				SndSnip_InstallCallbackCmd (SndChannelPtr theChannel, short theParam1, long theParam2);
SoundHeaderPtr				SndSnip_GetSoundHeader (Handle theSndHandle);
long						SndSnip_GetSndBaseFrequency (Handle theSndHandle);
OSErr						SndSnip_GetHardwareSettings (SndChannelPtr theChannel, SoundComponentData *theInfo);
OSErr						SndSnip_GetAudioSettings (Movie theMovie, SoundComponentData *theInfo);
Boolean						SndSnip_HasSoundManager3_1 (void);
Boolean						SndSnip_CheckVersionNumber (const NumVersion *theVersion, UInt8 theMajor, UInt8 theMinor, UInt8 theBug);
OSErr						SndSnip_GetVolume (SndChannelPtr theChannel, unsigned short *theLeftVol, unsigned short *theRightVol);
OSErr						SndSnip_SetVolume (SndChannelPtr theChannel, unsigned short theLeftVol, unsigned short theRightVol);
OSErr						SndSnip_ConvertWAVEFormats (Movie theMovie, FSSpec *theFile);
void						SndSnip_PromptUserForAudioFileAndCompress (void);
void						SndSnip_PromptUserForDiskFileAndSaveCompressed (short theSrcRefNum, SoundComponentData *theSrcInfo, SoundComponentData *theDstInfo, unsigned long theSrcDataOffset, unsigned long theSrcNumFrames);
