diff src/Modules/Output/OSCOutput.h @ 509:0284d2152e17

Add support for outputting featutes using OSC (for use with the Wekinator, etc).
author tomwalters@google.com
date Fri, 22 Jun 2012 12:22:08 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Modules/Output/OSCOutput.h	Fri Jun 22 12:22:08 2012 +0000
@@ -0,0 +1,68 @@
+// Copyright 2012, Tom Walters
+//
+// AIM-C: A C++ implementation of the Auditory Image Model
+// http://www.acousticscale.org/AIMC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*!
+ * \author Tom Walters <tom@acousticscale.org>
+ * \date created 2012/02/17
+ * \version \$Id$
+ */
+
+#ifndef AIMC_MODULES_OUTPUT_OSC_H_
+#define AIMC_MODULES_OUTPUT_OSC_H_
+
+#include "Support/Module.h"
+
+#include <string>
+
+#include "osc/OscOutboundPacketStream.h"
+#include "ip/UdpSocket.h"
+
+namespace aimc {
+class OSCOutput : public Module {
+ public:
+  explicit OSCOutput(Parameters *pParam);
+  virtual ~OSCOutput();
+
+  /*! \brief Process a buffer
+   */
+  virtual void Process(const SignalBank &input);
+
+ private:
+  /*! \brief Reset the internal state of the module
+   */
+  virtual void ResetInternal();
+
+  /*! \brief Prepare the module
+   *  \param input Input signal
+   *  \param output true on success false on failure
+   */
+  virtual bool InitializeInternal(const SignalBank &input);
+
+  float sample_rate_;
+  int buffer_length_;
+  int channel_count_;
+  string address_;
+  int port_;
+  int output_buffer_size_;
+  
+  UdpTransmitSocket* transmit_socket_;
+  osc::OutboundPacketStream* packet_stream_;
+  char* buffer_;
+};
+}  // namespace aimc
+
+#endif  // AIMC_MODULES_OUTPUT_OSC_H_