ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dmusici.h
Go to the documentation of this file.
00001 /*
00002  *  DirectMusic Performance API
00003  *
00004  *  Copyright (C) 2003-2004 Rok Mandeljc
00005  *
00006  *  This program is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU Lesser General Public
00008  *  License as published by the Free Software Foundation; either
00009  *  version 2.1 of the License, or (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  *  Lesser General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU Lesser General Public
00017  *  License along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 #ifndef __WINE_DMUSIC_PERFORMANCE_H
00022 #define __WINE_DMUSIC_PERFORMANCE_H
00023 
00024 #ifndef __WINESRC__
00025 #include <windows.h>
00026 #else
00027 #include <oleauto.h> /* VARIANT */
00028 #endif /* __WINESRC__ */
00029 
00030 #define COM_NO_WINDOWS_H
00031 #include <objbase.h>
00032 #include <mmsystem.h>
00033 #include <dmusicc.h>
00034 #include <dmplugin.h>
00035 #include <pshpack8.h>
00036 
00037 #ifdef WINE_NO_UNICODE_MACROS
00038 #undef AddPort
00039 #endif
00040 
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044 
00045 /*****************************************************************************
00046  * Predeclare the interfaces
00047  */
00048 /* CLSIDs */
00049 DEFINE_GUID(CLSID_DirectMusicAudioPathConfig,              0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00050 DEFINE_GUID(CLSID_DirectMusicBand,                         0x79ba9e00,0xb6ee,0x11d1,0x86,0xbe,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
00051 DEFINE_GUID(CLSID_DirectMusicChordMap,                     0xd2ac288f,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00052 DEFINE_GUID(CLSID_DirectMusicComposer,                     0xd2ac2890,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00053 DEFINE_GUID(CLSID_DirectMusicContainer,                    0x9301e380,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
00054 DEFINE_GUID(CLSID_DirectMusicGraph,                        0xd2ac2884,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00055 DEFINE_GUID(CLSID_DirectMusicLoader,                       0xd2ac2892,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00056 DEFINE_GUID(CLSID_DirectMusicPatternTrack,                 0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00057 DEFINE_GUID(CLSID_DirectMusicPerformance,                  0xd2ac2881,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00058 DEFINE_GUID(CLSID_DirectMusicScript,                       0x810b5013,0xe88d,0x11d2,0x8b,0xc1,0x00,0x60,0x08,0x93,0xb1,0xb6);
00059 DEFINE_GUID(CLSID_DirectMusicSegment,                      0xd2ac2882,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00060 DEFINE_GUID(CLSID_DirectMusicSegmentState,                 0xd2ac2883,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00061 DEFINE_GUID(CLSID_DirectMusicStyle,                        0xd2ac288a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00062 DEFINE_GUID(CLSID_DirectSoundWave,                         0x8a667154,0xf9cb,0x11d2,0xad,0x8a,0x00,0x60,0xb0,0x57,0x5a,0xbc);
00063 /* MS doesn't support this in DX 9.0 and newer... but there's no harm in keeping it around */
00064 DEFINE_GUID(CLSID_DirectMusicSong,                         0xaed5f0a5,0xd972,0x483d,0xa3,0x84,0x64,0x9d,0xfe,0xb9,0xc1,0x81);
00065 /* these CLSIDs aren't officially declared in any dmusic header, but are used by wine's regsvr implementations*/
00066 DEFINE_GUID(CLSID_DirectMusicSynthSink,                    0xaec17ce3,0xa514,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00067 DEFINE_GUID(CLSID_DirectMusicSection,                      0x3f037241,0x414e,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
00068 DEFINE_GUID(CLSID_DirectMusicAuditionTrack,                0xd2ac2897,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00069 DEFINE_GUID(CLSID_DirectMusicSegTriggerTrack,              0xbae4d665,0x4ea1,0x11d3,0x8b,0xda,0x00,0x60,0x08,0x93,0xb1,0xb6);
00070 DEFINE_GUID(CLSID_DirectMusicAudioPath,                    0xee0b9ca0,0xa81e,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00071 DEFINE_GUID(CLSID_DirectMusicTemplate,                     0xd30bcc65,0x60e8,0x11d1,0xa7,0xce,0x00,0xa0,0xc9,0x13,0xf7,0x3c);
00072 DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegment,         0x4062c116,0x0270,0x11d3,0x8b,0xcb,0x00,0x60,0x08,0x93,0xb1,0xb6);
00073 DEFINE_GUID(CLSID_AudioVBScript,                           0x4ee17959,0x931e,0x49e4,0xa2,0xc6,0x97,0x7e,0xcf,0x36,0x28,0xf3);
00074 DEFINE_GUID(CLSID_DirectMusicScriptAutoImpPerformance,     0xa861c6e2,0xfcfc,0x11d2,0x8b,0xc9,0x00,0x60,0x08,0x93,0xb1,0xb6);
00075 DEFINE_GUID(CLSID_DirectMusicScriptSourceCodeLoader,       0xc70eb77f,0xefd4,0x4678,0xa2,0x7b,0xbf,0x16,0x48,0xf3,0x0d,0x04);
00076 DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSegmentState,    0xebf2320a,0x2502,0x11d3,0x8b,0xd1,0x00,0x60,0x08,0x93,0xb1,0xb6);
00077 DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPathConfig, 0x1cebde3e,0x6b91,0x484a,0xaf,0x48,0x5e,0x4f,0x4e,0xd6,0xb1,0xe1);
00078 DEFINE_GUID(CLSID_DirectMusicScriptAutoImpAudioPath,       0x2c5f9b72,0x7148,0x4d97,0xbf,0xc9,0x68,0xa0,0xe0,0x76,0xbe,0xbd);
00079 DEFINE_GUID(CLSID_DirectMusicScriptAutoImpSong,            0xa16f1761,0xb6d8,0x42eb,0x8d,0x57,0x4a,0x44,0xfe,0xdd,0x3b,0xd2);
00080 
00081 /* IIDs */
00082 DEFINE_GUID(IID_IDirectMusicAudioPath,                     0xc87631f5,0x23be,0x4986,0x88,0x36,0x05,0x83,0x2f,0xcc,0x48,0xf9);
00083 DEFINE_GUID(IID_IDirectMusicBand,                          0xd2ac28c0,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00084 DEFINE_GUID(IID_IDirectMusicChordMap,                      0xd2ac28be,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00085 DEFINE_GUID(IID_IDirectMusicComposer,                      0xd2ac28bf,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00086 DEFINE_GUID(IID_IDirectMusicContainer,                     0x9301e386,0x1f22,0x11d3,0x82,0x26,0xd2,0xfa,0x76,0x25,0x5d,0x47);
00087 DEFINE_GUID(IID_IDirectMusicGetLoader,                     0x68a04844,0xd13d,0x11d1,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00088 DEFINE_GUID(IID_IDirectMusicGraph,                         0x2befc277,0x5497,0x11d2,0xbc,0xcb,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00089 DEFINE_GUID(IID_IDirectMusicLoader,                        0x2ffaaca2,0x5dca,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00090 DEFINE_GUID(IID_IDirectMusicLoader8,                       0x19e7c08c,0x0a44,0x4e6a,0xa1,0x16,0x59,0x5a,0x7c,0xd5,0xde,0x8c);
00091 DEFINE_GUID(IID_IDirectMusicObject,                        0xd2ac28b5,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00092 DEFINE_GUID(IID_IDirectMusicPatternTrack,                  0x51c22e10,0xb49f,0x46fc,0xbe,0xc2,0xe6,0x28,0x8f,0xb9,0xed,0xe6);
00093 DEFINE_GUID(IID_IDirectMusicPerformance,                   0x07d43d03,0x6523,0x11d2,0x87,0x1d,0x00,0x60,0x08,0x93,0xb1,0xbd);
00094 DEFINE_GUID(IID_IDirectMusicPerformance2,                  0x6fc2cae0,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
00095 DEFINE_GUID(IID_IDirectMusicPerformance8,                  0x679c4137,0xc62e,0x4147,0xb2,0xb4,0x9d,0x56,0x9a,0xcb,0x25,0x4c);
00096 DEFINE_GUID(IID_IDirectMusicScript,                        0x2252373a,0x5814,0x489b,0x82,0x09,0x31,0xfe,0xde,0xba,0xf1,0x37);
00097 DEFINE_GUID(IID_IDirectMusicSegment,                       0xf96029a2,0x4282,0x11d2,0x87,0x17,0x00,0x60,0x08,0x93,0xb1,0xbd);
00098 DEFINE_GUID(IID_IDirectMusicSegment2,                      0xd38894d1,0xc052,0x11d2,0x87,0x2f,0x00,0x60,0x08,0x93,0xb1,0xbd);
00099 DEFINE_GUID(IID_IDirectMusicSegment8,                      0xc6784488,0x41a3,0x418f,0xaa,0x15,0xb3,0x50,0x93,0xba,0x42,0xd4);
00100 DEFINE_GUID(IID_IDirectMusicSegmentState,                  0xa3afdcc7,0xd3ee,0x11d1,0xbc,0x8d,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00101 DEFINE_GUID(IID_IDirectMusicSegmentState8,                 0xa50e4730,0x0ae4,0x48a7,0x98,0x39,0xbc,0x04,0xbf,0xe0,0x77,0x72);
00102 DEFINE_GUID(IID_IDirectMusicStyle,                         0xd2ac28bd,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00103 DEFINE_GUID(IID_IDirectMusicStyle8,                        0xfd24ad8a,0xa260,0x453d,0xbf,0x50,0x6f,0x93,0x84,0xf7,0x09,0x85);
00104 
00105 /* IIDs of unchanged interfaces */
00106 #define IID_IDirectMusicAudioPath8    IID_IDirectMusicAudioPath
00107 #define IID_IDirectMusicBand8         IID_IDirectMusicBand
00108 #define IID_IDirectMusicChordMap8     IID_IDirectMusicChordMap
00109 #define IID_IDirectMusicComposer8     IID_IDirectMusicComposer
00110 #define IID_IDirectMusicContainer8    IID_IDirectMusicContainer
00111 #define IID_IDirectMusicGetLoader8    IID_IDirectMusicGetLoader
00112 #define IID_IDirectMusicGraph8        IID_IDirectMusicGraph
00113 #define IID_IDirectMusicObject8       IID_IDirectMusicObject
00114 #define IID_IDirectMusicPatternTrack8 IID_IDirectMusicPatternTrack
00115 #define IID_IDirectMusicScript8       IID_IDirectMusicScript
00116 
00117 /* typedef definitions */
00118 typedef struct IDirectMusicBand *LPDIRECTMUSICBAND;
00119 typedef struct IDirectMusicBand         IDirectMusicBand8,         *LPDIRECTMUSICBAND8;
00120 typedef struct IDirectMusicObject *LPDIRECTMUSICOBJECT;
00121 typedef struct IDirectMusicObject       IDirectMusicObject8,       *LPDIRECTMUSICOBJECT8;
00122 typedef struct IDirectMusicLoader *LPDIRECTMUSICLOADER;
00123 typedef struct IDirectMusicLoader8 *LPDIRECTMUSICLOADER8;
00124 typedef struct IDirectMusicGetLoader *LPDIRECTMUSICGETLOADER;
00125 typedef struct IDirectMusicGetLoader    IDirectMusicGetLoader8,    *LPDIRECTMUSICGETLOADER8;
00126 typedef struct IDirectMusicAudioPath *LPDIRECTMUSICAUDIOPATH;
00127 typedef struct IDirectMusicAudioPath    IDirectMusicAudioPath8,    *LPDIRECTMUSICAUDIOPATH8;
00128 typedef struct IDirectMusicStyle *LPDIRECTMUSICSTYLE;
00129 typedef struct IDirectMusicStyle8 *LPDIRECTMUSICSTYLE8;
00130 typedef struct IDirectMusicChordMap *LPDIRECTMUSICCHORDMAP;
00131 typedef struct IDirectMusicChordMap     IDirectMusicChordMap8,     *LPDIRECTMUSICCHORDMAP8;
00132 typedef struct IDirectMusicComposer *LPDIRECTMUSICCOMPOSER;
00133 typedef struct IDirectMusicComposer     IDirectMusicComposer8,     *LPDIRECTMUSICCOMPOSER8;
00134 typedef struct IDirectMusicPatternTrack *LPDIRECTMUSICPATTERNTRACK;
00135 typedef struct IDirectMusicPatternTrack IDirectMusicPatternTrack8, *LPDIRECTMUSICPATTERNTRACK8;
00136 typedef struct IDirectMusicScript *LPDIRECTMUSICSCRIPT;
00137 typedef struct IDirectMusicScript       IDirectMusicScript8,       *LPDIRECTMUSICSCRIPT8;
00138 typedef struct IDirectMusicContainer *LPDIRECTMUSICCONTAINER;
00139 typedef struct IDirectMusicContainer    IDirectMusicContainer8,    *LPDIRECTMUSICCONTAINER8;
00140 
00141 /* RPC declarations */
00142 typedef struct IDirectMusicBand   *LPDMUS_BAND;
00143 typedef struct IDirectMusicLoader *LPDMUS_LOADER;
00144 typedef struct IDirectMusicObject *LPDMUS_OBJECT;
00145 
00146 /* GUIDs - all types loader */
00147 DEFINE_GUID(GUID_DirectMusicAllTypes,         0xd2ac2893,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00148 /* GUIDs - notification */
00149 DEFINE_GUID(GUID_NOTIFICATION_CHORD,          0xd2ac289b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00150 DEFINE_GUID(GUID_NOTIFICATION_COMMAND,        0xd2ac289c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00151 DEFINE_GUID(GUID_NOTIFICATION_MEASUREANDBEAT, 0xd2ac289a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00152 DEFINE_GUID(GUID_NOTIFICATION_PERFORMANCE,    0x81f75bc5,0x4e5d,0x11d2,0xbc,0xc7,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00153 DEFINE_GUID(GUID_NOTIFICATION_RECOMPOSE,      0xd348372b,0x945b,0x45ae,0xa5,0x22,0x45,0x0f,0x12,0x5b,0x84,0xa5);
00154 DEFINE_GUID(GUID_NOTIFICATION_SEGMENT,        0xd2ac2899,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00155 /* GUIDs - param types */
00156 DEFINE_GUID(GUID_BandParam,                   0x02bb1938,0xcb8b,0x11d2,0x8b,0xb9,0x00,0x60,0x08,0x93,0xb1,0xb6);
00157 DEFINE_GUID(GUID_ChordParam,                  0xd2ac289e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00158 DEFINE_GUID(GUID_CommandParam,                0xd2ac289d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00159 DEFINE_GUID(GUID_CommandParam2,               0x28f97ef7,0x9538,0x11d2,0x97,0xa9,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
00160 DEFINE_GUID(GUID_CommandParamNext,            0x472afe7a,0x281b,0x11d3,0x81,0x7d,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
00161 DEFINE_GUID(GUID_IDirectMusicBand,            0xd2ac28ac,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00162 DEFINE_GUID(GUID_IDirectMusicChordMap,        0xd2ac28ad,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00163 DEFINE_GUID(GUID_IDirectMusicStyle,           0xd2ac28a1,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00164 DEFINE_GUID(GUID_MuteParam,                   0xd2ac28af,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00165 DEFINE_GUID(GUID_Play_Marker,                 0xd8761a41,0x801a,0x11d3,0x9b,0xd1,0xda,0xf7,0xe1,0xc3,0xd8,0x34);
00166 DEFINE_GUID(GUID_RhythmParam,                 0xd2ac289f,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00167 DEFINE_GUID(GUID_TempoParam,                  0xd2ac28a5,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00168 DEFINE_GUID(GUID_TimeSignature,               0xd2ac28a4,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00169 DEFINE_GUID(GUID_Valid_Start_Time,            0x7f6b1760,0x1fdb,0x11d3,0x82,0x26,0x44,0x45,0x53,0x54,0x00,0x00);
00170 /* GUIDs - param setting */
00171 DEFINE_GUID(GUID_Clear_All_Bands,             0xd2ac28ab,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00172 DEFINE_GUID(GUID_ConnectToDLSCollection,      0x1db1ae6b,0xe92e,0x11d1,0xa8,0xc5,0x00,0xc0,0x4f,0xa3,0x72,0x6e);
00173 DEFINE_GUID(GUID_Disable_Auto_Download,       0xd2ac28aa,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00174 DEFINE_GUID(GUID_DisableTempo,                0x45fc707d,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00175 DEFINE_GUID(GUID_DisableTimeSig,              0x45fc707b,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00176 DEFINE_GUID(GUID_Download,                    0xd2ac28a7,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00177 DEFINE_GUID(GUID_DownloadToAudioPath,         0x9f2c0341,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x00,0x00);
00178 DEFINE_GUID(GUID_Enable_Auto_Download,        0xd2ac28a9,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00179 DEFINE_GUID(GUID_EnableTempo,                 0x45fc707e,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00180 DEFINE_GUID(GUID_EnableTimeSig,               0x45fc707c,0x1db4,0x11d2,0xbc,0xac,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00181 #define GUID_IgnoreBankSelectForGM            GUID_StandardMIDIFile
00182 DEFINE_GUID(GUID_SeedVariations,              0x65b76fa5,0xff37,0x11d2,0x81,0x4e,0x00,0xc0,0x4f,0xa3,0x6e,0x58);
00183 DEFINE_GUID(GUID_StandardMIDIFile,            0x06621075,0xe92e,0x11d1,0xa8,0xc5,0x00,0xc0,0x4f,0xa3,0x72,0x6e);
00184 DEFINE_GUID(GUID_Unload,                      0xd2ac28a8,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00185 DEFINE_GUID(GUID_UnloadFromAudioPath,         0x9f2c0342,0xc5c4,0x11d3,0x9b,0xd1,0x44,0x45,0x53,0x54,0x00,0x00);
00186 DEFINE_GUID(GUID_Variations,                  0x11f72cce,0x26e6,0x4ecd,0xaf,0x2e,0xd6,0x68,0xe6,0x67,0x07,0xd8);
00187 /* GUIDs - global data */
00188 DEFINE_GUID(GUID_PerfMasterTempo,             0xd2ac28b0,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00189 DEFINE_GUID(GUID_PerfMasterVolume,            0xd2ac28b1,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00190 DEFINE_GUID(GUID_PerfMasterGrooveLevel,       0xd2ac28b2,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
00191 DEFINE_GUID(GUID_PerfAutoDownload,            0xfb09565b,0x3631,0x11d2,0xbc,0xb8,0x00,0xa0,0xc9,0x22,0xe6,0xeb);
00192 /* GUID - default DLS collection */
00193 DEFINE_GUID(GUID_DefaultGMCollection,         0xf17e8673,0xc3b4,0x11d1,0x87,0x0b,0x00,0x60,0x08,0x93,0xb1,0xbd);
00194 /* GUID - default synthesizer */
00195 DEFINE_GUID(GUID_Synth_Default,               0x26bb9432,0x45fe,0x48d3,0xa3,0x75,0x24,0x72,0xc5,0xe3,0xe7,0x86);
00196 /* GUIDs - define default buffer configuration */
00197 DEFINE_GUID(GUID_Buffer_Reverb,               0x186cc541,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00198 DEFINE_GUID(GUID_Buffer_EnvReverb,            0x186cc542,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00199 DEFINE_GUID(GUID_Buffer_Stereo,               0x186cc545,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00200 DEFINE_GUID(GUID_Buffer_3D_Dry,               0x186cc546,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00201 DEFINE_GUID(GUID_Buffer_Mono,                 0x186cc547,0xdb29,0x11d3,0x9b,0xd1,0x00,0x80,0xc7,0x15,0x0a,0x74);
00202 
00203 
00204 /*****************************************************************************
00205  * Typedef definitions
00206  */
00207 typedef WORD    TRANSITION_TYPE, *LPTRANSITION_TYPE;
00208 /*
00209  * typedef __int64 REFERENCE_TIME,  *LPREFERENCE_TIME;
00210  * typedef LONG    MUSIC_TIME,      *LPMUSIC_TIME;
00211  */
00212 
00213 
00214 /*****************************************************************************
00215  * Flags
00216  */
00217 #define DMUS_APATH_SHARED_STEREOPLUSREVERB 0x1
00218 #define DMUS_APATH_DYNAMIC_3D              0x6
00219 #define DMUS_APATH_DYNAMIC_MONO            0x7
00220 #define DMUS_APATH_DYNAMIC_STEREO          0x8
00221 
00222 #define DMUS_AUDIOF_3D          0x01
00223 #define DMUS_AUDIOF_ENVIRON     0x02
00224 #define DMUS_AUDIOF_EAX         0x04
00225 #define DMUS_AUDIOF_DMOS        0x08
00226 #define DMUS_AUDIOF_STREAMING   0x10
00227 #define DMUS_AUDIOF_BUFFERS     0x20
00228 #define DMUS_AUDIOF_ALL         0x3F
00229 
00230 #define DMUS_AUDIOPARAMS_FEATURES     0x1
00231 #define DMUS_AUDIOPARAMS_VOICES       0x2
00232 #define DMUS_AUDIOPARAMS_SAMPLERATE   0x4
00233 #define DMUS_AUDIOPARAMS_DEFAULTSYNTH 0x8
00234 
00235 #define DMUS_CURVET_PBCURVE   0x03
00236 #define DMUS_CURVET_CCCURVE   0x04
00237 #define DMUS_CURVET_MATCURVE  0x05
00238 #define DMUS_CURVET_PATCURVE  0x06
00239 #define DMUS_CURVET_RPNCURVE  0x07
00240 #define DMUS_CURVET_NRPNCURVE 0x08
00241 
00242 #define DMUS_MASTERTEMPO_MAX 100.0f
00243 #define DMUS_MASTERTEMPO_MIN 0.01f
00244 
00245 #define DMUS_MAX_NAME     0x40
00246 #define DMUS_MAX_CATEGORY 0x40
00247 #define DMUS_MAX_FILENAME MAX_PATH
00248 
00249 #define DMUS_MAXSUBCHORD 0x8
00250 
00251 #define DMUS_NOTIFICATION_SEGSTART       0x0
00252 #define DMUS_NOTIFICATION_SEGEND         0x1
00253 #define DMUS_NOTIFICATION_SEGALMOSTEND   0x2
00254 #define DMUS_NOTIFICATION_SEGLOOP        0x3
00255 #define DMUS_NOTIFICATION_SEGABORT       0x4
00256 #define DMUS_NOTIFICATION_MUSICSTARTED   0x0
00257 #define DMUS_NOTIFICATION_MUSICSTOPPED   0x1
00258 #define DMUS_NOTIFICATION_MUSICALMOSTEND 0x2
00259 #define DMUS_NOTIFICATION_MEASUREBEAT    0x0
00260 #define DMUS_NOTIFICATION_CHORD          0x0
00261 #define DMUS_NOTIFICATION_GROOVE         0x0
00262 #define DMUS_NOTIFICATION_EMBELLISHMENT  0x1
00263 #define DMUS_NOTIFICATION_RECOMPOSE      0x0
00264 
00265 #define DMUS_OBJ_OBJECT   0x001
00266 #define DMUS_OBJ_CLASS    0x002
00267 #define DMUS_OBJ_NAME     0x004
00268 #define DMUS_OBJ_CATEGORY 0x008
00269 #define DMUS_OBJ_FILENAME 0x010
00270 #define DMUS_OBJ_FULLPATH 0x020
00271 #define DMUS_OBJ_URL      0x040
00272 #define DMUS_OBJ_VERSION  0x080
00273 #define DMUS_OBJ_DATE     0x100
00274 #define DMUS_OBJ_LOADED   0x200
00275 #define DMUS_OBJ_MEMORY   0x400
00276 #define DMUS_OBJ_STREAM   0x800
00277 
00278 #define DMUS_PATH_SEGMENT           0x1000
00279 #define DMUS_PATH_SEGMENT_TRACK     0x1100
00280 #define DMUS_PATH_SEGMENT_GRAPH     0x1200
00281 #define DMUS_PATH_SEGMENT_TOOL      0x1300
00282 #define DMUS_PATH_AUDIOPATH         0x2000
00283 #define DMUS_PATH_AUDIOPATH_GRAPH   0x2200
00284 #define DMUS_PATH_AUDIOPATH_TOOL    0x2300
00285 #define DMUS_PATH_PERFORMANCE       0x3000
00286 #define DMUS_PATH_PERFORMANCE_GRAPH 0x3200
00287 #define DMUS_PATH_PERFORMANCE_TOOL  0x3300
00288 #define DMUS_PATH_PORT              0x4000
00289 #define DMUS_PATH_BUFFER            0x6000
00290 #define DMUS_PATH_BUFFER_DMO        0x6100
00291 #define DMUS_PATH_MIXIN_BUFFER      0x7000
00292 #define DMUS_PATH_MIXIN_BUFFER_DMO  0x7100
00293 #define DMUS_PATH_PRIMARY_BUFFER    0x8000
00294 
00295 #define DMUS_PCHANNEL_BROADCAST_PERFORMANCE 0xFFFFFFFF
00296 #define DMUS_PCHANNEL_BROADCAST_AUDIOPATH   0xFFFFFFFE
00297 #define DMUS_PCHANNEL_BROADCAST_SEGMENT     0xFFFFFFFD
00298 #define DMUS_PCHANNEL_BROADCAST_GROUPS      0xFFFFFFFC
00299 #define DMUS_PCHANNEL_ALL                   0xFFFFFFFB 
00300 
00301 #define DMUS_PLAYMODE_FIXED             0x0  
00302 #define DMUS_PLAYMODE_FIXEDTOKEY        DMUS_PLAYMODE_KEY_ROOT
00303 #define DMUS_PLAYMODE_FIXEDTOCHORD      DMUS_PLAYMODE_CHORD_ROOT
00304 #define DMUS_PLAYMODE_PEDALPOINT        (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS)
00305 #define DMUS_PLAYMODE_MELODIC           (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_SCALE_INTERVALS)
00306 #define DMUS_PLAYMODE_NORMALCHORD       (DMUS_PLAYMODE_CHORD_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS)
00307 #define DMUS_PLAYMODE_ALWAYSPLAY        (DMUS_PLAYMODE_MELODIC | DMUS_PLAYMODE_NORMALCHORD)
00308 #define DMUS_PLAYMODE_PEDALPOINTCHORD   (DMUS_PLAYMODE_KEY_ROOT | DMUS_PLAYMODE_CHORD_INTERVALS)
00309 #define DMUS_PLAYMODE_PEDALPOINTALWAYS  (DMUS_PLAYMODE_PEDALPOINT | DMUS_PLAYMODE_PEDALPOINTCHORD)
00310 #define DMUS_PLAYMODE_PURPLEIZED        DMUS_PLAYMODE_ALWAYSPLAY
00311 #define DMUS_PLAYMODE_SCALE_ROOT        DMUS_PLAYMODE_KEY_ROOT
00312 #define DMUS_PLAYMODE_FIXEDTOSCALE      DMUS_PLAYMODE_FIXEDTOKEY
00313 
00314 #define DMUS_PPQ 768
00315 
00316 #define DMUS_SEG_REPEAT_INFINITE 0xFFFFFFFF
00317 #define DMUS_SEG_ALLTRACKS       0x80000000
00318 #define DMUS_SEG_ANYTRACK        0x80000000
00319 
00320 #define DMUS_TEMPO_MAX 1000
00321 #define DMUS_TEMPO_MIN 1
00322 
00323 #define DMUS_TRACKCONFIG_OVERRIDE_ALL          0x00001
00324 #define DMUS_TRACKCONFIG_OVERRIDE_PRIMARY      0x00002
00325 #define DMUS_TRACKCONFIG_FALLBACK              0x00004
00326 #define DMUS_TRACKCONFIG_CONTROL_ENABLED       0x00008
00327 #define DMUS_TRACKCONFIG_PLAY_ENABLED          0x00010
00328 #define DMUS_TRACKCONFIG_NOTIFICATION_ENABLED  0x00020
00329 #define DMUS_TRACKCONFIG_PLAY_CLOCKTIME        0x00040
00330 #define DMUS_TRACKCONFIG_PLAY_COMPOSE          0x00080
00331 #define DMUS_TRACKCONFIG_LOOP_COMPOSE          0x00100
00332 #define DMUS_TRACKCONFIG_COMPOSING             0x00200
00333 #define DMUS_TRACKCONFIG_TRANS1_FROMSEGSTART   0x00400
00334 #define DMUS_TRACKCONFIG_TRANS1_FROMSEGCURRENT 0x00800
00335 #define DMUS_TRACKCONFIG_TRANS1_TOSEGSTART     0x01000
00336 #define DMUS_TRACKCONFIG_CONTROL_PLAY          0x10000
00337 #define DMUS_TRACKCONFIG_CONTROL_NOTIFICATION  0x20000
00338 #define DMUS_TRACKCONFIG_DEFAULT               (DMUS_TRACKCONFIG_CONTROL_ENABLED | DMUS_TRACKCONFIG_PLAY_ENABLED | DMUS_TRACKCONFIG_NOTIFICATION_ENABLED)
00339 
00340 #define DMUS_WAVEF_OFF          0x01
00341 #define DMUS_WAVEF_STREAMING    0x02
00342 #define DMUS_WAVEF_NOINVALIDATE 0x04
00343 #define DMUS_WAVEF_NOPREROLL    0x08
00344 #define DMUS_WAVEF_IGNORELOOPS  0x20
00345 
00346 #define DMUSB_LOADED  0x1
00347 #define DMUSB_DEFAULT 0x2
00348 
00349 #define MT_MIN 0x80000000
00350 #define MT_MAX 0x7FFFFFFF
00351 
00352 
00353 /*****************************************************************************
00354  * Definitions
00355  */
00356 #define DMUS_PMSG_PART \
00357     DWORD              dwSize; \
00358     REFERENCE_TIME     rtTime; \
00359     MUSIC_TIME         mtTime; \
00360     DWORD              dwFlags; \
00361     DWORD              dwPChannel; \
00362     DWORD              dwVirtualTrackID; \
00363     IDirectMusicTool*  pTool; \
00364     struct IDirectMusicGraph* pGraph; \
00365     DWORD              dwType; \
00366     DWORD              dwVoiceID; \
00367     DWORD              dwGroupID; \
00368     IUnknown*          punkUser;
00369 
00370 
00371 /*****************************************************************************
00372  * Enumerations
00373  */
00374 /* typedef definitions */
00375 typedef enum enumDMUS_STYLET_TYPES       DMUS_STYLET_TYPES;
00376 typedef enum enumDMUS_COMMANDT_TYPES     DMUS_COMMANDT_TYPES;
00377 typedef enum enumDMUS_SHAPET_TYPES       DMUS_SHAPET_TYPES;
00378 typedef enum enumDMUS_COMPOSEF_FLAGS     DMUS_COMPOSEF_FLAGS;
00379 typedef enum enumDMUS_PMSGF_FLAGS        DMUS_PMSGF_FLAGS;
00380 typedef enum enumDMUS_PMSGT_TYPES        DMUS_PMSGT_TYPES;
00381 typedef enum enumDMUS_SEGF_FLAGS         DMUS_SEGF_FLAGS;
00382 typedef enum enumDMUS_TIME_RESOLVE_FLAGS DMUS_TIME_RESOLVE_FLAGS;
00383 typedef enum enumDMUS_CHORDKEYF_FLAGS    DMUS_CHORDKEYF_FLAGS;
00384 typedef enum enumDMUS_NOTEF_FLAGS        DMUS_NOTEF_FLAGS;
00385 typedef enum enumDMUS_PLAYMODE_FLAGS     DMUS_PLAYMODE_FLAGS;
00386 typedef enum enumDMUS_CURVE_FLAGS        DMUS_CURVE_FLAGS;
00387 
00388 
00389 
00390 /* actual enumerations */
00391 enum enumDMUS_STYLET_TYPES {
00392     DMUS_STYLET_PATTERN = 0x0,
00393     DMUS_STYLET_MOTIF   = 0x1,
00394 };
00395 
00396 enum enumDMUS_COMMANDT_TYPES {
00397     DMUS_COMMANDT_GROOVE      = 0x0,
00398     DMUS_COMMANDT_FILL        = 0x1,
00399     DMUS_COMMANDT_INTRO       = 0x2,
00400     DMUS_COMMANDT_BREAK       = 0x3,
00401     DMUS_COMMANDT_END         = 0x4,
00402     DMUS_COMMANDT_ENDANDINTRO = 0x5
00403 };
00404 
00405 enum enumDMUS_SHAPET_TYPES {
00406     DMUS_SHAPET_FALLING  = 0x0,
00407     DMUS_SHAPET_LEVEL    = 0x1,
00408     DMUS_SHAPET_LOOPABLE = 0x2,
00409     DMUS_SHAPET_LOUD     = 0x3,
00410     DMUS_SHAPET_QUIET    = 0x4,
00411     DMUS_SHAPET_PEAKING  = 0x5,
00412     DMUS_SHAPET_RANDOM   = 0x6,
00413     DMUS_SHAPET_RISING   = 0x7,
00414     DMUS_SHAPET_SONG     = 0x8
00415 };
00416 
00417 enum enumDMUS_COMPOSEF_FLAGS {       
00418     DMUS_COMPOSEF_NONE                = 0x000000,
00419     DMUS_COMPOSEF_ALIGN               = 0x000001,
00420     DMUS_COMPOSEF_OVERLAP             = 0x000002,
00421     DMUS_COMPOSEF_IMMEDIATE           = 0x000004,
00422     DMUS_COMPOSEF_GRID                = 0x000008,
00423     DMUS_COMPOSEF_BEAT                = 0x000010,
00424     DMUS_COMPOSEF_MEASURE             = 0x000020,
00425     DMUS_COMPOSEF_AFTERPREPARETIME    = 0x000040,
00426     DMUS_COMPOSEF_VALID_START_BEAT    = 0x000080,
00427     DMUS_COMPOSEF_VALID_START_GRID    = 0x000100,
00428     DMUS_COMPOSEF_VALID_START_TICK    = 0x000200,
00429     DMUS_COMPOSEF_SEGMENTEND          = 0x000400,
00430     DMUS_COMPOSEF_MARKER              = 0x000800,
00431     DMUS_COMPOSEF_MODULATE            = 0x001000,
00432     DMUS_COMPOSEF_LONG                = 0x002000,
00433     DMUS_COMPOSEF_ENTIRE_TRANSITION   = 0x004000,
00434     DMUS_COMPOSEF_1BAR_TRANSITION     = 0x008000,
00435     DMUS_COMPOSEF_ENTIRE_ADDITION     = 0x010000,
00436     DMUS_COMPOSEF_1BAR_ADDITION       = 0x020000,
00437     DMUS_COMPOSEF_VALID_START_MEASURE = 0x040000,
00438     DMUS_COMPOSEF_DEFAULT             = 0x080000,
00439     DMUS_COMPOSEF_NOINVALIDATE        = 0x100000,
00440     DMUS_COMPOSEF_USE_AUDIOPATH       = 0x200000,
00441     DMUS_COMPOSEF_INVALIDATE_PRI      = 0x400000
00442 };
00443 
00444 enum enumDMUS_PMSGF_FLAGS {
00445     DMUS_PMSGF_REFTIME        = 1,
00446     DMUS_PMSGF_MUSICTIME      = 2,
00447     DMUS_PMSGF_TOOL_IMMEDIATE = 4,
00448     DMUS_PMSGF_TOOL_QUEUE     = 8,
00449     DMUS_PMSGF_TOOL_ATTIME    = 0x10,
00450     DMUS_PMSGF_TOOL_FLUSH     = 0x20,
00451     DMUS_PMSGF_LOCKTOREFTIME  = 0x40,
00452     DMUS_PMSGF_DX8            = 0x80
00453 };
00454 
00455 enum enumDMUS_PMSGT_TYPES {
00456     DMUS_PMSGT_MIDI             = 0x00,
00457     DMUS_PMSGT_NOTE             = 0x01,
00458     DMUS_PMSGT_SYSEX            = 0x02,
00459     DMUS_PMSGT_NOTIFICATION     = 0x03,
00460     DMUS_PMSGT_TEMPO            = 0x04,
00461     DMUS_PMSGT_CURVE            = 0x05,
00462     DMUS_PMSGT_TIMESIG          = 0x06,
00463     DMUS_PMSGT_PATCH            = 0x07,
00464     DMUS_PMSGT_TRANSPOSE        = 0x08,
00465     DMUS_PMSGT_CHANNEL_PRIORITY = 0x09,
00466     DMUS_PMSGT_STOP             = 0x0A,
00467     DMUS_PMSGT_DIRTY            = 0x0B,
00468     DMUS_PMSGT_WAVE             = 0x0C,
00469     DMUS_PMSGT_LYRIC            = 0x0D,
00470     DMUS_PMSGT_SCRIPTLYRIC      = 0x0E,
00471     DMUS_PMSGT_USER             = 0xFF
00472 };
00473 
00474 enum enumDMUS_SEGF_FLAGS {
00475     DMUS_SEGF_REFTIME             = 0x000040,   
00476     DMUS_SEGF_SECONDARY           = 0x000080,
00477     DMUS_SEGF_QUEUE               = 0x000100,
00478     DMUS_SEGF_CONTROL             = 0x000200,
00479     DMUS_SEGF_AFTERPREPARETIME    = 0x000400,
00480     DMUS_SEGF_GRID                = 0x000800,
00481     DMUS_SEGF_BEAT                = 0x001000,
00482     DMUS_SEGF_MEASURE             = 0x002000,
00483     DMUS_SEGF_DEFAULT             = 0x004000,
00484     DMUS_SEGF_NOINVALIDATE        = 0x008000,
00485     DMUS_SEGF_ALIGN               = 0x0010000,
00486     DMUS_SEGF_VALID_START_BEAT    = 0x0020000,
00487     DMUS_SEGF_VALID_START_GRID    = 0x0040000,
00488     DMUS_SEGF_VALID_START_TICK    = 0x0080000,
00489     DMUS_SEGF_AUTOTRANSITION      = 0x0100000,
00490     DMUS_SEGF_AFTERQUEUETIME      = 0x0200000,
00491     DMUS_SEGF_AFTERLATENCYTIME    = 0x0400000,
00492     DMUS_SEGF_SEGMENTEND          = 0x0800000,
00493     DMUS_SEGF_MARKER              = 0x01000000,
00494     DMUS_SEGF_TIMESIG_ALWAYS      = 0x02000000,
00495     DMUS_SEGF_USE_AUDIOPATH       = 0x04000000,
00496     DMUS_SEGF_VALID_START_MEASURE = 0x08000000,
00497     DMUS_SEGF_INVALIDATE_PRI      = 0x10000000
00498 };
00499 
00500 enum enumDMUS_TIME_RESOLVE_FLAGS {
00501     DMUS_TIME_RESOLVE_AFTERPREPARETIME = DMUS_SEGF_AFTERPREPARETIME,
00502     DMUS_TIME_RESOLVE_AFTERQUEUETIME   = DMUS_SEGF_AFTERQUEUETIME,
00503     DMUS_TIME_RESOLVE_AFTERLATENCYTIME = DMUS_SEGF_AFTERLATENCYTIME,
00504     DMUS_TIME_RESOLVE_GRID             = DMUS_SEGF_GRID,
00505     DMUS_TIME_RESOLVE_BEAT             = DMUS_SEGF_BEAT,
00506     DMUS_TIME_RESOLVE_MEASURE          = DMUS_SEGF_MEASURE,
00507     DMUS_TIME_RESOLVE_MARKER           = DMUS_SEGF_MARKER,
00508     DMUS_TIME_RESOLVE_SEGMENTEND       = DMUS_SEGF_SEGMENTEND,
00509 };
00510 
00511 enum enumDMUS_CHORDKEYF_FLAGS {
00512     DMUS_CHORDKEYF_SILENT = 0x1,
00513 };
00514 
00515 enum enumDMUS_NOTEF_FLAGS {
00516     DMUS_NOTEF_NOTEON               = 0x01,
00517     /* DX8 */
00518     DMUS_NOTEF_NOINVALIDATE         = 0x02,
00519     DMUS_NOTEF_NOINVALIDATE_INSCALE = 0x04,
00520     DMUS_NOTEF_NOINVALIDATE_INCHORD = 0x08,
00521     DMUS_NOTEF_REGENERATE           = 0x10,
00522 };
00523 
00524 enum enumDMUS_PLAYMODE_FLAGS {
00525     DMUS_PLAYMODE_KEY_ROOT        = 0x01,
00526     DMUS_PLAYMODE_CHORD_ROOT      = 0x02,
00527     DMUS_PLAYMODE_SCALE_INTERVALS = 0x04,
00528     DMUS_PLAYMODE_CHORD_INTERVALS = 0x08,
00529     DMUS_PLAYMODE_NONE            = 0x10,
00530 };
00531 
00532 enum enumDMUS_CURVE_FLAGS {
00533     DMUS_CURVE_RESET              = 0x1,
00534     DMUS_CURVE_START_FROM_CURRENT = 0x2
00535 };
00536 
00537 enum { 
00538     DMUS_CURVES_LINEAR  = 0x0,
00539     DMUS_CURVES_INSTANT = 0x1,
00540     DMUS_CURVES_EXP     = 0x2,
00541     DMUS_CURVES_LOG     = 0x3,
00542     DMUS_CURVES_SINE    = 0x4
00543 };
00544 
00545 
00546 /*****************************************************************************
00547  * Structures
00548  */
00549 /* typedef definitions */
00550 /*typedef struct _DMUS_PMSG                  DMUS_PMSG,                  *LPDMUS_PMSG; */
00551 typedef struct _DMUS_AUDIOPARAMS           DMUS_AUDIOPARAMS,           *LPDMUS_AUDIOPARAMS;
00552 typedef struct _DMUS_SUBCHORD              DMUS_SUBCHORD,              *LPDMUS_SUBCHORD;
00553 typedef struct _DMUS_CHORD_KEY             DMUS_CHORD_KEY,             *LPDMUS_CHORD_KEY;
00554 typedef struct _DMUS_NOTE_PMSG             DMUS_NOTE_PMSG,             *LPDMUS_NOTE_PMSG;
00555 typedef struct _DMUS_MIDI_PMSG             DMUS_MIDI_PMSG,             *LPDMUS_MIDI_PMSG;
00556 typedef struct _DMUS_PATCH_PMSG            DMUS_PATCH_PMSG,            *LPDMUS_PATCH_PMSG;
00557 typedef struct _DMUS_TRANSPOSE_PMSG        DMUS_TRANSPOSE_PMSG,        *LPDMUS_TRANSPOSE_PMSG;
00558 typedef struct _DMUS_CHANNEL_PRIORITY_PMSG DMUS_CHANNEL_PRIORITY_PMSG, *LPDMUS_CHANNEL_PRIORITY_PMSG;
00559 typedef struct _DMUS_TEMPO_PMSG            DMUS_TEMPO_PMSG,            *LPDMUS_TEMPO_PMSG;
00560 typedef struct _DMUS_SYSEX_PMSG            DMUS_SYSEX_PMSG,            *LPDMUS_SYSEX_PMSG;
00561 typedef struct _DMUS_CURVE_PMSG            DMUS_CURVE_PMSG,            *LPDMUS_CURVE_PMSG;
00562 typedef struct _DMUS_TIMESIG_PMSG          DMUS_TIMESIG_PMSG,          *LPDMUS_TIMESIG_PMSG;
00563 typedef struct _DMUS_NOTIFICATION_PMSG     DMUS_NOTIFICATION_PMSG,     *LPDMUS_NOTIFICATION_PMSG;
00564 typedef struct _DMUS_WAVE_PMSG             DMUS_WAVE_PMSG,             *LPDMUS_WAVE_PMSG;
00565 typedef struct _DMUS_LYRIC_PMSG            DMUS_LYRIC_PMSG,            *LPDMUS_LYRIC_PMSG;
00566 typedef struct _DMUS_VERSION               DMUS_VERSION,               *LPDMUS_VERSION;
00567 typedef struct _DMUS_TIMESIGNATURE         DMUS_TIMESIGNATURE,         *LPDMUS_TIMESIGNATURE;
00568 typedef struct _DMUS_VALID_START_PARAM     DMUS_VALID_START_PARAM,     *LPDMUS_VALID_START_PARAM;
00569 typedef struct _DMUS_PLAY_MARKER_PARAM     DMUS_PLAY_MARKER_PARAM,     *LPDMUS_PLAY_MARKER_PARAM;
00570 typedef struct _DMUS_OBJECTDESC            DMUS_OBJECTDESC,            *LPDMUS_OBJECTDESC;
00571 typedef struct _DMUS_SCRIPT_ERRORINFO      DMUS_SCRIPT_ERRORINFO,      *LPDMUS_SCRIPT_ERRORINFO;
00572 typedef struct _DMUS_COMMAND_PARAM         DMUS_COMMAND_PARAM,         *LPDMUS_COMMAND_PARAM;
00573 typedef struct _DMUS_COMMAND_PARAM_2       DMUS_COMMAND_PARAM_2,       *LPDMUS_COMMAND_PARAM_2;
00574 typedef struct _DMUS_BAND_PARAM            DMUS_BAND_PARAM,            *LPDMUS_BAND_PARAM;
00575 typedef struct _DMUS_VARIATIONS_PARAM      DMUS_VARIATIONS_PARAM,      *LPDMUS_VARIATIONS_PARAM;
00576 
00577 /* actual structures */
00578 struct _DMUS_PMSG {
00579     DMUS_PMSG_PART
00580 };
00581 
00582 struct _DMUS_AUDIOPARAMS {
00583     DWORD dwSize;
00584     BOOL  fInitNow;
00585     DWORD dwValidData;
00586     DWORD dwFeatures;
00587     DWORD dwVoices;
00588     DWORD dwSampleRate;
00589     CLSID clsidDefaultSynth;
00590 };
00591 
00592 struct _DMUS_SUBCHORD {
00593     DWORD dwChordPattern;
00594     DWORD dwScalePattern;
00595     DWORD dwInversionPoints;
00596     DWORD dwLevels;
00597     BYTE  bChordRoot;
00598     BYTE  bScaleRoot;
00599 };
00600 
00601 struct _DMUS_CHORD_KEY {
00602     WCHAR         wszName[16];
00603     WORD          wMeasure;
00604     BYTE          bBeat;
00605     BYTE          bSubChordCount;
00606     DMUS_SUBCHORD SubChordList[DMUS_MAXSUBCHORD];
00607     DWORD         dwScale;
00608     BYTE          bKey;
00609     BYTE          bFlags;
00610 };
00611 
00612 struct _DMUS_NOTE_PMSG {
00613     DMUS_PMSG_PART
00614     MUSIC_TIME mtDuration;
00615     WORD       wMusicValue;
00616     WORD       wMeasure;
00617     short      nOffset;
00618     BYTE       bBeat;
00619     BYTE       bGrid;
00620     BYTE       bVelocity;
00621     BYTE       bFlags;
00622     BYTE       bTimeRange;
00623     BYTE       bDurRange;
00624     BYTE       bVelRange;
00625     BYTE       bPlayModeFlags;
00626     BYTE       bSubChordLevel;
00627     BYTE       bMidiValue;
00628     char       cTranspose;
00629 };
00630 
00631 struct _DMUS_MIDI_PMSG {
00632     DMUS_PMSG_PART
00633     BYTE bStatus;
00634     BYTE bByte1;
00635     BYTE bByte2;
00636     BYTE bPad[1];
00637 };
00638 
00639 struct _DMUS_PATCH_PMSG {
00640     DMUS_PMSG_PART
00641     BYTE byInstrument;
00642     BYTE byMSB;
00643     BYTE byLSB;
00644     BYTE byPad[1];
00645 };
00646 
00647 struct _DMUS_TRANSPOSE_PMSG {
00648     DMUS_PMSG_PART
00649     short nTranspose;
00650     /* DX8 */
00651     WORD  wMergeIndex;
00652 };
00653 
00654 struct _DMUS_CHANNEL_PRIORITY_PMSG {
00655     DMUS_PMSG_PART
00656     DWORD dwChannelPriority;
00657 };
00658 
00659 struct _DMUS_TEMPO_PMSG {
00660     DMUS_PMSG_PART
00661     double  dblTempo;
00662 };
00663 
00664 struct _DMUS_SYSEX_PMSG {
00665     DMUS_PMSG_PART
00666     DWORD dwLen;
00667     BYTE  abData[1];
00668 };
00669 
00670 struct _DMUS_CURVE_PMSG {
00671     DMUS_PMSG_PART
00672     MUSIC_TIME mtDuration;
00673     MUSIC_TIME mtOriginalStart;
00674     MUSIC_TIME mtResetDuration;
00675     short      nStartValue;
00676     short      nEndValue;
00677     short      nResetValue;
00678     WORD       wMeasure;
00679     short      nOffset;
00680     BYTE       bBeat;
00681     BYTE       bGrid;
00682     BYTE       bType;
00683     BYTE       bCurveShape;
00684     BYTE       bCCData;
00685     BYTE       bFlags;
00686     /* DX8 */
00687     WORD       wParamType;
00688     WORD       wMergeIndex;
00689 };
00690 
00691 struct _DMUS_TIMESIG_PMSG {
00692     DMUS_PMSG_PART
00693     BYTE bBeatsPerMeasure;
00694     BYTE bBeat;
00695     WORD wGridsPerBeat;
00696 };
00697 
00698 struct _DMUS_NOTIFICATION_PMSG {
00699     DMUS_PMSG_PART
00700     GUID  guidNotificationType;
00701     DWORD dwNotificationOption;
00702     DWORD dwField1;
00703     DWORD dwField2;
00704 };
00705 
00706 struct _DMUS_WAVE_PMSG {
00707     DMUS_PMSG_PART    
00708     REFERENCE_TIME rtStartOffset;
00709     REFERENCE_TIME rtDuration;
00710     LONG           lOffset;
00711     LONG           lVolume;
00712     LONG           lPitch;
00713     BYTE           bFlags;
00714 };
00715 
00716 struct _DMUS_LYRIC_PMSG {
00717     DMUS_PMSG_PART    
00718     WCHAR wszString[1];
00719 };
00720 
00721 struct _DMUS_VERSION {
00722     DWORD dwVersionMS;
00723     DWORD dwVersionLS;
00724 };
00725 
00726 struct _DMUS_TIMESIGNATURE {
00727     MUSIC_TIME mtTime;
00728     BYTE       bBeatsPerMeasure;
00729     BYTE       bBeat;
00730     WORD       wGridsPerBeat;
00731 };
00732 
00733 struct _DMUS_VALID_START_PARAM {
00734     MUSIC_TIME mtTime;
00735 };
00736 
00737 struct _DMUS_PLAY_MARKER_PARAM {
00738     MUSIC_TIME mtTime;
00739 };
00740 
00741 struct _DMUS_OBJECTDESC {
00742     DWORD        dwSize;
00743     DWORD        dwValidData;
00744     GUID         guidObject;
00745     GUID         guidClass;
00746     FILETIME     ftDate;
00747     DMUS_VERSION vVersion;
00748     WCHAR        wszName[DMUS_MAX_NAME];
00749     WCHAR        wszCategory[DMUS_MAX_CATEGORY];
00750     WCHAR        wszFileName[DMUS_MAX_FILENAME];
00751     LONGLONG     llMemLength;
00752     LPBYTE       pbMemData;
00753     IStream*     pStream;
00754 };
00755 
00756 struct _DMUS_SCRIPT_ERRORINFO {
00757     DWORD   dwSize;
00758     HRESULT hr;
00759     ULONG   ulLineNumber;
00760     LONG    ichCharPosition;
00761     WCHAR   wszSourceFile[DMUS_MAX_FILENAME];
00762     WCHAR   wszSourceComponent[DMUS_MAX_FILENAME];
00763     WCHAR   wszDescription[DMUS_MAX_FILENAME];
00764     WCHAR   wszSourceLineText[DMUS_MAX_FILENAME];
00765 };
00766 
00767 struct _DMUS_COMMAND_PARAM {
00768     BYTE bCommand;
00769     BYTE bGrooveLevel;
00770     BYTE bGrooveRange;
00771     BYTE bRepeatMode;
00772 };
00773 
00774 struct _DMUS_COMMAND_PARAM_2 {
00775     MUSIC_TIME mtTime;
00776     BYTE       bCommand;
00777     BYTE       bGrooveLevel;
00778     BYTE       bGrooveRange;
00779     BYTE       bRepeatMode;
00780 };
00781 
00782 struct _DMUS_BAND_PARAM {
00783     MUSIC_TIME       mtTimePhysical;
00784     struct IDirectMusicBand *pBand;
00785 };
00786 
00787 struct _DMUS_VARIATIONS_PARAM {
00788     DWORD  dwPChannelsUsed;
00789     DWORD* padwPChannels;
00790     DWORD* padwVariations;
00791 };
00792 
00793 
00794 /*****************************************************************************
00795  * IDirectMusicBand interface
00796  */
00797 #define INTERFACE IDirectMusicBand
00798 DECLARE_INTERFACE_(IDirectMusicBand,IUnknown)
00799 {
00800     /*** IUnknown methods ***/
00801     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00802     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00803     STDMETHOD_(ULONG,Release)(THIS) PURE;
00804     /*** IDirectMusicBand methods ***/
00805     STDMETHOD(CreateSegment)(THIS_ struct IDirectMusicSegment **ppSegment) PURE;
00806     STDMETHOD(Download)(THIS_ struct IDirectMusicPerformance *pPerformance) PURE;
00807     STDMETHOD(Unload)(THIS_ struct IDirectMusicPerformance *pPerformance) PURE;
00808 };
00809 #undef INTERFACE
00810 
00811 #if !defined(__cplusplus) || defined(CINTERFACE)
00812 /*** IUnknown methods ***/
00813 #define IDirectMusicBand_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00814 #define IDirectMusicBand_AddRef(p)             (p)->lpVtbl->AddRef(p)
00815 #define IDirectMusicBand_Release(p)            (p)->lpVtbl->Release(p)
00816 /*** IDirectMusicBand methods ***/
00817 #define IDirectMusicBand_CreateSegment(p,a)    (p)->lpVtbl->CreateSegment(p,a)
00818 #define IDirectMusicBand_Download(p,a)         (p)->lpVtbl->Download(p,a)
00819 #define IDirectMusicBand_Unload(p,a)           (p)->lpVtbl->Unload(p,a)
00820 #endif
00821 
00822 
00823 /*****************************************************************************
00824  * IDirectMusicObject interface
00825  */
00826 #define INTERFACE IDirectMusicObject
00827 DECLARE_INTERFACE_(IDirectMusicObject,IUnknown)
00828 {
00829     /*** IUnknown methods ***/
00830     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00831     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00832     STDMETHOD_(ULONG,Release)(THIS) PURE;
00833     /*** IDirectMusicObject methods ***/
00834     STDMETHOD(GetDescriptor)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
00835     STDMETHOD(SetDescriptor)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
00836     STDMETHOD(ParseDescriptor)(THIS_ LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc) PURE;
00837 };
00838 #undef INTERFACE
00839 
00840 #if !defined(__cplusplus) || defined(CINTERFACE)
00841 /*** IUnknown methods ***/
00842 #define IDirectMusicObject_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
00843 #define IDirectMusicObject_AddRef(p)              (p)->lpVtbl->AddRef(p)
00844 #define IDirectMusicObject_Release(p)             (p)->lpVtbl->Release(p)
00845 /*** IDirectMusicObject methods ***/
00846 #define IDirectMusicObject_GetDescriptor(p,a)     (p)->lpVtbl->GetDescriptor(p,a)
00847 #define IDirectMusicObject_SetDescriptor(p,a)     (p)->lpVtbl->SetDescriptor(p,a)
00848 #define IDirectMusicObject_ParseDescriptor(p,a,b) (p)->lpVtbl->ParseDescriptor(p,a,b)
00849 #endif
00850 
00851 
00852 /*****************************************************************************
00853  * IDirectMusicLoader interface
00854  */
00855 #define INTERFACE IDirectMusicLoader
00856 DECLARE_INTERFACE_(IDirectMusicLoader,IUnknown)
00857 {
00858     /*** IUnknown methods ***/
00859     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00860     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00861     STDMETHOD_(ULONG,Release)(THIS) PURE;
00862     /*** IDirectMusicLoader methods ***/
00863     STDMETHOD(_GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
00864     STDMETHOD(SetObject)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
00865     STDMETHOD(SetSearchDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzPath, BOOL fClear) PURE;
00866     STDMETHOD(ScanDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName) PURE;
00867     STDMETHOD(CacheObject)(THIS_ IDirectMusicObject *pObject) PURE;
00868     STDMETHOD(ReleaseObject)(THIS_ IDirectMusicObject *pObject) PURE;
00869     STDMETHOD(ClearCache)(THIS_ REFGUID rguidClass) PURE;
00870     STDMETHOD(EnableCache)(THIS_ REFGUID rguidClass, BOOL fEnable) PURE;
00871     STDMETHOD(EnumObject)(THIS_ REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc) PURE;
00872 };
00873 #undef INTERFACE
00874 
00875 #if !defined(__cplusplus) || defined(CINTERFACE)
00876 /*** IUnknown methods ***/
00877 #define IDirectMusicLoader_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
00878 #define IDirectMusicLoader_AddRef(p)                   (p)->lpVtbl->AddRef(p)
00879 #define IDirectMusicLoader_Release(p)                  (p)->lpVtbl->Release(p)
00880 /*** IDirectMusicLoader methods ***/
00881 #define IDirectMusicLoader_GetObject(p,a,b,c)          (p)->lpVtbl->_GetObject(p,a,b,c)
00882 #define IDirectMusicLoader_SetObject(p,a)              (p)->lpVtbl->SetObject(p,a)
00883 #define IDirectMusicLoader_SetSearchDirectory(p,a,b,c) (p)->lpVtbl->SetSearchDirectory(p,a,b,c)
00884 #define IDirectMusicLoader_ScanDirectory(p,a,b,c)      (p)->lpVtbl->ScanDirectory(p,a,b,c)
00885 #define IDirectMusicLoader_CacheObject(p,a)            (p)->lpVtbl->CacheObject(p,a)
00886 #define IDirectMusicLoader_ReleaseObject(p,a)          (p)->lpVtbl->ReleaseObject(p,a)
00887 #define IDirectMusicLoader_ClearCache(p,a)             (p)->lpVtbl->ClearCache(p,a)
00888 #define IDirectMusicLoader_EnableCache(p,a,b)          (p)->lpVtbl->EnableCache(p,a,b)
00889 #define IDirectMusicLoader_EnumObject(p,a,b,c)         (p)->lpVtbl->EnumObject(p,a,b,c)
00890 #endif
00891 
00892 
00893 /*****************************************************************************
00894  * IDirectMusicLoader8 interface
00895  */
00896 #define INTERFACE IDirectMusicLoader8
00897 DECLARE_INTERFACE_(IDirectMusicLoader8,IDirectMusicLoader)
00898 {
00899     /*** IUnknown methods ***/
00900     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00901     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00902     STDMETHOD_(ULONG,Release)(THIS) PURE;
00903     /*** IDirectMusicLoader methods ***/
00904     STDMETHOD(_GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
00905     STDMETHOD(SetObject)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
00906     STDMETHOD(SetSearchDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzPath, BOOL fClear) PURE;
00907     STDMETHOD(ScanDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName) PURE;
00908     STDMETHOD(CacheObject)(THIS_ IDirectMusicObject *pObject) PURE;
00909     STDMETHOD(ReleaseObject)(THIS_ IDirectMusicObject *pObject) PURE;
00910     STDMETHOD(ClearCache)(THIS_ REFGUID rguidClass) PURE;
00911     STDMETHOD(EnableCache)(THIS_ REFGUID rguidClass, BOOL fEnable) PURE;
00912     STDMETHOD(EnumObject)(THIS_ REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc) PURE;
00913     /*** IDirectMusicLoader8 methods ***/
00914     STDMETHOD_(void,CollectGarbage)(THIS) PURE;
00915     STDMETHOD(ReleaseObjectByUnknown)(THIS_ IUnknown *pObject) PURE;
00916     STDMETHOD(LoadObjectFromFile)(THIS_ REFGUID rguidClassID, REFIID iidInterfaceID, WCHAR *pwzFilePath, void **ppObject) PURE;
00917 };
00918 #undef INTERFACE
00919 
00920 #if !defined(__cplusplus) || defined(CINTERFACE)
00921 /*** IUnknown methods ***/
00922 #define IDirectMusicLoader8_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
00923 #define IDirectMusicLoader8_AddRef(p)                     (p)->lpVtbl->AddRef(p)
00924 #define IDirectMusicLoader8_Release(p)                    (p)->lpVtbl->Release(p)
00925 /*** IDirectMusicLoader methods ***/
00926 #define IDirectMusicLoader8_GetObject(p,a,b,c)            (p)->lpVtbl->_GetObject(p,a,b,c)
00927 #define IDirectMusicLoader8_SetObject(p,a)                (p)->lpVtbl->SetObject(p,a)
00928 #define IDirectMusicLoader8_SetSearchDirectory(p,a,b,c)   (p)->lpVtbl->SetSearchDirectory(p,a,b,c)
00929 #define IDirectMusicLoader8_ScanDirectory(p,a,b,c)        (p)->lpVtbl->ScanDirectory(p,a,b,c)
00930 #define IDirectMusicLoader8_CacheObject(p,a)              (p)->lpVtbl->CacheObject(p,a)
00931 #define IDirectMusicLoader8_ReleaseObject(p,a)            (p)->lpVtbl->ReleaseObject(p,a)
00932 #define IDirectMusicLoader8_ClearCache(p,a)               (p)->lpVtbl->ClearCache(p,a)
00933 #define IDirectMusicLoader8_EnableCache(p,a,b)            (p)->lpVtbl->EnableCache(p,a,b)
00934 #define IDirectMusicLoader8_EnumObject(p,a,b,c)           (p)->lpVtbl->EnumObject(p,a,b,c)
00935 /*** IDirectMusicLoader8 methods ***/
00936 #define IDirectMusicLoader8_CollectGarbage(p)             (p)->lpVtbl->CollectGarbage(p)
00937 #define IDirectMusicLoader8_ReleaseObjectByUnknown(p,a)   (p)->lpVtbl->ReleaseObjectByUnknown(p,a)
00938 #define IDirectMusicLoader8_LoadObjectFromFile(p,a,b,c,d) (p)->lpVtbl->LoadObjectFromFile(p,a,b,c,d)
00939 #endif
00940 
00941 
00942 /*****************************************************************************
00943  * IDirectMusicGetLoader interface
00944  */
00945 #define INTERFACE IDirectMusicGetLoader
00946 DECLARE_INTERFACE_(IDirectMusicGetLoader,IUnknown)
00947 {
00948     /*** IUnknown methods ***/
00949     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00950     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00951     STDMETHOD_(ULONG,Release)(THIS) PURE;
00952     /*** IDirectMusicGetLoader methods ***/
00953     STDMETHOD(GetLoader)(THIS_ IDirectMusicLoader **ppLoader) PURE;
00954 };
00955 #undef INTERFACE
00956 
00957 #if !defined(__cplusplus) || defined(CINTERFACE)
00958 /*** IUnknown methods ***/
00959 #define IDirectMusicGetLoader_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00960 #define IDirectMusicGetLoader_AddRef(p)             (p)->lpVtbl->AddRef(p)
00961 #define IDirectMusicGetLoader_Release(p)            (p)->lpVtbl->Release(p)
00962 /*** IDirectMusicGetLoader methods ***/
00963 #define IDirectMusicGetLoader_GetLoader(p,a)        (p)->lpVtbl->GetLoader(p,a)
00964 #endif
00965 
00966 
00967 /*****************************************************************************
00968  * IDirectMusicSegment interface
00969  */
00970 #define INTERFACE IDirectMusicSegment
00971 DECLARE_INTERFACE_(IDirectMusicSegment,IUnknown)
00972 {
00973     /*** IUnknown methods ***/
00974     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00975     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00976     STDMETHOD_(ULONG,Release)(THIS) PURE;
00977     /*** IDirectMusicSegment methods ***/
00978     STDMETHOD(GetLength)(THIS_ MUSIC_TIME *pmtLength) PURE;
00979     STDMETHOD(SetLength)(THIS_ MUSIC_TIME mtLength) PURE;
00980     STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
00981     STDMETHOD(SetRepeats)(THIS_ DWORD dwRepeats) PURE;
00982     STDMETHOD(GetDefaultResolution)(THIS_ DWORD *pdwResolution) PURE;
00983     STDMETHOD(SetDefaultResolution)(THIS_ DWORD dwResolution) PURE;
00984     STDMETHOD(GetTrack)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack **ppTrack) PURE;
00985     STDMETHOD(GetTrackGroup)(THIS_ IDirectMusicTrack *pTrack, DWORD *pdwGroupBits) PURE;
00986     STDMETHOD(InsertTrack)(THIS_ IDirectMusicTrack *pTrack, DWORD dwGroupBits) PURE;
00987     STDMETHOD(RemoveTrack)(THIS_ IDirectMusicTrack *pTrack) PURE;
00988     STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState **ppSegState, struct IDirectMusicPerformance *pPerformance, DWORD  dwFlags) PURE;
00989     STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
00990     STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
00991     STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
00992     STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
00993     STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
00994     STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
00995     STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment **ppSegment) PURE;
00996     STDMETHOD(SetStartPoint)(THIS_ MUSIC_TIME mtStart) PURE;
00997     STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
00998     STDMETHOD(SetLoopPoints)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd) PURE;
00999     STDMETHOD(GetLoopPoints)(THIS_ MUSIC_TIME *pmtStart, MUSIC_TIME *pmtEnd) PURE;
01000     STDMETHOD(SetPChannelsUsed)(THIS_ DWORD dwNumPChannels, DWORD *paPChannels) PURE;
01001 };
01002 #undef INTERFACE
01003 
01004 #if !defined(__cplusplus) || defined(CINTERFACE)
01005 /*** IUnknown methods ***/
01006 #define IDirectMusicSegment_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
01007 #define IDirectMusicSegment_AddRef(p)                   (p)->lpVtbl->AddRef(p)
01008 #define IDirectMusicSegment_Release(p)                  (p)->lpVtbl->Release(p)
01009 /*** IDirectMusicSegment methods ***/
01010 #define IDirectMusicSegment_GetLength(p,a)              (p)->lpVtbl->GetLength(p,a)
01011 #define IDirectMusicSegment_SetLength(p,a)              (p)->lpVtbl->SetLength(p,a)
01012 #define IDirectMusicSegment_GetRepeats(p,a)             (p)->lpVtbl->GetRepeats(p,a)
01013 #define IDirectMusicSegment_SetRepeats(p,a)             (p)->lpVtbl->SetRepeats(p,a)
01014 #define IDirectMusicSegment_GetDefaultResolution(p,a)   (p)->lpVtbl->GetDefaultResolution(p,a)
01015 #define IDirectMusicSegment_SetDefaultResolution(p,a)   (p)->lpVtbl->SetDefaultResolution(p,a)
01016 #define IDirectMusicSegment_GetTrack(p,a,b,c,d)         (p)->lpVtbl->GetTrack(p,a,b,c,d)
01017 #define IDirectMusicSegment_GetTrackGroup(p,a,b)        (p)->lpVtbl->GetTrackGroup(p,a,b)
01018 #define IDirectMusicSegment_InsertTrack(p,a,b)          (p)->lpVtbl->InsertTrack(p,a,b)
01019 #define IDirectMusicSegment_RemoveTrack(p,a)            (p)->lpVtbl->RemoveTrack(p,a)
01020 #define IDirectMusicSegment_InitPlay(p,a,b,c)           (p)->lpVtbl->InitPlay(p,a,b,c)
01021 #define IDirectMusicSegment_GetGraph(p,a)               (p)->lpVtbl->GetGraph(p,a)
01022 #define IDirectMusicSegment_SetGraph(p,a)               (p)->lpVtbl->SetGraph(p,a)
01023 #define IDirectMusicSegment_AddNotificationType(p,a)    (p)->lpVtbl->AddNotificationType(p,a)
01024 #define IDirectMusicSegment_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
01025 #define IDirectMusicSegment_GetParam(p,a,b,c,d,e,f)     (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
01026 #define IDirectMusicSegment_SetParam(p,a,b,c,d,e)       (p)->lpVtbl->SetParam(p,a,b,c,d,e)
01027 #define IDirectMusicSegment_Clone(p,a,b,c)              (p)->lpVtbl->Clone(p,a,b,c)
01028 #define IDirectMusicSegment_SetStartPoint(p,a)          (p)->lpVtbl->SetStartPoint(p,a)
01029 #define IDirectMusicSegment_GetStartPoint(p,a)          (p)->lpVtbl->GetStartPoint(p,a)
01030 #define IDirectMusicSegment_SetLoopPoints(p,a,b)        (p)->lpVtbl->SetLoopPoints(p,a,b)
01031 #define IDirectMusicSegment_GetLoopPoints(p,a,b)        (p)->lpVtbl->GetLoopPoints(p,a,b)
01032 #define IDirectMusicSegment_SetPChannelsUsed(p,a,b)     (p)->lpVtbl->SetPChannelsUsed(p,a,b)
01033 #endif
01034 
01035 
01036 /*****************************************************************************
01037  * IDirectMusicSegment8 interface
01038  */
01039 #define INTERFACE IDirectMusicSegment8
01040 DECLARE_INTERFACE_(IDirectMusicSegment8,IDirectMusicSegment)
01041 {
01042     /*** IUnknown methods ***/
01043     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01044     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01045     STDMETHOD_(ULONG,Release)(THIS) PURE;
01046     /*** IDirectMusicSegment methods ***/
01047     STDMETHOD(GetLength)(THIS_ MUSIC_TIME *pmtLength) PURE;
01048     STDMETHOD(SetLength)(THIS_ MUSIC_TIME mtLength) PURE;
01049     STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
01050     STDMETHOD(SetRepeats)(THIS_ DWORD dwRepeats) PURE;
01051     STDMETHOD(GetDefaultResolution)(THIS_ DWORD *pdwResolution) PURE;
01052     STDMETHOD(SetDefaultResolution)(THIS_ DWORD dwResolution) PURE;
01053     STDMETHOD(GetTrack)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack **ppTrack) PURE;
01054     STDMETHOD(GetTrackGroup)(THIS_ IDirectMusicTrack *pTrack, DWORD *pdwGroupBits) PURE;
01055     STDMETHOD(InsertTrack)(THIS_ IDirectMusicTrack *pTrack, DWORD dwGroupBits) PURE;
01056     STDMETHOD(RemoveTrack)(THIS_ IDirectMusicTrack *pTrack) PURE;
01057     STDMETHOD(InitPlay)(THIS_ struct IDirectMusicSegmentState **ppSegState, struct IDirectMusicPerformance *pPerformance, DWORD  dwFlags) PURE;
01058     STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
01059     STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
01060     STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
01061     STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
01062     STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
01063     STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
01064     STDMETHOD(Clone)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment **ppSegment) PURE;
01065     STDMETHOD(SetStartPoint)(THIS_ MUSIC_TIME mtStart) PURE;
01066     STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
01067     STDMETHOD(SetLoopPoints)(THIS_ MUSIC_TIME mtStart, MUSIC_TIME mtEnd) PURE;
01068     STDMETHOD(GetLoopPoints)(THIS_ MUSIC_TIME *pmtStart, MUSIC_TIME *pmtEnd) PURE;
01069     STDMETHOD(SetPChannelsUsed)(THIS_ DWORD dwNumPChannels, DWORD *paPChannels) PURE;
01070     /*** IDirectMusicSegment8 methods ***/
01071     STDMETHOD(SetTrackConfig)(THIS_ REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) PURE;
01072     STDMETHOD(GetAudioPathConfig)(THIS_ IUnknown **ppAudioPathConfig) PURE;
01073     STDMETHOD(Compose)(THIS_ MUSIC_TIME mtTime, IDirectMusicSegment *pFromSegment, IDirectMusicSegment *pToSegment, IDirectMusicSegment **ppComposedSegment) PURE;
01074     STDMETHOD(Download)(THIS_ IUnknown *pAudioPath) PURE;
01075     STDMETHOD(Unload)(THIS_ IUnknown *pAudioPath) PURE;
01076 };
01077 #undef INTERFACE
01078 
01079 #if !defined(__cplusplus) || defined(CINTERFACE)
01080 /*** IUnknown methods ***/
01081 #define IDirectMusicSegment8_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
01082 #define IDirectMusicSegment8_AddRef(p)                   (p)->lpVtbl->AddRef(p)
01083 #define IDirectMusicSegment8_Release(p)                  (p)->lpVtbl->Release(p)
01084 /*** IDirectMusicSegment methods ***/
01085 #define IDirectMusicSegment8_GetLength(p,a)              (p)->lpVtbl->GetLength(p,a)
01086 #define IDirectMusicSegment8_SetLength(p,a)              (p)->lpVtbl->SetLength(p,a)
01087 #define IDirectMusicSegment8_GetRepeats(p,a)             (p)->lpVtbl->GetRepeats(p,a)
01088 #define IDirectMusicSegment8_SetRepeats(p,a)             (p)->lpVtbl->SetRepeats(p,a)
01089 #define IDirectMusicSegment8_GetDefaultResolution(p,a)   (p)->lpVtbl->GetDefaultResolution(p,a)
01090 #define IDirectMusicSegment8_SetDefaultResolution(p,a)   (p)->lpVtbl->SetDefaultResolution(p,a)
01091 #define IDirectMusicSegment8_GetTrack(p,a,b,c,d)         (p)->lpVtbl->GetTrack(p,a,b,c,d)
01092 #define IDirectMusicSegment8_GetTrackGroup(p,a,b)        (p)->lpVtbl->GetTrackGroup(p,a,b)
01093 #define IDirectMusicSegment8_InsertTrack(p,a,b)          (p)->lpVtbl->InsertTrack(p,a,b)
01094 #define IDirectMusicSegment8_RemoveTrack(p,a)            (p)->lpVtbl->RemoveTrack(p,a)
01095 #define IDirectMusicSegment8_InitPlay(p,a,b,c)           (p)->lpVtbl->InitPlay(p,a,b,c)
01096 #define IDirectMusicSegment8_GetGraph(p,a)               (p)->lpVtbl->GetGraph(p,a)
01097 #define IDirectMusicSegment8_SetGraph(p,a)               (p)->lpVtbl->SetGraph(p,a)
01098 #define IDirectMusicSegment8_AddNotificationType(p,a)    (p)->lpVtbl->AddNotificationType(p,a)
01099 #define IDirectMusicSegment8_RemoveNotificationType(p,a) (p)->lpVtbl->RemoveNotificationType(p,a)
01100 #define IDirectMusicSegment8_GetParam(p,a,b,c,d,e,f)     (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
01101 #define IDirectMusicSegment8_SetParam(p,a,b,c,d,e)       (p)->lpVtbl->SetParam(p,a,b,c,d,e)
01102 #define IDirectMusicSegment8_Clone(p,a,b,c)              (p)->lpVtbl->Clone(p,a,b,c)
01103 #define IDirectMusicSegment8_SetStartPoint(p,a)          (p)->lpVtbl->SetStartPoint(p,a)
01104 #define IDirectMusicSegment8_GetStartPoint(p,a)          (p)->lpVtbl->GetStartPoint(p,a)
01105 #define IDirectMusicSegment8_SetLoopPoints(p,a,b)        (p)->lpVtbl->SetLoopPoints(p,a,b)
01106 #define IDirectMusicSegment8_GetLoopPoints(p,a,b)        (p)->lpVtbl->GetLoopPoints(p,a,b)
01107 #define IDirectMusicSegment8_SetPChannelsUsed(p,a,b)     (p)->lpVtbl->SetPChannelsUsed(p,a,b)
01108 /*** IDirectMusicSegment8 methods ***/
01109 #define IDirectMusicSegment8_SetTrackConfig(p,a,b,c,d,e) (p)->lpVtbl->SetTrackConfig(p,a,b,c,d,e)
01110 #define IDirectMusicSegment8_GetAudioPathConfig(p,a)     (p)->lpVtbl->GetAudioPathConfig(p,a)
01111 #define IDirectMusicSegment8_Compose(p,a,b,c,d)          (p)->lpVtbl->Compose(p,a,b,c,d)
01112 #define IDirectMusicSegment8_Download(p,a)               (p)->lpVtbl->Download(p,a)
01113 #define IDirectMusicSegment8_Unload(p,a)                 (p)->lpVtbl->Unload(p,a)
01114 #endif
01115 
01116 
01117 /*****************************************************************************
01118  * IDirectMusicSegmentState interface
01119  */
01120 #define INTERFACE IDirectMusicSegmentState
01121 DECLARE_INTERFACE_(IDirectMusicSegmentState,IUnknown)
01122 {
01123     /*** IUnknown methods ***/
01124     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01125     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01126     STDMETHOD_(ULONG,Release)(THIS) PURE;
01127     /*** IDirectMusicSegmentState methods ***/
01128     STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
01129     STDMETHOD(GetSegment)(THIS_ IDirectMusicSegment **ppSegment) PURE;
01130     STDMETHOD(GetStartTime)(THIS_ MUSIC_TIME *pmtStart) PURE;
01131     STDMETHOD(GetSeek)(THIS_ MUSIC_TIME *pmtSeek) PURE;
01132     STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
01133 };
01134 #undef INTERFACE
01135 
01136 #if !defined(__cplusplus) || defined(CINTERFACE)
01137 /*** IUnknown methods ***/
01138 #define IDirectMusicSegmentState_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01139 #define IDirectMusicSegmentState_AddRef(p)             (p)->lpVtbl->AddRef(p)
01140 #define IDirectMusicSegmentState_Release(p)            (p)->lpVtbl->Release(p)
01141 /*** IDirectMusicSegmentState methods ***/
01142 #define IDirectMusicSegmentState_GetRepeats(p,a)       (p)->lpVtbl->GetRepeats(p,a)
01143 #define IDirectMusicSegmentState_GetSegment(p,a)       (p)->lpVtbl->GetSegment(p,a)
01144 #define IDirectMusicSegmentState_GetStartTime(p,a)     (p)->lpVtbl->GetStartTime(p,a)
01145 #define IDirectMusicSegmentState_GetSeek(p,a)          (p)->lpVtbl->GetSeek(p,a)
01146 #define IDirectMusicSegmentState_GetStartPoint(p,a)    (p)->lpVtbl->GetStartPoint(p,a)
01147 #endif
01148 
01149 
01150 /*****************************************************************************
01151  * IDirectMusicSegmentState8 interface
01152  */
01153 #define INTERFACE IDirectMusicSegmentState8
01154 DECLARE_INTERFACE_(IDirectMusicSegmentState8,IDirectMusicSegmentState)
01155 {
01156     /*** IUnknown methods ***/
01157     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01158     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01159     STDMETHOD_(ULONG,Release)(THIS) PURE;
01160     /*** IDirectMusicSegmentState methods ***/
01161     STDMETHOD(GetRepeats)(THIS_ DWORD *pdwRepeats) PURE;
01162     STDMETHOD(GetSegment)(THIS_ IDirectMusicSegment **ppSegment) PURE;
01163     STDMETHOD(GetStartTime)(THIS_ MUSIC_TIME *pmtStart) PURE;
01164     STDMETHOD(GetSeek)(THIS_ MUSIC_TIME *pmtSeek) PURE;
01165     STDMETHOD(GetStartPoint)(THIS_ MUSIC_TIME *pmtStart) PURE;
01166     /*** IDirectMusicSegmentState8 methods ***/
01167     STDMETHOD(SetTrackConfig)(THIS_ REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff) PURE;
01168     STDMETHOD(GetObjectInPath)(THIS_ DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void **ppObject) PURE;
01169 };
01170 #undef INTERFACE
01171 
01172 #if !defined(__cplusplus) || defined(CINTERFACE)
01173 /*** IUnknown methods ***/
01174 #define IDirectMusicSegmentState8_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
01175 #define IDirectMusicSegmentState8_AddRef(p)                        (p)->lpVtbl->AddRef(p)
01176 #define IDirectMusicSegmentState8_Release(p)                       (p)->lpVtbl->Release(p)
01177 /*** IDirectMusicSegmentState methods ***/
01178 #define IDirectMusicSegmentState8_GetRepeats(p,a)                  (p)->lpVtbl->GetRepeats(p,a)
01179 #define IDirectMusicSegmentState8_GetSegment(p,a)                  (p)->lpVtbl->GetSegment(p,a)
01180 #define IDirectMusicSegmentState8_GetStartTime(p,a)                (p)->lpVtbl->GetStartTime(p,a)
01181 #define IDirectMusicSegmentState8_GetSeek(p,a)                     (p)->lpVtbl->GetSeek(p,a)
01182 #define IDirectMusicSegmentState8_GetStartPoint(p,a)               (p)->lpVtbl->GetStartPoint(p,a)
01183 /*** IDirectMusicSegmentState8 methods ***/
01184 #define IDirectMusicSegmentState8_SetTrackConfig(p,a,b,c,d,e)      (p)->lpVtbl->SetTrackConfig(p,a,b,c,d,e)
01185 #define IDirectMusicSegmentState8_GetObjectInPath(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d,e,f,g)
01186 #endif
01187 
01188 
01189 /*****************************************************************************
01190  * IDirectMusicAudioPath interface
01191  */
01192 #define INTERFACE IDirectMusicAudioPath
01193 DECLARE_INTERFACE_(IDirectMusicAudioPath,IUnknown)
01194 {
01195     /*** IUnknown methods ***/
01196     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01197     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01198     STDMETHOD_(ULONG,Release)(THIS) PURE;
01199     /*** IDirectMusicAudioPath methods ***/
01200     STDMETHOD(GetObjectInPath)(THIS_ DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, WORD dwIndex, REFGUID iidInterface, void **ppObject) PURE;
01201     STDMETHOD(Activate)(THIS_ BOOL fActivate) PURE;
01202     STDMETHOD(SetVolume)(THIS_ LONG lVolume, DWORD dwDuration) PURE;
01203     STDMETHOD(ConvertPChannel)(THIS_ DWORD dwPChannelIn, DWORD *pdwPChannelOut) PURE;
01204 };
01205 #undef INTERFACE
01206 
01207 #if !defined(__cplusplus) || defined(CINTERFACE)
01208 /*** IUnknown methods ***/
01209 #define IDirectMusicAudioPath_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
01210 #define IDirectMusicAudioPath_AddRef(p)                        (p)->lpVtbl->AddRef(p)
01211 #define IDirectMusicAudioPath_Release(p)                       (p)->lpVtbl->Release(p)
01212 /*** IDirectMusicAudioPath methods ***/
01213 #define IDirectMusicAudioPath_GetObjectInPath(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d,e,f,g)
01214 #define IDirectMusicAudioPath_Activate(p,a)                    (p)->lpVtbl->Activate(p,a)
01215 #define IDirectMusicAudioPath_SetVolume(p,a,b)                 (p)->lpVtbl->SetVolume(p,a,b)
01216 #define IDirectMusicAudioPath_ConvertPChannel(p,a,b)           (p)->lpVtbl->ConvertPChannel(p,a,b)
01217 #endif
01218 
01219 
01220 /*****************************************************************************
01221  * IDirectMusicPerformance interface
01222  */
01223 #define INTERFACE IDirectMusicPerformance
01224 DECLARE_INTERFACE_(IDirectMusicPerformance,IUnknown)
01225 {
01226     /*** IUnknown methods ***/
01227     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01228     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01229     STDMETHOD_(ULONG,Release)(THIS) PURE;
01230     /*** IDirectMusicPerformance methods ***/
01231     STDMETHOD(Init)(THIS_ IDirectMusic **ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
01232     STDMETHOD(PlaySegment)(THIS_ IDirectMusicSegment *pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState) PURE;
01233     STDMETHOD(Stop)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags) PURE;
01234     STDMETHOD(GetSegmentState)(THIS_ IDirectMusicSegmentState **ppSegmentState, MUSIC_TIME mtTime) PURE;
01235     STDMETHOD(SetPrepareTime)(THIS_ DWORD dwMilliSeconds) PURE;
01236     STDMETHOD(GetPrepareTime)(THIS_ DWORD *pdwMilliSeconds) PURE;
01237     STDMETHOD(SetBumperLength)(THIS_ DWORD dwMilliSeconds) PURE;
01238     STDMETHOD(GetBumperLength)(THIS_ DWORD *pdwMilliSeconds) PURE;
01239     STDMETHOD(SendPMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
01240     STDMETHOD(MusicToReferenceTime)(THIS_ MUSIC_TIME mtTime, REFERENCE_TIME *prtTime) PURE;
01241     STDMETHOD(ReferenceToMusicTime)(THIS_ REFERENCE_TIME rtTime, MUSIC_TIME *pmtTime) PURE;
01242     STDMETHOD(IsPlaying)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegState) PURE;
01243     STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *prtNow, MUSIC_TIME *pmtNow) PURE;
01244     STDMETHOD(AllocPMsg)(THIS_ ULONG cb, DMUS_PMSG **ppPMSG) PURE;
01245     STDMETHOD(FreePMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
01246     STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
01247     STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
01248     STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, REFERENCE_TIME rtMinimum) PURE;
01249     STDMETHOD(GetNotificationPMsg)(THIS_ DMUS_NOTIFICATION_PMSG **ppNotificationPMsg) PURE;
01250     STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
01251     STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
01252     STDMETHOD(AddPort)(THIS_ IDirectMusicPort *pPort) PURE;
01253     STDMETHOD(RemovePort)(THIS_ IDirectMusicPort *pPort) PURE;
01254     STDMETHOD(AssignPChannelBlock)(THIS_ DWORD dwBlockNum, IDirectMusicPort *pPort, DWORD dwGroup) PURE;
01255     STDMETHOD(AssignPChannel)(THIS_ DWORD dwPChannel, IDirectMusicPort *pPort, DWORD dwGroup, DWORD dwMChannel) PURE;
01256     STDMETHOD(PChannelInfo)(THIS_ DWORD dwPChannel, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
01257     STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument **ppDownInst, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
01258     STDMETHOD(Invalidate)(THIS_ MUSIC_TIME mtTime, DWORD dwFlags) PURE;
01259     STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
01260     STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
01261     STDMETHOD(GetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
01262     STDMETHOD(SetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
01263     STDMETHOD(GetLatencyTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
01264     STDMETHOD(GetQueueTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
01265     STDMETHOD(AdjustTime)(THIS_ REFERENCE_TIME rtAmount) PURE;
01266     STDMETHOD(CloseDown)(THIS) PURE;
01267     STDMETHOD(GetResolvedTime)(THIS_ REFERENCE_TIME rtTime, REFERENCE_TIME *prtResolved, DWORD dwTimeResolveFlags) PURE;
01268     STDMETHOD(MIDIToMusic)(THIS_ BYTE bMIDIValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, WORD *pwMusicValue) PURE;
01269     STDMETHOD(MusicToMIDI)(THIS_ WORD wMusicValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE *pbMIDIValue) PURE;
01270     STDMETHOD(TimeToRhythm)(THIS_ MUSIC_TIME mtTime, DMUS_TIMESIGNATURE *pTimeSig, WORD *pwMeasure, BYTE *pbBeat, BYTE *pbGrid, short *pnOffset) PURE;
01271     STDMETHOD(RhythmToTime)(THIS_ WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE *pTimeSig, MUSIC_TIME *pmtTime) PURE;
01272 };
01273 #undef INTERFACE
01274 
01275 #if !defined(__cplusplus) || defined(CINTERFACE)
01276 /*** IUnknown methods ***/
01277 #define IDirectMusicPerformance_QueryInterface(p,a,b)                 (p)->lpVtbl->QueryInterface(p,a,b)
01278 #define IDirectMusicPerformance_AddRef(p)                             (p)->lpVtbl->AddRef(p)
01279 #define IDirectMusicPerformance_Release(p)                            (p)->lpVtbl->Release(p)
01280 /*** IDirectMusicPerformance methods ***/
01281 #define IDirectMusicPerformance_Init(p,a,b,c)                         (p)->lpVtbl->Init(p,a,b,c)
01282 #define IDirectMusicPerformance_PlaySegment(p,a,b,c,d)                (p)->lpVtbl->PlaySegment(p,a,b,c,d)
01283 #define IDirectMusicPerformance_Stop(p,a,b,c,d)                       (p)->lpVtbl->Stop(p,a,b,c,d)
01284 #define IDirectMusicPerformance_GetSegmentState(p,a,b)                (p)->lpVtbl->GetSegmentState(p,a,b)
01285 #define IDirectMusicPerformance_SetPrepareTime(p,a)                   (p)->lpVtbl->SetPrepareTime(p,a)
01286 #define IDirectMusicPerformance_GetPrepareTime(p,a)                   (p)->lpVtbl->GetPrepareTime(p,a)
01287 #define IDirectMusicPerformance_SetBumperLength(p,a)                  (p)->lpVtbl->SetBumperLength(p,a)
01288 #define IDirectMusicPerformance_GetBumperLength(p,a)                  (p)->lpVtbl->GetBumperLength(p,a)
01289 #define IDirectMusicPerformance_SendPMsg(p,a)                         (p)->lpVtbl->SendPMsg(p,a)
01290 #define IDirectMusicPerformance_MusicToReferenceTime(p,a,b)           (p)->lpVtbl->MusicToReferenceTime(p,a,b)
01291 #define IDirectMusicPerformance_ReferenceToMusicTime(p,a,b)           (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
01292 #define IDirectMusicPerformance_IsPlaying(p,a,b)                      (p)->lpVtbl->IsPlaying(p,a,b)
01293 #define IDirectMusicPerformance_GetTime(p,a,b)                        (p)->lpVtbl->GetTime(p,a,b)
01294 #define IDirectMusicPerformance_AllocPMsg(p,a,b)                      (p)->lpVtbl->AllocPMsg(p,a,b)
01295 #define IDirectMusicPerformance_FreePMsg(p,a)                         (p)->lpVtbl->FreePMsg(p,a)
01296 #define IDirectMusicPerformance_GetGraph(p,a)                         (p)->lpVtbl->GetGraph(p,a)
01297 #define IDirectMusicPerformance_SetGraph(p,a)                         (p)->lpVtbl->SetGraph(p,a)
01298 #define IDirectMusicPerformance_SetNotificationHandle(p,a,b)          (p)->lpVtbl->SetNotificationHandle(p,a,b)
01299 #define IDirectMusicPerformance_GetNotificationPMsg(p,a)              (p)->lpVtbl->GetNotificationPMsg(p,a)
01300 #define IDirectMusicPerformance_AddNotificationType(p,a)              (p)->lpVtbl->AddNotificationType(p,a)
01301 #define IDirectMusicPerformance_RemoveNotificationType(p,a)           (p)->lpVtbl->RemoveNotificationType(p,a)
01302 #define IDirectMusicPerformance_AddPort(p,a)                          (p)->lpVtbl->AddPort(p,a)
01303 #define IDirectMusicPerformance_RemovePort(p,a)                       (p)->lpVtbl->RemovePort(p,a)
01304 #define IDirectMusicPerformance_AssignPChannelBlock(p,a,b,c)          (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
01305 #define IDirectMusicPerformance_AssignPChannel(p,a,b,c,d)             (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
01306 #define IDirectMusicPerformance_PChannelInfo(p,a,b,c,d)               (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
01307 #define IDirectMusicPerformance_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
01308 #define IDirectMusicPerformance_Invalidate(p,a,b)                     (p)->lpVtbl->Invalidate(p,a,b)
01309 #define IDirectMusicPerformance_GetParam(p,a,b,c,d,e,f)               (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
01310 #define IDirectMusicPerformance_SetParam(p,a,b,c,d,e)                 (p)->lpVtbl->SetParam(p,a,b,c,d,e)
01311 #define IDirectMusicPerformance_GetGlobalParam(p,a,b,c)               (p)->lpVtbl->GetGlobalParam(p,a,b,c)
01312 #define IDirectMusicPerformance_SetGlobalParam(p,a,b,c)               (p)->lpVtbl->SetGlobalParam(p,a,b,c)
01313 #define IDirectMusicPerformance_GetLatencyTime(p,a)                   (p)->lpVtbl->GetLatencyTime(p,a)
01314 #define IDirectMusicPerformance_GetQueueTime(p,a)                     (p)->lpVtbl->GetQueueTime(p,a)
01315 #define IDirectMusicPerformance_AdjustTime(p,a)                       (p)->lpVtbl->AdjustTime(p,a)
01316 #define IDirectMusicPerformance_CloseDown(p)                          (p)->lpVtbl->CloseDown(p)
01317 #define IDirectMusicPerformance_GetResolvedTime(p,a,b,c)              (p)->lpVtbl->GetResolvedTime(p,a,b,c)
01318 #define IDirectMusicPerformance_MIDIToMusic(p,a,b,c,d,e)              (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
01319 #define IDirectMusicPerformance_MusicToMIDI(p,a,b,c,d,e)              (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
01320 #define IDirectMusicPerformance_TimeToRhythm(p,a,b,c,d,e,f)           (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
01321 #define IDirectMusicPerformance_RhythmToTime(p,a,b,c,d,e,f)           (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
01322 #endif
01323 
01324 
01325 /*****************************************************************************
01326  * IDirectMusicPerformance8 interface
01327  */
01328 #define INTERFACE IDirectMusicPerformance8
01329 DECLARE_INTERFACE_(IDirectMusicPerformance8,IDirectMusicPerformance)
01330 {
01331     /*** IUnknown methods ***/
01332     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01333     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01334     STDMETHOD_(ULONG,Release)(THIS) PURE;
01335     /*** IDirectMusicPerformance methods ***/
01336     STDMETHOD(Init)(THIS_ IDirectMusic **ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd) PURE;
01337     STDMETHOD(PlaySegment)(THIS_ IDirectMusicSegment *pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState) PURE;
01338     STDMETHOD(Stop)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags) PURE;
01339     STDMETHOD(GetSegmentState)(THIS_ IDirectMusicSegmentState **ppSegmentState, MUSIC_TIME mtTime) PURE;
01340     STDMETHOD(SetPrepareTime)(THIS_ DWORD dwMilliSeconds) PURE;
01341     STDMETHOD(GetPrepareTime)(THIS_ DWORD *pdwMilliSeconds) PURE;
01342     STDMETHOD(SetBumperLength)(THIS_ DWORD dwMilliSeconds) PURE;
01343     STDMETHOD(GetBumperLength)(THIS_ DWORD *pdwMilliSeconds) PURE;
01344     STDMETHOD(SendPMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
01345     STDMETHOD(MusicToReferenceTime)(THIS_ MUSIC_TIME mtTime, REFERENCE_TIME *prtTime) PURE;
01346     STDMETHOD(ReferenceToMusicTime)(THIS_ REFERENCE_TIME rtTime, MUSIC_TIME *pmtTime) PURE;
01347     STDMETHOD(IsPlaying)(THIS_ IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegState) PURE;
01348     STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *prtNow, MUSIC_TIME *pmtNow) PURE;
01349     STDMETHOD(AllocPMsg)(THIS_ ULONG cb, DMUS_PMSG **ppPMSG) PURE;
01350     STDMETHOD(FreePMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
01351     STDMETHOD(GetGraph)(THIS_ struct IDirectMusicGraph **ppGraph) PURE;
01352     STDMETHOD(SetGraph)(THIS_ struct IDirectMusicGraph *pGraph) PURE;
01353     STDMETHOD(SetNotificationHandle)(THIS_ HANDLE hNotification, REFERENCE_TIME rtMinimum) PURE;
01354     STDMETHOD(GetNotificationPMsg)(THIS_ DMUS_NOTIFICATION_PMSG **ppNotificationPMsg) PURE;
01355     STDMETHOD(AddNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
01356     STDMETHOD(RemoveNotificationType)(THIS_ REFGUID rguidNotificationType) PURE;
01357     STDMETHOD(AddPort)(THIS_ IDirectMusicPort *pPort) PURE;
01358     STDMETHOD(RemovePort)(THIS_ IDirectMusicPort *pPort) PURE;
01359     STDMETHOD(AssignPChannelBlock)(THIS_ DWORD dwBlockNum, IDirectMusicPort *pPort, DWORD dwGroup) PURE;
01360     STDMETHOD(AssignPChannel)(THIS_ DWORD dwPChannel, IDirectMusicPort *pPort, DWORD dwGroup, DWORD dwMChannel) PURE;
01361     STDMETHOD(PChannelInfo)(THIS_ DWORD dwPChannel, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
01362     STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument **ppDownInst, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel) PURE;
01363     STDMETHOD(Invalidate)(THIS_ MUSIC_TIME mtTime, DWORD dwFlags) PURE;
01364     STDMETHOD(GetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
01365     STDMETHOD(SetParam)(THIS_ REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam) PURE;
01366     STDMETHOD(GetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
01367     STDMETHOD(SetGlobalParam)(THIS_ REFGUID rguidType, void *pParam, DWORD dwSize) PURE;
01368     STDMETHOD(GetLatencyTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
01369     STDMETHOD(GetQueueTime)(THIS_ REFERENCE_TIME *prtTime) PURE;
01370     STDMETHOD(AdjustTime)(THIS_ REFERENCE_TIME rtAmount) PURE;
01371     STDMETHOD(CloseDown)(THIS) PURE;
01372     STDMETHOD(GetResolvedTime)(THIS_ REFERENCE_TIME rtTime, REFERENCE_TIME *prtResolved, DWORD dwTimeResolveFlags) PURE;
01373     STDMETHOD(MIDIToMusic)(THIS_ BYTE bMIDIValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, WORD *pwMusicValue) PURE;
01374     STDMETHOD(MusicToMIDI)(THIS_ WORD wMusicValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE *pbMIDIValue) PURE;
01375     STDMETHOD(TimeToRhythm)(THIS_ MUSIC_TIME mtTime, DMUS_TIMESIGNATURE *pTimeSig, WORD *pwMeasure, BYTE *pbBeat, BYTE *pbGrid, short *pnOffset) PURE;
01376     STDMETHOD(RhythmToTime)(THIS_ WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE *pTimeSig, MUSIC_TIME *pmtTime) PURE;
01377     /*** IDirectMusicPerformance8 methods ***/
01378     STDMETHOD(InitAudio)(THIS_ IDirectMusic **ppDirectMusic, IDirectSound **ppDirectSound, HWND hWnd, DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS *pParams) PURE;
01379     STDMETHOD(PlaySegmentEx)(THIS_ IUnknown *pSource, WCHAR *pwzSegmentName, IUnknown *pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState, IUnknown *pFrom, IUnknown *pAudioPath) PURE;
01380     STDMETHOD(StopEx)(THIS_ IUnknown *pObjectToStop, __int64 i64StopTime, DWORD dwFlags) PURE;
01381     STDMETHOD(ClonePMsg)(THIS_ DMUS_PMSG *pSourcePMSG, DMUS_PMSG **ppCopyPMSG) PURE;
01382     STDMETHOD(CreateAudioPath)(THIS_ IUnknown *pSourceConfig, BOOL fActivate, IDirectMusicAudioPath **ppNewPath) PURE;
01383     STDMETHOD(CreateStandardAudioPath)(THIS_ DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath **ppNewPath) PURE;
01384     STDMETHOD(SetDefaultAudioPath)(THIS_ IDirectMusicAudioPath *pAudioPath) PURE;
01385     STDMETHOD(GetDefaultAudioPath)(THIS_ IDirectMusicAudioPath **ppAudioPath) PURE;
01386     STDMETHOD(GetParamEx)(THIS_ REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME *pmtNext, void *pParam) PURE;
01387 };
01388 #undef INTERFACE
01389 
01390 #if !defined(__cplusplus) || defined(CINTERFACE)
01391 /*** IUnknown methods ***/
01392 #define IDirectMusicPerformance8_QueryInterface(p,a,b)                 (p)->lpVtbl->QueryInterface(p,a,b)
01393 #define IDirectMusicPerformance8_AddRef(p)                             (p)->lpVtbl->AddRef(p)
01394 #define IDirectMusicPerformance8_Release(p)                            (p)->lpVtbl->Release(p)
01395 /*** IDirectMusicPerformance methods ***/
01396 #define IDirectMusicPerformance8_Init(p,a,b,c)                         (p)->lpVtbl->Init(p,a,b,c)
01397 #define IDirectMusicPerformance8_PlaySegment(p,a,b,c,d)                (p)->lpVtbl->PlaySegment(p,a,b,c,d)
01398 #define IDirectMusicPerformance8_Stop(p,a,b,c,d)                       (p)->lpVtbl->Stop(p,a,b,c,d)
01399 #define IDirectMusicPerformance8_GetSegmentState(p,a,b)                (p)->lpVtbl->GetSegmentState(p,a,b)
01400 #define IDirectMusicPerformance8_SetPrepareTime(p,a)                   (p)->lpVtbl->SetPrepareTime(p,a)
01401 #define IDirectMusicPerformance8_GetPrepareTime(p,a)                   (p)->lpVtbl->GetPrepareTime(p,a)
01402 #define IDirectMusicPerformance8_SetBumperLength(p,a)                  (p)->lpVtbl->SetBumperLength(p,a)
01403 #define IDirectMusicPerformance8_GetBumperLength(p,a)                  (p)->lpVtbl->GetBumperLength(p,a)
01404 #define IDirectMusicPerformance8_SendPMsg(p,a)                         (p)->lpVtbl->SendPMsg(p,a)
01405 #define IDirectMusicPerformance8_MusicToReferenceTime(p,a,b)           (p)->lpVtbl->MusicToReferenceTime(p,a,b)
01406 #define IDirectMusicPerformance8_ReferenceToMusicTime(p,a,b)           (p)->lpVtbl->ReferenceToMusicTime(p,a,b)
01407 #define IDirectMusicPerformance8_IsPlaying(p,a,b)                      (p)->lpVtbl->IsPlaying(p,a,b)
01408 #define IDirectMusicPerformance8_GetTime(p,a,b)                        (p)->lpVtbl->GetTime(p,a,b)
01409 #define IDirectMusicPerformance8_AllocPMsg(p,a,b)                      (p)->lpVtbl->AllocPMsg(p,a,b)
01410 #define IDirectMusicPerformance8_FreePMsg(p,a)                         (p)->lpVtbl->FreePMsg(p,a)
01411 #define IDirectMusicPerformance8_GetGraph(p,a)                         (p)->lpVtbl->GetGraph(p,a)
01412 #define IDirectMusicPerformance8_SetGraph(p,a)                         (p)->lpVtbl->SetGraph(p,a)
01413 #define IDirectMusicPerformance8_SetNotificationHandle(p,a,b)          (p)->lpVtbl->SetNotificationHandle(p,a,b)
01414 #define IDirectMusicPerformance8_GetNotificationPMsg(p,a)              (p)->lpVtbl->GetNotificationPMsg(p,a)
01415 #define IDirectMusicPerformance8_AddNotificationType(p,a)              (p)->lpVtbl->AddNotificationType(p,a)
01416 #define IDirectMusicPerformance8_RemoveNotificationType(p,a)           (p)->lpVtbl->RemoveNotificationType(p,a)
01417 #define IDirectMusicPerformance8_AddPort(p,a)                          (p)->lpVtbl->AddPort(p,a)
01418 #define IDirectMusicPerformance8_RemovePort(p,a)                       (p)->lpVtbl->RemovePort(p,a)
01419 #define IDirectMusicPerformance8_AssignPChannelBlock(p,a,b,c)          (p)->lpVtbl->AssignPChannelBlock(p,a,b,c)
01420 #define IDirectMusicPerformance8_AssignPChannel(p,a,b,c,d)             (p)->lpVtbl->AssignPChannel(p,a,b,c,d)
01421 #define IDirectMusicPerformance8_PChannelInfo(p,a,b,c,d)               (p)->lpVtbl->PChannelInfo(p,a,b,c,d)
01422 #define IDirectMusicPerformance8_DownloadInstrument(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d,e,f,g,h)
01423 #define IDirectMusicPerformance8_Invalidate(p,a,b)                     (p)->lpVtbl->Invalidate(p,a,b)
01424 #define IDirectMusicPerformance8_GetParam(p,a,b,c,d,e,f)               (p)->lpVtbl->GetParam(p,a,b,c,d,e,f)
01425 #define IDirectMusicPerformance8_SetParam(p,a,b,c,d,e)                 (p)->lpVtbl->SetParam(p,a,b,c,d,e)
01426 #define IDirectMusicPerformance8_GetGlobalParam(p,a,b,c)               (p)->lpVtbl->GetGlobalParam(p,a,b,c)
01427 #define IDirectMusicPerformance8_SetGlobalParam(p,a,b,c)               (p)->lpVtbl->SetGlobalParam(p,a,b,c)
01428 #define IDirectMusicPerformance8_GetLatencyTime(p,a)                   (p)->lpVtbl->GetLatencyTime(p,a)
01429 #define IDirectMusicPerformance8_GetQueueTime(p,a)                     (p)->lpVtbl->GetQueueTime(p,a)
01430 #define IDirectMusicPerformance8_AdjustTime(p,a)                       (p)->lpVtbl->AdjustTime(p,a)
01431 #define IDirectMusicPerformance8_CloseDown(p)                          (p)->lpVtbl->CloseDown(p)
01432 #define IDirectMusicPerformance8_GetResolvedTime(p,a,b,c)              (p)->lpVtbl->GetResolvedTime(p,a,b,c)
01433 #define IDirectMusicPerformance8_MIDIToMusic(p,a,b,c,d,e)              (p)->lpVtbl->MIDIToMusic(p,a,b,c,d,e)
01434 #define IDirectMusicPerformance8_MusicToMIDI(p,a,b,c,d,e)              (p)->lpVtbl->MusicToMIDI(p,a,b,c,d,e)
01435 #define IDirectMusicPerformance8_TimeToRhythm(p,a,b,c,d,e,f)           (p)->lpVtbl->TimeToRhythm(p,a,b,c,d,e,f)
01436 #define IDirectMusicPerformance8_RhythmToTime(p,a,b,c,d,e,f)           (p)->lpVtbl->RhythmToTime(p,a,b,c,d,e,f)
01437     /*  IDirectMusicPerformance8 methods*/
01438 #define IDirectMusicPerformance8_InitAudio(p,a,b,c,d,e,f,g)            (p)->lpVtbl->InitAudio(p,a,b,c,d,e,f,g)
01439 #define IDirectMusicPerformance8_PlaySegmentEx(p,a,b,c,d,e,f,g,h)      (p)->lpVtbl->PlaySegmentEx(p,a,b,c,d,e,f,g,h)
01440 #define IDirectMusicPerformance8_StopEx(p,a,b,c)                       (p)->lpVtbl->StopEx(p,a,b,c)
01441 #define IDirectMusicPerformance8_ClonePMsg(p,a,b)                      (p)->lpVtbl->ClonePMsg(p,a,b)
01442 #define IDirectMusicPerformance8_CreateAudioPath(p,a,b,c)              (p)->lpVtbl->CreateAudioPath(p,a,b,c)
01443 #define IDirectMusicPerformance8_CreateStandardAudioPath(p,a,b,c,d)    (p)->lpVtbl->CreateStandardAudioPath(p,a,b,c,d)
01444 #define IDirectMusicPerformance8_SetDefaultAudioPath(p,a)              (p)->lpVtbl->SetDefaultAudioPath(p,a)
01445 #define IDirectMusicPerformance8_GetDefaultAudioPath(p,a)              (p)->lpVtbl->GetDefaultAudioPath(p,a)
01446 #define IDirectMusicPerformance8_GetParamEx(p,a,b,c,d,e,f,g)           (p)->lpVtbl->GetParamEx(p,a,b,c,d,e,f,g)
01447 #endif
01448 
01449 
01450 /*****************************************************************************
01451  * IDirectMusicGraph interface
01452  */
01453 #define INTERFACE IDirectMusicGraph
01454 DECLARE_INTERFACE_(IDirectMusicGraph,IUnknown)
01455 {
01456     /*** IUnknown methods ***/
01457     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01458     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01459     STDMETHOD_(ULONG,Release)(THIS) PURE;
01460     /*** IDirectMusicGraph methods ***/
01461     STDMETHOD(StampPMsg)(THIS_ DMUS_PMSG *pPMSG) PURE;
01462     STDMETHOD(InsertTool)(THIS_ IDirectMusicTool *pTool, DWORD *pdwPChannels, DWORD cPChannels, LONG lIndex) PURE;
01463     STDMETHOD(GetTool)(THIS_ DWORD dwIndex, IDirectMusicTool **ppTool) PURE;
01464     STDMETHOD(RemoveTool)(THIS_ IDirectMusicTool *pTool) PURE;
01465 };
01466 #undef INTERFACE
01467 
01468 #if !defined(__cplusplus) || defined(CINTERFACE)
01469 /*** IUnknown methods ***/
01470 #define IDirectMusicGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01471 #define IDirectMusicGraph_AddRef(p)             (p)->lpVtbl->AddRef(p)
01472 #define IDirectMusicGraph_Release(p)            (p)->lpVtbl->Release(p)
01473 /*** IDirectMusicGraph methods ***/
01474 #define IDirectMusicGraph_StampPMsg(p,a)        (p)->lpVtbl->StampPMsg(p,a)
01475 #define IDirectMusicGraph_InsertTool(p,a,b,c,d) (p)->lpVtbl->InsertTool(p,a,b,c,d)
01476 #define IDirectMusicGraph_GetTool(p,a,b)        (p)->lpVtbl->GetTool(p,a,b)
01477 #define IDirectMusicGraph_RemoveTool(p,a)       (p)->lpVtbl->RemoveTool(p,a)
01478 #endif
01479 
01480 
01481 /*****************************************************************************
01482  * IDirectMusicStyle interface
01483  */
01484 #define INTERFACE IDirectMusicStyle
01485 DECLARE_INTERFACE_(IDirectMusicStyle,IUnknown)
01486 {
01487     /*** IUnknown methods ***/
01488     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01489     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01490     STDMETHOD_(ULONG,Release)(THIS) PURE;
01491     /*** IDirectMusicStyle methods ***/
01492     STDMETHOD(GetBand)(THIS_ WCHAR *pwszName, IDirectMusicBand **ppBand) PURE;
01493     STDMETHOD(EnumBand)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01494     STDMETHOD(GetDefaultBand)(THIS_ IDirectMusicBand **ppBand) PURE;
01495     STDMETHOD(EnumMotif)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01496     STDMETHOD(GetMotif)(THIS_ WCHAR *pwszName, IDirectMusicSegment **ppSegment) PURE;
01497     STDMETHOD(GetDefaultChordMap)(THIS_ struct IDirectMusicChordMap **ppChordMap) PURE;
01498     STDMETHOD(EnumChordMap)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01499     STDMETHOD(GetChordMap)(THIS_ WCHAR *pwszName, struct IDirectMusicChordMap **ppChordMap) PURE;
01500     STDMETHOD(GetTimeSignature)(THIS_ DMUS_TIMESIGNATURE *pTimeSig) PURE;
01501     STDMETHOD(GetEmbellishmentLength)(THIS_ DWORD dwType, DWORD dwLevel, DWORD *pdwMin, DWORD *pdwMax) PURE;
01502     STDMETHOD(GetTempo)(THIS_ double *pTempo) PURE;
01503 };
01504 #undef INTERFACE
01505 
01506 #if !defined(__cplusplus) || defined(CINTERFACE)
01507 /*** IUnknown methods ***/
01508 #define IDirectMusicStyle_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
01509 #define IDirectMusicStyle_AddRef(p)                         (p)->lpVtbl->AddRef(p)
01510 #define IDirectMusicStyle_Release(p)                        (p)->lpVtbl->Release(p)
01511 /*** IDirectMusicStyle methods ***/
01512 #define IDirectMusicStyle_GetBand(p,a,b)                    (p)->lpVtbl->GetBand(p,a,b)
01513 #define IDirectMusicStyle_EnumBand(p,a,b)                   (p)->lpVtbl->EnumBand(p,a,b)
01514 #define IDirectMusicStyle_GetDefaultBand(p,a)               (p)->lpVtbl->GetDefaultBand(p,a)
01515 #define IDirectMusicStyle_EnumMotif(p,a,b)                  (p)->lpVtbl->EnumMotif(p,a,b)
01516 #define IDirectMusicStyle_GetMotif(p,a,b)                   (p)->lpVtbl->GetMotif(p,a,b)
01517 #define IDirectMusicStyle_GetDefaultChordMap(p,a)           (p)->lpVtbl->GetDefaultChordMap(p,a)
01518 #define IDirectMusicStyle_EnumChordMap(p,a,b)               (p)->lpVtbl->EnumChordMap(p,a,b)
01519 #define IDirectMusicStyle_GetChordMap(p,a,b)                (p)->lpVtbl->GetChordMap(p,a,b)
01520 #define IDirectMusicStyle_GetTimeSignature(p,a)             (p)->lpVtbl->GetTimeSignature(p,a)
01521 #define IDirectMusicStyle_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
01522 #define IDirectMusicStyle_GetTempo(p,a)                     (p)->lpVtbl->GetTempo(p,a)
01523 #endif
01524 
01525 
01526 /*****************************************************************************
01527  * IDirectMusicStyle8 interface
01528  */
01529 #define INTERFACE IDirectMusicStyle8
01530 DECLARE_INTERFACE_(IDirectMusicStyle8,IDirectMusicStyle)
01531 {
01532     /*** IUnknown methods ***/
01533     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01534     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01535     STDMETHOD_(ULONG,Release)(THIS) PURE;
01536     /*** IDirectMusicStyle methods ***/
01537     STDMETHOD(GetBand)(THIS_ WCHAR *pwszName, IDirectMusicBand **ppBand) PURE;
01538     STDMETHOD(EnumBand)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01539     STDMETHOD(GetDefaultBand)(THIS_ IDirectMusicBand **ppBand) PURE;
01540     STDMETHOD(EnumMotif)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01541     STDMETHOD(GetMotif)(THIS_ WCHAR *pwszName, IDirectMusicSegment **ppSegment) PURE;
01542     STDMETHOD(GetDefaultChordMap)(THIS_ struct IDirectMusicChordMap **ppChordMap) PURE;
01543     STDMETHOD(EnumChordMap)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01544     STDMETHOD(GetChordMap)(THIS_ WCHAR *pwszName, struct IDirectMusicChordMap **ppChordMap) PURE;
01545     STDMETHOD(GetTimeSignature)(THIS_ DMUS_TIMESIGNATURE *pTimeSig) PURE;
01546     STDMETHOD(GetEmbellishmentLength)(THIS_ DWORD dwType, DWORD dwLevel, DWORD *pdwMin, DWORD *pdwMax) PURE;
01547     STDMETHOD(GetTempo)(THIS_ double *pTempo) PURE;
01548     /*** IDirectMusicStyle8 methods ***/
01549     STDMETHOD(EnumPattern)(THIS_ DWORD dwIndex, DWORD dwPatternType, WCHAR *pwszName) PURE;
01550 };
01551 #undef INTERFACE
01552 
01553 #if !defined(__cplusplus) || defined(CINTERFACE)
01554 /*** IUnknown methods ***/
01555 #define IDirectMusicStyle8_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
01556 #define IDirectMusicStyle8_AddRef(p)                         (p)->lpVtbl->AddRef(p)
01557 #define IDirectMusicStyle8_Release(p)                        (p)->lpVtbl->Release(p)
01558 /*** IDirectMusicStyle methods ***/
01559 #define IDirectMusicStyle8_GetBand(p,a,b)                    (p)->lpVtbl->GetBand(p,a,b)
01560 #define IDirectMusicStyle8_EnumBand(p,a,b)                   (p)->lpVtbl->EnumBand(p,a,b)
01561 #define IDirectMusicStyle8_GetDefaultBand(p,a)               (p)->lpVtbl->GetDefaultBand(p,a)
01562 #define IDirectMusicStyle8_EnumMotif(p,a,b)                  (p)->lpVtbl->EnumMotif(p,a,b)
01563 #define IDirectMusicStyle8_GetMotif(p,a,b)                   (p)->lpVtbl->GetMotif(p,a,b)
01564 #define IDirectMusicStyle8_GetDefaultChordMap(p,a)           (p)->lpVtbl->GetDefaultChordMap(p,a)
01565 #define IDirectMusicStyle8_EnumChordMap(p,a,b)               (p)->lpVtbl->EnumChordMap(p,a,b)
01566 #define IDirectMusicStyle8_GetChordMap(p,a,b)                (p)->lpVtbl->GetChordMap(p,a,b)
01567 #define IDirectMusicStyle8_GetTimeSignature(p,a)             (p)->lpVtbl->GetTimeSignature(p,a)
01568 #define IDirectMusicStyle8_GetEmbellishmentLength(p,a,b,c,d) (p)->lpVtbl->GetEmbellishmentLength(p,a,b,c,d)
01569 #define IDirectMusicStyle8_GetTempo(p,a)                     (p)->lpVtbl->GetTempo(p,a)
01570 /*** IDirectMusicStyle8 methods ***/
01571 #define IDirectMusicStyle8_EnumPattern(p,a,b,c)              (p)->lpVtbl->EnumPattern(p,a,b,c)
01572 #endif
01573 
01574 
01575 /*****************************************************************************
01576  * IDirectMusicChordMap interface
01577  */
01578 #define INTERFACE IDirectMusicChordMap
01579 DECLARE_INTERFACE_(IDirectMusicChordMap,IUnknown)
01580 {
01581     /*** IUnknown methods ***/
01582     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01583     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01584     STDMETHOD_(ULONG,Release)(THIS) PURE;
01585     /*** IDirectMusicChordMap methods ***/
01586     STDMETHOD(GetScale)(THIS_ DWORD *pdwScale) PURE;
01587 };
01588 #undef INTERFACE
01589 
01590 #if !defined(__cplusplus) || defined(CINTERFACE)
01591 /*** IUnknown methods ***/
01592 #define IDirectMusicChordMap_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01593 #define IDirectMusicChordMap_AddRef(p)             (p)->lpVtbl->AddRef(p)
01594 #define IDirectMusicChordMap_Release(p)            (p)->lpVtbl->Release(p)
01595 /*** IDirectMusicChordMap methods ***/
01596 #define IDirectMusicChordMap_GetScale(p,a)         (p)->lpVtbl->GetScale(p,a)
01597 #endif
01598 
01599 
01600 /*****************************************************************************
01601  * IDirectMusicComposer interface
01602  */
01603 #define INTERFACE IDirectMusicComposer
01604 DECLARE_INTERFACE_(IDirectMusicComposer,IUnknown)
01605 {
01606     /*** IUnknown methods ***/
01607     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01608     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01609     STDMETHOD_(ULONG,Release)(THIS) PURE;
01610     /*** IDirectMusicComposer methods ***/
01611     STDMETHOD(ComposeSegmentFromTemplate)(THIS_ IDirectMusicStyle *pStyle, IDirectMusicSegment *pTemplate, WORD wActivity, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppSegment) PURE;
01612     STDMETHOD(ComposeSegmentFromShape)(THIS_ IDirectMusicStyle *pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppSegment) PURE;
01613     STDMETHOD(ComposeTransition)(THIS_ IDirectMusicSegment *pFromSeg, IDirectMusicSegment *pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg) PURE;
01614     STDMETHOD(AutoTransition)(THIS_ IDirectMusicPerformance *pPerformance, IDirectMusicSegment *pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg, IDirectMusicSegmentState **ppToSegState, IDirectMusicSegmentState **ppTransSegState) PURE;
01615     STDMETHOD(ComposeTemplateFromShape)(THIS_ WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment **ppTemplate) PURE;
01616     STDMETHOD(ChangeChordMap)(THIS_ IDirectMusicSegment *pSegment, BOOL fTrackScale, IDirectMusicChordMap *pChordMap) PURE;
01617 };
01618 #undef INTERFACE
01619 
01620 #if !defined(__cplusplus) || defined(CINTERFACE)
01621 /*** IUnknown methods ***/
01622 #define IDirectMusicComposer_QueryInterface(p,a,b)                      (p)->lpVtbl->QueryInterface(p,a,b)
01623 #define IDirectMusicComposer_AddRef(p)                                  (p)->lpVtbl->AddRef(p)
01624 #define IDirectMusicComposer_Release(p)                                 (p)->lpVtbl->Release(p)
01625 /*** IDirectMusicComposer methods ***/
01626 #define IDirectMusicComposer_ComposeSegmentFromTemplate(p,a,b,c,d,e)    (p)->lpVtbl->ComposeSegmentFromTemplate(p,a,b,c,d,e)
01627 #define IDirectMusicComposer_ComposeSegmentFromShape(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->ComposeSegmentFromShape(p,a,b,c,d,e,f,g,h)
01628 #define IDirectMusicComposer_ComposeTransition(p,a,b,c,d,e,f,g)         (p)->lpVtbl->ComposeTransition(p,a,b,c,d,e,f,g)
01629 #define IDirectMusicComposer_AutoTransition(p,a,b,c,d,e,f,g,h)          (p)->lpVtbl->AutoTransition(p,a,b,c,d,e,f,g,h)
01630 #define IDirectMusicComposer_ComposeTemplateFromShape(p,a,b,c,d,e,f)    (p)->lpVtbl->ComposeTemplateFromShape(p,a,b,c,d,e,f)
01631 #define IDirectMusicComposer_ChangeChordMap(p,a,b,c)                    (p)->lpVtbl->ChangeChordMap(p,a,b,c)
01632 #endif
01633 
01634 
01635 /*****************************************************************************
01636  * IDirectMusicPatternTrack interface
01637  */
01638 #define INTERFACE IDirectMusicPatternTrack
01639 DECLARE_INTERFACE_(IDirectMusicPatternTrack,IUnknown)
01640 {
01641     /*** IUnknown methods ***/
01642     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01643     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01644     STDMETHOD_(ULONG,Release)(THIS) PURE;
01645     /*** IDirectMusicPatternTrack methods ***/
01646     STDMETHOD(CreateSegment)(THIS_ IDirectMusicStyle *pStyle, IDirectMusicSegment **ppSegment) PURE;
01647     STDMETHOD(SetVariation)(THIS_ IDirectMusicSegmentState *pSegState, DWORD dwVariationFlags, DWORD dwPart) PURE;
01648     STDMETHOD(SetPatternByName)(THIS_ IDirectMusicSegmentState *pSegState, WCHAR *wszName, IDirectMusicStyle *pStyle, DWORD dwPatternType, DWORD *pdwLength) PURE;
01649 };
01650 #undef INTERFACE
01651 
01652 #if !defined(__cplusplus) || defined(CINTERFACE)
01653 /*** IUnknown methods ***/
01654 #define IDirectMusicPatternTrack_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
01655 #define IDirectMusicPatternTrack_AddRef(p)                     (p)->lpVtbl->AddRef(p)
01656 #define IDirectMusicPatternTrack_Release(p)                    (p)->lpVtbl->Release(p)
01657 /*** IDirectMusicPatternTrack methods ***/
01658 #define IDirectMusicPatternTrack_CreateSegment(p,a,b)          (p)->lpVtbl->CreateSegment(p,a,b)
01659 #define IDirectMusicPatternTrack_SetVariation(p,a,b,c)         (p)->lpVtbl->SetVariation(p,a,b,c)
01660 #define IDirectMusicPatternTrack_SetPatternByName(p,a,b,c,d,e) (p)->lpVtbl->SetPatternByName(p,a,b,c,d,e)
01661 #endif
01662 
01663 
01664 /*****************************************************************************
01665  * IDirectMusicScript interface
01666  */
01667 #define INTERFACE IDirectMusicScript
01668 DECLARE_INTERFACE_(IDirectMusicScript,IUnknown)
01669 {
01670     /*** IUnknown methods ***/
01671     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01672     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01673     STDMETHOD_(ULONG,Release)(THIS) PURE;
01674     /*** IDirectMusicScript methods ***/
01675     STDMETHOD(Init)(THIS_ IDirectMusicPerformance *pPerformance, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01676     STDMETHOD(CallRoutine)(THIS_ WCHAR *pwszRoutineName, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01677     STDMETHOD(SetVariableVariant)(THIS_ WCHAR *pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01678     STDMETHOD(GetVariableVariant)(THIS_ WCHAR *pwszVariableName, VARIANT *pvarValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01679     STDMETHOD(SetVariableNumber)(THIS_ WCHAR *pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01680     STDMETHOD(GetVariableNumber)(THIS_ WCHAR *pwszVariableName, LONG *plValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01681     STDMETHOD(SetVariableObject)(THIS_ WCHAR *pwszVariableName, IUnknown *punkValue, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01682     STDMETHOD(GetVariableObject)(THIS_ WCHAR *pwszVariableName, REFIID riid, LPVOID *ppv, DMUS_SCRIPT_ERRORINFO *pErrorInfo) PURE;
01683     STDMETHOD(EnumRoutine)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01684     STDMETHOD(EnumVariable)(THIS_ DWORD dwIndex, WCHAR *pwszName) PURE;
01685 };
01686 #undef INTERFACE
01687 
01688 #if !defined(__cplusplus) || defined(CINTERFACE)
01689 /*** IUnknown methods ***/
01690 #define IDirectMusicScript_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
01691 #define IDirectMusicScript_AddRef(p)                           (p)->lpVtbl->AddRef(p)
01692 #define IDirectMusicScript_Release(p)                          (p)->lpVtbl->Release(p)
01693 /*** IDirectMusicScript methods ***/
01694 #define IDirectMusicPatternTrack_Init(p,a,b)                   (p)->lpVtbl->Init(p,a,b)
01695 #define IDirectMusicPatternTrack_CallRoutine(p,a,b)            (p)->lpVtbl->CallRoutine(p,a,b)
01696 #define IDirectMusicPatternTrack_SetVariableVariant(p,a,b,c,d) (p)->lpVtbl->SetVariableVariant(p,a,b,c,d)
01697 #define IDirectMusicPatternTrack_GetVariableVariant(p,a,b,c)   (p)->lpVtbl->GetVariableVariant(p,a,b,c)
01698 #define IDirectMusicPatternTrack_SetVariableNumber(p,a,b,c)    (p)->lpVtbl->SetVariableNumber(p,a,b,c)
01699 #define IDirectMusicPatternTrack_GetVariableNumber(p,a,b,c)    (p)->lpVtbl->GetVariableNumber(p,a,b,c)
01700 #define IDirectMusicPatternTrack_SetVariableObject(p,a,b,c)    (p)->lpVtbl->SetVariableObject(p,a,b,c)
01701 #define IDirectMusicPatternTrack_GetVariableObject(p,a,b,c,d)  (p)->lpVtbl->GetVariableObject(p,a,b,c,d)
01702 #define IDirectMusicPatternTrack_EnumRoutine(p,a,b)            (p)->lpVtbl->EnumRoutine(p,a,b)
01703 #define IDirectMusicPatternTrack_EnumVariable(p,a,b)           (p)->lpVtbl->EnumVariable(p,a,b)
01704 #endif
01705 
01706 
01707 /*****************************************************************************
01708  * IDirectMusicContainer interface
01709  */
01710 #define INTERFACE IDirectMusicContainer
01711 DECLARE_INTERFACE_(IDirectMusicContainer,IUnknown)
01712 {
01713     /*** IUnknown methods ***/
01714     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
01715     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01716     STDMETHOD_(ULONG,Release)(THIS) PURE;
01717     /*** IDirectMusicContainer methods ***/
01718     STDMETHOD(EnumObject)(THIS_ REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc, WCHAR *pwszAlias) PURE;
01719 };
01720 #undef INTERFACE
01721 
01722 #if !defined(__cplusplus) || defined(CINTERFACE)
01723 /*** IUnknown methods ***/
01724 #define IDirectMusicContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
01725 #define IDirectMusicContainer_AddRef(p)             (p)->lpVtbl->AddRef(p)
01726 #define IDirectMusicContainer_Release(p)            (p)->lpVtbl->Release(p)
01727 /*** IDirectMusicContainer methods ***/
01728 #define IDirectMusicContainer_EnumObject(p,a,b,c,d) (p)->lpVtbl->EnumObject(p,a,b,c,d)
01729 #endif
01730 
01731 
01732 #ifdef __cplusplus
01733 }
01734 #endif
01735 
01736 #include <poppack.h>
01737 
01738 #endif /* __WINE_DMUSIC_PERFORMANCE_H */

Generated on Fri May 25 2012 04:29:12 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.