Audio Multidisplay

En este ejemplo de programa HOST se reproduce un fichero de audio en distintas pantallas, segun la tecla que se pulsa (de 1 a 4). Para que funcione, es necesariocolocar el fichero de audio “aguaregadera.mp3” dentro de una carpeta llamada “audio” dentro de la carpeta “assets” de cada display.

Fichero displays.xml

<xml >
<virtualDisplay width="3840" height="1248"> 
 <display id="1" x="0" y="0" width="1280" height="768" />
 <display id="2" x="1280" y="0" width="1280" height="768" />
 <display id="3" x="2560" y="0" width="1280" height="768" />
 <display id="4" x="0" y="1000" width="800" height="600" />
 <display id="5" x="1000" y="1000" width="800" height="600" />
 <display id="6" x="2000" y="1000" width="800" height="600" />
 <display id="7" x="3000" y="1000" width="800" height="600" />
</virtualDisplay>
</xml>

Codigo Host en Proccessing

int ANCHO=1280; //definir valores segun tamaño pantalla destino
int ALTO=768;

TACAPI miAPI;
DisplaysHost displaysClient;



void setup() {
 
 // Keystone will only work with P3D or OPENGL renderers, 
 // since it relies on texture mapping to deform
 //fullScreen( P3D);
 size(80, 60, P3D); 
 frameRate(16);
 
 //definicion de la API
 miAPI = new TACAPI();
 
 //virtual screens
 displaysClient = new DisplaysHost("host"); 
 
}

void draw() {
 //Programacion Juego 
 displaysClient.beginDraw(); 
 
 
 displaysClient.endDraw();
 
}

void eventoTAC(TAC ta) {
 //tratamiento de tacs
 //ta.info();
 
}

void mensajeRecibido(OscMessage theOscMessage) {
 //tratamiento mensaje osc
}

void keyPressed() {
 switch(key) { 
 case ESC: 
 displaysClient.disconnect();
 super.stop();
 break;
 case '1':
 displaysClient.pararAudio("aguaregadera.mp3",5);
 displaysClient.pararAudio("aguaregadera.mp3",6);
 displaysClient.pararAudio("aguaregadera.mp3",7);
 displaysClient.reproducirAudioLoop("aguaregadera.mp3",4);
 break;
 case '2':
 displaysClient.pararAudio("aguaregadera.mp3",4);
 displaysClient.pararAudio("aguaregadera.mp3",6);
 displaysClient.pararAudio("aguaregadera.mp3",7);
 displaysClient.reproducirAudioLoop("aguaregadera.mp3",5);
 break;
 case '3':
 displaysClient.pararAudio("aguaregadera.mp3",5);
 displaysClient.pararAudio("aguaregadera.mp3",4);
 displaysClient.pararAudio("aguaregadera.mp3",7);
 displaysClient.reproducirAudioLoop("aguaregadera.mp3",6);
 break;
 case '4':
 displaysClient.pararAudio("aguaregadera.mp3",5);
 displaysClient.pararAudio("aguaregadera.mp3",6);
 displaysClient.pararAudio("aguaregadera.mp3",4);
 displaysClient.reproducirAudioLoop("aguaregadera.mp3",7);
 break;
 }
}


Retos de aprendizaje

 


Documentación

  • Para añadir elementos multimedia a los gestores pintor, ver apartado Gestión de assets.

 

  • reproducirAudio

Este método permite reproducir una vez el audio solicitado. Recibe los siguientes parámetros:

String id: identificador del audio. Es imprescindible que sea igual que el nombre del audio disponible en la carpeta del cliente.

int display: identificador del display que reproducirá el audio. Este valor debe coincidir con el valor id del currentDisplay del fichero displays.xml que tiene el display que reproducirá el audio.

  • reproducirAudioLoop

Este método permite reproducir en loop un audio. Los parámetros que recibe son:

String id: identificador del audio (el mismo que el utilizado en reproducirAudio)

int display: identificador del display que reproducirá el audio (mismo requisito que en reproducirAudio)

  • pararAudio

Este método permite parar un audio. Los parámetros que recibe son:

String id: identificador del audio (el mismo que el utilizado en reproducirAudio)

int display: identificador del display que reproducirá el audio (mismo requisito que en reproducirAudio)