Mercurial > hg > svcore
comparison plugin/DSSIPluginInstance.cpp @ 117:c30728d5625c sv1-v0.9rc1
* Make vertical scale alignment modes work in note layer as well as time-value
  layer, and several significant fixes to it
* Make it possible to draw notes properly on the note layer
* Show units (and frequencies etc in note layer's case) in the time-value and
  note layer description boxes
* Minor fix to item edit dialog layout
* Some minor menu rearrangement
* Comment out a lot of debug output
* Add SV website and reference URLs to Help menu, and add code to (attempt to)
  open them in the user's preferred browser
| author | Chris Cannam | 
|---|---|
| date | Fri, 12 May 2006 14:40:43 +0000 | 
| parents | 97e085895524 | 
| children | 71f869dac40b | 
   comparison
  equal
  deleted
  inserted
  replaced
| 116:a08718723b20 | 117:c30728d5625c | 
|---|---|
| 23 | 23 | 
| 24 #include "DSSIPluginInstance.h" | 24 #include "DSSIPluginInstance.h" | 
| 25 #include "PluginIdentifier.h" | 25 #include "PluginIdentifier.h" | 
| 26 #include "LADSPAPluginFactory.h" | 26 #include "LADSPAPluginFactory.h" | 
| 27 | 27 | 
| 28 #define DEBUG_DSSI 1 | 28 //#define DEBUG_DSSI 1 | 
| 29 //#define DEBUG_DSSI_PROCESS 1 | 29 //#define DEBUG_DSSI_PROCESS 1 | 
| 30 | 30 | 
| 31 #define EVENT_BUFFER_SIZE 1023 | 31 #define EVENT_BUFFER_SIZE 1023 | 
| 32 | 32 | 
| 33 #ifdef DEBUG_DSSI | 33 #ifdef DEBUG_DSSI | 
| 159 } | 159 } | 
| 160 | 160 | 
| 161 float | 161 float | 
| 162 DSSIPluginInstance::getParameter(std::string name) const | 162 DSSIPluginInstance::getParameter(std::string name) const | 
| 163 { | 163 { | 
| 164 #ifdef DEBUG_DSSI | |
| 164 std::cerr << "DSSIPluginInstance::getParameter(" << name << ")" << std::endl; | 165 std::cerr << "DSSIPluginInstance::getParameter(" << name << ")" << std::endl; | 
| 166 #endif | |
| 165 for (unsigned int i = 0; i < m_controlPortsIn.size(); ++i) { | 167 for (unsigned int i = 0; i < m_controlPortsIn.size(); ++i) { | 
| 166 if (name == m_descriptor->LADSPA_Plugin->PortNames[m_controlPortsIn[i].first]) { | 168 if (name == m_descriptor->LADSPA_Plugin->PortNames[m_controlPortsIn[i].first]) { | 
| 169 #ifdef DEBUG_DSSI | |
| 167 std::cerr << "Matches port " << i << std::endl; | 170 std::cerr << "Matches port " << i << std::endl; | 
| 171 #endif | |
| 168 float v = getParameterValue(i); | 172 float v = getParameterValue(i); | 
| 173 #ifdef DEBUG_DSSI | |
| 169 std::cerr << "Returning " << v << std::endl; | 174 std::cerr << "Returning " << v << std::endl; | 
| 175 #endif | |
| 170 return v; | 176 return v; | 
| 171 } | 177 } | 
| 172 } | 178 } | 
| 173 | 179 | 
| 174 return 0.0; | 180 return 0.0; | 
| 175 } | 181 } | 
| 176 | 182 | 
| 177 void | 183 void | 
| 178 DSSIPluginInstance::setParameter(std::string name, float value) | 184 DSSIPluginInstance::setParameter(std::string name, float value) | 
| 179 { | 185 { | 
| 186 #ifdef DEBUG_DSSI | |
| 180 std::cerr << "DSSIPluginInstance::setParameter(" << name << ", " << value << ")" << std::endl; | 187 std::cerr << "DSSIPluginInstance::setParameter(" << name << ", " << value << ")" << std::endl; | 
| 188 #endif | |
| 181 | 189 | 
| 182 for (unsigned int i = 0; i < m_controlPortsIn.size(); ++i) { | 190 for (unsigned int i = 0; i < m_controlPortsIn.size(); ++i) { | 
| 183 if (name == m_descriptor->LADSPA_Plugin->PortNames[m_controlPortsIn[i].first]) { | 191 if (name == m_descriptor->LADSPA_Plugin->PortNames[m_controlPortsIn[i].first]) { | 
| 184 setParameterValue(i, value); | 192 setParameterValue(i, value); | 
| 185 break; | 193 break; | 
| 368 m_groupMap[m_identifier].insert(this); | 376 m_groupMap[m_identifier].insert(this); | 
| 369 } | 377 } | 
| 370 | 378 | 
| 371 DSSIPluginInstance::~DSSIPluginInstance() | 379 DSSIPluginInstance::~DSSIPluginInstance() | 
| 372 { | 380 { | 
| 381 #ifdef DEBUG_DSSI | |
| 373 std::cerr << "DSSIPluginInstance::~DSSIPluginInstance" << std::endl; | 382 std::cerr << "DSSIPluginInstance::~DSSIPluginInstance" << std::endl; | 
| 383 #endif | |
| 374 | 384 | 
| 375 if (m_threads.find(m_instanceHandle) != m_threads.end()) { | 385 if (m_threads.find(m_instanceHandle) != m_threads.end()) { | 
| 376 | 386 | 
| 377 for (std::set<NonRTPluginThread *>::iterator i = | 387 for (std::set<NonRTPluginThread *>::iterator i = | 
| 378 m_threads[m_instanceHandle].begin(); | 388 m_threads[m_instanceHandle].begin(); | 
| 652 | 662 | 
| 653 void | 663 void | 
| 654 DSSIPluginInstance::connectPorts() | 664 DSSIPluginInstance::connectPorts() | 
| 655 { | 665 { | 
| 656 if (!m_descriptor || !m_descriptor->LADSPA_Plugin->connect_port) return; | 666 if (!m_descriptor || !m_descriptor->LADSPA_Plugin->connect_port) return; | 
| 667 #ifdef DEBUG_DSSI | |
| 657 std::cerr << "DSSIPluginInstance::connectPorts: " << m_audioPortsIn.size() | 668 std::cerr << "DSSIPluginInstance::connectPorts: " << m_audioPortsIn.size() | 
| 658 << " audio ports in, " << m_audioPortsOut.size() << " out, " | 669 << " audio ports in, " << m_audioPortsOut.size() << " out, " | 
| 659 << m_outputBufferCount << " output buffers" << std::endl; | 670 << m_outputBufferCount << " output buffers" << std::endl; | 
| 671 #endif | |
| 660 | 672 | 
| 661 assert(sizeof(LADSPA_Data) == sizeof(float)); | 673 assert(sizeof(LADSPA_Data) == sizeof(float)); | 
| 662 assert(sizeof(sample_t) == sizeof(float)); | 674 assert(sizeof(sample_t) == sizeof(float)); | 
| 663 | 675 | 
| 664 LADSPAPluginFactory *f = dynamic_cast<LADSPAPluginFactory *>(m_factory); | 676 LADSPAPluginFactory *f = dynamic_cast<LADSPAPluginFactory *>(m_factory); | 
| 689 if (f) { | 701 if (f) { | 
| 690 float defaultValue = f->getPortDefault | 702 float defaultValue = f->getPortDefault | 
| 691 (m_descriptor->LADSPA_Plugin, m_controlPortsIn[i].first); | 703 (m_descriptor->LADSPA_Plugin, m_controlPortsIn[i].first); | 
| 692 *m_controlPortsIn[i].second = defaultValue; | 704 *m_controlPortsIn[i].second = defaultValue; | 
| 693 m_backupControlPortsIn[i] = defaultValue; | 705 m_backupControlPortsIn[i] = defaultValue; | 
| 706 #ifdef DEBUG_DSSI | |
| 694 std::cerr << "DSSIPluginInstance::connectPorts: set control port " << i << " to default value " << defaultValue << std::endl; | 707 std::cerr << "DSSIPluginInstance::connectPorts: set control port " << i << " to default value " << defaultValue << std::endl; | 
| 708 #endif | |
| 695 } | 709 } | 
| 696 } | 710 } | 
| 697 | 711 | 
| 698 for (unsigned int i = 0; i < m_controlPortsOut.size(); ++i) { | 712 for (unsigned int i = 0; i < m_controlPortsOut.size(); ++i) { | 
| 699 m_descriptor->LADSPA_Plugin->connect_port | 713 m_descriptor->LADSPA_Plugin->connect_port | 
