diff options
author | Tim E. Real <termtech@rogers.com> | 2012-12-10 02:31:35 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2012-12-10 02:31:35 +0000 |
commit | f26abd714f485fa04c3b1480cd0c712403d74e8f (patch) | |
tree | 94fe30bf80f32c7defa55bbb8485bff62e9afc0c /muse2/muse | |
parent | 4679425f17799eacd79941287c979a10f2e6b990 (diff) |
Fix VST names: Use filename if effect name or product name blank.
Fix bug 3594221: End-to-end midi notes don't retrigger. My bad.
Diffstat (limited to 'muse2/muse')
-rw-r--r-- | muse2/muse/mpevent.cpp | 2 | ||||
-rw-r--r-- | muse2/muse/vst_native.cpp | 24 | ||||
-rw-r--r-- | muse2/muse/widgets/vst_native_editor.cpp | 14 |
3 files changed, 26 insertions, 14 deletions
diff --git a/muse2/muse/mpevent.cpp b/muse2/muse/mpevent.cpp index 54546e89..a760be8b 100644 --- a/muse2/muse/mpevent.cpp +++ b/muse2/muse/mpevent.cpp @@ -103,6 +103,8 @@ int MEvent::sortingWeight() const switch(_type) { case ME_NOTEON: + if(_b == 0) // Is it really a note off? + return 7; return 98; case ME_NOTEOFF: return 7; diff --git a/muse2/muse/vst_native.cpp b/muse2/muse/vst_native.cpp index 8cc16227..4cfc6113 100644 --- a/muse2/muse/vst_native.cpp +++ b/muse2/muse/vst_native.cpp @@ -302,6 +302,7 @@ static void scanVstNativeLib(QFileInfo& fi) QString effectName; QString vendorString; QString productString; + int vendorVersion; std::vector<Synth*>::iterator is; int vst_version = 0; VstNativeSynth* new_synth = NULL; @@ -382,6 +383,14 @@ static void scanVstNativeLib(QFileInfo& fi) plugin->dispatcher(plugin, effGetProductString, 0, 0, buffer, 0); if (buffer[0]) productString = QString(buffer); + + vendorVersion = plugin->dispatcher(plugin, effGetVendorVersion, 0, 0, NULL, 0); + + if(effectName.isEmpty()) + effectName = fi.completeBaseName(); + if(productString.isEmpty()) + //productString = fi.completeBaseName(); + productString = effectName; // Make sure it doesn't already exist. for(is = MusEGlobal::synthis.begin(); is != MusEGlobal::synthis.end(); ++is) @@ -397,7 +406,7 @@ static void scanVstNativeLib(QFileInfo& fi) goto _ending; } - new_synth = new VstNativeSynth(fi, plugin, effectName, productString, vendorString, QString()); // TODO Version string? + new_synth = new VstNativeSynth(fi, plugin, effectName, productString, vendorString, QString::number(vendorVersion)); if(MusEGlobal::debugMsg) fprintf(stderr, "scanVstNativeLib: adding vst synth plugin:%s name:%s effectName:%s vendorString:%s productString:%s vstver:%d\n", @@ -1019,9 +1028,9 @@ VstIntPtr VstNativeSynthIF::hostCallback(VstInt32 opcode, VstInt32 index, VstInt case audioMasterCanDo: // string in ptr, see below if(!strcmp((char*)ptr, "sendVstEvents") || - !strcmp((char*)ptr, "receiveVstMidiEvent") || + // !strcmp((char*)ptr, "receiveVstMidiEvent") || // TODO !strcmp((char*)ptr, "sendVstMidiEvent") || - !strcmp((char*)ptr, "sendVstTimeInfo") || + // !strcmp((char*)ptr, "sendVstTimeInfo") || // TODO !strcmp((char*)ptr, "sizeWindow") || !strcmp((char*)ptr, "supplyIdle")) return 1; @@ -1228,15 +1237,6 @@ void VstNativeSynthIF::showNativeGui(bool v) | Qt::WindowCloseButtonHint; _editor = new MusEGui::VstNativeEditor(NULL, wflags); _editor->open(this); - - // TODO TEST Test if these might be helpful, especially opaque event. - // _editor->setBackgroundRole(QPalette::NoRole); - // _editor->setAttribute(Qt::WA_NoSystemBackground); - // _editor->setAttribute(Qt::WA_StaticContents); - // // This is absolutely required for speed! Otherwise painfully slow because of full background - // // filling, even when requesting small udpdates! Background is drawn by us. - // _editor->setAttribute(Qt::WA_OpaquePaintEvent); - // //_editor->setFrameStyle(QFrame::Raised | QFrame::StyledPanel); } } else diff --git a/muse2/muse/widgets/vst_native_editor.cpp b/muse2/muse/widgets/vst_native_editor.cpp index 8f739041..9c5b59d1 100644 --- a/muse2/muse/widgets/vst_native_editor.cpp +++ b/muse2/muse/widgets/vst_native_editor.cpp @@ -87,6 +87,15 @@ VstNativeEditor::VstNativeEditor(QWidget *parent, Qt::WindowFlags wflags) _sif(0) { setAttribute(Qt::WA_DeleteOnClose); + + // TODO TEST Test if these might be helpful, especially opaque event. + //setBackgroundRole(QPalette::NoRole); + //setAttribute(Qt::WA_NoSystemBackground); + // setAttribute(Qt::WA_StaticContents); + // // This is absolutely required for speed! Otherwise painfully slow because of full background + // // filling, even when requesting small udpdates! Background is drawn by us. + //setAttribute(Qt::WA_OpaquePaintEvent); + // //setFrameStyle(QFrame::Raised | QFrame::StyledPanel); } VstNativeEditor::~VstNativeEditor() @@ -123,8 +132,9 @@ void VstNativeEditor::open(MusECore::VstNativeSynthIF* sif) QWidget::setFixedSize(w, h); } - _sif->dispatch(effEditOpen, 0, value, ptr, 0.0f); - + int rv = _sif->dispatch(effEditOpen, 0, value, ptr, 0.0f); + //fprintf(stderr, "VstNativeEditor::open effEditOpen returned:%d effEditGetRect rect l:%d r:%d t:%d b:%d\n", rv, pRect->left, pRect->right, pRect->top, pRect->bottom); // REMOVE Tim. + #if defined(Q_WS_X11) _vstEditor = getXChildWindow(_display, (Window) winId()); if(_vstEditor) |