diff options
author | Wohlstand <admin@wohlnet.ru> | 2022-10-25 04:57:31 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2022-10-25 04:57:31 +0300 |
commit | 24855412cd0a5e2dcf4ac8b62888d115cd20b3f0 (patch) | |
tree | 89111344f451ab6a94f8340abee10a9c605dcd5d /src/midi_sequencer_impl.hpp | |
parent | d08222efbc76aa734b35bbbe7482f60a5e35a28c (diff) | |
download | libADLMIDI-24855412cd0a5e2dcf4ac8b62888d115cd20b3f0.tar.gz libADLMIDI-24855412cd0a5e2dcf4ac8b62888d115cd20b3f0.tar.bz2 libADLMIDI-24855412cd0a5e2dcf4ac8b62888d115cd20b3f0.zip |
XMI2MIDI: Optimised the algorithm for multiple songs
Diffstat (limited to 'src/midi_sequencer_impl.hpp')
-rw-r--r-- | src/midi_sequencer_impl.hpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/midi_sequencer_impl.hpp b/src/midi_sequencer_impl.hpp index 3c94968..d9ff580 100644 --- a/src/midi_sequencer_impl.hpp +++ b/src/midi_sequencer_impl.hpp @@ -451,7 +451,7 @@ void BW_MidiSequencer::setSoloTrack(size_t track) m_trackSolo = track; } -void BW_MidiSequencer::setLoadTrack(int track) +void BW_MidiSequencer::setSongNum(int track) { m_loadTrackNumber = track; @@ -481,6 +481,11 @@ void BW_MidiSequencer::setLoadTrack(int track) } } +int BW_MidiSequencer::getSongsCount() +{ + return (int)m_rawSongsData.size(); +} + void BW_MidiSequencer::setTriggerHandler(TriggerHandler handler, void *userData) { @@ -2922,8 +2927,7 @@ bool BW_MidiSequencer::parseXMI(FileAndMemReader &fr) char headerBuf[headerSize] = ""; size_t fsize = 0; // BufferGuard<uint8_t> cvt_buf; - std::vector<uint8_t *> song_buf; - std::vector<uint32_t> song_size; + std::vector<std::vector<uint8_t > > song_buf; bool ret; (void)Convert_xmi2midi; /* Shut up the warning */ @@ -2972,13 +2976,12 @@ bool BW_MidiSequencer::parseXMI(FileAndMemReader &fr) // uint8_t *mid = NULL; // uint32_t mid_len = 0; int m2mret = Convert_xmi2midi_multi(mus, static_cast<uint32_t>(mus_len + 20), - song_buf, song_size, XMIDI_CONVERT_NOCONVERSION); + song_buf, XMIDI_CONVERT_NOCONVERSION); if(mus) free(mus); if(m2mret < 0) { - for(size_t i = 0; i < song_buf.size(); ++i) - std::free(song_buf[i]); + song_buf.clear(); m_errorString = "Invalid XMI data format!"; return false; } @@ -2988,12 +2991,10 @@ bool BW_MidiSequencer::parseXMI(FileAndMemReader &fr) for(size_t i = 0; i < song_buf.size(); ++i) { - m_rawSongsData.push_back(std::vector<uint8_t >(song_buf[i], song_buf[i] + song_size[i])); - std::free(song_buf[i]); + m_rawSongsData.push_back(song_buf[i]); } song_buf.clear(); - song_size.clear(); // cvt_buf.set(mid); // Open converted MIDI file |