diff --git a/src/dlgtrackinfo.cpp b/src/dlgtrackinfo.cpp
index ed8392b..7e41b10 100644
--- a/src/dlgtrackinfo.cpp
+++ b/src/dlgtrackinfo.cpp
@@ -62,6 +62,8 @@ void DlgTrackInfo::init() {
this, SLOT(slotBpmTwoThirds()));
connect(bpmThreeFourth, SIGNAL(clicked()),
this, SLOT(slotBpmThreeFourth()));
+ connect(bpmFourThirds, SIGNAL(clicked()),
+ this, SLOT(slotBpmFourThirds()));
connect(btnCueActivate, SIGNAL(clicked()),
this, SLOT(cueActivate()));
@@ -168,6 +170,7 @@ void DlgTrackInfo::populateFields(TrackPointer pTrack) {
bpmHalve->setEnabled(enableBpmEditing);
bpmTwoThirds->setEnabled(enableBpmEditing);
bpmThreeFourth->setEnabled(enableBpmEditing);
+ bpmFourThirds->setEnabled(enableBpmEditing);
m_loadedCoverInfo = pTrack->getCoverInfo();
int reference = pTrack->getId();
@@ -459,6 +462,9 @@ void DlgTrackInfo::slotBpmThreeFourth() {
spinBpm->setValue(spinBpm->value() * (3./4.));
}
+void DlgTrackInfo::slotBpmFourThirds() {
+ spinBpm->setValue(spinBpm->value() * (4./3.));
+}
void DlgTrackInfo::slotBpmTap(double averageLength, int numSamples) {
Q_UNUSED(numSamples);
if (averageLength == 0) {
diff --git a/src/dlgtrackinfo.h b/src/dlgtrackinfo.h
index 1d3542f..55240d0 100644
--- a/src/dlgtrackinfo.h
+++ b/src/dlgtrackinfo.h
@@ -49,6 +49,7 @@ class DlgTrackInfo : public QDialog, public Ui::DlgTrackInfo {
void slotBpmHalve();
void slotBpmTwoThirds();
void slotBpmThreeFourth();
+ void slotBpmFourThirds();
void slotBpmTap(double averageLength, int numSamples);
void reloadTrackMetadata();
diff --git a/src/dlgtrackinfo.ui b/src/dlgtrackinfo.ui
index 50e00c5..a07d001 100644
--- a/src/dlgtrackinfo.ui
+++ b/src/dlgtrackinfo.ui
@@ -418,16 +418,7 @@
QLayout::SetMinimumSize
-
- 0
-
-
- 0
-
-
- 0
-
-
+
0
-
@@ -715,22 +706,6 @@
- -
-
-
- Displays the BPM of the selected track.
-
-
- 8
-
-
- 500.000000000000000
-
-
- 1.000000000000000
-
-
-
-
@@ -770,6 +745,38 @@
+ -
+
+
+ Displays the BPM of the selected track.
+
+
+ 8
+
+
+ 500.000000000000000
+
+
+ 1.000000000000000
+
+
+
+ -
+
+
+
+ 125
+ 0
+
+
+
+ Sets the BPM to 133% of the current value.
+
+
+ 4/3 BPM
+
+
+
-
@@ -1035,12 +1042,29 @@
btnNext
btnCancel
btnApply
+ btnOK
+ txtTrackName
+ txtArtist
+ txtAlbum
+ txtAlbumArtist
+ txtComposer
+ txtGenre
+ txtGrouping
+ txtYear
+ txtKey
+ txtTrackNumber
+ txtLocation
+ btnFetchTag
+ btnReloadFromFile
+ btnOpenFileBrowser
+ txtComment
spinBpm
bpmTap
bpmDouble
bpmHalve
bpmTwoThirds
bpmThreeFourth
+ bpmFourThirds
cueTable
btnCueDelete
btnCueActivate
diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp
index 8d78660..699e0f8 100644
--- a/src/widget/wtracktableview.cpp
+++ b/src/widget/wtracktableview.cpp
@@ -149,6 +149,7 @@ WTrackTableView::~WTrackTableView() {
delete m_pBpmHalveAction;
delete m_pBpmTwoThirdsAction;
delete m_pBpmThreeFourthsAction;
+ delete m_pBpmFourThirdsAction;
delete m_pBPMMenu;
delete m_pPurgeAct;
delete m_pFileBrowserAct;
@@ -436,11 +437,13 @@ void WTrackTableView::createActions() {
m_pBpmHalveAction = new QAction(tr("Halve BPM"), this);
m_pBpmTwoThirdsAction = new QAction(tr("2/3 BPM"), this);
m_pBpmThreeFourthsAction = new QAction(tr("3/4 BPM"), this);
+ m_pBpmFourThirdsAction = new QAction(tr("4/3 BPM"), this);
m_BpmMapper.setMapping(m_pBpmDoubleAction, DOUBLE);
m_BpmMapper.setMapping(m_pBpmHalveAction, HALVE);
m_BpmMapper.setMapping(m_pBpmTwoThirdsAction, TWOTHIRDS);
m_BpmMapper.setMapping(m_pBpmThreeFourthsAction, THREEFOURTHS);
+ m_BpmMapper.setMapping(m_pBpmFourThirdsAction, FOURTHIRDS);
connect(m_pBpmDoubleAction, SIGNAL(triggered()),
&m_BpmMapper, SLOT(map()));
@@ -450,6 +453,8 @@ void WTrackTableView::createActions() {
&m_BpmMapper, SLOT(map()));
connect(m_pBpmThreeFourthsAction, SIGNAL(triggered()),
&m_BpmMapper, SLOT(map()));
+ connect(m_pBpmFourThirdsAction, SIGNAL(triggered()),
+ &m_BpmMapper, SLOT(map()));
m_pClearBeatsAction = new QAction(tr("Clear BPM and Beatgrid"), this);
connect(m_pClearBeatsAction, SIGNAL(triggered()),
@@ -804,6 +809,7 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
m_pBPMMenu->addAction(m_pBpmHalveAction);
m_pBPMMenu->addAction(m_pBpmTwoThirdsAction);
m_pBPMMenu->addAction(m_pBpmThreeFourthsAction);
+ m_pBPMMenu->addAction(m_pBpmFourThirdsAction);
m_pBPMMenu->addSeparator();
m_pBPMMenu->addAction(m_pBpmLockAction);
m_pBPMMenu->addAction(m_pBpmUnlockAction);
@@ -821,6 +827,7 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
m_pBpmHalveAction->setEnabled(false);
m_pBpmTwoThirdsAction->setEnabled(false);
m_pBpmThreeFourthsAction->setEnabled(false);
+ m_pBpmFourThirdsAction->setEnabled(false);
} else { //BPM is not locked
m_pBpmUnlockAction->setEnabled(false);
m_pBpmLockAction->setEnabled(true);
@@ -828,6 +835,7 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
m_pBpmHalveAction->setEnabled(true);
m_pBpmTwoThirdsAction->setEnabled(true);
m_pBpmThreeFourthsAction->setEnabled(true);
+ m_pBpmFourThirdsAction->setEnabled(true);
}
} else {
bool anyLocked = false; //true if any of the selected items are locked
@@ -1548,6 +1556,8 @@ void WTrackTableView::slotScaleBpm(int scale) {
scalingFactor = 2./3.;
else if (scale == THREEFOURTHS)
scalingFactor = 3./4.;
+ else if (scale == FOURTHIRDS)
+ scalingFactor = 4./3.;
QModelIndexList selectedTrackIndices = selectionModel()->selectedRows();
for (int i = 0; i < selectedTrackIndices.size(); ++i) {
diff --git a/src/widget/wtracktableview.h b/src/widget/wtracktableview.h
index 9ddb83a..afb3c57 100644
--- a/src/widget/wtracktableview.h
+++ b/src/widget/wtracktableview.h
@@ -40,6 +40,7 @@ class WTrackTableView : public WLibraryTableView {
HALVE,
TWOTHIRDS,
THREEFOURTHS,
+ FOURTHIRDS,
};
public slots:
@@ -151,6 +152,7 @@ class WTrackTableView : public WLibraryTableView {
QAction *m_pBpmHalveAction;
QAction *m_pBpmTwoThirdsAction;
QAction *m_pBpmThreeFourthsAction;
+ QAction *m_pBpmFourThirdsAction;
// Clear track beats
QAction* m_pClearBeatsAction;