Club robotique de Sophia-Antipolis

Accueil > Projets, études > Etudes techniques > Son > Représenter les couleurs par un son

Représenter les couleurs par un son

vendredi 1er novembre 2013, par Jean B.

Après avoir utilisé une abaque de teinte pour visualiser la couleur détectée par notre capteur à filtres rouge, vert, bleu, un de nos brillants adhérents a émis l’idée de rendre audible cette combinaison de couleurs primaires pour laisser à notre cerveau la possibilité d’entendre une teinte. Après tout, on parle bien de "bruit blanc" ou de "bruit rose" !

Le code a été développé en Java sous Processing avec la bibliothèque Minim. Cela permet de combiner des signaux audio (carrés) et de les entendre avec la carte son et une paire d’enceintes.

Première tentative

On fait varier la fréquence de trois signaux carrés qui sont superposés.

Voici le code :

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;


Minim minim;

AudioOutput out;
SquareWave square1;
SquareWave square2;
SquareWave square3;

int z = 440;

void setup()
{
  size(440, 440);

  minim = new Minim(this);

  out = minim.getLineOut();

  square1 = new SquareWave(440, 1, 44100);

  square2 = new SquareWave(730, 1, 44100);

  square3 = new SquareWave(900, 1, 44100);


  out.addSignal(square1);
  out.addSignal(square2);
  out.addSignal(square3);
}



void draw()
{
  square1.setFreq(220+mouseX);
  square2.setFreq(660+mouseY);
  square3.setFreq(800+z);
  
  if ( key == 'm' )
  {
    out.mute();
  }

  if (key == 'u') 
  {
    out.unmute();
  }
  
  if (key == '+') 
  {
    z+=10;
  }
  
  if (key == '-') 
  {
    z-=10;
  }
}



void stop()
{
  out.close();
  minim.stop();

  super.stop();
}

On utilise la souris et le clavier pour simuler les variations de fréquence du capteur sur trois axes correspondant aux couleurs primaires rouge, vert et bleu.

Voici le résultat :

Seconde tentative

On utilise cette fois-ci le volume de trois signaux carrés de fréquence fixe (grave, moyen et aigu) :

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;


Minim minim;

AudioOutput out;
SquareWave square1;
SquareWave square2;
SquareWave square3;

int z = 250;

void setup()
{
  size(500, 500);

  minim = new Minim(this);

  out = minim.getLineOut();

  square1 = new SquareWave(220, 1, 44100);

  square2 = new SquareWave(440, 1, 44100);

  square3 = new SquareWave(880, 1, 44100);


  out.addSignal(square1);
  out.addSignal(square2);
  out.addSignal(square3);
}



void draw()
{
  square1.setAmp(mouseX/500.0);
  square2.setAmp(mouseY/500.0);
  square3.setAmp(z/500.0);
  
  if ( key == 'm' )
  {
    out.mute();
  }

  if (key == 'u') 
  {
    out.unmute();
  }
  
  if (key == '+') 
  {
    z+=10;
    println(z);    
  }
  
  if (key == '-') 
  {
    z-=10;
    println(z);
  }
  
  key=0;
}



void stop()
{
  out.close();
  minim.stop();

  super.stop();
}

Le résultat n’est pas probant, mais sera testable lors de nos ateliers.

Vos commentaires

  • Le 2 novembre 2013 à 07:13, par Joel En réponse à : Représenter les couleurs par un son

    Je pense qu’avant la phase de développement il faut répondre à ces questions afin de préciser l’objectif :

    Est-ce que vous tenez compte de la teinte, de la luminosité et de la saturation ?

    Est-ce que vous désirez représenter une teinte par un son pur (une seule fréquence) ou par un timbre (plusieurs fréquences).

    Dans ce cas la teinte pourrait correspondre à la fréquence, la luminosité à l’intensité et la saturation à un rythme. Aussi, un timbre correspondrait à un ensemble de couleurs. Faire varier les couleurs génère alors de la "musique"_

    Est-ce que les couleurs primaires correspondent à des notes ou des tonalités précises ?

    Est-ce la lumière visible correspond à des sons audibles (dans ce cas les infra-rouges ou les UV ne seraient pas audibles) ?

    ... ce sujet est très intéressant !

    • Le 11 novembre 2013 à 18:50, par Julien H. En réponse à : Représenter les couleurs par un son

      Bonjour et merci Joël pour cette participation.

      1) uniquement la teinte

      2) l’idée est d’assembler les trois composantes Rouge, Vert et Bleu pour former un son et essayer de distinguer les couleurs à l’oreille. Ces composantes peuvent être exprimées par une fréquence ou par un rythme ou par etc... à définir !

      3) les couleurs primaires devraient effectivement se distinguer des combinaisons (extinction des deux autres composantes ?

      4) oui, pas d’infrarouge ni d’UV

      Donc au plaisir de t’accueillir pour expérimenter, mais pour revenir à ta première remarque, je ne vois pas comment définir ces choix avant le développement. Il n’y a qu’en expérimentant et en entendant vraiment le résultat qu’on pourra changer d’avis et atteindre un résultat audible.

      A suivre lors d’un prochain atelier (on veut te revoir !!)

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.