Mac OS 9
SoundSprocket.h
Go to the documentation of this file.
1 
19 #ifndef __SOUNDSPROCKET__
20 #define __SOUNDSPROCKET__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __EVENTS__
27 #include <Events.h>
28 #endif
29 
30 #ifndef __QD3D__
31 #include <QD3D.h>
32 #endif
33 
34 #ifndef __QD3DCAMERA__
35 #include <QD3DCamera.h>
36 #endif
37 
38 #ifndef __MACERRORS__
39 #include <MacErrors.h>
40 #endif
41 
42 #if PRAGMA_ONCE
43 #pragma once
44 #endif
45 
46 #ifdef __cplusplus
47 extern "C"
48 {
49 #endif
50 
51 #if PRAGMA_IMPORT
52 #pragma import on
53 #endif
54 
55 #if PRAGMA_STRUCT_ALIGN
56 #pragma options align = mac68k
57 #elif PRAGMA_STRUCT_PACKPUSH
58 #pragma pack(push, 2)
59 #elif PRAGMA_STRUCT_PACK
60 #pragma pack(2)
61 #endif
62 
63  /********************************************************************************
64  * SndSetInfo/SndGetInfo Messages
65  ******************************************************************************/
70  enum
71  {
72  kSSpSpeakerKind_Stereo = 0,
73  kSSpSpeakerKind_Mono = 1,
74  kSSpSpeakerKind_Headphones = 2
75  };
76 
80  {
81  UInt32 speakerKind;
82  float speakerAngle;
84  UInt32 reserved0;
85  UInt32 reserved1;
86  };
88  enum
89  {
90  kSSpMedium_Air = 0,
91  kSSpMedium_Water = 1
92  };
93 
94  enum
95  {
96  kSSpSourceMode_Unfiltered = 0,
100  };
101 
103  {
104  float elevation;
105  float azimuth;
106  float distance;
110  };
111  typedef struct SSpLocationData SSpLocationData;
113  {
114  float attenuation;
116  };
121  {
122  UInt32 cpuLoad;
124  UInt32 medium;
125  float humidity;
126  float roomSize;
130  UInt32 sourceMode;
132  float coneAngleCos;
136  UInt32 reserved0;
137  UInt32 reserved1;
138  UInt32 reserved2;
139  UInt32 reserved3;
143  };
145 #if TARGET_CPU_PPC
146  typedef CALLBACK_API_C(Boolean, SSpEventProcPtr)(EventRecord *inEvent);
147 
148  /********************************************************************************
149  * Global functions
150  ******************************************************************************/
160  OSStatus
161  SSpConfigureSpeakerSetup(SSpEventProcPtr inEventProcPtr);
162 
172  OSStatus
173  SSpGetCPULoadLimit(UInt32 *outCPULoadLimit);
174 
175  /********************************************************************************
176  * Routines for Maniulating Listeners
177  ******************************************************************************/
178  typedef struct OpaqueSSpListenerReference *SSpListenerReference;
188  OSStatus
189  SSpListener_New(SSpListenerReference *outListenerReference);
190 
200  OSStatus
201  SSpListener_Dispose(SSpListenerReference inListenerReference);
202 
212  OSStatus
213  SSpListener_SetTransform(SSpListenerReference inListenerReference,
214  const TQ3Matrix4x4 *inTransform);
215 
225  OSStatus
226  SSpListener_GetTransform(SSpListenerReference inListenerReference,
227  TQ3Matrix4x4 *outTransform);
228 
238  OSStatus
239  SSpListener_SetPosition(SSpListenerReference inListenerReference,
240  const TQ3Point3D *inPosition);
241 
251  OSStatus
252  SSpListener_GetPosition(SSpListenerReference inListenerReference,
253  TQ3Point3D *outPosition);
254 
264  OSStatus
265  SSpListener_SetOrientation(SSpListenerReference inListenerReference,
266  const TQ3Vector3D *inOrientation);
267 
277  OSStatus
278  SSpListener_GetOrientation(SSpListenerReference inListenerReference,
279  TQ3Vector3D *outOrientation);
280 
290  OSStatus
291  SSpListener_SetUpVector(SSpListenerReference inListenerReference,
292  const TQ3Vector3D *inUpVector);
293 
303  OSStatus
304  SSpListener_GetUpVector(SSpListenerReference inListenerReference,
305  TQ3Vector3D *outUpVector);
306 
316  OSStatus
317  SSpListener_SetCameraPlacement(SSpListenerReference inListenerReference,
318  const TQ3CameraPlacement *inCameraPlacement);
319 
329  OSStatus
330  SSpListener_GetCameraPlacement(SSpListenerReference inListenerReference,
331  TQ3CameraPlacement *outCameraPlacement);
332 
342  OSStatus
343  SSpListener_SetVelocity(SSpListenerReference inListenerReference,
344  const TQ3Vector3D *inVelocity);
345 
355  OSStatus
356  SSpListener_GetVelocity(SSpListenerReference inListenerReference,
357  TQ3Vector3D *outVelocity);
358 
368  OSStatus
369  SSpListener_GetActualVelocity(SSpListenerReference inListenerReference,
370  TQ3Vector3D *outVelocity);
371 
381  OSStatus
382  SSpListener_SetMedium(SSpListenerReference inListenerReference, UInt32 inMedium,
383  float inHumidity);
384 
394  OSStatus
395  SSpListener_GetMedium(SSpListenerReference inListenerReference,
396  UInt32 *outMedium, float *outHumidity);
397 
407  OSStatus
408  SSpListener_SetReverb(SSpListenerReference inListenerReference,
409  float inRoomSize, float inRoomReflectivity,
410  float inReverbAttenuation);
411 
421  OSStatus
422  SSpListener_GetReverb(SSpListenerReference inListenerReference,
423  float *outRoomSize, float *outRoomReflectivity,
424  float *outReverbAttenuation);
425 
435  OSStatus
436  SSpListener_SetMetersPerUnit(SSpListenerReference inListenerReference,
437  float inMetersPerUnit);
438 
448  OSStatus
449  SSpListener_GetMetersPerUnit(SSpListenerReference inListenerReference,
450  float *outMetersPerUnit);
451 
452  /********************************************************************************
453  * Routines for Manipulating Sources
454  ******************************************************************************/
455  typedef struct OpaqueSSpSourceReference *SSpSourceReference;
465  OSStatus
466  SSpSource_New(SSpSourceReference *outSourceReference);
467 
477  OSStatus
478  SSpSource_Dispose(SSpSourceReference inSourceReference);
479 
489  OSStatus
490  SSpSource_CalcLocalization(SSpSourceReference inSourceReference,
491  SSpListenerReference inListenerReference,
492  SSpLocalizationData *out3DInfo);
493 
503  OSStatus
504  SSpSource_SetTransform(SSpSourceReference inSourceReference,
505  const TQ3Matrix4x4 *inTransform);
506 
516  OSStatus
517  SSpSource_GetTransform(SSpSourceReference inSourceReference,
518  TQ3Matrix4x4 *outTransform);
519 
529  OSStatus
530  SSpSource_SetPosition(SSpSourceReference inSourceReference,
531  const TQ3Point3D *inPosition);
532 
542  OSStatus
543  SSpSource_GetPosition(SSpSourceReference inSourceReference,
544  TQ3Point3D *outPosition);
545 
555  OSStatus
556  SSpSource_SetOrientation(SSpSourceReference inSourceReference,
557  const TQ3Vector3D *inOrientation);
558 
568  OSStatus
569  SSpSource_GetOrientation(SSpSourceReference inSourceReference,
570  TQ3Vector3D *outOrientation);
571 
581  OSStatus
582  SSpSource_SetUpVector(SSpSourceReference inSourceReference,
583  const TQ3Vector3D *inUpVector);
584 
594  OSStatus
595  SSpSource_GetUpVector(SSpSourceReference inSourceReference,
596  TQ3Vector3D *outUpVector);
597 
607  OSStatus
608  SSpSource_SetCameraPlacement(SSpSourceReference inSourceReference,
609  const TQ3CameraPlacement *inCameraPlacement);
610 
620  OSStatus
621  SSpSource_GetCameraPlacement(SSpSourceReference inSourceReference,
622  TQ3CameraPlacement *outCameraPlacement);
623 
633  OSStatus
634  SSpSource_SetVelocity(SSpSourceReference inSourceReference,
635  const TQ3Vector3D *inVelocity);
636 
646  OSStatus
647  SSpSource_GetVelocity(SSpSourceReference inSourceReference,
648  TQ3Vector3D *outVelocity);
649 
659  OSStatus
660  SSpSource_GetActualVelocity(SSpSourceReference inSourceReference,
661  TQ3Vector3D *outVelocity);
662 
672  OSStatus
673  SSpSource_SetCPULoad(SSpSourceReference inSourceReference, UInt32 inCPULoad);
674 
684  OSStatus
685  SSpSource_GetCPULoad(SSpSourceReference inSourceReference, UInt32 *outCPULoad);
686 
696  OSStatus
697  SSpSource_SetMode(SSpSourceReference inSourceReference, UInt32 inMode);
698 
708  OSStatus
709  SSpSource_GetMode(SSpSourceReference inSourceReference, UInt32 *outMode);
710 
720  OSStatus
721  SSpSource_SetReferenceDistance(SSpSourceReference inSourceReference,
722  float inReferenceDistance);
723 
733  OSStatus
734  SSpSource_GetReferenceDistance(SSpSourceReference inSourceReference,
735  float *outReferenceDistance);
736 
746  OSStatus
747  SSpSource_SetSize(SSpSourceReference inSourceReference, float inLength,
748  float inWidth, float inHeight);
749 
759  OSStatus
760  SSpSource_GetSize(SSpSourceReference inSourceReference, float *outLength,
761  float *outWidth, float *outHeight);
762 
772  OSStatus
773  SSpSource_SetAngularAttenuation(SSpSourceReference inSourceReference,
774  float inConeAngle, float inConeAttenuation);
775 
785  OSStatus
786  SSpSource_GetAngularAttenuation(SSpSourceReference inSourceReference,
787  float *outConeAngle, float *outConeAttenuation);
788 
789  /********************************************************************************
790  * OpenGL Calling Convention Call Variants
791  ******************************************************************************/
801  OSStatus
802  SSpListener_SetTransformfv(SSpListenerReference inListenerReference,
803  const float *inTransform);
804 
814  OSStatus
815  SSpListener_GetTransformfv(SSpListenerReference inListenerReference,
816  float *outTransform);
817 
827  OSStatus
828  SSpListener_SetPosition3f(SSpListenerReference inListenerReference, float inX,
829  float inY, float inZ);
830 
840  OSStatus
841  SSpListener_SetPositionfv(SSpListenerReference inListenerReference,
842  const float *inPosition);
843 
853  OSStatus
854  SSpListener_GetPositionfv(SSpListenerReference inListenerReference,
855  float *outPosition);
856 
866  OSStatus
867  SSpListener_SetOrientation3f(SSpListenerReference inListenerReference,
868  float inX, float inY, float inZ);
869 
879  OSStatus
880  SSpListener_SetOrientationfv(SSpListenerReference inListenerReference,
881  const float *inOrientation);
882 
892  OSStatus
893  SSpListener_GetOrientationfv(SSpListenerReference inListenerReference,
894  float *outOrientation);
895 
905  OSStatus
906  SSpListener_SetUpVector3f(SSpListenerReference inListenerReference, float inX,
907  float inY, float inZ);
908 
918  OSStatus
919  SSpListener_SetUpVectorfv(SSpListenerReference inListenerReference,
920  const float *inUpVector);
921 
931  OSStatus
932  SSpListener_GetUpVectorfv(SSpListenerReference inListenerReference,
933  float *outUpVector);
934 
944  OSStatus
945  SSpListener_SetCameraPlacementfv(SSpListenerReference inListenerReference,
946  const float *inCameraLocation,
947  const float *inPointOfInterest,
948  const float *inUpVector);
949 
959  OSStatus
960  SSpListener_GetCameraPlacementfv(SSpListenerReference inListenerReference,
961  float *outCameraPlacement,
962  float *outPointOfInterest, float *outUpVector);
963 
973  OSStatus
974  SSpListener_SetVelocity3f(SSpListenerReference inListenerReference, float inX,
975  float inY, float inZ);
976 
986  OSStatus
987  SSpListener_SetVelocityfv(SSpListenerReference inListenerReference,
988  const float *inVelocity);
989 
999  OSStatus
1000  SSpListener_GetVelocityfv(SSpListenerReference inListenerReference,
1001  float *outVelocity);
1002 
1012  OSStatus
1013  SSpListener_GetActualVelocityfv(SSpListenerReference inListenerReference,
1014  float *outVelocity);
1015 
1025  OSStatus
1026  SSpSource_SetTransformfv(SSpSourceReference inSourceReference,
1027  const float *inTransform);
1028 
1038  OSStatus
1039  SSpSource_GetTransformfv(SSpSourceReference inSourceReference,
1040  float *outTransform);
1041 
1051  OSStatus
1052  SSpSource_SetPosition3f(SSpSourceReference inSourceReference, float inX,
1053  float inY, float inZ);
1054 
1064  OSStatus
1065  SSpSource_SetPositionfv(SSpSourceReference inSourceReference,
1066  const float *inPosition);
1067 
1077  OSStatus
1078  SSpSource_GetPositionfv(SSpSourceReference inSourceReference,
1079  float *outPosition);
1080 
1090  OSStatus
1091  SSpSource_SetOrientation3f(SSpSourceReference inSourceReference, float inX,
1092  float inY, float inZ);
1093 
1103  OSStatus
1104  SSpSource_SetOrientationfv(SSpSourceReference inSourceReference,
1105  const float *inOrientation);
1106 
1116  OSStatus
1117  SSpSource_GetOrientationfv(SSpSourceReference inSourceReference,
1118  float *outOrientation);
1119 
1129  OSStatus
1130  SSpSource_SetUpVector3f(SSpSourceReference inSourceReference, float inX,
1131  float inY, float inZ);
1132 
1142  OSStatus
1143  SSpSource_SetUpVectorfv(SSpSourceReference inSourceReference,
1144  const float *inUpVector);
1145 
1155  OSStatus
1156  SSpSource_GetUpVectorfv(SSpSourceReference inSourceReference,
1157  float *outUpVector);
1158 
1168  OSStatus
1169  SSpSource_SetCameraPlacementfv(SSpSourceReference inSourceReference,
1170  const float *inCameraLocation,
1171  const float *inPointOfInterest,
1172  const float *inUpVector);
1173 
1183  OSStatus
1184  SSpSource_GetCameraPlacementfv(SSpSourceReference inSourceReference,
1185  float *outCameraPlacement,
1186  float *outPointOfInterest, float *outUpVector);
1187 
1197  OSStatus
1198  SSpSource_SetVelocity3f(SSpSourceReference inSourceReference, float inX,
1199  float inY, float inZ);
1200 
1210  OSStatus
1211  SSpSource_SetVelocityfv(SSpSourceReference inSourceReference,
1212  const float *inVelocity);
1213 
1223  OSStatus
1224  SSpSource_GetVelocityfv(SSpSourceReference inSourceReference,
1225  float *outVelocity);
1226 
1236  OSStatus
1237  SSpSource_GetActualVelocityfv(SSpSourceReference inSourceReference,
1238  float *outVelocity);
1239 
1240 #endif
1242 /********************************************************************************
1243  * LATE-BREAKING NEWS
1244  *
1245  * After the documentation was completed, it was decided that the SSpSetup
1246  * were not specific enough. We renamed them to SSpSpeakerSetup. These
1247  * #defines allow code to be written per the documentation. But please use
1248  * the new, longer names, as the #defines will be removed in a later release.
1249  ******************************************************************************/
1250 #define SSpConfigureSetup SSpConfigureSpeakerSetup
1251 
1252 #define siSSpSetup siSSpSpeakerSetup
1253 #define SSpSetupData SSpSpeakerSetupData
1254 
1255  /********************************************************************************
1256  * MORE LATE-BREAKING NEWS
1257  *
1258  * The SndGetInfo selector siSSpFilterVersion and datatype SSpFilterVersionData
1259  * have been removed in favor of an alternate way of accessing filter version
1260  * information. The following function may be used for this purpose.
1261  *******************************************************************************
1262  // **************************** GetSSpFilterVersion ****************************
1263  // Finds the manufacturer and version number of the SoundSprocket filter that
1264  // may be installed. inManufacturer should be the manufacturer code specified
1265  // at the installation time, which may be zero to allow any manufacturer.
1266  // If no error is encountered, outManufacturer is set to the actual manufacturer
1267  // code and outMajorVersion and outMinorVersion are set to the component
1268  // specification level and manufacturer's implementation revision, respectively.
1269  OSStatus GetSSpFilterVersion(
1270  OSType inManufacturer,
1271  OSType* outManufacturer,
1272  UInt32* outMajorVersion,
1273  UInt32* outMinorVersion)
1274  {
1275  OSStatus err;
1276  ComponentDescription description;
1277  Component componentRef;
1278  UInt32 vers;
1279 
1280  // Set up the component description
1281  description.componentType = kSoundEffectsType;
1282  description.componentSubType = kSSpLocalizationSubType;
1283  description.componentManufacturer = inManufacturer;
1284  description.componentFlags = 0;
1285  description.componentFlagsMask = 0;
1286 
1287  // Find a component matching the description
1288  componentRef = FindNextComponent(nil, &description);
1289  if (componentRef == nil) return couldntGetRequiredComponent;
1290 
1291  // Get the component description (for the manufacturer code)
1292  err = GetComponentInfo(componentRef, &description, nil, nil, nil);
1293  if (err != noErr) return err;
1294 
1295  // Get the version composite
1296  vers = (UInt32) GetComponentVersion((ComponentInstance) componentRef);
1297 
1298  // Return the results
1299  *outManufacturer = description.componentManufacturer;
1300  *outMajorVersion = HiWord(vers);
1301  *outMinorVersion = LoWord(vers);
1302 
1303  return noErr;
1304  }
1305  *******************************************************************************/
1306 
1307 #if PRAGMA_STRUCT_ALIGN
1308 #pragma options align = reset
1309 #elif PRAGMA_STRUCT_PACKPUSH
1310 #pragma pack(pop)
1311 #elif PRAGMA_STRUCT_PACK
1312 #pragma pack()
1313 #endif
1314 
1315 #ifdef PRAGMA_IMPORT_OFF
1316 #pragma import off
1317 #elif PRAGMA_IMPORT
1318 #pragma import reset
1319 #endif
1320 
1321 #ifdef __cplusplus
1322 }
1323 #endif
1324 
1325 #endif
Event Manager Interfaces.
OSErr codes.
Basic Macintosh data types.
unsigned char Boolean
Definition: MacTypes.h:318
Generic camera routines.
Base types for Quickdraw 3D.
@ kSSpSourceMode_Binaural
Definition: SoundSprocket.h:99
@ kSSpSourceMode_Localized
Definition: SoundSprocket.h:97
@ kSSpSourceMode_Ambient
Definition: SoundSprocket.h:98
Definition: Events.h:224
Definition: SoundSprocket.h:121
float roomSize
Definition: SoundSprocket.h:126
float roomReflectivity
Definition: SoundSprocket.h:127
UInt32 medium
Definition: SoundSprocket.h:124
UInt32 virtualSourceCount
Definition: SoundSprocket.h:141
UInt32 reserved2
Definition: SoundSprocket.h:138
SSpVirtualSourceData virtualSource[4]
Definition: SoundSprocket.h:142
UInt32 sourceMode
Definition: SoundSprocket.h:130
float coneAttenuation
Definition: SoundSprocket.h:133
UInt32 reserved3
Definition: SoundSprocket.h:139
UInt32 reserved0
Definition: SoundSprocket.h:136
SSpLocationData currentLocation
Definition: SoundSprocket.h:134
float reverbAttenuation
Definition: SoundSprocket.h:128
UInt32 reserved1
Definition: SoundSprocket.h:137
float referenceDistance
Definition: SoundSprocket.h:131
float coneAngleCos
Definition: SoundSprocket.h:132
float humidity
Definition: SoundSprocket.h:125
Definition: SoundSprocket.h:103
float sourceVelocity
Definition: SoundSprocket.h:108
float distance
Definition: SoundSprocket.h:106
float listenerVelocity
Definition: SoundSprocket.h:109
float azimuth
Definition: SoundSprocket.h:105
float projectionAngle
Definition: SoundSprocket.h:107
Definition: SoundSprocket.h:80
float speakerAngle
Definition: SoundSprocket.h:82
UInt32 reserved0
Definition: SoundSprocket.h:84
UInt32 reserved1
Definition: SoundSprocket.h:85
Definition: SoundSprocket.h:113
SSpLocationData location
Definition: SoundSprocket.h:115
Definition: QD3DCamera.h:71
Definition: QD3D.h:494
Definition: QD3D.h:358
Definition: QD3D.h:345