diff --git a/data/locale/ca.ts b/data/locale/ca.ts index 9cd6ae40415..0553f7c7870 100644 --- a/data/locale/ca.ts +++ b/data/locale/ca.ts @@ -7930,6 +7930,14 @@ Latència: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/cs.ts b/data/locale/cs.ts index 6aa7e566bb2..2c1ba596f5e 100644 --- a/data/locale/cs.ts +++ b/data/locale/cs.ts @@ -7932,6 +7932,14 @@ Zpoždění %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/de.ts b/data/locale/de.ts index c193d646f2c..d5c525e78c4 100644 --- a/data/locale/de.ts +++ b/data/locale/de.ts @@ -8177,6 +8177,14 @@ Latenz: %2 ms Clear this track Diese Spur leeren + + Assign to new FX Channel + + + + FX %1: %2 + + vestigeInstrument diff --git a/data/locale/en.ts b/data/locale/en.ts index 76e145ebcdf..23e8eb58d17 100644 --- a/data/locale/en.ts +++ b/data/locale/en.ts @@ -7969,6 +7969,14 @@ Latency: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/es.ts b/data/locale/es.ts index bd89815ea6a..050707a5ccf 100644 --- a/data/locale/es.ts +++ b/data/locale/es.ts @@ -7912,6 +7912,14 @@ Latency: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/fa.ts b/data/locale/fa.ts index e38e2d9704d..38be790a8af 100644 --- a/data/locale/fa.ts +++ b/data/locale/fa.ts @@ -7911,6 +7911,14 @@ Latency: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/fr.ts b/data/locale/fr.ts index 6dcf0a8b8e1..c589c2ad061 100644 --- a/data/locale/fr.ts +++ b/data/locale/fr.ts @@ -7946,6 +7946,14 @@ Latence : %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/gl.ts b/data/locale/gl.ts index 96b19ccd673..45235e7668e 100644 --- a/data/locale/gl.ts +++ b/data/locale/gl.ts @@ -7945,6 +7945,14 @@ Latencia: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/it.ts b/data/locale/it.ts index a046d158a49..e04e8ebdc31 100644 --- a/data/locale/it.ts +++ b/data/locale/it.ts @@ -7970,6 +7970,14 @@ Latenza: %2 ms Clear this track Pulisci questa traccia + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on Accendi tutti i processi di registrazione diff --git a/data/locale/ja.ts b/data/locale/ja.ts index 49f272525cb..584ce118df5 100644 --- a/data/locale/ja.ts +++ b/data/locale/ja.ts @@ -7947,6 +7947,14 @@ Latency: %2 ms Clear this track このトラックをクリア + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/ko.ts b/data/locale/ko.ts index aeee0b941d6..9565f543d83 100644 --- a/data/locale/ko.ts +++ b/data/locale/ko.ts @@ -7916,6 +7916,14 @@ Latency: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/nl.ts b/data/locale/nl.ts index 1b98f541797..c6f83b30dfb 100644 --- a/data/locale/nl.ts +++ b/data/locale/nl.ts @@ -7915,6 +7915,14 @@ Vertraging: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/pl.ts b/data/locale/pl.ts index fec62d19824..57cae23cce1 100644 --- a/data/locale/pl.ts +++ b/data/locale/pl.ts @@ -7951,6 +7951,14 @@ Latencja: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/pt.ts b/data/locale/pt.ts index defb1e5616e..973ec3cb78e 100644 --- a/data/locale/pt.ts +++ b/data/locale/pt.ts @@ -7949,6 +7949,14 @@ Latência: %2 ms Clear this track + + Assign to new FX Channel + Associar a um novo Mixer de Efeitos + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/ru.ts b/data/locale/ru.ts index ce01e3d40e8..a85d474e37c 100644 --- a/data/locale/ru.ts +++ b/data/locale/ru.ts @@ -7984,6 +7984,14 @@ Latency: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/sv.ts b/data/locale/sv.ts index c170ed0d4aa..59b7f6ccec4 100644 --- a/data/locale/sv.ts +++ b/data/locale/sv.ts @@ -7914,6 +7914,14 @@ Latency: %2 ms Clear this track + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on diff --git a/data/locale/zh.ts b/data/locale/zh.ts index d1df46aee81..57d591c6c42 100644 --- a/data/locale/zh.ts +++ b/data/locale/zh.ts @@ -7924,6 +7924,14 @@ Latency: %2 ms Clear this track 清除此轨道 + + Assign to new FX Channel + + + + FX %1: %2 + + Turn all recording on 打开所有录制 diff --git a/include/FxMixer.h b/include/FxMixer.h index 7c18e019a0a..ddc2b743444 100644 --- a/include/FxMixer.h +++ b/include/FxMixer.h @@ -194,6 +194,11 @@ class EXPORT FxMixer : public Model, public JournallingObject return m_fxChannels.size(); } + inline QVector fxChannels() const + { + return m_fxChannels; + } + FxRouteVector m_fxRoutes; private: diff --git a/include/FxMixerView.h b/include/FxMixerView.h index 0bb5796e02c..66a9143b403 100644 --- a/include/FxMixerView.h +++ b/include/FxMixerView.h @@ -103,12 +103,14 @@ class EXPORT FxMixerView : public QWidget, public ModelView, // useful for loading projects void refreshDisplay(); +public slots: + int addNewChannel(); + protected: virtual void closeEvent( QCloseEvent * _ce ); private slots: void updateFaders(); - void addNewChannel(); void toggledSolo(); private: diff --git a/include/Track.h b/include/Track.h index d09b955fca4..b766b60561e 100644 --- a/include/Track.h +++ b/include/Track.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -390,6 +391,8 @@ private slots: void recordingOn(); void recordingOff(); void clearTrack(); + void assignFxLine( int channelIndex ); + void createFxLine(); private: static QPixmap * s_grip; diff --git a/src/core/Track.cpp b/src/core/Track.cpp index ad25f979cdd..426676f0e91 100644 --- a/src/core/Track.cpp +++ b/src/core/Track.cpp @@ -57,6 +57,7 @@ #include "embed.h" #include "Engine.h" #include "GuiApplication.h" +#include "FxMixerView.h" #include "gui_templates.h" #include "InstrumentTrack.h" #include "MainWindow.h" @@ -1706,6 +1707,29 @@ void TrackOperationsWidget::clearTrack() +/*! \brief Create and assign a new FX Channel for this track */ +void TrackOperationsWidget::createFxLine() +{ + int channelIndex = gui->fxMixerView()->addNewChannel(); + + Engine::fxMixer()->effectChannel( channelIndex )->m_name = m_trackView->getTrack()->name(); + + assignFxLine(channelIndex); +} + + + +/*! \brief Assign a specific FX Channel for this track */ +void TrackOperationsWidget::assignFxLine(int channelIndex) +{ + Track * track = m_trackView->getTrack(); + dynamic_cast( track )->effectChannelModel()->setValue( channelIndex ); + + gui->fxMixerView()->setCurrentFxLine( channelIndex ); +} + + + /*! \brief Remove this track from the track list * */ @@ -1740,12 +1764,36 @@ void TrackOperationsWidget::updateMenu() { to_menu->addAction( tr( "Clear this track" ), this, SLOT( clearTrack() ) ); } - - if( dynamic_cast( m_trackView ) ) + if( InstrumentTrackView * trackView = dynamic_cast( m_trackView ) ) { + int channelIndex = trackView->model()->effectChannelModel()->value(); + + FxChannel * fxChannel = Engine::fxMixer()->effectChannel( channelIndex ); + + QMenu * fxMenu = new QMenu( tr( "FX %1: %2" ).arg( channelIndex ).arg( fxChannel->m_name ), to_menu ); + QSignalMapper * fxMenuSignalMapper = new QSignalMapper(this); + + fxMenu->addAction("Assign to new FX Channel" , this, SLOT( createFxLine() ) ); + fxMenu->addSeparator(); + + + for (int i = 0; i < Engine::fxMixer()->fxChannels().size(); ++i) + { + FxChannel * currentChannel = Engine::fxMixer()->fxChannels()[i]; + + if ( currentChannel != fxChannel ) + { + QString label = tr( "FX %1: %2" ).arg( currentChannel->m_channelIndex ).arg( currentChannel->m_name ); + QAction * action = fxMenu->addAction( label, fxMenuSignalMapper, SLOT( map() ) ); + fxMenuSignalMapper->setMapping(action, currentChannel->m_channelIndex); + } + } + + to_menu->addMenu(fxMenu); + connect(fxMenuSignalMapper, SIGNAL(mapped(int)), this, SLOT(assignFxLine(int))); + to_menu->addSeparator(); - to_menu->addMenu( dynamic_cast( - m_trackView )->midiMenu() ); + to_menu->addMenu( trackView->midiMenu() ); } if( dynamic_cast( m_trackView ) ) { diff --git a/src/gui/FxMixerView.cpp b/src/gui/FxMixerView.cpp index 2267cbe8e2e..141a37619b8 100644 --- a/src/gui/FxMixerView.cpp +++ b/src/gui/FxMixerView.cpp @@ -172,7 +172,7 @@ FxMixerView::~FxMixerView() -void FxMixerView::addNewChannel() +int FxMixerView::addNewChannel() { // add new fx mixer channel and redraw the form. FxMixer * mix = Engine::fxMixer(); @@ -186,6 +186,8 @@ void FxMixerView::addNewChannel() updateFxLine(newChannelIndex); updateMaxChannelSelector(); + + return newChannelIndex; }