summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/QuickTimeMusic.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/QuickTimeMusic.h')
-rw-r--r--common/quicktime_win32/QuickTimeMusic.h3378
1 files changed, 3378 insertions, 0 deletions
diff --git a/common/quicktime_win32/QuickTimeMusic.h b/common/quicktime_win32/QuickTimeMusic.h
new file mode 100644
index 0000000..9915f97
--- /dev/null
+++ b/common/quicktime_win32/QuickTimeMusic.h
@@ -0,0 +1,3378 @@
+/*
+ File: QuickTimeMusic.h
+
+ Contains: QuickTime Interfaces.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1990-2007 by Apple Inc., all rights reserved
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __QUICKTIMEMUSIC__
+#define __QUICKTIMEMUSIC__
+
+#ifndef __COMPONENTS__
+#include <Components.h>
+#endif
+
+#ifndef __QUICKDRAW__
+#include <Quickdraw.h>
+#endif
+
+#ifndef __VIDEO__
+#include <Video.h>
+#endif
+
+#ifndef __MACMEMORY__
+#include <MacMemory.h>
+#endif
+
+#ifndef __SOUND__
+#include <Sound.h>
+#endif
+
+#ifndef __ENDIAN__
+#include <Endian.h>
+#endif
+
+#ifndef __IMAGECOMPRESSION__
+#include <ImageCompression.h>
+#endif
+
+#ifndef __MOVIES__
+#include <Movies.h>
+#endif
+
+
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+/* QuickTime is not available to 64-bit clients */
+
+#if !__LP64__
+
+enum {
+ kaiToneDescType = FOUR_CHAR_CODE('tone'),
+ kaiNoteRequestInfoType = FOUR_CHAR_CODE('ntrq'),
+ kaiKnobListType = FOUR_CHAR_CODE('knbl'),
+ kaiKeyRangeInfoType = FOUR_CHAR_CODE('sinf'),
+ kaiSampleDescType = FOUR_CHAR_CODE('sdsc'),
+ kaiSampleInfoType = FOUR_CHAR_CODE('smin'),
+ kaiSampleDataType = FOUR_CHAR_CODE('sdat'),
+ kaiSampleDataQUIDType = FOUR_CHAR_CODE('quid'),
+ kaiInstInfoType = FOUR_CHAR_CODE('iinf'),
+ kaiPictType = FOUR_CHAR_CODE('pict'),
+ kaiWriterType = 0xA9777274,
+ kaiCopyrightType = 0xA9637079,
+ kaiOtherStrType = FOUR_CHAR_CODE('str '),
+ kaiInstrumentRefType = FOUR_CHAR_CODE('iref'),
+ kaiInstGMQualityType = FOUR_CHAR_CODE('qual'),
+ kaiLibraryInfoType = FOUR_CHAR_CODE('linf'),
+ kaiLibraryDescType = FOUR_CHAR_CODE('ldsc')
+};
+
+struct InstLibDescRec {
+ Str31 libIDName;
+};
+typedef struct InstLibDescRec InstLibDescRec;
+struct InstKnobRec {
+ BigEndianLong number;
+ BigEndianLong value;
+};
+typedef struct InstKnobRec InstKnobRec;
+enum {
+ kInstKnobMissingUnknown = 0,
+ kInstKnobMissingDefault = (1 << 0)
+};
+
+struct InstKnobList {
+ BigEndianLong knobCount;
+ BigEndianLong knobFlags;
+ InstKnobRec knob[1];
+};
+typedef struct InstKnobList InstKnobList;
+enum {
+ kMusicLoopTypeNormal = 0,
+ kMusicLoopTypePalindrome = 1 /* back & forth*/
+};
+
+enum {
+ instSamplePreProcessFlag = 1 << 0
+};
+
+struct InstSampleDescRec {
+ BigEndianOSType dataFormat;
+ BigEndianShort numChannels;
+ BigEndianShort sampleSize;
+ BigEndianUnsignedFixed sampleRate;
+ BigEndianShort sampleDataID;
+ BigEndianLong offset; /* offset within SampleData - this could be just for internal use*/
+ BigEndianLong numSamples; /* this could also just be for internal use, we'll see*/
+
+ BigEndianLong loopType;
+ BigEndianLong loopStart;
+ BigEndianLong loopEnd;
+
+ BigEndianLong pitchNormal;
+ BigEndianLong pitchLow;
+ BigEndianLong pitchHigh;
+};
+typedef struct InstSampleDescRec InstSampleDescRec;
+
+typedef Handle AtomicInstrument;
+typedef Ptr AtomicInstrumentPtr;
+enum {
+ kQTMIDIComponentType = FOUR_CHAR_CODE('midi')
+};
+
+enum {
+ kOMSComponentSubType = FOUR_CHAR_CODE('OMS '),
+ kFMSComponentSubType = FOUR_CHAR_CODE('FMS '),
+ kMIDIManagerComponentSubType = FOUR_CHAR_CODE('mmgr'),
+ kOSXMIDIComponentSubType = FOUR_CHAR_CODE('osxm')
+};
+
+typedef ComponentInstance QTMIDIComponent;
+enum {
+ kMusicPacketPortLost = 1, /* received when application loses the default input port */
+ kMusicPacketPortFound = 2, /* received when application gets it back out from under someone else's claim */
+ kMusicPacketTimeGap = 3 /* data[0] = number of milliseconds to keep the MIDI line silent */
+};
+
+enum {
+ kAppleSysexID = 0x11, /* apple sysex is followed by 2-byte command. 0001 is the command for samplesize */
+ kAppleSysexCmdSampleSize = 0x0001, /* 21 bit number in 3 midi bytes follows sysex ID and 2 cmd bytes */
+ kAppleSysexCmdSampleBreak = 0x0002, /* specifies that the sample should break right here */
+ kAppleSysexCmdAtomicInstrument = 0x0010, /* contents of atomic instrument handle */
+ kAppleSysexCmdDeveloper = 0x7F00 /* F0 11 7F 00 ww xx yy zz ... F7 is available for non-Apple developers, where wxyz is unique app signature with 8th bit cleared, unique to developer, and 00 and 7f are reserved */
+};
+
+struct MusicMIDIPacket {
+ unsigned short length;
+ unsigned long reserved; /* if length zero, then reserved = above enum */
+ UInt8 data[249];
+};
+typedef struct MusicMIDIPacket MusicMIDIPacket;
+typedef CALLBACK_API( ComponentResult , MusicMIDISendProcPtr )(ComponentInstance self, long refCon, MusicMIDIPacket *mmp);
+typedef STACK_UPP_TYPE(MusicMIDISendProcPtr) MusicMIDISendUPP;
+enum {
+ kSynthesizerConnectionFMS = 1, /* this connection imported from FMS */
+ kSynthesizerConnectionMMgr = 2, /* this connection imported from the MIDI Mgr */
+ kSynthesizerConnectionOMS = 4, /* this connection imported from OMS */
+ kSynthesizerConnectionQT = 8, /* this connection is a QuickTime-only port */
+ kSynthesizerConnectionOSXMIDI = 16, /* this connection is an OS X CoreMIDI port */
+ /* lowest five bits are mutually exclusive; combinations reserved for future use.*/
+ kSynthesizerConnectionUnavailable = 256 /* port exists, but cannot be used just now */
+};
+
+/*
+ The sampleBankFile field of this structure can be used to pass in a pointer to an FSSpec
+ that represents a SoundFont 2 or DLS file (otherwise set it to NULL ).
+
+ You then pass in a structure with this field set (all other fields should be zero) to
+ NARegisterMusicDevice:
+ - with synthType as kSoftSynthComponentSubType
+ - with name being used to return to the application the "name" of the synth
+ that should be used in the synthesiserName field of the ToneDescription structure
+ and is also used to retrieve a particular MusicComponent with the
+ NAGetRegisteredMusicDevice call
+
+ This call will create a MusicComponent of kSoftSynthComponentSubType, with the specified
+ sound bank as the sample data source.
+
+ This field requires QuickTime 5.0 or later and should be set to NULL for prior versions.
+*/
+struct SynthesizerConnections {
+ OSType clientID;
+ OSType inputPortID; /* terminology death: this port is used to SEND to the midi synth */
+ OSType outputPortID; /* terminology death: this port receives from a keyboard or other control device */
+ long midiChannel; /* The system channel; others are configurable (or the nubus slot number) */
+ long flags;
+ long unique; /* unique id may be used instead of index, to getinfo and unregister calls */
+ FSSpecPtr sampleBankFile; /* see notes above */
+ long reserved2; /* should be zero */
+};
+typedef struct SynthesizerConnections SynthesizerConnections;
+struct QTMIDIPort {
+ SynthesizerConnections portConnections;
+ Str63 portName;
+};
+typedef struct QTMIDIPort QTMIDIPort;
+struct QTMIDIPortList {
+ short portCount;
+ QTMIDIPort port[1];
+};
+typedef struct QTMIDIPortList QTMIDIPortList;
+typedef QTMIDIPortList * QTMIDIPortListPtr;
+typedef QTMIDIPortListPtr * QTMIDIPortListHandle;
+/*
+ * QTMIDIGetMIDIPorts()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+QTMIDIGetMIDIPorts(
+ QTMIDIComponent ci,
+ QTMIDIPortListHandle * inputPorts,
+ QTMIDIPortListHandle * outputPorts) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0001, 0x7000, 0xA82A);
+
+
+/*
+ * QTMIDIUseSendPort()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+QTMIDIUseSendPort(
+ QTMIDIComponent ci,
+ long portIndex,
+ long inUse) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * QTMIDISendMIDI()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+QTMIDISendMIDI(
+ QTMIDIComponent ci,
+ long portIndex,
+ MusicMIDIPacket * mp) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0003, 0x7000, 0xA82A);
+
+
+
+
+
+enum {
+ kMusicComponentType = FOUR_CHAR_CODE('musi'),
+ kInstrumentComponentType = FOUR_CHAR_CODE('inst')
+};
+
+enum {
+ kSoftSynthComponentSubType = FOUR_CHAR_CODE('ss '),
+ kGMSynthComponentSubType = FOUR_CHAR_CODE('gm ')
+};
+
+
+typedef ComponentInstance MusicComponent;
+/* MusicSynthesizerFlags*/
+enum {
+ kSynthesizerDynamicVoice = 1 << 0, /* can assign voices on the fly (else, polyphony is very important */
+ kSynthesizerUsesMIDIPort = 1 << 1, /* must be patched through MIDI Manager */
+ kSynthesizerMicrotone = 1 << 2, /* can play microtonal scales */
+ kSynthesizerHasSamples = 1 << 3, /* synthesizer has some use for sampled data */
+ kSynthesizerMixedDrums = 1 << 4, /* any part can play drum parts, total = instrument parts */
+ kSynthesizerSoftware = 1 << 5, /* implemented in main CPU software == uses cpu cycles */
+ kSynthesizerHardware = 1 << 6, /* is a hardware device (such as nubus, or maybe DSP?) */
+ kSynthesizerDynamicChannel = 1 << 7, /* can move any part to any channel or disable each part. (else we assume it lives on all channels in masks) */
+ kSynthesizerHogsSystemChannel = 1 << 8, /* can be channelwise dynamic, but always responds on its system channel */
+ kSynthesizerHasSystemChannel = 1 << 9, /* has some "system channel" notion to distinguish it from multiple instances of the same device (GM devices dont) */
+ kSynthesizerSlowSetPart = 1 << 10, /* SetPart() and SetPartInstrumentNumber() calls do not have rapid response, may glitch notes */
+ kSynthesizerOffline = 1 << 12, /* can enter an offline synthesis mode */
+ kSynthesizerGM = 1 << 14, /* synth is a GM device */
+ kSynthesizerDLS = 1 << 15, /* synth supports DLS level 1 */
+ kSynthesizerSoundLocalization = 1 << 16 /* synth supports extremely baroque, nonstandard, and proprietary "apple game sprockets" localization parameter set */
+};
+
+/*
+ * Note that these controller numbers
+ * are _not_ identical to the MIDI controller numbers.
+ * These are _signed_ 8.8 values, and the LSB's are
+ * always sent to a MIDI device. Controllers 32-63 are
+ * reserved (for MIDI, they are LSB's for 0-31, but we
+ * always send both).
+ *
+ * The full range, therefore, is -128.00 to 127.7f.
+ *
+ * _Excepting_ _volume_, all controls default to zero.
+ *
+ * Pitch bend is specified in fractional semitones! No
+ * more "pitch bend range" nonsense. You can bend as far
+ * as you want, any time you want.
+ */
+typedef SInt32 MusicController;
+enum {
+ kControllerModulationWheel = 1,
+ kControllerBreath = 2,
+ kControllerFoot = 4,
+ kControllerPortamentoTime = 5, /* time in 8.8 seconds, portamento on/off is omitted, 0 time = 'off' */
+ kControllerVolume = 7, /* main volume control */
+ kControllerBalance = 8,
+ kControllerPan = 10, /* 0 - "default", 1 - n: positioned in output 1-n (incl fractions) */
+ kControllerExpression = 11, /* secondary volume control */
+ kControllerLever1 = 16, /* general purpose controllers */
+ kControllerLever2 = 17, /* general purpose controllers */
+ kControllerLever3 = 18, /* general purpose controllers */
+ kControllerLever4 = 19, /* general purpose controllers */
+ kControllerLever5 = 80, /* general purpose controllers */
+ kControllerLever6 = 81, /* general purpose controllers */
+ kControllerLever7 = 82, /* general purpose controllers */
+ kControllerLever8 = 83, /* general purpose controllers */
+ kControllerPitchBend = 32, /* positive & negative semitones, with 8 bits fraction, same units as transpose controllers*/
+ kControllerAfterTouch = 33, /* aka channel pressure */
+ kControllerPartTranspose = 40, /* identical to pitchbend, for overall part xpose */
+ kControllerTuneTranspose = 41, /* another pitchbend, for "song global" pitch offset */
+ kControllerPartVolume = 42, /* another volume control, passed right down from note allocator part volume */
+ kControllerTuneVolume = 43, /* another volume control, used for "song global" volume - since we share one synthesizer across multiple tuneplayers*/
+ kControllerSustain = 64, /* boolean - positive for on, 0 or negative off */
+ kControllerPortamento = 65, /* boolean*/
+ kControllerSostenuto = 66, /* boolean */
+ kControllerSoftPedal = 67, /* boolean */
+ kControllerReverb = 91,
+ kControllerTremolo = 92,
+ kControllerChorus = 93,
+ kControllerCeleste = 94,
+ kControllerPhaser = 95,
+ kControllerEditPart = 113, /* last 16 controllers 113-128 and above are global controllers which respond on part zero */
+ kControllerMasterTune = 114,
+ kControllerMasterTranspose = 114, /* preferred*/
+ kControllerMasterVolume = 115,
+ kControllerMasterCPULoad = 116,
+ kControllerMasterPolyphony = 117,
+ kControllerMasterFeatures = 118
+};
+
+
+/* ID's of knobs supported by the QuickTime Music Synthesizer built into QuickTime*/
+
+enum {
+ kQTMSKnobStartID = 0x02000000,
+ kQTMSKnobVolumeAttackTimeID = 0x02000001,
+ kQTMSKnobVolumeDecayTimeID = 0x02000002,
+ kQTMSKnobVolumeSustainLevelID = 0x02000003,
+ kQTMSKnobVolumeRelease1RateID = 0x02000004,
+ kQTMSKnobVolumeDecayKeyScalingID = 0x02000005,
+ kQTMSKnobVolumeReleaseTimeID = 0x02000006,
+ kQTMSKnobVolumeLFODelayID = 0x02000007,
+ kQTMSKnobVolumeLFORampTimeID = 0x02000008,
+ kQTMSKnobVolumeLFOPeriodID = 0x02000009,
+ kQTMSKnobVolumeLFOShapeID = 0x0200000A,
+ kQTMSKnobVolumeLFODepthID = 0x0200000B,
+ kQTMSKnobVolumeOverallID = 0x0200000C,
+ kQTMSKnobVolumeVelocity127ID = 0x0200000D,
+ kQTMSKnobVolumeVelocity96ID = 0x0200000E,
+ kQTMSKnobVolumeVelocity64ID = 0x0200000F,
+ kQTMSKnobVolumeVelocity32ID = 0x02000010,
+ kQTMSKnobVolumeVelocity16ID = 0x02000011, /* Pitch related knobs*/
+ kQTMSKnobPitchTransposeID = 0x02000012,
+ kQTMSKnobPitchLFODelayID = 0x02000013,
+ kQTMSKnobPitchLFORampTimeID = 0x02000014,
+ kQTMSKnobPitchLFOPeriodID = 0x02000015,
+ kQTMSKnobPitchLFOShapeID = 0x02000016,
+ kQTMSKnobPitchLFODepthID = 0x02000017,
+ kQTMSKnobPitchLFOQuantizeID = 0x02000018, /* Stereo related knobs*/
+ kQTMSKnobStereoDefaultPanID = 0x02000019,
+ kQTMSKnobStereoPositionKeyScalingID = 0x0200001A,
+ kQTMSKnobPitchLFOOffsetID = 0x0200001B,
+ kQTMSKnobExclusionGroupID = 0x0200001C, /* Misc knobs, late additions*/
+ kQTMSKnobSustainTimeID = 0x0200001D,
+ kQTMSKnobSustainInfiniteID = 0x0200001E,
+ kQTMSKnobVolumeLFOStereoID = 0x0200001F,
+ kQTMSKnobVelocityLowID = 0x02000020,
+ kQTMSKnobVelocityHighID = 0x02000021,
+ kQTMSKnobVelocitySensitivityID = 0x02000022,
+ kQTMSKnobPitchSensitivityID = 0x02000023,
+ kQTMSKnobVolumeLFODepthFromWheelID = 0x02000024,
+ kQTMSKnobPitchLFODepthFromWheelID = 0x02000025, /* Volume Env again*/
+ kQTMSKnobVolumeExpOptionsID = 0x02000026, /* Env1*/
+ kQTMSKnobEnv1AttackTimeID = 0x02000027,
+ kQTMSKnobEnv1DecayTimeID = 0x02000028,
+ kQTMSKnobEnv1SustainLevelID = 0x02000029,
+ kQTMSKnobEnv1SustainTimeID = 0x0200002A,
+ kQTMSKnobEnv1SustainInfiniteID = 0x0200002B,
+ kQTMSKnobEnv1ReleaseTimeID = 0x0200002C,
+ kQTMSKnobEnv1ExpOptionsID = 0x0200002D, /* Env2*/
+ kQTMSKnobEnv2AttackTimeID = 0x0200002E,
+ kQTMSKnobEnv2DecayTimeID = 0x0200002F,
+ kQTMSKnobEnv2SustainLevelID = 0x02000030,
+ kQTMSKnobEnv2SustainTimeID = 0x02000031,
+ kQTMSKnobEnv2SustainInfiniteID = 0x02000032,
+ kQTMSKnobEnv2ReleaseTimeID = 0x02000033,
+ kQTMSKnobEnv2ExpOptionsID = 0x02000034, /* Pitch Env*/
+ kQTMSKnobPitchEnvelopeID = 0x02000035,
+ kQTMSKnobPitchEnvelopeDepthID = 0x02000036, /* Filter*/
+ kQTMSKnobFilterKeyFollowID = 0x02000037,
+ kQTMSKnobFilterTransposeID = 0x02000038,
+ kQTMSKnobFilterQID = 0x02000039,
+ kQTMSKnobFilterFrequencyEnvelopeID = 0x0200003A,
+ kQTMSKnobFilterFrequencyEnvelopeDepthID = 0x0200003B,
+ kQTMSKnobFilterQEnvelopeID = 0x0200003C,
+ kQTMSKnobFilterQEnvelopeDepthID = 0x0200003D, /* Reverb Threshhold*/
+ kQTMSKnobReverbThresholdID = 0x0200003E,
+ kQTMSKnobVolumeAttackVelScalingID = 0x0200003F,
+ kQTMSKnobLastIDPlus1 = 0x02000040
+};
+
+
+
+
+enum {
+ kControllerMaximum = 0x00007FFF, /* +01111111.11111111 */
+ kControllerMinimum = (long)0xFFFF8000 /* -10000000.00000000 */
+};
+
+struct SynthesizerDescription {
+ OSType synthesizerType; /* synthesizer type (must be same as component subtype) */
+ Str31 name; /* text name of synthesizer type */
+ unsigned long flags; /* from the above enum */
+ unsigned long voiceCount; /* maximum polyphony */
+
+ unsigned long partCount; /* maximum multi-timbrality (and midi channels) */
+ unsigned long instrumentCount; /* non gm, built in (rom) instruments only */
+ unsigned long modifiableInstrumentCount; /* plus n-more are user modifiable */
+ unsigned long channelMask; /* (midi device only) which channels device always uses */
+
+ unsigned long drumPartCount; /* maximum multi-timbrality of drum parts */
+ unsigned long drumCount; /* non gm, built in (rom) drumkits only */
+ unsigned long modifiableDrumCount; /* plus n-more are user modifiable */
+ unsigned long drumChannelMask; /* (midi device only) which channels device always uses */
+
+ unsigned long outputCount; /* number of audio outputs (usually two) */
+ unsigned long latency; /* response time in .Sec */
+
+ unsigned long controllers[4]; /* array of 128 bits */
+ unsigned long gmInstruments[4]; /* array of 128 bits */
+ unsigned long gmDrums[4]; /* array of 128 bits */
+};
+typedef struct SynthesizerDescription SynthesizerDescription;
+enum {
+ kVoiceCountDynamic = -1 /* constant to use to specify dynamic voicing */
+};
+
+
+struct ToneDescription {
+ BigEndianOSType synthesizerType; /* synthesizer type */
+ Str31 synthesizerName; /* name of instantiation of synth */
+ Str31 instrumentName; /* preferred name for human use */
+ BigEndianLong instrumentNumber; /* inst-number used if synth-name matches */
+ BigEndianLong gmNumber; /* Best matching general MIDI number */
+};
+typedef struct ToneDescription ToneDescription;
+enum {
+ kFirstGMInstrument = 0x00000001,
+ kLastGMInstrument = 0x00000080,
+ kFirstGSInstrument = 0x00000081,
+ kLastGSInstrument = 0x00003FFF,
+ kFirstDrumkit = 0x00004000, /* (first value is "no drum". instrument numbers from 16384->16384+128 are drumkits, and for GM they are _defined_ drumkits! */
+ kLastDrumkit = 0x00004080,
+ kFirstROMInstrument = 0x00008000,
+ kLastROMInstrument = 0x0000FFFF,
+ kFirstUserInstrument = 0x00010000,
+ kLastUserInstrument = 0x0001FFFF
+};
+
+/* InstrumentMatch*/
+enum {
+ kInstrumentMatchSynthesizerType = 1,
+ kInstrumentMatchSynthesizerName = 2,
+ kInstrumentMatchName = 4,
+ kInstrumentMatchNumber = 8,
+ kInstrumentMatchGMNumber = 16,
+ kInstrumentMatchGSNumber = 32
+};
+
+/* KnobFlags*/
+enum {
+ kKnobBasic = 8, /* knob shows up in certain simplified lists of knobs */
+ kKnobReadOnly = 16, /* knob value cannot be changed by user or with a SetKnob call */
+ kKnobInterruptUnsafe = 32, /* only alter this knob from foreground task time (may access toolbox) */
+ kKnobKeyrangeOverride = 64, /* knob can be overridden within a single keyrange (software synth only) */
+ kKnobGroupStart = 128, /* knob is first in some logical group of knobs */
+ kKnobFixedPoint8 = 1024,
+ kKnobFixedPoint16 = 2048, /* One of these may be used at a time. */
+ kKnobTypeNumber = 0 << 12,
+ kKnobTypeGroupName = 1 << 12, /* "knob" is really a group name for display purposes */
+ kKnobTypeBoolean = 2 << 12, /* if range is greater than 1, its a multi-checkbox field */
+ kKnobTypeNote = 3 << 12, /* knob range is equivalent to MIDI keys */
+ kKnobTypePan = 4 << 12, /* range goes left/right (lose this? ) */
+ kKnobTypeInstrument = 5 << 12, /* knob value = reference to another instrument number */
+ kKnobTypeSetting = 6 << 12, /* knob value is 1 of n different things (eg, fm algorithms) popup menu */
+ kKnobTypeMilliseconds = 7 << 12, /* knob is a millisecond time range */
+ kKnobTypePercentage = 8 << 12, /* knob range is displayed as a Percentage */
+ kKnobTypeHertz = 9 << 12, /* knob represents frequency */
+ kKnobTypeButton = 10 << 12 /* momentary trigger push button */
+};
+
+
+enum {
+ kUnknownKnobValue = 0x7FFFFFFF, /* a knob with this value means, we don't know it. */
+ kDefaultKnobValue = 0x7FFFFFFE /* used to SET a knob to its default value. */
+};
+
+struct KnobDescription {
+ Str63 name;
+ long lowValue;
+ long highValue;
+ long defaultValue; /* a default instrument is made of all default values */
+ long flags;
+ long knobID;
+};
+typedef struct KnobDescription KnobDescription;
+struct GCInstrumentData {
+ ToneDescription tone;
+ long knobCount;
+ long knob[1];
+};
+typedef struct GCInstrumentData GCInstrumentData;
+typedef GCInstrumentData * GCInstrumentDataPtr;
+typedef GCInstrumentDataPtr * GCInstrumentDataHandle;
+struct InstrumentAboutInfo {
+ PicHandle p;
+ Str255 author;
+ Str255 copyright;
+ Str255 other;
+};
+typedef struct InstrumentAboutInfo InstrumentAboutInfo;
+
+enum {
+ notImplementedMusicErr = (0x80000000 | (0xFFFF & (notImplementedMusicOSErr))),
+ cantSendToSynthesizerErr = (0x80000000 | (0xFFFF & (cantSendToSynthesizerOSErr))),
+ cantReceiveFromSynthesizerErr = (0x80000000 | (0xFFFF & (cantReceiveFromSynthesizerOSErr))),
+ illegalVoiceAllocationErr = (0x80000000 | (0xFFFF & (illegalVoiceAllocationOSErr))),
+ illegalPartErr = (0x80000000 | (0xFFFF & (illegalPartOSErr))),
+ illegalChannelErr = (0x80000000 | (0xFFFF & (illegalChannelOSErr))),
+ illegalKnobErr = (0x80000000 | (0xFFFF & (illegalKnobOSErr))),
+ illegalKnobValueErr = (0x80000000 | (0xFFFF & (illegalKnobValueOSErr))),
+ illegalInstrumentErr = (0x80000000 | (0xFFFF & (illegalInstrumentOSErr))),
+ illegalControllerErr = (0x80000000 | (0xFFFF & (illegalControllerOSErr))),
+ midiManagerAbsentErr = (0x80000000 | (0xFFFF & (midiManagerAbsentOSErr))),
+ synthesizerNotRespondingErr = (0x80000000 | (0xFFFF & (synthesizerNotRespondingOSErr))),
+ synthesizerErr = (0x80000000 | (0xFFFF & (synthesizerOSErr))),
+ illegalNoteChannelErr = (0x80000000 | (0xFFFF & (illegalNoteChannelOSErr))),
+ noteChannelNotAllocatedErr = (0x80000000 | (0xFFFF & (noteChannelNotAllocatedOSErr))),
+ tunePlayerFullErr = (0x80000000 | (0xFFFF & (tunePlayerFullOSErr))),
+ tuneParseErr = (0x80000000 | (0xFFFF & (tuneParseOSErr)))
+};
+
+enum {
+ kGetAtomicInstNoExpandedSamples = 1 << 0,
+ kGetAtomicInstNoOriginalSamples = 1 << 1,
+ kGetAtomicInstNoSamples = kGetAtomicInstNoExpandedSamples | kGetAtomicInstNoOriginalSamples,
+ kGetAtomicInstNoKnobList = 1 << 2,
+ kGetAtomicInstNoInstrumentInfo = 1 << 3,
+ kGetAtomicInstOriginalKnobList = 1 << 4,
+ kGetAtomicInstAllKnobs = 1 << 5 /* return even those that are set to default*/
+};
+
+/*
+ For non-gm instruments, instrument number of tone description == 0
+ If you want to speed up while running, slam the inst num with what Get instrument number returns
+ All missing knobs are slammed to the default value
+*/
+enum {
+ kSetAtomicInstKeepOriginalInstrument = 1 << 0,
+ kSetAtomicInstShareAcrossParts = 1 << 1, /* inst disappears when app goes away*/
+ kSetAtomicInstCallerTosses = 1 << 2, /* the caller isn't keeping a copy around (for NASetAtomicInstrument)*/
+ kSetAtomicInstCallerGuarantees = 1 << 3, /* the caller guarantees a copy is around*/
+ kSetAtomicInstInterruptSafe = 1 << 4, /* dont move memory at this time (but process at next task time)*/
+ kSetAtomicInstDontPreprocess = 1 << 7 /* perform no further preprocessing because either 1)you know the instrument is digitally clean, or 2) you got it from a GetPartAtomic*/
+};
+
+enum {
+ kInstrumentNamesModifiable = 1,
+ kInstrumentNamesBoth = 2
+};
+
+/*
+ * Structures specific to the GenericMusicComponent
+ */
+
+enum {
+ kGenericMusicComponentSubtype = FOUR_CHAR_CODE('gene')
+};
+
+struct GenericKnobDescription {
+ KnobDescription kd;
+ long hw1; /* driver defined */
+ long hw2; /* driver defined */
+ long hw3; /* driver defined */
+ long settingsID; /* resource ID list for boolean and popup names */
+};
+typedef struct GenericKnobDescription GenericKnobDescription;
+struct GenericKnobDescriptionList {
+ long knobCount;
+ GenericKnobDescription knob[1];
+};
+typedef struct GenericKnobDescriptionList GenericKnobDescriptionList;
+typedef GenericKnobDescriptionList * GenericKnobDescriptionListPtr;
+typedef GenericKnobDescriptionListPtr * GenericKnobDescriptionListHandle;
+/* knobTypes for MusicDerivedSetKnob */
+enum {
+ kGenericMusicKnob = 1,
+ kGenericMusicInstrumentKnob = 2,
+ kGenericMusicDrumKnob = 3,
+ kGenericMusicGlobalController = 4
+};
+
+
+
+enum {
+ kGenericMusicResFirst = 0,
+ kGenericMusicResMiscStringList = 1, /* STR# 1: synth name, 2:about author,3:aboutcopyright,4:aboutother */
+ kGenericMusicResMiscLongList = 2, /* Long various params, see list below */
+ kGenericMusicResInstrumentList = 3, /* NmLs of names and shorts, categories prefixed by 'oo' */
+ kGenericMusicResDrumList = 4, /* NmLs of names and shorts */
+ kGenericMusicResInstrumentKnobDescriptionList = 5, /* Knob */
+ kGenericMusicResDrumKnobDescriptionList = 6, /* Knob */
+ kGenericMusicResKnobDescriptionList = 7, /* Knob */
+ kGenericMusicResBitsLongList = 8, /* Long back to back bitmaps of controllers, gminstruments, and drums */
+ kGenericMusicResModifiableInstrumentHW = 9, /* Shrt same as the hw shorts trailing the instrument names, a shortlist */
+ kGenericMusicResGMTranslation = 10, /* Long 128 long entries, 1 for each gm inst, of local instrument numbers 1-n (not hw numbers) */
+ kGenericMusicResROMInstrumentData = 11, /* knob lists for ROM instruments, so the knob values may be known */
+ kGenericMusicResAboutPICT = 12, /* picture for aboutlist. must be present for GetAbout call to work */
+ kGenericMusicResLast = 13
+};
+
+/* elements of the misc long list */
+enum {
+ kGenericMusicMiscLongFirst = 0,
+ kGenericMusicMiscLongVoiceCount = 1,
+ kGenericMusicMiscLongPartCount = 2,
+ kGenericMusicMiscLongModifiableInstrumentCount = 3,
+ kGenericMusicMiscLongChannelMask = 4,
+ kGenericMusicMiscLongDrumPartCount = 5,
+ kGenericMusicMiscLongModifiableDrumCount = 6,
+ kGenericMusicMiscLongDrumChannelMask = 7,
+ kGenericMusicMiscLongOutputCount = 8,
+ kGenericMusicMiscLongLatency = 9,
+ kGenericMusicMiscLongFlags = 10,
+ kGenericMusicMiscLongFirstGMHW = 11, /* number to add to locate GM main instruments */
+ kGenericMusicMiscLongFirstGMDrumHW = 12, /* number to add to locate GM drumkits */
+ kGenericMusicMiscLongFirstUserHW = 13, /* First hw number of user instruments (presumed sequential) */
+ kGenericMusicMiscLongLast = 14
+};
+
+struct GCPart {
+ long hwInstrumentNumber; /* internal number of recalled instrument */
+ short controller[128]; /* current values for all controllers */
+ long volume; /* ctrl 7 is special case */
+ long polyphony;
+ long midiChannel; /* 1-16 if in use */
+ GCInstrumentData id; /* ToneDescription & knoblist, uncertain length */
+};
+typedef struct GCPart GCPart;
+/*
+ * Calls specific to the GenericMusicComponent
+ */
+enum {
+ kMusicGenericRange = 0x0100,
+ kMusicDerivedRange = 0x0200
+};
+
+/*
+ * Flags in GenericMusicConfigure call
+ */
+enum {
+ kGenericMusicDoMIDI = 1 << 0, /* implement normal MIDI messages for note, controllers, and program changes 0-127 */
+ kGenericMusicBank0 = 1 << 1, /* implement instrument bank changes on controller 0 */
+ kGenericMusicBank32 = 1 << 2, /* implement instrument bank changes on controller 32 */
+ kGenericMusicErsatzMIDI = 1 << 3, /* construct MIDI packets, but send them to the derived component */
+ kGenericMusicCallKnobs = 1 << 4, /* call the derived component with special knob format call */
+ kGenericMusicCallParts = 1 << 5, /* call the derived component with special part format call */
+ kGenericMusicCallInstrument = 1 << 6, /* call MusicDerivedSetInstrument for MusicSetInstrument calls */
+ kGenericMusicCallNumber = 1 << 7, /* call MusicDerivedSetPartInstrumentNumber for MusicSetPartInstrumentNumber calls, & don't send any C0 or bank stuff */
+ kGenericMusicCallROMInstrument = 1 << 8, /* call MusicSetInstrument for MusicSetPartInstrumentNumber for "ROM" instruments, passing params from the ROMi resource */
+ kGenericMusicAllDefaults = 1 << 9 /* indicates that when a new instrument is recalled, all knobs are reset to DEFAULT settings. True for GS modules */
+};
+
+
+
+
+
+typedef CALLBACK_API( ComponentResult , MusicOfflineDataProcPtr )(Ptr SoundData, long numBytes, long myRefCon);
+typedef STACK_UPP_TYPE(MusicOfflineDataProcPtr) MusicOfflineDataUPP;
+struct OfflineSampleType {
+ unsigned long numChannels; /*number of channels, ie mono = 1*/
+ UnsignedFixed sampleRate; /*sample rate in Apples Fixed point representation*/
+ unsigned short sampleSize; /*number of bits in sample*/
+};
+typedef struct OfflineSampleType OfflineSampleType;
+struct InstrumentInfoRecord {
+ long instrumentNumber; /* instrument number (if 0, name is a catagory)*/
+ long flags; /* show in picker, etc.*/
+ long toneNameIndex; /* index in toneNames (1 based)*/
+ long itxtNameAtomID; /* index in itxtNames (itxt/name by index)*/
+};
+typedef struct InstrumentInfoRecord InstrumentInfoRecord;
+struct InstrumentInfoList {
+ long recordCount;
+ Handle toneNames; /* name from tone description*/
+ QTAtomContainer itxtNames; /* itxt/name atoms for instruments*/
+ InstrumentInfoRecord info[1];
+};
+typedef struct InstrumentInfoList InstrumentInfoList;
+typedef InstrumentInfoList * InstrumentInfoListPtr;
+typedef InstrumentInfoListPtr * InstrumentInfoListHandle;
+/*
+ * MusicGetDescription()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetDescription(
+ MusicComponent mc,
+ SynthesizerDescription * sd) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetPart()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetPart(
+ MusicComponent mc,
+ long part,
+ long * midiChannel,
+ long * polyphony) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPart()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPart(
+ MusicComponent mc,
+ long part,
+ long midiChannel,
+ long polyphony) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0003, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartInstrumentNumber()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartInstrumentNumber(
+ MusicComponent mc,
+ long part,
+ long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A);
+
+
+#if OLDROUTINENAMES
+#define MusicSetInstrumentNumber(ci,part,instrumentNumber) MusicSetPartInstrumentNumber(ci, part,instrumentNumber)
+#endif
+
+/*
+ * MusicGetPartInstrumentNumber()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetPartInstrumentNumber(
+ MusicComponent mc,
+ long part) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
+
+
+/*
+ * MusicStorePartInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicStorePartInstrument(
+ MusicComponent mc,
+ long part,
+ long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0006, 0x7000, 0xA82A);
+
+
+
+/*
+ * MusicGetPartAtomicInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetPartAtomicInstrument(
+ MusicComponent mc,
+ long part,
+ AtomicInstrument * ai,
+ long flags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0009, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartAtomicInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartAtomicInstrument(
+ MusicComponent mc,
+ long part,
+ AtomicInstrumentPtr aiP,
+ long flags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x000A, 0x7000, 0xA82A);
+
+
+
+/*
+ * MusicGetPartKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetPartKnob(
+ MusicComponent mc,
+ long part,
+ long knobID) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0010, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartKnob(
+ MusicComponent mc,
+ long part,
+ long knobID,
+ long knobValue) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0011, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetKnob(
+ MusicComponent mc,
+ long knobID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetKnob(
+ MusicComponent mc,
+ long knobID,
+ long knobValue) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0013, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetPartName()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetPartName(
+ MusicComponent mc,
+ long part,
+ StringPtr name) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0014, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartName()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartName(
+ MusicComponent mc,
+ long part,
+ StringPtr name) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0015, 0x7000, 0xA82A);
+
+
+/*
+ * MusicFindTone()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicFindTone(
+ MusicComponent mc,
+ ToneDescription * td,
+ long * libraryIndexOut,
+ unsigned long * fit) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0016, 0x7000, 0xA82A);
+
+
+/*
+ * MusicPlayNote()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicPlayNote(
+ MusicComponent mc,
+ long part,
+ long pitch,
+ long velocity) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0017, 0x7000, 0xA82A);
+
+
+/*
+ * MusicResetPart()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicResetPart(
+ MusicComponent mc,
+ long part) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0018, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartController()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartController(
+ MusicComponent mc,
+ long part,
+ MusicController controllerNumber,
+ long controllerValue) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0019, 0x7000, 0xA82A);
+
+
+#if OLDROUTINENAMES
+#define MusicSetController(ci,part,controllerNumber,controllerValue) MusicSetPartController(ci, part,controllerNumber,controllerValue)
+#endif
+
+/*
+ * MusicGetPartController()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetPartController(
+ MusicComponent mc,
+ long part,
+ MusicController controllerNumber) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001A, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetMIDIProc()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetMIDIProc(
+ MusicComponent mc,
+ MusicMIDISendUPP * midiSendProc,
+ long * refCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001B, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetMIDIProc()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetMIDIProc(
+ MusicComponent mc,
+ MusicMIDISendUPP midiSendProc,
+ long refCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetInstrumentNames()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetInstrumentNames(
+ MusicComponent mc,
+ long modifiableInstruments,
+ Handle * instrumentNames,
+ Handle * instrumentCategoryLasts,
+ Handle * instrumentCategoryNames) FIVEWORDINLINE(0x2F3C, 0x0010, 0x001D, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetDrumNames()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetDrumNames(
+ MusicComponent mc,
+ long modifiableInstruments,
+ Handle * instrumentNumbers,
+ Handle * instrumentNames) FIVEWORDINLINE(0x2F3C, 0x000C, 0x001E, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetMasterTune()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetMasterTune(MusicComponent mc) FIVEWORDINLINE(0x2F3C, 0x0000, 0x001F, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetMasterTune()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetMasterTune(
+ MusicComponent mc,
+ long masterTune) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0020, 0x7000, 0xA82A);
+
+
+
+/*
+ * MusicGetInstrumentAboutInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetInstrumentAboutInfo(
+ MusicComponent mc,
+ long part,
+ InstrumentAboutInfo * iai) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0022, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetDeviceConnection()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetDeviceConnection(
+ MusicComponent mc,
+ long index,
+ long * id1,
+ long * id2) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0023, 0x7000, 0xA82A);
+
+
+/*
+ * MusicUseDeviceConnection()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicUseDeviceConnection(
+ MusicComponent mc,
+ long id1,
+ long id2) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0024, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetKnobSettingStrings()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetKnobSettingStrings(
+ MusicComponent mc,
+ long knobIndex,
+ long isGlobal,
+ Handle * settingsNames,
+ Handle * settingsCategoryLasts,
+ Handle * settingsCategoryNames) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0025, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetMIDIPorts()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetMIDIPorts(
+ MusicComponent mc,
+ long * inputPortCount,
+ long * outputPortCount) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0026, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSendMIDI()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSendMIDI(
+ MusicComponent mc,
+ long portIndex,
+ MusicMIDIPacket * mp) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0027, 0x7000, 0xA82A);
+
+
+
+/*
+ * MusicStartOffline()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicStartOffline(
+ MusicComponent mc,
+ unsigned long * numChannels,
+ UnsignedFixed * sampleRate,
+ unsigned short * sampleSize,
+ MusicOfflineDataUPP dataProc,
+ long dataProcRefCon) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0029, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetOfflineTimeTo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetOfflineTimeTo(
+ MusicComponent mc,
+ long newTimeStamp) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetInstrumentKnobDescription()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetInstrumentKnobDescription(
+ MusicComponent mc,
+ long knobIndex,
+ KnobDescription * mkd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002B, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetDrumKnobDescription()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetDrumKnobDescription(
+ MusicComponent mc,
+ long knobIndex,
+ KnobDescription * mkd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002C, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetKnobDescription()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetKnobDescription(
+ MusicComponent mc,
+ long knobIndex,
+ KnobDescription * mkd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002D, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGetInfoText()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetInfoText(
+ MusicComponent mc,
+ long selector,
+ Handle * textH,
+ Handle * styleH) FIVEWORDINLINE(0x2F3C, 0x000C, 0x002E, 0x7000, 0xA82A);
+
+
+enum {
+ kGetInstrumentInfoNoBuiltIn = 1 << 0,
+ kGetInstrumentInfoMidiUserInst = 1 << 1,
+ kGetInstrumentInfoNoIText = 1 << 2
+};
+
+/*
+ * MusicGetInstrumentInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGetInstrumentInfo(
+ MusicComponent mc,
+ long getInstrumentInfoFlags,
+ InstrumentInfoListHandle * infoListH) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002F, 0x7000, 0xA82A);
+
+
+
+
+
+/*
+ * MusicTask()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicTask(MusicComponent mc) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0031, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartInstrumentNumberInterruptSafe()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartInstrumentNumberInterruptSafe(
+ MusicComponent mc,
+ long part,
+ long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0032, 0x7000, 0xA82A);
+
+
+/*
+ * MusicSetPartSoundLocalization()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicSetPartSoundLocalization(
+ MusicComponent mc,
+ long part,
+ Handle data) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0033, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGenericConfigure()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGenericConfigure(
+ MusicComponent mc,
+ long mode,
+ long flags,
+ long baseResID) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0100, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGenericGetPart()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGenericGetPart(
+ MusicComponent mc,
+ long partNumber,
+ GCPart ** part) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0101, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGenericGetKnobList()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGenericGetKnobList(
+ MusicComponent mc,
+ long knobType,
+ GenericKnobDescriptionListHandle * gkdlH) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0102, 0x7000, 0xA82A);
+
+
+/*
+ * MusicGenericSetResourceNumbers()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicGenericSetResourceNumbers(
+ MusicComponent mc,
+ Handle resourceIDH) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0103, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedMIDISend()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedMIDISend(
+ MusicComponent mc,
+ MusicMIDIPacket * packet) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0200, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedSetKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedSetKnob(
+ MusicComponent mc,
+ long knobType,
+ long knobNumber,
+ long knobValue,
+ long partNumber,
+ GCPart * p,
+ GenericKnobDescription * gkd) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0201, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedSetPart()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedSetPart(
+ MusicComponent mc,
+ long partNumber,
+ GCPart * p) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0202, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedSetInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedSetInstrument(
+ MusicComponent mc,
+ long partNumber,
+ GCPart * p) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0203, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedSetPartInstrumentNumber()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedSetPartInstrumentNumber(
+ MusicComponent mc,
+ long partNumber,
+ GCPart * p) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0204, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedSetMIDI()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedSetMIDI(
+ MusicComponent mc,
+ MusicMIDISendUPP midiProc,
+ long refcon,
+ long midiChannel) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0205, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedStorePartInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedStorePartInstrument(
+ MusicComponent mc,
+ long partNumber,
+ GCPart * p,
+ long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0206, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedOpenResFile()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedOpenResFile(MusicComponent mc) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0207, 0x7000, 0xA82A);
+
+
+/*
+ * MusicDerivedCloseResFile()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+MusicDerivedCloseResFile(
+ MusicComponent mc,
+ short resRefNum) FIVEWORDINLINE(0x2F3C, 0x0002, 0x0208, 0x7000, 0xA82A);
+
+
+
+
+
+
+
+
+/*--------------------------
+ Types
+--------------------------*/
+enum {
+ kNoteRequestNoGM = 1, /* don't degrade to a GM synth */
+ kNoteRequestNoSynthType = 2, /* don't degrade to another synth of same type but different name */
+ kNoteRequestSynthMustMatch = 4 /* synthType must be a match, including kGMSynthComponentSubType */
+};
+
+
+enum {
+ kNoteRequestSpecifyMIDIChannel = 0x80
+};
+
+typedef ComponentInstance NoteAllocator;
+/*
+ The midiChannelAssignment field of this structure is used to assign a MIDI channel
+ when a NoteChannel is created from a NoteRequest.
+ A value of 0 indicates a MIDI channel has *not* been assigned
+ A value of (kNoteRequestSpecifyMIDIChannel | 1->16) is a MIDI channel assignment
+
+ This field requires QuickTime 5.0 or later and should be set to 0 for prior versions.
+*/
+typedef UInt8 NoteRequestMIDIChannel;
+struct NoteRequestInfo {
+ UInt8 flags; /* 1: dont accept GM match, 2: dont accept same-synth-type match */
+ NoteRequestMIDIChannel midiChannelAssignment; /* (kNoteRequestSpecifyMIDIChannel | 1->16) as MIDI Channel assignement or zero - see notes above */
+ BigEndianShort polyphony; /* Maximum number of voices */
+ BigEndianFixed typicalPolyphony; /* Hint for level mixing */
+};
+typedef struct NoteRequestInfo NoteRequestInfo;
+struct NoteRequest {
+ NoteRequestInfo info;
+ ToneDescription tone;
+};
+typedef struct NoteRequest NoteRequest;
+
+typedef long NoteChannel;
+
+enum {
+ kPickDontMix = 1, /* dont mix instruments with drum sounds */
+ kPickSameSynth = 2, /* only allow the same device that went in, to come out */
+ kPickUserInsts = 4, /* show user insts in addition to ROM voices */
+ kPickEditAllowEdit = 8, /* lets user switch over to edit mode */
+ kPickEditAllowPick = 16, /* lets the user switch over to pick mode */
+ kPickEditSynthGlobal = 32, /* edit the global knobs of the synth */
+ kPickEditControllers = 64 /* edit the controllers of the notechannel */
+};
+
+
+enum {
+ kNoteAllocatorComponentType = FOUR_CHAR_CODE('nota')
+};
+
+
+/*--------------------------------
+ Note Allocator Prototypes
+--------------------------------*/
+/*
+ * NARegisterMusicDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NARegisterMusicDevice(
+ NoteAllocator na,
+ OSType synthType,
+ Str31 name,
+ SynthesizerConnections * connections) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0000, 0x7000, 0xA82A);
+
+
+/*
+ * NAUnregisterMusicDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAUnregisterMusicDevice(
+ NoteAllocator na,
+ long index) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
+
+
+/*
+ * NAGetRegisteredMusicDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetRegisteredMusicDevice(
+ NoteAllocator na,
+ long index,
+ OSType * synthType,
+ Str31 name,
+ SynthesizerConnections * connections,
+ MusicComponent * mc) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * NASaveMusicConfiguration()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASaveMusicConfiguration(NoteAllocator na) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0003, 0x7000, 0xA82A);
+
+
+/*
+ * NANewNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NANewNoteChannel(
+ NoteAllocator na,
+ NoteRequest * noteRequest,
+ NoteChannel * outChannel) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A);
+
+
+/*
+ * NADisposeNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NADisposeNoteChannel(
+ NoteAllocator na,
+ NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
+
+
+/*
+ * NAGetNoteChannelInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetNoteChannelInfo(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long * index,
+ long * part) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0006, 0x7000, 0xA82A);
+
+
+/*
+ * NAPrerollNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAPrerollNoteChannel(
+ NoteAllocator na,
+ NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0007, 0x7000, 0xA82A);
+
+
+/*
+ * NAUnrollNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAUnrollNoteChannel(
+ NoteAllocator na,
+ NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0008, 0x7000, 0xA82A);
+
+
+
+/*
+ * NASetNoteChannelVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetNoteChannelVolume(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ Fixed volume) FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A);
+
+
+/*
+ * NAResetNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAResetNoteChannel(
+ NoteAllocator na,
+ NoteChannel noteChannel) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
+
+
+/*
+ * NAPlayNote()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAPlayNote(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long pitch,
+ long velocity) FIVEWORDINLINE(0x2F3C, 0x000C, 0x000D, 0x7000, 0xA82A);
+
+
+/*
+ * NASetController()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetController(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long controllerNumber,
+ long controllerValue) FIVEWORDINLINE(0x2F3C, 0x000C, 0x000E, 0x7000, 0xA82A);
+
+
+/*
+ * NASetKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetKnob(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long knobNumber,
+ long knobValue) FIVEWORDINLINE(0x2F3C, 0x000C, 0x000F, 0x7000, 0xA82A);
+
+
+/*
+ * NAFindNoteChannelTone()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAFindNoteChannelTone(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ ToneDescription * td,
+ long * instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0010, 0x7000, 0xA82A);
+
+
+/*
+ * NASetInstrumentNumber()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetInstrumentNumber(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0011, 0x7000, 0xA82A);
+
+
+
+
+#if OLDROUTINENAMES
+#define NASetNoteChannelInstrument(ci, noteChannel,instrumentNumber ) NASetInstrumentNumber(ci, noteChannel,instrumentNumber)
+#define NASetInstrument(ci, noteChannel,instrumentNumber ) NASetInstrumentNumber(ci, noteChannel,instrumentNumber)
+#endif
+/*
+ * NAPickInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAPickInstrument(
+ NoteAllocator na,
+ ModalFilterUPP filterProc,
+ StringPtr prompt,
+ ToneDescription * sd,
+ unsigned long flags,
+ long refCon,
+ long reserved1,
+ long reserved2) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0012, 0x7000, 0xA82A);
+
+
+/*
+ * NAPickArrangement()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAPickArrangement(
+ NoteAllocator na,
+ ModalFilterUPP filterProc,
+ StringPtr prompt,
+ long zero1,
+ long zero2,
+ Track t,
+ StringPtr songName) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0013, 0x7000, 0xA82A);
+
+
+
+/*
+ * NAStuffToneDescription()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAStuffToneDescription(
+ NoteAllocator na,
+ long gmNumber,
+ ToneDescription * td) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001B, 0x7000, 0xA82A);
+
+
+/*
+ * NACopyrightDialog()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NACopyrightDialog(
+ NoteAllocator na,
+ PicHandle p,
+ StringPtr author,
+ StringPtr copyright,
+ StringPtr other,
+ StringPtr title,
+ ModalFilterUPP filterProc,
+ long refCon) FIVEWORDINLINE(0x2F3C, 0x001C, 0x001C, 0x7000, 0xA82A);
+
+
+
+/*
+ kNADummyOneSelect = 29
+ kNADummyTwoSelect = 30
+*/
+
+/*
+ * NAGetIndNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetIndNoteChannel(
+ NoteAllocator na,
+ long index,
+ NoteChannel * nc,
+ long * seed) FIVEWORDINLINE(0x2F3C, 0x000C, 0x001F, 0x7000, 0xA82A);
+
+
+
+/*
+ * NAGetMIDIPorts()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetMIDIPorts(
+ NoteAllocator na,
+ QTMIDIPortListHandle * inputPorts,
+ QTMIDIPortListHandle * outputPorts) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0021, 0x7000, 0xA82A);
+
+
+/*
+ * NAGetNoteRequest()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetNoteRequest(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ NoteRequest * nrOut) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0022, 0x7000, 0xA82A);
+
+
+/*
+ * NASendMIDI()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASendMIDI(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ MusicMIDIPacket * mp) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0023, 0x7000, 0xA82A);
+
+
+/*
+ * NAPickEditInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAPickEditInstrument(
+ NoteAllocator na,
+ ModalFilterUPP filterProc,
+ StringPtr prompt,
+ long refCon,
+ NoteChannel nc,
+ AtomicInstrument ai,
+ long flags) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0024, 0x7000, 0xA82A);
+
+
+/*
+ * NANewNoteChannelFromAtomicInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NANewNoteChannelFromAtomicInstrument(
+ NoteAllocator na,
+ AtomicInstrumentPtr instrument,
+ long flags,
+ NoteChannel * outChannel) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0025, 0x7000, 0xA82A);
+
+
+/*
+ * NASetAtomicInstrument()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetAtomicInstrument(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ AtomicInstrumentPtr instrument,
+ long flags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0026, 0x7000, 0xA82A);
+
+
+
+
+/*
+ * NAGetKnob()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetKnob(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long knobNumber,
+ long * knobValue) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0028, 0x7000, 0xA82A);
+
+
+/*
+ * NATask()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NATask(NoteAllocator na) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0029, 0x7000, 0xA82A);
+
+
+/*
+ * NASetNoteChannelBalance()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetNoteChannelBalance(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long balance) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002A, 0x7000, 0xA82A);
+
+
+/*
+ * NASetInstrumentNumberInterruptSafe()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetInstrumentNumberInterruptSafe(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long instrumentNumber) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002B, 0x7000, 0xA82A);
+
+
+/*
+ * NASetNoteChannelSoundLocalization()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NASetNoteChannelSoundLocalization(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ Handle data) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002C, 0x7000, 0xA82A);
+
+
+/*
+ * NAGetController()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+NAGetController(
+ NoteAllocator na,
+ NoteChannel noteChannel,
+ long controllerNumber,
+ long * controllerValue) FIVEWORDINLINE(0x2F3C, 0x000C, 0x002D, 0x7000, 0xA82A);
+
+
+
+
+
+
+enum {
+ kTuneQueueDepth = 8 /* Deepest you can queue tune segments */
+};
+
+
+struct TuneStatus {
+ unsigned long * tune; /* currently playing tune */
+ unsigned long * tunePtr; /* position within currently playing piece */
+ TimeValue time; /* current tune time */
+ short queueCount; /* how many pieces queued up? */
+ short queueSpots; /* How many more tunepieces can be queued */
+ TimeValue queueTime; /* How much time is queued up? (can be very inaccurate) */
+ long reserved[3];
+};
+typedef struct TuneStatus TuneStatus;
+typedef CALLBACK_API( void , TuneCallBackProcPtr )(const TuneStatus *status, long refCon);
+typedef CALLBACK_API( void , TunePlayCallBackProcPtr )(unsigned long *event, long seed, long refCon);
+typedef STACK_UPP_TYPE(TuneCallBackProcPtr) TuneCallBackUPP;
+typedef STACK_UPP_TYPE(TunePlayCallBackProcPtr) TunePlayCallBackUPP;
+
+typedef ComponentInstance TunePlayer;
+enum {
+ kTunePlayerComponentType = FOUR_CHAR_CODE('tune')
+};
+
+
+/*
+ * TuneSetHeader()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetHeader(
+ TunePlayer tp,
+ unsigned long * header) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0004, 0x7000, 0xA82A);
+
+
+/*
+ * TuneGetTimeBase()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneGetTimeBase(
+ TunePlayer tp,
+ TimeBase * tb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetTimeScale()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetTimeScale(
+ TunePlayer tp,
+ TimeScale scale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0006, 0x7000, 0xA82A);
+
+
+/*
+ * TuneGetTimeScale()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneGetTimeScale(
+ TunePlayer tp,
+ TimeScale * scale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0007, 0x7000, 0xA82A);
+
+
+/*
+ * TuneGetIndexedNoteChannel()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneGetIndexedNoteChannel(
+ TunePlayer tp,
+ long i,
+ NoteChannel * nc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0008, 0x7000, 0xA82A);
+
+
+
+/* Values for when to start. */
+enum {
+ kTuneStartNow = 1, /* start after buffer is implied */
+ kTuneDontClipNotes = 2, /* allow notes to finish their durations outside sample */
+ kTuneExcludeEdgeNotes = 4, /* dont play notes that start at end of tune */
+ kTuneQuickStart = 8, /* Leave all the controllers where they are, ignore start time */
+ kTuneLoopUntil = 16, /* loop a queued tune if there's nothing else in the queue*/
+ kTunePlayDifference = 32, /* by default, the tune difference is skipped*/
+ kTunePlayConcurrent = 64, /* dont block the next tune sequence with this one*/
+ kTuneStartNewMaster = 16384
+};
+
+/*
+ * TuneQueue()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneQueue(
+ TunePlayer tp,
+ unsigned long * tune,
+ Fixed tuneRate,
+ unsigned long tuneStartPosition,
+ unsigned long tuneStopPosition,
+ unsigned long queueFlags,
+ TuneCallBackUPP callBackProc,
+ long refCon) FIVEWORDINLINE(0x2F3C, 0x001C, 0x000A, 0x7000, 0xA82A);
+
+
+/*
+ * TuneInstant()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneInstant(
+ TunePlayer tp,
+ unsigned long * tune,
+ unsigned long tunePosition) FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A);
+
+
+/*
+ * TuneGetStatus()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneGetStatus(
+ TunePlayer tp,
+ TuneStatus * status) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
+
+
+/* Values for stopping. */
+enum {
+ kTuneStopFade = 1, /* do a quick, synchronous fadeout */
+ kTuneStopSustain = 2, /* don't silece notes */
+ kTuneStopInstant = 4, /* silence notes fast (else, decay them) */
+ kTuneStopReleaseChannels = 8 /* afterwards, let the channels go */
+};
+
+/*
+ * TuneStop()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneStop(
+ TunePlayer tp,
+ long stopFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A);
+
+
+
+/*
+ * TuneSetVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetVolume(
+ TunePlayer tp,
+ Fixed volume) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0010, 0x7000, 0xA82A);
+
+
+/*
+ * TuneGetVolume()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneGetVolume(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0011, 0x7000, 0xA82A);
+
+
+/*
+ * TunePreroll()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TunePreroll(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0012, 0x7000, 0xA82A);
+
+
+/*
+ * TuneUnroll()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneUnroll(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0013, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetNoteChannels()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetNoteChannels(
+ TunePlayer tp,
+ unsigned long count,
+ NoteChannel * noteChannelList,
+ TunePlayCallBackUPP playCallBackProc,
+ long refCon) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0014, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetPartTranspose()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetPartTranspose(
+ TunePlayer tp,
+ unsigned long part,
+ long transpose,
+ long velocityShift) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0015, 0x7000, 0xA82A);
+
+
+
+/*
+ * TuneGetNoteAllocator()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( NoteAllocator )
+TuneGetNoteAllocator(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0017, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetSofter()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetSofter(
+ TunePlayer tp,
+ long softer) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0018, 0x7000, 0xA82A);
+
+
+/*
+ * TuneTask()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneTask(TunePlayer tp) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0019, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetBalance()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetBalance(
+ TunePlayer tp,
+ long balance) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetSoundLocalization()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetSoundLocalization(
+ TunePlayer tp,
+ Handle data) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001B, 0x7000, 0xA82A);
+
+
+/*
+ * TuneSetHeaderWithSize()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 2.5 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetHeaderWithSize(
+ TunePlayer tp,
+ unsigned long * header,
+ unsigned long size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A);
+
+
+/* flags for part mix. */
+enum {
+ kTuneMixMute = 1, /* disable a part */
+ kTuneMixSolo = 2 /* if any parts soloed, play only soloed parts */
+};
+
+
+/*
+ * TuneSetPartMix()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneSetPartMix(
+ TunePlayer tp,
+ unsigned long partNumber,
+ long volume,
+ long balance,
+ long mixFlags) FIVEWORDINLINE(0x2F3C, 0x0010, 0x001D, 0x7000, 0xA82A);
+
+
+/*
+ * TuneGetPartMix()
+ *
+ * Availability:
+ * Non-Carbon CFM: in QuickTimeLib 3.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later but deprecated in 10.5
+ * Windows: in qtmlClient.lib 3.0 and later
+ */
+EXTERN_API( ComponentResult )
+TuneGetPartMix(
+ TunePlayer tp,
+ unsigned long partNumber,
+ long * volumeOut,
+ long * balanceOut,
+ long * mixFlagsOut) FIVEWORDINLINE(0x2F3C, 0x0010, 0x001E, 0x7000, 0xA82A);
+
+
+
+
+
+
+typedef unsigned long MusicOpWord;
+typedef MusicOpWord * MusicOpWordPtr;
+/* QuickTime Music Track Event Formats:
+
+ At this time, QuickTime music tracks support 5 different event types -- REST events,
+ short NOTE events, short CONTROL events, short GENERAL events, Long NOTE events,
+ long CONTROL events, and variable GENERAL events.
+
+ o REST Event (4 bytes/event):
+
+ (0 0 0) (5-bit UNUSED) (24-bit Rest Duration)
+
+ o.Short NOTE Events (4 bytes/event):
+
+ (0 0 1) (5-bit Part) (6-bit Pitch) (7-bit Volume) (11-bit Duration)
+
+ where: Pitch is offset by 32 (Actual pitch = pitch field + 32)
+
+ o.Short CONTROL Events (4 bytes/event):
+
+ (0 1 0) (5-bit Part) (8-bit Controller) (1-bit UNUSED) (1-bit Sign) (7-bit MSB) (7-bit LSB)
+ ( or 15-bit Signed Value)
+ o Short GENERAL Event (4 bytes/event):
+
+ (0 1 1) (1-bit UNUSED) (12-bit Sub-Type) (16-bit Value)
+
+ o Long NOTE Events (8 bytes/event):
+
+ (1 0 0 1) (12-bit Part) (1-bit UNUSED) (7-bit Pitch) (1-bit UNUSED) (7-bit Volume)
+ (1 0) (8-bit UNUSED) (22-bit Duration)
+
+ o.Long CONTROL Event (8 bytes/event):
+
+ (1 0 1 0) (12-bit Part) (16-bit Value MSB)
+ (1 0) (14-bit Controller) (16-bit Value LSB)
+
+ o.Long KNOB Event (8 bytes/event):
+
+ (1 0 1 1) (12-bit Sub-Type) (16-bit Value MSB)
+ (1 0) (14-bit KNOB) (16-bit Value LSB)
+
+ o.Variable GENERAL Length Events (N bytes/event):
+
+ (1 1 1 1) (12-bit Sub-Type) (16-bit Length)
+ :
+ (32-bit Data values)
+ :
+ (1 1) (14-bit UNUSED) (16-bit Length)
+
+ where: Length field is the number of LONG words in the record.
+ Lengths include the first and last long words (Minimum length = 2)
+
+ The following event type values have not been used yet and are reserved for
+ future expansion:
+
+ o (1 0 0 0) (8 bytes/event)
+ o (1 1 0 0) (N bytes/event)
+ o (1 1 0 1) (N bytes/event)
+ o (1 1 1 0) (N bytes/event)
+
+ For all events, the following generalizations apply:
+
+ - All duration values are specified in Millisecond units.
+ - Pitch values are intended to map directly to the MIDI key numbers.
+ - Controllers from 0 to 127 correspond to the standard MIDI controllers.
+ Controllers greater than 127 correspond to other controls (i.e., Pitch Bend,
+ Key Pressure, and Channel Pressure).
+*/
+
+/* Defines for the implemented music event data fields*/
+enum {
+ kRestEventType = 0x00000000, /* lower 3-bits */
+ kNoteEventType = 0x00000001, /* lower 3-bits */
+ kControlEventType = 0x00000002, /* lower 3-bits */
+ kMarkerEventType = 0x00000003, /* lower 3-bits */
+ kUndefined1EventType = 0x00000008, /* 4-bits */
+ kXNoteEventType = 0x00000009, /* 4-bits */
+ kXControlEventType = 0x0000000A, /* 4-bits */
+ kKnobEventType = 0x0000000B, /* 4-bits */
+ kUndefined2EventType = 0x0000000C, /* 4-bits */
+ kUndefined3EventType = 0x0000000D, /* 4-bits */
+ kUndefined4EventType = 0x0000000E, /* 4-bits */
+ kGeneralEventType = 0x0000000F, /* 4-bits */
+ kXEventLengthBits = 0x00000002, /* 2 bits: indicates 8-byte event record */
+ kGeneralEventLengthBits = 0x00000003, /* 2 bits: indicates variable length event record */
+ kEventLen = 1L, /* length of events in long words */
+ kXEventLen = 2L,
+ kRestEventLen = kEventLen, /* length of events in long words */
+ kNoteEventLen = kEventLen,
+ kControlEventLen = kEventLen,
+ kMarkerEventLen = kEventLen,
+ kXNoteEventLen = kXEventLen,
+ kXControlEventLen = kXEventLen,
+ kGeneralEventLen = kXEventLen, /* 2 or more, however */
+ /* Universal Event Defines*/
+ kEventLengthFieldPos = 30, /* by looking at these two bits of the 1st or last word */
+ kEventLengthFieldWidth = 2, /* of an event you can determine the event length */
+ /* length field: 0 & 1 => 1 long; 2 => 2 longs; 3 => variable length */
+ kEventTypeFieldPos = 29, /* event type field for short events */
+ kEventTypeFieldWidth = 3, /* short type is 3 bits */
+ kXEventTypeFieldPos = 28, /* event type field for extended events */
+ kXEventTypeFieldWidth = 4, /* extended type is 4 bits */
+ kEventPartFieldPos = 24,
+ kEventPartFieldWidth = 5,
+ kXEventPartFieldPos = 16, /* in the 1st long word */
+ kXEventPartFieldWidth = 12, /* Rest Events*/
+ kRestEventDurationFieldPos = 0,
+ kRestEventDurationFieldWidth = 24,
+ kRestEventDurationMax = ((1L << kRestEventDurationFieldWidth) - 1), /* Note Events*/
+ kNoteEventPitchFieldPos = 18,
+ kNoteEventPitchFieldWidth = 6,
+ kNoteEventPitchOffset = 32, /* add to value in pitch field to get actual pitch */
+ kNoteEventVolumeFieldPos = 11,
+ kNoteEventVolumeFieldWidth = 7,
+ kNoteEventVolumeOffset = 0, /* add to value in volume field to get actual volume */
+ kNoteEventDurationFieldPos = 0,
+ kNoteEventDurationFieldWidth = 11,
+ kNoteEventDurationMax = ((1L << kNoteEventDurationFieldWidth) - 1),
+ kXNoteEventPitchFieldPos = 0, /* in the 1st long word */
+ kXNoteEventPitchFieldWidth = 16,
+ kXNoteEventDurationFieldPos = 0, /* in the 2nd long word */
+ kXNoteEventDurationFieldWidth = 22,
+ kXNoteEventDurationMax = ((1L << kXNoteEventDurationFieldWidth) - 1),
+ kXNoteEventVolumeFieldPos = 22, /* in the 2nd long word */
+ kXNoteEventVolumeFieldWidth = 7, /* Control Events*/
+ kControlEventControllerFieldPos = 16,
+ kControlEventControllerFieldWidth = 8,
+ kControlEventValueFieldPos = 0,
+ kControlEventValueFieldWidth = 16,
+ kXControlEventControllerFieldPos = 0, /* in the 2nd long word */
+ kXControlEventControllerFieldWidth = 16,
+ kXControlEventValueFieldPos = 0, /* in the 1st long word */
+ kXControlEventValueFieldWidth = 16, /* Knob Events*/
+ kKnobEventValueHighFieldPos = 0, /* 1st long word */
+ kKnobEventValueHighFieldWidth = 16,
+ kKnobEventKnobFieldPos = 16, /* 2nd long word */
+ kKnobEventKnobFieldWidth = 14,
+ kKnobEventValueLowFieldPos = 0, /* 2nd long word */
+ kKnobEventValueLowFieldWidth = 16, /* Marker Events*/
+ kMarkerEventSubtypeFieldPos = 16,
+ kMarkerEventSubtypeFieldWidth = 8,
+ kMarkerEventValueFieldPos = 0,
+ kMarkerEventValueFieldWidth = 16, /* General Events*/
+ kGeneralEventSubtypeFieldPos = 16, /* in the last long word */
+ kGeneralEventSubtypeFieldWidth = 14,
+ kGeneralEventLengthFieldPos = 0, /* in the 1st & last long words */
+ kGeneralEventLengthFieldWidth = 16
+};
+
+#if TARGET_RT_LITTLE_ENDIAN
+enum {
+ kEndMarkerValue = 0x00000060
+};
+
+#else
+enum {
+ kEndMarkerValue = 0x60000000
+};
+
+#endif /* TARGET_RT_LITTLE_ENDIAN */
+
+/* macros for extracting various fields from the QuickTime event records*/
+
+#define qtma_MASK(bitWidth) ((1L << (bitWidth)) - 1)
+#define qtma_EXT(val, pos, width) ((EndianU32_BtoN(val) >> (pos)) & qtma_MASK(width))
+#define qtma_EventLengthForward(xP,ulen) \
+ { \
+ unsigned long _ext; \
+ unsigned long *lP = (unsigned long *)(xP); \
+ _ext = qtma_EXT(*lP, kEventLengthFieldPos, kEventLengthFieldWidth); \
+ if (_ext != 3) { \
+ ulen = (_ext < 2) ? 1 : 2; \
+ } else { \
+ ulen = (unsigned short)qtma_EXT(*lP, kGeneralEventLengthFieldPos, kGeneralEventLengthFieldWidth); \
+ if (ulen < 2) { \
+ ulen = lP[1]; \
+ } \
+ } \
+ }
+#define qtma_EventLengthBackward(xP,ulen) \
+ { \
+ unsigned long _ext; \
+ unsigned long *lP = (unsigned long *)(xP); \
+ _ext = qtma_EXT(*lP, kEventLengthFieldPos, kEventLengthFieldWidth); \
+ if (_ext != 3) { \
+ ulen = (_ext < 2) ? 1 : 2; \
+ } else { \
+ ulen = (unsigned short)qtma_EXT(*lP, kGeneralEventLengthFieldPos, kGeneralEventLengthFieldWidth); \
+ if (ulen < 2) { \
+ ulen = lP[-1]; \
+ } \
+ } \
+ }
+#define qtma_EventType(x) ((qtma_EXT(x, kEventTypeFieldPos, kEventTypeFieldWidth) > 3) ? qtma_EXT(x, kXEventTypeFieldPos, kXEventTypeFieldWidth) : qtma_EXT(x, kEventTypeFieldPos, kEventTypeFieldWidth))
+#define qtma_RestDuration(x) (qtma_EXT(x, kRestEventDurationFieldPos, kRestEventDurationFieldWidth))
+#define qtma_Part(x) (qtma_EXT(x, kEventPartFieldPos, kEventPartFieldWidth))
+#define qtma_XPart(m, l) (qtma_EXT(m, kXEventPartFieldPos, kXEventPartFieldWidth))
+#define qtma_NotePitch(x) (qtma_EXT(x, kNoteEventPitchFieldPos, kNoteEventPitchFieldWidth) + kNoteEventPitchOffset)
+#define qtma_NoteVolume(x) (qtma_EXT(x, kNoteEventVolumeFieldPos, kNoteEventVolumeFieldWidth) + kNoteEventVolumeOffset)
+#define qtma_NoteDuration(x) (qtma_EXT(x, kNoteEventDurationFieldPos, kNoteEventDurationFieldWidth))
+#define qtma_NoteVelocity qtma_NoteVolume
+#define qtma_XNotePitch(m, l) (qtma_EXT(m, kXNoteEventPitchFieldPos, kXNoteEventPitchFieldWidth))
+#define qtma_XNoteVolume(m, l) (qtma_EXT(l, kXNoteEventVolumeFieldPos, kXNoteEventVolumeFieldWidth))
+#define qtma_XNoteDuration(m, l) (qtma_EXT(l, kXNoteEventDurationFieldPos, kXNoteEventDurationFieldWidth))
+#define qtma_XNoteVelocity qtma_XNoteVolume
+#define qtma_ControlController(x) (qtma_EXT(x, kControlEventControllerFieldPos, kControlEventControllerFieldWidth))
+#define qtma_ControlValue(x) (qtma_EXT(x, kControlEventValueFieldPos, kControlEventValueFieldWidth))
+#define qtma_XControlController(m, l) (qtma_EXT(l, kXControlEventControllerFieldPos, kXControlEventControllerFieldWidth))
+#define qtma_XControlValue(m, l) (qtma_EXT(m, kXControlEventValueFieldPos, kXControlEventValueFieldWidth))
+#define qtma_MarkerSubtype(x) (qtma_EXT(x,kMarkerEventSubtypeFieldPos,kMarkerEventSubtypeFieldWidth))
+#define qtma_MarkerValue(x) (qtma_EXT(x, kMarkerEventValueFieldPos, kMarkerEventValueFieldWidth))
+
+#define qtma_KnobValue(m,l) ((qtma_EXT(m,kKnobEventValueHighFieldPos,kKnobEventValueHighFieldWidth) << 16) \
+ | (qtma_EXT(l,kKnobEventValueLowFieldPos,kKnobEventValueLowFieldWidth)))
+
+#define qtma_KnobKnob(m,l) (qtma_EXT(l,kKnobEventKnobFieldPos,kKnobEventKnobFieldWidth))
+#define qtma_GeneralSubtype(m,l) (qtma_EXT(l,kGeneralEventSubtypeFieldPos,kGeneralEventSubtypeFieldWidth))
+#define qtma_GeneralLength(m,l) (qtma_EXT(m,kGeneralEventLengthFieldPos,kGeneralEventLengthFieldWidth))
+#define qtma_StuffRestEvent(x, duration) ( \
+ x = (kRestEventType << kEventTypeFieldPos) \
+ | ((long)(duration) << kRestEventDurationFieldPos), \
+ x = EndianU32_NtoB(x) )
+#define qtma_StuffNoteEvent(x, part, pitch, volume, duration) ( \
+ x = (kNoteEventType << kEventTypeFieldPos) \
+ | ((long)(part) << kEventPartFieldPos) \
+ | (((long)(pitch) - kNoteEventPitchOffset) << kNoteEventPitchFieldPos) \
+ | (((long)(volume) - kNoteEventVolumeOffset) << kNoteEventVolumeFieldPos) \
+ | ((long)(duration) << kNoteEventDurationFieldPos), \
+ x = EndianU32_NtoB(x) )
+#define qtma_StuffControlEvent(x, part, control, value) ( \
+ x = (kControlEventType << kEventTypeFieldPos) \
+ | ((long)(part) << kEventPartFieldPos) \
+ | ((long)(control) << kControlEventControllerFieldPos)\
+ | ((long)((value) & qtma_MASK(kControlEventValueFieldWidth)) << kControlEventValueFieldPos), \
+ x = EndianU32_NtoB(x) )
+#define qtma_StuffMarkerEvent(x, markerType, markerValue) ( \
+ x = (kMarkerEventType << kEventTypeFieldPos) \
+ | ((long)(markerType) << kMarkerEventSubtypeFieldPos) \
+ | ((long)(markerValue) << kMarkerEventValueFieldPos), \
+ x = EndianU32_NtoB(x) )
+#define qtma_StuffXNoteEvent(w1, w2, part, pitch, volume, duration) ( \
+ w1 = (kXNoteEventType << kXEventTypeFieldPos) \
+ | ((long)(part) << kXEventPartFieldPos) \
+ | ((long)(pitch) << kXNoteEventPitchFieldPos), \
+ w1 = EndianU32_NtoB(w1), \
+ w2 = (kXEventLengthBits << kEventLengthFieldPos) \
+ | ((long)(duration) << kXNoteEventDurationFieldPos) \
+ | ((long)(volume) << kXNoteEventVolumeFieldPos), \
+ w2 = EndianU32_NtoB(w2) )
+#define qtma_StuffXControlEvent(w1, w2, part, control, value) ( \
+ w1 = (kXControlEventType << kXEventTypeFieldPos) \
+ | ((long)(part) << kXEventPartFieldPos) \
+ | ((long)((value) & qtma_MASK(kXControlEventValueFieldWidth)) << kXControlEventValueFieldPos), \
+ w1 = EndianU32_NtoB(w1), \
+ w2 = (kXEventLengthBits << kEventLengthFieldPos) \
+ | ((long)(control) << kXControlEventControllerFieldPos), \
+ w2 = EndianU32_NtoB(w2) )
+#define qtma_StuffKnobEvent(w1, w2, part, knob, value) ( \
+ w1 = (kKnobEventType << kXEventTypeFieldPos) \
+ | ((long)(part) << kXEventPartFieldPos) \
+ | ((long)(value >> 16) << kKnobEventValueLowFieldPos), \
+ w1 = EndianU32_NtoB(w1), \
+ w2 = (kXEventLengthBits << kEventLengthFieldPos) \
+ | ((long)(knob) << kKnobEventKnobFieldPos) \
+ | ((long)(value & 0xFFFF) << kKnobEventValueLowFieldPos), \
+ w2 = EndianU32_NtoB(w2) )
+#define qtma_StuffGeneralEvent(w1,w2,part,subType,length) ( \
+ w1 = (kGeneralEventType << kXEventTypeFieldPos) \
+ | ((long)(part) << kXEventPartFieldPos) \
+ | ((long)(length) << kGeneralEventLengthFieldPos), \
+ w1 = EndianU32_NtoB(w1), \
+ w2 = (kGeneralEventLengthBits << kEventLengthFieldPos) \
+ | ((long)(subType) << kGeneralEventSubtypeFieldPos) \
+ | ((long)(length) << kGeneralEventLengthFieldPos), \
+ w2 = EndianU32_NtoB(w2) )
+#define qtma_NeedXGeneralEvent(length) (((unsigned long)(length)) > (unsigned long)0xffff)
+
+/* General Event Defined Types*/
+enum {
+ kGeneralEventNoteRequest = 1, /* Encapsulates NoteRequest data structure */
+ kGeneralEventPartKey = 4,
+ kGeneralEventTuneDifference = 5, /* Contains a standard sequence, with end marker, for the tune difference of a sequence piece (halts QuickTime 2.0 Music) */
+ kGeneralEventAtomicInstrument = 6, /* Encapsulates AtomicInstrument record */
+ kGeneralEventKnob = 7, /* knobID/knobValue pairs; smallest event is 4 longs */
+ kGeneralEventMIDIChannel = 8, /* used in tune header, one longword identifies the midi channel it originally came from */
+ kGeneralEventPartChange = 9, /* used in tune sequence, one longword identifies the tune part which can now take over this part's note channel (similar to program change) (halts QuickTime 2.0 Music)*/
+ kGeneralEventNoOp = 10, /* guaranteed to do nothing and be ignored. (halts QuickTime 2.0 Music) */
+ kGeneralEventUsedNotes = 11, /* four longwords specifying which midi notes are actually used, 0..127 msb to lsb */
+ kGeneralEventPartMix = 12 /* three longwords: Fixed volume, long balance, long flags */
+};
+
+/* Marker Event Defined Types // marker is 60 ee vv vv in hex, where e = event type, and v = value*/
+enum {
+ kMarkerEventEnd = 0, /* marker type 0 means: value 0 - stop, value != 0 - ignore*/
+ kMarkerEventBeat = 1, /* value 0 = single beat; anything else is 65536ths-of-a-beat (quarter note)*/
+ kMarkerEventTempo = 2 /* value same as beat marker, but indicates that a tempo event should be computed (based on where the next beat or tempo marker is) and emitted upon export*/
+};
+
+enum {
+ kCurrentlyNativeEndian = 1,
+ kCurrentlyNotNativeEndian = 2
+};
+
+/* UPP call backs */
+/*
+ * NewMusicMIDISendUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( MusicMIDISendUPP )
+NewMusicMIDISendUPP(MusicMIDISendProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppMusicMIDISendProcInfo = 0x00000FF0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(MusicMIDISendUPP) NewMusicMIDISendUPP(MusicMIDISendProcPtr userRoutine) { return (MusicMIDISendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppMusicMIDISendProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewMusicMIDISendUPP(userRoutine) (MusicMIDISendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppMusicMIDISendProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewMusicOfflineDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( MusicOfflineDataUPP )
+NewMusicOfflineDataUPP(MusicOfflineDataProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppMusicOfflineDataProcInfo = 0x00000FF0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(MusicOfflineDataUPP) NewMusicOfflineDataUPP(MusicOfflineDataProcPtr userRoutine) { return (MusicOfflineDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppMusicOfflineDataProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewMusicOfflineDataUPP(userRoutine) (MusicOfflineDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppMusicOfflineDataProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewTuneCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( TuneCallBackUPP )
+NewTuneCallBackUPP(TuneCallBackProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppTuneCallBackProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(TuneCallBackUPP) NewTuneCallBackUPP(TuneCallBackProcPtr userRoutine) { return (TuneCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTuneCallBackProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewTuneCallBackUPP(userRoutine) (TuneCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTuneCallBackProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * NewTunePlayCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( TunePlayCallBackUPP )
+NewTunePlayCallBackUPP(TunePlayCallBackProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppTunePlayCallBackProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(TunePlayCallBackUPP) NewTunePlayCallBackUPP(TunePlayCallBackProcPtr userRoutine) { return (TunePlayCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTunePlayCallBackProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewTunePlayCallBackUPP(userRoutine) (TunePlayCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTunePlayCallBackProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeMusicMIDISendUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeMusicMIDISendUPP(MusicMIDISendUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeMusicMIDISendUPP(MusicMIDISendUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeMusicMIDISendUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeMusicOfflineDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeMusicOfflineDataUPP(MusicOfflineDataUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeMusicOfflineDataUPP(MusicOfflineDataUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeMusicOfflineDataUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeTuneCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeTuneCallBackUPP(TuneCallBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeTuneCallBackUPP(TuneCallBackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeTuneCallBackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * DisposeTunePlayCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeTunePlayCallBackUPP(TunePlayCallBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeTunePlayCallBackUPP(TunePlayCallBackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeTunePlayCallBackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeMusicMIDISendUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ComponentResult )
+InvokeMusicMIDISendUPP(
+ ComponentInstance self,
+ long refCon,
+ MusicMIDIPacket * mmp,
+ MusicMIDISendUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(ComponentResult) InvokeMusicMIDISendUPP(ComponentInstance self, long refCon, MusicMIDIPacket * mmp, MusicMIDISendUPP userUPP) { return (ComponentResult)CALL_THREE_PARAMETER_UPP(userUPP, uppMusicMIDISendProcInfo, self, refCon, mmp); }
+ #else
+ #define InvokeMusicMIDISendUPP(self, refCon, mmp, userUPP) (ComponentResult)CALL_THREE_PARAMETER_UPP((userUPP), uppMusicMIDISendProcInfo, (self), (refCon), (mmp))
+ #endif
+#endif
+
+/*
+ * InvokeMusicOfflineDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( ComponentResult )
+InvokeMusicOfflineDataUPP(
+ Ptr SoundData,
+ long numBytes,
+ long myRefCon,
+ MusicOfflineDataUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(ComponentResult) InvokeMusicOfflineDataUPP(Ptr SoundData, long numBytes, long myRefCon, MusicOfflineDataUPP userUPP) { return (ComponentResult)CALL_THREE_PARAMETER_UPP(userUPP, uppMusicOfflineDataProcInfo, SoundData, numBytes, myRefCon); }
+ #else
+ #define InvokeMusicOfflineDataUPP(SoundData, numBytes, myRefCon, userUPP) (ComponentResult)CALL_THREE_PARAMETER_UPP((userUPP), uppMusicOfflineDataProcInfo, (SoundData), (numBytes), (myRefCon))
+ #endif
+#endif
+
+/*
+ * InvokeTuneCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+InvokeTuneCallBackUPP(
+ const TuneStatus * status,
+ long refCon,
+ TuneCallBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeTuneCallBackUPP(const TuneStatus * status, long refCon, TuneCallBackUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppTuneCallBackProcInfo, status, refCon); }
+ #else
+ #define InvokeTuneCallBackUPP(status, refCon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppTuneCallBackProcInfo, (status), (refCon))
+ #endif
+#endif
+
+/*
+ * InvokeTunePlayCallBackUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+InvokeTunePlayCallBackUPP(
+ unsigned long * event,
+ long seed,
+ long refCon,
+ TunePlayCallBackUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) InvokeTunePlayCallBackUPP(unsigned long * event, long seed, long refCon, TunePlayCallBackUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppTunePlayCallBackProcInfo, event, seed, refCon); }
+ #else
+ #define InvokeTunePlayCallBackUPP(event, seed, refCon, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppTunePlayCallBackProcInfo, (event), (seed), (refCon))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewMusicMIDISendProc(userRoutine) NewMusicMIDISendUPP(userRoutine)
+ #define NewMusicOfflineDataProc(userRoutine) NewMusicOfflineDataUPP(userRoutine)
+ #define NewTuneCallBackProc(userRoutine) NewTuneCallBackUPP(userRoutine)
+ #define NewTunePlayCallBackProc(userRoutine) NewTunePlayCallBackUPP(userRoutine)
+ #define CallMusicMIDISendProc(userRoutine, self, refCon, mmp) InvokeMusicMIDISendUPP(self, refCon, mmp, userRoutine)
+ #define CallMusicOfflineDataProc(userRoutine, SoundData, numBytes, myRefCon) InvokeMusicOfflineDataUPP(SoundData, numBytes, myRefCon, userRoutine)
+ #define CallTuneCallBackProc(userRoutine, status, refCon) InvokeTuneCallBackUPP(status, refCon, userRoutine)
+ #define CallTunePlayCallBackProc(userRoutine, event, seed, refCon) InvokeTunePlayCallBackUPP(event, seed, refCon, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+
+/* selectors for component calls */
+enum {
+ kQTMIDIGetMIDIPortsSelect = 0x0001,
+ kQTMIDIUseSendPortSelect = 0x0002,
+ kQTMIDISendMIDISelect = 0x0003,
+ kMusicGetDescriptionSelect = 0x0001,
+ kMusicGetPartSelect = 0x0002,
+ kMusicSetPartSelect = 0x0003,
+ kMusicSetPartInstrumentNumberSelect = 0x0004,
+ kMusicGetPartInstrumentNumberSelect = 0x0005,
+ kMusicStorePartInstrumentSelect = 0x0006,
+ kMusicGetPartAtomicInstrumentSelect = 0x0009,
+ kMusicSetPartAtomicInstrumentSelect = 0x000A,
+ kMusicGetPartKnobSelect = 0x0010,
+ kMusicSetPartKnobSelect = 0x0011,
+ kMusicGetKnobSelect = 0x0012,
+ kMusicSetKnobSelect = 0x0013,
+ kMusicGetPartNameSelect = 0x0014,
+ kMusicSetPartNameSelect = 0x0015,
+ kMusicFindToneSelect = 0x0016,
+ kMusicPlayNoteSelect = 0x0017,
+ kMusicResetPartSelect = 0x0018,
+ kMusicSetPartControllerSelect = 0x0019,
+ kMusicGetPartControllerSelect = 0x001A,
+ kMusicGetMIDIProcSelect = 0x001B,
+ kMusicSetMIDIProcSelect = 0x001C,
+ kMusicGetInstrumentNamesSelect = 0x001D,
+ kMusicGetDrumNamesSelect = 0x001E,
+ kMusicGetMasterTuneSelect = 0x001F,
+ kMusicSetMasterTuneSelect = 0x0020,
+ kMusicGetInstrumentAboutInfoSelect = 0x0022,
+ kMusicGetDeviceConnectionSelect = 0x0023,
+ kMusicUseDeviceConnectionSelect = 0x0024,
+ kMusicGetKnobSettingStringsSelect = 0x0025,
+ kMusicGetMIDIPortsSelect = 0x0026,
+ kMusicSendMIDISelect = 0x0027,
+ kMusicStartOfflineSelect = 0x0029,
+ kMusicSetOfflineTimeToSelect = 0x002A,
+ kMusicGetInstrumentKnobDescriptionSelect = 0x002B,
+ kMusicGetDrumKnobDescriptionSelect = 0x002C,
+ kMusicGetKnobDescriptionSelect = 0x002D,
+ kMusicGetInfoTextSelect = 0x002E,
+ kMusicGetInstrumentInfoSelect = 0x002F,
+ kMusicTaskSelect = 0x0031,
+ kMusicSetPartInstrumentNumberInterruptSafeSelect = 0x0032,
+ kMusicSetPartSoundLocalizationSelect = 0x0033,
+ kMusicGenericConfigureSelect = 0x0100,
+ kMusicGenericGetPartSelect = 0x0101,
+ kMusicGenericGetKnobListSelect = 0x0102,
+ kMusicGenericSetResourceNumbersSelect = 0x0103,
+ kMusicDerivedMIDISendSelect = 0x0200,
+ kMusicDerivedSetKnobSelect = 0x0201,
+ kMusicDerivedSetPartSelect = 0x0202,
+ kMusicDerivedSetInstrumentSelect = 0x0203,
+ kMusicDerivedSetPartInstrumentNumberSelect = 0x0204,
+ kMusicDerivedSetMIDISelect = 0x0205,
+ kMusicDerivedStorePartInstrumentSelect = 0x0206,
+ kMusicDerivedOpenResFileSelect = 0x0207,
+ kMusicDerivedCloseResFileSelect = 0x0208,
+ kNARegisterMusicDeviceSelect = 0x0000,
+ kNAUnregisterMusicDeviceSelect = 0x0001,
+ kNAGetRegisteredMusicDeviceSelect = 0x0002,
+ kNASaveMusicConfigurationSelect = 0x0003,
+ kNANewNoteChannelSelect = 0x0004,
+ kNADisposeNoteChannelSelect = 0x0005,
+ kNAGetNoteChannelInfoSelect = 0x0006,
+ kNAPrerollNoteChannelSelect = 0x0007,
+ kNAUnrollNoteChannelSelect = 0x0008,
+ kNASetNoteChannelVolumeSelect = 0x000B,
+ kNAResetNoteChannelSelect = 0x000C,
+ kNAPlayNoteSelect = 0x000D,
+ kNASetControllerSelect = 0x000E,
+ kNASetKnobSelect = 0x000F,
+ kNAFindNoteChannelToneSelect = 0x0010,
+ kNASetInstrumentNumberSelect = 0x0011,
+ kNAPickInstrumentSelect = 0x0012,
+ kNAPickArrangementSelect = 0x0013,
+ kNAStuffToneDescriptionSelect = 0x001B,
+ kNACopyrightDialogSelect = 0x001C,
+ kNAGetIndNoteChannelSelect = 0x001F,
+ kNAGetMIDIPortsSelect = 0x0021,
+ kNAGetNoteRequestSelect = 0x0022,
+ kNASendMIDISelect = 0x0023,
+ kNAPickEditInstrumentSelect = 0x0024,
+ kNANewNoteChannelFromAtomicInstrumentSelect = 0x0025,
+ kNASetAtomicInstrumentSelect = 0x0026,
+ kNAGetKnobSelect = 0x0028,
+ kNATaskSelect = 0x0029,
+ kNASetNoteChannelBalanceSelect = 0x002A,
+ kNASetInstrumentNumberInterruptSafeSelect = 0x002B,
+ kNASetNoteChannelSoundLocalizationSelect = 0x002C,
+ kNAGetControllerSelect = 0x002D,
+ kTuneSetHeaderSelect = 0x0004,
+ kTuneGetTimeBaseSelect = 0x0005,
+ kTuneSetTimeScaleSelect = 0x0006,
+ kTuneGetTimeScaleSelect = 0x0007,
+ kTuneGetIndexedNoteChannelSelect = 0x0008,
+ kTuneQueueSelect = 0x000A,
+ kTuneInstantSelect = 0x000B,
+ kTuneGetStatusSelect = 0x000C,
+ kTuneStopSelect = 0x000D,
+ kTuneSetVolumeSelect = 0x0010,
+ kTuneGetVolumeSelect = 0x0011,
+ kTunePrerollSelect = 0x0012,
+ kTuneUnrollSelect = 0x0013,
+ kTuneSetNoteChannelsSelect = 0x0014,
+ kTuneSetPartTransposeSelect = 0x0015,
+ kTuneGetNoteAllocatorSelect = 0x0017,
+ kTuneSetSofterSelect = 0x0018,
+ kTuneTaskSelect = 0x0019,
+ kTuneSetBalanceSelect = 0x001A,
+ kTuneSetSoundLocalizationSelect = 0x001B,
+ kTuneSetHeaderWithSizeSelect = 0x001C,
+ kTuneSetPartMixSelect = 0x001D,
+ kTuneGetPartMixSelect = 0x001E
+};
+
+#endif // !__LP64__
+
+
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __QUICKTIMEMUSIC__ */
+