[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