Files
Work/midiseq/hold/MAIN.CPP
2024-08-07 09:16:27 -04:00

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");