diff --git a/CMakeLists.txt b/CMakeLists.txt index 75aafb1..e55b429 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,4 +92,12 @@ file(REMOVE_RECURSE "${BUILD_DIRECTORY}/SDL2_gpu.lib") file(REMOVE_RECURSE "${BUILD_DIRECTORY}/soloud_static.lib") file(REMOVE_RECURSE "${BUILD_DIRECTORY}/libmodplug.lib") +if (PREFER_MODPLUG) +file(REMOVE_RECURSE "${BUILD_DIRECTORY}/libopenmpt.dll") +file(REMOVE_RECURSE "${BUILD_DIRECTORY}/openmpt-mpg123.dll") +file(REMOVE_RECURSE "${BUILD_DIRECTORY}/openmpt-ogg.dll") +file(REMOVE_RECURSE "${BUILD_DIRECTORY}/openmpt-vorbis.dll") +file(REMOVE_RECURSE "${BUILD_DIRECTORY}/openmpt-zlib.dll") +endif() + # :) diff --git a/src/SoLoud/MIDI/soloud_midi.cpp b/src/SoLoud/MIDI/soloud_midi.cpp index c454a79..5226b6e 100644 --- a/src/SoLoud/MIDI/soloud_midi.cpp +++ b/src/SoLoud/MIDI/soloud_midi.cpp @@ -185,7 +185,7 @@ namespace SoLoud return loadFile(&f, sf); } - result Midi::load(const char *aFilename, SoundFont &sf) + result Midi::load(const char *aFilename, SoundFont sf) { DiskFile f; int res = f.open(aFilename); @@ -195,13 +195,8 @@ namespace SoLoud return loadFile(&f, sf); } - result Midi::loadFile(File *aFile, SoundFont &sf) + result Midi::loadFile(File *aFile, SoundFont sf) { - if (mData) - { - delete[] mData; - } - mDataLen = aFile->length(); mData = new char[mDataLen]; if (!mData) @@ -227,7 +222,7 @@ namespace SoLoud Midi::Midi() { mBaseSamplerate = 44100; - mChannels = 1; + mChannels = 2; mData = 0; mDataLen = 0; mSoundFont = 0; diff --git a/src/SoLoud/MIDI/soloud_midi.h b/src/SoLoud/MIDI/soloud_midi.h index e74b168..7ce8ca8 100644 --- a/src/SoLoud/MIDI/soloud_midi.h +++ b/src/SoLoud/MIDI/soloud_midi.h @@ -52,9 +52,9 @@ namespace SoLoud public: Midi(); virtual ~Midi(); - result load(const char* aFilename, SoundFont &sf); + result load(const char* aFilename, SoundFont sf); result loadMem(unsigned char *aMem, unsigned int aLength, SoundFont &sf, bool aCopy = false, bool aTakeOwnership = true); - result loadFile(File *aFile, SoundFont &sf); + result loadFile(File *aFile, SoundFont sf); virtual AudioSourceInstance *createInstance(); }; }; diff --git a/src/libflixel.hpp b/src/libflixel.hpp index 1fa4623..909b816 100644 --- a/src/libflixel.hpp +++ b/src/libflixel.hpp @@ -410,8 +410,6 @@ namespace sdfml { }); soundfont = tomlParse("conf.toml", "config", "soundfont"); - sound.init(); - llog("SoLoud", " is now initialized.", NORMAL, __FILENAME__, __LINE__); if (SDL_Init(SDL_INIT_EVERYTHING) < 0) return llog("SDL", " has failed to initialize.", ERROR_, __FILENAME__, __LINE__); llog("SDL", " is now initialized.", NORMAL, __FILENAME__, __LINE__); @@ -430,6 +428,10 @@ namespace sdfml { SDL_GetWindowWMInfo(SDL_GetWindowFromID(mContext.gpu_render->context->windowID), &wmInfo); mContext.direct_win = wmInfo.info.win.window; + sound.init(); + sound.initSF(soundfont); + llog("SoLoud", " is now initialized.", NORMAL, __FILENAME__, __LINE__); + SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE); mContext.size = {width, height}; diff --git a/src/sdfml/music.cpp b/src/sdfml/music.cpp index 8eaf4c6..f98a0ab 100644 --- a/src/sdfml/music.cpp +++ b/src/sdfml/music.cpp @@ -6,5 +6,7 @@ std::pair sdfml::musicBank; #else std::pair sdfml::musicBank; #endif +SoLoud::Midi sdfml::midiBank; +SoLoud::SoundFont sdfml::midiSF; SoLoud::Soloud sdfml::audio; sdfml::AudioHandler sdfml::sound; \ No newline at end of file diff --git a/src/sdfml/music.hpp b/src/sdfml/music.hpp index 20a4c17..5e14b3e 100644 --- a/src/sdfml/music.hpp +++ b/src/sdfml/music.hpp @@ -20,11 +20,18 @@ namespace sdfml { #else extern std::pair musicBank; #endif + + extern SoLoud::Midi midiBank; + extern SoLoud::SoundFont midiSF; extern SoLoud::Soloud audio; class MusicHandler { public: + + void playMidi(std::string path) { + + } void playMusic(std::string path) { musicBank.first.stop(); @@ -48,7 +55,11 @@ namespace sdfml { MusicHandler music; void init() { - audio.init(); + audio.init(audio.CLIP_ROUNDOFF, audio.MINIAUDIO); + } + + void initSF(std::string path) { + midiSF.load(path.c_str()); } void deinit() { @@ -65,8 +76,6 @@ namespace sdfml { } else { sfxBanks[i].stop(); audio.stopAudioSource(sfxBanks[i]); - sfxBanks[i].load(path.c_str()); - audio.play(sfxBanks[i]); break; } }