// // DMStyleP.H // // Private include for DMStyle.DLL // // Copyright (c) 1997-1999 Microsoft Corporation // // #ifndef _DMSTYLEP_ #define _DMSTYLEP_ #include "dmusicf.h" #define SUBCHORD_BASS 0 #define SUBCHORD_STANDARD_CHORD 1 extern long g_cComponent; // Class factory // class CDirectMusicStyleFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicStyleFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicStyleFactory() {} private: long m_cRef; }; class CDirectMusicSectionFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicSectionFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicSectionFactory() {} private: long m_cRef; }; class CDirectMusicStyleTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicStyleTrackFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicStyleTrackFactory() {} private: long m_cRef; }; class CDirectMusicCommandTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicCommandTrackFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicCommandTrackFactory() {} private: long m_cRef; }; class CDirectMusicChordTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicChordTrackFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicChordTrackFactory() {} private: long m_cRef; }; class CDirectMusicMotifTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicMotifTrackFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicMotifTrackFactory() {} private: long m_cRef; }; class CDirectMusicMuteTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicMuteTrackFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicMuteTrackFactory() {} private: long m_cRef; }; class CDirectMusicAuditionTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicAuditionTrackFactory() : m_cRef(1) {} // Destructor // ~CDirectMusicAuditionTrackFactory() {} private: long m_cRef; }; class CDirectMusicMelodyFormulationTrackFactory : public IClassFactory { public: // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // Interface IClassFactory // virtual STDMETHODIMP CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); virtual STDMETHODIMP LockServer(BOOL bLock); // Constructor // CDirectMusicMelodyFormulationTrackFactory() : m_cRef(1) {} private: long m_cRef; }; // private interfaces interface IDMSection : IUnknown { virtual HRESULT STDMETHODCALLTYPE CreateSegment(IDirectMusicSegment* pSegment)=0; virtual HRESULT STDMETHODCALLTYPE GetStyle(IUnknown** ppStyle)=0; }; interface IStyleTrack : IUnknown { virtual HRESULT STDMETHODCALLTYPE SetTrack(IUnknown *pStyle)=0; virtual HRESULT STDMETHODCALLTYPE GetStyle(IUnknown **ppStyle)=0; }; interface IDMStyle : IUnknown { // virtual HRESULT STDMETHODCALLTYPE GetPatternName (DWORD dwIndex, WCHAR *wszName)=0; virtual HRESULT STDMETHODCALLTYPE EnumPartGuid( DWORD dwIndex, WCHAR* wszName, DWORD dwPatternType, GUID& rGuid)=0; virtual HRESULT STDMETHODCALLTYPE GetPatternStream( WCHAR* wszName, DWORD dwPatternType, IStream** ppStream)=0; virtual HRESULT STDMETHODCALLTYPE GetStyleInfo(void **pData)=0; virtual HRESULT STDMETHODCALLTYPE IsDX8()=0; virtual HRESULT STDMETHODCALLTYPE CritSec(bool fEnter)=0; virtual HRESULT STDMETHODCALLTYPE EnumStartTime(DWORD dwIndex, DMUS_COMMAND_PARAM* pCommand, MUSIC_TIME* pmtStartTime)=0; virtual HRESULT STDMETHODCALLTYPE GenerateTrack( IDirectMusicSegment* pTempSeg, IDirectMusicSong* pSong, DWORD dwTrackGroup, IDirectMusicStyle* pStyle, IDirectMusicTrack* pMelGenTrack, MUSIC_TIME mtLength, IDirectMusicTrack*& pNewTrack)=0; // this will go into dmusici.h when melody formulation is made public /* virtual HRESULT STDMETHODCALLTYPE ComposeMelodyFromTemplate( IDirectMusicStyle* pStyle, IDirectMusicSegment* pTemplate, IDirectMusicSegment** ppSegment) = 0;*/ /* Interface needs to look like this in dmusici.h STDMETHOD(ComposeMelodyFromTemplate) (THIS_ IDirectMusicStyle* pStyle, IDirectMusicSegment* pTemplate, IDirectMusicSegment** ppSegment) PURE; */ }; interface IMotifTrack : IUnknown { virtual HRESULT STDMETHODCALLTYPE SetTrack(IUnknown *pStyle, void* pPattern)=0; }; interface IPrivatePatternTrack : IUnknown { virtual HRESULT STDMETHODCALLTYPE SetPattern( IDirectMusicSegmentState* pSegState, IStream* pStream, DWORD* pdwLength)=0; virtual HRESULT STDMETHODCALLTYPE SetVariationByGUID( IDirectMusicSegmentState* pSegState, DWORD dwVariationFlags, REFGUID rguidPart, DWORD dwPChannel)=0; }; /////////////////////////////////////////////////////////////////////////////////////// /* #define IAuditionTrack IDirectMusicPatternTrack #define IID_IAuditionTrack IID_IDirectMusicPatternTrack */ DEFINE_GUID( IID_IAuditionTrack, 0x9dc278c0, 0x9cb0, 0x11d1, 0xa7, 0xce, 0x0, 0xa0, 0xc9, 0x13, 0xf7, 0x3c ); interface IAuditionTrack : IUnknown { virtual HRESULT STDMETHODCALLTYPE CreateSegment( IDirectMusicStyle* pStyle, IDirectMusicSegment** ppSegment)=0; virtual HRESULT STDMETHODCALLTYPE SetPattern( IDirectMusicSegmentState* pSegState, IStream* pStream, DWORD* pdwLength)=0; virtual HRESULT STDMETHODCALLTYPE SetVariation( IDirectMusicSegmentState* pSegState, DWORD dwVariationFlags, WORD wPart)=0; }; #define CLSID_DirectMusicAuditionTrack CLSID_DirectMusicPatternTrack #define DMUS_PCHANNEL_MUTE 0xffffffff // the following constants represent time in 100 nanosecond increments #define REF_PER_MIL 10000 // For converting from reference time to mils #define MARGIN_MIN (100 * REF_PER_MIL) // #define MARGIN_MAX (400 * REF_PER_MIL) // #define PREPARE_TIME (m_dwPrepareTime * REF_PER_MIL) // Time #define NEARTIME (100 * REF_PER_MIL) #define NEARMARGIN (REALTIME_RES * REF_PER_MIL) // private CLSIDs and IIDs DEFINE_GUID(IID_IDMSection, 0x3F037240,0x414E,0x11D1, 0xA7,0xCE,0x00,0xA0,0xC9,0x13,0xF7,0x3C); DEFINE_GUID(IID_IStyleTrack, 0x3F037246,0x414E,0x11D1, 0xA7,0xCE,0x00,0xA0,0xC9,0x13,0xF7,0x3C); DEFINE_GUID(IID_IDMStyle, 0x4D7F3661,0x43D6,0x11D1, 0xA7,0xCE,0x00,0xA0,0xC9,0x13,0xF7,0x3C); DEFINE_GUID(IID_IMotifTrack, 0x7AE499C1,0x51FE,0x11D1, 0xA7,0xCE,0x00,0xA0,0xC9,0x13,0xF7,0x3C); DEFINE_GUID(IID_IMuteTrack, 0xbc242fc1, 0xad1d, 0x11d1, 0xa7, 0xce, 0x0, 0xa0, 0xc9, 0x13, 0xf7, 0x3c); DEFINE_GUID(IID_IPrivatePatternTrack, 0x7a8e9c33, 0x5901, 0x4f20, 0x92, 0xde, 0x3a, 0x5b, 0x3e, 0x33, 0xe2, 0x14); DEFINE_GUID(CLSID_DMSection, 0x3F037241,0x414E,0x11D1, 0xA7,0xCE,0x00,0xA0,0xC9,0x13,0xF7,0x3C); // GUID and param struct for private version of GetParam (get style Time Signature, // getting commands and chords from current segment) struct SegmentTimeSig { IDirectMusicSegment* pSegment; // Segment passed in DMUS_TIMESIGNATURE TimeSig; // Time sig returned }; DEFINE_GUID(GUID_SegmentTimeSig, 0x76612507, 0x4f37, 0x4b35, 0x80, 0x92, 0x50, 0x48, 0x4e, 0xd4, 0xba, 0x92); // Private melody fragment stuff // Used to get a repeated melody fragment DEFINE_GUID(GUID_MelodyFragmentRepeat, 0x8cc92764, 0xf81c, 0x11d2, 0x81, 0x45, 0x0, 0xc0, 0x4f, 0xa3, 0x6e, 0x58); // This is obslolete and should not be public #define DMUS_FOURCC_MELODYGEN_TRACK_CHUNK mmioFOURCC( 'm', 'g', 'e', 'n' ) /* // This is obslolete and should not be public // 'mgen' ( //sizeof DMUS_IO_MELODY_FRAGMENT: DWORD ... ) */ // GUID for private chord notifications DEFINE_GUID(GUID_NOTIFICATION_PRIVATE_CHORD, 0xf5c19571, 0x7e1e, 0x4fff, 0xb9, 0x49, 0x7f, 0x74, 0xa6, 0x6f, 0xdf, 0xc0); // (Private) Guid for getting a style from a pattern track DEFINE_GUID(GUID_IDirectMusicPatternStyle, 0x689821f4, 0xb3bc, 0x44dd, 0x80, 0xd4, 0xc, 0xf3, 0x2f, 0xe4, 0xd2, 0x1b); #endif