/[svn]/linuxsampler/trunk/src/drivers/midi/MidiInputDevice.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/midi/MidiInputDevice.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 201 by schoenebeck, Tue Jul 13 22:10:21 2004 UTC revision 221 by schoenebeck, Fri Aug 20 17:25:19 2004 UTC
# Line 24  Line 24 
24    
25  namespace LinuxSampler {  namespace LinuxSampler {
26    
27      MidiInputDevice::MidiInputDevice(std::map<String,DeviceCreationParameter*> DriverParameters) {  // *************** ParameterActive ***************
28              this->Parameters = DriverParameters;  // *
29    
30        MidiInputDevice::ParameterActive::ParameterActive() : DeviceCreationParameterBool() {
31            InitWithDefault();
32      }      }
33    
34      MidiInputDevice::~MidiInputDevice() {      MidiInputDevice::ParameterActive::ParameterActive(String active) : DeviceCreationParameterBool(active) {
             std::map<String,DeviceCreationParameter*>::iterator iter = Parameters.begin();  
             while (iter != Parameters.end()) {  
                     Parameters.erase(iter);  
                     delete iter->second;  
                     iter++;  
             }  
35      }      }
36    
37      MidiInputDevice::MidiInputPort::~MidiInputPort() {      String MidiInputDevice::ParameterActive::Description() {
38              std::map<String,DeviceCreationParameter*>::iterator iter = Parameters.begin();          return "Enable / disable device";
             while (iter != Parameters.end()) {  
                     Parameters.erase(iter);  
                     delete iter->second;  
                     iter++;  
             }  
39      }      }
40    
41      MidiInputDevice::MidiInputPort::MidiInputPort(MidiInputDevice* pDevice, int portNumber) {      bool MidiInputDevice::ParameterActive::Fix() {
42              this->pDevice = pDevice;          return false;
             this->portNumber = portNumber;  
             Parameters["name"] = new ParameterName(this);  
43      }      }
44    
45      MidiInputDevice* MidiInputDevice::MidiInputPort::GetDevice() {      bool MidiInputDevice::ParameterActive::Mandatory() {
46              return pDevice;          return false;
47      }      }
48    
49      uint MidiInputDevice::MidiInputPort::GetPortNumber() {      std::map<String,DeviceCreationParameter*> MidiInputDevice::ParameterActive::DependsAsParameters() {
50              return portNumber;          return std::map<String,DeviceCreationParameter*>();
51      }      }
52    
53      std::map<String,DeviceCreationParameter*> MidiInputDevice::DeviceParameters() {      optional<bool> MidiInputDevice::ParameterActive::DefaultAsBool(std::map<String,String> Parameters) {
54              return Parameters;          return true;
55      }      }
56    
57      std::map<String,DeviceCreationParameter*> MidiInputDevice::MidiInputPort::DeviceParameters() {      void MidiInputDevice::ParameterActive::OnSetValue(bool b) throw (LinuxSamplerException) {
58              return Parameters;          if (b) ((MidiInputDevice*)pDevice)->Listen();
59            else ((MidiInputDevice*)pDevice)->StopListen();
60        }
61    
62        String MidiInputDevice::ParameterActive::Name() {
63            return "ACTIVE";
64        }
65    
66    
67    
68    // *************** ParameterPorts ***************
69    // *
70    
71        MidiInputDevice::ParameterPorts::ParameterPorts() : DeviceCreationParameterInt() {
72            InitWithDefault();
73        }
74    
75        MidiInputDevice::ParameterPorts::ParameterPorts(String val) : DeviceCreationParameterInt(val) {
76        }
77    
78        String MidiInputDevice::ParameterPorts::Description() {
79            return "Number of ports";
80        }
81    
82        bool MidiInputDevice::ParameterPorts::Fix() {
83            return false;
84        }
85    
86        bool MidiInputDevice::ParameterPorts::Mandatory() {
87            return false;
88        }
89    
90        std::map<String,DeviceCreationParameter*> MidiInputDevice::ParameterPorts::DependsAsParameters() {
91            return std::map<String,DeviceCreationParameter*>();
92      }      }
93    
94      void MidiInputDevice::MidiInputPort::DispatchNoteOn(uint8_t Key, uint8_t Velocity, uint MidiChannel) {      optional<int> MidiInputDevice::ParameterPorts::DefaultAsInt(std::map<String,String> Parameters) {
95          std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin();          return 0;
         std::set<Engine*>::iterator end        = MidiChannelMap[MidiChannel].end();  
         for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOn(Key, Velocity);  
96      }      }
97    
98      void MidiInputDevice::MidiInputPort::DispatchNoteOff(uint8_t Key, uint8_t Velocity, uint MidiChannel) {      optional<int> MidiInputDevice::ParameterPorts::RangeMinAsInt(std::map<String,String> Parameters) {
99          std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin();          return optional<int>::nothing;
         std::set<Engine*>::iterator end        = MidiChannelMap[MidiChannel].end();  
         for (; engineiter != end; engineiter++) (*engineiter)->SendNoteOff(Key, Velocity);  
100      }      }
101    
102      void MidiInputDevice::MidiInputPort::DispatchPitchbend(int Pitch, uint MidiChannel) {      optional<int> MidiInputDevice::ParameterPorts::RangeMaxAsInt(std::map<String,String> Parameters) {
103          std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin();          return optional<int>::nothing;
         std::set<Engine*>::iterator end        = MidiChannelMap[MidiChannel].end();  
         for (; engineiter != end; engineiter++) (*engineiter)->SendPitchbend(Pitch);  
104      }      }
105    
106      void MidiInputDevice::MidiInputPort::DispatchControlChange(uint8_t Controller, uint8_t Value, uint MidiChannel) {      std::vector<int> MidiInputDevice::ParameterPorts::PossibilitiesAsInt(std::map<String,String> Parameters) {
107          std::set<Engine*>::iterator engineiter = MidiChannelMap[MidiChannel].begin();          return std::vector<int>();
         std::set<Engine*>::iterator end        = MidiChannelMap[MidiChannel].end();  
         for (; engineiter != end; engineiter++) (*engineiter)->SendControlChange(Controller, Value);  
108      }      }
109    
110      void MidiInputDevice::MidiInputPort::Connect(Engine* pEngine, midi_chan_t MidiChannel) {      void MidiInputDevice::ParameterPorts::OnSetValue(int i) throw (LinuxSamplerException) {
111          if (MidiChannel < 0 || MidiChannel > 16)          ((MidiInputDevice*)pDevice)->AcquirePorts(i);
             throw MidiInputException("MIDI channel index out of bounds");  
         Disconnect(pEngine);  
         MidiChannelMap[MidiChannel].insert(pEngine);  
112      }      }
113    
114      void MidiInputDevice::MidiInputPort::Disconnect(Engine* pEngine) {      String MidiInputDevice::ParameterPorts::Name() {
115          try { for (int i = 0; i <= 16; i++) MidiChannelMap[i].erase(pEngine); }          return "PORTS";
116          catch(...) { /* NOOP */ }      }
117    
118    
119    
120    // *************** MidiInputDevice ***************
121    // *
122    
123        MidiInputDevice::MidiInputDevice(std::map<String,DeviceCreationParameter*> DriverParameters) {
124                this->Parameters = DriverParameters;
125        }
126    
127        MidiInputDevice::~MidiInputDevice() {
128                std::map<String,DeviceCreationParameter*>::iterator iter = Parameters.begin();
129                while (iter != Parameters.end()) {
130                        Parameters.erase(iter);
131                        delete iter->second;
132                        iter++;
133                }
134        }
135    
136        MidiInputPort* MidiInputDevice::GetPort(uint iPort) throw (MidiInputException) {
137            if (iPort >= Ports.size()) throw MidiInputException("There is no port " + ToString(iPort));
138            return Ports[iPort];
139        }
140    
141        std::map<String,DeviceCreationParameter*> MidiInputDevice::DeviceParameters() {
142                return Parameters;
143      }      }
144    
145      void MidiInputDevice::AcquirePorts(uint newPorts) {      void MidiInputDevice::AcquirePorts(uint newPorts) {

Legend:
Removed from v.201  
changed lines
  Added in v.221

  ViewVC Help
Powered by ViewVC