summaryrefslogtreecommitdiffhomepage
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README295
1 files changed, 295 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..1184ddf
--- /dev/null
+++ b/README
@@ -0,0 +1,295 @@
+LINGOT - A musical instrument tuner.
+
+Written by:
+ Ibán Cereijo Graña <ibancg@gmail.com>
+ Jairo Chapela Martínez <jairochapela@gmail.com>
+
+Copyright (C) 2004-2011 Ibán Cereijo Graña, Jairo Chapela Martínez
+
+Description
+===========
+
+Lingot is a musical instrument tuner. It's accurate, easy to use, and highly
+configurable. Originally conceived to tune electric guitars, it can now be used
+to tune other instruments.
+
+It looks like an analog tuner, with a gauge indicating the relative shift to a
+certain note, found automatically as the closest note to the estimated frequency.
+
+
+Requisites
+==========
+
+ * Sound card.
+ * Linux kernel with audio support (OSS, ALSA, JACK).
+ * GTK+ library, version 2.0.
+
+Installation
+============
+
+ Type:
+
+ > configure
+ > make install
+
+ If you don't want ALSA or JACK support, use the options --enable-alsa=no and
+ --enable-jack=no in the configure script.
+
+ Please, see the INSTALL file.
+
+Synopsis
+========
+
+ lingot [-c config]
+
+The -c option causes the search of a file named {config}.conf in the ~/.lingot
+folder. For example:
+
+ lingot -c bass
+
+will take the configuration file ~/.lingot/bass.conf. This is useful for
+maintaining different configurations for different instruments. It's also
+possible to load and save configuration files from the GUI.
+
+Configuration file
+==================
+
+When lingot is launched, the configuration file ~/.lingot/lingot.conf will be
+created.
+
+The default values are optimized for electric guitar tuning, for other musical
+instruments these values must be slightly changed (a good practice would be
+to have a configuration file for each instrument). The options must be changed
+via GUI.
+
+There is a wide range of options, with the purpose of keeping the maximum
+configurability, and signal processing knowledge is needed for a good
+understanding of their effects.
+
+Next, we detail the main options that make up this file, and we recommend to
+make changes regarding the desired tuning precision and the demanded CPU time.
+If you don't understand the effects of any option, then just try different
+values or, even better, don't change it.
+
+
+ AUDIO_SYSTEM
+
+ Audio system switch. Possible values:
+
+ OSS
+ ALSA *
+ JACK
+
+ * default value
+
+
+ AUDIO_DEV (OSS sound device)
+
+ Selected sound device for the OSS audio system. The default value is
+ '/dev/dsp'.
+
+
+ AUDIO_DEV_ALSA (ALSA sound device)
+
+ Selected sound device for ALSA, the default value is 'plughw:0'.
+
+
+ SAMPLE_RATE ('physical' sampling rate)
+
+ With ALSA and OSS, the input signal will be sampled at this frequency by the
+ audio driver (in JACK, the sample rate is provided externally by the sound
+ server). Some cards don't support an arbitrary sampling rate, so we
+ recommend to choose one of the options that the GUI gives us, namely
+
+ 8000 Hz
+ 11025 Hz
+ 22050 Hz
+ 44100 Hz *
+
+ We will be able to find an effective sampling rate submultiple of this by
+ means of an oversampling factor.
+
+ In order to select a sampling rate, we must consider the maximum frequency
+ our instrument is able to produce (or the maximum one we want to tune), and
+ choose an effective sampling rate (already divided by the oversampling
+ factor) as, at least, the double of the former (Nyquist frequency). All the
+ spectral components over the half of the effective sampling rate will be
+ filtered out and they will not appear in the spectrum.
+
+ It must be an integer number, in Hertz.
+
+
+ OVERSAMPLING (oversampling factor)
+
+ The sampled signal will be decimated by this factor, producing the same
+ effect as if the sound card was using as sampling rate the effective
+ sampling rate f = SAMPLE_RATE/OVERSAMPLING.
+
+ For example, to obtain an effective sampling rate of 4 KHz (we can tune
+ tones up to 2 KHz), we can choose a sampling rate of 8 KHz and an
+ oversampling factor equals to 2, since 8 KHz / 2 = 4 KHz.
+
+ It must be an integer number, dimensionless. The default value is 25.
+
+
+ ROOT_FREQUENCY_ERROR ("A" reference note error)
+
+ This option is used when we want to tune with a certain amount of frequency
+ shift error.
+
+ This can be useful when tuning an instrument against a recording with a
+ shifted tuning. For example, if we hear an "A" note in a recording that
+ it's a quarter of a tone over the real note (440 Hz), we put here 50 cents
+ of error.
+
+ It must be a real number, expressed in cents. The default value is 0.
+
+
+ MIN_FREQUENCY (minimum valid frequency)
+
+ To avoid detecting the continuous component as the fundamental peak when
+ it has enough power, we consider a minimum valid frequency.
+
+ It must be a real number, in hertz. The default value is 15 Hz.
+
+
+ FFT_SIZE (Size of the FTT)
+
+ A high value gets more accuracy, especially more precision locking the
+ desired frequency, but it demands more CPU time.
+
+ We must consider the time interval involved on the calculus before
+ unnecessarily raising this value: having a buffer of 4096 samples for the
+ FFT, and a sampling rate of 8 KHz, each transform needs the last 512 ms
+ temporary values, so there is no point in putting a shorter temporal window.
+
+ Let's see a more extreme example:
+
+ Let us suppose we have an instrument able to generate low frequencies
+ (< 200 Hz), and therefore we choose an effective sampling rate of
+ 400 Hz (an audio card sampling rate of 8 KHz and an oversampling factor
+ of 20). With the aim of obtaining the best initial precision, we choose
+ a FFT buffer of 4096 samples. This implies that the minimal temporal window
+ size has to be 10.24 seconds, in other words, the sounds from the last 10.24
+ seconds are polluting the tuning taking. So, we've to wait 10.24 seconds
+ between note and note to avoid 'interferences'.
+
+ It must be an integer power of 2. The default value is 512 samples.
+
+
+ TEMPORAL_WINDOW
+
+ The length in time of the signal used to compute the final frequency. With
+ higher values, we'll obtain a more accurate result, but also a slower
+ response polluted by earlier notes.
+
+ As a practical rule, we say that if we've a temporal window of 1 second, we
+ must wait 1 second between two consecutive notes to obtain a correct tuning.
+ So, this parameter affects directly to the dynamic response of the tuner.
+
+ The temporal window size in samples (obtained as the multiplication of its
+ duration in seconds and the effective sampling rate) must be greater than
+ the FFT buffer size.
+
+ It must be a real number in seconds. The default value is 0.32 seconds.
+
+
+ NOISE_THRESHOLD
+
+ To avoid tuning noise, this threshold distinguish what is signal and what
+ is noise. Try to tune it empirically with the help of a sound mixer.
+
+ It's a real number whose units are dB.
+
+
+ CALCULATION_RATE
+
+ With higher calculations per second, the tuner gives us a better dynamic
+ sensation, but it'll need more CPU time.
+
+ It's a real number, in hertz, and the default value is 20 Hz.
+
+
+ VISUALIZATION_RATE
+
+ It has impact in the dynamism sensation achieved, but less in the
+ computation time.
+
+ There is no point having a calculation rate greater than the visualization
+ rate.
+
+ It's a real number, in hertz. The default value is 30 Hz.
+
+
+ PEAK_NUMBER (Number of peaks)
+
+ For the identification of the fundamental peak, depending on the timbre
+ generated by the instrument, we must consider the number of harmonics
+ (peaks in frequencies multiple of the fundamental one) which can be greater
+ than the fundamental peak (up to the relation remarked in the next option).
+
+ It's an integer, expressing an amount. The default value is 3 peaks.
+
+
+ PEAK_REJECTION_RELATION
+
+ Any peak with a relative amplitude (relative to the maximum peak) bigger
+ than this parameter will be ruled out.
+
+ It's a real number with dB units. The default value is 20 dB.
+
+
+ PEAK_HALF_WIDTH
+
+ Number of samples at each side needed for a peak to be accepted. The correct
+ tuning of this parameter will depend on the instrument, and mainly on the
+ spectral resolution obtained with the effective sampling rate and the FFT
+ size. Note that considering N samples of the FFT implies a variable
+ frequency interval that depends on those parameters.
+
+ It's an integer expressing a number of samples. The default value is 1
+ sample.
+
+
+ DFT_NUMBER (Number of DFTs)
+
+ After the fundamental peak is found on the FFT, a certain amount of DFTs
+ (localized in frequency domain) are computed to get close to the note
+ frequency. This is a previous step before launching a final approximation
+ with an iterative method (Newton-Raphson).
+
+ It's an integer expressing an amount of DFTs, and the default value is 2
+ DFTs.
+
+
+ DFT_SIZE
+
+ DTF size in samples. Bigger values gets more locking precision, but more
+ computing time is needed.
+
+ It's an integer. The default value is 15 samples.
+
+
+ GAIN
+
+ Real value indicating a scale factor for the input signal, that may help
+ in fitting the signal between certain desirable levels.
+
+ It's a real number expressed in logarithmic units (dB). The default value is
+ 0 dB.
+
+
+ SCALE
+
+ Definition of the scale used for the tuning. By default a 12 semitones
+ equal-tempered scale is used. It contains different parameters:
+
+ NAME: Scale name, only for your information.
+ BASE_FREQUENCY: The absolute frequency, in hertz, of the first note.
+ NOTE_COUNT: number of notes in the scale.
+ NOTES: list of notes, being them pairs of name and frequency shift. The
+ frequency shift can be expressed as a real number in cents or a
+ division of integer values, codifying a frequency ratio, like '3/2'
+ or '5/4'. Be careful with leaving wide gaps in frequency between each
+ pair of adjacent notes, as the gauge range will adapt to the maximum
+ of those distances. Try to use scales with at least 12 tones.