�� �VMidiKit��SMF/SoftMIDI���������߂̃��C�u���� ��MidiKit���t�@�C���������͂ɂƂ�Ȃ��������ß�A ��������HTTP���C�u������BPositionIO�����������A HTTP�z���Ɏ擾�����t�@�C������x�e���|�����t�@�C���Ƃ��Ä���������˂΂Ȃ�܂���ł����B ����͂�����Ɣ߂����E�E�E�B ����Ȃ킯�ŖØ�₳��B�ɑ��k�����Ƃ���A�VMidiKit�̑��݂�m��܂����B �����A����Í�A��éŽï¿½B
�VMidiKit�ł�A��MidiKit�̂悤��A ����SoftMIDI��SMF����y�Ɏg����API������܂���i���Ԃ�j�B �Ƃ����킯��A��MidiKit�����b�v���Ă��A�VMidiKit�̃C���^�[�t�F�[�X�Ƃ��Ď������� ����SoftMIDI�ATxBMidiSynthConsumer�B ������SMF������VMidiKit�̃C���^�[�t�F�[�X�Ƃ��Ď�������TxBMidiFileProducer�B ����2�‚̃N���X������Ă݂܂����B�������g�����Ƃ�A �VMidiKit�̃C���^�[�t�F�[�X�����y��SoftMIDI�ASMF�������܂��B �܂�SMF��Import�Ɋւ��Ă��Aentry_ref�A�������o�b�t�@�ABPositionIO����͂ɂƂ��̂�A ��MidiKit��BMidiuSynthFile�������p�������Ǝv���܂��B
���ȒP��SMF�v���C���[�̃T���v��Register�������ȗ����邱�Ƃ��ł��܂��B Register���s����A�O������Roster�o�R�ŃA�N�Z�X���邱�Ƃ��ł��A �ԂɃt�B���^�����񂾂��A�����ɂ�MidiKit�ȗV�т��y���߂܂��B ����͕ʃX���b�h��s����̂�A���t��I����҂��������ɂ�AWaitForStop���Ă�o���܂��B
[�T���v��]
#include "TxBMidiSynthConsumer.h" #include "TxBMidiFileProducer.h" int main(int argc, char **argv) { BApplication app("application/x-vnd.toyoshima-house.miditest"); TxBMidiSynthConsumer *midi = new TxBMidiSynthConsumer(); midi->Register(); // register to Roster TxBMidiFileProducer *smf = new TxBMidiFileProducer(); smf->Register(); // register to Roster smf->Connect(midi); entry_ref midiRef; get_ref_for_path(argv[1], &midiRef); if (B_OK != smf->Import(&midiRef)) puts("import failed"); if (B_OK != smf->Play()) puts("play failed"); smf->WaitForStop(); smf->Unregister(); // unregister from Roster smf->Release(); // Don't delete TxBMidiFileProducer midi->Unregister(); // unregister from Roster midi->Release(); // Don't delete TxBMidiSynthConsumer return 0; }
���_�E�����[�h��A���J�ł��B���܂�����ł��Ȃ��t�@�C���Ƃ��������狳���Ă���������ƒ����邩������܂���A �����Ȃ���������܂���B��ɂ����A�����Ē�����Ƒ�ϊ��ӂ��܂��B ���C�Z���X��HTTP���C�u�����Ɠ��lArtistic������ɂ��Ă����܂��B