int _tmain(int argc, _TCHAR* argv[]) { for (int i=0; i<50; i++) { _index = i; char strifile[50], strofile[50]; sprintf(strifile, "C:\\Temp\\sarien\\kq2_export\\Sound%d.ags", i); sprintf(strofile, "C:\\Temp\\sarien\\kq2_export\\sound%d.js", i); FILE *fin = fopen(strifile, "rb"); if ( fin == NULL ) continue; fseek(fin,0,SEEK_END); int size = ftell(fin); fseek(fin, 0, SEEK_SET); char *buf = new char[size]; fread(buf, 1, size, fin); fclose(fin); FILE *fout = fopen(strofile, "w"); _fd = fout; convertSND2MIDI((byte*)buf, NULL); fclose(fout); delete buf; } return 0; }
void SoundGenMIDI::play(int resnum) { MIDISound *track; stop(); _isGM = true; track = (MIDISound *)_vm->_game.sounds[resnum]; // Convert AGI Sound data to MIDI int midiMusicSize = convertSND2MIDI(track->_data, &_midiData); MidiParser *parser = MidiParser::createParser_SMF(); if (parser->loadMusic(_midiData, midiMusicSize)) { parser->setTrack(0); parser->setMidiDriver(this); parser->setTimerRate(_driver->getBaseTempo()); parser->property(MidiParser::mpCenterPitchWheelOnUnload, 1); _parser = parser; syncVolume(); _isPlaying = true; } else { delete parser; } }