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. |
Sommaire
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.
- 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
- 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