diff --git a/Tuner.pro b/Tuner.pro index 78915e5..8085f9a 100644 --- a/Tuner.pro +++ b/Tuner.pro @@ -28,4 +28,5 @@ HEADERS += \ RESOURCES += \ qml/desktop.qrc \ - data/temperaments.qrc + data/temperaments.qrc \ + images/images.qrc diff --git a/images/icon-m-pause.svg b/images/icon-m-pause.svg new file mode 100644 index 0000000..eaeb9dc --- /dev/null +++ b/images/icon-m-pause.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/images/images.qrc b/images/images.qrc new file mode 100644 index 0000000..2a3ddc0 --- /dev/null +++ b/images/images.qrc @@ -0,0 +1,5 @@ + + +icon-m-pause.svg + + diff --git a/qml/DesktopTheme.qml b/qml/DesktopTheme.qml index 110ed0e..b49e45c 100644 --- a/qml/DesktopTheme.qml +++ b/qml/DesktopTheme.qml @@ -27,4 +27,6 @@ Item { property int fontSizeMedium: 16 property int fontSizeLarge: 25 property int fontSizeExtraLarge: 40 + + property string icon_pause: "qrc://images/icon-m-pause.svg" } diff --git a/qml/TunerScreen.qml b/qml/TunerScreen.qml index 40a23f6..b262429 100644 --- a/qml/TunerScreen.qml +++ b/qml/TunerScreen.qml @@ -40,8 +40,6 @@ Item { property color led_green: "green" property color led_red: "red" - opacity: tuner.running ? 1 : 0.8 - property bool dev_is_ok: Math.abs(tuner.deviation) <= deviation_ok Led { @@ -155,6 +153,7 @@ Item { // frequency and temperament Column { + id: freq_temp x: is_portrait ? theme.paddingLarge : meter.x + meter.width / 6 y: is_portrait ? theme.paddingLarge : meter.y + meter.height - theme.fontSizeSmall * 4 - theme.paddingLarge width: parent.width * 0.4 @@ -163,10 +162,23 @@ Item { Text { text: tuner.la + " hz" font.pixelSize: theme.fontSizeSmall + color: theme.secondaryColor } Text { text: tuner.temperament_list[tuner.temperament_idx] font.pixelSize: theme.fontSizeSmall + color: theme.secondaryColor } } + + // icon for pause status + Image { + visible: !tuner.running + + x: is_portrait ? parent.width - freq_temp.x - width : parent.width - freq_temp.x - width * 2 + y: freq_temp.y + width: theme.iconSizeMedium + height: width + source: theme.icon_pause ? theme.icon_pause : "image://theme/icon-m-pause?" + theme.secondaryColor + } } diff --git a/src/PitchDetection.cpp b/src/PitchDetection.cpp index 5fb8494..8f15bb1 100644 --- a/src/PitchDetection.cpp +++ b/src/PitchDetection.cpp @@ -58,13 +58,19 @@ PitchDetection::PitchDetection() scale = new Scale(); temperaments = new Temperaments(":/data"); + /* + * done by worker before first frame, + * and protected in scale: construct equal if nothing + * on first analyse + */ + /* if (temperaments->SetTemperament(0)) { scale->SetNotesFrequencies(temperaments->NotesFrequencies()); } else { scale->ConstructEqualTemperament(); } - +*/ Reset(); } @@ -214,6 +220,7 @@ void PitchDetection::analyse_file(const char *filename) const int nb_frame = 1024; PitchDetection *pitch = new PitchDetection(); + pitch->SetTemperament(0); int16_t buffer[nb_frame]; PitchResult result; diff --git a/src/TunerWorker.cpp b/src/TunerWorker.cpp index 1257e67..1c69ff9 100644 --- a/src/TunerWorker.cpp +++ b/src/TunerWorker.cpp @@ -57,7 +57,7 @@ TunerWorker::TunerWorker() : running(false), quit(false), la_to_update(0), - temperament_to_update(-1) + temperament_to_update(0) // update the first time in every cases { //qRegisterMetaType("PitchDetection::PitchResult"); } @@ -183,11 +183,15 @@ void TunerWorker::Entry() pa_simple_flush(p_simple, NULL); } - // if srteam was stopped, reset analyse + // if stream was stopped, reset analyse if (new_stream) { pitchDetection->Reset(); + blank_prevent(true); nb_sample_running = 0; new_stream = false; + // send a not-found result on restart + result.found = false; + emit resultUpdated(result); } // get audio data diff --git a/src/scale/Scale.cpp b/src/scale/Scale.cpp index 3e788c3..1d3bbe5 100644 --- a/src/scale/Scale.cpp +++ b/src/scale/Scale.cpp @@ -137,5 +137,5 @@ void Scale::SetLa(double la) { assert(la > 0); actualLa = la; - updateScale(); + if (freq_setted) updateScale(); }