pdhalf — Distorsion d'un phaseur pour lire les deux moitiés d'une table à des vitesses différentes.
L'opcode pdhalf est conçu pour simuler la méthode "classique" de synthèse par distorsion de phase des synthétiseurs CZ de Casio, du milieu des années 1980. Cette technique lit la première et la seconde moitié d'une table de fonction à différentes vitesses de façon à déformer la forme d'onde. Par exemple, pdhalf peut transformer progressivement une onde sinus en une approximation de dent de scie.
ibipolar -- un paramètre facultatif spécifiant le mode unipolaire (0) ou bipolaire (1). Par défaut, mode unipolaire.
ifullscale -- paramètre facultatif spécifiant l'intervalle des valeurs d'entrée et de sortie. Le maximum sera ifullscale. Le minimum dépend du mode d'opération : zéro pour le mode unipolaire ou -ifullscale pour le mode bipolaire. Vaut 1.0 par défaut. Il faut donner à ce paramètre la valeur maximale attendue en entrée.
ain -- le signal d'entrée à distordre.
aout -- le signal de sortie.
kShapeAmount -- la quantité de distorsion appliquée à l'entrée. Doit être comprise entre -1 et +1. Zéro signifie pas de distorsion.
L'opcode pdhalf calcule une fonction de transfert composée de deux segments de droite (voir le graphique). Ces segments se touchent en un "point pivot" qui se trouve toujours sur le même axe horizontal. (En mode unipolaire, l'axe est y = 0.5, et en mode bipolaire c'est l'axe des x). Le paramètre kShapeAmount indique l'endroit de l'axe horizontal où se trouve ce point. Lorsque kShapeAmount vaut zéro, le point pivot est au milieu de l'intervalle d'entrée, si bien que la fonction de transfert est une droite, ce qui ne provoque aucun changement dans le signal d'entrée. Si kShapeAmount varie de 0 à -1, le point pivot se déplace vers la gauche du graphique, produisant un motif de distorsion de phase similaire à la "dent de scie" du CZ de Casio. S'il varie de 0 à 1, le point pivot se déplace vers la droite, produisant un motif inversé.
Si l'entrée de pdhalf est un phaseur et que la sortie est utilisée pour indexer une table, les valeurs de kShapeAmount inférieures à zéro provoquent une lecture plus rapide de la première moitié de la table que de la seconde moitié. L'inverse est vrai pour les valeurs de kShapeAmount supérieures à zéro. Les vitesses de lecture sont calculées de façon à ce que la fréquence du phaseur reste inchangée. Ainsi, cette méthode de distorsion de phase ne peut produire que des partiels harmoniques. Elle ne peut pas produire de bandes latérales inharmoniques comme le fait la modulation de fréquence.
pdhalf peut fonctionner en modes unipolaire ou bipolaire. Le mode unipolaire est approprié pour les signaux comme les phaseurs qui varient entre zéro et une valeur maximale (fixée par ifullscale). Le mode bipolaire est approprié pour les signaux qui varient de part et d'autre de zéro d'environ la même quantité comme la plupart des signaux audio. L'application directe de pdhalf à un tel signal audio produit une sorte de distorsion non linéaire grossière mais ajustable.
Voici un exemple typique de l'utilisation de pdhalf
aphase phasor ifreq apd pdhalf aphase, kamount aout tablei apd, 1, 1
Voici un exemple de l'opcode pdhalf. Il utilise le fichier pdhalf.csd.
Exemple 747. Exemple de l'opcode pdhalf.
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 pdhalf.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 4 idur = p3 iamp = p4 ifreq = p5 itable = p6 aenv linseg 0, .001, 1.0, idur - .051, 1.0, .05, 0 aosc phasor ifreq kamount linseg 0.0, 0.02, -0.99, 0.05, -0.9, idur-0.06, 0.0 apd pdhalf aosc, kamount aout tablei apd, itable, 1 outs aenv*aout*iamp, aenv*aout*iamp endin </CsInstruments> <CsScore> f1 0 16385 10 1 f2 0 16385 10 1 .5 .3333 .25 .5 f3 0 16385 9 1 1 270 ; inverted cosine ; descending "just blues" scale ; pdhalf with cosine table ; (imitates the CZ-101 "sawtooth waveform") t 0 100 i4 0 3 .6 512 3 i. + . . 448 i. + . . 384 i. + . . 358.4 i. + . . 341.33 i. + . . 298.67 i. + 5 . 256 s ; pdhalf with a sine table t 0 120 i4 0 3 .6 512 1 i. + . . 448 i. + . . 384 i. + . . 358.4 i. + . . 341.33 i. + . . 298.67 i. + 5 . 256 s ; pdhalf with a sawtooth-like table t 0 150 i4 0 3 .6 512 2 i. + . . 448 i. + . . 384 i. + . . 358.4 i. + . . 341.33 i. + . . 298.67 i. + 5 . 256 e </CsScore> </CsoundSynthesizer>
On peut trouver plus d'information au sujet de la synthèse par distorsion de phase sur Wikipedia à http://en.wikipedia.org/wiki/Phase_distortion_synthesis