Пример #1
0
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;
}
Пример #2
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;
	}
}