From f26abd714f485fa04c3b1480cd0c712403d74e8f Mon Sep 17 00:00:00 2001 From: "Tim E. Real" Date: Mon, 10 Dec 2012 02:31:35 +0000 Subject: 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. --- muse2/ChangeLog | 4 ++++ muse2/muse/mpevent.cpp | 2 ++ muse2/muse/vst_native.cpp | 24 ++++++++++++------------ muse2/muse/widgets/vst_native_editor.cpp | 14 ++++++++++++-- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/muse2/ChangeLog b/muse2/ChangeLog index 5c4b3d42..df71c19d 100644 --- a/muse2/ChangeLog +++ b/muse2/ChangeLog @@ -1,3 +1,7 @@ +09.12.2012: + - Fix VST names: Use filename if effect name or product name blank. (Tim) + - Fix bug 3594221: End-to-end midi notes don't retrigger. My bad. (Tim) + In MEvent::sortingWeight(): Note-ons with zero velocity are really note-offs. 08.12.2012: - Native VST fixes and changes. (Tim) Redid cmake options. Please do 'prune' and carefully reconfigure. 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::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) -- cgit v1.2.3