+++ /dev/null
-
-#ifndef __osc_dsp__
-#define __osc_dsp__
-
-#include <stdio.h>
-#include "audio/audio.h"
-#include "audio/dsp.h"
-#include "OSCIO.h"
-
-/******************************************************************************
-*******************************************************************************
-
- OSC AUDIO INTERFACE
-
-*******************************************************************************
-*******************************************************************************/
-
-#define kMaxBuffer 4096
-
-class oscdsp : public audio, public oscfaust::OSCIO {
- dsp* fDsp;
- float ** fInBuffers, **fOutBuffers;
-
- public:
- oscdsp(const char * dst, int argc, char *argv[]) : OSCIO(dst), fDsp(0), fInBuffers(0), fOutBuffers(0)
- {
- for (int i = 1; i < argc-1; i++)
- if (!strcmp(argv[i], "-iodst")) setDest (argv[i+1]);
- }
- virtual ~oscdsp() { stop(); }
-
- virtual bool init(const char*name, dsp* DSP) {
- fDsp = DSP;
- fDsp->init(44100);
- fInBuffers = new float*[numInputs()];
- fOutBuffers = new float*[numOutputs()];
- for (int i= 0; i < numInputs(); i++)
- fInBuffers[i] = new float[kMaxBuffer];
- for (int i= 0; i < numOutputs(); i++)
- fOutBuffers [i] = new float[kMaxBuffer];
- return true;
- }
-
- virtual bool start() { return true; }
- virtual void stop() {}
-
- void compute( int nframes ) {
- fDsp->compute(nframes, fInBuffers, fOutBuffers);
- for (int i= 0; i < numOutputs(); i++)
- send( nframes, fOutBuffers [i], i);
- }
-
- void receive( int nvalues, float * val ) {
- int inChans = numInputs();
- if (!inChans) {
- compute(nvalues);
- return;
- }
-
- for (int i=0; i < nvalues; i++) {
- int c = i % inChans;
- int frame = i / inChans;
- fInBuffers[c][frame] = val[i];
- }
- compute (nvalues / inChans);
- }
- int numOutputs() const { return fDsp ? fDsp->getNumOutputs() : 0; }
- int numInputs() const { return fDsp ? fDsp->getNumInputs() : 0; }
-};
-
-#endif