aboutsummaryrefslogtreecommitdiff
path: root/src/midi_sequencer_impl.hpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2022-10-25 04:57:31 +0300
committerWohlstand <admin@wohlnet.ru>2022-10-25 04:57:31 +0300
commit24855412cd0a5e2dcf4ac8b62888d115cd20b3f0 (patch)
tree89111344f451ab6a94f8340abee10a9c605dcd5d /src/midi_sequencer_impl.hpp
parentd08222efbc76aa734b35bbbe7482f60a5e35a28c (diff)
downloadlibADLMIDI-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.hpp19
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