Chromatic tuner for SailfishOS with multi-temperament support
Find a file
Boleslaw Tokarski c51435a434 Fix build when directory not equals name
I tried building SailTuner from source in the SFOS SDK, but failed with:

+ qmake -qt=5 -makefile 'QMAKE_CFLAGS_RELEASE=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -march=armv8-a' 'QMAKE_CFLAGS_DEBUG=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -march=armv8-a' 'QMAKE_CXXFLAGS_RELEASE=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -march=armv8-a' 'QMAKE_CXXFLAGS_DEBUG=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -march=armv8-a' QMAKE_STRIP=: PREFIX=/usr LIBDIR=/usr/lib64
Usage: /usr/lib64/qt5/bin/qmake [mode] [options] [files]

... (rest of qmake syntax)

error: Bad exit status from /var/tmp/rpm-tmp.7GBOd3 (%build)

RPM build errors:
    Macro expanded in comment on line 66: %{_datadir}/%{name}

    Bad exit status from /var/tmp/rpm-tmp.7GBOd3 (%build)

This change allowed qmake to actually perform build. I found afterwards
that it also works when directory in which qmake is run is
'harbour-sailtuner', but since I ran git clone, I ended up with
SailTuner dir name.
2021-02-19 11:01:08 +01:00
data Temperaments: sort and arrange letters cases 2016-01-15 09:30:53 +01:00
icons Icon: 4th try, bigger elements 2016-01-19 15:42:01 +01:00
images Readme file updated with screenshot 2016-01-19 16:05:33 +01:00
qml Readme file updated with screenshot 2016-01-19 16:05:33 +01:00
rpm Fix build when directory not equals name 2021-02-19 11:01:08 +01:00
src Player: volume depend of frequency 2016-01-14 22:03:36 +01:00
.gitignore First commit for SailTuner 2015-12-26 20:46:02 +01:00
harbour-sailtuner.desktop Icon: 4th try, bigger elements 2016-01-19 15:42:01 +01:00
harbour-sailtuner.pro Rpm: file permissions and icons 2016-01-15 23:18:33 +01:00
LICENSE Licence to GPLv3 and Readme file 2016-01-03 17:32:36 +01:00
README.md Readme word fix 2016-01-19 16:15:14 +01:00
Tuner.pro Images reorganisation 2016-01-15 21:30:17 +01:00

SailTuner

SailTuner is a chromatic multi-temperament instrument tuner for Sailfish OS.

It gets audio data from microphone, find the fundamental frequency, and then display the note, the octave and the deviation according to note reference and temperament.

It can also play a note, choosed with a scale flickable by user.

Pitch detection algorithm

The algorithm for fundamental frequency detection:

  • high-pass filter (10Hz)
  • zero-crossing detection with linear interpolation
  • pattern recognition from regions, with time based standard deviation
  • octave filtering: drop a frequency if already a higher octave for same note in some conditions
  • post filter: wait few analyses to confirm or defect a note, and make a turning average for note deviation

The audio input rate is 16KHz ; audio frames are analysed every 2048 samples (128ms) and a note is confirmed after 3 chunks (384ms).

The note is found compared to an array of frequencies modulo one octave. The comparison array is built from a temperament and a 'A4' reference, default to 440Hz and equal temperament.

Temperaments

The temperaments are stored in .csv files. At beginning, the programm scans every .csv file in the data/ dir and makes temperament list.

Every line in a file is a temperament: the first column is the temperament name, and columns 2 to 13 are the notes frequencies from C-4 to B-4

Note player

A frequency player module makes the signal at given frequency. There are 3 waveforms in the code:

  • Sinus
  • Triangle (ie pair harmonics)
  • Sinus + harmonics (1/n x f(n))

Since the speaker of Jolla phone have very low intensity for low frequencies, the third solution is used, and the intensity is higher for lower notes.

======

Licence: GPLv3
Author: Louis-Joseph Fournier
*First release date: 2016-01-19

https://github.com/LouJo/SailTuner