[Scummvm-cvs-logs] SF.net SVN: scummvm: [31873] scummvm/trunk/engines/made

john_doe at users.sourceforge.net john_doe at users.sourceforge.net
Mon May 5 14:51:51 CEST 2008


Revision: 31873
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31873&view=rev
Author:   john_doe
Date:     2008-05-05 05:51:50 -0700 (Mon, 05 May 2008)

Log Message:
-----------
Added MIDI playback (which doesn't work yet) and fixed compilation (sorry all)

Modified Paths:
--------------
    scummvm/trunk/engines/made/music.cpp
    scummvm/trunk/engines/made/music.h

Modified: scummvm/trunk/engines/made/music.cpp
===================================================================
--- scummvm/trunk/engines/made/music.cpp	2008-05-05 11:02:40 UTC (rev 31872)
+++ scummvm/trunk/engines/made/music.cpp	2008-05-05 12:51:50 UTC (rev 31873)
@@ -42,6 +42,7 @@
 	_masterVolume = 0;
 	this->open();
 	_xmidiParser = MidiParser::createParser_XMIDI();
+	_smfParser = MidiParser::createParser_SMF();
 }
 
 MusicPlayer::~MusicPlayer() {
@@ -49,7 +50,9 @@
 	stop();
 	this->close();
 	_xmidiParser->setMidiDriver(NULL);
+	_smfParser->setMidiDriver(NULL);
 	delete _xmidiParser;
+	delete _smfParser;
 }
 
 void MusicPlayer::setVolume(int volume) {
@@ -140,13 +143,13 @@
 		music->_parser->onTimer();
 }
 
-void MusicPlayer::play(XmidiResource *midiResource, MusicFlags flags) {
+void MusicPlayer::playXMIDI(GenericResource *midiResource, MusicFlags flags) {
 	if (_isPlaying)
 		return;
 
 	stop();
 
-	// Load MIDI/XMI resource data
+	// Load XMID resource data
 
 	_isGM = true;
 
@@ -166,6 +169,32 @@
 	}
 }
 
+void MusicPlayer::playSMF(GenericResource *midiResource, MusicFlags flags) {
+	if (_isPlaying)
+		return;
+
+	stop();
+
+	// Load MIDI resource data
+
+	_isGM = true;
+
+	if (_smfParser->loadMusic(midiResource->getData(), midiResource->getSize())) {
+		MidiParser *parser = _smfParser;
+		parser->setTrack(0);
+		parser->setMidiDriver(this);
+		parser->setTimerRate(getBaseTempo());
+		parser->property(MidiParser::mpCenterPitchWheelOnUnload, 1);
+
+		_parser = parser;
+
+		setVolume(255);
+
+		_looping = flags & MUSIC_LOOP;
+		_isPlaying = true;
+	}
+}
+
 void MusicPlayer::stop() {
 	Common::StackLock lock(_mutex);
 

Modified: scummvm/trunk/engines/made/music.h
===================================================================
--- scummvm/trunk/engines/made/music.h	2008-05-05 11:02:40 UTC (rev 31872)
+++ scummvm/trunk/engines/made/music.h	2008-05-05 12:51:50 UTC (rev 31873)
@@ -54,7 +54,8 @@
 
 	void setNativeMT32(bool b) { _nativeMT32 = b; }
 	bool hasNativeMT32() { return _nativeMT32; }
-	void play(XmidiResource *midiResource, MusicFlags flags = MUSIC_NORMAL);
+	void playXMIDI(GenericResource *midiResource, MusicFlags flags = MUSIC_NORMAL);
+	void playSMF(GenericResource *midiResource, MusicFlags flags = MUSIC_NORMAL);
 	void stop();
 	void pause();
 	void resume();
@@ -86,7 +87,7 @@
 
 	MidiChannel *_channel[16];
 	MidiDriver *_driver;
-	MidiParser *_xmidiParser;
+	MidiParser *_xmidiParser, *_smfParser;
 	byte _channelVolume[16];
 	bool _nativeMT32;
 	bool _isGM;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list