-Add: Initial incomplete support for saving state.

git-svn-id: http://svn.fuzzle.org/mloop/trunk@24 ba049829-c6ef-42ef-81ac-908dd8d2e907
master
petern 2009-07-23 07:55:39 +00:00
parent b33dd1a800
commit 7e385cb58e
5 changed files with 35 additions and 0 deletions

View File

@ -184,3 +184,12 @@ bool Jack::Run()
return false; return false;
} }
void Jack::Save() const
{
FILE *f = fopen("test.txt", "w");
for (int i = 0; i < NUM_LOOPS; i++) {
fprintf(f, "LOOP %d\n", i);
m_loops[i].Save(f);
}
fclose(f);
}

View File

@ -89,6 +89,8 @@ public:
{ {
return m_loops[loop].Tempo(); return m_loops[loop].Tempo();
} }
void Save() const;
}; };
#endif /* JACK_H */ #endif /* JACK_H */

View File

@ -1,5 +1,6 @@
/* $Id$ */ /* $Id$ */
#include <stdio.h>
#include "loop.h" #include "loop.h"
Loop::Loop() Loop::Loop()
@ -147,3 +148,19 @@ void Loop::Empty()
m_events.clear(); m_events.clear();
} }
void Loop::Save(FILE *f) const
{
fprintf(f, "%u %f %f\n", m_length, m_position, m_tempo);
fprintf(f, "%lu\n", m_events.size());
EventList::const_iterator it;
for (it = m_events.begin(); it != m_events.end(); ++it) {
const jack_midi_event_t &ev = *it;
fprintf(f, "%u %lu", ev.time, ev.size);
for (uint i = 0; i < ev.size; i++) {
fprintf(f, " %02X", ev.buffer[i]);
}
fprintf(f, "\n");
}
}

View File

@ -3,6 +3,7 @@
#ifndef LOOP_H #ifndef LOOP_H
#define LOOP_H #define LOOP_H
#include <stdio.h>
#include <stdint.h> #include <stdint.h>
#include <list> #include <list>
#include <jack/jack.h> #include <jack/jack.h>
@ -79,6 +80,8 @@ public:
{ {
return m_loop; return m_loop;
} }
void Save(FILE *f) const;
}; };
#endif /* LOOP_H */ #endif /* LOOP_H */

View File

@ -314,6 +314,10 @@ bool UI::Run(Jack &j)
m_edit_timer = EDIT_TIMER_RESET; m_edit_timer = EDIT_TIMER_RESET;
} }
break; break;
case 'S':
j.Save();
break;
} }
return false; return false;