samedi, avril 22, 2017

Comment créer son extension video firefox, tutoriel 4

 Le fichier jo.js à télécharger ici  jo.js 


Contient une partie qui permet d'identifier les différents fichiers audio en les nommant et d'une partie qui génère les fichiers audio au format actuel à partir d'un fichier audio au format abadie.joa

Le format audio abadie.joa est un format audio qui indique la crète et la durée de chaque front d'onde en mode ascii

Les entrailles du fichier

Pour créer le nom du fichier audio qui va être lu,
1- je crée une constante nommée basewave que je mets en mémoire dans la valeur lenommeur1
lenommeur1= "basewave";


2- Je crée une variable nommée le variateur que j'incrémente à chaque appel de la fonction ou se trouve la variable
levariateur = levariateur + 1;

 3- Je modifie le nom du fichier audio en concaténant le contenue de la constante avec le contenue de la variable, j'aurais pu utiliser le symbole + pour concaténer, mais les entrailles du javascript sont parfois hazardesues et l'utilisation de concat est plus sure.
lenommeur = lenommeur1.concat(levariateur);

4- j'effectue un trie en fonction de la valeur contenue dans le variateur en utilisant un switch
switch(levariateur) {

5-  Exemple ou le variateur égal 2, qui s'écrit avec case 2:

Je crée trois variables que je vide, à chaque lecture
Je crée une fonction nommée ajouteElement que j’appelle à la fin
Dans cette fonction je place un générateur de code qui va dans la partie HTML, générer un lecteur audio adressé  avec le bon nom du fichier audio généré.
Cette partie marie logique et conventions d'écriture. Les conventions impliquent que le code semble long, mais c'est comme ça.
La logique est que nous devons avoir un nom unique par fichier audio, qu'il faut dire à la page HTML d'ouvrir un lecteur audio en direction du bon fichier audio, c'est tout, le reste n'est que conventions pour dire ça.

//zone 1
var mon_audio1 = null;
var nouveauaudio1 = null;
var nouveauaudio1a = null;
function ajouteElement() {
  // crée un nouvel élément audio
  nouveauaudio1 =  document.createElement("audio");
nouveauaudio1.setAttribute("id", "audiojoa");
nouveauaudio1.setAttribute("controls", "controls");
nouveauaudio1.setAttribute("autobuffer", " ");
  // ajoute l'élément qui vient d'être créé et son contenu au DOM
 nouveauaudio1a = document.createElement("source");
  nouveauaudio1a.setAttribute("src", "data:audio/wav;basewave2,");
   nouveauaudio1.appendChild(nouveauaudio1a);
  mon_audio1 = document.getElementById(lenommeur);
  document.body.insertBefore(nouveauaudio1, mon_audio1);

ajouteElement();
//fin zone 1


Du nombre de cas écrit, sera le nombre de cas possibles, en français du nombre de fichiers audio que nous pourrons générer pour les mixer à la lecture avant de de régénérer la page HTML pour pouvoir générer de nouveaux fichiers audio

6- Génération du fichier audio

La partie précédente ne sert qu'à créer le code HTML, maintenant nous allons générer le fichier audio.
En premier nous créons un fichier audio source avec

var audio = document.getElementById("audiojoa");
var source = document.createElement("source");
source.setAttribute("src", lenommeur);
audio.appendChild(source);


Ensuite nous générons le fichier audio avec la fonction

function lecjo(FichierAudioJo)

La fonction compare en premier si la valeur de crète est inférieur ou supérieur à la valeur de crète précédente pour savoir si c'est un front montant ou un front descendant. Ensuite elle va chercher les valeurs dans la table en fonction de la durée en créant un point de symétrie par rapport au centre du front d'onde. Les points de repère de la table sont sur 8 octets divisés par deux grace à la symétrie d'ou 128 cas possibles, mais les valeurs dans la table sont bien les réponses obtenues pour un fichier audio de 16 octets. Cette technique associé au fait que c'est de la modélisation permet d'obtenir une qualité sonore jamais égalée, car la finesse du résultat est largement supérieur aux capacités technologiques ou physiologiques.
Cinq minutes de rire pour un adulte, durent une éternité pour un enfant.

Aucun commentaire: