From d85c9e7992cbef448e378d7b7408431834fd31d4 Mon Sep 17 00:00:00 2001 From: Cyp Date: Mon, 4 Nov 2019 16:47:19 +0100 Subject: [PATCH] =?UTF-8?q?Add=20missing=20=C2=B9=E2=81=84=E2=82=89?= =?UTF-8?q?=E2=82=86=20quantization.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/MidiTime.h | 5 +++++ src/gui/editors/AutomationEditor.cpp | 28 +++------------------------- src/gui/editors/PianoRoll.cpp | 13 +++---------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/include/MidiTime.h b/include/MidiTime.h index 9ce25a8cf5c..91a06a0a3d2 100644 --- a/include/MidiTime.h +++ b/include/MidiTime.h @@ -37,6 +37,11 @@ const int DefaultTicksPerTact = 192; const int DefaultStepsPerTact = 16; const int DefaultBeatsPerTact = DefaultTicksPerTact / DefaultStepsPerTact; +static constexpr int Quantizations[] = { + 1, 2, 4, 8, 16, 32, 64, + 3, 6, 12, 24, 48, 96, 192 +}; + class MeterModel; diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index 5e8ea8a0afc..6edf4ea71e2 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -122,16 +122,9 @@ AutomationEditor::AutomationEditor() : connect( m_tensionModel, SIGNAL( dataChanged() ), this, SLOT( setTension() ) ); - for( int i = 0; i < 7; ++i ) - { - m_quantizeModel.addItem( "1/" + QString::number( 1 << i ) ); - } - for( int i = 0; i < 5; ++i ) - { - m_quantizeModel.addItem( "1/" + - QString::number( ( 1 << i ) * 3 ) ); + for (auto q : Quantizations) { + m_quantizeModel.addItem(QString("1/%1").arg(q)); } - m_quantizeModel.addItem( "1/192" ); connect( &m_quantizeModel, SIGNAL(dataChanged() ), this, SLOT( setQuantization() ) ); @@ -2133,22 +2126,7 @@ void AutomationEditor::zoomingYChanged() void AutomationEditor::setQuantization() { - int quantization = m_quantizeModel.value(); - if( quantization < 7 ) - { - quantization = 1 << quantization; - } - else if( quantization < 12 ) - { - quantization = 1 << ( quantization - 7 ); - quantization *= 3; - } - else - { - quantization = DefaultTicksPerTact; - } - quantization = DefaultTicksPerTact / quantization; - AutomationPattern::setQuantization( quantization ); + AutomationPattern::setQuantization(DefaultTicksPerTact / Quantizations[m_quantizeModel.value()]); update(); } diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index f6bda682b30..bbcacb4985f 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -357,15 +357,9 @@ PianoRoll::PianoRoll() : // Set up quantization model m_quantizeModel.addItem( tr( "Note lock" ) ); - for( int i = 0; i <= NUM_EVEN_LENGTHS; ++i ) - { - m_quantizeModel.addItem( "1/" + QString::number( 1 << i ) ); + for (auto q : Quantizations) { + m_quantizeModel.addItem(QString("1/%1").arg(q)); } - for( int i = 0; i < NUM_TRIPLET_LENGTHS; ++i ) - { - m_quantizeModel.addItem( "1/" + QString::number( (1 << i) * 3 ) ); - } - m_quantizeModel.addItem( "1/192" ); m_quantizeModel.setValue( m_quantizeModel.findText( "1/16" ) ); connect( &m_quantizeModel, SIGNAL( dataChanged() ), @@ -3975,8 +3969,7 @@ int PianoRoll::quantization() const } } - QString text = m_quantizeModel.currentText(); - return DefaultTicksPerTact / text.right( text.length() - 2 ).toInt(); + return DefaultTicksPerTact / Quantizations[m_quantizeModel.value() - 1]; }