Paso 21: Usando PureData u otro Software para el Control de la Saiko5
Formato del paquete de OSC
Funcionalidad básica se puede acceder fácilmente mediante el uso de la biblioteca de liblo, disponible para python, C, PureData y otros idiomas. Ejemplo de código de secuencias de comandos de python básico para el control de luces puede encontrarse en el archivo saiko5 disponible en la sección de descargas, en la subcarpeta/saiko5 software/scripts /
Ejemplo básico de código
liblo de importación
Dirección = liblo. Dirección ("192.168.1.222", "2222")
liblo.Send (dirección, '/ conjunto de luz de colores', ('f', 0, 8), ('f', 0,0), ('f', 0.2))
En este ejemplo de código, que es todo lo que es necesaria para controlar un aparato de Saiko5, hay tres líneas.
1. importación liblo
Esto importa la biblioteca de liblo. Necesita tener python-liblo instalada para que esta función que se active.
2. Dirección = liblo. Dirección ("192.168.1.222", "2222")
Esto crea un liblo dirección objeto, que puede utilizarse para enviar paquetes de OSC a la luz en la dirección IP. Las luces están programadas por defecto para escuchar en el puerto 2222 y el equipo en 192.168.1.2. Sin embargo, estos valores pueden cambiarse fácilmente por subir una versión modificada del firmware. Tenga en cuenta que si usted tiene múltiples luces, usted necesitará enviar los comandos a todas luces para hacer actualizaciones.
3. liblo.send(address, '/light/color/set', ('f', 0.8), ('f', 0,0), ('f', 0.2))
Esto crea y envía un paquete OSC. La especificación de que las luces están esperando es la ruta '/ luz/color/establecer', seguido de tres flotadores, que corresponden al brillo RGB entre 0 y 1.
Tenga en cuenta que esto está configurado para enviar comandos como datos RGB. Este no es el espacio preferido para tratar con iluminación LED, y recomendamos el uso de HSI (tonalidad, saturación, intensidad) para la representación local de color claro. El código está disponible para la conversión de HSI a RGB en python en el repositorio de software saiko5 en /saiko5/software/puredata/server/HSI2RGB.py
Tonalidad es una manera intuitiva de pensar en "color", con valores que van entre 0 y 360 grados, donde 0 grados y 360 grados son rojos, y la tonalidad es mayor, que lo atraviesa primero amarillo, luego verde, luego cyan, luego azul, luego magenta antes de volver al rojo. Esta representación permite la codificación directa de cambios de color constante.
Saturación es una manera intuitiva de pensar en la "blancura" de color, con una saturación de 1,0 significado tan pura como sea posible de un color y una saturación de blanco 0.0 de significado independientemente de la tonalidad. El uso de la saturación de los valores de menos de 1.0 permite la fácil visualización de colores pastel.
La intensidad es la representación natural de la luminosidad de una lámpara LED. Intensidad se define como la suma de los canales rojos, verdes y azules, entre 0.0 y 1.0. Esto es diferente que el "valor" en VHS, donde el valor se define como el valor máximo entre los canales rojos, verdes y azules. Aunque el uso de la intensidad en lugar de valor limita el máximo brillo de la luz al brillo de un solo canal solo, creemos que se trata de una manera más natural de utilizar un color cambio de lámpara. Por ejemplo, en espacio de HSI, un valor HSI, si la intensidad es constante y el color se cambia, la energía total, siendo puesta hacia fuera por la luz permanece constante. Sin embargo, en VHS espacio de color, si el valor es constante y el color se cambia, el poder ser puesto hacia fuera por los cambios de lámpara.
Esto es especialmente evidente en el ejemplo de pasar de rojo a amarillo (o cualquier color secundario primario). En el caso de rojo, un valor HSV de (0, 1, 1) es equivalente a un valor RGB (1, 0, 0). Este es el mismo resultado que utilizar el valor HSI (0, 1, 1). Sin embargo, para el amarillo, el valor HSV (60, 1, 1) resultaría en un valor RGB (1, 1, 0) mientras que un HSI valor (60, 1, 1) resultaría en un valor RGB de (0.5, 0.5, 0). En el caso de valor constante, la cantidad de luz que puso hacia fuera es mayor para el amarillo que rojo por un factor de dos, mientras que en el caso de intensidad constante, la cantidad de luz que se apagó no ha cambiado.
El Software de Saiko5
El Software de Saiko5 se desarrolló principalmente en Ubuntu 10.04. Le recomendamos para estar seguro de que su configuración funcione usted descarga y uso de nuestra imagen de LiveCD que proporcionará un ambiente básico de Ubuntu con nuestro software preinstalado y configurado. Sin embargo, entendemos que esto no es una situación ideal para todos los usuarios, y por lo tanto software también se proporciona en nuestra página de descargas. El repositorio de saiko5 se divide en dos carpetas principales, /saiko5/firmware/y /saiko5/software /. Esta documentación será discutir el software contenido en el directorio/software//saiko5.
interfaz gráfica de usuario
La carpeta gui contiene una interfaz gráfica de usuario escrita en python con wxpython para widgets. Este software permite el control básico de las luminarias mediante un punto y haga clic en interfaz, como eligiendo un color HSI, recogiendo direcciones IP para enviar los comandos a y haciendo del ciclo modos básicos de color. Para utilizar este software, abrir el saikoControlGui.py en python.
secuencias de comandos
La carpeta scripts contiene código de ejemplo básico para el control de las luminarias con liblo en python. Cuenta que con estas se requiere configuración manual de las direcciones IP de las luces que intenta control.
* colorcycle.py--este es un color básico ciclo programa mediante saturación de 100% y una tasa constante de cambio.
* setpurple.py--este es el script muy básico mostrado arriba en tres líneas que se establece el color de la luz elegida en nuestra sombra favorita de púrpura.
* udpstresstest.py--hará hincapié en esta secuencia de comandos prueba tu red y las luces mediante el envío de paquetes udp a las luces. Puede utilizar esto para determinar cómo de estable es su red inalámbrica.
puredata
La carpeta de puredata contiene código fuente para hacer análisis de audio con puredata un servidor adjunto de python para la comunicación real con las luminarias Saiko5. Este es el software que se utiliza para hacer los videos de respuesta de la música en la página. La captura de pantalla muestra la PureData + servidor de Python se utiliza activamente para el control de la lámpara de Saiko5.
* analyzer.pd--este es el analizador de puredata. Requiere pd-extended, así como pd-aubio (la biblioteca de análisis de música aubio) a la función.
* server/HSI2RGB.py - este script en python convierte valores de HSI a RGB.
* server/lightconfiguration.py - este script en python contiene la información de configuración para los accesorios de Saiko5 está bajo control.
* server/lightevents.py - este script en python tiene el código básico para el servidor de python. Este es el código que generalmente será modificado para agregar nueva funcionalidad al servidor.
* server/lightserver.py--este es el script en python general que debe estar en ejecución para el software de analyzer.pd para funcionar. Está diseñado para detectar paquetes OSC en Puerto 2223, y esos paquetes son proporcionados por el software puredata.