Hello,
I have been comparing a direct construction of Werckmeister III, derived from a chain of fifths, with SuperCollider’s Tuning.werckmeister (Werckmeister III).
My construction follows the usual description of Werckmeister III as a temperament in which four fifths are narrowed by one quarter of the Pythagorean comma, with the remaining fifths left pure. Sources describing the tempered fifths as C–G, G–D, D–A, and B–F♯ include:
- A facsimile of Werckmeister’s Musicalische Temperatur (1691):
https://digital.slub-dresden.de/data/kitodo/musiteodd_278955630/musiteodd_278955630_tif/jpegs/musiteodd_278955630.pdf#page=100
- English materials:
Here is the reconstruction I used:
- Definition:
( // Werckmeister III construction var pythagoreanComma = (3/2).pow(12) / 2.pow(7); var quarterPythCommaTempering = pythagoreanComma.pow(1/4); var fifthTempered = (3/2) / quarterPythCommaTempering; var fifthPure = 3/2; var fifthChainFromC = [ fifthTempered, // 0: C→G fifthTempered, // 1: G→D fifthTempered, // 2: D→A fifthPure, // 3: A→E fifthPure, // 4: E→B fifthTempered, // 5: B→F♯ fifthPure, // 6: F♯→C♯ fifthPure, // 7: C♯→G♯ fifthPure, // 8: G♯→D♯ fifthPure, // 9: D♯→A♯ fifthPure // 10: A♯→F ]; var pitchRatios = Array.newClear(12); pitchRatios[0] = 1; // C 11.do { |i| pitchRatios[i + 1] = pitchRatios[i] * fifthChainFromC[i]; }; ~werckmeisterIII = pitchRatios.collect { |x| while { x >= 2 } { x = x / 2 }; while { x < 1 } { x = x * 2 }; x }.sort; // octave-normalised chromatic pitch-class ratios - Raw ratios:
returns:~werckmeisterIII.postln;[1, 1.0534979423868, 1.1174033085417, 1.1851851851852, 1.2528272487271, 1.3333333333333, 1.4046639231824, 1.494926960451, 1.5802469135802, 1.6704363316362, 1.7777777777778, 1.8792408730907] - Converted to semitones:
returns:(12 * log2(~werckmeisterIII)).round(0.001).postln[0.0, 0.902, 1.922, 2.941, 3.902, 4.98, 5.883, 6.961, 7.922, 8.883, 9.961, 10.922]
Here is SuperCollider’s built‑in result:
Tuning.werckmeister
returns:
-> Tuning([0, 0.92, 1.93, 2.94, 3.915, 4.98, 5.9, 6.965, 7.93, 8.895, 9.96, 10.935], 2, "Werckmeister III")
This general logic seems consistent with the code, but the resulting values do not match the specific numbers stored in SuperCollider.
So my question is:
Does anyone know the immediate source for the numerical values used in Tuning.werckmeister?
I can find support for the general Werckmeister III construction, but not for the exact decimal table used by SuperCollider.
If I have misunderstood something due to my limited ability in German (both modern and seventeenth‑century) or in modern English, or if I have made an error in the reconstruction, I would be grateful for clarification.
Thanks.