#include void testNotes(void); void testFile(void); int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/) { testFile(); // testNotes(); return 0; } void testFile(void) { String musicFileName("D:\\WORK\\SCENE\\MEDIA\\BMP\\E1M2.MID"); // String musicFileName("C:\\WINNT\\MEDIA\\PASSPORT.MID"); // String musicFileName("C:\\WINNT\\MEDIA\\CANYON.MID"); // String musicFileName("E:\\work\\SCENE\\MEDIA\\BMP\\E1M2.MID"); MidiData midiData(musicFileName); midiData.play(); while(midiData.isInPlay()); midiData.stop(); ::MessageBox(::GetFocus(),(LPSTR)musicFileName,(LPSTR)"End Play",MB_OK); return; } class PitchBend { public: enum {MinPitch=0x0000,MaxPitch=0x3FFF,CenterPitch=0x2000}; PitchBend(void); PureEvent getEvent(void)const; void setPitch(WORD pitch); WORD getPitch(void)const; void centerWheel(void); private: BYTE getLo(void)const; BYTE getHi(void)const; WORD mPitch; }; inline PitchBend::PitchBend() : mPitch(CenterPitch) { } inline void PitchBend::setPitch(WORD pitch) { if(pitch>MaxPitch)pitch=MaxPitch; mPitch=pitch; } inline WORD PitchBend::getPitch(void)const { return mPitch; } inline void PitchBend::centerWheel(void) { mPitch=CenterPitch; } inline BYTE PitchBend::getLo(void)const { return mPitch&0xFF; } inline BYTE PitchBend::getHi(void)const { return mPitch>>8; } inline PureEvent PitchBend::getEvent(void)const { String strPitch; ::sprintf(strPitch.str(),"lo:0x%04lx hi:0x%04lx\n",getLo(),getHi()); ::OutputDebugString(strPitch.str()); PureEvent pureEvent(MIDIPitchBend,0,0,getHi(),getLo()); return pureEvent; } void testNotes(void) { MIDIOutputDevice midiOut; NoteOn noteOn(PureNote(70,60)); PitchBend pitchBend; pitchBend.setPitch(0x0); pitchBend.setPitch(0x2000+128); // pitchBend.setPitch(0x3FFF); NoteOff noteOff(PureNote(70,60)); if(!midiOut.openDevice())return; midiOut.midiEvent(noteOn.getEvent()); midiOut.midiEvent(pitchBend.getEvent()); pitchBend.setPitch(0x2000); midiOut.midiEvent(pitchBend.getEvent()); midiOut.midiEvent(noteOn.getEvent()); midiOut.midiEvent(noteOff.getEvent()); midiOut.closeDevice(); return; } // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\WALTHIUS\\DEMON21T.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\CYBRBEAT.MID"); // String musicFileName("C:\\WINDOWS\\CANYON.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\MID\\D_STALKS.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\MID\\E1M9.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\EXORCIST.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\YYZ.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\K330-1.MID"); // String musicFileName("C:\\WORK\\SCENE\\MEDIA\\K330-2.MID");