CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

6/6.1: VI. Le synthétiseur vocal et langage machine (14e Complément)Coding Classeurs Weka
6/6 La synthèse vocale

6/6.1 Le synthétiseur vocal TECHNI-MUSIQUE

VI. Le synthétiseur vocal et langage machine

Le programmeur en langage machine sera certainement intéressé par la démarche permettant de créer ses propres sons réutilisables en assembleur.

Mais avant tout, procurez-vous la documentation du composant MEA-8000 auprès de la société LA RADIOTECHNIQUE COMPELEC (RTC), ou de revendeurs électroniques, ainsi que des notes d'application.

Le PRINCIPE DE PROGRAMMATION DU MEA-8000

Le MEA-8000 possède deux registres internes permettant de mettre en œuvre ses fonctions de synthèse vocale : un registre de contrôle et un registre de données tous deux de huit bits.

Le registre de contrôle fait travailler le MEA-8000 dans différents modes en y écrivant un octet définissant le mode. Il permet aussi de connaître l'état du composant, par une lecture de ce même registre : son émis, composant libre pour un nouveau son, ou son en cours d'émission, composant occupé.

Le registre de données s'utilise en écriture et pour programmer le type de son à synthétiser.

Le registre contrôle

En lecture, ce registre permettra de connaître la phase d'émission des sons par le composant, grâce au bit 7 de l'octet qui y est lu.

Ce bit, lorsqu'il est à zéro indique qu'il est possible d'émettre un son et, lorsqu'il est à un. signale que le composant n'est pas disponible pour une nouvelle donnée.

En écriture, il sert à initialiser le composant, et l'utilisation la plus classique est de charger ce registre avec la valeur &1A, correspondant à un caractère appelé STOP (on prendra soin de vérifier l'occupation du composant auparavant).

La meilleure utilisation de ce registre est de réinitialiser le composant à l'aide d'un STOP avant et après l'émission d'un son.

Le registre de données

Le registre de données sert à émettre les sons et requiert un certain nombre de paramètres organisés d'une façon particulière.

Le premier paramètre est un octet appelé PITCH et définissant la hauteur du son.

Les données suivantes assureront la synthèse des sons, et seront émises par blocs (appelés trames) composés obligatoirement de quatre octets. Il est possible d'émettre autant de blocs de quatre octets que l'on veut, tant que le composant n'est pas réinitialisé, sinon il faudra à nouveau entrer le PITCH.

Les trames sont organisées de la façon suivante

Fig. 6 : Architecture des blocs (trames).

BW1 : Largeur de bande du premier formant (2 bits)
BW2 : Largeur de bande du deuxième formant (2 bits)
BW3 : Largeur de bande du troisième formant (2 bits)
BW4 : Largeur de bande du quatrième formant (2 bits)
FM3 : Fréquence du troisième formant (3 bits)
FM2 : Fréquence du deuxième formant (5 bits)
FM1 : Fréquence du premier formant (5 bits)
AMPL : Amplitude (4 bits)
FD : Durée de la trame de parole (2 bits)
PI : Incrément du pitch, ou sélection du bruit (5 bits)

Pour ceux qui sont intéressés par la programmation de ces différents paramètres, nous vous conseillons de vous référer à des notes d'applications et à des ouvrages spécialisés sur la synthèse vocale, ou encore de décortiquer le logiciel fourni avec le synthétiseur.

LE LOGICIEL SUR CPC

Le logiciel fourni avec le synthétiseur a retenu les principes expliqués précédemment et utilise une table comportant la suite des sons émis.

Pour le fichier PHC.BIN, vous retrouverez la table des sons entre les adresses &92C3 et & A654. Pour chacun des sons, vous trouverez d'abord le nombre d'octets pour le son, codé sur 16 bits (2 octets), suivis d'un octet nul séparateur et des octets du son. A partir de cette table sont effectués des calculs relativement complexes pour retrouver l'adresse des différents sons.

Si vous désirez réécrire un programme plus modulaire, et permettant d'ajouter des sons ultérieurement, ou d'effectuer des corrections, nous vous conseillons d'organiser la table selon la figure 7.

A titre d'expérimentation, nous vous fournissons ci-dessous les deux séries de codes hexadécimaux manquant pour compléter le programme HOP.BIN afin de lui faire dire les nombres de zéro à 999 :

SOIXAN :
1A F7 F8 10 1B F7 FC 10
1A F7 FC 30 1A F7 FC F0
92 B0 7B C0 DA 8E 6B 20
67 B1 8F 48 BB 92 9F A4
BA 93 9F A0 A0 B4 86 5D
2A F7 9D D0 1A F7 9C F0
15 D6 8D 50 B6 B3 7E 22
B2 B3 97 3E 36 D1 9F 5D
31 CF 8E 7C 32 AE 94 FF
20 8E 53 C2 21 8D 48 63

CENT :
1A F7 C8 10 1A F7 CB 90
1A F7 CB B0 1A F7 AD 70
1A F4 8D F0 B5 D2 86 A0
66 D1 9F AE 22 CF 8F 40
12 CD 8E DC 52 AA 84 DD
52 AD 83 3E 10 AE 78 41

Fig. 7 : Organisation de la table des sons.

Page précédente : 6/6.1: V. Un répondeur téléphonique
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.73-desktop
Page créée en 644 millisecondes et consultée 284 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.