Construction de scripts pour le traitement de la musique, des langues, des mathématiques...

Je ne vais pas décrire tous les scripts et toutes les fonctions que Jaws met à votre disposition, car ce serait fastidieux et inutile. Vous les trouverez par vous-même, si vous en avez besoin, dans les aides contextuelles du gestionnaire de script. Ici je mets l'accent sur 3 groupes de fonctions :

1: Utilisez les fonctions suivantes pour lire des informations, soit à partir de l'écran, soit à partir de messages dans un script.

Say, SayAll, SayInteger, SayCharacter, SayCharacterPhonetic,

SayWord, SpellWord, SayChunk, SayControl, SayField, SayLine,

SayToCursor, SayFromCursor, SayTextBetween, SayToBottom, SayFont,

SayString, SpellString, SayParagraph, SaySentence, SayUsingVoice

2 : Utilisez les fonctions suivantes pour obtenir des données sur les chaînes et les manipuler.

StringContains, SubString, StringToInt, IntToString, StringLength, StringLower, StringUpper,

StringSegment, StringLeft, StringRight, ProcessNewText, FormatString, Min, Max

3 : Utilisez les fonctions suivantes pour le traitement sonore de la parole :

ResetSynth, SpeechOn, SpeechOff, IsSpeechOff,

StopSpeech, SpeechInUse,

SetSynth, SetSynthLanguage, GetVoiceVolume,

SetVoiceVolume, GetVoiceRate, SetVoiceRate,

GetVoicePitch, SetVoicePitch, GetVoicePunctuation,

SetVoicePunctuation, GetVoicePerson, SetVoicePerson, GetSynthVolumeRange,

GetSynthRateRange, GetSynthPitchRange, GetVoiceParameters, SetVoiceParameters

On pourra aussi utiliser les 3 fonctions MessageBox, PlaySound et TypeString, pour envoyer des messages depuis un script.

On verra qu'il est alors facile de créer des outils sonores pour le traitement de la musique, des langues, des mathématiques... comme on le fait avec d'autres langages comme le PHP ou le C

saisie Mémento aide

Cette page contient des titres, que vous pouvez parcourir, avec Jaws, grâce au raccourci "insert+F6" puis "flèche bas".

Si vous consultez cette page pour la première fois, allez directement au titre "Comment travailler..." Sinon, vous pouvez aussi aller directement aux exercices de votre choix, en utilisant les liens sur la même page suivants :

Liens avec les exercices sur la même page

Exercice 1 : exemple de recherche d'une expression dans la ligne courante d'une fenêtre d'édition

Exercice 2 : exemple de recherche d'expressions séparés par des symboles d'une liste de séparateurs

Exercice 3 : exemple de script pour du calcul numérique

Exercice 4 : exemple de script pour la lecture musicale

Exercice 5 : exemple de script pour la prononciation des mots d'une langue

Comment travailler les exercices de cette page

Dans chaque exercice, vous trouverez des lignes de données, que vous pourrez saisir, si vous le désirez, de la manière suivante : Vous utiliserez le copier/coller pour placer une donnée dans le champ d'édition du lien "saisir", qui se trouve en haut de cette page.

Si vous êtes aveugle, vous pouvez réaliser cette opération sans la souris, avec des raccourcis comme ci-dessous. placez vous au début d'une ligne de donnée avec "flèche bas", puis quand Jaws vous lit une donnée que vous désirez saisir, faites les raccourcis suivants : "maj+flèche bas" puis "ctrl+c" puis "ctrl+page haut" puis "tab" puis "entrée" puis "entrée" puis "ctrl+v" puis "entrée"

Ces actions auront permis de saisir la ligne de donnée, sans avoir besoin de la taper, et vous pourrez, s'il y a lieu, lire le résultat courant, avec la commande mmathweb0. En effet, vous vous retrouverez dans la page résultat, dans laquelle se trouve en plus du résultat courant, des liens avec des exécutables comme mathweb0... Le lien "exécuter le résultat courant..." donne parfois l'exécution du résultat précédent, et dans ce cas, vous l'activerez une nouvelle fois, pour exécuter le résultat courant.

Dans le texte, vous trouverez des lignes de données, qui commencent par un symbole spécial, comme #, :, $, ou £... Vous pouvez changer ce symbole par un autre, pour vous aider dans votre étude. En plus des données que vous saisirez par le mécanisme du copier/coller, vous pourrez, bien sûr, taper des données de votre choix. Vous reviendrez dans cette page en faisant une ou plusieurs fois, le raccourci "alt+flèche gauche"

Exercices avec les fonctions de lecture et de traitement des chaînes de caractères

Exercice 1 :

Voici quelques idées pour le traitement d'un texte d'une fenêtre d'édition. On peut, par exemple, rechercher si la ligne courante contient une expression donnée, pour la traiter. Pour cela, on utilisera la fonction GetLine et la fonction StringContains.

Exemple :

If (StringContains (GetLine (), "expression") != 0) Then ;traitement de la ligne qui contient l'expression...

EndIf

Cette instruction est facile à comprendre, car la fonction StringContains renvoie la position de la chaîne "expression", dans la chaîne GetLine (), ou 0 si "expression" n'est pas dans la ligne courante.

Exercice 2 :

On montre dans cet exercice, comment on peut rechercher, dans un paragraphe, des expressions séparées par des symboles pris parmi une liste de séparateurs. Pour cela, on compare chaque caractère du paragraphe, à un symbole de la liste, et on copie alors l'expression trouvée, et ainsi de suite...

Exemple :

;Déclaration des variables

var

string paragraphe,

string expression,

string sep,

string symbole,

int ilon,

int inum,

int iexpr

;saisie des données

Let paragraphe=GetParagraph ()

Let ilon=StrLength (paragraphe)

Let sep="+-"

;les séparateurs sont les symboles "+" et "-"

;boucle de recherche des expressions

While (inum<=ilon)

Let inum=inum+1

Let iexpr=iexpr+1

Let symbole=SubString (paragraphe,inum,1)

If (StringContains (sep,symbole)>0) Then)

;on copie l'expression

Let expression=SubString (paragraphe,inum-iexpr+1,iexpr-1)

Let iexpr=0

;traitement de l'expression...

EndIf

EndWhile

Explications :

L'entier iexpr sert pour calculer la longueur de l'expression. On utilise l'instruction While, pour réaliser la boucle de recherche, car il n'y a pas d'instruction "do" dans le langage script pour Jaws. On peut utiliser cette méthode de recherche d'expressions, pour de multiples applications, comme nous allons le voir dans les exercices suivants.

Exercice 3 :

L'idée de cet exercice est de créer un script qui effectue un calcul avec les 4 opérations. Je ne vous donne pas le contenu de ce script, qui serait plus difficile à lire, plutôt que de comprendre quelles sont les fonctions qui vont vous permettre de le réaliser. Il faut être capable de trouver les nombres et les opérateurs "+", "-", "*" et "/" contenus dans la ligne courante. Pour cela, on pourra écrire une boucle While, comme dans l'exercice 2.

Quand une expression, séparée par les symboles "+-*/" sera trouvée, on utilisera la fonction StringToInt, pour la transformer en entier. Pour savoir si cette expression est un entier non nul, on pourra écrire une instruction comme :

If (Let inombre=StringToInt (expr) >0) Then

;traitement...

EndIf

En effet, la fonction StringToInt renvoie 0, quand la chaîne expr ne commence pas par un entier. Pour simplifier la recherche des nombres et des opérateurs dans la ligne courante, obtenue par :

Let ligne=GetLine ()

vous commencerez par normaliser la chaîne ligne, en otant tous les espaces de la chaîne. Pour cela, vous créérez une fonction OteBlanc, qui prendra la chaîne à traiter en entrée, et qui retournera la chaîne normalisée. Son prototype sera :

string function OteBlanc (string ligne)

;traitement de la chaîne ligne...

Return ligne

EndFunction

Il est aussi conseillé de crééer la fonction Somme et la fonction Produit. Par exemple, la fonction somme peut prendre 2 chaînes en entrée, et renvoyer la chaîne qui correspond à la somme des nombres associés aux chaînes en entrée. Ici encore, vous utiliserez les fonctions StringToInt et IntToString, pour faire le calcul, puis pour renvoyer le résultat sous forme de chaîne.

Il faut souligner que le langage script ne traite pas les nombres en virgule flottante, et que les nombres renvoyés par la fonction StringToInt sont des nombres entiers. Si vous voulez calculer avec des nombres décimaux, vous rechercherez le symbole ";", pour trouver la partie décimale d'un nombre. Puis vous ferez le calcul entier de la somme des parties décimales, puis des parties entières... Vous remarquez que le langage script a ses limites, et qu'il n'est pas approprié à ce type de calcul! Cet exercice montre qu'il vaut mieux utiliser le langage script de Jaws pour ce à quoi il sert : essentiellement, rechercher des expressions sur l'écran, pour les lire à haute voix,les épeler, les traduire dans une autre langue...

Exercice 4:

L'idée de cet exercice est de créer un script qui déchiffre une ligne de tablature musicale, et qui fasse entendre cette tablature. On suppose que les conventions d'écriture utilisent les caractères c d e f g a b et p, pour désigner les notes do ré mi fa sol la si et p pour les silences. Un dièse sera indiqué par le symbole "+" placé après une note, le bémol par le symbole "-"... La durée des notes sera indiquée par un entier entre 1 et 8 (1 pour la ronde, 2 pour la blanche...) On construira, comme dans les exercices précédents, une boucle While, pour la recherche des symboles de l'écriture musicale.

La fonction PlaySound ("note.wav") sera utilisée pour faire jouer une note. Pour traiter la durée des notes, on utilisera la fonction Delay (idur), où l'entier idur est la durée d'attente, en millisecondes. Les fichiers .wav qui contiennent les enregistrements des notes avec un instrument réel, seront placés dans un même répertoire. Comme l'exécution de PlaySound interrompt le son du .wav en cours, la fonction Délay permettra de jouer les notes avec leur durée (si on les enregistre avec une durée de ronde)

Vous pouvez faire l'essai avec les fichiers 29.wav, 30.wav...du répertoire c:\sv3\musivox\wav Ces fichiers correspondent aux notes c, c+...enregistrés avec une guitare classique. L'idée de donner des noms d'entiers consécutifs aux fichiers des notes d'une gamme chromatique, permet d'envisager très facilement la transposition d'une tablature. Il suffira d'ajouter aux noms des fichiers de notes, l'entier qui correspond au nombre de demi-tons de la transposition. Vous trouverez par vous-même comment traiter tous les symboles musicaux (changement d'octave, tempo, notes piquées...)

Exercice 5 :

Voici un exemple d'instruction que vous pouvez placer dans un script, pour qu'il épelle le mot courant, dans une langue de la synthèse Eloquence.

If (SetSynthLanguage ("American English")) Then

SpellWord ()

else

MessageBox ("La langue américaine n'est pas disponible")

EndIf

SetSynthLanguage ("French")

Le paramètre de la fonction SetSynthLanguage est la chaîne qui définit la langue de la synthèse Eloquence. C'est la chaîne qui est indiquée dans le sous-menu "changer synthèse..." du menu "langue" de l'application Jaws. Vous voyez qu'il est très facile de crééer des utilitaires pour travailler des langues naturelles. Vous pourrez choisir la vitesse d'élocution, en utilisant la fonction SetSynthRate, pour permettre à vos lecteurs de travailler selon leur niveau de compréhension...

suivant : liens utiles pour le cours sur les scripts pour Jaws

Retour dans le sommaire de ce cours sur les scripts pour Jaws

Retour dans la page sommaire de la rubrique langage