- Added folders to images
This commit is contained in:
parent
7be7febfce
commit
8822bd1927
7 changed files with 200 additions and 97 deletions
BIN
externals/fileselector.pd_linux
vendored
BIN
externals/fileselector.pd_linux
vendored
Binary file not shown.
|
@ -27,7 +27,11 @@ 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.
|
||||
|
||||
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.
|
||||
LMS se comunica 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.
|
||||
|
||||
No necesitas dos ordenadores para manejar LibreMediaServer, pero no funcionará el CITP/MSEx en localhost. En el momento que arranques el programa debes tener una interfaz de red activa, después de iniciado la puedes desactivar. Configura MagicQ para que mande ArtNet al bucle local en Setup --> Network --> Ip addres poniéndolo a 127.0.0.1
|
||||
|
||||
Si quieres controlarlo desde otro ordenador debes configurar en el sistema operativo una tarjeta de red según el protocolo que vas a utilizar. Para ArtNet utilizar una dirección IP 2.x.x.x y NetMask 255.0.0.0.
|
||||
|
||||
1. Instala todas las dependencias.
|
||||
|
||||
|
|
|
@ -23,31 +23,32 @@ Lee instalacion.txt para el proceso de instalación.
|
|||
|
||||
*******************************************************************************
|
||||
|
||||
Libre Media Server es un programa para utilizar audio y/o video en artes escénicas, conciertos, eventos, performances, instalaciones, etc.
|
||||
Libre Media Server es un programa para ejecutar audio y/o video en espectáculos en directo: artes escénicas, conciertos, eventos, performances, instalaciones, etc. Es Software Libre y está desarrollado en y para sistemas operativos GNU/Linux Debian y derivados.
|
||||
|
||||
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, Anyuma, OpenSoundControl, ...
|
||||
|
||||
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. Podemos variar la velocidad, ejecutarlo en distintas direcciones (hacia delante, hacia atrás, ping-pong), y en bucle o en un sólo disparo. También podemos renderizar fotos y textos.
|
||||
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 el codec se encuentre instalado en el sistema. Si lo puede leer en el reproductor de medios de gnome podrá reproducirlo LMS. Podemos variar la velocidad, ejecutarlo en distintas direcciones (hacia delante, hacia atrás, ping-pong), y en bucle o en un sólo disparo. También podemos renderizar fotos y textos.
|
||||
|
||||
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.
|
||||
LMS tiene 8 capas de video, imágenes 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 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.
|
||||
Los procesos de audio y video son independientes, por lo que se puede activar sólo el que necesitemos ahorrando recursos de la máquina.
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
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.
|
||||
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 en un momento determinado. 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. 8 Capas. Representan las 8 capas de video o audio.
|
||||
|
||||
- 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.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 procesa nada. Ahorra tiempo de proceso a la CPU activar sólo las capas que se vayan a usar.
|
||||
- B.3 Dirección DMX. Hay que introducir el primer canal DMX de la capa, el mismo que se patcheó en la mesa.
|
||||
|
||||
C. Video/Audio. Inicia o detiene los procesos de video y de audio.
|
||||
|
@ -64,7 +65,7 @@ H. 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.
|
||||
|
||||
J. Ventana de preview. La ventana grande es un preview de la mezcla final. Funciona a 2 frames por segundo.
|
||||
J. Ventana de preview. La ventana grande es un preview de la mezcla final. Funciona a 2 frames por segundo, aunque la ventana de renderizado esté desactivada, lo que sirve para ver dónde va a ir la ventana antes de crearla.
|
||||
|
||||
Menu File:
|
||||
|
||||
|
@ -80,7 +81,9 @@ El CITP/MSEx no funciona en el interface localhost. Sin embargo la recepción de
|
|||
|
||||
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!
|
||||
|
||||
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
|
||||
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 todas las interfces activas.
|
||||
|
||||
Debido a las limitaciones del CITP/MSEx 1.0 sólo hay disponible los thumbnails de los videos. El preview en la mesa está cambiado el Rojo por el Azul, y los previews por capa no están implementados todavía. Todo esto se arreglará con la implementación de 1.1 ó 1.2, estoy esperando a que ChamSys implementen 1.2 y me ahorro la implementación de 1.1
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
|
@ -123,7 +126,7 @@ El árbol de ficheros tiene el siguiente esquema:
|
|||
+255.ultimapeli.mov
|
||||
|
||||
+ audio
|
||||
+ 000-miprimealbum
|
||||
+ 000-miprimealbum
|
||||
- 000-mifichero.ogg
|
||||
...
|
||||
- 255-miultimofichero.ogg
|
||||
|
@ -143,19 +146,63 @@ El árbol de ficheros tiene el siguiente esquema:
|
|||
- 000-mifuente.ttf
|
||||
...
|
||||
- 255-miultimafuente.ttf
|
||||
|
||||
+ texts
|
||||
- 000-miprimerarchivodetexto.txt
|
||||
- 001-simbolos asci
|
||||
- 003-editablesobrelamarcha
|
||||
- 004-independientedelaextension
|
||||
- 005-estosarchivosdebenestarcorrectamenteformateados.txt
|
||||
...
|
||||
-255.miultimoarchivodetext.txt
|
||||
|
||||
+ images
|
||||
+ 000-descripcion
|
||||
- 000-mifotos.jpg
|
||||
- 001-cool.jpg
|
||||
- 002-pelo.jpg
|
||||
...
|
||||
- 255-ultimo.jpg
|
||||
|
||||
+ 001-otrodir
|
||||
- 000-miprimerafoto.jpg
|
||||
...
|
||||
- 255-miultimafoto.jpg
|
||||
|
||||
+ 002-naturaleza
|
||||
- 000-fuego.jpg
|
||||
- 001-rayo.jpg
|
||||
...
|
||||
- 255-cascada.avi
|
||||
|
||||
+ images
|
||||
- 000-miprimerafoto.jpg
|
||||
...
|
||||
- 255-miultimafoto.jpg
|
||||
|
||||
+ 255-ultimodir
|
||||
+255.ultimafoto.jpg
|
||||
|
||||
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.
|
||||
Los "+" significan directorios, los "-" archivos.
|
||||
|
||||
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.
|
||||
Los números al principio de ficheros y directorios no son obligatorios, pero ayudan mucho a organizar el material y que se guarde organizado para facilitar la programación y la ejecución. 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 disponible un archivo comprimido con varios archivos de medios de ejemplo en una estructura de carpetas válida listo para descomprimir y usarlos con LMS. Este árbol de directorios puede estar en cualquier unidad o partición que el sistema operativo sea capaz de leer. Sólo hay que configurar la ruta hacia este árbol en el menu File --> change Media Path.
|
||||
|
||||
Como regla general el árbol de directorios debe de estar limpio de archivos extraños, sólo debe de haber en él los archivos que se espera reproducir. Mirar especialmente los archivos ocultos y copias de seguridad creadas por programas de edición, archivos de texto y fotografías que acompañan a los media, archivos comprimidos que no se han borrado,... Archivos extraños dentro del path "media" puede dar lugar, seguramente lo haga, a que el motor gráfico reinicie y a que el CITP/MSEx no funcione correctamente.
|
||||
|
||||
Poner caracteres extraños en los nombres de los archivos o directorios de media es jugar con fuego. Algunos funcionan otros no, pero puede que en algún momento casque algo. Evita poner caracteres locales (ñ, ç, àcént'os,) y espacios en los nombres, mejor sustiyúlelos por la barra baja "_".
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
Textos:
|
||||
Formatos de ficheros:
|
||||
|
||||
- Video: ogv, mov, mpg, avi, mp4.
|
||||
- Audio: ogg
|
||||
- Fuentes: ttf (True Type)
|
||||
- Textos: texto plano.
|
||||
- Imágenes: jpg, tiff
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
Formato de ficheros de textos:
|
||||
|
||||
Puedes definir hasta 255 frases editando con un editor ASCII el fichero text.txt. El formato es:
|
||||
|
||||
|
@ -163,9 +210,12 @@ 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;
|
||||
5, puede que los acentos y las ñ's no se formateen bien;
|
||||
6, algunas fuentes cascan pure data;
|
||||
7, evita las fuentes muy pesadas;
|
||||
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".
|
||||
Para cambiar de frase usa el parámetro Folder. Para cambiar de fuente el parámetro File. Renderizar cualquier fuente True Type que esté en el directorio "fonts".
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
|
@ -179,7 +229,7 @@ Entre paréntesis el valor normal de uso (locate).
|
|||
2 Rojo (127)
|
||||
3 Verde (127)
|
||||
4 Azul (127)
|
||||
5 Speed (40; esto se corresponde a 25 fps. El valor del canal son los milisegundos del metro, por lo que la inversa es el valor real de FPS).
|
||||
5 Speed (40); esto se corresponde a 25 fps. El valor del canal son los milisegundos del metro, por lo que la inversa es el valor real de FPS).
|
||||
|
||||
0-244: Velocidad de reproducción.
|
||||
245-249: Autodeteccion de fps, una sola vez. Se reproducirá a la velocidad de la película.
|
||||
|
@ -194,7 +244,7 @@ En los modos auto el inicio y fin de loop no son aplicables, se reproduce la pel
|
|||
25-49: Video
|
||||
50-75: Imagenes
|
||||
75-99: Texto
|
||||
9 Modos de Reproduccion (Sólo aplicable si canal 5 < 245):
|
||||
9 Modos de Reproduccion (Sólo aplicable si canal 5 < 245)/Text File:
|
||||
00-24 Normal loop
|
||||
25-49 Back loop
|
||||
50-74 Ping-pong loop
|
||||
|
@ -229,7 +279,7 @@ Los Low filtran los pixeles con ese valor o inferior (máscara).
|
|||
26 Alpha Low Green (0)
|
||||
27 Alpha Low Blue (0)
|
||||
|
||||
Los siguientes canales se usan para correción de keystone y videomapping. Hay configuración por capa, el resto de configuraciones de posición y tamaño se reajustarán dentro de la nueva capa
|
||||
Los siguientes canales se usan para correción de keystone y videomapping. Hay configuración por capa, el resto de configuraciones de posición y tamaño se reajustarán dentro de la nueva capa definida por estos valores.
|
||||
|
||||
28 Corner Bottom Left X (0)
|
||||
29 Corner Bottom Left Y (0)
|
||||
|
|
|
@ -64,7 +64,7 @@ f f f f f f f f f;
|
|||
#X obj 1148 151 s \$0-c37;
|
||||
#X obj 760 214 s \$0-c24;
|
||||
#X obj 813 215 s \$0-c25;
|
||||
#N canvas 741 364 492 333 selector 0;
|
||||
#N canvas 739 374 492 333 selector 1;
|
||||
#X obj 102 161 outlet;
|
||||
#X obj 373 157 outlet;
|
||||
#X obj 312 -8 / 25;
|
||||
|
@ -90,19 +90,25 @@ f f f f f f f f f;
|
|||
#X obj 309 63 select 0 1 2 3;
|
||||
#X msg 247 171 0;
|
||||
#X msg 295 174 1;
|
||||
#X symbolatom 35 210 80 0 0 0 - - -;
|
||||
#X floatatom 24 141 5 0 0 0 - - -;
|
||||
#X floatatom 20 80 5 0 0 0 - - -;
|
||||
#X connect 2 0 13 0;
|
||||
#X connect 3 0 1 0;
|
||||
#X connect 4 0 1 0;
|
||||
#X connect 5 0 1 0;
|
||||
#X connect 6 0 1 0;
|
||||
#X connect 9 0 21 0;
|
||||
#X connect 9 0 27 0;
|
||||
#X connect 10 0 18 0;
|
||||
#X connect 10 0 26 0;
|
||||
#X connect 11 0 2 0;
|
||||
#X connect 11 0 19 0;
|
||||
#X connect 12 0 16 0;
|
||||
#X connect 13 0 14 0;
|
||||
#X connect 14 0 22 0;
|
||||
#X connect 15 0 0 0;
|
||||
#X connect 15 0 25 0;
|
||||
#X connect 16 0 15 0;
|
||||
#X connect 17 0 15 0;
|
||||
#X connect 17 0 20 0;
|
||||
|
@ -116,7 +122,7 @@ f f f f f f f f f;
|
|||
#X connect 22 1 3 0;
|
||||
#X connect 22 1 24 0;
|
||||
#X connect 22 2 4 0;
|
||||
#X connect 22 2 23 0;
|
||||
#X connect 22 2 24 0;
|
||||
#X connect 22 3 5 0;
|
||||
#X connect 22 3 23 0;
|
||||
#X connect 22 4 6 0;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* --------------------------------------------------------------------------*/
|
||||
/* */
|
||||
/* object for getting files from a source tree
|
||||
/* object for getting files names in a source tree structure
|
||||
|
||||
Copyright (c) 2013 Santi Noreña <belfegor@gmail.com>
|
||||
|
||||
Based on folderlist by Hans-Christoph Steiner <hans@eds.org> */
|
||||
|
||||
|
||||
/* This program is free software; you can redistribute it and/or */
|
||||
/* modify it under the terms of the GNU General Public License */
|
||||
|
@ -38,7 +38,7 @@ static t_class *fileselector_class;
|
|||
typedef struct _fileselector {
|
||||
t_object x_obj;
|
||||
t_symbol* x_pattern;
|
||||
int x_folder;
|
||||
int x_folder;
|
||||
int x_file;
|
||||
int x_type;
|
||||
t_outlet *x_out;
|
||||
|
@ -50,25 +50,24 @@ typedef struct _fileselector {
|
|||
|
||||
static void fileselector_output(t_fileselector* x)
|
||||
{
|
||||
if (strlen(x->x_pattern->s_name) < 6)
|
||||
{
|
||||
post("fileselector: Set path first");
|
||||
return;
|
||||
}
|
||||
char path[FILENAME_MAX] = "";
|
||||
glob_t glob_buffer;
|
||||
unsigned int i;
|
||||
strncpy(path, x->x_pattern->s_name, FILENAME_MAX);
|
||||
if(sys_isabsolutepath(path)) {
|
||||
if(x->x_type < 25) // Make the path video
|
||||
if (strlen(x->x_pattern->s_name) < 6)
|
||||
{
|
||||
post("fileselector: Set path first");
|
||||
return;
|
||||
}
|
||||
if(x->x_type < 25) // Don't make anything
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
char path[FILENAME_MAX] = "";
|
||||
glob_t glob_buffer;
|
||||
unsigned int i;
|
||||
strncpy(path, x->x_pattern->s_name, FILENAME_MAX);
|
||||
if(sys_isabsolutepath(path)) {
|
||||
if((x->x_type > 24) && (x->x_type<50)) // Make the path video
|
||||
{
|
||||
strncat(path,"/video/*",8);
|
||||
glob_t glob_video;
|
||||
switch(glob(path, GLOB_TILDE, NULL, &glob_video))
|
||||
strncat(path,"/video/*",8);
|
||||
switch(glob(path, GLOB_TILDE, NULL, &glob_buffer))
|
||||
{
|
||||
case GLOB_NOSPACE:
|
||||
pd_error(x,"[fileselector] out of memory for \"%s\"",path);
|
||||
|
@ -85,32 +84,22 @@ static void fileselector_output(t_fileselector* x)
|
|||
# endif
|
||||
}
|
||||
i = x->x_folder;
|
||||
if (i < glob_video.gl_pathc)
|
||||
if (i < glob_buffer.gl_pathc)
|
||||
{
|
||||
strncpy(path, glob_video.gl_pathv[i],strnlen(glob_video.gl_pathv[i],FILENAME_MAX));
|
||||
strncpy(path, glob_buffer.gl_pathv[i],strnlen(glob_buffer.gl_pathv[i],FILENAME_MAX));
|
||||
strncat(path, "/*", 2);
|
||||
globfree(&glob_video);
|
||||
}
|
||||
else
|
||||
{
|
||||
post("fileselector: folder is greater than the number of folders");
|
||||
globfree(&glob_video);
|
||||
globfree(&glob_buffer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if((x->x_type > 49) && (x->x_type<75)) // Make the path image
|
||||
{
|
||||
strncat(path,"/image/*",8);
|
||||
}
|
||||
if((x->x_type > 74) && (x->x_type<100)) // Make the path image
|
||||
{
|
||||
strncat(path,"/fonts/*",8);
|
||||
}
|
||||
if(x->x_type > 255) // Make the path sound
|
||||
{
|
||||
strncat(path,"/sound/*",8);
|
||||
glob_t glob_audio;
|
||||
switch(glob(path, GLOB_TILDE, NULL, &glob_audio))
|
||||
strncat(path,"/image/*",8);
|
||||
switch(glob(path, GLOB_TILDE, NULL, &glob_buffer))
|
||||
{
|
||||
case GLOB_NOSPACE:
|
||||
pd_error(x,"[fileselector] out of memory for \"%s\"",path);
|
||||
|
@ -127,41 +116,76 @@ static void fileselector_output(t_fileselector* x)
|
|||
# endif
|
||||
}
|
||||
i = x->x_folder;
|
||||
if (i < glob_audio.gl_pathc)
|
||||
if (i < glob_buffer.gl_pathc)
|
||||
{
|
||||
strncpy(path, glob_audio.gl_pathv[i],strnlen(glob_audio.gl_pathv[i],FILENAME_MAX));
|
||||
strncpy(path, glob_buffer.gl_pathv[i],strnlen(glob_buffer.gl_pathv[i],FILENAME_MAX));
|
||||
strncat(path, "/*", 2);
|
||||
globfree(&glob_audio);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
post("fileselector: folder is greater than the number of folders");
|
||||
globfree(&glob_audio);
|
||||
globfree(&glob_buffer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Look for the file
|
||||
switch(glob(path, GLOB_TILDE, NULL,&glob_buffer))
|
||||
{
|
||||
case GLOB_NOSPACE:
|
||||
pd_error(x,"[fileselector] out of memory for \"%s\"",path);
|
||||
break;
|
||||
# ifdef GLOB_ABORTED
|
||||
case GLOB_ABORTED:
|
||||
pd_error(x,"[fileselector] aborted \"%s\"",path);
|
||||
break;
|
||||
# endif
|
||||
# ifdef GLOB_NOMATCH
|
||||
case GLOB_NOMATCH:
|
||||
pd_error(x,"[fileselector] nothing found for \"%s\"",path);
|
||||
break;
|
||||
# endif
|
||||
}
|
||||
i = x->x_file;
|
||||
if (i < glob_buffer.gl_pathc)
|
||||
{
|
||||
outlet_symbol(x->x_out, gensym(glob_buffer.gl_pathv[i]));
|
||||
}
|
||||
}
|
||||
if((x->x_type > 74) && (x->x_type<100)) // Make the fonts path
|
||||
{
|
||||
strncat(path,"/fonts/*",8);
|
||||
}
|
||||
if(x->x_type > 255) // Make the path sound
|
||||
{
|
||||
strncat(path,"/sound/*",8);
|
||||
switch(glob(path, GLOB_TILDE, NULL, &glob_buffer))
|
||||
{
|
||||
case GLOB_NOSPACE:
|
||||
pd_error(x,"[fileselector] out of memory for \"%s\"",path);
|
||||
break;
|
||||
# ifdef GLOB_ABORTED
|
||||
case GLOB_ABORTED:
|
||||
pd_error(x,"[fileselector] aborted \"%s\"",path);
|
||||
break;
|
||||
# endif
|
||||
# ifdef GLOB_NOMATCH
|
||||
case GLOB_NOMATCH:
|
||||
pd_error(x,"[fileselector] nothing found for %s ",path);
|
||||
break;
|
||||
# endif
|
||||
}
|
||||
i = x->x_folder;
|
||||
if (i < glob_buffer.gl_pathc)
|
||||
{
|
||||
strncpy(path, glob_buffer.gl_pathv[i],strnlen(glob_buffer.gl_pathv[i],FILENAME_MAX));
|
||||
strncat(path, "/*", 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
post("fileselector: folder is greater than the number of folders");
|
||||
globfree(&glob_buffer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Look for the file
|
||||
switch(glob(path, GLOB_TILDE, NULL,&glob_buffer))
|
||||
{
|
||||
case GLOB_NOSPACE:
|
||||
pd_error(x,"[fileselector] out of memory for \"%s\"",path);
|
||||
break;
|
||||
# ifdef GLOB_ABORTED
|
||||
case GLOB_ABORTED:
|
||||
pd_error(x,"[fileselector] aborted \"%s\"",path);
|
||||
break;
|
||||
# endif
|
||||
# ifdef GLOB_NOMATCH
|
||||
case GLOB_NOMATCH:
|
||||
pd_error(x,"[fileselector] nothing found for \"%s\"",path);
|
||||
break;
|
||||
# endif
|
||||
}
|
||||
i = x->x_file;
|
||||
if (i < glob_buffer.gl_pathc)
|
||||
{
|
||||
outlet_symbol(x->x_out, gensym(glob_buffer.gl_pathv[i]));
|
||||
}
|
||||
}
|
||||
globfree( &(glob_buffer) );
|
||||
}
|
||||
|
|
Binary file not shown.
43
todo.txt
43
todo.txt
|
@ -21,28 +21,47 @@ You should have received a copy of the GNU General Public License along with thi
|
|||
|
||||
Próximas versiones:
|
||||
|
||||
- Pure Data Video: Modularidad, sumar ventanas por instancias de PMS-video. NO SE PUEDE POR USAR LOS MISMOS PUERTOS. Opción de arranque?. Blending entre proyectores.Mirar ejemplo Gem multiprojection. Añadir shaders a la capa?
|
||||
- Pure Data Video: Cambiar alpha por glgs. Mirar ejemplos en doc de Gem. Mirar requerimientos de tarjetas gráficas. Añadir shaders glgs.
|
||||
- GUI: Mover la configuración de ip address a un menú.
|
||||
- GUI: Configuración para anular los previews y salvar tiempo de proceso.
|
||||
- Conectividad: CITP/MSEx 1.1. Thumbs y previews de imágenes.
|
||||
- Pure Data: Carpetas para imágenes. Diferentes ficheros de texto.
|
||||
- Pure Data: sincronismo de audio con videos --> Parece que hay que hacer un script para separar el audio del video, y luego ejecutarlos juntos. Un poco chapu, la verdad. La aternativa es volver a pdp mediante pdp2gem (inviable, demasiado proceso) --> De momento separando el .ogg del video, ejecutando en auto, y mandando play a la vez debería de estar sincronizados. Ahora mismo se podría separando el audio en un fichero .ogg y presionando el play a la vez en modo auto.
|
||||
- Documentación en inglés.
|
||||
- Pure Data Video: Modularidad, sumar ventanas por instancias de PMS-video.
|
||||
--> NO SE PUEDE POR USAR LOS MISMOS PUERTOS.
|
||||
--> Opción de arranque?
|
||||
--> Blending entre proyectores.Mirar ejemplo Gem multiprojection.
|
||||
--> Añadir shaders a la capa?
|
||||
- Pure Data Video: Cambiar alpha por glgs.
|
||||
--> Mirar ejemplos en doc de Gem.
|
||||
--> Mirar requerimientos de tarjetas gráficas
|
||||
- GUI: Configuración para anular los previews y salvar tiempo de proceso
|
||||
- Conectividad: CITP/MSEx 1.1. Thumbs y previews de imágenes
|
||||
--> Esperar a 1.2 en MagicQ?
|
||||
+ Pure Data: Carpetas para imágenes
|
||||
- Text: Diferentes ficheros de texto
|
||||
- Pure Data: sincronismo de audio con videos
|
||||
--> Parece que hay que hacer un script para separar el audio del video, y luego ejecutarlos juntos. Un poco chapu, la verdad. La aternativa es volver a pdp mediante pdp2gem (inviable, demasiado proceso)
|
||||
--> De momento separando el .ogg del video, ejecutando en auto, y mandando play a la vez debería de estar sincronizados. Ahora mismo se podría separando el audio en un fichero .ogg y presionando el play a la vez en modo auto
|
||||
--> La opción de pdp2gem parece la más factible. Gem no soporta en absoluto el audio, habría que crear un backend para manejarlo y es una movida. ¿Hacerlo sólo en una capa?
|
||||
--> hay que adaptar todo el patch a pdp_player e incluir los externals de pdp y pdp2gem. Adaptar sólo el método auto en esta capa, sin la velocidad ni los modos
|
||||
- Documentación en inglés
|
||||
- Medidor de CPU en el GUI
|
||||
- Incluir archivos en el ejecutable como recursos Qt --> Podrá leer Pure Data los .pd_linux?
|
||||
- Incluir archivos en el ejecutable como recursos Qt
|
||||
--> Podrá leer Pure Data los .pd_linux?
|
||||
--> Los externals empiezan a pesar demasiado y sería un ejecutable demasiado grande: Incluir sólo los patches.
|
||||
- Audio: Theremin, sintetizadores.
|
||||
- Audio: Música fractal mediante generadores de fx de las mesas
|
||||
- Audio: Tarjetas con varias salidas y varias mezclas.
|
||||
- Audio: Tarjetas con varias salidas y varias mezclas
|
||||
- Video: Live input
|
||||
- Empaquetar en .deb
|
||||
- Opción en el arranque para mostrar las guis de Pure Data --> Optimización de patches y resolver errores
|
||||
- Scripts: nuevo script para numerar los media
|
||||
- Text: Alphas high y low. Mirar si se puede.
|
||||
- Text: Alphas high y low. Mirar si se puede
|
||||
- Video: Generación de fractales visuales
|
||||
--> Iteración en Gem
|
||||
- Core: Evitar los loops de reinicio.
|
||||
--> Detectar y mandar mensaje a la terminal
|
||||
--> Cortar la lectura DMX o apagar la ventana
|
||||
--> Depurar a saco las condiciones del reinicio
|
||||
- Scripts: script para formatear archivos de texto
|
||||
|
||||
-----------------
|
||||
|
||||
|
||||
Para considerar:
|
||||
|
||||
- Necesidad de 16 bits en size, rotation, entry-end points, puntos de bezier?
|
||||
|
|
Loading…
Add table
Reference in a new issue