Audio multicanal sous Processing avec Beads

Ce wiki a été archivé en 2018.

Le nouveau wiki se trouve à: ressources.labomedia.org

Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia.

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

Description

Installation des composants logiciels indispensables pour utiliser une carte son 8 entrées / 8 sorties avec Processing.

Marche à suivre pour MacOsX

Configuration matériel

Installation de Beads

http://www.beadsproject.net/?page_id=14

Choisir Beads Library for Processing.

Décompresser le dossier.

Ouvrir le dossier Beads_Processing

Copier le répertoire beads dans /Utilisateurs/{Nom_Utilisateur}/Documents/Processing/librairies

installation de Jack

http://jackosx.com/download.html

J'utilise la version v0.89. JackPilot permet de démarrer et de router les entrées/sorties de Jack facilement. Attention démarrer JackPilot ne démarre pas Jack et réciproquement quitter JackPilot ne fait pas quitter Jack. Pour démarrer le serveur Jack cliquer sur Démarrer.

Installer jjack

http://jjack.berlios.de/download.html

J'utilise jjack-0.3tar.gz

  • Dézipper le répertoire
  • Copier les fichiers 

/lib/jjack.jar

/lib/macosx/libjjack.jnilib

dans le répertoire

/Utilisateurs/{Nom_Utilisateur}/Bibliothèque/Java/Extensions

Si les répertoires Extensions ou Java ne sont pas créés, faites le en respectant le chemin ci-dessus.

  • Maintenant tous les sketchs de Beads peuvent utiliser Jack. Regarder le message dans la console :

JavaSoundAudioIO: Chosen mixer is JJack. Tant que le sketch est lancé, vous pouvez voir dans le gestionnaire de connections de JackPilot apparaître dans les colonnes de Ports d'émission et de réception un nouvel appareil Processing. Vous pouvez connecter vos entrées/sorties de votre sketch avec ceux de votre carte son qui doivent apparaître. Par défaut JJack permet la connexion de seulement 2 entrées et 2 sorties.

Définir le nombre d'entrées/sorties

Cela se fait en deux étapes.

  1. Ajouter des options de démarrage
    • Editer le fichier /Utilisateurs/{Nom_Utilisateur}/Bibliothèque/Processing/preferences.txt Attention, prendre bien soin de le faire quand Processing est arrêté sinon les modifications seront annulées.
    • Compléter l'option run.options= avec la ligne suivante : run.options=-Djjack.client.name=Processing -Djjack.ports=8 -Djjack.ports.autoconnect=true Si vous souhaitez un nombre de ports différents en entrée ou en sortie, vous pouvez utiliser cette option (8 sorties/4 entrées) : run.options=-Djjack.client.name=Processing -Djjack.ports.out=8 -Djjack.ports.in=4 -Djjack.ports.out.autoconnect=true
    • Enregistrer le fichier
  2. Utiliser un objet AudioFormat en multicanal dans Beads Pour 8 entrées/8 sorties :
    AudioContext ac = new AudioContext(AudioContext.defaultAudioFormat(8)); 
    

    Si vous souhaitez utiliser un nombre de ports différents en entrée ou en sortie :

    AudioContext ac = new AudioContext(AudioContUext.defaultAudioFormat(8,4));
    

Code pour illustrer

import beads.*; 
AudioContext ac; 

float[] volume, moyenne;
int tampon;
int portAudio;

void setup() { 
  size(400, 300); 
  stroke(255);
  noFill();
  portAudio = 8;
  ac = new AudioContext(AudioContext.defaultAudioFormat(portAudio)); 
  ac.out.setGain(100); 
  UGen entrees = ac.getAudioInput(new int[] {0, 1, 2, 3, 4, 5, 6, 7}); 
  ac.out.addInput(entrees); 
  ac.start();
  println(ac.getBufferSize());
  volume = new float[portAudio];
  moyenne = new float[portAudio];
  for (int p = 0; p < portAudio; p++) {
    moyenne[p] = 0;
  }
  tampon = 6;
  println("Nombre d'entrées : "+ ac.getAudioInput().getOuts());
  println("Nombre de sorties : "+ ac.out.getIns());
} 

void draw() {
  background(0);
  for (int p = 0; p < portAudio; p++) {
    volume[p] = 0;
  }
  for (int p = 0; p < portAudio; p++) {
    for (int i = 0; i < ac.getBufferSize(); i++) {
      volume[p] += abs(ac.out.getValue(p, i));
    }
  }
  for (int p = 0; p < portAudio; p++) {
    moyenne[p] = ((moyenne[p] * tampon) + volume[p])/(tampon + 1);
    rect((width / portAudio) * p, 0, (width / portAudio), moyenne[p]);
    text(p, (width / portAudio) * (p + 0.5), 280);
  }
}

Liens externes

Processing (en) : Site officiel

Tutoriel (en) : BeadsProject