Vos actions : Créer un document, voir la page générale.

Cultures numériques

Cours de Bachelor 1

Analyser un texte, actionner des sons

Ce script utilise la classe analyse_texte. Ce code écrit pour l’occasion permet de charger un texte, de faire plusieurs type d’analyses et ensuite le parcourir mot à mot ou phrase par phrase. A chaque moment, il est possible de connaitre le nombre de mots, le nombre de lettres. Autant de chiffres qui peuvent être transformés en sons.

La base du code

Une fois le code de la classe installé, on peut le mettre l’activer comme suit.

texte montexte; // déclarer l'objet
  montexte=new texte("madame_bovary.txt"); // charger le texte et l'analyser
  println("nombre de mots: "+montexte.nombre_mots);
  println("nombre de phrases: "+montexte.nombre_phrases);

println ("La phrase chargée : "+montexte.phrase);
println ("Le mot en cours : "+montexte.mot);

montexte est un objet qui contient le texte et les outils pour le manipuler.
montexte.phrase est la phrase actuellement chargée
montexte.mot est le mot actuellement chargé

montexte.mot_suivant() permet de charger le mot suivant dans le texte
montexte.phrase_suivante() permet de charger la phrase suivante

Le fichier zippé "script basique" est un exemple fonctionnel du code suivant.

import processing.sound.*;
SoundFile son;
texte montexte;
int trigger;
int vitesse;

// changer le nom du fichier texte ici
String s="madame_bovary.txt"; // nom du texte

void setup() {
  size(600, 600);
  // charger les fichiers mp3 ou aif dans "liste"
  son = new SoundFile(this, "1.aif");
  montexte=new texte(s);
  vitesse=200;

  // quelques infos sur le texte analysé
  println("Dans le texte "+s);
  println("nombre de mots: "+montexte.nombre_mots);
  println("nombre de phrases: "+montexte.nombre_phrases);
  println("nombre de mots dans l'inventaire : "+montexte.inventaire.size());
  println("Mot le plus employé : -"+montexte.tri_mot[0]+"- "+montexte.tri_occurence[0]+ " fois");

  trigger = millis();
}

void draw() {
  if (millis() > trigger) {
    background(0);
    fill(255);

    //montexte.mot_suivant();
    montexte.phrase_suivante();
    String p=montexte.phrase;

    if (combien(p, "madame|mademoiselle|femme|fille|belle|douce|corps|robe|vetement|manches") > 0) {
      son.play();
      fill(0, 255, 100);
      rect(0, 0, width, height);
    }

    fill(255);
    montexte.affiche_stats();
    trigger = millis() + vitesse;
  }
}

int combien(String p, String query) {
  p=p.toLowerCase();
  String[] m1=match(p, query);
  if (m1 != null) {
    return m1.length;
  } 
  return 0;
}
Par Stéphane Noël, 20 novembre 2016