GEN51 — This subroutine fills a table with a fully customized micro-tuning scale, in the manner of Csound opcodes cpstun, cpstuni and cpstmid.
This subroutine fills a table with a fully customized micro-tuning scale, in the manner of Csound opcodes cpstun, cpstuni et cpstmid.
f # time size -51 numgrades interval basefreq basekey tuningRatio1 tuningRatio2 .... tuningRationN
The first four parameters (i.e. p5, p6, p7 and p8) define the following generation directives:
p5 (numgrades) -- the number of grades of the micro-tuning scale
p6 (interval) -- the frequency range covered before repeating the grade ratios, for example 2 for one octave, 1.5 for a fifth etcetera
p7 (basefreq) -- the base frequency of the scale in cps
p8 (basekey) -- the integer index of the scale to which to assign basefreq unmodified
The other parameters define the ratios of the scale:
p9...pN (tuningRatio1...etc.) -- the tuning ratios of the scale
For example, for a standard 12-grade scale with the base-frequency of 261 cps assigned to the key-number 60, the corresponding f-statement in the score to generate the table should be:
; numgrades basefreq tuning-ratios (eq.temp) ....... ; interval basekey f1 0 64 -51 12 2 261 60 1 1.059463 1.12246 1.18920 ..etc...
After the gen has been processed, the table f1 is filled with 64 different frequency values. The 60th element is filled with the frequency value of 261, and all other elements (preceding and subsequents) of the table are filled according to the tuning ratios
Another example with a 24-grade scale with a base frequency of 440 assigned to the key-number 48, and a repetition interval of 1.5:
; numgrades basefreq tuning-ratios ..... ; interval basekey f1 0 64 -51 24 1.5 440 48 1 1.01 1.02 1.03 ..etc...