diff --git a/ChangeLog b/ChangeLog index 8646c9976..ca7470993 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,9 @@ ChangeLog GIT HEAD +- MIDI Controller mappings are now shown on floating tool-tips. + (EXPERIMENTAL) + - Custom color themes are now file based (*.conf); legacy still preserved ntl. (EXPERIMENTAL) diff --git a/src/qtractorMidiControl.cpp b/src/qtractorMidiControl.cpp index a16b600f5..5014f1d79 100644 --- a/src/qtractorMidiControl.cpp +++ b/src/qtractorMidiControl.cpp @@ -537,7 +537,7 @@ void qtractorMidiControl::sendController ( // Insert/remove observer mappings. void qtractorMidiControl::mapMidiObserver ( - qtractorMidiControlObserver *pMidiObserver ) + qtractorMidiControlObserver *pMidiObserver, QWidget *pWidget ) { const MapKey key( pMidiObserver->type(), @@ -545,10 +545,12 @@ void qtractorMidiControl::mapMidiObserver ( pMidiObserver->param()); m_observerMap.insert(key, pMidiObserver); + + mapMidiObserverWidget(pMidiObserver, pWidget); } void qtractorMidiControl::unmapMidiObserver ( - qtractorMidiControlObserver *pMidiObserver ) + qtractorMidiControlObserver *pMidiObserver, bool bResetWidgets ) { const MapKey key( pMidiObserver->type(), @@ -556,6 +558,9 @@ void qtractorMidiControl::unmapMidiObserver ( pMidiObserver->param()); m_observerMap.remove(key); + + if (bResetWidgets) + unmapMidiObserverWidgets(pMidiObserver, true); } // Observer map predicate. @@ -571,12 +576,60 @@ bool qtractorMidiControl::isMidiObserverMapped ( // Observer finder. qtractorMidiControlObserver *qtractorMidiControl::findMidiObserver ( - ControlType ctype, unsigned short iChannel, unsigned short iParam) const + ControlType ctype, unsigned short iChannel, unsigned short iParam ) const { return m_observerMap.value(MapKey(ctype, iChannel, iParam), nullptr); } +// Observer (widget) mappings. +void qtractorMidiControl::mapMidiObserverWidget ( + qtractorMidiControlObserver *pMidiObserver, QWidget *pWidget ) +{ + if (pWidget) + m_widgetMap.insert(pMidiObserver, pWidget); + + QString sToolTip = pMidiObserver->subject()->name(); + + if (isMidiObserverMapped(pMidiObserver)) { + sToolTip += '\n'; + sToolTip += '\n'; + sToolTip += QObject::tr("MIDI Controller: %1, %2, %3") + .arg(qtractorMidiControl::nameFromType(pMidiObserver->type())) + .arg(QString::number(pMidiObserver->channel() + 1)) + .arg(QString::number(pMidiObserver->param())); + } + + QListIterator iter(m_widgetMap.values(pMidiObserver)); + while (iter.hasNext()) + iter.next()->setToolTip(sToolTip); +} + + +void qtractorMidiControl::unmapMidiObserverWidget ( + qtractorMidiControlObserver *pMidiObserver, QWidget *pWidget ) +{ + if (pWidget) { + m_widgetMap.remove(pMidiObserver, pWidget); + } else { + m_widgetMap.remove(pMidiObserver); + } +} + + +void qtractorMidiControl::unmapMidiObserverWidgets ( + qtractorMidiControlObserver *pMidiObserver, bool bResetWidgets ) +{ + if (bResetWidgets) { + QListIterator iter(m_widgetMap.values(pMidiObserver)); + while (iter.hasNext()) + iter.next()->setToolTip(pMidiObserver->subject()->name()); + } else { + m_widgetMap.remove(pMidiObserver); + } +} + + //---------------------------------------------------------------------- // qtractorMidiControl::Document -- MIDI control document. // diff --git a/src/qtractorMidiControl.h b/src/qtractorMidiControl.h index c45df2e2c..b31d15388 100644 --- a/src/qtractorMidiControl.h +++ b/src/qtractorMidiControl.h @@ -39,6 +39,7 @@ class qtractorDocument; class qtractorMidiControlObserver; class QDomElement; +class QWidget; //---------------------------------------------------------------------- @@ -313,8 +314,10 @@ class qtractorMidiControl const ControlMap& controlMap() const { return m_controlMap; } // Insert/remove observer mappings. - void mapMidiObserver(qtractorMidiControlObserver *pMidiObserver); - void unmapMidiObserver(qtractorMidiControlObserver *pMidiObserver); + void mapMidiObserver( + qtractorMidiControlObserver *pMidiObserver, QWidget *pWidget = nullptr); + void unmapMidiObserver( + qtractorMidiControlObserver *pMidiObserver, bool bResetWidgets = false); // Observer map predicate. bool isMidiObserverMapped(qtractorMidiControlObserver *pMidiObserver) const; @@ -325,6 +328,14 @@ class qtractorMidiControl unsigned short iChannel, unsigned short iParam) const; + // Observer (widget) mappings. + void mapMidiObserverWidget( + qtractorMidiControlObserver *pMidiObserver, QWidget *pWidget); + void unmapMidiObserverWidget( + qtractorMidiControlObserver *pMidiObserver, QWidget *pWidget); + void unmapMidiObserverWidgets( + qtractorMidiControlObserver *pMidiObserver, bool bResetWidgets = false); + // Forward declaration. class Document; @@ -482,6 +493,10 @@ class qtractorMidiControl ObserverMap m_observerMap; + typedef QMultiHash WidgetMap; + + WidgetMap m_widgetMap; + // MIDI control non catch-up/hook global option. static bool g_bSync; diff --git a/src/qtractorMidiControlCommand.cpp b/src/qtractorMidiControlCommand.cpp index 7109f121b..8e5650326 100644 --- a/src/qtractorMidiControlCommand.cpp +++ b/src/qtractorMidiControlCommand.cpp @@ -1,7 +1,7 @@ // qtractorMidiControlCommand.cpp // /**************************************************************************** - Copyright (C) 2010-2019, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2010-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -30,8 +30,10 @@ // Constructor. qtractorMidiControlObserverCommand::qtractorMidiControlObserverCommand ( - const QString& sName, qtractorMidiControlObserver *pMidiObserver ) - : qtractorCommand(sName), m_pMidiObserver(pMidiObserver) + const QString& sName, qtractorMidiControlObserver *pMidiObserver, + QWidget *pMidiObserverWidget ) : qtractorCommand(sName), + m_pMidiObserver(pMidiObserver), + m_pMidiObserverWidget(pMidiObserverWidget) { setRefresh(false); } @@ -47,7 +49,7 @@ bool qtractorMidiControlObserverCommand::mapMidiObserver (void) const if (pMidiControl->isMidiObserverMapped(m_pMidiObserver)) return false; - pMidiControl->mapMidiObserver(m_pMidiObserver); + pMidiControl->mapMidiObserver(m_pMidiObserver, m_pMidiObserverWidget); return true; } @@ -62,7 +64,7 @@ bool qtractorMidiControlObserverCommand::unmapMidiObserver (void) const if (!pMidiControl->isMidiObserverMapped(m_pMidiObserver)) return false; - pMidiControl->unmapMidiObserver(m_pMidiObserver); + pMidiControl->unmapMidiObserver(m_pMidiObserver, true); return true; } diff --git a/src/qtractorMidiControlCommand.h b/src/qtractorMidiControlCommand.h index 47dee6952..b3ad517e1 100644 --- a/src/qtractorMidiControlCommand.h +++ b/src/qtractorMidiControlCommand.h @@ -1,7 +1,7 @@ // qtractorMidiControlCommand.h // /**************************************************************************** - Copyright (C) 2010-2019, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2010-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -27,10 +27,6 @@ #include "qtractorMidiControl.h" -// Forward declarations... -class qtractorMidiControlObserver; - - //---------------------------------------------------------------------- // class qtractorMidiControlObserverCommand - declaration. // @@ -41,7 +37,8 @@ class qtractorMidiControlObserverCommand : public qtractorCommand // Constructor. qtractorMidiControlObserverCommand(const QString& sName, - qtractorMidiControlObserver *pMidiObserver = nullptr); + qtractorMidiControlObserver *pMidiObserver, + QWidget *pMidiObserverWidget = nullptr); protected: @@ -53,6 +50,8 @@ class qtractorMidiControlObserverCommand : public qtractorCommand // Instance variables. qtractorMidiControlObserver *m_pMidiObserver; + + QWidget *m_pMidiObserverWidget; }; @@ -65,9 +64,12 @@ class qtractorMidiControlObserverMapCommand : public qtractorMidiControlObserver public: // Constructor. - qtractorMidiControlObserverMapCommand(qtractorMidiControlObserver *pMidiObserver) + qtractorMidiControlObserverMapCommand( + qtractorMidiControlObserver *pMidiObserver, + QWidget *pMidiObserverWidget = nullptr) : qtractorMidiControlObserverCommand( - QObject::tr("set controller"), pMidiObserver) {} + QObject::tr("set controller"), + pMidiObserver, pMidiObserverWidget) {} // MIDI control observer command methods. bool redo() { return mapMidiObserver(); } @@ -84,9 +86,12 @@ class qtractorMidiControlObserverUnmapCommand : public qtractorMidiControlObserv public: // Constructor. - qtractorMidiControlObserverUnmapCommand(qtractorMidiControlObserver *pMidiObserver) + qtractorMidiControlObserverUnmapCommand( + qtractorMidiControlObserver *pMidiObserver, + QWidget *pMidiObserverWidget = nullptr) : qtractorMidiControlObserverCommand( - QObject::tr("reset controller"), pMidiObserver) {} + QObject::tr("reset controller"), + pMidiObserver, pMidiObserverWidget) {} // MIDI control observer command methods. bool redo() { return unmapMidiObserver(); } diff --git a/src/qtractorMidiControlObserver.cpp b/src/qtractorMidiControlObserver.cpp index d5c406d53..d2818c844 100644 --- a/src/qtractorMidiControlObserver.cpp +++ b/src/qtractorMidiControlObserver.cpp @@ -70,8 +70,11 @@ qtractorMidiControlObserver::qtractorMidiControlObserver ( qtractorMidiControlObserver::~qtractorMidiControlObserver (void) { qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); - if (pMidiControl && pMidiControl->isMidiObserverMapped(this)) - pMidiControl->unmapMidiObserver(this); + if (pMidiControl) { + pMidiControl->unmapMidiObserverWidgets(this); + if (pMidiControl->isMidiObserverMapped(this)) + pMidiControl->unmapMidiObserver(this); + } } @@ -79,7 +82,6 @@ qtractorMidiControlObserver::~qtractorMidiControlObserver (void) unsigned short qtractorMidiControlObserver::midiScale (void) const { if (m_ctype == qtractorMidiEvent::PITCHBEND || - m_ctype == qtractorMidiEvent::CONTROL14 || m_ctype == qtractorMidiEvent::REGPARAM || m_ctype == qtractorMidiEvent::NONREGPARAM) diff --git a/src/qtractorMidiControlObserverForm.cpp b/src/qtractorMidiControlObserverForm.cpp index 976a314d4..9cab31c6a 100644 --- a/src/qtractorMidiControlObserverForm.cpp +++ b/src/qtractorMidiControlObserverForm.cpp @@ -1,7 +1,7 @@ // qtractorMidiControlObserverForm.cpp // /**************************************************************************** - Copyright (C) 2005-2022, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2005-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -38,8 +38,6 @@ #include "qtractorTracks.h" #include "qtractorTrackList.h" -#include "qtractorCurveCommand.h" - #include #include @@ -54,8 +52,7 @@ qtractorMidiControlObserverForm::g_pMidiObserverForm = nullptr; // Constructor. qtractorMidiControlObserverForm::qtractorMidiControlObserverForm ( - QWidget *pParent, Qt::WindowFlags wflags ) - : QDialog(pParent, wflags) + QWidget *pParent, Qt::WindowFlags wflags ) : QDialog(pParent, wflags) { // Setup UI struct... m_ui.setupUi(this); @@ -69,6 +66,9 @@ qtractorMidiControlObserverForm::qtractorMidiControlObserverForm ( // Target object. m_pMidiObserver = nullptr; + // Target widget. + m_pMidiObserverWidget = nullptr; + // Proxy object. m_pMidiObserverAction = nullptr; @@ -146,6 +146,7 @@ qtractorMidiControlObserverForm::getInstance (void) // Pseudo-constructors. void qtractorMidiControlObserverForm::showInstance ( qtractorMidiControlObserver *pMidiObserver, + QWidget *pMidiObserverWidget, QWidget *pParent, Qt::WindowFlags wflags ) { qtractorMidiControlObserverForm *pMidiObserverForm @@ -160,6 +161,7 @@ void qtractorMidiControlObserverForm::showInstance ( pMidiObserverForm = new qtractorMidiControlObserverForm(pParent, wflags); pMidiObserverForm->setMidiObserver(pMidiObserver); + pMidiObserverForm->setMidiObserverWidget(pMidiObserverWidget); pMidiObserverForm->show(); } @@ -226,12 +228,25 @@ void qtractorMidiControlObserverForm::setMidiObserver ( stabilizeForm(); } + qtractorMidiControlObserver *qtractorMidiControlObserverForm::midiObserver (void) const { return m_pMidiObserver; } +void qtractorMidiControlObserverForm::setMidiObserverWidget ( + QWidget *pMidiObserverWidget ) +{ + m_pMidiObserverWidget = pMidiObserverWidget; +} + +QWidget *qtractorMidiControlObserverForm::midiObserverWidget (void) const +{ + return m_pMidiObserverWidget; +} + + // Action (control) observer accessors. void qtractorMidiControlObserverForm::setMidiObserverAction ( QAction *pMidiObserverAction ) @@ -260,6 +275,7 @@ void qtractorMidiControlObserverForm::cleanup (void) { // Cleanup. m_pMidiObserverAction = nullptr; + m_pMidiObserverWidget = nullptr; m_pMidiObserver = nullptr; // Aint't dirty no more... @@ -372,7 +388,7 @@ void qtractorMidiControlObserverForm::accept (void) } // Map the damn control.... - pMidiControl->unmapMidiObserver(m_pMidiObserver); + pMidiControl->unmapMidiObserver(m_pMidiObserver, true); m_pMidiObserver->setType(ctype); m_pMidiObserver->setChannel(iChannel); @@ -388,7 +404,8 @@ void qtractorMidiControlObserverForm::accept (void) } else { qtractorSession *pSession = qtractorSession::getInstance(); if (pSession) pSession->execute( - new qtractorMidiControlObserverMapCommand(m_pMidiObserver)); + new qtractorMidiControlObserverMapCommand( + m_pMidiObserver, m_pMidiObserverWidget)); } cleanup(); @@ -456,13 +473,14 @@ void qtractorMidiControlObserverForm::reset (void) qtractorActionControl *pActionControl = qtractorActionControl::getInstance(); if (pMidiControl && pActionControl) { - pMidiControl->unmapMidiObserver(m_pMidiObserver); + pMidiControl->unmapMidiObserver(m_pMidiObserver, true); pActionControl->removeMidiObserver(m_pMidiObserverAction); } } else { qtractorSession *pSession = qtractorSession::getInstance(); if (pSession) pSession->execute( - new qtractorMidiControlObserverUnmapCommand(m_pMidiObserver)); + new qtractorMidiControlObserverUnmapCommand( + m_pMidiObserver, m_pMidiObserverWidget)); } cleanup(); @@ -545,6 +563,10 @@ Q_DECLARE_METATYPE(qtractorMidiControlObserver *); QAction *qtractorMidiControlObserverForm::addMidiControlAction ( QWidget *pParent, QWidget *pWidget, qtractorMidiControlObserver *pMidiObserver ) { + qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); + if (pMidiControl) + pMidiControl->mapMidiObserverWidget(pMidiObserver, pWidget); + QAction *pAction = new QAction( QIcon(":/images/itemControllers.png"), tr("&MIDI Controller..."), pWidget); @@ -574,8 +596,11 @@ void qtractorMidiControlObserverForm::midiControlAction ( qtractorMidiControlObserver *pMidiObserver = pAction->data().value (); - if (pMidiObserver) - qtractorMidiControlObserverForm::showInstance(pMidiObserver, pParent); + if (pMidiObserver) { + QWidget *pWidget = qobject_cast (pAction->parent()); + qtractorMidiControlObserverForm::showInstance( + pMidiObserver, pWidget, pParent); + } } diff --git a/src/qtractorMidiControlObserverForm.h b/src/qtractorMidiControlObserverForm.h index bf5e3c3d9..f28c44dc6 100644 --- a/src/qtractorMidiControlObserverForm.h +++ b/src/qtractorMidiControlObserverForm.h @@ -1,7 +1,7 @@ // qtractorMidiControlObserverForm.h // /**************************************************************************** - Copyright (C) 2005-2022, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2005-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -49,8 +49,11 @@ class qtractorMidiControlObserverForm : public QDialog static qtractorMidiControlObserverForm *getInstance(); // Pseudo-constructors. - static void showInstance(qtractorMidiControlObserver *pMidiObserver, + static void showInstance( + qtractorMidiControlObserver *pMidiObserver, + QWidget *pMidiObserverWidget = nullptr, QWidget *pParent = nullptr, Qt::WindowFlags wflags = Qt::WindowFlags()); + static void showInstance(QAction *pMidiObserverAction, QWidget *pParent = nullptr, Qt::WindowFlags wflags = Qt::WindowFlags()); @@ -58,6 +61,10 @@ class qtractorMidiControlObserverForm : public QDialog void setMidiObserver(qtractorMidiControlObserver *pMidiObserver); qtractorMidiControlObserver *midiObserver() const; + // Observer (widget) accessors. + void setMidiObserverWidget(QWidget *pMidiObserverWidget); + QWidget *midiObserverWidget() const; + // Action (control) observer accessors. void setMidiObserverAction(QAction *pMidiObserverAction); QAction *midiObserverAction() const; @@ -110,6 +117,9 @@ protected slots: // Target object. qtractorMidiControlObserver *m_pMidiObserver; + // Target widget. + QWidget *m_pMidiObserverWidget; + // Proxy object. QAction *m_pMidiObserverAction; diff --git a/src/qtractorMidiControlObserverForm.ui b/src/qtractorMidiControlObserverForm.ui index 65f8206de..ae112a93b 100644 --- a/src/qtractorMidiControlObserverForm.ui +++ b/src/qtractorMidiControlObserverForm.ui @@ -3,7 +3,7 @@ rncbc aka Rui Nuno Capela qtractor - An Audio/MIDI multi-track sequencer. - Copyright (C) 2005-2022, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2005-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/src/qtractorMixer.cpp b/src/qtractorMixer.cpp index ee65d12ed..f43a90c63 100644 --- a/src/qtractorMixer.cpp +++ b/src/qtractorMixer.cpp @@ -1,7 +1,7 @@ // qtractorMixer.cpp // /**************************************************************************** - Copyright (C) 2005-2023, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2005-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -88,6 +88,27 @@ qtractorMonitorButton::qtractorMonitorButton ( } +// Destructor. +qtractorMonitorButton::~qtractorMonitorButton (void) +{ + qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); + if (pMidiControl == nullptr) + return; + + qtractorMidiControlObserver *pMidiObserver = nullptr; + + if (m_pTrack) + pMidiObserver = m_pTrack->monitorObserver(); + else + if (m_pBus) { + pMidiObserver = m_pBus->monitorObserver(); + } + + if (pMidiObserver) + pMidiControl->unmapMidiObserverWidget(pMidiObserver, this); +} + + // Common initializer. void qtractorMonitorButton::initMonitorButton (void) { @@ -105,7 +126,7 @@ void qtractorMonitorButton::setTrack ( qtractorTrack *pTrack ) m_pTrack = pTrack; m_pBus = nullptr; - QPushButton::setToolTip(tr("Monitor (rec)")); +// QPushButton::setToolTip(tr("Monitor (rec)")); updateMonitor(); // Visitor setup. } @@ -117,7 +138,7 @@ void qtractorMonitorButton::setBus ( qtractorBus *pBus ) m_pBus = pBus; m_pTrack = nullptr; - QPushButton::setToolTip(tr("Monitor (thru)")); +// QPushButton::setToolTip(tr("Monitor (thru)")); updateMonitor(); // Visitor setup. } @@ -170,7 +191,7 @@ void qtractorMonitorButton::updateMonitor (void) addMidiControlAction(m_pBus->monitorObserver()); QPushButton::setEnabled(true); } else { - QPushButton::setEnabled(false); + QPushButton::setEnabled(false); } } @@ -254,6 +275,17 @@ qtractorMixerStrip::~qtractorMixerStrip (void) pMidiMixerMeter->setAudioOutputMonitor(nullptr); } + qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); + if (pMidiControl&& m_pMixerMeter) { + qtractorMidiControlObserver *pMidiObserver; + pMidiObserver = m_pMixerMeter->monitor()->panningObserver(); + pMidiControl->unmapMidiObserverWidget( + pMidiObserver, m_pMixerMeter->panSlider()); + pMidiObserver = m_pMixerMeter->monitor()->gainObserver(); + pMidiControl->unmapMidiObserverWidget( + pMidiObserver, m_pMixerMeter->gainSlider()); + } + // No need to delete child widgets, Qt does it all for us #if 0 if (m_pMidiLabel) diff --git a/src/qtractorMixer.h b/src/qtractorMixer.h index e38d865c6..181373667 100644 --- a/src/qtractorMixer.h +++ b/src/qtractorMixer.h @@ -1,7 +1,7 @@ // qtractorMixer.h // /**************************************************************************** - Copyright (C) 2005-2023, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2005-2024, rncbc aka Rui Nuno Capela. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -67,6 +67,9 @@ class qtractorMonitorButton : public qtractorMidiControlButton qtractorMonitorButton(qtractorTrack *pTrack, QWidget *pParent = nullptr); qtractorMonitorButton(qtractorBus *pBus, QWidget *pParent = nullptr); + // Destructor. + ~qtractorMonitorButton(); + // Specific track accessors. void setTrack(qtractorTrack *pTrack); qtractorTrack *track() const diff --git a/src/qtractorPluginForm.cpp b/src/qtractorPluginForm.cpp index d22d98aa2..cc93614c1 100644 --- a/src/qtractorPluginForm.cpp +++ b/src/qtractorPluginForm.cpp @@ -158,6 +158,12 @@ qtractorPluginForm::qtractorPluginForm ( // Destructor. qtractorPluginForm::~qtractorPluginForm (void) { + qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); + if (pMidiControl && m_pPlugin) { + pMidiControl->unmapMidiObserverWidget( + m_pPlugin->activateObserver(), m_ui.ActivateToolButton); + } + clear(); delete m_pDirectAccessParamMenu; @@ -190,8 +196,6 @@ void qtractorPluginForm::setPlugin ( qtractorPlugin *pPlugin ) qtractorSubject::flushQueue(true); // Set activate button MIDI controller observer... - m_ui.ActivateToolButton->setToolTip( - m_pPlugin->activateSubject()->name()); addMidiControlAction( m_ui.ActivateToolButton, m_pPlugin->activateObserver()); @@ -1480,8 +1484,15 @@ qtractorPluginParamWidget::qtractorPluginParamWidget ( } updateCurveButton(); +} - QWidget::setToolTip(m_pParam->subject()->name()); + +// Destructor. +qtractorPluginParamWidget::~qtractorPluginParamWidget (void) +{ + qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); + if (pMidiControl && m_pParam) + pMidiControl->unmapMidiObserverWidget(m_pParam->observer(), this); } diff --git a/src/qtractorPluginForm.h b/src/qtractorPluginForm.h index dfa752da6..56e7a8ea2 100644 --- a/src/qtractorPluginForm.h +++ b/src/qtractorPluginForm.h @@ -160,10 +160,13 @@ class qtractorPluginParamWidget : public QWidget public: - // Constructors. + // Constructor. qtractorPluginParamWidget(qtractorPlugin::Param *pParam, QWidget *pParent = nullptr); + // Destructor. + ~qtractorPluginParamWidget(); + // Refreshner-loader method. void refresh(); diff --git a/src/qtractorTrackButton.cpp b/src/qtractorTrackButton.cpp index aaf2a0b29..fe4fafbb3 100644 --- a/src/qtractorTrackButton.cpp +++ b/src/qtractorTrackButton.cpp @@ -101,6 +101,32 @@ qtractorTrackButton::qtractorTrackButton ( qtractorTrack *pTrack, } +// Destructor. +qtractorTrackButton::~qtractorTrackButton (void) +{ + qtractorMidiControl *pMidiControl = qtractorMidiControl::getInstance(); + if (pMidiControl == nullptr) + return; + + qtractorMidiControlObserver *pMidiObserver = nullptr; + + switch (m_toolType) { + case qtractorTrack::Record: + pMidiObserver = m_pTrack->recordObserver(); + break; + case qtractorTrack::Mute: + pMidiObserver = m_pTrack->muteObserver(); + break; + case qtractorTrack::Solo: + pMidiObserver = m_pTrack->soloObserver(); + break; + } + + if (pMidiObserver) + pMidiControl->unmapMidiObserverWidget(pMidiObserver, this); +} + + // Visitors overload. void qtractorTrackButton::updateValue ( float fValue ) { @@ -168,7 +194,6 @@ void qtractorTrackButton::updateTrack (void) } if (pMidiObserver) { - QPushButton::setToolTip(pMidiObserver->subject()->name()); pMidiObserver->setCurveList(m_pTrack->curveList()); addMidiControlAction(pMidiObserver); } diff --git a/src/qtractorTrackButton.h b/src/qtractorTrackButton.h index 4c54b8c15..376a45105 100644 --- a/src/qtractorTrackButton.h +++ b/src/qtractorTrackButton.h @@ -72,6 +72,9 @@ class qtractorTrackButton : public qtractorMidiControlButton qtractorTrackButton(qtractorTrack *pTrack, qtractorTrack::ToolType toolType, QWidget *pParent = 0); + // Destructor. + ~qtractorTrackButton(); + // Specific accessors. void setTrack(qtractorTrack *pTrack); qtractorTrack *track() const; diff --git a/src/translations/qtractor_cs.ts b/src/translations/qtractor_cs.ts index 6cc39ceaa..cd5a8762d 100644 --- a/src/translations/qtractor_cs.ts +++ b/src/translations/qtractor_cs.ts @@ -679,12 +679,12 @@ Stopa: "%1" Vstup: "%2" Výstup: "%3"%1 (MIDI) - + set controller Nastavit ovladač - + reset controller Nastavit ovladač znovu @@ -891,7 +891,7 @@ Stopa: "%1" Vstup: "%2" Výstup: "%3"Kategorie: - + Aux Send: %1 Aux Send: %1 @@ -910,6 +910,11 @@ Stopa: "%1" Vstup: "%2" Výstup: "%3"%1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6604,82 +6609,82 @@ sezením znovu. qtractorMidiControl - + Note On Nota zapnuta - + Note Off Nota vypnuta - + Key Press Stisknutí klávesy - + Controller Ovladač - + Pgm Change Změna Pgm - + Chan Press Stisknutí kanálu - + Pitch Bend Změna výšky tónu - + RPN RPN - + NRPN NRPN - + Control 14 Kontrol 14 - + Track Gain Zesílení stopy - + Track Panning Přejíždění stopy - + Track Monitor Sledování stopy - + Track Record Nahrávání stopy - + Track Mute Ztlumení stopy - + Track Solo Sólo pro stopu @@ -7115,12 +7120,12 @@ Chcete použít soubory s ovladači? - + MIDI Controller Ovladač MIDI - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7129,7 +7134,7 @@ Do you want to replace the mapping? Chcete nahradit přiřazení? - + Some settings have been changed. Do you want to apply the changes? @@ -7138,32 +7143,32 @@ Do you want to apply the changes? Chcete použít tyto změny? - + &MIDI Controller... Ovladač &MIDI... - + &Automation &Automatizace - + &Lock &Zamknout - + &Play &Přehrát - + &Record &Nahrávat - + &Clear &Smazat @@ -11628,22 +11633,22 @@ P < 0 : zpomalení posunu. qtractorMixer - + Inputs Vstupy - + Tracks Stopy - + Outputs Výstupy - + Mixer Mixážní pult @@ -11659,22 +11664,22 @@ P < 0 : zpomalení posunu. qtractorMixerRackWidget - + &Inputs &Vstupy - + &Outputs &Výstupy - + &Monitor &Sledování - + &Buses... &Sběrnice... @@ -11682,42 +11687,42 @@ P < 0 : zpomalení posunu. qtractorMixerStrip - + inputs Vstupy - + outputs Výstupy - + Connect %1 Připojit %1 - + (Audio) (Zvuk) - + (MIDI) (MIDI) - + (None) (Žádný) - + In Vstup - + Out Výstup @@ -11725,20 +11730,10 @@ P < 0 : zpomalení posunu. qtractorMonitorButton - + monitor Sledovat - - - Monitor (rec) - Sledovat (nahrávání) - - - - Monitor (thru) - Sledovat (skrz: "thru") - qtractorOptionsForm @@ -13418,66 +13413,66 @@ Chcete použít tyto změny? qtractorPluginForm - + Page %1 Strana %1 - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 instance, %4 kanál(y). - - + + (none) (Žádné) - + Open Preset Otevřít přednastavení - - + + Preset files (*.%1) Soubory s přednastaveními (*.%1) - - + + All files (*.*) Všechny soubory (*.*) - - + + Error Chyba - + Latency: %1 ms (%2 frames) Prodleva: %1 ms (%2 snímků) - + (no latency) (bez prodlevy) - + &None &Žádné - + Save Preset Uložit přednastavení - + Preset could not be loaded from file: "%1". @@ -13490,7 +13485,7 @@ Sorry. Promiňte. - + Preset could not be saved to file: "%1". @@ -13503,12 +13498,12 @@ Sorry. Promiňte. - + Warning Upozornění - + About to delete preset: "%1" (%2) @@ -13821,7 +13816,7 @@ Jste si jistý? qtractorPluginParamWidget - + Open File Otevřít soubor diff --git a/src/translations/qtractor_de.ts b/src/translations/qtractor_de.ts index 15cae5272..2f2e33748 100644 --- a/src/translations/qtractor_de.ts +++ b/src/translations/qtractor_de.ts @@ -353,12 +353,12 @@ MIDI: - + set controller - + reset controller @@ -889,7 +889,7 @@ Spur: "%1" Eingang: "%2" Ausgang: "%3"Kategorien: - + Aux Send: %1 @@ -908,6 +908,11 @@ Spur: "%1" Eingang: "%2" Ausgang: "%3"%1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6553,82 +6558,82 @@ is highly recommended. qtractorMidiControl - + Note On Note an - + Note Off Note aus - + Key Press Tastendruck - + Controller - + Pgm Change Programmwechsel - + Chan Press - + Pitch Bend Tonhöhenbeugung - + RPN - + NRPN - + Control 14 - + Track Gain Spurverstärkung - + Track Panning Spurpanorama - + Track Monitor Spurüberwachung - + Track Record Spuraufnahme - + Track Mute Spur stummschalten - + Track Solo Spur auf Solo schalten @@ -7055,12 +7060,12 @@ Do you want to apply to controller files? - + MIDI Controller MIDI Controller - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7069,7 +7074,7 @@ Do you want to replace the mapping? Wollen sie die Zuordnung ersetzen? - + Some settings have been changed. Do you want to apply the changes? @@ -7077,32 +7082,32 @@ Do you want to apply the changes? Wollen Sie diese übernehmen? - + &MIDI Controller... &MIDI Controller... - + &Automation &Automatisierung - + &Lock &Sperren - + &Play &Abspielen - + &Record Auf&nehmen - + &Clear &Löschen @@ -11529,22 +11534,22 @@ Are you sure? qtractorMixer - + Inputs Eingänge - + Tracks Spuren - + Outputs Ausgänge - + Mixer Mischpult @@ -11560,22 +11565,22 @@ Are you sure? qtractorMixerRackWidget - + &Inputs &Eingänge - + &Outputs &Ausgänge - + &Monitor &Monitor - + &Buses... &Busse... @@ -11583,42 +11588,42 @@ Are you sure? qtractorMixerStrip - + inputs Eingänge - + outputs Ausgänge - + Connect %1 Verbinde %1 - + (Audio) (Audio) - + (MIDI) (MIDI) - + (None) (Keine) - + In - + Out @@ -11626,20 +11631,10 @@ Are you sure? qtractorMonitorButton - + monitor Monitor - - - Monitor (rec) - Monitor (rec) - - - - Monitor (thru) - Monitor (thru) - qtractorOptionsForm @@ -13407,46 +13402,46 @@ Wollen Sie diese übernehmen? - + Page %1 Seite %1 - + %1 [%2], %3 instance(s), %4 channel(s). - - + + (none) (keines) - + Open Preset - - + + Preset files (*.%1) - - + + All files (*.*) Alle Dateien (*.*) - - + + Error Fehler - + Preset could not be loaded from file: "%1". @@ -13455,12 +13450,12 @@ Sorry. - + Save Preset - + Preset could not be saved to file: "%1". @@ -13469,12 +13464,12 @@ Sorry. - + Warning Warnung - + About to delete preset: "%1" (%2) @@ -13483,17 +13478,17 @@ Are you sure? - + &None &Nichts - + Latency: %1 ms (%2 frames) - + (no latency) @@ -13704,7 +13699,7 @@ Are you sure? qtractorPluginParamWidget - + Open File Datei öffnen diff --git a/src/translations/qtractor_es.ts b/src/translations/qtractor_es.ts index 868c6ca9f..2e03d2132 100644 --- a/src/translations/qtractor_es.ts +++ b/src/translations/qtractor_es.ts @@ -435,12 +435,12 @@ MIDI: (%1% vol) - + set controller configurar controlador - + reset controller reiniciar controlador @@ -891,7 +891,7 @@ Pista: "%1" Entrada: "%2" Salida: "%3"Categorías: - + Aux Send: %1 @@ -910,6 +910,11 @@ Pista: "%1" Entrada: "%2" Salida: "%3"%1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6602,82 +6607,82 @@ el archivo de sesión actual. qtractorMidiControl - + Note On Encendido de nota - + Note Off Apagado de nota - + Key Press Pulsación de tecla - + Controller Controlador - + Pgm Change Cambio de programa - + Chan Press Chan Press - + Pitch Bend Portamento - + RPN RPN - + NRPN NRPN - + Control 14 Control 14 - + Track Gain Ganancia de pista - + Track Panning Paneo de pista - + Track Monitor Monitor de pista - + Track Record Grabación de pista - + Track Mute Silenciar pista - + Track Solo Solo de pista @@ -7112,12 +7117,12 @@ la siguiente ves que inicie este programa. - + MIDI Controller Controlador MIDI - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7126,7 +7131,7 @@ Do you want to replace the mapping? ¿Desea reemplazar el mapeo? - + Some settings have been changed. Do you want to apply the changes? @@ -7135,32 +7140,32 @@ Do you want to apply the changes? ¿Desea aplicar los cambios? - + &MIDI Controller... Controlador &MIDI... - + &Automation &Automatización - + &Lock &Bloquear - + &Play &Reproducir - + &Record &Grabar - + &Clear &Limpiar @@ -11623,22 +11628,22 @@ Are you sure? qtractorMixer - + Inputs Entradas - + Tracks Pistas - + Outputs Salidas - + Mixer Mezcladora @@ -11654,22 +11659,22 @@ Are you sure? qtractorMixerRackWidget - + &Inputs &Entradas - + &Outputs &Salidas - + &Monitor &Monitor - + &Buses... &Buses... @@ -11677,42 +11682,42 @@ Are you sure? qtractorMixerStrip - + inputs entradas - + outputs salidas - + Connect %1 Conectar %1 - + (Audio) (Audio) - + (MIDI) (MIDI) - + (None) (Ninguno) - + In - + Out @@ -11720,20 +11725,10 @@ Are you sure? qtractorMonitorButton - + monitor monitor - - - Monitor (rec) - Monitor (rec) - - - - Monitor (thru) - Monitor (thru) - qtractorOptionsForm @@ -13504,46 +13499,46 @@ Do you want to apply the changes? Acceso Directo - + Page %1 Página %1 - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 instancia(s), %4 canal(es). - - + + (none) (ninguno) - + Open Preset Abrir Preajuste - - + + Preset files (*.%1) Archivos de preajuste (*.%1) - - + + All files (*.*) Todos los archivos (*.*) - - + + Error Error - + Preset could not be loaded from file: "%1". @@ -13556,12 +13551,12 @@ Sorry. Lo siento. - + Save Preset Guardar Preajuste - + Preset could not be saved to file: "%1". @@ -13574,12 +13569,12 @@ Sorry. Lo siento. - + Warning Advertencia - + About to delete preset: "%1" (%2) @@ -13592,17 +13587,17 @@ Are you sure? ¿Esta seguro? - + Latency: %1 ms (%2 frames) Latencia: %1 ms (%2 cuadros) - + (no latency) (sin latencia) - + &None &Nada @@ -13817,7 +13812,7 @@ Are you sure? qtractorPluginParamWidget - + Open File Abrir Archivo diff --git a/src/translations/qtractor_fr.ts b/src/translations/qtractor_fr.ts index 957133a56..88b7f4b86 100644 --- a/src/translations/qtractor_fr.ts +++ b/src/translations/qtractor_fr.ts @@ -352,12 +352,12 @@ MIDI: (%1% vol) - + set controller active le contrôleur - + reset controller réinitialise le contrôleur @@ -890,7 +890,7 @@ Piste : "%1" Entrée: "%2" Sortie: "%3"Catégories : - + Aux Send: %1 Envoi aux : %1 @@ -909,6 +909,11 @@ Piste : "%1" Entrée: "%2" Sortie: "%3"%1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6602,82 +6607,82 @@ est près et en fonctionnement puis redémarrez la session. qtractorMidiControl - + Note On Note On - + Note Off Note Off - + Key Press Key Press - + Controller Contrôleur - + Pgm Change Pgm Change - + Chan Press Chan Press - + Pitch Bend Pitch Bend - + RPN RPN - + NRPN NRPN - + Control 14 Control 14 - + Track Gain Gain de piste - + Track Panning Panoramique de piste - + Track Monitor Moniteur de piste - + Track Record Enregistrement de piste - + Track Mute Silencage de piste - + Track Solo Mise en solo de piste @@ -7113,12 +7118,12 @@ Voulez-vous mettre à jour les fichiers contrôleur ? - + MIDI Controller Contrôleur MIDI - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7127,7 +7132,7 @@ Do you want to replace the mapping? Voulez-vous remplacer l'association ? - + Some settings have been changed. Do you want to apply the changes? @@ -7136,32 +7141,32 @@ Do you want to apply the changes? Voulez-vous appliquer les changements ? - + &MIDI Controller... Contrôleur &MIDI... - + &Automation &Automation - + &Lock Verroui&ller - + &Play &Jouer - + &Record En&registrer - + &Clear &Nettoyer @@ -11626,22 +11631,22 @@ Are you sure? qtractorMixer - + Inputs Entrées - + Tracks Pistes - + Outputs Sorties - + Mixer Mixeur @@ -11657,22 +11662,22 @@ Are you sure? qtractorMixerRackWidget - + &Inputs &Entrées - + &Outputs &Sorties - + &Monitor &Moniteur - + &Buses... &Bus... @@ -11680,42 +11685,42 @@ Are you sure? qtractorMixerStrip - + inputs entrées - + outputs sorties - + Connect %1 Connecter %1 - + (Audio) (Audio) - + (MIDI) (MIDI) - + (None) (Rien) - + In Entrée - + Out Sortie @@ -11723,20 +11728,10 @@ Are you sure? qtractorMonitorButton - + monitor moniteur - - - Monitor (rec) - Moniteur (enr) - - - - Monitor (thru) - Moniteur (thru) - qtractorOptionsForm @@ -13507,46 +13502,46 @@ Voulez-vous appliquer les changements ? Accès direct - + Page %1 Page %1 - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 instance(s), %4 canaux. - - + + (none) (rien) - + Open Preset Ouvrir le préréglage - - + + Preset files (*.%1) Fichiers de préréglages (*.%1) - - + + All files (*.*) Tous les fichiers (*.*) - - + + Error Erreur - + Preset could not be loaded from file: "%1". @@ -13559,12 +13554,12 @@ Sorry. Désolé. - + Save Preset Sauvegarder le préréglage - + Preset could not be saved to file: "%1". @@ -13577,12 +13572,12 @@ Sorry. Désolé. - + Warning Attention - + About to delete preset: "%1" (%2) @@ -13595,17 +13590,17 @@ Are you sure? Êtes-vous sûr ? - + Latency: %1 ms (%2 frames) Latence : %1 ms (%2 trames) - + (no latency) (pas de latence) - + &None &Rien @@ -13820,7 +13815,7 @@ Are you sure? qtractorPluginParamWidget - + Open File Ouvrir un fichier diff --git a/src/translations/qtractor_it.ts b/src/translations/qtractor_it.ts index 969a12f15..894f963a5 100644 --- a/src/translations/qtractor_it.ts +++ b/src/translations/qtractor_it.ts @@ -353,12 +353,12 @@ MIDI: (%1% vol) - + set controller imposta controller - + reset controller resetta controller @@ -891,7 +891,7 @@ Traccia: "%1" Ingresso: "%2" Uscita: "%3" - + Aux Send: %1 @@ -910,6 +910,11 @@ Traccia: "%1" Ingresso: "%2" Uscita: "%3"%1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6592,82 +6597,82 @@ sia avviato ed in esecuzione, poi riavvia la sessione. qtractorMidiControl - + Note On - + Note Off - + Key Press - + Controller - + Pgm Change Pgm Change - + Chan Press Chan Press - + Pitch Bend Pitch Bend - + RPN - + NRPN - + Control 14 - + Track Gain - + Track Panning - + Track Monitor - + Track Record - + Track Mute - + Track Solo @@ -7103,12 +7108,12 @@ Vuoi applicarla ai file dei controller? - + MIDI Controller Controller MIDI - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7117,7 +7122,7 @@ Do you want to replace the mapping? Vuoi sostituire la mappatura? - + Some settings have been changed. Do you want to apply the changes? @@ -7126,32 +7131,32 @@ Do you want to apply the changes? Vuoi applicare le modifiche? - + &MIDI Controller... Controller &MIDI... - + &Automation &Automazione - + &Lock B&locca - + &Play Ri&produci - + &Record &Registra - + &Clear Pulis&ci @@ -11616,22 +11621,22 @@ Sei sicuro? qtractorMixer - + Inputs Ingressi - + Tracks Tracce - + Outputs Uscite - + Mixer Mixer @@ -11647,22 +11652,22 @@ Sei sicuro? qtractorMixerRackWidget - + &Inputs &Ingressi - + &Outputs Uscite - + &Monitor &Monitor - + &Buses... &Bus... @@ -11670,42 +11675,42 @@ Sei sicuro? qtractorMixerStrip - + inputs ingressi - + outputs uscite - + Connect %1 Connetti %1 - + (Audio) (Audio) - + (MIDI) (MIDI) - + (None) (Nessuno) - + In - + Out @@ -11713,20 +11718,10 @@ Sei sicuro? qtractorMonitorButton - + monitor monitor - - - Monitor (rec) - Monitor (reg) - - - - Monitor (thru) - Monitor (thru) - qtractorOptionsForm @@ -13486,46 +13481,46 @@ Vuoi applicare le modifiche? Accesso Diretto - + Page %1 Pagina %1 - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 istanze, %4 canali. - - + + (none) (nessuno) - + Open Preset Apri Preset - - + + Preset files (*.%1) File preset (*.%1) - - + + All files (*.*) Tutti i file (*.*) - - + + Error Errore - + Preset could not be loaded from file: "%1". @@ -13538,12 +13533,12 @@ Sorry. Spiacente. - + Save Preset Salva Preset - + Preset could not be saved to file: "%1". @@ -13556,12 +13551,12 @@ Sorry. Spiacente. - + Warning Attenzione - + About to delete preset: "%1" (%2) @@ -13574,17 +13569,17 @@ Are you sure? Sei sicuro? - + Latency: %1 ms (%2 frames) - + (no latency) - + &None &Nessuno @@ -13795,7 +13790,7 @@ Are you sure? qtractorPluginParamWidget - + Open File Apri file diff --git a/src/translations/qtractor_ja.ts b/src/translations/qtractor_ja.ts index dd5ff1c62..300d7e0f6 100644 --- a/src/translations/qtractor_ja.ts +++ b/src/translations/qtractor_ja.ts @@ -352,12 +352,12 @@ MIDI: (%1% ボリューム) - + set controller コントローラーをセット - + reset controller コントローラーをリセット @@ -890,7 +890,7 @@ Track: "%1" Input: "%2" Output: "%3" カテゴリー: - + Aux Send: %1 @@ -909,6 +909,11 @@ Track: "%1" Input: "%2" Output: "%3" %1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6594,82 +6599,82 @@ JACK音声サーバー(jackd)が起動し実行されているなら qtractorMidiControl - + Note On ノートオン - + Note Off ノートオフ - + Key Press キープレス - + Controller コントローラー - + Pgm Change Pgmチェンジ - + Chan Press チャンネルプレス - + Pitch Bend ピッチベンド - + RPN - + NRPN - + Control 14 コントロール14 - + Track Gain トラックゲイン - + Track Panning トラックパニング - + Track Monitor トラックモニター - + Track Record トラックの録音 - + Track Mute トラックのミュート - + Track Solo トラックのソロ @@ -7105,12 +7110,12 @@ Do you want to apply to controller files? - + MIDI Controller MIDIコントローラー - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7119,7 +7124,7 @@ Do you want to replace the mapping? マッピングを置きかえますか? - + Some settings have been changed. Do you want to apply the changes? @@ -7128,32 +7133,32 @@ Do you want to apply the changes? この変更を適用しますか? - + &MIDI Controller... MIDIコントローラー(&M)... - + &Automation オートメーション(&A) - + &Lock ロック(&L) - + &Play 再生(&P) - + &Record 録音(&R) - + &Clear クリアー(&C) @@ -11618,22 +11623,22 @@ Are you sure? qtractorMixer - + Inputs 入力 - + Tracks トラック - + Outputs 出力 - + Mixer ミキサー @@ -11649,22 +11654,22 @@ Are you sure? qtractorMixerRackWidget - + &Inputs 入力(&I) - + &Outputs 出力(&O) - + &Monitor モニター(&M) - + &Buses... バス(&B)... @@ -11672,42 +11677,42 @@ Are you sure? qtractorMixerStrip - + inputs 入力 - + outputs 出力 - + Connect %1 %1 の接続 - + (Audio) (音声) - + (MIDI) - + (None) (なし) - + In - + Out @@ -11715,20 +11720,10 @@ Are you sure? qtractorMonitorButton - + monitor モニター - - - Monitor (rec) - モニター(録音) - - - - Monitor (thru) - モニター(スルー) - qtractorOptionsForm @@ -13499,46 +13494,46 @@ Do you want to apply the changes? ダイレクトアクセス - + Page %1 ページ %1 - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 インスタンス, %4 チャンネル. - - + + (none) (なし) - + Open Preset プリセットを開く - - + + Preset files (*.%1) プリセットファイル (*.%1) - - + + All files (*.*) 全ファイル (*.*) - - + + Error エラー - + Preset could not be loaded from file: "%1". @@ -13551,12 +13546,12 @@ Sorry. ごめんなさい。 - + Save Preset プリセットの保存 - + Preset could not be saved to file: "%1". @@ -13569,12 +13564,12 @@ Sorry. ごめんなさい。 - + Warning 警告 - + About to delete preset: "%1" (%2) @@ -13587,17 +13582,17 @@ Are you sure? よろしいですか? - + Latency: %1 ms (%2 frames) 遅延: %1 ms (%2 フレーム) - + (no latency) (遅延なし) - + &None なし(&N) @@ -13812,7 +13807,7 @@ Are you sure? qtractorPluginParamWidget - + Open File ファイルを開く diff --git a/src/translations/qtractor_pt_BR.ts b/src/translations/qtractor_pt_BR.ts index 8f2593d57..6658f9bfd 100644 --- a/src/translations/qtractor_pt_BR.ts +++ b/src/translations/qtractor_pt_BR.ts @@ -518,12 +518,12 @@ MIDI: Opções: - + set controller setar controlador - + reset controller resetar controlador @@ -892,7 +892,7 @@ Pista: "%1" Entrada: "%2" Saída: "%3"Categorias: - + Aux Send: %1 @@ -911,6 +911,11 @@ Pista: "%1" Entrada: "%2" Saída: "%3"%1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6603,82 +6608,82 @@ Salvar esta sessão em um novo arquivo é altamente recomendável. qtractorMidiControl - + Note On Nota Ligada - + Note Off Nota Desligada - + Key Press Tecla Pressionada - + Controller Controlador - + Pgm Change Mudança de Programa - + Chan Press Cnl Pressionado - + Pitch Bend Roda de Altura - + RPN RPN - + NRPN NRPN - + Control 14 Controle 14 - + Track Gain Ganho da Pista - + Track Panning Panorâmico da Pista - + Track Monitor Monitor da Pista - + Track Record Gravação da Pista - + Track Mute Emudecer Pista - + Track Solo Pista Solo @@ -7048,22 +7053,22 @@ Posso continuar? &Gancho - + &Lock &Travar - + &Play &Tocar - + &MIDI Controller... Controlador &MIDI... - + &Clear &Limpar @@ -7074,7 +7079,7 @@ Posso continuar? - + MIDI Controller Controlador MIDI @@ -7084,7 +7089,7 @@ Posso continuar? Ca&nal: - + Some settings have been changed. Do you want to apply the changes? @@ -7098,7 +7103,7 @@ Você deseja aplicar essas mudanças? Parâmtero MIDI - + &Automation &Automação @@ -7128,7 +7133,7 @@ Você deseja aplicar essas mudanças? &Entradas - + &Record Grava&r @@ -7143,7 +7148,7 @@ Você deseja aplicar essas mudanças? &Resultado - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -11627,22 +11632,22 @@ Edição do começo/tamanho dos marcadores (azul) definem a mudança de velocida qtractorMixer - + Mixer Mixer - + Inputs Entradas - + Tracks Pistas - + Outputs Saídas @@ -11658,22 +11663,22 @@ Edição do começo/tamanho dos marcadores (azul) definem a mudança de velocida qtractorMixerRackWidget - + &Inputs &Entradas - + &Outputs &Saídas - + &Monitor &Monitorar - + &Buses... &Canais Primários... @@ -11681,42 +11686,42 @@ Edição do começo/tamanho dos marcadores (azul) definem a mudança de velocida qtractorMixerStrip - + (MIDI) (MIDI) - + (None) (Nenhuma) - + Connect %1 Conectar %1 - + outputs saídas - + inputs entradas - + (Audio) (Áudio) - + In - + Out @@ -11724,20 +11729,10 @@ Edição do começo/tamanho dos marcadores (azul) definem a mudança de velocida qtractorMonitorButton - - Monitor (rec) - Monitoração (gravação) - - - + monitor monitorar - - - Monitor (thru) - Monitoração (direto) - qtractorOptionsForm @@ -13432,7 +13427,7 @@ Você quer mesmo manter as alterações? Entradas (Retornos) - + &None &Nada @@ -13442,8 +13437,8 @@ Você quer mesmo manter as alterações? Sobre - - + + Error Erro @@ -13453,7 +13448,7 @@ Você quer mesmo manter as alterações? Mandadas - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 instância(s), %4 canal(s). @@ -13463,14 +13458,14 @@ Você quer mesmo manter as alterações? Gerenciar Canais Primários - - + + (none) (nenhum) - - + + Preset files (*.%1) Arquivos com pré configurações (*.%1) @@ -13480,28 +13475,28 @@ Você quer mesmo manter as alterações? Ativar - + Save Preset Salvar pré configuração - + Open Preset Abrir pré configuração - + Page %1 Página %1 - - + + All files (*.*) Todos os arquivos (*.*) - + Preset could not be loaded from file: "%1". @@ -13514,7 +13509,7 @@ Sorry. Desculpe. - + Preset could not be saved to file: "%1". @@ -13527,12 +13522,12 @@ Sorry. Desculpe. - + Latency: %1 ms (%2 frames) Latência: %1 ms (%2 amostras) - + (no latency) (sem latência) @@ -13562,7 +13557,7 @@ Desculpe. Editar Plugin - + About to delete preset: "%1" (%2) @@ -13591,7 +13586,7 @@ Posso continuar? Mandada Auxiliar em um Canal Primário: - + Warning Atenção @@ -13821,7 +13816,7 @@ Posso continuar? qtractorPluginParamWidget - + Open File Abrir Arquivo diff --git a/src/translations/qtractor_ru.ts b/src/translations/qtractor_ru.ts index 898cc5022..2a69403e5 100644 --- a/src/translations/qtractor_ru.ts +++ b/src/translations/qtractor_ru.ts @@ -654,12 +654,12 @@ Track: "%1" Input: "%2" Output: "%3" - + set controller - + reset controller @@ -887,7 +887,7 @@ Track: "%1" Input: "%2" Output: "%3" Категории: - + Aux Send: %1 @@ -906,6 +906,11 @@ Track: "%1" Input: "%2" Output: "%3" %1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6555,82 +6560,82 @@ is highly recommended. qtractorMidiControl - + Note On - + Note Off - + Key Press - + Controller - + Pgm Change - + Chan Press - + Pitch Bend - + RPN - + NRPN - + Control 14 - + Track Gain - + Track Panning - + Track Monitor - + Track Record - + Track Mute - + Track Solo @@ -7057,19 +7062,19 @@ Are you sure? - + MIDI Controller MIDI-контроллер - + MIDI controller is already assigned. Do you want to replace the mapping? - + Some settings have been changed. Do you want to apply the changes? @@ -7078,32 +7083,32 @@ Do you want to apply the changes? Вы хотите применить изменения? - + &MIDI Controller... MIDI-контро&ллер… - + &Automation &Автоматизация - + &Lock &Заблокировать - + &Play В&оспроизвести - + &Record З&аписать - + &Clear О&чистить @@ -11540,22 +11545,22 @@ Edit head/tail (blue) markers define the shift range. qtractorMixer - + Inputs Входы - + Tracks Дорожки - + Outputs Выходы - + Mixer Микшер @@ -11571,22 +11576,22 @@ Edit head/tail (blue) markers define the shift range. qtractorMixerRackWidget - + &Inputs &Входы - + &Outputs В&ыходы - + &Monitor &Мониторинг - + &Buses... &Шины... @@ -11594,42 +11599,42 @@ Edit head/tail (blue) markers define the shift range. qtractorMixerStrip - + inputs входы - + outputs выходы - + Connect %1 Соединить %1 - + (Audio) (аудио) - + (MIDI) (MIDI) - + (None) (нет) - + In - + Out @@ -11637,20 +11642,10 @@ Edit head/tail (blue) markers define the shift range. qtractorMonitorButton - + monitor монитор - - - Monitor (rec) - Мониторинг (зап) - - - - Monitor (thru) - Мониторинг (сквоз) - qtractorOptionsForm @@ -13322,46 +13317,46 @@ Do you want to apply the changes? qtractorPluginForm - + Page %1 Страница: %1 - + %1 [%2], %3 instance(s), %4 channel(s). - - + + (none) (нет) - + Open Preset Открыть предустановку - - + + Preset files (*.%1) Файлы предустановок (*.%1) - - + + All files (*.*) Все файлы (*.*) - - + + Error Ошибка - + Preset could not be loaded from file: "%1". @@ -13370,12 +13365,12 @@ Sorry. - + Save Preset Сохранить предустановку - + Preset could not be saved to file: "%1". @@ -13384,12 +13379,12 @@ Sorry. - + Warning Предупреждение - + About to delete preset: "%1" (%2) @@ -13402,17 +13397,17 @@ Are you sure? Вы уверены? - + Latency: %1 ms (%2 frames) - + (no latency) - + &None &Нет @@ -13713,7 +13708,7 @@ Are you sure? qtractorPluginParamWidget - + Open File Открыть файл diff --git a/src/translations/qtractor_uk.ts b/src/translations/qtractor_uk.ts index 76253fd6a..a0d35f264 100644 --- a/src/translations/qtractor_uk.ts +++ b/src/translations/qtractor_uk.ts @@ -511,12 +511,12 @@ MIDI: (гучн. %1%) - + set controller встановити контролер - + reset controller скинути контролер @@ -891,7 +891,7 @@ Track: "%1" Input: "%2" Output: "%3" %1 (*.%2) - + Aux Send: %1 Надіслати Aux: %1 @@ -910,6 +910,11 @@ Track: "%1" Input: "%2" Output: "%3" %1 Solo + + + MIDI Controller: %1, %2, %3 + + qtractorAudioListView @@ -6604,82 +6609,82 @@ is highly recommended. qtractorMidiControl - + Note On Ноту увімкнено - + Note Off Ноту вимкнено - + Key Press Натискання клавіші - + Controller Контролер - + Pgm Change Зміна pgm - + Chan Press Натиск. кан - + Pitch Bend Виг. тону - + RPN RPN - + NRPN NRPN - + Control 14 Керування 14 - + Track Gain Підсилення доріжки - + Track Panning Панорамування доріжки - + Track Monitor Монітор доріжки - + Track Record Запис доріжки - + Track Mute Вимикання звуку доріжки - + Track Solo Соло доріжки @@ -7040,7 +7045,7 @@ Do you want to apply to controller files? qtractorMidiControlObserverForm - + MIDI Controller MIDI-контролер @@ -7120,7 +7125,7 @@ Do you want to apply to controller files? В&иходи - + MIDI controller is already assigned. Do you want to replace the mapping? @@ -7129,7 +7134,7 @@ Do you want to replace the mapping? Хочете замінити прив'язку? - + Some settings have been changed. Do you want to apply the changes? @@ -7138,32 +7143,32 @@ Do you want to apply the changes? Хочете застосувати ці зміни? - + &MIDI Controller... &MIDI-контролер... - + &Automation &Автоматизація - + &Lock За&блокувати - + &Play Ві&дтворити - + &Record За&пис - + &Clear Сп&орожнити @@ -11628,22 +11633,22 @@ Are you sure? qtractorMixer - + Inputs Пристрої введення - + Tracks Доріжки - + Outputs Виходи - + Mixer Мікшер @@ -11659,22 +11664,22 @@ Are you sure? qtractorMixerRackWidget - + &Inputs В&ходи - + &Outputs В&иходи - + &Monitor Сп&остерігати - + &Buses... &Шини... @@ -11682,42 +11687,42 @@ Are you sure? qtractorMixerStrip - + inputs входи - + outputs виходи - + Connect %1 З'єднати %1 - + (Audio) (Звук) - + (MIDI) (MIDI) - + (None) (Немає) - + In Вхід - + Out Вихід @@ -11725,20 +11730,10 @@ Are you sure? qtractorMonitorButton - + monitor монітор - - - Monitor (rec) - Монітор (запис) - - - - Monitor (thru) - Монітор (пропускання) - qtractorOptionsForm @@ -13506,46 +13501,46 @@ Do you want to apply the changes? Безпосередній доступ - + Page %1 Сторінка %1 - + %1 [%2], %3 instance(s), %4 channel(s). %1 [%2], %3 екземплярів, %4 каналів. - - + + (none) (немає) - + Open Preset Відкрити набір - - + + Preset files (*.%1) файли наборів (*.%1) - - + + All files (*.*) усі файли (*.*) - - + + Error Помилка - + Preset could not be loaded from file: "%1". @@ -13558,12 +13553,12 @@ Sorry. Вибачте. - + Save Preset Зберегти шаблон - + Preset could not be saved to file: "%1". @@ -13576,12 +13571,12 @@ Sorry. Вибачте. - + Warning Попередження - + About to delete preset: "%1" (%2) @@ -13594,17 +13589,17 @@ Are you sure? Ви справді цього хочете? - + &None &Немає - + Latency: %1 ms (%2 frames) Латентність: %1 мс (%2 кадрів) - + (no latency) (немає латентності) @@ -13819,7 +13814,7 @@ Are you sure? qtractorPluginParamWidget - + Open File Відкриття файла