/usr/include/faust/gui/OSCControler.h is in faust-common 0.9.95~repack1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | /*
Faust Project
Copyright (C) 2011 Grame
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France
research@grame.fr
*/
#ifndef __OSCControler__
#define __OSCControler__
#include <string>
#include "faust/osc/FaustFactory.h"
class GUI;
typedef void (*ErrorCallback)(void*);
namespace oscfaust
{
class OSCIO;
class OSCSetup;
class OSCRegexp;
//--------------------------------------------------------------------------
/*!
\brief the main Faust OSC Lib API
The OSCControler is essentially a glue between the memory representation (in charge of the FaustFactory),
and the network services (in charge of OSCSetup).
*/
class OSCControler
{
int fUDPPort, fUDPOut, fUPDErr; // the udp ports numbers
std::string fDestAddress; // the osc messages destination address, used at initialization only
// to collect the address from the command line
OSCSetup* fOsc; // the network manager (handles the udp sockets)
OSCIO* fIO; // hack for OSC IO support (actually only relayed to the factory)
FaustFactory * fFactory; // a factory to build the memory represetnatin
bool fInit;
public:
/*
base udp port is chosen in an unassigned range from IANA PORT NUMBERS (last updated 2011-01-24)
see at http://www.iana.org/assignments/port-numbers
5507-5552 Unassigned
*/
enum { kUDPBasePort = 5510};
OSCControler(int argc, char *argv[], GUI* ui, OSCIO* io = 0, ErrorCallback errCallback = NULL, void* arg = NULL, bool init = true);
virtual ~OSCControler();
//--------------------------------------------------------------------------
// addnode, opengroup and closegroup are simply relayed to the factory
//--------------------------------------------------------------------------
// Add a node in the current group (top of the group stack)
template <typename T> void addnode(const char* label, T* zone, T init, T min, T max, bool input = true)
{ fFactory->addnode(label, zone, init, min, max, fInit, input); }
//--------------------------------------------------------------------------
// This method is used for alias messages. The arguments imin and imax allow
// to map incomming values from the alias input range to the actual range
template <typename T> void addAlias(const std::string& fullpath, T* zone, T imin, T imax, T init, T min, T max, const char* label)
{ fFactory->addAlias(fullpath, zone, imin, imax, init, min, max, label); }
void opengroup(const char* label) { fFactory->opengroup(label); }
void closegroup() { fFactory->closegroup(); }
//--------------------------------------------------------------------------
void run(); // starts the network services
void stop(); // stop the network services
int getUDPPort() const { return fUDPPort; }
int getUDPOut() const { return fUDPOut; }
int getUDPErr() const { return fUPDErr; }
const char* getDestAddress() const { return fDestAddress.c_str(); }
const char* getRootName() const; // probably useless, introduced for UI extension experiments
// By default, an osc interface emits all parameters. You can filter specific params dynamically.
static std::vector<OSCRegexp*> fFilteredPaths; // filtered paths will not be emitted
static void addFilteredPath(std::string path);
static bool isPathFiltered(std::string path);
static void resetFilteredPaths();
static float version(); // the Faust OSC library version number
static const char* versionstr(); // the Faust OSC library version number as a string
static int gXmit; // a static variable to control the transmission of values
// i.e. the use of the interface as a controler
};
#define kNoXmit 0
#define kAll 1
#define kAlias 2
}
#endif
|