summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/simpl/base.cpp70
-rw-r--r--src/simpl/base.h51
2 files changed, 120 insertions, 1 deletions
diff --git a/src/simpl/base.cpp b/src/simpl/base.cpp
index e126433..028aeaf 100644
--- a/src/simpl/base.cpp
+++ b/src/simpl/base.cpp
@@ -23,6 +23,9 @@ using namespace std;
namespace Simpl {
+// ---------------------------------------------------------------------------
+// Peak
+// ---------------------------------------------------------------------------
Peak::Peak()
{
amplitude = 0.0;
@@ -69,4 +72,71 @@ bool Peak::is_free(string direction)
return true;
}
+// ---------------------------------------------------------------------------
+// Frame
+// ---------------------------------------------------------------------------
+Frame::Frame()
+{
+ size = 512;
+ init();
+}
+
+Frame::Frame(int frame_size)
+{
+ size = frame_size;
+ init();
+}
+
+Frame::~Frame()
+{
+}
+
+void Frame::init()
+{
+ audio.resize(size);
+ synth.resize(size);
+ residual.resize(size);
+ synth_residual.resize(size);
+ max_peaks = 100;
+ peaks.resize(max_peaks);
+ max_partials = 100;
+ partials.resize(max_partials);
+}
+
+int Frame::get_size()
+{
+ return size;
+}
+
+int Frame::get_max_peaks()
+{
+ return max_peaks;
+}
+
+int Frame::get_max_partials()
+{
+ return max_partials;
+}
+
+void Frame::set_size(int new_size)
+{
+ size = new_size;
+ audio.resize(size);
+ synth.resize(size);
+ residual.resize(size);
+ synth_residual.resize(size);
+}
+
+void Frame::set_max_peaks(int new_max_peaks)
+{
+ max_peaks = new_max_peaks;
+ peaks.resize(max_peaks);
+}
+
+void Frame::set_max_partials(int new_max_partials)
+{
+ max_partials = new_max_partials;
+ partials.resize(max_partials);
+}
+
} // end of namespace Simpl
diff --git a/src/simpl/base.h b/src/simpl/base.h
index 59a969e..5415548 100644
--- a/src/simpl/base.h
+++ b/src/simpl/base.h
@@ -31,7 +31,11 @@ namespace Simpl
typedef double number;
-// A Spectral Peak
+// ---------------------------------------------------------------------------
+// Peak
+//
+// A spectral Peak
+// ---------------------------------------------------------------------------
class Peak
{
public:
@@ -56,6 +60,51 @@ public:
typedef std::vector<Peak> Peaks;
+// ---------------------------------------------------------------------------
+// Partial
+// ---------------------------------------------------------------------------
+class Partial {};
+
+typedef std::vector<Partial> Partials;
+
+// ---------------------------------------------------------------------------
+// Frame
+//
+// Represents a frame of audio information.
+// This can be: - raw audio samples
+// - an unordered list of sinusoidal peaks
+// - an ordered list of partials
+// - synthesised audio samples
+// - residual samples
+// - synthesised residual samples
+// ---------------------------------------------------------------------------
+class Frame
+{
+protected:
+ int size;
+ int max_peaks;
+ int max_partials;
+ void init();
+
+public:
+ Peaks peaks;
+ Partials partials;
+ std::vector<number> audio;
+ std::vector<number> synth;
+ std::vector<number> residual;
+ std::vector<number> synth_residual;
+
+ Frame();
+ Frame(int frame_size);
+ ~Frame();
+ int get_size();
+ int get_max_peaks();
+ int get_max_partials();
+ void set_size(int new_size);
+ void set_max_peaks(int new_max_peaks);
+ void set_max_partials(int new_max_partials);
+};
+
} // end of namespace Simpl
#endif