From 22173430a3517233f253d49aac0607b605effef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santi=20Nore=C3=B1a?= Date: Fri, 11 Jan 2013 19:38:16 +0100 Subject: [PATCH] - Changed the pd selector to a new C external modified: libremediaserver/doc/credits.txt new file: libremediaserver/externals/fileselector/Makefile new file: libremediaserver/externals/fileselector/fileselector-help.pd new file: libremediaserver/externals/fileselector/fileselector-meta.pd new file: libremediaserver/externals/fileselector/fileselector.c modified: libremediaserver/pd/layer.pd modified: libremediaserver/pd/pms-video.pd --- libremediaserver/doc/credits.txt | 2 +- .../externals/fileselector/Makefile | 413 ++++++++++++++++++ .../fileselector/fileselector-help.pd | 21 + .../fileselector/fileselector-meta.pd | 7 + .../externals/fileselector/fileselector.c | 194 ++++++++ libremediaserver/pd/layer.pd | 152 ++++--- libremediaserver/pd/pms-video.pd | 300 ++++++------- 7 files changed, 876 insertions(+), 213 deletions(-) create mode 100644 libremediaserver/externals/fileselector/Makefile create mode 100644 libremediaserver/externals/fileselector/fileselector-help.pd create mode 100755 libremediaserver/externals/fileselector/fileselector-meta.pd create mode 100644 libremediaserver/externals/fileselector/fileselector.c diff --git a/libremediaserver/doc/credits.txt b/libremediaserver/doc/credits.txt index c48ff31..5fe65ec 100644 --- a/libremediaserver/doc/credits.txt +++ b/libremediaserver/doc/credits.txt @@ -22,7 +22,7 @@ hcs/folderlist Copyright © Hans-Christoph Steiner expr.pd_linux Copyright © Shahrokh Yadegari -pan/gpan~.pd Copyright © 2004 Marc Lavalee + zexy/prepend.pd_linux zexy/split.pd_linux diff --git a/libremediaserver/externals/fileselector/Makefile b/libremediaserver/externals/fileselector/Makefile new file mode 100644 index 0000000..7a599ec --- /dev/null +++ b/libremediaserver/externals/fileselector/Makefile @@ -0,0 +1,413 @@ +## Pd library template version 1.0.11 +# For instructions on how to use this template, see: +# http://puredata.info/docs/developer/MakefileTemplate +LIBRARY_NAME = fileselector + +# add your .c source files, one object per file, to the SOURCES +# variable, help files will be included automatically, and for GUI +# objects, the matching .tcl file too +SOURCES = fileselector.c + +# For objects that only build on certain platforms, add those to the SOURCES +# line for the right platforms. +SOURCES_linux = + +# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will +# be included automatically +PDOBJECTS = fileselector.pd +# example patches and related files, in the 'examples' subfolder +EXAMPLES = + +# manuals and related files, in the 'manual' subfolder +MANUAL = + +# if you want to include any other files in the source and binary tarballs, +# list them here. This can be anything from header files, test patches, +# documentation, etc. README.txt and LICENSE.txt are required and therefore +# automatically included +EXTRA_DIST = + + + +#------------------------------------------------------------------------------# +# +# things you might need to edit if you are using other C libraries +# +#------------------------------------------------------------------------------# + +ALL_CFLAGS = -I"$(PD_INCLUDE)" +ALL_LDFLAGS = +SHARED_LDFLAGS = +ALL_LIBS = + + +#------------------------------------------------------------------------------# +# +# you shouldn't need to edit anything below here, if we did it right :) +# +#------------------------------------------------------------------------------# + +# these can be set from outside without (usually) breaking the build +CFLAGS = -Wall -W -g +LDFLAGS = +LIBS = + +# get library version from meta file +LIBRARY_VERSION = $(shell sed -n 's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' $(LIBRARY_NAME)-meta.pd) + +ALL_CFLAGS += -DPD -DVERSION='"$(LIBRARY_VERSION)"' + +PD_INCLUDE = $(PD_PATH)/include/pd +# where to install the library, overridden below depending on platform +prefix = /usr/local +libdir = $(prefix)/lib +pkglibdir = $(libdir)/pd-externals +objectsdir = $(pkglibdir) + +INSTALL = install +INSTALL_PROGRAM = $(INSTALL) -p -m 644 +INSTALL_DATA = $(INSTALL) -p -m 644 +INSTALL_DIR = $(INSTALL) -p -m 755 -d + +ALLSOURCES := $(SOURCES) $(SOURCES_android) $(SOURCES_cygwin) $(SOURCES_macosx) \ + $(SOURCES_iphoneos) $(SOURCES_linux) $(SOURCES_windows) + +DISTDIR=$(LIBRARY_NAME)-$(LIBRARY_VERSION) +ORIGDIR=pd-$(LIBRARY_NAME:~=)_$(LIBRARY_VERSION) + +UNAME := $(shell uname -s) +ifeq ($(UNAME),Darwin) + CPU := $(shell uname -p) + ifeq ($(CPU),arm) # iPhone/iPod Touch + SOURCES += $(SOURCES_iphoneos) + EXTENSION = pd_darwin + SHARED_EXTENSION = dylib + OS = iphoneos + PD_PATH = /Applications/Pd-extended.app/Contents/Resources + IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin + CC=$(IPHONE_BASE)/gcc + CPP=$(IPHONE_BASE)/cpp + CXX=$(IPHONE_BASE)/g++ + ISYSROOT = -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk + IPHONE_CFLAGS = -miphoneos-version-min=3.0 $(ISYSROOT) -arch armv6 + OPT_CFLAGS = -fast -funroll-loops -fomit-frame-pointer + ALL_CFLAGS := $(IPHONE_CFLAGS) $(ALL_CFLAGS) + ALL_LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT) + SHARED_LDFLAGS += -arch armv6 -dynamiclib -undefined dynamic_lookup $(ISYSROOT) + ALL_LIBS += -lc $(LIBS_iphoneos) + STRIP = strip -x + DISTBINDIR=$(DISTDIR)-$(OS) + else # Mac OS X + SOURCES += $(SOURCES_macosx) + EXTENSION = pd_darwin + SHARED_EXTENSION = dylib + OS = macosx + PD_PATH = /Applications/Pd-extended.app/Contents/Resources + OPT_CFLAGS = -ftree-vectorize -ftree-vectorizer-verbose=2 -fast +# build universal 32-bit on 10.4 and 32/64 on newer + ifeq ($(shell uname -r | sed 's|\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*|\1|'), 8) + FAT_FLAGS = -arch ppc -arch i386 -mmacosx-version-min=10.4 + else + FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=10.4 + SOURCES += $(SOURCES_iphoneos) + endif + ALL_CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include + # if the 'pd' binary exists, check the linking against it to aid with stripping + BUNDLE_LOADER = $(shell test ! -e $(PD_PATH)/bin/pd || echo -bundle_loader $(PD_PATH)/bin/pd) + ALL_LDFLAGS += $(FAT_FLAGS) -bundle $(BUNDLE_LOADER) -undefined dynamic_lookup -L/sw/lib + SHARED_LDFLAGS += $(FAT_FLAGS) -dynamiclib -undefined dynamic_lookup \ + -install_name @loader_path/$(SHARED_LIB) -compatibility_version 1 -current_version 1.0 + ALL_LIBS += -lc $(LIBS_macosx) + STRIP = strip -x + DISTBINDIR=$(DISTDIR)-$(OS) +# install into ~/Library/Pd on Mac OS X since /usr/local isn't used much + pkglibdir=$(HOME)/Library/Pd + endif +endif +# Tho Android uses Linux, we use this fake uname to provide an easy way to +# setup all this things needed to cross-compile for Android using the NDK +ifeq ($(UNAME),ANDROID) + CPU := arm + SOURCES += $(SOURCES_android) + EXTENSION = pd_linux + SHARED_EXTENSION = so + OS = android + PD_PATH = /usr + NDK_BASE := /usr/local/android-ndk + NDK_PLATFORM_VERSION := 5 + NDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_VERSION)/arch-arm + NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]') + NDK_TOOLCHAIN_BASE=$(NDK_BASE)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/$(NDK_UNAME)-x86 + CC := $(NDK_TOOLCHAIN_BASE)/bin/arm-linux-androideabi-gcc --sysroot=$(NDK_SYSROOT) + OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer + CFLAGS += + LDFLAGS += -rdynamic -shared + SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared + LIBS += -lc $(LIBS_android) + STRIP := $(NDK_TOOLCHAIN_BASE)/bin/arm-linux-androideabi-strip \ + --strip-unneeded -R .note -R .comment + DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) +endif +ifeq ($(UNAME),Linux) + CPU := $(shell uname -m) + SOURCES += $(SOURCES_linux) + EXTENSION = pd_linux + SHARED_EXTENSION = so + OS = linux + PD_PATH = /usr + OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer + ALL_CFLAGS += -fPIC + ALL_LDFLAGS += -rdynamic -shared -fPIC + SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared + ALL_LIBS += -lc $(LIBS_linux) + STRIP = strip --strip-unneeded -R .note -R .comment + DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) +endif +ifeq ($(UNAME),GNU) + # GNU/Hurd, should work like GNU/Linux for basically all externals + CPU := $(shell uname -m) + SOURCES += $(SOURCES_linux) + EXTENSION = pd_linux + SHARED_EXTENSION = so + OS = linux + PD_PATH = /usr + OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer + ALL_CFLAGS += -fPIC + ALL_LDFLAGS += -rdynamic -shared -fPIC + SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB) + ALL_LIBS += -lc $(LIBS_linux) + STRIP = strip --strip-unneeded -R .note -R .comment + DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) +endif +ifeq ($(UNAME),GNU/kFreeBSD) + # Debian GNU/kFreeBSD, should work like GNU/Linux for basically all externals + CPU := $(shell uname -m) + SOURCES += $(SOURCES_linux) + EXTENSION = pd_linux + SHARED_EXTENSION = so + OS = linux + PD_PATH = /usr + OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer + ALL_CFLAGS += -fPIC + ALL_LDFLAGS += -rdynamic -shared -fPIC + SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB) + ALL_LIBS += -lc $(LIBS_linux) + STRIP = strip --strip-unneeded -R .note -R .comment + DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) +endif +ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME))) + CPU := $(shell uname -m) + SOURCES += $(SOURCES_cygwin) + EXTENSION = dll + SHARED_EXTENSION = dll + OS = cygwin + PD_PATH = $(shell cygpath $$PROGRAMFILES)/pd + OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer + ALL_CFLAGS += + ALL_LDFLAGS += -rdynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" + SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB) + ALL_LIBS += -lc -lpd $(LIBS_cygwin) + STRIP = strip --strip-unneeded -R .note -R .comment + DISTBINDIR=$(DISTDIR)-$(OS) +endif +ifeq (MINGW,$(findstring MINGW,$(UNAME))) + CPU := $(shell uname -m) + SOURCES += $(SOURCES_windows) + EXTENSION = dll + SHARED_EXTENSION = dll + OS = windows + PD_PATH = $(shell cd "$$PROGRAMFILES/pd" && pwd) + # MinGW doesn't seem to include cc so force gcc + CC=gcc + OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer + ALL_CFLAGS += -mms-bitfields + ALL_LDFLAGS += -s -shared -Wl,--enable-auto-import -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" -L"$(PD_PATH)/obj" + SHARED_LDFLAGS += -shared + ALL_LIBS += -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 $(LIBS_windows) + STRIP = strip --strip-unneeded -R .note -R .comment + DISTBINDIR=$(DISTDIR)-$(OS) +endif + +# in case somebody manually set the HELPPATCHES above +HELPPATCHES ?= $(SOURCES:.c=-help.pd) $(PDOBJECTS:.pd=-help.pd) + +ALL_CFLAGS := $(ALL_CFLAGS) $(CFLAGS) $(OPT_CFLAGS) +ALL_LDFLAGS := $(LDFLAGS) $(ALL_LDFLAGS) +ALL_LIBS := $(LIBS) $(ALL_LIBS) + +SHARED_SOURCE ?= $(shell test ! -e lib$(LIBRARY_NAME).c || \ + echo lib$(LIBRARY_NAME).c ) +SHARED_HEADER ?= $(shell test ! -e $(LIBRARY_NAME).h || echo $(LIBRARY_NAME).h) +SHARED_LIB = $(SHARED_SOURCE:.c=.$(SHARED_EXTENSION)) + +.PHONY = install libdir_install single_install install-doc install-examples install-manual clean distclean dist etags $(LIBRARY_NAME) + +all: $(SOURCES:.c=.$(EXTENSION)) $(SHARED_LIB) + +%.o: %.c + $(CC) $(ALL_CFLAGS) -o "$*.o" -c "$*.c" + +%.$(EXTENSION): %.o $(SHARED_LIB) + $(CC) $(ALL_LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(ALL_LIBS) $(SHARED_LIB) + chmod a-x "$*.$(EXTENSION)" + +# this links everything into a single binary file +$(LIBRARY_NAME): $(SOURCES:.c=.o) $(LIBRARY_NAME).o + $(CC) $(ALL_LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.c=.o) $(LIBRARY_NAME).o $(ALL_LIBS) + chmod a-x $(LIBRARY_NAME).$(EXTENSION) + +$(SHARED_LIB): $(SHARED_SOURCE:.c=.o) + $(CC) $(SHARED_LDFLAGS) -o $(SHARED_LIB) $(SHARED_SOURCE:.c=.o) $(LIBS) + +install: libdir_install + +# The meta and help files are explicitly installed to make sure they are +# actually there. Those files are not optional, then need to be there. +libdir_install: $(SOURCES:.c=.$(EXTENSION)) $(SHARED_LIB) install-doc install-examples install-manual + $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd \ + $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + test -z "$(strip $(SOURCES))" || (\ + $(INSTALL_PROGRAM) $(SOURCES:.c=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) && \ + $(STRIP) $(addprefix $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/,$(SOURCES:.c=.$(EXTENSION)))) + test -z "$(strip $(SHARED_LIB))" || \ + $(INSTALL_DATA) $(SHARED_LIB) \ + $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + test -z "$(strip $(wildcard $(SOURCES:.c=.tcl)))" || \ + $(INSTALL_DATA) $(wildcard $(SOURCES:.c=.tcl)) \ + $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + test -z "$(strip $(PDOBJECTS))" || \ + $(INSTALL_DATA) $(PDOBJECTS) \ + $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + +# install library linked as single binary +single_install: $(LIBRARY_NAME) install-doc install-examples install-manual + $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + $(INSTALL_PROGRAM) $(LIBRARY_NAME).$(EXTENSION) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + $(STRIP) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/$(LIBRARY_NAME).$(EXTENSION) + +install-doc: + $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + test -z "$(strip $(SOURCES) $(PDOBJECTS))" || \ + $(INSTALL_DATA) $(HELPPATCHES) \ + $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) + $(INSTALL_DATA) README.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/README.txt + $(INSTALL_DATA) LICENSE.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/LICENSE.txt + +install-examples: + test -z "$(strip $(EXAMPLES))" || \ + $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples && \ + for file in $(EXAMPLES); do \ + $(INSTALL_DATA) examples/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples; \ + done + +install-manual: + test -z "$(strip $(MANUAL))" || \ + $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual && \ + for file in $(MANUAL); do \ + $(INSTALL_DATA) manual/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual; \ + done + + +clean: + -rm -f -- $(SOURCES:.c=.o) $(SOURCES_LIB:.c=.o) $(SHARED_SOURCE:.c=.o) + -rm -f -- $(SOURCES:.c=.$(EXTENSION)) + -rm -f -- $(LIBRARY_NAME).o + -rm -f -- $(LIBRARY_NAME).$(EXTENSION) + -rm -f -- $(SHARED_LIB) + +distclean: clean + -rm -f -- $(DISTBINDIR).tar.gz + -rm -rf -- $(DISTBINDIR) + -rm -f -- $(DISTDIR).tar.gz + -rm -rf -- $(DISTDIR) + -rm -f -- $(ORIGDIR).tar.gz + -rm -rf -- $(ORIGDIR) + + +$(DISTBINDIR): + $(INSTALL_DIR) $(DISTBINDIR) + +libdir: all $(DISTBINDIR) + $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTBINDIR) + $(INSTALL_DATA) $(SOURCES) $(SHARED_SOURCE) $(SHARED_HEADER) $(DISTBINDIR) + $(INSTALL_DATA) $(HELPPATCHES) $(DISTBINDIR) + test -z "$(strip $(EXTRA_DIST))" || \ + $(INSTALL_DATA) $(EXTRA_DIST) $(DISTBINDIR) +# tar --exclude-vcs -czpf $(DISTBINDIR).tar.gz $(DISTBINDIR) + +$(DISTDIR): + $(INSTALL_DIR) $(DISTDIR) + +$(ORIGDIR): + $(INSTALL_DIR) $(ORIGDIR) + +dist: $(DISTDIR) + $(INSTALL_DATA) Makefile $(DISTDIR) + $(INSTALL_DATA) README.txt $(DISTDIR) + $(INSTALL_DATA) LICENSE.txt $(DISTDIR) + $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTDIR) + test -z "$(strip $(ALLSOURCES))" || \ + $(INSTALL_DATA) $(ALLSOURCES) $(DISTDIR) + test -z "$(strip $(wildcard $(ALLSOURCES:.c=.tcl)))" || \ + $(INSTALL_DATA) $(wildcard $(ALLSOURCES:.c=.tcl)) $(DISTDIR) + test -z "$(strip $(SHARED_HEADER))" || \ + $(INSTALL_DATA) $(SHARED_HEADER) $(DISTDIR) + test -z "$(strip $(SHARED_SOURCE))" || \ + $(INSTALL_DATA) $(SHARED_SOURCE) $(DISTDIR) + test -z "$(strip $(PDOBJECTS))" || \ + $(INSTALL_DATA) $(PDOBJECTS) $(DISTDIR) + test -z "$(strip $(HELPPATCHES))" || \ + $(INSTALL_DATA) $(HELPPATCHES) $(DISTDIR) + test -z "$(strip $(EXTRA_DIST))" || \ + $(INSTALL_DATA) $(EXTRA_DIST) $(DISTDIR) + test -z "$(strip $(EXAMPLES))" || \ + $(INSTALL_DIR) $(DISTDIR)/examples && \ + for file in $(EXAMPLES); do \ + $(INSTALL_DATA) examples/$$file $(DISTDIR)/examples; \ + done + test -z "$(strip $(MANUAL))" || \ + $(INSTALL_DIR) $(DISTDIR)/manual && \ + for file in $(MANUAL); do \ + $(INSTALL_DATA) manual/$$file $(DISTDIR)/manual; \ + done + tar --exclude-vcs -czpf $(DISTDIR).tar.gz $(DISTDIR) + +# make a Debian source package +dpkg-source: + debclean + make distclean dist + mv $(DISTDIR) $(ORIGDIR) + tar --exclude-vcs -czpf ../$(ORIGDIR).orig.tar.gz $(ORIGDIR) + rm -f -- $(DISTDIR).tar.gz + rm -rf -- $(DISTDIR) $(ORIGDIR) + cd .. && dpkg-source -b $(LIBRARY_NAME) + +etags: + etags *.h $(SOURCES) ../../pd/src/*.[ch] /usr/include/*.h /usr/include/*/*.h + +showsetup: + @echo "CC: $(CC)" + @echo "CFLAGS: $(CFLAGS)" + @echo "LDFLAGS: $(LDFLAGS)" + @echo "LIBS: $(LIBS)" + @echo "ALL_CFLAGS: $(ALL_CFLAGS)" + @echo "ALL_LDFLAGS: $(ALL_LDFLAGS)" + @echo "ALL_LIBS: $(ALL_LIBS)" + @echo "PD_INCLUDE: $(PD_INCLUDE)" + @echo "PD_PATH: $(PD_PATH)" + @echo "objectsdir: $(objectsdir)" + @echo "LIBRARY_NAME: $(LIBRARY_NAME)" + @echo "LIBRARY_VERSION: $(LIBRARY_VERSION)" + @echo "SOURCES: $(SOURCES)" + @echo "SHARED_HEADER: $(SHARED_HEADER)" + @echo "SHARED_SOURCE: $(SHARED_SOURCE)" + @echo "SHARED_LIB: $(SHARED_LIB)" + @echo "PDOBJECTS: $(PDOBJECTS)" + @echo "ALLSOURCES: $(ALLSOURCES)" + @echo "ALLSOURCES TCL: $(wildcard $(ALLSOURCES:.c=.tcl))" + @echo "UNAME: $(UNAME)" + @echo "CPU: $(CPU)" + @echo "pkglibdir: $(pkglibdir)" + @echo "DISTDIR: $(DISTDIR)" + @echo "ORIGDIR: $(ORIGDIR)" diff --git a/libremediaserver/externals/fileselector/fileselector-help.pd b/libremediaserver/externals/fileselector/fileselector-help.pd new file mode 100644 index 0000000..a881b44 --- /dev/null +++ b/libremediaserver/externals/fileselector/fileselector-help.pd @@ -0,0 +1,21 @@ +#N canvas 831 156 546 485 10; +#X msg 19 73 bang; +#X obj 48 440 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 67 438 print; +#X obj 67 417 fileselector; +#X msg 65 40 folder 2; +#X msg 78 65 file 1; +#X msg 48 16 set /home/santi/PMS/media; +#X msg 89 97 type 35; +#X msg 116 134 type 55; +#X msg 140 168 type 80; +#X connect 0 0 3 0; +#X connect 3 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 5 0 3 0; +#X connect 6 0 3 0; +#X connect 7 0 3 0; +#X connect 8 0 3 0; +#X connect 9 0 3 0; diff --git a/libremediaserver/externals/fileselector/fileselector-meta.pd b/libremediaserver/externals/fileselector/fileselector-meta.pd new file mode 100755 index 0000000..82f2838 --- /dev/null +++ b/libremediaserver/externals/fileselector/fileselector-meta.pd @@ -0,0 +1,7 @@ +#N canvas 15 49 200 200 10; +#N canvas 627 208 420 300 META 1; +#X text 13 41 NAME Artnetin; +#X text 10 25 AUTHOR Santiago Noreña puremediaserver@googlegroups.com +; +#X text 10 10 VERSION 0.0.4; +#X restore 10 10 pd META; diff --git a/libremediaserver/externals/fileselector/fileselector.c b/libremediaserver/externals/fileselector/fileselector.c new file mode 100644 index 0000000..2a8a1f8 --- /dev/null +++ b/libremediaserver/externals/fileselector/fileselector.c @@ -0,0 +1,194 @@ +/* --------------------------------------------------------------------------*/ +/* */ +/* object for getting file listings using wildcard patterns */ +/* Written by Hans-Christoph Steiner */ +/* */ +/* Copyright (c) 2006 Hans-Christoph Steiner */ +/* */ +/* This program is free software; you can redistribute it and/or */ +/* modify it under the terms of the GNU General Public License */ +/* as published by the Free Software Foundation; either version 3 */ +/* of the License, or (at your option) any later version. */ +/* */ +/* See file LICENSE for further informations on licensing terms. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software Foundation, */ +/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/* --------------------------------------------------------------------------*/ + +#include + +#ifdef _WIN32 +#define _WIN32_WINNT 0x0400 +#include +#else +#include +#include +#endif + +#include +#include + +//static char *version = "$Revision: 0.01 $"; + +#define DEBUG(x) +//#define DEBUG(x) x + +/*------------------------------------------------------------------------------ + * CLASS DEF + */ +static t_class *fileselector_class; + +typedef struct _fileselector { + t_object x_obj; + t_symbol* x_pattern; + int x_folder; + int x_file; + int x_type; + t_outlet *x_out; +} t_fileselector; + +/*------------------------------------------------------------------------------ + * IMPLEMENTATION + */ + +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 + { + return; + } + 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)) + { + 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_video.gl_pathc) + { + strncpy(path, glob_video.gl_pathv[i],strnlen(glob_video.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); + 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); + } + 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) ); +} + +static void fileselector_set(t_fileselector* x, t_symbol *s) +{ + x->x_pattern = s; +} + +static void fileselector_folder(t_fileselector* x, t_floatarg f) +{ + x->x_folder = f; + return; +} + +static void fileselector_file(t_fileselector* x, t_floatarg f) +{ + x->x_file = f; + return; +} + +static void fileselector_type(t_fileselector* x, t_floatarg f) +{ + x->x_type = f; + return; +} + +static void *fileselector_new() +{ + t_fileselector *x = (t_fileselector *)pd_new(fileselector_class); + x->x_out = outlet_new((t_object *)x, &s_symbol); + x->x_folder = 0; + x->x_file = 0; + x->x_type = 0; + x->x_pattern = gensym("empty"); + return (x); +} + +void fileselector_setup(void) +{ + fileselector_class = class_new(gensym("fileselector"),(t_newmethod)fileselector_new,0,sizeof(t_fileselector),0,A_DEFSYMBOL,A_DEFFLOAT,A_DEFFLOAT,A_DEFFLOAT, 0); + /* add inlet datatype methods */ + class_addbang(fileselector_class,(t_method) fileselector_output); +// class_addsymbol(fileselector_class,(t_method) fileselector_symbol); + /* add inlet message methods */ + class_addmethod(fileselector_class,(t_method)fileselector_set,gensym("set"),A_DEFSYMBOL, 0); + // add inlet folder + class_addmethod(fileselector_class,(t_method)fileselector_folder,gensym("folder"),A_FLOAT, 0); + // add inlet file +class_addmethod(fileselector_class,(t_method)fileselector_file,gensym("file"),A_FLOAT, 0); + // add inlet type +class_addmethod(fileselector_class,(t_method)fileselector_type,gensym("type"),A_FLOAT, 0); +} + diff --git a/libremediaserver/pd/layer.pd b/libremediaserver/pd/layer.pd index 45dc2c5..258cbf1 100644 --- a/libremediaserver/pd/layer.pd +++ b/libremediaserver/pd/layer.pd @@ -64,58 +64,68 @@ f f f f f f f f f; #X obj 1148 291 s \$0-c37; #X obj 760 354 s \$0-c24; #X obj 813 355 s \$0-c25; -#N canvas 287 242 1002 320 selector 0; -#X obj 332 680 outlet; -#X obj 854 308 outlet; -#X obj 751 6 / 25; -#X obj 471 319 symbol; -#X obj 325 319 symbol; -#X obj 106 78 spigot; -#X msg 199 20 1; -#X msg 269 6 0; -#X msg 785 162 1; -#X msg 825 163 2; -#X msg 861 163 3; -#X msg 929 164 0; -#X text 104 9 folder; -#X text 515 442 file; -#X obj 325 340 makefilename %s/image/*; -#X obj 471 340 makefilename %s/fonts/*; -#X obj 106 31 r \$0-c6; -#X obj 514 465 r \$0-c7; -#X obj 751 -32 r \$0-c8; -#X obj 259 557 t l; -#X obj 332 654 list split 1; -#X obj 304 631 list split; -#X obj 304 608 list; -#X obj 325 556 list prepend; -#X msg 132 157 symbol \$1; -#X obj 48 239 list split; -#X obj 76 261 list split 1; -#X obj 76 282 makefilename %s/*; -#X obj 132 137 makefilename %s/video/*; -#X obj 751 85 select 1 2 3; -#X text 637 357 Tipo de media: 0 Off 1 Video 2 Imagen 3 Texto; -#X obj 322 80 r path; -#X obj 106 53 float; -#X obj 751 27 int 0; -#X obj 325 518 folder_list; -#X obj 69 177 folder_list; -#X obj 69 197 list prepend; -#X obj 236 233 t l; -#X obj 48 218 list; -#X obj 69 130 t b; -#X obj 12 155 t b; -#X obj 581 542 float; -#X msg 388 434 symbol \$1; -#X obj 514 504 t b b; -#X obj 325 431 t b; -#X obj 751 53 change; +#N canvas 1 85 1438 789 selector 1; +#X obj 217 621 outlet; +#X obj 548 277 outlet; +#X obj 445 -11 / 25; +#X obj 356 330 symbol; +#X obj 210 330 symbol; +#X obj 106 146 spigot; +#X msg 173 124 1; +#X msg 204 124 0; +#X msg 479 131 1; +#X msg 519 132 2; +#X msg 555 132 3; +#X msg 623 133 0; +#X text 104 77 folder; +#X text 577 347 file; +#X obj 210 351 makefilename %s/image/*; +#X obj 356 351 makefilename %s/fonts/*; +#X obj 106 99 r \$0-c6; +#X obj 574 362 r \$0-c7; +#X obj 445 -33 r \$0-c8; +#X obj 144 447 t l; +#X obj 217 528 list split 1; +#X obj 189 505 list split; +#X obj 189 482 list; +#X obj 210 446 list prepend; +#X msg 132 225 symbol \$1; +#X obj 48 307 list split; +#X obj 76 329 list split 1; +#X obj 76 350 makefilename %s/*; +#X obj 132 205 makefilename %s/video/*; +#X obj 445 54 select 1 2 3; +#X text 29 -11 Tipo de media: 0 Off 1 Video 2 Imagen 3 Texto; +#X obj 394 -33 r path; +#X obj 106 121 float; +#X obj 445 10 int 0; +#X obj 210 423 folder_list; +#X obj 69 245 folder_list; +#X obj 69 265 list prepend; +#X obj 163 264 t l; +#X obj 48 286 list; +#X obj 69 198 t b; +#X obj 12 223 t b; +#X msg 273 399 symbol \$1; +#X obj 210 391 t b; +#X obj 445 32 change; +#X obj 265 582 spigot; +#X msg 330 544 0; +#X obj 395 591 b; +#X msg 363 544 1; +#X obj 363 506 loadbang; +#X obj 460 543 delay 500; +#X symbolatom 697 515 80 0 0 0 - - -; +#X symbolatom 693 642 80 0 0 0 - - -; +#X obj 562 398 float; +#X floatatom 701 412 5 0 0 0 - - -; +#X floatatom 704 374 5 0 0 0 - - -; +#X obj 313 448 t b f; #X connect 2 0 33 0; #X connect 3 0 15 0; -#X connect 3 0 44 0; +#X connect 3 0 42 0; #X connect 4 0 14 0; -#X connect 4 0 44 0; +#X connect 4 0 42 0; #X connect 5 0 25 1; #X connect 5 0 40 0; #X connect 6 0 5 1; @@ -124,13 +134,15 @@ f f f f f f f f f; #X connect 9 0 1 0; #X connect 10 0 1 0; #X connect 11 0 1 0; -#X connect 14 0 42 0; -#X connect 15 0 42 0; +#X connect 14 0 41 0; +#X connect 15 0 41 0; #X connect 16 0 32 0; -#X connect 17 0 41 0; -#X connect 17 0 43 0; +#X connect 17 0 54 0; +#X connect 17 0 55 0; +#X connect 17 0 52 1; #X connect 18 0 2 0; #X connect 19 0 23 1; +#X connect 20 0 50 0; #X connect 20 0 0 0; #X connect 21 1 20 0; #X connect 22 0 21 0; @@ -139,8 +151,8 @@ f f f f f f f f f; #X connect 24 0 35 1; #X connect 25 1 26 0; #X connect 26 0 27 0; -#X connect 26 0 44 0; -#X connect 27 0 42 0; +#X connect 26 0 42 0; +#X connect 27 0 41 0; #X connect 28 0 24 0; #X connect 29 0 8 0; #X connect 29 0 6 0; @@ -159,7 +171,7 @@ f f f f f f f f f; #X connect 31 0 28 0; #X connect 31 0 39 0; #X connect 32 0 5 0; -#X connect 33 0 45 0; +#X connect 33 0 43 0; #X connect 34 0 23 0; #X connect 35 0 36 0; #X connect 36 0 37 0; @@ -168,14 +180,24 @@ f f f f f f f f f; #X connect 38 0 25 0; #X connect 39 0 35 0; #X connect 40 0 38 0; -#X connect 41 0 21 1; -#X connect 42 0 34 1; -#X connect 43 0 22 0; -#X connect 43 1 21 0; -#X connect 44 0 34 0; -#X connect 44 0 43 0; -#X connect 44 0 23 1; -#X connect 45 0 29 0; +#X connect 41 0 34 1; +#X connect 42 0 34 0; +#X connect 42 0 23 1; +#X connect 42 0 52 0; +#X connect 43 0 29 0; +#X connect 44 0 46 0; +#X connect 44 0 51 0; +#X connect 45 0 44 1; +#X connect 46 0 45 0; +#X connect 46 0 49 0; +#X connect 47 0 44 1; +#X connect 48 0 47 0; +#X connect 49 0 47 0; +#X connect 52 0 53 0; +#X connect 52 0 55 0; +#X connect 55 0 22 0; +#X connect 55 0 21 0; +#X connect 55 1 21 1; #X restore 621 -87 pd selector; #N canvas 1 112 300 418 imagen 0; #X obj 100 321 pix_image; @@ -205,7 +227,7 @@ f f f f f f f f f; #X connect 10 0 9 0; #X connect 11 0 0 0; #X restore 514 41 pd imagen; -#N canvas 1 85 1438 789 video 1; +#N canvas 1 85 1438 789 video 0; #X msg -9 224 open \$1; #X obj 116 224 gemhead; #X obj -9 155 spigot; diff --git a/libremediaserver/pd/pms-video.pd b/libremediaserver/pd/pms-video.pd index a1b853a..c91ff47 100644 --- a/libremediaserver/pd/pms-video.pd +++ b/libremediaserver/pd/pms-video.pd @@ -1,4 +1,4 @@ -#N canvas 806 522 611 318 10; +#N canvas 804 530 611 318 10; #N canvas 315 169 952 599 dmx 0; #X obj -7 437 list split; #X obj 99 444 list split; @@ -136,7 +136,7 @@ #X connect 5 0 7 0; #X connect 7 0 4 3; #X restore -301 -438 pd fondo; -#N canvas 610 161 450 300 receive 0; +#N canvas 608 169 450 300 receive 1; #X obj 71 -398 select 1; #X obj 123 -358 select 2 3 4 5; #X obj 22 -242 s winposx; @@ -175,6 +175,9 @@ #X obj 872 -324 select 20 21; #X floatatom 604 -458 5 0 0 0 - - -; #X obj 0 -316 s window; +#X obj 716 -452 symbol; +#X obj 716 -472 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; #X connect 0 0 32 0; #X connect 0 1 1 0; #X connect 1 0 6 0; @@ -223,10 +226,13 @@ #X connect 33 1 29 1; #X connect 33 1 32 1; #X connect 33 2 31 0; +#X connect 33 2 38 1; #X connect 34 0 33 0; #X connect 34 1 36 0; #X connect 35 0 27 0; #X connect 35 1 29 0; +#X connect 38 0 31 0; +#X connect 39 0 38 0; #X restore -244 -438 pd receive; #N canvas 1151 173 450 564 window 0; #X msg 987 -347 color 0 0 0; @@ -322,7 +328,6 @@ #X connect 41 0 36 0; #X restore -175 -438 pd window; #N canvas 621 159 450 300 layer_5 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -339,32 +344,32 @@ #X msg -421 17 layerimage 15; #X obj -50 -57 delay 400; #X obj -43 122 s preview; -#X connect 0 0 6 0; -#X connect 0 1 8 0; -#X connect 1 0 8 1; -#X connect 2 0 8 1; +#X obj -253 -28 layer; +#X connect 0 0 7 1; +#X connect 1 0 7 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; #X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 4 0 3 0; -#X connect 4 0 0 1; -#X connect 5 0 0 0; -#X connect 6 0 7 0; -#X connect 8 0 10 0; +#X connect 3 0 16 1; +#X connect 4 0 16 0; +#X connect 5 0 6 0; +#X connect 7 0 9 0; +#X connect 8 0 14 0; +#X connect 9 0 12 0; #X connect 9 0 15 0; -#X connect 10 0 13 0; -#X connect 10 0 16 0; -#X connect 11 0 10 1; -#X connect 12 0 10 1; -#X connect 13 0 11 0; -#X connect 14 0 16 0; -#X connect 15 0 12 0; -#X connect 15 0 14 0; -#X connect 15 0 16 0; +#X connect 10 0 9 1; +#X connect 11 0 9 1; +#X connect 12 0 10 0; +#X connect 13 0 15 0; +#X connect 14 0 11 0; +#X connect 14 0 13 0; +#X connect 14 0 15 0; +#X connect 16 0 5 0; +#X connect 16 1 7 0; #X restore -166 -380 pd layer_5; #X obj -298 -336 loadbang; #X obj -407 -259 print togui; #N canvas 1 101 450 300 layer_6 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -381,30 +386,30 @@ #X msg -253 10 6 \$1; #X obj -48 -38 delay 500; #X obj -44 132 s preview; -#X connect 0 0 14 0; -#X connect 0 1 5 0; -#X connect 1 0 5 1; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 5 0 7 0; +#X obj -253 -28 layer; +#X connect 0 0 4 1; +#X connect 1 0 4 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; +#X connect 4 0 6 0; +#X connect 5 0 14 0; +#X connect 6 0 9 0; #X connect 6 0 15 0; -#X connect 7 0 10 0; -#X connect 7 0 16 0; -#X connect 8 0 7 1; -#X connect 9 0 7 1; -#X connect 10 0 8 0; +#X connect 7 0 6 1; +#X connect 8 0 6 1; +#X connect 9 0 7 0; +#X connect 10 0 15 0; #X connect 11 0 16 0; -#X connect 12 0 0 0; +#X connect 12 0 2 0; +#X connect 12 0 16 1; #X connect 13 0 3 0; -#X connect 13 0 0 1; -#X connect 14 0 4 0; -#X connect 15 0 9 0; -#X connect 15 0 11 0; -#X connect 15 0 16 0; +#X connect 14 0 8 0; +#X connect 14 0 10 0; +#X connect 14 0 15 0; +#X connect 16 0 13 0; +#X connect 16 1 4 0; #X restore -95 -380 pd layer_6; #N canvas 1 101 450 300 layer_7 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -421,30 +426,30 @@ #X obj -177 -80 r layer7; #X obj -54 -37 delay 600; #X obj -46 119 s preview; -#X connect 0 0 12 0; -#X connect 0 1 5 0; -#X connect 1 0 5 1; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 5 0 7 0; +#X obj -253 -28 layer; +#X connect 0 0 4 1; +#X connect 1 0 4 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; +#X connect 4 0 6 0; +#X connect 5 0 14 0; +#X connect 6 0 9 0; #X connect 6 0 15 0; -#X connect 7 0 10 0; -#X connect 7 0 16 0; -#X connect 8 0 7 1; -#X connect 9 0 7 1; -#X connect 10 0 8 0; -#X connect 11 0 16 0; -#X connect 12 0 4 0; -#X connect 13 0 0 0; -#X connect 14 0 3 0; -#X connect 14 0 0 1; -#X connect 15 0 9 0; -#X connect 15 0 11 0; -#X connect 15 0 16 0; +#X connect 7 0 6 1; +#X connect 8 0 6 1; +#X connect 9 0 7 0; +#X connect 10 0 15 0; +#X connect 11 0 3 0; +#X connect 12 0 16 0; +#X connect 13 0 2 0; +#X connect 13 0 16 1; +#X connect 14 0 8 0; +#X connect 14 0 10 0; +#X connect 14 0 15 0; +#X connect 16 0 11 0; +#X connect 16 1 4 0; #X restore -25 -379 pd layer_7; #N canvas 1 117 450 300 layer_8 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -461,30 +466,30 @@ #X msg -421 17 layerimage 18; #X obj -57 -58 delay 700; #X obj -78 108 s preview; -#X connect 0 0 13 0; -#X connect 0 1 5 0; -#X connect 1 0 5 1; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 5 0 7 0; +#X obj -253 -28 layer; +#X connect 0 0 4 1; +#X connect 1 0 4 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; +#X connect 4 0 6 0; +#X connect 5 0 14 0; +#X connect 6 0 9 0; #X connect 6 0 15 0; -#X connect 7 0 10 0; -#X connect 7 0 16 0; -#X connect 8 0 7 1; -#X connect 9 0 7 1; -#X connect 10 0 8 0; -#X connect 11 0 0 0; +#X connect 7 0 6 1; +#X connect 8 0 6 1; +#X connect 9 0 7 0; +#X connect 10 0 16 0; +#X connect 11 0 2 0; +#X connect 11 0 16 1; #X connect 12 0 3 0; -#X connect 12 0 0 1; -#X connect 13 0 4 0; -#X connect 14 0 16 0; -#X connect 15 0 9 0; -#X connect 15 0 14 0; -#X connect 15 0 16 0; +#X connect 13 0 15 0; +#X connect 14 0 8 0; +#X connect 14 0 13 0; +#X connect 14 0 15 0; +#X connect 16 0 12 0; +#X connect 16 1 4 0; #X restore 46 -379 pd layer_8; #N canvas 1 125 450 300 layer_4 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -501,30 +506,30 @@ #X obj -53 -70 delay 300; #X obj -177 -80 r layer4; #X obj -39 147 s preview; -#X connect 0 0 12 0; -#X connect 0 1 4 0; -#X connect 1 0 4 1; -#X connect 2 0 4 1; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 4 0 6 0; -#X connect 5 0 14 0; -#X connect 6 0 9 0; -#X connect 6 0 16 0; -#X connect 7 0 6 1; -#X connect 8 0 6 1; -#X connect 9 0 7 0; -#X connect 10 0 0 0; -#X connect 12 0 11 0; -#X connect 13 0 16 0; -#X connect 14 0 8 0; -#X connect 14 0 13 0; -#X connect 14 0 16 0; -#X connect 15 0 3 0; -#X connect 15 0 0 1; +#X obj -253 -28 layer; +#X connect 0 0 3 1; +#X connect 1 0 3 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; +#X connect 3 0 5 0; +#X connect 4 0 13 0; +#X connect 5 0 8 0; +#X connect 5 0 15 0; +#X connect 6 0 5 1; +#X connect 7 0 5 1; +#X connect 8 0 6 0; +#X connect 9 0 16 0; +#X connect 11 0 10 0; +#X connect 12 0 15 0; +#X connect 13 0 7 0; +#X connect 13 0 12 0; +#X connect 13 0 15 0; +#X connect 14 0 2 0; +#X connect 14 0 16 1; +#X connect 16 0 11 0; +#X connect 16 1 3 0; #X restore -237 -380 pd layer_4; #N canvas 1 101 450 300 layer_3 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -541,30 +546,30 @@ #X msg -253 10 3 \$1; #X obj -51 -30 delay 200; #X obj -82 141 s preview; -#X connect 0 0 14 0; -#X connect 0 1 5 0; -#X connect 1 0 5 1; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 5 0 7 0; +#X obj -253 -28 layer; +#X connect 0 0 4 1; +#X connect 1 0 4 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; +#X connect 4 0 6 0; +#X connect 5 0 14 0; +#X connect 6 0 9 0; #X connect 6 0 15 0; -#X connect 7 0 10 0; -#X connect 7 0 16 0; -#X connect 8 0 7 1; -#X connect 9 0 7 1; -#X connect 10 0 8 0; +#X connect 7 0 6 1; +#X connect 8 0 6 1; +#X connect 9 0 7 0; +#X connect 10 0 15 0; #X connect 11 0 16 0; -#X connect 12 0 0 0; +#X connect 12 0 2 0; +#X connect 12 0 16 1; #X connect 13 0 3 0; -#X connect 13 0 0 1; -#X connect 14 0 4 0; -#X connect 15 0 9 0; -#X connect 15 0 11 0; -#X connect 15 0 16 0; +#X connect 14 0 8 0; +#X connect 14 0 10 0; +#X connect 14 0 15 0; +#X connect 16 0 13 0; +#X connect 16 1 4 0; #X restore -306 -380 pd layer_3; #N canvas 1 101 450 300 layer_2 0; -#X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0; #X obj -177 -55 select 0; @@ -582,30 +587,31 @@ #X obj -106 -96 delay 100; #X obj -211 67 t b; #X obj -93 156 s preview; -#X connect 0 0 12 0; -#X connect 0 1 5 0; -#X connect 1 0 5 1; -#X connect 2 0 5 1; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 5 0 7 0; -#X connect 6 0 15 0; -#X connect 7 0 10 0; -#X connect 7 0 17 0; -#X connect 8 0 7 1; -#X connect 9 0 7 1; -#X connect 10 0 8 0; -#X connect 11 0 16 0; -#X connect 11 0 17 0; -#X connect 12 0 4 0; -#X connect 13 0 0 0; -#X connect 14 0 3 0; -#X connect 14 0 0 1; -#X connect 15 0 9 0; -#X connect 15 0 11 0; -#X connect 16 0 17 0; +#X obj -253 -28 layer; +#X connect 0 0 4 1; +#X connect 1 0 4 1; +#X connect 2 0 1 0; +#X connect 2 1 0 0; +#X connect 4 0 6 0; +#X connect 5 0 14 0; +#X connect 6 0 9 0; +#X connect 6 0 16 0; +#X connect 7 0 6 1; +#X connect 8 0 6 1; +#X connect 9 0 7 0; +#X connect 10 0 15 0; +#X connect 10 0 16 0; +#X connect 11 0 3 0; +#X connect 12 0 17 0; +#X connect 13 0 2 0; +#X connect 13 0 17 1; +#X connect 14 0 8 0; +#X connect 14 0 10 0; +#X connect 15 0 16 0; +#X connect 17 0 11 0; +#X connect 17 1 4 0; #X restore -374 -380 pd layer_2; -#N canvas 1 157 450 300 layer_1 0; +#N canvas 1 165 450 300 layer_1 1; #X obj -253 -28 layer; #X msg -132 -32 1; #X msg -177 -33 0;