pchoct — Convertit une valeur octave-point-partie-décimale en classe de hauteur.
pchoct (oct) (arguments de taux-i ou -k seulement)
où l'argument entre parenthèses peut être une expression.
pchoct et ses opcodes associés sont réellement des convertisseurs de valeur spécialisés dans la manipulation des données de hauteur.
Les données concernant la hauteur et la fréquence peuvent exister dans un des formats suivants :
Tableau 20. Valeurs de Hauteur et de Fréquence
Nom | Abréviation |
---|---|
octave point classe de hauteur (8ve.pc) | pch |
octave point partie décimale | oct |
cycles par seconde | cps |
Numéro de note Midi (0-127) | midinn |
Les deux premières formes sont constituées d'un nombre entier, représentant le registre d'octave, suivi d'une partie décimale dont la signification est particulière. Pour pch, la partie fractionnaire est lue comme deux chiffres décimaux représentant les douze classes de hauteur du tempérament égal de .00 pour do jusqu'à .11 pour si. Pour oct, la partie fractionnaire est interprétée comme une véritable partie fractionnaire décimale d'une octave. Les deux formes fractionnaires sont ainsi dans un rapport de 100/12. Dans les deux formes, la fraction est précédée par un nombre entier indice de l'octave, tel que 8.00 représente le do médian, 9.00 le do au-dessus, etc. Les numéros de note Midi sont compris entre 0 et 127 (inclus), avec 60 représentant le do médian, et sont habituellement des nombres entiers. Ainsi, on peut représenter le la 440 alternativement par 440 (cps), 69 (midinn), 8.09 (pch), ou 8.75 (oct). On peut encoder des divisions microtonales du demi-ton pch en utilisant plus de deux positions décimales.
Les noms mnémotechniques des unités de conversion de hauteur sont dérivés des morphèmes des formes concernées, le second morphème décrivant la source et le premier morphème l'objet (le résultat). Ainsi cpspch(8.09) convertira l'argument de hauteur 8.09 en son équivalent en cps (ou Hertz), ce qui donne la valeur 440. Comme l'argument est constant pendant toute la durée de la note, cette conversion aura lieu pendant l'initialisation, avant qu'aucun échantillon de la note actuelle ne soit produit.
Par constraste, la conversion cpsoct(8.75 + k1) donne la valeur du la 440 transposée par l'intervalle octaviant k1. Le calcul sera répété à chaque k-période car c'est le taux de variation de k1.
Note | |
---|---|
La conversion de pch, oct, ou midinn vers cps n'est pas une opération linéaire mais elle implique un calcul d'exponentielle qui peut coûter cher en temps de traitement s'il est exécuté de manière répétitive. Csound utilise dorénavant une consultation de table interne pour faire cela efficacement, même aux taux audio. Comme l'indice dans la table est tronqué sans interpolation, la résolution en hauteur avec un de ces opcodes est limitée à 8192 divisions discrètes et égales de l'octave, et quelques degrés de l'échelle tempérée égale de 12 demi-tons sont très légèrement désaccordés (d'au plus 0,15 cent). |
Voici un exemple de l'opcode pchoct. Il utilise le fichier pchoct.csd.
Exemple 742. Exemple de l'opcode pchoct.
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 pchoct.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1. instr 1 ; Convert an octave-point-decimal value into a ; pitch-class value. ioct = 8.75 ipch = pchoct(ioct) print ipch endin </CsInstruments> <CsScore> ; Play Instrument #1 for one second. i 1 0 1 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra cette ligne :
instr 1: ipch = 8.090