Mercurial > hg > sonic-lineup
changeset 429:2d553ea71852 pitch-align
Add External Program selection feature, + some aligner fixes
| author | Chris Cannam |
|---|---|
| date | Thu, 28 May 2020 17:05:23 +0100 |
| parents | 213fb6c6a426 |
| children | 3f0c55210f50 |
| files | main/MainWindow.cpp repoint-lock.json |
| diffstat | 2 files changed, 47 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/main/MainWindow.cpp Fri May 22 17:18:15 2020 +0100 +++ b/main/MainWindow.cpp Thu May 28 17:05:23 2020 +0100 @@ -115,6 +115,7 @@ #include <QCloseEvent> #include <QDialogButtonBox> #include <QTextEdit> +#include <QFileDialog> #include <iostream> #include <cstdio> @@ -791,7 +792,8 @@ { Align::TrimmedLinearAlignment, tr("Linear Trimmed") }, { Align::MATCHAlignment, tr("Online DTW (MATCH)") }, { Align::MATCHAlignmentWithPitchCompare, tr("Online DTW with Pitch Compensation") }, - { Align::SungPitchContourAlignment, tr("Sung Pitch Contour") } + { Align::SungPitchContourAlignment, tr("Sung Pitch Contour") }, + { Align::ExternalProgramAlignment, tr("External Alignment Program...") } }; QAction *action = nullptr; @@ -800,6 +802,9 @@ Align::getAlignmentPreference(additionalData); for (auto al: alignmentLabels) { + if (al.first == Align::ExternalProgramAlignment) { + menu->addSeparator(); + } action = menu->addAction(al.second); action->setObjectName(Align::getAlignmentTypeTag(al.first)); action->setActionGroup(alignmentGroup); @@ -2346,16 +2351,54 @@ Align::AlignmentType alignmentType = Align::getAlignmentTypeForTag(action->objectName()); - - Align::setAlignmentPreference(alignmentType); if (alignmentType == Align::NoAlignment) { + Align::setAlignmentPreference(alignmentType); m_viewManager->setAlignMode(false); m_document->setAutoAlignment(false); + } else if (alignmentType == Align::ExternalProgramAlignment) { + + QSettings settings; + settings.beginGroup("Alignment"); + QString formerProgram = + settings.value("alignment-program", "").toString(); + bool ok = true; + QString newProgram = + QFileDialog::getOpenFileName(this, + tr("External Alignment Program"), + formerProgram); + if (newProgram != "") { +/* + QInputDialog::getText(this, + tr("External Alignment Program"), + tr("External Alignment Program:"), + QLineEdit::Normal, + formerProgram, + &ok); + if (ok) { +*/ + Align::setAlignmentPreference(alignmentType, newProgram); + } else { + Align::setAlignmentPreference(alignmentType, formerProgram); + } + + m_viewManager->setAlignMode(true); + + if (alignmentType == m_previousActiveAlignmentType) { + m_document->alignModels(); + } else { + m_document->realignModels(); + } + + m_document->setAutoAlignment(true); + m_previousActiveAlignmentType = alignmentType; + } else { + Align::setAlignmentPreference(alignmentType); + m_viewManager->setAlignMode(true); if (alignmentType == m_previousActiveAlignmentType) {
