00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "MIDIOut.hxx"
00023 #include "MIDIManager.hxx"
00024
00025 namespace CLAM {
00026
00027 bool MIDIOut::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 {
00044 m = &MIDIManager::Current();
00045 }
00046 catch (Err &e)
00047 {
00048 ErrProcessingObj ne("MIDIOut::ConcreteConfigure(): No MIDIManager found.",this);
00049 ne.Embed(e);
00050 throw(ne);
00051 }
00052
00055 bool res;
00056 try {
00057 res = m->Register(*this);
00058 }
00059 catch (Err &e) {
00060 ErrProcessingObj ne("MIDIOut::ConcreteConfigure(): Failed to register in MIDIManager.",this);
00061 ne.Embed(e);
00062 throw(ne);
00063 }
00064
00065 if (res == false)
00066 throw ErrProcessingObj("MIDIOut::ConcreteConfigure(): "
00067 "Failed to register in MIDIManager.",this);
00068 return true;
00069
00070 }
00071
00072 bool MIDIOut::ConcreteStart(void)
00073 {
00074 if (!mpDevice)
00075 throw Err("MIDIOut::ConcreteStart(): No Device found!");
00077 mpDevice->Start();
00078 return true;
00079 }
00080
00081 void MIDIOut::GetDeviceInfo(MIDIDevice::TInfo &info) const
00082 {
00083 if (mpDevice)
00084 mpDevice->GetInfo(info);
00085 else
00086 info.Reset();
00087 }
00088
00089 }
00090