cpstun — Retourne des valeurs d'échelle microtonale au taux-k.
kcps -- Valeur de retour en cycles par seconde.
ktrig -- Un signal utilisé pour déclencher l'évaluation.
kindex -- Un nombre entier servant d'indice dans l'échelle.
kfn -- Table de fonction contenant les paramètres (numgrades, interval, basefreq, basekeymidi) ainsi que les rapports de hauteur.
Cet opcode est similaire à cpstmid, mais son fonctionnement ne nécessite pas le MIDI.
cpstun travaille au taux-k. Il permet d'obtenir des échelles microtonales personnalisées. Il nécessite le numéro d'une table de fonction qui contient les rapports de hauteur, et quelques autres paramètres stockés dans la table elle-même.
L'argument kindex reçoit des nombres entiers indiquant quel degré de l'échelle donnée doit être converti en Hz. Dans cpstun, une nouvelle valeur ne sera évaluée que lorsque ktrig contiendra une valeur non nulle. La table de fonction kfn sera générée par GEN02, les quatre premières valeurs stockées dans la table étant des paramètres qui expriment :
numgrades -- Le nombre de degrés de l'échelle microtonale.
interval -- L'intervalle de fréquence couvert avant de répéter les rapports des degrés, par exemple 2 pour une octave, 1,5 pour une quinte, etc.
basefreq -- La fréquence de base de l'échelle en cycles par seconde.
basekey -- L'indice entier dans l'échelle auquel la fréquence de base sera affectée sans changement.
On peut insérer les rapports de hauteur après ces quatre valeurs. Par exemple, pour une échelle standard de 12 degrés avec une fréquence de base de 261 Hz affectée au numéro de touche 60, l'instruction f de la partition pour générer la table sera :
; numgrades basefreq tuning-ratios (eq.temp) ....... ; interval basekey f1 0 64 -2 12 2 261 60 1 1.059463 1.12246 1.18920 ..etc...
Un autre exemple avec une échelle de 24 degrés et une fréquence de base de 440 affectée au numéro de touche 48, et un intervalle de répétition de 1,5 :
; numgrades basefreq tuning-ratios ....... ; interval basekey f1 0 64 -2 24 1.5 440 48 1 1.01 1.02 1.03 ..etc...
Voici un exemple de l'opcode cpstun. Il utilise le fichier cpstun.csd.
Exemple 182. Exemple de l'opcode cpstun.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o cpstun.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Table #1, a normal 12-tone equal temperament scale. ; numgrades = 12 (twelve tones) ; interval = 2 (one octave) ; basefreq = 261.659 (Middle C) ; basekeymidi = 60 (Middle C) gitemp ftgen 1, 0, 64, -2, 12, 2, 261.659, 60, 1.00, \ 1.059, 1.122, 1.189, 1.260, 1.335, 1.414, \ 1.498, 1.588, 1.682, 1.782, 1.888, 2.000 ; Instrument #1. instr 1 ; Set the trigger. ktrig init 1 ; Use Table #1. kfn init 1 ; If the base key (note #60) is C, then 9 notes ; above it (note #60 + 9 = note #69) should be A. kindex init 69 k1 cpstun ktrig, kindex, kfn printk2 k1 endin </CsInstruments> <CsScore> ; Play Instrument #1 for one second. i 1 0 1 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra cette ligne :
i1 440.11044