1 #include "Nio.h" 2 #include "OutMgr.h" 3 #include "InMgr.h" 4 #include "EngineMgr.h" 5 #include "MidiIn.h" 6 #include "AudioOut.h" 7 #include "WavEngine.h" 8 #include <iostream> 9 #include <algorithm> 10 using std::string; 11 using std::set; 12 using std::cerr; 13 using std::endl; 14 15 InMgr *in = NULL; 16 OutMgr *out = NULL; 17 EngineMgr *eng = NULL; 18 string postfix; 19 20 bool Nio::autoConnect = false; 21 string Nio::defaultSource = IN_DEFAULT; 22 string Nio::defaultSink = OUT_DEFAULT; 23 init(void)24void Nio::init(void) 25 { 26 in = &InMgr::getInstance(); //Enable input wrapper 27 out = &OutMgr::getInstance(); //Initialize the Output Systems 28 eng = &EngineMgr::getInstance(); //Initialize The Engines 29 } 30 start()31bool Nio::start() 32 { 33 init(); 34 return eng->start(); 35 } 36 stop()37void Nio::stop() 38 { 39 eng->stop(); 40 } 41 setDefaultSource(string name)42void Nio::setDefaultSource(string name) 43 { 44 std::transform(name.begin(), name.end(), name.begin(), ::toupper); 45 defaultSource = name; 46 } 47 setDefaultSink(string name)48void Nio::setDefaultSink(string name) 49 { 50 std::transform(name.begin(), name.end(), name.begin(), ::toupper); 51 defaultSink = name; 52 } 53 setSource(string name)54bool Nio::setSource(string name) 55 { 56 return in->setSource(name); 57 } 58 setSink(string name)59bool Nio::setSink(string name) 60 { 61 return out->setSink(name); 62 } 63 setPostfix(std::string post)64void Nio::setPostfix(std::string post) 65 { 66 postfix = post; 67 } 68 getPostfix(void)69std::string Nio::getPostfix(void) 70 { 71 return postfix; 72 } 73 getSources(void)74set<string> Nio::getSources(void) 75 { 76 set<string> sources; 77 for(std::list<Engine *>::iterator itr = eng->engines.begin(); 78 itr != eng->engines.end(); ++itr) 79 if(dynamic_cast<MidiIn *>(*itr)) 80 sources.insert((*itr)->name); 81 return sources; 82 } 83 getSinks(void)84set<string> Nio::getSinks(void) 85 { 86 set<string> sinks; 87 for(std::list<Engine *>::iterator itr = eng->engines.begin(); 88 itr != eng->engines.end(); ++itr) 89 if(dynamic_cast<AudioOut *>(*itr)) 90 sinks.insert((*itr)->name); 91 return sinks; 92 } 93 getSource()94string Nio::getSource() 95 { 96 return in->getSource(); 97 } 98 getSink()99string Nio::getSink() 100 { 101 return out->getSink(); 102 } 103 104 #if JACK 105 #include <jack/jack.h> preferedSampleRate(unsigned & rate)106void Nio::preferedSampleRate(unsigned &rate) 107 { 108 jack_client_t *client = jack_client_open("temp-client", 109 JackNoStartServer, 0); 110 if(client) { 111 rate = jack_get_sample_rate(client); 112 jack_client_close(client); 113 } 114 } 115 #else preferedSampleRate(unsigned &)116void Nio::preferedSampleRate(unsigned &) 117 {} 118 #endif 119 waveNew(class WavFile * wave)120void Nio::waveNew(class WavFile *wave) 121 { 122 out->wave->newFile(wave); 123 } 124 waveStart(void)125void Nio::waveStart(void) 126 { 127 out->wave->Start(); 128 } 129 waveStop(void)130void Nio::waveStop(void) 131 { 132 out->wave->Stop(); 133 } 134 waveEnd(void)135void Nio::waveEnd(void) 136 { 137 out->wave->destroyFile(); 138 } 139