MusicKit  0.0.0
PerformSound.h
00001 /*
00002   $Id$
00003   Description:
00004     This is basically a bare-bones duplicate of NeXT/Apples' performsound module
00005     functionality.
00006  
00007   Original Author: Leigh Smith <leigh@tomandandy.com>
00008 
00009   Copyright (C) 1999 Permission is granted to use this code for commercial and
00010   non-commercial purposes so long as this copyright statement (noting the author) is
00011   preserved.
00012 */
00023 #ifndef __MKPERF_SND_MIDI_PERFORM_SOUND_H__
00024 #define __MKPERF_SND_MIDI_PERFORM_SOUND_H__
00025 
00032 #define PERFORM_API 
00033 
00034 #include <objc/objc.h> // for BOOL
00035 #include "SndStruct.h"
00036 #include "SndFormats.h"
00037 
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif 
00041 
00045 typedef struct SNDStreamBuffer {
00047     SndSampleFormat dataFormat;
00049     long frameCount;
00051     int channelCount;
00053     double sampleRate;
00055     void *streamData;
00056 } SNDStreamBuffer;
00057 
00068 typedef void (*SNDStreamProcessor)(double sampleTime, SNDStreamBuffer *inStream, SNDStreamBuffer *outStream, void *userData);
00069 
00082 PERFORM_API BOOL SNDInit(BOOL guessTheDevice);
00083 
00090 PERFORM_API BOOL SNDTerminate(void);
00091 
00098 PERFORM_API const char **SNDGetAvailableDriverNames(BOOL outputDrivers);
00099 
00107 PERFORM_API BOOL SNDSetDriverIndex(unsigned int selectedIndex, BOOL outputDrivers);
00108 
00115 PERFORM_API unsigned int SNDGetAssignedDriverIndex(BOOL outputDrivers);
00116 
00122 PERFORM_API BOOL SNDIsMuted(void);
00123 
00129 PERFORM_API void SNDSetMute(BOOL muted);
00130 
00141 PERFORM_API BOOL SNDSetBufferSizeInBytes(long newBufferSizeInBytes, BOOL forOutputDevices);
00142 
00152 PERFORM_API long SNDGetBufferSizeInBytes(BOOL forOutputDevices);
00153 
00160 PERFORM_API float SNDGetLatency(BOOL forOutputDevices);
00161 
00172 PERFORM_API const char **SNDSpeakerConfiguration(void);
00173 
00182 PERFORM_API void SNDStreamNativeFormat(SNDStreamBuffer *streamFormat, BOOL isOutputStream);
00183 
00191 PERFORM_API BOOL SNDStreamStart(SNDStreamProcessor newStreamProcessor, void *userData);
00192 
00198 PERFORM_API BOOL SNDStreamStop(void);
00199 
00200 #ifdef __cplusplus
00201 }
00202 #endif
00203 
00204 #endif /*__MKPERF_SND_MIDI_PERFORM_SOUND_H__*/