00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "MIDIIn.hxx"
00023 #include "MIDIManager.hxx"
00024
00025 namespace CLAM {
00026
00027 bool MIDIIn::ConcreteConfigure(const ProcessingConfig& c)
00028 throw(ErrProcessingObj)
00029 {
00030 CopyAsConcreteConfig(mConfig, c);
00031
00035 if (mpDevice)
00036 mpDevice->Unregister(*this);
00037
00038 MIDIManager *m;
00039
00042 try {
00043 m = &MIDIManager::Current();
00044 }
00045 catch (Err &e) {
00046 ErrProcessingObj ne("MIDIIn::ConcreteConfigure(): No MIDIManager found.",this);
00047 ne.Embed(e);
00048 throw(ne);
00049 }
00050
00053 bool res;
00054 try {
00055 res = m->Register(*this);
00056 }
00057 catch (Err &e) {
00058 ErrProcessingObj ne("MIDIIn::ConcreteConfigure(): Failed to register in MIDIManager.",this);
00059 ne.Embed(e);
00060 throw(ne);
00061 }
00062
00063 if (res == false)
00064 throw ErrProcessingObj("MIDIIn::ConcreteConfigure(): "
00065 "Failed to register in MIDIManager.",this);
00066
00067 return true;
00068 }
00069
00070 bool MIDIIn::ConcreteStart(void)
00071 {
00072 if (!mpDevice)
00073 throw(Err("MIDIIn::ConcreteStart(): No Device found!"));
00075 mpDevice->Start();
00076 return true;
00077 }
00078
00079 void MIDIIn::GetDeviceInfo(MIDIDevice::TInfo &info) const
00080 {
00081 if (mpDevice)
00082 mpDevice->GetInfo(info);
00083 else
00084 info.Reset();
00085 }
00086
00087 }
00088