-Add ability to erase loops.

git-svn-id: http://svn.fuzzle.org/mloop/mloop/trunk@5 ba049829-c6ef-42ef-81ac-908dd8d2e907
remotes/git-svn@10
petern 2009-07-21 21:52:18 +00:00
parent 46e2d9f0ad
commit 4d5822a332
3 changed files with 19 additions and 4 deletions

View File

@ -249,6 +249,11 @@ void Jack::Run()
printf("Stopping loop %d\n", m_recording_loop); printf("Stopping loop %d\n", m_recording_loop);
m_loops[m_recording_loop].Stop(); m_loops[m_recording_loop].Stop();
break; break;
case 'e':
printf("Erasing loop %d\n", m_recording_loop);
m_loops[m_recording_loop].Empty();
break;
} }
} }
} }

View File

@ -63,6 +63,8 @@ void Loop::Start(bool loop)
{ {
if (m_state != LS_IDLE) return; if (m_state != LS_IDLE) return;
if (m_length == 0) return;
m_position = 0; m_position = 0;
m_iterator = m_events.begin(); m_iterator = m_events.begin();
m_state = loop ? LS_PLAY_LOOP : LS_PLAY_ONCE; m_state = loop ? LS_PLAY_LOOP : LS_PLAY_ONCE;
@ -121,10 +123,17 @@ void Loop::EndFromNoteCache(NoteCache &cache)
} }
} }
/* void Loop::Empty()
void Loop::Reset()
{ {
m_state = LS_IDLE; if (m_state != LS_IDLE) return;
m_length = 0;
m_position = 0; m_position = 0;
for (m_iterator = m_events.begin(); m_iterator != m_events.end(); ++m_iterator) {
jack_midi_event_t &event = (*m_iterator).first;
free(event.buffer);
}
m_events.clear();
} }
*/

View File

@ -35,6 +35,7 @@ public:
void SetLength(jack_nframes_t length); void SetLength(jack_nframes_t length);
void Start(bool loop); void Start(bool loop);
void Stop(); void Stop();
void Empty();
void StartFromNoteCache(NoteCache &cache); void StartFromNoteCache(NoteCache &cache);
void EndFromNoteCache(NoteCache &cache); void EndFromNoteCache(NoteCache &cache);