-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;
}
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();
}
void Save() const;
};
#endif /* JACK_H */

View File

@ -1,5 +1,6 @@
/* $Id$ */
#include <stdio.h>
#include "loop.h"
Loop::Loop()
@ -147,3 +148,19 @@ void Loop::Empty()
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
#define LOOP_H
#include <stdio.h>
#include <stdint.h>
#include <list>
#include <jack/jack.h>
@ -79,6 +80,8 @@ public:
{
return m_loop;
}
void Save(FILE *f) const;
};
#endif /* LOOP_H */

View File

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