diff --git a/include/Editor.h b/include/Editor.h index 04765ee07..d755608a6 100644 --- a/include/Editor.h +++ b/include/Editor.h @@ -28,6 +28,12 @@ #include #include +static const int Quantizations[] = { + 1, 2, 4, 8, 16, 32, 64, + 3, 6, 12, 24, 48, 96, 192 +}; + + class QAction; class DropToolBar; diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index 265977ad5..8c281bf3e 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -124,16 +124,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 (auto q : Quantizations) { + m_quantizeModel.addItem(QString("1/%1").arg(q)); } - for( int i = 0; i < 5; ++i ) - { - m_quantizeModel.addItem( "1/" + - QString::number( ( 1 << i ) * 3 ) ); - } - m_quantizeModel.addItem( "1/192" ); connect( &m_quantizeModel, SIGNAL(dataChanged() ), this, SLOT( setQuantization() ) ); @@ -2160,22 +2153,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 = DefaultTicksPerBar; - } - quantization = DefaultTicksPerBar / quantization; - AutomationPattern::setQuantization( quantization ); + AutomationPattern::setQuantization(DefaultTicksPerBar / Quantizations[m_quantizeModel.value()]); update(); } diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index 2f948523a..b519fb9e5 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -371,15 +371,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() ), @@ -4280,8 +4274,7 @@ int PianoRoll::quantization() const } } - QString text = m_quantizeModel.currentText(); - return DefaultTicksPerBar / text.right( text.length() - 2 ).toInt(); + return DefaultTicksPerBar / Quantizations[m_quantizeModel.value() - 1]; }