128 lines
2.7 KiB
C++
128 lines
2.7 KiB
C++
#include <midiseq/mididata.hpp>
|
|
|
|
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");
|