Pd and max/msp/jitter
i don't believe it,
I found it, it wasn't as far away as last night(!):
http://puredata.hurleur.com/sujet-487-newbie-general-question-max-x-linux
Pd and max/msp/jitter
Puredata is free open source software, Max costs money.
Puredata is more flexible and extensive than Max because it is maintained and
supported by a community who use it.
There are more freely available examples, patches, tutorials and documentation for Puredata than Max.
Max data can be imported into Puredata with Cyclone, but afaik the converse is not possible.
In many cases Max MSP has prettier GUI components, but depending on your point of view these can also be seen as fluff and cruft.
I consider Pd the "grown ups version of Max"
Since I don't use Max because I can't afford it (Cycling74 refused to offer me a complementary version in return for writing them tutorials) there may be advantages to Max I have no idea about.
The downside is what is typical of most free software, installation and configuration is more difficult.
So basically if you are prepared to do a little thinking and don't need a shrink wrapped spoon feed, it does more than Max, better, for free.
Pd newbie general question - MAX vs. Pd, OS X vs. Linux
I switched to PD 3 years ago from MaxMSP and never looked back, the two programs seem to go through periods of convergence and divergence - an innovation will often appear ported for it's neighbor in a relatively short time. Generally I suppose Max is a bit more juicy graphically which can be attractive to the Mac user. However, PD really comes into it's own when combined with linux as I have recently discovered:
As a recent convert to Linux I first tried the CD boo-table distros like dyne:bolic and DeMuDi from the AGNULA project which I found a little clunky. After further searching and testing I've settled on a Hard drive installation of Puppy Linux - compiling PD for this OS. At only 70MB or so Puppy is tiny and this frees the computer up for all those complicated patches - I even have PD running on a Windows95 spec computer relatively well. The other awesome Linux experience I've had is PpPod for iPodlinux - portable PD programmed instruments in my pocket!
Long story short I teetered on the brink of the same decision and PD+Linux has done me very well.
Pd newbie general question - MAX vs. Pd, OS X vs. Linux
I did some work with MAX at CNMAT and on my own a very long time ago, but since then I've led a MAX-free existence - don't know how that happened. Anyway, I finally have the opportunity to get back into it, so I just started to catch up and see how things have developed since I left. Holy cats - they certainly have changed. The fact that I'm on this forum shows you a bit about where my click trail has taken me.
Ok, so I have the opportunity to retool and almost start from scratch, and I'm faced with general questions about the ideal OS / software to commit to. I'm aware that questions like these can be inflammatory, so I'll give a bit more info and justification for being so general.
I'm primarily a Mac OS X dude, although in my main profession as web developer, I use all OpenBSD servers. For one particular project, I may be moving to Linux because of its clustering possibilities. But at home, I do all my work on my G5.
My training, such as it is, is in composition - with pen & paper even. But I'm eager to expand my toolset with various computer-assisted techniques, and I intend to develop my own, not just use what's out there, so programming is going to be a big part of my plans.
My immediate inclination was just to lay down the $495 for MAX/MSP (my copy is so old I don't think I can even upgrade). Maybe add jitter too - looks insanely cool. But then I clicked on a link to a company that does cycling74-based work, and followed a link to Pure Data. And things really opened up from there.
So it looks to me as if there's a bit of a conflict here...
-
If go with what's semi-familiar and go with MAX on my Mac, I immediately also get an IRCAM Forum Pass. Quite a bit of $, but a lot of bang. Good support. Established community.
-
But then there's Pd, which is open-source - that's a HUGE plus in my book, not just because it's free, and it'll run on my Mac...
-
...but from what I can tell, a lot of the most interesting development in this field would appear to be taking place on the Linux platform, AGNULA, dyne:bolic, etc.
So that's my question. MAX vs. Pd, OS X vs. Linux, and the natural combinations. Will Pd be a practical alternative to MAX/MSP, with its established user base and support, or even an improvement? Am I shortchanging myself with Pd on OS X? Might it be worth taking the plunge into Linux? I'll be interested to hear all advice and experiences.
Thanks...
Alex
Install gridflow on linux
I've tried to install under root session but it still doesn't work!...
the full output for 'make install' is (sorry this is very very very long!!!):
ruby -w base/source_filter.rb base/grid.h base/grid.h.fcs
ruby -w base/source_filter.rb base/grid.c base/grid.c.fcs
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -c base/grid.c.fcs -o base/grid.o
ruby -w base/source_filter.rb base/main.c base/main.c.fcs
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -c base/main.c.fcs -o base/main.o
ruby -w base/source_filter.rb base/number.c base/number.c.fcs
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -DPASS1
-c base/num ber.c.fcs -o base/number.1.o
base/number.c.fcs: In static member function `static bool Op<T>::is_neutral(T, L eftRight)':
base/number.c.fcs:47: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Op<T>::is_absorbent(T, LeftRight)':
base/number.c.fcs:48: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Ymulshr8<T>::is_neutra l(T, LeftRight) [with T = uint8]':
base/number.c.fcs:266: instantiated from here
base/number.c.fcs:200: attention : comparaison est toujours fausse en raison d'u ne gamme limitée de type de données
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -DPASS2 -c base/num ber.c.fcs -o base/number.2.o
base/number.c.fcs: In static member function `static bool Op<T>::is_neutral(T, L eftRight)':
base/number.c.fcs:47: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Op<T>::is_absorbent(T, LeftRight)':
base/number.c.fcs:48: attention : « return » manquant dans une fonction devant r etourner une valeur
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -DPASS3 -c base/num ber.c.fcs -o base/number.3.o
base/number.c.fcs: In static member function `static bool Op<T>::is_neutral(T, L eftRight)':
base/number.c.fcs:47: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Op<T>::is_absorbent(T, LeftRight)':
base/number.c.fcs:48: attention : « return » manquant dans une fonction devant r etourner une valeur
ruby -w base/source_filter.rb base/bitpacking.c base/bitpacking.c.fcs
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -c base/bitpacking. c.fcs -o base/bitpacking.o
ruby -w base/source_filter.rb base/flow_objects.c base/flow_objects.c.fcs
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
bas
Porting from Max to Pd
_I see there is a pop-up menu in the file open dialog that lets you select Max files instead of Pd files. I try this and loading the patch produces no errors, but neither does it open a window (it displays nothing at all). _
I've never used cyclone, but...
Quoting from the Pd list:
_*File->Open is obsolete* for loading max patches. Instead, create
a [cyclone] object and click on it. It should load max-text,
max-binary, and even the max-old format (which max itself does not
load anymore...) _
Another message suggest that you can switch cyclone between normal mode and max compatability mode using messages, although I didn't find out how.
Gridflow on agnula demudi ?
arrrrrgggg:
This is the GridFlow 0.8.0 configurator within Ruby version 1.8.2
[fast] Compile for speed (and not debuggability): enabled
[gcc3] GNU C++ Compiler 3: missing (undefined method `<' for nil:NilClass)
[stl] C++ Standard Template Library: missing (gcc compilation error)
[gcc64] GNU C++ in 64-bit mode: missing (gcc compilation error)
[libruby] Ruby as a dynamic library: missing (gcc compilation error)
[librubystatic] Ruby as a static library: missing (gcc compilation error)
[pentium] Pentium-compatible CPU: missing (gcc compilation error)
[mmx] MMX-compatible CPU (using NASM): disabled (would need pentium)
[simd] SIMD (MMX/SSE/Altivec) (using GCC): disabled (would need pentium)
[profiler] profiler (speed measurements): disabled (would need pentium)
[usb] USB Library: missing (where is usb.h ?)
[ieee1394] IEEE1394 Libraries for Linux (raw1394/dc1394): disabled (by author)
[x11] X11 Display Protocol: missing (where is X11/Xlib.h ?)
[x11_shm] X11 acceleration through shared memory: disabled (would need x11)
[sdl] Simple Directmedia Layer (experimental support): missing (where is SDL/SDL.h ?)
[objcpp] GNU/Apple ObjectiveC++ Compiler: missing (where is objc/Object.h ?)
[quartz] Apple Quartz/Cocoa Display: disabled (would need objcpp)
[aalib] Ascii Art Library: missing (where is aalib.h ?)
[jpeg] JPEG Library: missing (where is jpeglib.h ?)
[png] PNG Library <libpng12/png.h>: missing (where is libpng12/png.h ?)
[png] PNG Library <png.h>: missing (where is png.h ?)
[videodev] Video4linux Digitizer Driver Interface: missing (gcc compilation error)
[mpeg3] HeroineWarrior LibMPEG3 <libmpeg3/libmpeg3.h>: missing (where is libmpeg3/libmpeg3.h ?)
[mpeg3] HeroineWarrior LibMPEG3 <libmpeg3.h>: missing (where is libmpeg3.h ?)
[quicktimeapple] Apple's QuickTime: missing (gcc compilation error)
[quicktimehw] HeroineWarrior QuickTime4Linux (or LibQuickTime) (try #1): missing (gcc compilation error)
[quicktimehw] HeroineWarrior QuickTime4Linux (or LibQuickTime) (try #2): missing (gcc compilation error)
[xine] Xine movie decoder: disabled (by author)
[puredata] Miller Puckette's Pure Data: disabled (would need libruby or librubystatic)
generating ./config.make
generating config.h
creating Makefile
humm.... it will probably compile but seem will could do not much without jpeg png video4linux X11 etc....
will wait a .deb package...
Pd workshop in Madrid
> Instituto Nacional de las Artes Escénicas y la Música
> MINISTERIO DE EDUCACIÓN, CULTURA Y DEPORTE
> Centro para la Difusión de la Música Contemporánea
>
> Curso:Introducción a la Creación de Aplicaciones Musicales con PD/MAX por
> Juan Andrés Beato y Gregorio García Karman
>
>
> 7 - 11 Marzo 2005
> teoría: 16.00 a 19.00 horas
> prácticas: del 8 al 11 de Marzo, de 11.00 a15.00 horas en grupos de 2
> alumnos (solo alumnos activos)
>
> lugar:
> LIEM-CDMC
> Museo Nacional Centro de Arte Reina Sofía, 5ª planta
> c) Santa Isabel 52, 28012 Madrid
>
>
> Pure Data (PD) es un entorno de programación gráfica para aplicaciones
> musicales que funciona bajo Windows, OSX, Linux e Irix. Desarrollado por
> Miller Puckette y de distribución libre y código abierto, constituye junto
> con MAX/MSP uno de los modelos de software musical de más impacto y
> difusión en la actualidad. La programación se realiza interconectando
> objetos gráficos, que representan instrucciones, en un entorno
> fuertemente desestructurado y optimizado para el procesado de audio y
> vídeo en tiempo real. Su objetivo es ofrecer al músico una herramienta
> intuitiva y versátil: se utiliza para crear instrumentos virtuales o
> emular el funcionamiento de equipos hardware, realizar composiciones de
> música electrónica en vivo, en instalaciones, conciertos en red y jams
> on-line. Su flexibilidad para tratar MIDI, audio, vídeo y 3D en un paquete
> integrado y con múltiples posibilidades de control, hace que encuentre
> también un número creciente de aplicaciones en el ámbito de los
> multimedia, la performance, VJing..., así como en la enseñanza, en la
> ingeniería de sonido y la musicología (arqueología electroacústica). El
> objetivo del curso es dar a conocer la filosofía y los fundamentos de
> programación de los entornos basados en el "paradigma MAX", ilustrados a
> través de ejemplos realizados en Pure Data así como de aplicaciones reales
> ya desarrolladas.
> Se tratarán los conocimientos necesarios para poder dar primeros pasos en
> este entorno, así como para que el alumno pueda desenvolverse
> posteriormente utilizándolo para la creación de aplicaciones musicales
> propias. A lo largo del curso, se realizará un repaso de los diferentes
> elementos de PD demostrando su funcionamiento junto con conceptos
> básicos del programa (orden, encapsulamiento...). Se presentarán las
> principales familas de objetos estudiando ejemplos implementados en PD de
> técnicas 'en vivo' de síntesis, control algorítmico, manipulación de
> muestras y procesado, afines a la música electroacústica. De manera
> destacada, se tratarán aspectos particulares de PD como las data
> structures, una herramienta específica de este entorno para el
> almacenamiento y visualización de datos que permite el control de PD desde
> partituras gráficas diseñadas por el usuario. También se realizará un
> repaso de los externals y librerías más relevantes utilizadas en la
> programación de aplicaciones musicales (objetos de análisis,
> comunicación, espacialización, streaming...), señalando algunos aspectos
> comunes y divergentes entre PD y su contrapartida comercial MAX. Desde una
> perspectiva más general, se tratarán cuestiones propias de los sistemas
> musicales en tiempo real como el acondicionamiento de datos de control o
> el mapping y se presentarán diferentes estrategias de control sonoro
> empleadas en la creación de aplicaciones musicales, analizando ejemplos de
> piezas realizadas con PD y MAX.
>
> Dirigido a:
> Compositores, intérpretes musicales, musicólogos, artistas sonoros,
> músicos en general tanto profesionales como estudiantes.
>
> Inscripción
> Número de plazas: 8 alumnos activos (serán seleccionados por currículum)
>
> 22 alumnos oyentes
>
> Precio de matrícula: 45 euros. Descuento del 50% a estudiantes que lo
> acrediten
> Para inscribirse envíen una carta de solicitud con su nombre, dirección,
> teléfono, correo electrónico y/o fax indicando su intención de optar a
> "alumno activo" o no, y su currículum especificando experiencia en los
> campos que cubre el curso
> Envíen por correo ordinario, electrónico o fax a:
> "Curso Introducción a la Creación de Aplicaciones Musicales con PD/MAX "
>
> LIEM-CDMC
> (Museo Nacional Centro de Arte Reina Sofía)
> c) Santa Isabel 52 , 28012 Madrid, ESPAÑA
> tel: (+34) 91 774 1072, (+34) 91 774 1073; fax: (+34) 91 774 1075
> cdmc@inaem.mcu.es [url=http://cdmc.mcu.es
]http://cdmc.mcu.es
>
> El plazo de inscripción se cerrará el primer día de clase. No obstante el
> 24 de febrero se comunicará a los asistentes su admisión como alumno
> activo u oyente.
> El pago de matrícula deberán realizarlo después de que les hayamos
> confirmado la admisión, y el primer día de clase deberán entregarnos el
> justificante del pago.
> Ingresar el importe en cualquier oficina del BBVA, a nombre del
> Instituto Nacional de las Artes Escénicas y de la Música, en la cuenta
> siguiente:
> Entidad: 0182 Sucursal: 2370 Dígito de control: 40 c/c:
> 0200201218
> Al término del curso, los alumnos recibirán un diploma acreditativo de
> asistencia.
> Cualquier información que se precise sobre estos cursos o las diversas
> actividades del CDMC, puede solicitarse en la dirección indicada
> anteriormente.
>
Sukebe waraii
I like that track, kept me interested and made me smile, and when it finished I wanted to listen to it again - I've listened to it about 5 times this evening. Good work!
I've been trying to make similar sounds. I'm working on doing more live stuff with Pd, it's mighty fun, I can spend hours twiddling with midi knobs making freaky noises. I think I spend too much time fiddling with the knobs and not enough time enhancing my patches - I've not got much to show for the last six months of Pd-ing.
At first I was mapping each midi knob to a single control of the patch, but poorly thought out - in one patch I have 4 breakbeats, and I had 4 knobs mapped to the bpm control of each beat - "bpm 1", "bpm 2", "bpm 3", "bpm 4" - and it was a nightmare trying to get anything to sound good with it. Now I am trying to have more useful controls - "master bpm", "second pair/first pair bpm ratio", "pair 1 bpm spread", "pair 2 bpm spread". Still having 4 knobs to control the 4 bpms, but in a more musically useful way. Like a mathematical change of basis or change of coordinate system.
Another way I am trying to make live performance easier is using algorithmic processes - instead of controlling every beat I control aspects of a process that generates the beats - instead of being the drummer and the bassist and whatever else I am more of a conductor or director, controlling "jitteryness" or "density" or whatever. These processes can have a random part, so the live performance takes on a new element of reacting to the unpredictable output.
Trigon
Doesn't work:
../onoff/switch bo
... couldn't create
../onoff/switch po
... couldn't create
../onoff/switch jo
... couldn't create
../onoff/switch so
... couldn't create
../onoff/switch mo
... couldn't create
mix 19 0 12 0 (text->hip~) connection failed
mix 19 1 13 0 (text->hip~) connection failed
mix 20 0 12 0 (text->hip~) connection failed
mix 20 1 13 0 (text->hip~) connection failed
mix 21 0 12 0 (text->hip~) connection failed
mix 21 1 13 0 (text->hip~) connection failed
mix 22 0 12 0 (text->hip~) connection failed
mix 22 1 13 0 (text->hip~) connection failed
mix 23 0 33 1 (*~->text) connection failed
mix 24 0 33 0 (*~->text) connection failed
mix 25 0 19 0 (*~->text) connection failed
mix 26 0 19 1 (*~->text) connection failed
mix 27 0 20 0 (*~->text) connection failed
mix 28 0 20 1 (*~->text) connection failed
mix 29 0 21 0 (*~->text) connection failed
mix 30 0 21 1 (*~->text) connection failed
mix 31 0 22 0 (*~->text) connection failed
mix 32 0 22 1 (*~->text) connection failed
mix 33 0 12 0 (text->hip~) connection failed
mix 33 1 13 0 (text->hip~) connection failed