/* * EventRouter.h * SmallSteps * * Created by Martin Klang on 24/02/2008. * Copyright 2008 __MyCompanyName__. All rights reserved. * */ #ifndef __EVENTROUTER_HEADER__ #define __EVENTROUTER_HEADER__ #include "juce.h" #include "ControlMode.h" #include "ControlType.h" class Control; class MultiMidiOutput; class ControlSurfaceComponent; class StepSequencer; class EventRouter { public: EventRouter(); ~EventRouter(); void initialise(ControlSurfaceComponent* surface); void setMidiSequencerOutput(MultiMidiOutput* output); void setMidiControlOutput(MultiMidiOutput* output); void setChannel(int newChannel); void switchMode(ControlMode newMode); void send(ControlType type, int controllerId, int value); void receive(ControlType type, int controllerId, int value); void updateSliders(int rowindex); protected: void remapSliders(int rowindex, ControlMode newMode); private: ControlMode mode; int channel; MultiMidiOutput* controloutput; StepSequencer* sequencer; ControlSurfaceComponent* surface; // Array< Array< Control* >* > ccControls; // 4 modes, 127 cc's Control* ccControls[4][127]; // 4 modes, 127 cc's // Component* ccComponents[4][127]; // 4 modes, 127 cc's int modeAcc, modeBcc, row1cc, row2cc, row3cc; // indices into cc values Array< Control* > noteControls; Array< Control* > stepControls; Array< Control* > stepOnControls; }; #endif // __EVENTROUTER_HEADER__