summaryrefslogtreecommitdiff
path: root/pysoundtouch/src/pysoundtouch.h
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-06-19 16:24:27 -0400
committeryo mama <pepper@scannerjammer.com>2015-06-19 16:24:27 -0400
commit8adfb3bd99b4dcff2459756af090a640fd7a4b4a (patch)
treec1e6adddda335f4d36a98039ccc5ac867ae7296d /pysoundtouch/src/pysoundtouch.h
clone
Diffstat (limited to 'pysoundtouch/src/pysoundtouch.h')
-rw-r--r--pysoundtouch/src/pysoundtouch.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/pysoundtouch/src/pysoundtouch.h b/pysoundtouch/src/pysoundtouch.h
new file mode 100644
index 0000000..e9790af
--- /dev/null
+++ b/pysoundtouch/src/pysoundtouch.h
@@ -0,0 +1,61 @@
+/*
+ * python interface to soundtouch (the open-source audio processing library)
+ * Pitch, tempo, and rate shifting
+ */
+
+#ifndef __PY_SOUNDTOUCH_H__
+#define __PY_SOUNDTOUCH_H__
+
+#define __cplusplus
+
+#include <Python.h>
+#include <SoundTouch.h>
+
+#define BUFFER_SIZE 44100
+
+// Definition of the soundtouch object
+typedef struct {
+ PyObject_HEAD
+ int channels; // 1 or 2
+ soundtouch::SoundTouch* soundtouch;
+ union {
+ char chars[BUFFER_SIZE];
+ short shorts[BUFFER_SIZE/2];
+ } buffer;
+} py_soundtouch; /* Soundtouch */
+
+#define PY_SOUNDTOUCH(x) ((py_soundtouch *) x)
+
+extern PyTypeObject py_soundtouch_t;
+
+// Deallocate the SoundTouch object
+static void py_soundtouch_dealloc(PyObject* self, PyObject* args);
+
+// Adjust attributes of samples that have been entered
+static PyObject* py_soundtouch_set_rate(PyObject* self, PyObject* args);
+static PyObject* py_soundtouch_set_tempo(PyObject* self, PyObject* args);
+static PyObject* py_soundtouch_set_pitch(PyObject* self, PyObject* args);
+static PyObject* py_soundtouch_set_pitch_shift(PyObject* self, PyObject* args);
+
+// Move all waiting samples to the output
+static PyObject* py_soundtouch_flush(PyObject* self, PyObject* args);
+
+// Clear the buffer of samples
+static PyObject* py_soundtouch_clear(PyObject* self, PyObject* args);
+
+// Add new samples to be processed
+static PyObject* py_soundtouch_put_samples(PyObject* self, PyObject* args);
+
+// Extract processed samples from the output
+static PyObject* py_soundtouch_get_samples(PyObject* self, PyObject* args);
+
+// Return how many samples are available for output
+static PyObject* py_soundtouch_ready_count(PyObject* self, PyObject* args);
+
+// Return how many samples will be available given the current data
+static PyObject* py_soundtouch_waiting_count(PyObject* self, PyObject* args);
+
+// Get additional attributes from the SoundTouch object
+static PyObject* py_soundtouch_getattr(PyObject* self, char* name);
+
+#endif