Morse

Morse

Bien que dépourvu de tout intérêt en soi, une nouvelle version de l'application Morse vient s'ajouter à cette page pour venir expliquer le problème posé par le déclenchement d'un son à un intervalle précis sans avoir ouvert au préalable les ports de la carte son.

L'application permet désormais de faire le décodage et la traduction du code morse à la volée tel que seul un homme expérimenté dans ce domaine pourrait le faire. À savoir qu'une notation bien précise du code morse doit être utilisée pour que sa traduction soit possible:

L'équivalent en morse de chaque caractère latin doivent être séparés entre eux par un simple espace:
SOS devient ... --- ...
L'équivalent d'un caractère ESPACE latin devient un double espace en code morse:
SOS SOS devient ... --- ...  ... --- ...

Un bouton REVERSE permet de renverser le codage des champs actuellement affichés à l'écran. Ce qui permet de vérifier que le codage décodage donne le même résultat lorsque le reverse engineering est utilisé plusieurs fois d'affilée.

Mais le plus important, puisque c'est à ça que doit servir avant tout le déploiement de cet outil ici, c'est le bouton SILENCE! C'est lui qui vas permettre de tester le flux des émissions sonores à intervalles réguliers. La différence entre l'émission des sons lorsque la nappe sonore est active ou désactivée est perceptible pour tout le monde je le penses. Cela s'explique tout simplement. En fait si méthode Sound.start () est appelée lorsqu'aucun son n'est utilisé à ce moment là par le lecteur Flash, le lecteur vas devoir demander l'autorisation d'utiliser la carte son au système qui l'héberge, puis de s'allouer un port d'écoute sur la carte (une voie plus simplement). Cette opération est bégnigne dans un environnement normal où le déclenchement du son ne doit pas correspondre au centième de secondes prés à son appel, mais lorsque l'application est basée sur la synchronisation des sons, cela devient amplement plus complexe.

Il existe nombre de séquenceurs Flash qui permettent de jouer une série de sons sur 8 voies stéréo pour les plus simples, et sur 16 voies mono pour ceux dont l'auteur est un développeur confirmé. Seulement je n'en ai encore vu aucun qui les jouent de façon parfaitement synchrone. Il faut d'abord connaître l'astuce que je vais m'éforcer de vous dévoiler maintenant.

Le secret repose sur un simple sample sonore d'un dixième de seconde qui tourne en boucle à l'infini pendant le déroulement de la séquence sonore:
Format: WAV.
Poids: 8,65 Ko.
Durée: un dixième de seconde.

Mais ce huitième son, car il faut savoir que le nombre de voies intrinsèquement émulées par le lecteur Flash se limitent à 8, occupe une voie supplémentaire dans l'animation, ce qui peut être gênant lorsque les 8 voies doivent être utilisées simultanément. Il faut donc tout simplement gérer un système de pile de 8 sons qui se révèle de toutes façons fort utile pour la gestion de l'animation dans la plupart des cas. Lorsqu'un deuxième élément autre que le sample silencieux est rajouté à cette pile, il vient tout simplement écraser le sample silencieux, puisque le son rajouté maintien désormais les ports d'écoute de la carte ouverts pendant ce temps.

Rem: Le nombre de voies émulées par Flash ne se limitent pas seulement à 8 dans une animation, mais aussi sur toutes les animations actuellement ouvertes sur le systéme. En clair, ce n'est pas la peine d'essayer d'utiliser 64voies en ouvrant 8 animations Flash dans une même page HTML avec un objet LocalConnection puisque la limite se fera quand même à 8 voies en tout et pour tout.

Bref peu importe la méthode d'application, le principe est de toujours garder un sample sonore actif, même s'il s'agit d'un silence numérique parfait, puisqu'il trompera le système et la carte sonore à merveille pour nos besoins.

A noter tout de même qu'il ne faut pas oublier d'exporter ce son avec les paramètres:
Format : ADPCM
Fréquence d'échantillonage: 5kHz (la plus basse)
Bits ADPCM par sample: 4bits

Ainsi, le sample ne pèse à peine plus que quelques 100 octets (une ligne dans un fichier texte)

Téléchargements

Télécharger le fichier .FLA
Version :
MX
Fonctions utilisées :
Sound.start();
Sound.stop();
Sound.attachSound();
setInterval();
clearInterVal();
Object.registerClass();
Components :
PushButton
RadioButton

Samedi 14 Décembre 2002

Cette page pourrait très bien étendre le tutoriel sur la synthèse sonore en Flash puisqu'elle présente un petit exemple de l'utilisation de la technique décrite pour importer un sample WAV afin de générer un signal sonore sans alourdir le fichier du projet.
La première boîte qui apparait à l'écran est un champ de saisie qui permet de rentrer un texte en caractères latins à faire lire en morse suivant son alphabet officiel. L'application ignore les caractères ne faisant pas partie de l'alphabet morse.

Téléchargements

Télécharger le fichier .FLA
Version :
MX
Fonctions utilisées :
Sound.start();
Sound.stop();
Sound.attachSound();
setInterval();
clearInterVal();
Components :
PushButton

Question de culture

Pour ceux qui ne la connaissent pas encore par coeur, voici la table de correspondance entre chaque caractère de l'alphabet latin et son code dans l'alphabet morse. Il faut savoir que par convention le délai émis pour un espace dans la phrase et retranscrit également par un espace dans le code morse écrit.

Caractère latin Code Morse Caractère latin Code Morse Caractère latin Code Morse Caractère latin Code Morse
a .- j .--- s ... 1 .----
b -... k -.- t - 2 ..---
c -.-. l .-.. u ..- 3 ...--
d -.. m -- v ...- 4 ....-
e . n -. w .-- 5 .....
f ..-. o --- x -..- 6 -....
g --. p .--. y -.-- 7 --...
h .... q --.- z --.. 8 ---..
i .. r .-. 0 ----- 9 ----.

Cette table ainsi que d'autres informations intéressantes sont tirées de la page : http://fr.wikipedia.org/wiki/Alphabet_morse.

  rss rss english xhtml 1.1 css 2.0 wdg