home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection 1998 Fall: Game Toolkit / Disc.iso / SDKs / QuickTime Mac / ComponentIncludes / QuickTimeMusic.k.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-27  |  28.0 KB  |  554 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QuickTimeMusic.k.h
  3.  
  4.      Contains:    QuickTime interfaces
  5.  
  6.      Version:    Technology:    
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __QUICKTIMEMUSIC_K__
  19. #define __QUICKTIMEMUSIC_K__
  20.  
  21. #include <QuickTimeMusic.h>
  22.  
  23. /*
  24.     Example usage:
  25.  
  26.         #define QTMIDI_BASENAME()    Fred
  27.         #define QTMIDI_GLOBALS()    FredGlobalsHandle
  28.         #include <QuickTimeMusic.k.h>
  29.  
  30.     To specify that your component implementation does not use globals, do not #define QTMIDI_GLOBALS
  31. */
  32. #ifdef QTMIDI_BASENAME
  33.     #ifndef QTMIDI_GLOBALS
  34.         #define QTMIDI_GLOBALS() 
  35.         #define ADD_QTMIDI_COMMA 
  36.     #else
  37.         #define ADD_QTMIDI_COMMA ,
  38.     #endif
  39.     #define QTMIDI_GLUE(a,b) a##b
  40.     #define QTMIDI_STRCAT(a,b) QTMIDI_GLUE(a,b)
  41.     #define ADD_QTMIDI_BASENAME(name) QTMIDI_STRCAT(QTMIDI_BASENAME(),name)
  42.  
  43.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(GetMIDIPorts) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA QTMIDIPortListHandle * inputPorts, QTMIDIPortListHandle * outputPorts);
  44.  
  45.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(UseSendPort) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA long  portIndex, long  inUse);
  46.  
  47.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(SendMIDI) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA long  portIndex, MusicMIDIPacket * mp);
  48.  
  49.     EXTERN_API( ComponentResult  ) ADD_QTMIDI_BASENAME(UseReceivePort) (QTMIDI_GLOBALS() ADD_QTMIDI_COMMA long  portIndex, MusicMIDIReadHookUPP  readHook, long  refCon);
  50.  
  51.  
  52.     /* MixedMode ProcInfo constants for component calls */
  53.     enum {
  54.         uppQTMIDIGetMIDIPortsProcInfo = 0x00000FF0,
  55.         uppQTMIDIUseSendPortProcInfo = 0x00000FF0,
  56.         uppQTMIDISendMIDIProcInfo = 0x00000FF0,
  57.         uppQTMIDIUseReceivePortProcInfo = 0x00003FF0
  58.     };
  59.  
  60. #endif    /* QTMIDI_BASENAME */
  61.  
  62. /*
  63.     Example usage:
  64.  
  65.         #define MUSIC_BASENAME()    Fred
  66.         #define MUSIC_GLOBALS()    FredGlobalsHandle
  67.         #include <QuickTimeMusic.k.h>
  68.  
  69.     To specify that your component implementation does not use globals, do not #define MUSIC_GLOBALS
  70. */
  71. #ifdef MUSIC_BASENAME
  72.     #ifndef MUSIC_GLOBALS
  73.         #define MUSIC_GLOBALS() 
  74.         #define ADD_MUSIC_COMMA 
  75.     #else
  76.         #define ADD_MUSIC_COMMA ,
  77.     #endif
  78.     #define MUSIC_GLUE(a,b) a##b
  79.     #define MUSIC_STRCAT(a,b) MUSIC_GLUE(a,b)
  80.     #define ADD_MUSIC_BASENAME(name) MUSIC_STRCAT(MUSIC_BASENAME(),name)
  81.  
  82.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA SynthesizerDescription * sd);
  83.  
  84.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long * midiChannel, long * polyphony);
  85.  
  86.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  midiChannel, long  polyphony);
  87.  
  88.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartInstrumentNumber) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  instrumentNumber);
  89.  
  90.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartInstrumentNumber) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part);
  91.  
  92.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(StorePartInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  instrumentNumber);
  93.  
  94.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartAtomicInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, AtomicInstrument * ai, long  flags);
  95.  
  96.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartAtomicInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, AtomicInstrumentPtr  aiP, long  flags);
  97.  
  98.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentKnobDescriptionObsolete) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, void * mkd);
  99.  
  100.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDrumKnobDescriptionObsolete) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, void * mkd);
  101.  
  102.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnobDescriptionObsolete) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, void * mkd);
  103.  
  104.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  knobID);
  105.  
  106.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  knobID, long  knobValue);
  107.  
  108.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobID);
  109.  
  110.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobID, long  knobValue);
  111.  
  112.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartName) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, StringPtr  name);
  113.  
  114.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartName) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, StringPtr  name);
  115.  
  116.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(FindTone) (MUSIC_GLOBALS() ADD_MUSIC_COMMA ToneDescription * td, long * libraryIndexOut, unsigned long * fit);
  117.  
  118.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(PlayNote) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  pitch, long  velocity);
  119.  
  120.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(ResetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part);
  121.  
  122.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartController) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, MusicController  controllerNumber, long  controllerValue);
  123.  
  124.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetPartController) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, MusicController  controllerNumber);
  125.  
  126.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetMIDIProc) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDISendUPP * midiSendProc, long * refCon);
  127.  
  128.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetMIDIProc) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDISendUPP  midiSendProc, long  refCon);
  129.  
  130.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentNames) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  modifiableInstruments, Handle * instrumentNames, Handle * instrumentCategoryLasts, Handle * instrumentCategoryNames);
  131.  
  132.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDrumNames) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  modifiableInstruments, Handle * instrumentNumbers, Handle * instrumentNames);
  133.  
  134.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetMasterTune) (MUSIC_GLOBALS());
  135.  
  136.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetMasterTune) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  masterTune);
  137.  
  138.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentAboutInfo) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, InstrumentAboutInfo * iai);
  139.  
  140.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDeviceConnection) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  index, long * id1, long * id2);
  141.  
  142.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(UseDeviceConnection) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  id1, long  id2);
  143.  
  144.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnobSettingStrings) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, long  isGlobal, Handle * settingsNames, Handle * settingsCategoryLasts, Handle * settingsCategoryNames);
  145.  
  146.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetMIDIPorts) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long * inputPortCount, long * outputPortCount);
  147.  
  148.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SendMIDI) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  portIndex, MusicMIDIPacket * mp);
  149.  
  150.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(ReceiveMIDI) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDIReadHookUPP  readHook, long  refCon);
  151.  
  152.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(StartOffline) (MUSIC_GLOBALS() ADD_MUSIC_COMMA unsigned long * numChannels, UnsignedFixed * sampleRate, unsigned short * sampleSize, MusicOfflineDataUPP  dataProc, long  dataProcRefCon);
  153.  
  154.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetOfflineTimeTo) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  newTimeStamp);
  155.  
  156.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentKnobDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, KnobDescription * mkd);
  157.  
  158.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetDrumKnobDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, KnobDescription * mkd);
  159.  
  160.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetKnobDescription) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobIndex, KnobDescription * mkd);
  161.  
  162.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInfoText) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  selector, Handle * textH, Handle * styleH);
  163.  
  164.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GetInstrumentInfo) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  getInstrumentInfoFlags, InstrumentInfoListHandle * infoListH);
  165.  
  166.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(Task) (MUSIC_GLOBALS());
  167.  
  168.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartInstrumentNumberInterruptSafe) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, long  instrumentNumber);
  169.  
  170.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(SetPartSoundLocalization) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  part, Handle  data);
  171.  
  172.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericConfigure) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  mode, long  flags, long  baseResID);
  173.  
  174.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericGetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart ** part);
  175.  
  176.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericGetKnobList) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobType, GenericKnobDescriptionListHandle * gkdlH);
  177.  
  178.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(GenericSetResourceNumbers) (MUSIC_GLOBALS() ADD_MUSIC_COMMA Handle  resourceIDH);
  179.  
  180.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedMIDISend) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDIPacket * packet);
  181.  
  182.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetKnob) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  knobType, long  knobNumber, long  knobValue, long  partNumber, GCPart * p, GenericKnobDescription * gkd);
  183.  
  184.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetPart) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p);
  185.  
  186.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p);
  187.  
  188.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetPartInstrumentNumber) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p);
  189.  
  190.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedSetMIDI) (MUSIC_GLOBALS() ADD_MUSIC_COMMA MusicMIDISendUPP  midiProc, long  refcon, long  midiChannel);
  191.  
  192.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedStorePartInstrument) (MUSIC_GLOBALS() ADD_MUSIC_COMMA long  partNumber, GCPart * p, long  instrumentNumber);
  193.  
  194.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedOpenResFile) (MUSIC_GLOBALS());
  195.  
  196.     EXTERN_API( ComponentResult  ) ADD_MUSIC_BASENAME(DerivedCloseResFile) (MUSIC_GLOBALS() ADD_MUSIC_COMMA short  resRefNum);
  197.  
  198.  
  199.     /* MixedMode ProcInfo constants for component calls */
  200.     enum {
  201.         uppMusicGetDescriptionProcInfo = 0x000003F0,
  202.         uppMusicGetPartProcInfo = 0x00003FF0,
  203.         uppMusicSetPartProcInfo = 0x00003FF0,
  204.         uppMusicSetPartInstrumentNumberProcInfo = 0x00000FF0,
  205.         uppMusicGetPartInstrumentNumberProcInfo = 0x000003F0,
  206.         uppMusicStorePartInstrumentProcInfo = 0x00000FF0,
  207.         uppMusicGetPartAtomicInstrumentProcInfo = 0x00003FF0,
  208.         uppMusicSetPartAtomicInstrumentProcInfo = 0x00003FF0,
  209.         uppMusicGetInstrumentKnobDescriptionObsoleteProcInfo = 0x00000FF0,
  210.         uppMusicGetDrumKnobDescriptionObsoleteProcInfo = 0x00000FF0,
  211.         uppMusicGetKnobDescriptionObsoleteProcInfo = 0x00000FF0,
  212.         uppMusicGetPartKnobProcInfo = 0x00000FF0,
  213.         uppMusicSetPartKnobProcInfo = 0x00003FF0,
  214.         uppMusicGetKnobProcInfo = 0x000003F0,
  215.         uppMusicSetKnobProcInfo = 0x00000FF0,
  216.         uppMusicGetPartNameProcInfo = 0x00000FF0,
  217.         uppMusicSetPartNameProcInfo = 0x00000FF0,
  218.         uppMusicFindToneProcInfo = 0x00003FF0,
  219.         uppMusicPlayNoteProcInfo = 0x00003FF0,
  220.         uppMusicResetPartProcInfo = 0x000003F0,
  221.         uppMusicSetPartControllerProcInfo = 0x00003FF0,
  222.         uppMusicGetPartControllerProcInfo = 0x00000FF0,
  223.         uppMusicGetMIDIProcProcInfo = 0x00000FF0,
  224.         uppMusicSetMIDIProcProcInfo = 0x00000FF0,
  225.         uppMusicGetInstrumentNamesProcInfo = 0x0000FFF0,
  226.         uppMusicGetDrumNamesProcInfo = 0x00003FF0,
  227.         uppMusicGetMasterTuneProcInfo = 0x000000F0,
  228.         uppMusicSetMasterTuneProcInfo = 0x000003F0,
  229.         uppMusicGetInstrumentAboutInfoProcInfo = 0x00000FF0,
  230.         uppMusicGetDeviceConnectionProcInfo = 0x00003FF0,
  231.         uppMusicUseDeviceConnectionProcInfo = 0x00000FF0,
  232.         uppMusicGetKnobSettingStringsProcInfo = 0x0003FFF0,
  233.         uppMusicGetMIDIPortsProcInfo = 0x00000FF0,
  234.         uppMusicSendMIDIProcInfo = 0x00000FF0,
  235.         uppMusicReceiveMIDIProcInfo = 0x00000FF0,
  236.         uppMusicStartOfflineProcInfo = 0x0003FFF0,
  237.         uppMusicSetOfflineTimeToProcInfo = 0x000003F0,
  238.         uppMusicGetInstrumentKnobDescriptionProcInfo = 0x00000FF0,
  239.         uppMusicGetDrumKnobDescriptionProcInfo = 0x00000FF0,
  240.         uppMusicGetKnobDescriptionProcInfo = 0x00000FF0,
  241.         uppMusicGetInfoTextProcInfo = 0x00003FF0,
  242.         uppMusicGetInstrumentInfoProcInfo = 0x00000FF0,
  243.         uppMusicTaskProcInfo = 0x000000F0,
  244.         uppMusicSetPartInstrumentNumberInterruptSafeProcInfo = 0x00000FF0,
  245.         uppMusicSetPartSoundLocalizationProcInfo = 0x00000FF0,
  246.         uppMusicGenericConfigureProcInfo = 0x00003FF0,
  247.         uppMusicGenericGetPartProcInfo = 0x00000FF0,
  248.         uppMusicGenericGetKnobListProcInfo = 0x00000FF0,
  249.         uppMusicGenericSetResourceNumbersProcInfo = 0x000003F0,
  250.         uppMusicDerivedMIDISendProcInfo = 0x000003F0,
  251.         uppMusicDerivedSetKnobProcInfo = 0x000FFFF0,
  252.         uppMusicDerivedSetPartProcInfo = 0x00000FF0,
  253.         uppMusicDerivedSetInstrumentProcInfo = 0x00000FF0,
  254.         uppMusicDerivedSetPartInstrumentNumberProcInfo = 0x00000FF0,
  255.         uppMusicDerivedSetMIDIProcInfo = 0x00003FF0,
  256.         uppMusicDerivedStorePartInstrumentProcInfo = 0x00003FF0,
  257.         uppMusicDerivedOpenResFileProcInfo = 0x000000F0,
  258.         uppMusicDerivedCloseResFileProcInfo = 0x000002F0
  259.     };
  260.  
  261. #endif    /* MUSIC_BASENAME */
  262.  
  263. /*
  264.     Example usage:
  265.  
  266.         #define INSTRUMENT_BASENAME()    Fred
  267.         #define INSTRUMENT_GLOBALS()    FredGlobalsHandle
  268.         #include <QuickTimeMusic.k.h>
  269.  
  270.     To specify that your component implementation does not use globals, do not #define INSTRUMENT_GLOBALS
  271. */
  272. #ifdef INSTRUMENT_BASENAME
  273.     #ifndef INSTRUMENT_GLOBALS
  274.         #define INSTRUMENT_GLOBALS() 
  275.         #define ADD_INSTRUMENT_COMMA 
  276.     #else
  277.         #define ADD_INSTRUMENT_COMMA ,
  278.     #endif
  279.     #define INSTRUMENT_GLUE(a,b) a##b
  280.     #define INSTRUMENT_STRCAT(a,b) INSTRUMENT_GLUE(a,b)
  281.     #define ADD_INSTRUMENT_BASENAME(name) INSTRUMENT_STRCAT(INSTRUMENT_BASENAME(),name)
  282.  
  283.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetInst) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA long  instID, AtomicInstrument * atomicInst, long  flags);
  284.  
  285.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetInfo) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA long  getInstrumentInfoFlags, InstCompInfoHandle * instInfo);
  286.  
  287.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(Initialize) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA long  initFormat, void * initParams);
  288.  
  289.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(OpenComponentResFile) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA short * resFile);
  290.  
  291.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(CloseComponentResFile) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA short  resFile);
  292.  
  293.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetComponentRefCon) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA void ** refCon);
  294.  
  295.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(SetComponentRefCon) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA void * refCon);
  296.  
  297.     EXTERN_API( ComponentResult  ) ADD_INSTRUMENT_BASENAME(GetSynthesizerType) (INSTRUMENT_GLOBALS() ADD_INSTRUMENT_COMMA OSType * synthesizerType);
  298.  
  299.  
  300.     /* MixedMode ProcInfo constants for component calls */
  301.     enum {
  302.         uppInstrumentGetInstProcInfo = 0x00003FF0,
  303.         uppInstrumentGetInfoProcInfo = 0x00000FF0,
  304.         uppInstrumentInitializeProcInfo = 0x00000FF0,
  305.         uppInstrumentOpenComponentResFileProcInfo = 0x000003F0,
  306.         uppInstrumentCloseComponentResFileProcInfo = 0x000002F0,
  307.         uppInstrumentGetComponentRefConProcInfo = 0x000003F0,
  308.         uppInstrumentSetComponentRefConProcInfo = 0x000003F0,
  309.         uppInstrumentGetSynthesizerTypeProcInfo = 0x000003F0
  310.     };
  311.  
  312. #endif    /* INSTRUMENT_BASENAME */
  313.  
  314. /*
  315.     Example usage:
  316.  
  317.         #define NA_BASENAME()    Fred
  318.         #define NA_GLOBALS()    FredGlobalsHandle
  319.         #include <QuickTimeMusic.k.h>
  320.  
  321.     To specify that your component implementation does not use globals, do not #define NA_GLOBALS
  322. */
  323. #ifdef NA_BASENAME
  324.     #ifndef NA_GLOBALS
  325.         #define NA_GLOBALS() 
  326.         #define ADD_NA_COMMA 
  327.     #else
  328.         #define ADD_NA_COMMA ,
  329.     #endif
  330.     #define NA_GLUE(a,b) a##b
  331.     #define NA_STRCAT(a,b) NA_GLUE(a,b)
  332.     #define ADD_NA_BASENAME(name) NA_STRCAT(NA_BASENAME(),name)
  333.  
  334.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(RegisterMusicDevice) (NA_GLOBALS() ADD_NA_COMMA OSType  synthType, Str31  name, SynthesizerConnections * connections);
  335.  
  336.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(UnregisterMusicDevice) (NA_GLOBALS() ADD_NA_COMMA long  index);
  337.  
  338.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetRegisteredMusicDevice) (NA_GLOBALS() ADD_NA_COMMA long  index, OSType * synthType, Str31  name, SynthesizerConnections * connections, MusicComponent * mc);
  339.  
  340.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SaveMusicConfiguration) (NA_GLOBALS());
  341.  
  342.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(NewNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteRequest * noteRequest, NoteChannel * outChannel);
  343.  
  344.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(DisposeNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  345.  
  346.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetNoteChannelInfo) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long * index, long * part);
  347.  
  348.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PrerollNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  349.  
  350.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(UnrollNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  351.  
  352.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetNoteChannelVolume) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, Fixed  volume);
  353.  
  354.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(ResetNoteChannel) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel);
  355.  
  356.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PlayNote) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  pitch, long  velocity);
  357.  
  358.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetController) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  controllerNumber, long  controllerValue);
  359.  
  360.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetKnob) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  knobNumber, long  knobValue);
  361.  
  362.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(FindNoteChannelTone) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, ToneDescription * td, long * instrumentNumber);
  363.  
  364.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetInstrumentNumber) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  instrumentNumber);
  365.  
  366.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PickInstrument) (NA_GLOBALS() ADD_NA_COMMA ModalFilterUPP  filterProc, StringPtr  prompt, ToneDescription * sd, unsigned long  flags, long  refCon, long  reserved1, long  reserved2);
  367.  
  368.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PickArrangement) (NA_GLOBALS() ADD_NA_COMMA ModalFilterUPP  filterProc, StringPtr  prompt, long  zero1, long  zero2, Track  t, StringPtr  songName);
  369.  
  370.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetDefaultMIDIInput) (NA_GLOBALS() ADD_NA_COMMA SynthesizerConnections * sc);
  371.  
  372.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetDefaultMIDIInput) (NA_GLOBALS() ADD_NA_COMMA SynthesizerConnections * sc);
  373.  
  374.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(UseDefaultMIDIInput) (NA_GLOBALS() ADD_NA_COMMA MusicMIDIReadHookUPP  readHook, long  refCon, unsigned long  flags);
  375.  
  376.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(LoseDefaultMIDIInput) (NA_GLOBALS());
  377.  
  378.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(StuffToneDescription) (NA_GLOBALS() ADD_NA_COMMA long  gmNumber, ToneDescription * td);
  379.  
  380.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(CopyrightDialog) (NA_GLOBALS() ADD_NA_COMMA PicHandle  p, StringPtr  author, StringPtr  copyright, StringPtr  other, StringPtr  title, ModalFilterUPP  filterProc, long  refCon);
  381.  
  382.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetIndNoteChannel) (NA_GLOBALS() ADD_NA_COMMA long  index, NoteChannel * nc, long * seed);
  383.  
  384.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetMIDIPorts) (NA_GLOBALS() ADD_NA_COMMA QTMIDIPortListHandle * inputPorts, QTMIDIPortListHandle * outputPorts);
  385.  
  386.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetNoteRequest) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, NoteRequest * nrOut);
  387.  
  388.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SendMIDI) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, MusicMIDIPacket * mp);
  389.  
  390.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(PickEditInstrument) (NA_GLOBALS() ADD_NA_COMMA ModalFilterUPP  filterProc, StringPtr  prompt, long  refCon, NoteChannel  nc, AtomicInstrument  ai, long  flags);
  391.  
  392.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(NewNoteChannelFromAtomicInstrument) (NA_GLOBALS() ADD_NA_COMMA AtomicInstrumentPtr  instrument, long  flags, NoteChannel * outChannel);
  393.  
  394.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetAtomicInstrument) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, AtomicInstrumentPtr  instrument, long  flags);
  395.  
  396.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetKnob) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  knobNumber, long * knobValue);
  397.  
  398.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(Task) (NA_GLOBALS());
  399.  
  400.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetNoteChannelBalance) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  balance);
  401.  
  402.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetInstrumentNumberInterruptSafe) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  instrumentNumber);
  403.  
  404.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(SetNoteChannelSoundLocalization) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, Handle  data);
  405.  
  406.     EXTERN_API( ComponentResult  ) ADD_NA_BASENAME(GetController) (NA_GLOBALS() ADD_NA_COMMA NoteChannel  noteChannel, long  controllerNumber, long * controllerValue);
  407.  
  408.  
  409.     /* MixedMode ProcInfo constants for component calls */
  410.     enum {
  411.         uppNARegisterMusicDeviceProcInfo = 0x00003FF0,
  412.         uppNAUnregisterMusicDeviceProcInfo = 0x000003F0,
  413.         uppNAGetRegisteredMusicDeviceProcInfo = 0x0003FFF0,
  414.         uppNASaveMusicConfigurationProcInfo = 0x000000F0,
  415.         uppNANewNoteChannelProcInfo = 0x00000FF0,
  416.         uppNADisposeNoteChannelProcInfo = 0x000003F0,
  417.         uppNAGetNoteChannelInfoProcInfo = 0x00003FF0,
  418.         uppNAPrerollNoteChannelProcInfo = 0x000003F0,
  419.         uppNAUnrollNoteChannelProcInfo = 0x000003F0,
  420.         uppNASetNoteChannelVolumeProcInfo = 0x00000FF0,
  421.         uppNAResetNoteChannelProcInfo = 0x000003F0,
  422.         uppNAPlayNoteProcInfo = 0x00003FF0,
  423.         uppNASetControllerProcInfo = 0x00003FF0,
  424.         uppNASetKnobProcInfo = 0x00003FF0,
  425.         uppNAFindNoteChannelToneProcInfo = 0x00003FF0,
  426.         uppNASetInstrumentNumberProcInfo = 0x00000FF0,
  427.         uppNAPickInstrumentProcInfo = 0x003FFFF0,
  428.         uppNAPickArrangementProcInfo = 0x000FFFF0,
  429.         uppNASetDefaultMIDIInputProcInfo = 0x000003F0,
  430.         uppNAGetDefaultMIDIInputProcInfo = 0x000003F0,
  431.         uppNAUseDefaultMIDIInputProcInfo = 0x00003FF0,
  432.         uppNALoseDefaultMIDIInputProcInfo = 0x000000F0,
  433.         uppNAStuffToneDescriptionProcInfo = 0x00000FF0,
  434.         uppNACopyrightDialogProcInfo = 0x003FFFF0,
  435.         uppNAGetIndNoteChannelProcInfo = 0x00003FF0,
  436.         uppNAGetMIDIPortsProcInfo = 0x00000FF0,
  437.         uppNAGetNoteRequestProcInfo = 0x00000FF0,
  438.         uppNASendMIDIProcInfo = 0x00000FF0,
  439.         uppNAPickEditInstrumentProcInfo = 0x000FFFF0,
  440.         uppNANewNoteChannelFromAtomicInstrumentProcInfo = 0x00003FF0,
  441.         uppNASetAtomicInstrumentProcInfo = 0x00003FF0,
  442.         uppNAGetKnobProcInfo = 0x00003FF0,
  443.         uppNATaskProcInfo = 0x000000F0,
  444.         uppNASetNoteChannelBalanceProcInfo = 0x00000FF0,
  445.         uppNASetInstrumentNumberInterruptSafeProcInfo = 0x00000FF0,
  446.         uppNASetNoteChannelSoundLocalizationProcInfo = 0x00000FF0,
  447.         uppNAGetControllerProcInfo = 0x00003FF0
  448.     };
  449.  
  450. #endif    /* NA_BASENAME */
  451.  
  452. /*
  453.     Example usage:
  454.  
  455.         #define TUNE_BASENAME()    Fred
  456.         #define TUNE_GLOBALS()    FredGlobalsHandle
  457.         #include <QuickTimeMusic.k.h>
  458.  
  459.     To specify that your component implementation does not use globals, do not #define TUNE_GLOBALS
  460. */
  461. #ifdef TUNE_BASENAME
  462.     #ifndef TUNE_GLOBALS
  463.         #define TUNE_GLOBALS() 
  464.         #define ADD_TUNE_COMMA 
  465.     #else
  466.         #define ADD_TUNE_COMMA ,
  467.     #endif
  468.     #define TUNE_GLUE(a,b) a##b
  469.     #define TUNE_STRCAT(a,b) TUNE_GLUE(a,b)
  470.     #define ADD_TUNE_BASENAME(name) TUNE_STRCAT(TUNE_BASENAME(),name)
  471.  
  472.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetHeader) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * header);
  473.  
  474.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetTimeBase) (TUNE_GLOBALS() ADD_TUNE_COMMA TimeBase * tb);
  475.  
  476.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetTimeScale) (TUNE_GLOBALS() ADD_TUNE_COMMA TimeScale  scale);
  477.  
  478.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetTimeScale) (TUNE_GLOBALS() ADD_TUNE_COMMA TimeScale * scale);
  479.  
  480.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetIndexedNoteChannel) (TUNE_GLOBALS() ADD_TUNE_COMMA long  i, NoteChannel * nc);
  481.  
  482.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Queue) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * tune, Fixed  tuneRate, unsigned long  tuneStartPosition, unsigned long  tuneStopPosition, unsigned long  queueFlags, TuneCallBackUPP  callBackProc, long  refCon);
  483.  
  484.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Instant) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * tune, unsigned long  tunePosition);
  485.  
  486.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetStatus) (TUNE_GLOBALS() ADD_TUNE_COMMA TuneStatus * status);
  487.  
  488.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Stop) (TUNE_GLOBALS() ADD_TUNE_COMMA long  stopFlags);
  489.  
  490.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetVolume) (TUNE_GLOBALS() ADD_TUNE_COMMA Fixed  volume);
  491.  
  492.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetVolume) (TUNE_GLOBALS());
  493.  
  494.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Preroll) (TUNE_GLOBALS());
  495.  
  496.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Unroll) (TUNE_GLOBALS());
  497.  
  498.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetNoteChannels) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  count, NoteChannel * noteChannelList, TunePlayCallBackUPP  playCallBackProc, long  refCon);
  499.  
  500.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetPartTranspose) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  part, long  transpose, long  velocityShift);
  501.  
  502.     EXTERN_API( NoteAllocator  ) ADD_TUNE_BASENAME(GetNoteAllocator) (TUNE_GLOBALS());
  503.  
  504.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetSofter) (TUNE_GLOBALS() ADD_TUNE_COMMA long  softer);
  505.  
  506.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(Task) (TUNE_GLOBALS());
  507.  
  508.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetBalance) (TUNE_GLOBALS() ADD_TUNE_COMMA long  balance);
  509.  
  510.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetSoundLocalization) (TUNE_GLOBALS() ADD_TUNE_COMMA Handle  data);
  511.  
  512.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetHeaderWithSize) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long * header, unsigned long  size);
  513.  
  514.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(SetPartMix) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  partNumber, long  volume, long  balance, long  mixFlags);
  515.  
  516.     EXTERN_API( ComponentResult  ) ADD_TUNE_BASENAME(GetPartMix) (TUNE_GLOBALS() ADD_TUNE_COMMA unsigned long  partNumber, long * volumeOut, long * balanceOut, long * mixFlagsOut);
  517.  
  518.  
  519.     /* MixedMode ProcInfo constants for component calls */
  520.     enum {
  521.         uppTuneSetHeaderProcInfo = 0x000003F0,
  522.         uppTuneGetTimeBaseProcInfo = 0x000003F0,
  523.         uppTuneSetTimeScaleProcInfo = 0x000003F0,
  524.         uppTuneGetTimeScaleProcInfo = 0x000003F0,
  525.         uppTuneGetIndexedNoteChannelProcInfo = 0x00000FF0,
  526.         uppTuneQueueProcInfo = 0x003FFFF0,
  527.         uppTuneInstantProcInfo = 0x00000FF0,
  528.         uppTuneGetStatusProcInfo = 0x000003F0,
  529.         uppTuneStopProcInfo = 0x000003F0,
  530.         uppTuneSetVolumeProcInfo = 0x000003F0,
  531.         uppTuneGetVolumeProcInfo = 0x000000F0,
  532.         uppTunePrerollProcInfo = 0x000000F0,
  533.         uppTuneUnrollProcInfo = 0x000000F0,
  534.         uppTuneSetNoteChannelsProcInfo = 0x0000FFF0,
  535.         uppTuneSetPartTransposeProcInfo = 0x00003FF0,
  536.         uppTuneGetNoteAllocatorProcInfo = 0x000000F0,
  537.         uppTuneSetSofterProcInfo = 0x000003F0,
  538.         uppTuneTaskProcInfo = 0x000000F0,
  539.         uppTuneSetBalanceProcInfo = 0x000003F0,
  540.         uppTuneSetSoundLocalizationProcInfo = 0x000003F0,
  541.         uppTuneSetHeaderWithSizeProcInfo = 0x00000FF0,
  542.         uppTuneSetPartMixProcInfo = 0x0000FFF0,
  543.         uppTuneGetPartMixProcInfo = 0x0000FFF0
  544.     };
  545.  
  546. #endif    /* TUNE_BASENAME */
  547.  
  548. #if TARGET_RT_LITTLE_ENDIAN
  549. #else
  550. #endif
  551.  
  552. #endif /* __QUICKTIMEMUSIC_K__ */
  553.  
  554.