From 7c3c5dd0f8d7089bd50282e9dcd56e36798e18cf Mon Sep 17 00:00:00 2001 From: Georg Holzmann Date: Tue, 12 Jul 2005 14:40:21 +0000 Subject: initial commit of pix_recNN svn path=/trunk/externals/grh/; revision=3320 --- pix_recNN/pix_recNN.h | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100755 pix_recNN/pix_recNN.h (limited to 'pix_recNN/pix_recNN.h') diff --git a/pix_recNN/pix_recNN.h b/pix_recNN/pix_recNN.h new file mode 100755 index 0000000..944ebd3 --- /dev/null +++ b/pix_recNN/pix_recNN.h @@ -0,0 +1,204 @@ +///////////////////////////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// pix_recNN~ +// Calculates an audio signal out of a video frame +// with a recurrent neural network +// +// (see RecurrentNeuralNet.h for more info) +// +// header file +// +// Copyright (c) 2005 Georg Holzmann +// (and of course lot's of other developers for PD and GEM) +// +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////////////////////////// + + +#ifndef _INCLUDE_PIX_RECNN_H__ +#define _INCLUDE_PIX_RECNN_H__ + +#include +#include +#include +#include "Base/GemPixObj.h" +#include "NNet.h" +#include "RecurrentNeuron.h" + + +using std::string; +using std::endl; +using std::ifstream; +using std::ofstream; +using std::istringstream; + +using namespace TheBrain; + + +/*----------------------------------------------------------------- + * CLASS + * pix_recNN~ + * + * calculates an audio signal out of a video frame with + * a recurrent neural network + * + * KEYWORDS + * pix audio + * + * DESCRIPTION + * 1 signal-outlet + */ +class GEM_EXTERN pix_recNN : public GemPixObj +{ + CPPEXTERN_HEADER(pix_recNN, GemPixObj) + + public: + + /* Constructor + */ + pix_recNN(t_floatarg arg0, t_floatarg arg1, t_floatarg arg2); + + protected: + + /* Destructor + */ + virtual ~pix_recNN(); + + + //----------------------------------- + /* Image STUFF: + */ + + /* The pixBlock with the current image + * pixBlock m_pixBlock; + */ + unsigned char *m_data_; + int m_xsize_; + int m_ysize_; + int m_csize_; + int m_format_; + + /* precision of the image: + * 1 means every pixel is taken for the calculation, + * 2 every second pixel, 3 every third, ... + */ + int precision_; + + /* temporary float for calculation + */ + float **temp_pix_; + + /* processImage + */ + virtual void processImage(imageStruct &image); + + + //----------------------------------- + /* Neural Network STUFF: + */ + + /* the neural net + * (size: buffsize) + */ + NNet *net_; + + /* training modus on + * (will only be on for one audio buffer) + */ + bool train_on_; + + /* the number of neurons, which should be + * THE SAME as the audio buffer size + */ + int neuron_nr_; + + /* memory determines, how much results from the past + * are used to calculate an output value + * (0 means only the result from the current frame, + * 2 also from the last frame, etc.) + */ + int memory_; + + + //----------------------------------- + /* Audio STUFF: + */ + + /* the outlet + */ + t_outlet *out0_; + + /* DSP perform + */ + static t_int* perform(t_int* w); + + /* DSP-Message + */ + virtual void dspMess(void *data, t_signal** sp); + + + //----------------------------------- + /* File IO: + */ + + /* saves the contents of the current net to file + */ + virtual void saveNet(string filename); + + /* loads the parameters of the net from file + */ + virtual void loadNet(string filename); + + private: + + /* a helper to build a new net + */ + virtual void buildNewNet(); + + //----------------------------------- + /* static members + * (interface to the PD world) + */ + + /* set/get the precision of the image calculation + */ + static void setPrecision(void *data, t_floatarg precision); + static void getPrecision(void *data); + + /* method to train the network + */ + static void setTrainOn(void *data); + + /* changes the number of neurons + * (which should be the same as the audio buffer) + * ATTENTION: a new net will be initialized + */ + static void setNeurons(void *data, t_floatarg neurons); + static void getNeurons(void *data); + + /* changes the nblock size + * ATTENTION: a new net will be initialized + */ + static void setMemory(void *data, t_floatarg memory); + static void getMemory(void *data); + + /* sets the learnrate of the net + */ + static void setLearnrate(void *data, t_floatarg learn_rate); + static void getLearnrate(void *data); + + /* DSP callback + */ + static void dspMessCallback(void* data, t_signal** sp); + + /* File IO: + */ + static void saveToFile(void *data, t_symbol *filename); + static void loadFromFile(void *data, t_symbol *filename); +}; + +#endif // for header file -- cgit v1.2.1