[Scummvm-git-logs] scummvm master -> 0354a6981f83e917f50bb3474617f64c6db4cbb2

yuv422 yuv422 at users.noreply.github.com
Fri Aug 7 13:33:02 UTC 2020


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c2831cccf8 DRAGONS: Wire up soundfont code to dragons engine
0354a6981f DRAGONS: Only load SF2 if using fluidsynth driver.


Commit: c2831cccf82d5bcf49c0146fa056a930ec5cf799
    https://github.com/scummvm/scummvm/commit/c2831cccf82d5bcf49c0146fa056a930ec5cf799
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-08-07T22:34:10+10:00

Commit Message:
DRAGONS: Wire up soundfont code to dragons engine

Changed paths:
    engines/dragons/midimusicplayer.cpp
    engines/dragons/midimusicplayer.h
    engines/dragons/sound.cpp
    engines/dragons/sound.h


diff --git a/engines/dragons/midimusicplayer.cpp b/engines/dragons/midimusicplayer.cpp
index e4342de516..ba5d113017 100644
--- a/engines/dragons/midimusicplayer.cpp
+++ b/engines/dragons/midimusicplayer.cpp
@@ -26,9 +26,13 @@
 
 namespace Dragons {
 
-MidiMusicPlayer::MidiMusicPlayer(VabSound *musicVab): _musicVab(musicVab), _midiDataSize(0) {
+MidiMusicPlayer::MidiMusicPlayer(VabSound *musicVab, Common::SeekableReadStream *soundFont): _musicVab(musicVab), _midiDataSize(0) {
 	_midiData = nullptr;
-	MidiPlayer::createDriver();
+	MidiPlayer::createDriver(MDT_PREFER_FLUID | MDT_MIDI);
+
+	if (_driver->acceptsSoundFontData()) {
+		_driver->setEngineSoundFont(soundFont);
+	}
 
 	int ret = _driver->open();
 	if (ret == 0) {
diff --git a/engines/dragons/midimusicplayer.h b/engines/dragons/midimusicplayer.h
index 4a57b10bae..8ce89539ca 100644
--- a/engines/dragons/midimusicplayer.h
+++ b/engines/dragons/midimusicplayer.h
@@ -32,7 +32,7 @@ private:
 	VabSound *_musicVab;
 	uint32 _midiDataSize;
 public:
-	MidiMusicPlayer(VabSound *musicVab);
+	MidiMusicPlayer(VabSound *musicVab, Common::SeekableReadStream *soundFont);
 	~MidiMusicPlayer();
 
 	void setVolume(int volume) override;
diff --git a/engines/dragons/sound.cpp b/engines/dragons/sound.cpp
index f2ab4d7782..e375b424f8 100644
--- a/engines/dragons/sound.cpp
+++ b/engines/dragons/sound.cpp
@@ -19,6 +19,9 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  */
+#include <audio/soundfont/rawfile.h>
+#include <audio/soundfont/vab/vab.h>
+#include <audio/soundfont/vgmcoll.h>
 #include "audio/mixer.h"
 #include "audio/audiostream.h"
 #include "audio/decoders/raw.h"
@@ -291,7 +294,7 @@ SoundManager::SoundManager(DragonsEngine *vm, BigfileArchive *bigFileArchive, Dr
 
 	SomeInitSound_FUN_8003f64c();
 	initVabData();
-	_midiPlayer = new MidiMusicPlayer(_vabMusx);
+	_midiPlayer = new MidiMusicPlayer(_vabMusx, loadSoundFont());
 	_midiPlayer->setVolume(_musicVolume);
 }
 
@@ -525,4 +528,38 @@ void SoundManager::playMusic(int16 song) {
 	delete seq;
 }
 
+Common::SeekableReadStream *SoundManager::loadSoundFont() {
+	uint32 headSize, bodySize;
+	byte *headData = _bigFileArchive->load("musx.vh", headSize);
+	byte *bodyData = _bigFileArchive->load("musx.vb", bodySize);
+
+	byte *vabData = (byte *)malloc(headSize + bodySize);
+
+	memcpy(vabData, headData, headSize);
+	memcpy(vabData + headSize, bodyData, bodySize);
+
+	free(headData);
+	free(bodyData);
+
+	MemFile *memFile = new MemFile(vabData, headSize + bodySize);
+	debug("Loaded vab file size: %lu", memFile->size());
+	Vab *vab = new Vab(memFile, 0);
+	vab->LoadVGMFile();
+	VGMColl vabCollection;
+	SF2File *file = vabCollection.CreateSF2File(vab);
+	const byte *bytes = (const byte *)file->SaveToMem();
+	uint32 size = file->GetSize();
+
+	delete file;
+	delete vab;
+	delete memFile;
+	Common::DumpFile *dumpFile = new Common::DumpFile();
+	dumpFile->open("testing.sf2");
+	dumpFile->write(bytes, size);
+	dumpFile->close();
+	delete dumpFile;
+
+	return new Common::MemoryReadStream(bytes, size, DisposeAfterUse::YES);
+}
+
 } // End of namespace Dragons
diff --git a/engines/dragons/sound.h b/engines/dragons/sound.h
index b01ad87387..a7b371e5fc 100644
--- a/engines/dragons/sound.h
+++ b/engines/dragons/sound.h
@@ -90,6 +90,8 @@ private:
 
 	void initVabData();
 
+	Common::SeekableReadStream *loadSoundFont();
+
 	void playSound(uint16 soundId, uint16 i);
 
 	void stopSound(uint16 id, uint16 i);


Commit: 0354a6981f83e917f50bb3474617f64c6db4cbb2
    https://github.com/scummvm/scummvm/commit/0354a6981f83e917f50bb3474617f64c6db4cbb2
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-08-07T23:31:15+10:00

Commit Message:
DRAGONS: Only load SF2 if using fluidsynth driver.

Changed paths:
    engines/dragons/midimusicplayer.cpp
    engines/dragons/midimusicplayer.h
    engines/dragons/sound.cpp
    engines/dragons/sound.h


diff --git a/engines/dragons/midimusicplayer.cpp b/engines/dragons/midimusicplayer.cpp
index ba5d113017..1ca0a33471 100644
--- a/engines/dragons/midimusicplayer.cpp
+++ b/engines/dragons/midimusicplayer.cpp
@@ -19,19 +19,24 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  */
+#include "common/debug.h"
+#include "common/memstream.h"
 #include "common/stream.h"
 #include "audio/midiparser.h"
+#include "audio/soundfont/rawfile.h"
+#include "audio/soundfont/vab/vab.h"
+#include "audio/soundfont/vgmcoll.h"
 #include "midimusicplayer.h"
 
 
 namespace Dragons {
 
-MidiMusicPlayer::MidiMusicPlayer(VabSound *musicVab, Common::SeekableReadStream *soundFont): _musicVab(musicVab), _midiDataSize(0) {
+MidiMusicPlayer::MidiMusicPlayer(BigfileArchive *bigFileArchive, VabSound *musicVab): _musicVab(musicVab), _midiDataSize(0) {
 	_midiData = nullptr;
 	MidiPlayer::createDriver(MDT_PREFER_FLUID | MDT_MIDI);
 
 	if (_driver->acceptsSoundFontData()) {
-		_driver->setEngineSoundFont(soundFont);
+		_driver->setEngineSoundFont(loadSoundFont(bigFileArchive));
 	}
 
 	int ret = _driver->open();
@@ -132,4 +137,33 @@ void MidiMusicPlayer::setVolume(int volume) {
 	MidiPlayer::setVolume(volume);
 }
 
+Common::SeekableReadStream *MidiMusicPlayer::loadSoundFont(BigfileArchive *bigFileArchive) {
+	uint32 headSize, bodySize;
+	byte *headData = bigFileArchive->load("musx.vh", headSize);
+	byte *bodyData = bigFileArchive->load("musx.vb", bodySize);
+
+	byte *vabData = (byte *)malloc(headSize + bodySize);
+
+	memcpy(vabData, headData, headSize);
+	memcpy(vabData + headSize, bodyData, bodySize);
+
+	free(headData);
+	free(bodyData);
+
+	MemFile *memFile = new MemFile(vabData, headSize + bodySize);
+	debug("Loading soundfont2 from musx vab file.");
+	Vab *vab = new Vab(memFile, 0);
+	vab->LoadVGMFile();
+	VGMColl vabCollection;
+	SF2File *file = vabCollection.CreateSF2File(vab);
+	const byte *bytes = (const byte *)file->SaveToMem();
+	uint32 size = file->GetSize();
+
+	delete file;
+	delete vab;
+	delete memFile;
+
+	return new Common::MemoryReadStream(bytes, size, DisposeAfterUse::YES);
+}
+
 } // End of namespace Dragons
diff --git a/engines/dragons/midimusicplayer.h b/engines/dragons/midimusicplayer.h
index 8ce89539ca..155aa64818 100644
--- a/engines/dragons/midimusicplayer.h
+++ b/engines/dragons/midimusicplayer.h
@@ -24,6 +24,7 @@
 
 #include "audio/midiplayer.h"
 #include "vabsound.h"
+#include "bigfile.h"
 
 namespace Dragons {
 
@@ -32,7 +33,7 @@ private:
 	VabSound *_musicVab;
 	uint32 _midiDataSize;
 public:
-	MidiMusicPlayer(VabSound *musicVab, Common::SeekableReadStream *soundFont);
+	MidiMusicPlayer(BigfileArchive *bigFileArchive, VabSound *musicVab);
 	~MidiMusicPlayer();
 
 	void setVolume(int volume) override;
@@ -44,6 +45,7 @@ public:
 	uint32 getBaseTempo()	{ return _driver ? (109 * _driver->getBaseTempo()) / 120 : 0; }
 private:
 	byte *resizeMidiBuffer(uint32 desiredSize);
+	Common::SeekableReadStream *loadSoundFont(BigfileArchive *bigFileArchive);
 };
 
 } // End of namespace Dragons
diff --git a/engines/dragons/sound.cpp b/engines/dragons/sound.cpp
index e375b424f8..d9c44cc28d 100644
--- a/engines/dragons/sound.cpp
+++ b/engines/dragons/sound.cpp
@@ -294,7 +294,7 @@ SoundManager::SoundManager(DragonsEngine *vm, BigfileArchive *bigFileArchive, Dr
 
 	SomeInitSound_FUN_8003f64c();
 	initVabData();
-	_midiPlayer = new MidiMusicPlayer(_vabMusx, loadSoundFont());
+	_midiPlayer = new MidiMusicPlayer(_bigFileArchive, _vabMusx);
 	_midiPlayer->setVolume(_musicVolume);
 }
 
@@ -528,38 +528,4 @@ void SoundManager::playMusic(int16 song) {
 	delete seq;
 }
 
-Common::SeekableReadStream *SoundManager::loadSoundFont() {
-	uint32 headSize, bodySize;
-	byte *headData = _bigFileArchive->load("musx.vh", headSize);
-	byte *bodyData = _bigFileArchive->load("musx.vb", bodySize);
-
-	byte *vabData = (byte *)malloc(headSize + bodySize);
-
-	memcpy(vabData, headData, headSize);
-	memcpy(vabData + headSize, bodyData, bodySize);
-
-	free(headData);
-	free(bodyData);
-
-	MemFile *memFile = new MemFile(vabData, headSize + bodySize);
-	debug("Loaded vab file size: %lu", memFile->size());
-	Vab *vab = new Vab(memFile, 0);
-	vab->LoadVGMFile();
-	VGMColl vabCollection;
-	SF2File *file = vabCollection.CreateSF2File(vab);
-	const byte *bytes = (const byte *)file->SaveToMem();
-	uint32 size = file->GetSize();
-
-	delete file;
-	delete vab;
-	delete memFile;
-	Common::DumpFile *dumpFile = new Common::DumpFile();
-	dumpFile->open("testing.sf2");
-	dumpFile->write(bytes, size);
-	dumpFile->close();
-	delete dumpFile;
-
-	return new Common::MemoryReadStream(bytes, size, DisposeAfterUse::YES);
-}
-
 } // End of namespace Dragons
diff --git a/engines/dragons/sound.h b/engines/dragons/sound.h
index a7b371e5fc..b01ad87387 100644
--- a/engines/dragons/sound.h
+++ b/engines/dragons/sound.h
@@ -90,8 +90,6 @@ private:
 
 	void initVabData();
 
-	Common::SeekableReadStream *loadSoundFont();
-
 	void playSound(uint16 soundId, uint16 i);
 
 	void stopSound(uint16 id, uint16 i);




More information about the Scummvm-git-logs mailing list