Just Intonation
Version 1.3.1 (19)
Explore key-independent dynamically adapting tuning in just intonation
|
Resources: | Link: |
---|---|
Project Website | just-intonation.org |
Source Code | sourcecode.just-intonation.org |
Documentation | doxygen.just-intonation.org |
info at just-intonation.org |
The Western musical scale is based on the Equal Temperament (ET), which is defined by constant semitone ratios of 2^(1/12). As a geometrically organized temperament the ET has the great advantage to be scale-invariant, i.e., the interval frequency ratios are the same in all scales, no matter whether you play music e.g. in C-major or D-major.
The problem is that all intervals except for the ocatave are characterized by irrational frequency ratios. However, because of the ubiquitious harmonic series of higher partials in the spectra of musical instruments, which are characterized by integer multiples of the ground frequencies, intervals are perceived as well-tuned if they exhibit a rational frequency ratios. This means that in the ET all intervals except for the octave are more or less out of tune. Over the last two centuries, however, humanity got used to these discrepancies.
With the increasing awareness of harmony and the renewed focus on historical performance practices there is currently a great interest in so-called unequal temperaments. Historically there has been a fascinating development of musical temperaments, ranging from Pytharorean tuning over Meantone temperaments to the ET, to name only a few. All these temperaments represent static tuning schemes, reconciling the incompatibility of perfect harmony and scale invaraince to a different extent. The two extremes in this spectrum are on the one hand the Western ET (perfect scale invariance, lowest harmony) and the so-called just intonation, which has the highest degree of harmony but only in a single reference scale.
To overcome the problem of the broken scale symmetry in static just intonation, a possible way out would be to tune dynamically, that is, each tone is tune instantly when the key of the instrument is hit. This is of course impossible with traditional mechanical instruments but it is very easy with electronic oscillators. The idea is to recognize the scale just in time and to tune the current chord in just intonation.
In the past there has been a large variety of attempts to implement dynamical tuning schemes, most of them on a proprietary basis and adapted to the limited computer power in old times. Here we propose a new method as an open-source project that could be a basis for further development. This application allows one to test the method and to experience how it would be to hear Music in just intonation.
Whenever a key is pressed (or a Midi signal is received) the application sets up a linear system of equations to work out the optimal tuning. This system is instantly solved using the "eigen" library. The application comes with an inbuilt microtunal sampler that allows you to hear real instruments in just intonation. Our method has the great advantage that it does not only tune simple chords perfectly but it also finds reasonable compromises for self-contradicting chords such as the diminished Seventh that cannot be tuned consistently in just intonation.
JustIntonation is a multi-platform application based on Qt. It depends on the QMidi library developed by Christoph Wick. It includes the linear algebra package "Eigen" in the thirdparty folder.
git clone http:/gitlab.com/tp3/qtmidi
– Method 1: Execute the Python script build.py – Method 2: Open qtmidi.pro in QtCreator, add "make install", and buildBefore starting one needs to download and install Qt:
To compile the code on a Linux machine proceed as follows:
!host_build:QMAKE_MAC_SDK = macosx10.12
The application folder contains the following subfolders:
To see all modules follow this link
The essential module is te 'Tuner'. This module is connected to the application exclusively via Qt signals and slots. This allows you to use the tuner in different projects very easily. It also makes it easier to understand how it works.