/* * lightorgan.h * polynomeSerial * * Created by Colin Mann on 9/18/10. * Copyright 2010 Mannchester Analog. All rights reserved. * */ #ifndef _LIGHT_ORGAN_H #define _LIGHT_ORGAN_H #include "lo/lo.h" #include "AsynchronousSerialDeviceReader.h" #include "SerialDevice.h" #include "types.h" #include "RtMidi.h" #define LIGHTORGAN_LISTEN_PORT "10007" #define LIGHTORGAN_PORT_SENDER "10006" #define LB_BULBOFF 0x00 //0x0n n = bulb to turn off #define LB_BULBON 0x10 //0x1n n = bulb to turn on #define LB_PEDAL 0x20 //0x2n n = position, 0=released, 1 = pressed #define LB_CLEAR 0x40 //0x4n n = state, 0 = off, 1 = on. #define LB_SETMODE 0x50 //0x5n n = mode as listed below (1-4) #define LB_HOMESET 0xF0 //0xFn n = home position (0-11) i.e. c, c#, d, d#...a, a#, b #define MIDI_CC_MESSAGE 176 #define MIDI_NOTE_OFF 128 #define MIDI_NOTE_ON 144 #define MIDI_CC_PEDAL 64 #define messageGetType(message) ((message).data0 & 0xF0) using namespace std; void LightOrganOscError(int num, const char *msg, const char *path); int LightOrgan_TouchHandler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data); int LightOrgan_setBulbHandler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data); int LightOrgan_modeHandler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data); int LightOrgan_clearHandler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data); int LightOrgan_setHomeHandler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data); typedef struct { uint8 data0; uint8 data1; } lorgan_message; class LightOrgan{ public: LightOrgan(); virtual ~LightOrgan(); void start(); lo_server_thread getLightOrganServerThread(void) { return _LightOrganOscThread; } lo_address getLightOrganSender(void) { return _LightOrganOscSender; } SerialDevice * getSerialDevice(void) { return _LightOrganSerial; } AsynchronousSerialDeviceReader * getSerialDeviceReader(void) { return & _LightOrganDeviceReader; } private: lo_server_thread _LightOrganOscThread; lo_address _LightOrganOscSender; AsynchronousSerialDeviceReader _LightOrganDeviceReader; SerialDevice *_LightOrganSerial; RtMidiIn *_LightOrganMidiIn; }; #endif