| Théorie et techniques de la musique électronique | ||
|---|---|---|
| Précédent | Chapitre 2. Acoustique des signaux audio numériques | |
Le patch A01.sinewave.pd, représenté sur la figure suivante , représente le générateur de son le plus simple possible, avec seulement trois boîtes d'objet, il y a également des commentaires, et deux boîtes de message pour activer/désactiver les "DSP" Pd (audio).

Les trois boîtes objet sont :
: l'oscillateur sinusoïdale. L'entrée et la sortie prennent les signaux audio numériques. L'entrée est défini pour être une fréquence en hertz. si rien n'est relié à l'inlet de fréquence, l'argument de création (440 dans cet exemple) est utilisé comme fréquence.
La sortie est une sinusoïde à la fréquence indiquée. La sortie a une amplitude maximale égal à 1. Vous pouvez commencez par envoyer des messages (signaux non audio) à l'inlet droit. L'inlet gauche (de fréquence) peut également recevoir des messages pour définir la fréquence, puisque n'importe quelle inlet qui prend un signal audio peut recevoir des messages, qui sont automatiquement convertis en signal audio.
le multiplicateur. Celui existe sous deux formes. Si un argument de création est présent (comme dans cet exemple, 0.05), cette boîte multiplie le signal audio numérique (dans l'inlet de gauche) par le nombre. Les messages envoyé à l'inlet de droite peuvent mettre à jour le nombre moltiplicateur. Si aucun argument n'est donné, cette boîte multiplie deux signaux audio numériques entrants ensemble.
La sortie audio. Cet objet vous permet d'envoyer n'importe quel signal audio à au sortie audio de votre ordinateur. S'il n'y a aucun argument de création, la configuration de défaut utilise les canaux 1 et 2 du matériel audio, vous pouvez spécifier des nombres de canal en utilisant les arguments de création.
Les deux boîtes de message dans l'exemple 1 possédent une particularité dans les la manière dont sont analysées les données. Dans l'exemple précédent, le message correspondait à la valeur 21. Une fois que vous cliquiez dessus, cette boîte envoyé le message 21 à sa sortie et par conséquent à tous les objets qui lui sont relié.
Dans l'exemple actuel, le texte des boîtes de message commence par un point-virgule. C'est un terminateur entre les messages (ainsi le premier message est vide), le mot d'aprés correspond au destinataire du message qui suit . Ainsi le message "dsp 1"(ou "dsp 0") et le message associé, sont envoyés à l'objet "Pd".
Cet objet particulier est fourni de manière transparente par le programme Pd et vous pouvez lui envoyer divers messages, dans ce cas-ci active le traitement audio ("1") et le désactive ("0").
Le patch A02.amplitude.pd montre comment faire un controle brute d'amplitude ; les éléments actifs sont présenté sur la figure suivante.

conversion d'amplitude en décibels. Le "RMS" est un terme mal approprié ; il devrait avoir être appelé "dbtoamp", puisqu'il convertit vraiment des décibels en n'importe quelle unité linéaire d'amplitude, que ce soit RMS, crête, ou autre. Une entrée de 100 dB est normalisée à un résultat de 1.
Les valeurs supérieures à 100 sont géré (120 donnera 10), mais les valeurs inférieur ou égal à zéro produiront zéro (une entrée nulle devrait produire un petit nombre positif.). C'est un objet de controle, c.-à-d., les nombres entrant et est sortant sont des messages, pas des signaux. un objet correspondant est un signal corrélé, mais un objet de signal consomme beaucoup de ressource CPU.
Les deux boîtes de nombre sont reliées à l'entrée et là la sortie des objets dbtorms. Cliquez et trainez vers le haut ou le bas pour changer l'amplitude. La gamme a été définit pour s'étendre de 0 à 80; c'est une protection pour vos haut-parleurs et vos oreilles.
L'autre boîte de nombre montre la sortie de l'objet dbtorms. Il est inutile de cliquez sur cette boîte de nombre, puisque sa sortie est reliée nulle part ; il sert juste pour montrer son entrée. Les boîtes de nombre peuvent être utiles comme coontroles, affichages, ou les deux.
la figure suivante montre le principe du controleur d'amplitude par générateur d'enveloppe

Plus explicitement

La classe d'objet qui permet de réaliser ceci dans Pd est "line~"
générateur d'enveloppe. La sortie est un signal qui a une pente linéairement pendant un certain temps, ceci est déterminé par les messages reçus. Les inlets prennent des messages pour indiquer les valeurs à atteindre (inlet gauche) et délai (inlet droite). En raison d'une règle générale des messages de Pd, une paire de nombres envoyés à l'inlet gauche suffit pour indiquer une valeur et un temps à atteindre . Le temps est exprimé en millisecondes (tenant compte du taux d'échantillon).
Le Patch A03.line.pd démontre l'utilisation d'un objet line~ pour controler l'amplitude d'un sinusoid. La partie active est montrée sur le shéma précédent partie (b). Les six boîtes de message sont reliées à l'objet de line~, et sont activées en cliquant dessus.
La boite nombre tout en haut indique que la pente de line~ (commence là où à sa sortie était avant de recevoir le message) est de 0.1 pendant 2 secondes. Après que les deux secondes se soitent écoulé, à moins que d'autres messages soient arrivés en attendant, la sortie reste à 0.1.
Deux messages line~ pourraient arriver en même temps ou si rapproché dans le temps qu'aucun calcul de DSP n'a lieu entre les deux; dans ce cas-ci, le premier message n'a aucun effet, puisque le line~ n'aura pas changé sa sortie par rapport au premier message, et sa sortie actuelle est alors utilisé comme point de départ pour le deuxième message.
Une exception à cette règle est que, si le line~ obtient une valeur de temps de zéro, la valeur de rendement est immédiatement placée à la nouvelle valeur et les autres messages prendront effet à partir de cette nouvelle valeur. Ainsi, en envoyant deux nombre, la première avec une valeur de temps de zéro et la seconde avec une valeur de temps supérieur à zéro, on peut indépendamment définir les valeurs de début et de fin d'un segment dans la sortie line~.
Le traitement de l'inlet droite de l'objet line~ est peu commun parmi les objets Pd parce qu'il oublie les vieilles valeurs. Un message avec un nombre simple tel que "0.1" est toujours équivalent au couple de nombre, "0.1 0". La plupart des objets Pd garderont la valeur précédente pour l'inlet droite, au lieu de remplir par zéro.
Le patch A04.line2.pd montre la sortie de l'objet line~ graphiquement.

Le patch A05.output.subpatch.pd, dont les parties actives sont montrés dans la partie (c) de la figure présente dans l'exemple "dbtorms", présente trois sinusoids avec des fréquences dont le rapport entre elle est 4:5:6, de sorte que les deux inférieurs soient séparés par un tiers majeur, les deux supérieurs par un troisième mineur, et le haut et le bas par un cinquième.
La plus basse fréquence est 440, égale à A au-dessus de C moyen, ou MIDI 69. Les autres sont approximativement quatre et sept half-step plus haut. Les trois signaux ont des amplitudes égales.
Le controle d'amplitude dans cet exemple est prise en compte avec nouvel objet appelé output~. Ce n'est pas un objet intégré de Pd, mais c'est un patch Pd, output.pd. Vous pouvez voir les sorties internals en faisant un click droit sur la boîte et sélectionner "open".
Vous obtenez deux controle, une pour l'amplitude en dB, et un bouton "mute". Le traitement audio de Pd est activé automatiquement quand vous avez placé le niveau de sortie. Le mécanisme pour intégrer un patch à l'intéreiru d'un autre sera vu dans le 4ème chapitre.
Le patch A06.frequency.pd, figure suivante, montre l'objet PD qui convertit le pitch en unités de fréquence (mtof, signifie "MIDI to frequency") et à l'objet ftom inverse. Nous présentons également deux autres classes d'objet, send et receive.

,
: convertis le pitch MIDI en aux unités de fréquence selon les formules de conversion de PITCH/FREQUENCY. Les entrées et les sorties sont des messages, (des équivalents avec le signe "tilde" existent également, bien que comme le dbtorms~ elles soit gourmande en CPU). La sortie de l'objet ftom est égal à -1500 de l'entrée, qui est de 0 ou négatif.
,
: recevez les messages non localement. L'objet receive, qui peut être abrégé à "r", attend les messages non locau envoyé par un objet send ou par une boîte de message en utilisant la redirection (avec le symbol ";" vu dans l'exemple A01.sinewave.pd). L'argument (tel que "fréquency" et "pitch" dans cet exemple) est le nom auquel les messages sont envoyés. de multiples objets recieve peuvent partager le même nom, dans ce cas n'importe quel message envoyé à ce nom ira à tous les objets receive.
,
: objet d'envoi, qui peut être abrégé à "s", dirige les messages vers les objets receive.
Deux nouvelles propriétés de boîtes de nombre sont utilisées ici. Jusqu'ici nous les avons employées comme controle ou comme affichages. Ici, les deux boîtes de nombre sont une fonction. Si une boîte de nombre obtient un nombre dans son inlet, elle montre non seulement le nombre mais le répète également à sa sortie. Cependant, une boîte de nombre peut également envoyée un "set" message, comme "set 55" par exemple.
Ceci placera la valeur de la boîte de nombre à 55 mais la sortie n'aura pas pour valeur le message "55". Dans ce cas-ci, les nombres venant des deux objets receive sont formatés (à l'aide des boîtes message) pour lire "set 55" au lieu de juste "55", le caractère "$1" est remplacé par le nombre entrant.
Ceci est fait parce qu'autrement nous aurions une boucle infinie : la fréquence changerait le pitch qui changerait la fréquence et ainsi de suite.
| Précédent | Sommaire | |
| A propos des examples | Niveau supérieur |