summaryrefslogtreecommitdiff
path: root/muse2/muse/sig.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/sig.h')
-rw-r--r--muse2/muse/sig.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/muse2/muse/sig.h b/muse2/muse/sig.h
new file mode 100644
index 00000000..6a561d6e
--- /dev/null
+++ b/muse2/muse/sig.h
@@ -0,0 +1,79 @@
+//=========================================================
+// MusE
+// Linux Music Editor
+// $Id: sig.h,v 1.2 2004/01/11 18:55:34 wschweer Exp $
+//
+// (C) Copyright 2000 Werner Schweer (ws@seh.de)
+//=========================================================
+
+#ifndef __SIG_H__
+#define __SIG_H__
+
+#include <map>
+
+#ifndef MAX_TICK
+#define MAX_TICK (0x7fffffff/100)
+#endif
+
+class Xml;
+
+//---------------------------------------------------------
+// Signature Event
+//---------------------------------------------------------
+
+struct SigEvent {
+ int z, n; // takt signatur
+ unsigned tick; // ab dieser Position gilt signatur
+ int bar; // precomputed
+
+ int read(Xml&);
+ void write(int, Xml&, int) const;
+
+ SigEvent() { }
+ SigEvent(int Z, int N, unsigned tk) {
+ z = Z;
+ n = N;
+ tick = tk;
+ bar = 0;
+ }
+ };
+
+//---------------------------------------------------------
+// SigList
+//---------------------------------------------------------
+
+typedef std::map<unsigned, SigEvent*, std::less<unsigned> > SIGLIST;
+typedef SIGLIST::iterator iSigEvent;
+typedef SIGLIST::const_iterator ciSigEvent;
+typedef SIGLIST::reverse_iterator riSigEvent;
+typedef SIGLIST::const_reverse_iterator criSigEvent;
+
+class SigList : public SIGLIST {
+ int ticks_beat(int N) const;
+ void normalize();
+ int ticksMeasure(int z, int n) const;
+
+ public:
+ SigList();
+ void clear();
+ void add(unsigned tick, int z, int n);
+ void del(unsigned tick);
+
+ void read(Xml&);
+ void write(int, Xml&) const;
+ void dump() const;
+
+ void timesig(unsigned tick, int& z, int& n) const;
+ void tickValues(unsigned t, int* bar, int* beat, unsigned* tick) const;
+ unsigned bar2tick(int bar, int beat, unsigned tick) const;
+
+ int ticksMeasure(unsigned tick) const;
+ int ticksBeat(unsigned tick) const;
+ unsigned raster(unsigned tick, int raster) const;
+ unsigned raster1(unsigned tick, int raster) const;
+ unsigned raster2(unsigned tick, int raster) const;
+ int rasterStep(unsigned tick, int raster) const;
+ };
+
+extern SigList sigmap;
+#endif