Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
keyindexscaleengine.cpp
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 #include "keyindexscaleengine.h"
21 
22 KeyIndexScaleEngine::KeyIndexScaleEngine(int maxKeys, int keyOffset) :
23  mMaxKeys(maxKeys),
24  mKeyOffset(keyOffset) {
25 
26 }
27 
28 void KeyIndexScaleEngine::autoScale(int maxNumSteps, double &x1, double &x2, double &stepSize) const {
29  Q_UNUSED(maxNumSteps);
30  Q_UNUSED(x1);
31  Q_UNUSED(x2);
32  stepSize = 1;
33 }
34 
35 QwtScaleDiv KeyIndexScaleEngine::divideScale(double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize) const {
36  Q_UNUSED(maxMajorSteps);
37  Q_UNUSED(maxMinorSteps);
38  Q_UNUSED(stepSize);
39 
40  QList<double> minorTicks, mediumTicks, majorTicks;
41 
42  for (int i = std::max(static_cast<int>(x1), mKeyOffset); i < std::min(static_cast<int>(x2 + 1.5), mMaxKeys + 1 + mKeyOffset); ++i) {
43  if (i % 12 == 0 || (i - 1) % 12 == 0) {
44  majorTicks << i;
45  } else {
46  mediumTicks << i;
47  }
48  }
49 
50  return QwtScaleDiv(x1, x2, minorTicks, mediumTicks, majorTicks);
51 }
virtual void autoScale(int maxNumSteps, double &x1, double &x2, double &stepSize) const overridefinal
virtual QwtScaleDiv divideScale(double x1, double x2, int maxMajorSteps, int maxMinorSteps, double stepSize=0.0) const overridefinal
KeyIndexScaleEngine(int maxKeys, int keyOffset)