Cómo utilicé herramientas de código abierto para crear un sistema de iluminación de teatro

¿Qué estamos haciendo también por la familia? A veces me pregunto por qué me hago esto a mí mismo, esta no es la primera vez que mi perfeccionismo me obliga a hacer mucho más trabajo del que se requería originalmente.

Mi suegro se acercó a mí hace poco más de un año porque se estaba realizando una producción en la iglesia a la que asistía. Para hacerlo más grande y mejor que el año anterior, compró algunas linternas y una mesa de iluminación y esperaba que yo pudiera manejarlas. "¡Por supuesto!" Yo dije. - ¿Cuan dificil puede ser? Luego describió su visión en una de las escenas: La Gran Batalla con los Flashers; ya sabes, realmente emocionante! "Está bien", dije, e involuntariamente acepté.

Por primera vez, me senté a trabajar en la mesa de iluminación que compró: una DMX-512 pequeña, baja y multicanal. Tenía capacidad para cientos de escenas, fundidos y hasta una buena rueda para hacer jogging. ¡Yo estaba emocionado! Aunque el manual obviamente era una mala traducción, y la mesa requería presionar un botón real para hacer algo, perseveré. Creé una escena similar a una batalla, pensando que sería prudente comenzar con la parte que encontraba más desafiante. Se lo mostré a mi suegro y vi su cara decepcionada. "Es sólo una prueba", le dije a toda prisa. "La cosa real, por supuesto, se verá mucho mejor". Él se marchó. si

Empecé a pensar en los problemas de la escena. No era lo suficientemente aleatorio... tenía que parecer más aleatorio. Decidí que si podía crear suficientes escenas en las que la luz se moviera a lo largo de ciertas trayectorias, podría cambiar rápidamente entre ellas usando el atenuador incorporado y todo estaría bien. ¿En serio? Obtener información sobre la escena fue difícil. Fue en ese momento que puse en marcha mi primera herramienta de código abierto: Licuadora!!

Usé las animaciones de curvas en Blender para jugar con las luces en la escena y crear una apariencia y sensación de batalla convincentes. Luego escribí algunos Pitón scripts dentro de Blender para exportar movimientos a CSV, dándome datos de columna para cada escena, que luego podría programar en la tabla. Finalmente sentí que había llegado a alguna parte.

Si no hubiera sido por el hecho de que solo programar esta cosa fue suficiente para causar estrés (además de la sensación de que me estaba lastimando repetidamente) y que un control deslizante debería controlar el período de tiempo de 0.2 s a 30 años (), el los resultados fueron menos que estelares. Simplemente no se veía bien. . Si tan solo tuviera un control total sobre él, pensé. Si tan solo pudiera programar estas luces usando Python.

Mi mente flotó, y una visión de un chico relajándose en una tumbona en la playa, programando la iluminación DMX-512 en Python, pasó flotando. Es tan feliz, pensé. Tengo que tener lo que él tiene.

Hablé con mi cuñado, un compañero entusiasta de la tecnología que, debo agregar, ya se ha dedicado a la reducción de sonido. Decidimos que comprar una interfaz USB DMX-512 sería un accesorio útil. Compramos uno probablemente por la mitad del precio de la mesa y comencé a explorar las opciones de control DMX-512 en Linux. Encontré algunas aplicaciones, pero la mayoría de ellas parecían estar basadas en escenas estáticas desde el principio. También tenía la leve sensación de que este proyecto era algo que se expandiría, crecería y sufriría un volumen creciente.

Al no encontrar una aplicación que satisficiera mis necesidades tanto en términos de accesibilidad en mi sistema operativo como en términos de funcionalidad, decidí escribir la mía. encontré Arquitectura de iluminación abierta (OLA) y después de modificar un poco los módulos de la lista negra, obtuve un pequeño script de Python que enviaba datos a la linterna y la encendía y apagaba. Yo estaba muy emocionado. Ahora solo necesitaba escribir un sistema completo para lograr un sueño.

Empecé pequeño, dado lo que era absolutamente necesario. Quería un formato común para almacenar escenas. Una cosa que me molestó en la mesa de iluminación fue la falta de respaldo. Si el escritorio hubiera sufrido algún mal funcionamiento, todas mis preciosas escenas podrían haber sido destruidas. Se desperdician horas y horas de trabajo potencial. No. No es una opción. Elegí el formato abierto ЯМЛ para mis escenas. Lo usé mucho en mi trabajo diario, y parecía encajar a la perfección.

Muy pronto tuve la oportunidad de cambiar inteligentemente entre las dos escenas, interpolando el valor de cada canal para cada luz. Esto significaba que si el brillo de la luz del canal 1 estaba al 50 % en la escena 1 y al 75 % en la escena 2, el software aumentaría linealmente de uno a otro durante un período de tiempo. ¡Estupendo!

Luego comencé a agregar modificadores a los feeds. Eso fue lo que vi en Blender. Los canales de datos animados (flexión del brazo, transmisión del eje X) pueden tener fotogramas clave, pero también pueden tener modificadores que se aplican al canal para crear cosas como ruido u otros efectos. Agregué algunos modificadores básicos a mi proyecto, y pronto tuve cos / sin, lo que dio luz a los canales de inclinación / panorámica en un movimiento circular. Luego agregué modificadores de recorrido usando curvas spline para permitir que el canal hiciera una transición suave a diferentes valores en diferentes momentos. Todo avanzaba a paso firme.

Trabajar con la luz mientras no estaba en la iglesia fue difícil. Era difícil imaginar cómo se veían las escenas, así que aproveché Blender nuevamente, agregué una API HTTP simple a la aplicación y le pedí a Blender que consultara y actualizara regularmente las luces que configuré en la escena. Me permitió mostrar mi cobertura y ver lo que estaba pasando.

https://www.youtube.com/watch?v=hN5uqhQ3XsY

Demostración de visualización temprana

Se agregó una máquina de humo al conjunto. - ¿También puedes controlarlo con tu cosa? Me preguntaron. "Sí, supongo", respondí. Debido a la interfaz de usuario muy limpia y minimalista, solo había controles de escenario, sin canales de atenuación para la luz. Así que controlar el humo significaba hornear algunas joyas en la escena. El humo no solo es un producto no gratuito, sino que los artistas tienden a estar muy molestos cuando los inundas de humo durante su actuación, todo en nombre de las pruebas. Podría haber usado uno de los modificadores de puntos de ruta, pero realmente no quería que funcionara cada vez que ingresaba a esa escena.

Necesitaba otra forma de controlar esto. Mi mente se preguntó. "¿No sería genial si pudiera usar un WiiMote para eso?" Entonces me golpeó. "¿Por qué diablos no puedo?" me volví hacia cwiid biblioteca, tomó un controlador WiiMote que languidecía en la sala de estar y lo usó a su favor. Pronto apareció un modificador de WiiMote en el canal del coche de humo, lo que me permitió levantar el controlador para bañar a los artistas con una espesa nube de humo.

https://www.youtube.com/watch?v=84W6FdrJA-s

La altura del regulador está relacionada con el brillo general de las luces 1,2,3,4. El colapso el controlador está relacionado con la cantidad de azul en los dispositivos 1.4, así como con la inclinación de las luces 2 y 4.

Fascinado, añadí dinámica GTK Genere una interfaz de usuario de los controles deslizantes del canal desde la configuración de YAML, lo que significa que puedo cambiar a diferentes canales y anularlos. Es bueno que lo haya hecho, porque los artistas nunca parecen usar el mismo micrófono todas las noches. Lección aprendida. Ahora podía reaccionar a estos cambios y subir y apagar manualmente las luces, como en la mesa.

Tres actuaciones iban y venían. La escena del murciélago, llena de pecado/guadaña y un nuevo modificador aleatorio, se veía espectacular. Combinado con la grabación de audio que armó mi cuñado, nos sentimos bastante bien.

Demostración de escena de batalla

Victoria por delante un año después. Mañana tengo una presentación y mi cuñado me acaba de preguntar: "¿Hay alguna manera de hacer que su sistema reproduzca sonidos para que no tengamos que ejecutarlos juntos?" "Por supuesto", respondo. Ahora se puede, gracias GStreamer. También puede controlar el canal en función de la amplitud de la onda, lo que me permite sincronizar explosiones en una escena de batalla con movimientos de iluminación. Gracias SciPy!!

Entonces, ¿cuál es la comida para llevar aquí? Sin el código abierto nunca hubiera terminado este proyecto. Necesitaría escribir o comprar controladores WiiMote, controladores DMX-512, backends para enrutamiento y administración DMX, software de visualización, estándares de configuración, generación de interfaz de usuario. El código abierto me ha dado tres cosas, todas las cuales son invaluables.

  1. Me dio acceso a todas estas cosas para poder concentrarme en escribir el pegamento que las unió.
  2. Esto me ha dado la oportunidad de actualizar y agregar constantemente a mi frankenproject, que seguramente algún día será reescrito y lanzado.
  3. Eso le agrada a mi suegro... por ahora.

Sin código abierto, estaría atrapado en un lío que se repite debido a lesiones estresantes, murmurando sobre la necesidad de mantener presionado el botón de escena durante tres segundos antes de presionar una combinación de un botón de programa y un botón de borrado.

Creo que el código abierto me salvó la vida y me ha dado un buen viaje hasta ahora.

Artículos de interés

Subir