cpstuni — Retourne des valeurs d'échelle microtonale au taux-i.
icps -- Valeur de retour en cycles par seconde.
index -- Un nombre entier servant d'indice dans l'échelle.
ifn -- 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.
cpstuni travaille au taux-i. 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 index reçoit un nombre entier indiquant quel degré de l'échelle donnée doit être converti en Hz. La table de fonction ifn 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 cpstuni. Il utilise le fichier cpstuni.csd.
Exemple 183. Exemple de l'opcode cpstuni.
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 cpstuni.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 ; Use Table #1. ifn = 1 ; If the base key (note #60) is C, then 9 notes ; above it (note #60 + 9 = note #69) should be A. index = 69 i1 cpstuni index, ifn print i1 endin </CsInstruments> <CsScore> ; Play Instrument #1 for one second. i 1 0 1 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra cette ligne :
instr 1: i1 = 440.110