- Documentacion actualizada. Bug de preview por capa corregido.

This commit is contained in:
Santi Noreña 2013-02-12 16:03:37 +01:00
parent 2d1bbe0e37
commit cd32995959
6 changed files with 184 additions and 178 deletions

View file

@ -22,8 +22,7 @@ You should have received a copy of the GNU General Public License along with thi
If you have troubles, or you are in another distro, you can try compiling from the source code.
0. Requisites
tcl
tk
tcl tk --> To compile Pure Data, not necesary to execute it.
alsa-dev
make
qt4-qmake
@ -42,7 +41,7 @@ If you have troubles, or you are in another distro, you can try compiling from t
$./configure
$make
3. Build pd externals
3. Building pd externals
3.1 ola2pd
@ -64,20 +63,25 @@ echo "export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include" >> ~/.bashrc
# Build and install ola2pd
cd externals/ola2pd/
cd ola2pd
/path/to/flext/build.sh pd gcc
/path/to/flext/build.sh pd gcc install
3.2 Gem + pix2jpg
$ cd Gem
$ ./autogen.sh
$ ./configure --with-pd=./ --prefix=$HOME/pd-externals
$ make
$ make install
$ cd ..
$ cp $HOME/pd-externals/* ./pd
3.3 fileselector
make
cp fileselector.pd_linux ../pd
$ cd fileselector
$ make
$ cp fileselector.pd_linux ../pd
4. LibreMediaserver
@ -85,8 +89,9 @@ cd externals/ola2pd/
or
$ cd src
$ qmake-qt4 libremediaserver.pro -r -spec linux-g++
$ make -w in ./src folder
$ make -w

View file

@ -27,7 +27,7 @@ Necesitas una tarjeta gráfica OpenGL y que los drivers para Xorg con aceleraci
Para resolver dependencias es necesario tener conexión a internet en el ordenador durante el proceso de instalación.
PMS se comunicaa con Pure Data mediante puertos TCP, del 9195 al 9198. Open Lighting Arqitecure utiliza el puerto 9090 para su servidor web. Es necesario que estos puertos no estén siendo utilizados por otras aplicaciones.
LMS se comunicaa con Pure Data mediante puertos TCP, del 9195 al 9198. Open Lighting Arquitecure utiliza el puerto 9090 para su servidor web. Es necesario que estos puertos no estén siendo utilizados por otras aplicaciones.
1. Instala todas las dependencias.
@ -57,9 +57,6 @@ Si el protocolo elegido es ArtNet en "Universe Id" introduce el número del univ
Puedes confirmar que está llegando información pinchando en el universo en el menú de la izquierda y luego en la pestaña "DMX Monitor". Puedes cerrar el navegador.
Edita con un editor de textos el archivo "make_thumbs.sh" en el directorio scripts y cámbia en la primera línea el path a tu directorio de medias. Guarda y cierra.
Ejecuta el archivo make_thumbs.sh desde una terminal.
En LibreMediaServer, pincha en el menu File -> Change Media Path y elige el directorio donde estén tus medias. Configura las direcciones DMX de cada capa según el patch de la mesa.
En LibreMediaServer, pincha en "Change Media Path" y elige el directorio donde estén tus medias. Configura las direcciones DMX de cada capa según el patch de la mesa.
Puedes grabar la configuración ahora o esperar a que termine el programa. El programa al salir siempre guarda la configuración, y la abre automáticamente cuando se inicia.
Si vas a usar CITP/MSEx debes generar los thumbnails. Dirígete al menu CITP/MSEx y pincha en Make Thumbs. Los thumbnails se generarán automáticamente. Esto sólo lo debes de hacer cuando modifiques los archivos o los directorios de medias.

View file

@ -21,8 +21,7 @@ You should have received a copy of the GNU General Public License along with thi
LibreMediaServer es un programa para manejar visuales y audio en actuaciones escénicas, instalaciones, eventos, performances,..., basado en Software Libre.
El control de LMS se realiza mediante el Open Lighting Arquitecture, por lo que podemos usar cualquier protocolo de iluminación abierto (ArtNet, PathPort,
ShowNet, ACN,...) o dispositivo DMX-USB (Enttec Pro, Velleman, Anyuma,...).
El control de LMS se realiza mediante el Open Lighting Arquitecture, por lo que podemos usar cualquier protocolo de iluminación abierto (ArtNet, PathPort, ShowNet, ACN,...) o dispositivo DMX-USB (Enttec Pro, Velleman, Anyuma,...).
El motor gráfico y de audio es Pure Data con Gem.

View file

@ -23,64 +23,78 @@ Lee instalacion.txt para el proceso de instalación.
*******************************************************************************
Libre Media server es un programa para gestionar visuales en artes escénicas, eventos, performances, instalaciones,...
Libre Media Server es un programa para gestionar visuales en artes escénicas, eventos, performances, instalaciones,...
Se controla mediante el Open Lighting Arquitecture que soporta una gran variedad de protocolos y dispositivos estandard de iluminación: Artnet, ShowNet, PathPort, ACN, Enttec Open DMX Pro,...
Puedes controlarlo gratis con el programa MagicQ de ChamSys si no dispones de ninguna mesa o programa de iluminación. No es software libre, pero al menos es gratis y multiplataforma. En la versión más moderna ahora (1.5.7.5) para GNU/Linux no funcionan los thumbnails, en Win sí. En la carpeta "MagicQ" hay un archivo de show y los archivos de personalidad, para audio y video.
Puedes controlarlo gratis con el programa MagicQ de ChamSys si no dispones de ninguna mesa o programa de iluminación. No es software libre, pero al menos es gratis y multiplataforma. En la versión más moderna ahora (1.5.7.7) para GNU/Linux no funcionan los thumbnails, en Windows sí. En la carpeta "MagicQ" hay un archivo de show de demostración y los archivos de personalidad, para audio y video. Deberás copiarlos en la carpeta Show y Heads de MagicQ, como harías normalmente para un archivo de show y las personalidades de una cabeza.
El motor gráfico y de audio es Pure Data, que se ejecuta en background invisible al usuario. Ahora mismo podemos reproducir 255 carpetas con 255 videos cada una en cualquier formato en que esté el codec instalado en el sistema. Si lo puede leer en el reproductor de medios de gnome podrá reproducirlo LMS. También podemos reproducir fotos y textos. El reproductor de medios podemos variar la velocidad, ejecutarlo en distintas direcciones (hacia delante, hacia atrás, ping-pong), y en bucle o en un sólo disparo.
El motor gráfico y de audio es Pure Data, que se ejecuta en background invisible al usuario. Ahora mismo podemos reproducir 255 carpetas con 255 videos cada una en cualquier formato en que esté el codec instalado en el sistema. Si lo puede leer en el reproductor de medios de gnome podrá reproducirlo LMS. También podemos renderizar fotos y textos. Podemos variar la velocidad, ejecutarlo en distintas direcciones (hacia delante, hacia atrás, ping-pong), y en bucle o en un sólo disparo.
LMS tiene 8 capas de video o texto, cada dispone de una correción Bezier de 4 puntos, por lo que podemos mapear diferentes superficies, o lados de objetos. También podemos corregir el keystone mediante estos ajustes. Por supuesto, hay ajustes de color, posición, tamaño y rotación por cada capa.
Las mezclas entre capas se realizan mediante 7 canales: 3 canales pasa altos RGB, 3 canales Pasabajos RGB, con lo que se puden hacer lumas y cromas entre capas, y otro canal que define el método OpenGL de blending. El orden de las capas se controla mediante el canal de posición Z: cuanto más grande sea más al fondo se encuentra. Si no el orden de prioridad es cuanto más pequeño el número de capa más prioridad tiene (la capa 1 es la más prioritaria).
Las mezclas entre capas se realizan mediante 7 canales: 3 canales pasa altos RGB, 3 canales pasa bajos RGB, con lo que se puden hacer lumas y cromas entre capas, y otro canal que define el método OpenGL de blending. El orden de las capas se controla mediante el canal de posición Z: cuanto más grande sea más al fondo se encuentra. Si no el orden de prioridad es cuanto más pequeño el número de capa más prioridad tiene (la capa 1 es la más prioritaria).
También podemos manejar 8 capas de audio, cada una reproduciendo un archivo .ogg. El control de volumen es en 16 bits de precisión y logarítmico.
El interface gráfico es muy simple, sólo sirve para manejar la configuración de Pure Data y sirve para ver el archivo que cada capa está reproduciendo. Tenemos dos pestañas: Una para la configuración de Video y otra para la de Audio. Cada capa de audio y/o video se deberá patchear en la mesa independientemente. Los dos procesos son independientes y pueden funcionar individualmente o conjuntamente.
*******************************************************************************
GUI:
El interface gráfico es muy simple, sirve para manejar la configuración de Pure Data y sirve para ver el archivo que cada capa está reproduciendo. Tenemos dos pestañas: Una para la configuración de Video y otra para la de Audio. Cada capa de audio y/o video se deberá patchear en la mesa independientemente. Los dos procesos son independientes y pueden funcionar individualmente o conjuntamente.
Como los controles son parecidos para las dos ventanas, las explicamos juntas. Empezando de arriba hacia abajo:
A. Terminal. Se muestran mensajes de estado y de error. Común a las dos capas.
B. 8 Capas. Representan las 8 capas de video.
- B.1 Ventana de Preview. Muestra el archivo que está siendo reproducido en la capa, sin efectos ni modificaciones. Funciona a 1 frame por segundo.
- B.2 Botón de activado de la capa. Si no está en on la capa no está activada y no renderiza, se quedará en la pantalla el último frame renderizado; desactivando no va a negro.
- B.3 Dirección DMX. Hay que introducir el primer canal DMX de la capa, la misma a la que se patcheó en la mesa.
- B.1 Ventana de Preview. Muestra el archivo que está siendo reproducido en la capa, sin efectos ni modificaciones. Funciona a 1 frame por segundo. Aunque el dimmer de la capa esté a 0% esta ventana seguirá mostrando el archivo como si estuviera a 100%, lo que es útil para verificar que es el archivo correcto antes de lanzarlo.
- B.2 Botón de activado de la capa. Si no está clickado la capa no está activada y no renderiza, se quedará en la pantalla el último frame renderizado; desactivando la capa no va a negro.
- B.3 Dirección DMX. Hay que introducir el primer canal DMX de la capa, el mismo que se patcheó en la mesa.
C. Change Media Path. Cambia el path al árbol de directorios de los media. Este control es común para el video y el audio, sólo hace falta introducirlo una vez, aunque se muestra en las dos pestañas.
C. Video/Audio. Inicia o detiene los procesos de video y de audio.
D. Video/Audio. Inicia o detiene los procesos de video y de audio.
D. ReadDMX. Empieza o termina la lectura de datos DMX.
F. ReadDMX. Empieza o termina la lectura de datos DMX
E. OLA Universe. El universo de Open Lighting Arquitecture que hemos configurado como entrada y al que el proceso escuchará. Ver instalacion.txt para detalles y configuración de OLA.
H. OLA Universe. El universo de Open Lighting Arquitecture que hemos configurado como entrada y al que el proceso escuchará. Ver instalacion.txt para detalles y configuración de OLA..
F. Window. Crea y destruye la ventana de reproducción.
G. Window. Crea y destruye la ventana de reproducción.
G. Window Position. Posición de la ventana de renderizado en pixeles x,y.
I. Window Position. Posición de la ventana de renderizado en pixeles x,y.
H. Window Size. Tamaño de la ventana de renderizado en pixeles x, y.
J. Window Size. Tamaño de la ventana de renderizado en pixeles x, y.
I. IP Adress. Dirección IP de la interface que queremos usar para el CITP/MSEx. Dejar en 0.0.0.0 para todas las interfaces.
K. IP Adress. Dirección IP de la interface que queremos usar para el CITP/MSEx. Dejar en 0.0.0.0 para todas las interfaces.
J. Ventana de preview. La ventana grande es un preview de la mezcla final. Funciona a 2 frames por segundo.
E. Init CITP/MSEx. Inicia el peer CITP y manda los thumbs si alguna mesa lo solicita.
Menu File:
F. Venta de preview. La ventana grande es un preview de la mezcla final. Funciona a 2 frames por segundo.
- Open Configuration: Abre un archivo de configuración previamente grabado.
- Save Configuration: Graba un archivo de configuración al disco.
- Change Media Path: Cambia la ruta al árbol de medias.
*******************************************************************************
CITP/MSEx
El CITP/MSEx no funciona en el interface localhost. Sin embargo la recepción de datos ArtNet sí. Necesita tener un interface de red activo en el momento de lanzar el programa, pero después se puede desconectar. Se puede usar en el mismo ordenador LMS y MagicQLinux para controlarlo.
Generación de thumbs:
Inicia la ejecución de CITP/MSEx desde el menu CITP/MSEx --> Init. Antes tendrás que haber generado los thumbnails desde el mismo menu --> Make Thumbs. Si tienes una biblioteca grande de medios esto puede tardar un rato y consumir muchos recurso del ordenador. No lo hagas en directo!
Es necesario generar lo thumbnails de tus medias para poder transmitirlos por CITP/MSEx. Lo puedes hacer mediante el fichero make_thumbs.sh en la carpeta scripts. Primero ábrelo con un editor de texto y edita el path a tus medias. Guarda, cierra, y ejecuta el archivo. Debería de crear una subcarpeta llamada thumbs por cada carpeta de medias, y en ella el thumbnail con el primer fotograma de cada archivo, con el mismo nombre, pero acabado en jpeg. En siguientes versiones intentaré integrar esto cuando se pulse el botón "Init CITP/MSEx".
CITP/MSEx se ejecutará en la interfaz de red con la dirección IP definida en la pestaña video. Deja en 0.0.0.0 para que se ejecute en la interfaz de dirección más baja, típicamente 2.x.x.x
La ventana de renderizado se muestra sobre todas las demás ventanas y sin que aparezca el cursor en ella. Si tenemos problemas en la configuración, por ejemplo nos quedamos sin ver el escritorio, siempre podemos llevar el cursor a la ventana de renderizado y presionar Escape para cerrarla. La posición de la ventana se configura con los controles "Window Position" y el tamaño de la ventana con "Window Size", los dos primero el ancho y después el alto. Para hacer algo útil deberemos tener el escritorio extendido a un segundo monitor y configurar en estos controles los valores de ese monitor. Para aplicar cambios hay que cerrar la ventana y reabrirla.
*******************************************************************************
Ventana de renderizado:
La ventana de renderizado se muestra sobre todas las demás ventanas y sin que aparezca el cursor en ella. Si tenemos problemas en la configuración, por ejemplo nos quedamos sin ver el escritorio, siempre podemos llevar el cursor a la ventana de renderizado y presionar Escape para cerrarla. La posición de la ventana se configura con los controles "Window Position" y el tamaño de la ventana con "Window Size", los dos primero el ancho y después el alto. Para hacer algo útil deberemos tener el escritorio extendido a un segundo monitor y configurar en estos controles los valores de ese monitor. Para aplicar cambios hay que cerrar la ventana y reabrirla. En la ventana Preview siempre se muestra el preview para los valores actuales de posición y tamaño, lo que es útil para corroborar que la ventana se va a abrir donde queremos.
*******************************************************************************
Estructura de medias:
Los archivos de medios que utiliza LMS deben de estar ordenados en un árbol de ficheros. La dirección superior del árbol es la que se tiene que introducir en el archivo scripts/make_thumbs.sh y configurar en LMS mediante el botón "Change media Path".
Los archivos de medios que utiliza LMS deben de estar ordenados en un árbol de ficheros. La dirección superior del árbol es la que se tiene que configurar en LMS mediante el la opción en el menu File --> Change media Path.
El árbol de ficheros tiene el siguiente esquema:
@ -139,6 +153,8 @@ El árbol de ficheros tiene el siguiente esquema:
Los números al principio de ficheros y directorios no son obligatorios, pero ayudan mucho a organizar el material. LMS busca por orden alfabético en los directorios/ficheros, y ese orden es el que determina los valores de los canales Folder y File para reproducirlos.
En la página de descargas del proyecto hay un archivo comprimido con varios archivos de medios de ejemplo listo para descomprimir y usarlos con LMS.
*******************************************************************************
Textos:
@ -149,6 +165,9 @@ Puedes definir hasta 255 frases editando con un editor ASCII el fichero text.txt
2, El número es el valor del canal 6 folder;
3, no se pueden usar comas;
4, las frases tienen que acabar con punto y coma;
255, última frase que se puede usar;
Para cambiar de frase usa el parámetro Folder. Para cambiar de fuente el parámetro file. Puede renderizar cualquier fuente True Type que se le instale en el directorio "fonts".
*******************************************************************************
@ -196,8 +215,8 @@ En los modos auto el inicio y fin de loop no son aplicables, se reproduce la pel
17 Z (127)
18 X (127)
19 Y (127)
20 X Fino (127)
21 Y Fino (127)
20 X Fine (127)
21 Y Fine (127)
Los siguientes canales son usados para lumas y cromas.
Los High filtran los pixeles con ese valor o superior y los convierte en transparente (croma)
@ -266,6 +285,8 @@ Más información sobre los distintos tipos de blending en http://www.opengl.org
Efectos Video:
Atención! Algunos de estos efectos y/o combinaciones de parámetros cascan Pure Data. Testéalos antes de usarlos en directo.
0 - No effect
1 - Bitmask
Fx 1 All (255)
@ -344,7 +365,7 @@ PureMediaServer Audio:
3 - Folder
4 - File
5 - Playback
6 - Control
6 - Control - Reservado, sin uso en este momento.
7 - Volume Fine
8 - Entry Point Coarse - El valor de estos dos canales en centésimas de segundo.
9 - Entry Point Fine

View file

@ -1,4 +1,4 @@
#N canvas 539 410 611 318 10;
#N canvas 724 377 611 318 10;
#N canvas 315 169 952 599 dmx 0;
#X obj -7 437 list split;
#X obj 99 444 list split;
@ -313,7 +313,7 @@
#X connect 40 0 35 0;
#X connect 41 0 34 0;
#X restore -175 -438 pd window;
#N canvas 617 179 450 300 layer_5 0;
#N canvas 824 189 450 300 layer_5 0;
#X obj -338 -28 layer;
#X msg -209 -32 1;
#X msg -262 -33 0;
@ -325,41 +325,39 @@
#X obj -254 56 t b;
#X obj -338 32 s textgui;
#X obj -114 148 s preview;
#X obj -346 81 spigot;
#X obj -338 -81 r dmx5;
#X obj -262 -80 r layer5;
#X msg -338 10 5 \$1;
#X msg -346 103 layerimage 15;
#X msg -320 112 layerimage 15;
#X obj -191 -107 delay 500;
#X obj -191 -128 r metro;
#X connect 0 0 14 0;
#X obj -254 84 delay 50;
#X connect 0 0 13 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 5 0 10 0;
#X connect 5 0 14 0;
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 15 0;
#X connect 12 0 0 0;
#X connect 13 0 3 0;
#X connect 13 0 0 1;
#X connect 14 0 9 0;
#X connect 15 0 10 0;
#X connect 16 0 7 0;
#X connect 16 0 11 0;
#X connect 17 0 16 0;
#X connect 8 0 17 0;
#X connect 11 0 0 0;
#X connect 12 0 3 0;
#X connect 12 0 0 1;
#X connect 13 0 9 0;
#X connect 14 0 10 0;
#X connect 15 0 7 0;
#X connect 16 0 15 0;
#X connect 17 0 10 0;
#X restore -176 -379 pd layer_5;
#X obj -298 -336 loadbang;
#X obj -407 -259 print togui;
#N canvas 1 121 450 300 layer_6 0;
#N canvas 811 171 450 300 layer_6 0;
#X obj -253 -28 layer;
#X msg -124 -32 1;
#X msg -177 -33 0;
@ -371,39 +369,37 @@
#X obj -169 56 t b;
#X obj -253 32 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -253 -81 r dmx6;
#X obj -177 -80 r layer6;
#X msg -253 10 6 \$1;
#X msg -261 103 layerimage 16;
#X msg -233 132 layerimage 16;
#X obj -106 -120 r metro;
#X obj -106 -97 delay 600;
#X connect 0 0 14 0;
#X obj -168 83 delay 50;
#X connect 0 0 13 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 5 0 10 0;
#X connect 5 0 14 0;
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 15 0;
#X connect 12 0 0 0;
#X connect 13 0 3 0;
#X connect 13 0 0 1;
#X connect 14 0 9 0;
#X connect 15 0 10 0;
#X connect 16 0 17 0;
#X connect 17 0 11 0;
#X connect 17 0 7 0;
#X connect 8 0 17 0;
#X connect 11 0 0 0;
#X connect 12 0 3 0;
#X connect 12 0 0 1;
#X connect 13 0 9 0;
#X connect 14 0 10 0;
#X connect 15 0 16 0;
#X connect 16 0 7 0;
#X connect 17 0 10 0;
#X restore -102 -379 pd layer_6;
#N canvas 436 262 450 300 layer_7 0;
#N canvas 434 272 450 300 layer_7 0;
#X obj -253 -28 layer;
#X msg -124 -32 1;
#X msg -177 -33 0;
@ -415,19 +411,17 @@
#X obj -169 56 t b;
#X obj -253 32 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -253 -81 r dmx7;
#X obj -177 -80 r layer7;
#X msg -253 10 7 \$1;
#X msg -261 103 layerimage 17;
#X msg -244 117 layerimage 17;
#X obj -106 -97 delay 700;
#X obj -106 -120 r metro;
#X connect 0 0 14 0;
#X obj -167 86 delay 50;
#X connect 0 0 13 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
@ -436,18 +430,18 @@
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 15 0;
#X connect 12 0 0 0;
#X connect 13 0 3 0;
#X connect 13 0 0 1;
#X connect 14 0 9 0;
#X connect 15 0 10 0;
#X connect 16 0 7 0;
#X connect 16 0 11 0;
#X connect 17 0 16 0;
#X connect 8 0 17 0;
#X connect 8 0 14 0;
#X connect 11 0 0 0;
#X connect 12 0 3 0;
#X connect 12 0 0 1;
#X connect 13 0 9 0;
#X connect 14 0 10 0;
#X connect 15 0 7 0;
#X connect 16 0 15 0;
#X connect 17 0 10 0;
#X restore -28 -379 pd layer_7;
#N canvas 901 259 450 300 layer_8 0;
#N canvas 899 269 450 300 layer_8 0;
#X obj -253 -37 layer;
#X msg -124 -41 1;
#X msg -177 -42 0;
@ -459,19 +453,17 @@
#X obj -169 47 t b;
#X obj -253 23 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -253 -90 r dmx8;
#X msg -261 103 layerimage 18;
#X msg -253 1 8 \$1;
#X obj -84 -81 delay 800;
#X obj -84 -112 r metro;
#X obj -177 -89 r layer8;
#X connect 0 0 14 0;
#X obj -169 69 delay 50;
#X connect 0 0 13 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
@ -480,42 +472,40 @@
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 13 0;
#X connect 12 0 0 0;
#X connect 13 0 10 0;
#X connect 14 0 9 0;
#X connect 15 0 7 0;
#X connect 15 0 11 0;
#X connect 16 0 15 0;
#X connect 17 0 3 0;
#X connect 17 0 0 1;
#X connect 8 0 17 0;
#X connect 8 0 12 0;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 13 0 9 0;
#X connect 14 0 7 0;
#X connect 15 0 14 0;
#X connect 16 0 3 0;
#X connect 16 0 0 1;
#X connect 17 0 10 0;
#X restore 46 -379 pd layer_8;
#N canvas 1 153 450 300 layer_4 0;
#N canvas 409 171 450 300 layer_4 0;
#X obj -253 -28 layer;
#X msg -124 -32 1;
#X msg -177 -33 0;
#X obj -177 -55 select 0;
#X obj -169 4 spigot;
#X obj -169 34 spigot;
#X msg -111 34 0;
#X msg -104 30 0;
#X msg -107 3 1;
#X obj -169 56 t b;
#X obj -253 32 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -253 -81 r dmx4;
#X obj -177 -80 r layer4;
#X msg -253 10 4 \$1;
#X msg -261 103 layerimage 14;
#X msg -231 104 layerimage 14;
#X obj -106 -88 delay 400;
#X obj -106 -116 r metro;
#X connect 0 0 14 0;
#X obj -169 77 delay 50;
#X connect 0 0 13 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
@ -524,106 +514,102 @@
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 15 0;
#X connect 12 0 0 0;
#X connect 13 0 3 0;
#X connect 13 0 0 1;
#X connect 14 0 9 0;
#X connect 15 0 10 0;
#X connect 16 0 7 0;
#X connect 16 0 11 0;
#X connect 17 0 16 0;
#X connect 8 0 17 0;
#X connect 8 0 14 0;
#X connect 11 0 0 0;
#X connect 12 0 3 0;
#X connect 12 0 0 1;
#X connect 13 0 9 0;
#X connect 14 0 10 0;
#X connect 15 0 7 0;
#X connect 16 0 15 0;
#X connect 17 0 10 0;
#X restore -250 -379 pd layer_4;
#N canvas 661 163 450 300 layer_3 0;
#N canvas 657 183 450 300 layer_3 0;
#X obj -253 -28 layer;
#X msg -124 -32 1;
#X msg -177 -33 0;
#X obj -177 -55 select 0;
#X obj -169 4 spigot;
#X obj -106 -124 r metro;
#X obj -169 34 spigot;
#X msg -111 34 0;
#X msg -107 3 1;
#X obj -169 56 t b;
#X obj -253 32 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -169 81 delay 50;
#X obj -177 -80 r layer3;
#X obj -253 -81 r dmx3;
#X msg -245 111 layerimage 13;
#X obj -106 -81 delay 300;
#X msg -253 10 3 \$1;
#X msg -261 103 layerimage 13;
#X obj -106 -95 delay 300;
#X obj -107 -119 r metro;
#X connect 0 0 14 0;
#X connect 0 0 17 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 5 0 10 0;
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 15 0;
#X connect 12 0 3 0;
#X connect 12 0 0 1;
#X connect 13 0 0 0;
#X connect 14 0 9 0;
#X connect 15 0 10 0;
#X connect 16 0 7 0;
#X connect 16 0 11 0;
#X connect 17 0 16 0;
#X connect 4 0 6 0;
#X connect 5 0 16 0;
#X connect 6 0 9 0;
#X connect 6 0 11 0;
#X connect 7 0 6 1;
#X connect 8 0 6 1;
#X connect 9 0 7 0;
#X connect 9 0 12 0;
#X connect 9 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 3 0;
#X connect 13 0 0 1;
#X connect 14 0 0 0;
#X connect 15 0 11 0;
#X connect 16 0 8 0;
#X connect 17 0 10 0;
#X restore -323 -379 pd layer_3;
#N canvas 620 141 450 300 layer_2 0;
#N canvas 895 119 450 300 layer_2 0;
#X obj -253 -28 layer;
#X msg -124 -32 1;
#X msg -177 -33 0;
#X obj -177 -55 select 0;
#X obj -169 4 spigot;
#X obj -65 -111 r metro;
#X obj -169 34 spigot;
#X msg -111 34 0;
#X msg -107 3 1;
#X obj -169 56 t b;
#X obj -253 32 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -177 -80 r layer2;
#X obj -169 81 delay 50;
#X obj -253 -81 r dmx2;
#X obj -177 -80 r layer2;
#X msg -253 10 2 \$1;
#X msg -261 103 layerimage 12;
#X obj -106 -86 delay 200;
#X obj -108 -114 r metro;
#X connect 0 0 14 0;
#X msg -65 -86 delay 200;
#X msg -235 112 layerimage 12;
#X connect 0 0 15 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 11 1;
#X connect 2 0 4 1;
#X connect 2 0 11 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 5 0 10 0;
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 6 0;
#X connect 8 0 10 0;
#X connect 11 0 15 0;
#X connect 12 0 3 0;
#X connect 12 0 0 1;
#X connect 4 0 6 0;
#X connect 5 0 16 0;
#X connect 6 0 9 0;
#X connect 6 0 11 0;
#X connect 7 0 6 1;
#X connect 8 0 6 1;
#X connect 9 0 7 0;
#X connect 9 0 12 0;
#X connect 9 0 17 0;
#X connect 12 0 11 0;
#X connect 13 0 0 0;
#X connect 14 0 9 0;
#X connect 14 0 3 0;
#X connect 14 0 0 1;
#X connect 15 0 10 0;
#X connect 16 0 7 0;
#X connect 16 0 11 0;
#X connect 17 0 16 0;
#X connect 16 0 8 0;
#X connect 17 0 11 0;
#X restore -396 -379 pd layer_2;
#N canvas 1 211 450 300 layer_1 0;
#N canvas 394 90 450 300 layer_1 0;
#X obj -253 -28 layer;
#X msg -124 -32 1;
#X msg -177 -33 0;
@ -637,33 +623,31 @@
#X obj -253 -81 r dmx1;
#X obj -177 -80 r layer1;
#X msg -253 10 1 \$1;
#X msg -261 103 layerimage 11;
#X msg -243 124 layerimage 11;
#X obj -253 32 s textgui;
#X obj -29 148 s preview;
#X obj -261 81 spigot;
#X obj -169 81 delay 50;
#X connect 0 0 12 0;
#X connect 0 1 4 0;
#X connect 1 0 4 1;
#X connect 1 0 16 1;
#X connect 2 0 4 1;
#X connect 2 0 16 1;
#X connect 3 0 2 0;
#X connect 3 1 1 0;
#X connect 4 0 6 0;
#X connect 5 0 8 0;
#X connect 5 0 16 0;
#X connect 6 0 9 0;
#X connect 6 0 15 0;
#X connect 7 0 6 1;
#X connect 8 0 6 1;
#X connect 9 0 7 0;
#X connect 9 0 15 0;
#X connect 9 0 16 0;
#X connect 9 0 13 0;
#X connect 10 0 0 0;
#X connect 11 0 3 0;
#X connect 11 0 0 1;
#X connect 12 0 14 0;
#X connect 13 0 15 0;
#X connect 16 0 13 0;
#X connect 16 0 15 0;
#X restore -469 -379 pd layer_1;
#X obj -298 -271 metro 1000;
#X obj -298 -237 s metro;

Binary file not shown.