powoftwo — Calcule une puissance de deux.
La fonction powoftwo() retourne 2x et accepte comme argument des nombres positifs et négatifs. L'intervalle des valeurs autorisées dans powoftwo() va de -5 à +5 permettant une précision plus fine qu'un cent dans un intervalle de dix octaves. Pour un intervalle de valeurs plus grand, utiliser l'opcode plus lent pow.
Ces fonctions sont rapides, car elles lisent des valeurs stockées dans des tables. Elles sont très utiles lorsque l'on travaille avec des rapports de hauteurs. Elles travaillent au taux-i et au taux-k.
Voici un exemple de l'opcode powoftwo. Il utilise le fichier powoftwo.csd.
Exemple 779. Exemple de l'opcode powoftwo.
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 -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o poweroftwo.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; bit reduction for Lo-Fi sound iBits = p4 ;bit depth iQuantize = powoftwo(iBits) ;find number of discrete steps for this bit depth iQuantize = iQuantize*0.5 ;half the number of steps for each side of a bipolar signal print iQuantize asig soundin "fox.wav" asig = round(asig * iQuantize) / iQuantize ;quantize audio signal (bit reduce) outs asig, asig endin </CsInstruments> <CsScore> ; bits i1 0 3 16 i1 ^+3 . 12 i1 ^+3 . 8 i1 ^+3 . 4 i1 ^+3 . 2 i1 ^+3 . 1 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra des lignes comme celles-ci :
instr 1: iQuantize = 32768.000 instr 1: iQuantize = 2048.000 instr 1: iQuantize = 128.000 instr 1: iQuantize = 8.000 instr 1: iQuantize = 2.000 instr 1: iQuantize = 1.000