Files
labmagic/README.md

10 KiB

Labmagic

Aplicación sencilla de Windows para controlar una Blackmagic Pocket Cinema Camera por Bluetooth LE: ver si está conectada, disparar el autofoco, mover foco y diafragma, grabar, y ajustar ISO, obturador, balance de blancos, LUT y otras funciones.

Probada el 8 de octubre de 2026 con la cámara A:4A5A3B39 (dirección 90:FD:9F:C4:AD:B2), protocolo Blackmagic 0.1.0, Windows 11 y Python 3.12.

Cómo arrancarla

  • En este PC: icono «Labmagic» en el escritorio y en el menú Inicio. Abre la app sin consola (usa el pythonw.exe firmado de Python 3.12, que Windows sí deja ejecutar).
  • En otro PC: dist\Labmagic.exe (un solo archivo, sin consola, no necesita Python). Tarda 2 o 3 segundos en abrir: no hace falta pulsar dos veces.
  • Desde el código: doble clic en Iniciar Labmagic.bat (o py -3.12 app.py). Requiere Python 3.12 y bleak 3.x (py -3.12 -m pip install -r requirements.txt).
  • Recompilar el .exe tras cambiar el código: doble clic en Compilar exe.bat.

Por qué el .exe no abre en este PC

Este equipo tiene activado Smart App Control de Windows 11. Bloquea cualquier .exe sin firma digital con reputación, y cada compilación de PyInstaller es un archivo nuevo sin firma, así que lo bloquea («Una directiva de Control de aplicaciones bloqueó este archivo», evento 3118 de CodeIntegrity). Por eso aquí la app se lanza con los accesos directos a pythonw.exe. Opciones para que el .exe funcione en este PC: firmarlo con un certificado de firma de código reconocido, o desactivar Smart App Control (Seguridad de Windows > Control de aplicaciones y navegador; una vez apagado no se puede volver a encender sin reinstalar Windows). En un PC sin Smart App Control el .exe abre sin más.

Probado el 8 de octubre de 2026 con el .exe y la cámara real: conexión, autofoco, barras de color, grabar y parar (la cámara confirma cada orden y el timecode corre durante la grabación).

Panel dentro de OBS

Labmagic sirve una versión web de su panel mini en http://127.0.0.1:8790/ (archivos obs_dock.py y dock.html). OBS Studio 28 o superior la puede acoplar como un dock más con Docks → Custom Browser Docks (nombre Labmagic, esa URL). El panel habla con la app, que es quien tiene la conexión Bluetooth (la cámara solo admite un proceso a la vez): si Labmagic no está abierta, el dock lo avisa y se conecta solo en cuanto la abres.

  • Tiene lo mismo que la vista mini: HUD con timecode y celdas FPS · SHUTTER · IRIS · ISO · WB · TINT (pulsables, abren una hoja inferior estilo cámara), AF, PEAK (clic derecho: color), zebra, falso color, AF auto, foco e iris con pasos, REC, línea de formato y «abrir Labmagic».
  • Teclado con el dock enfocado: espacio = AF, ← → = foco (Mayús = pasos grandes).
  • En AJUSTES → Panel para OBS se apaga o enciende, se copia la URL y el botón Añadir a OBS lo registra en OBS (con OBS cerrado; guarda copia user.ini.labmagic.bak). Si el puerto 8790 está ocupado la app prueba los siguientes y guarda el elegido en config.json (obs_port).

Uso

  1. Emparejar la cámara con el botón Emparejar (PIN) de la app: quita el emparejamiento viejo de Windows, pide uno nuevo y abre una ventana para escribir el PIN de 6 cifras que la cámara muestra en pantalla (en la cámara, Bluetooth activado en Ajustes > Setup). Hay que repetirlo si la cámara olvida el PC (la app lo avisa: «acceso denegado al servicio de control» y el estado dice «Hace falta emparejar»). También vale emparejar desde Configuración de Windows > Bluetooth y dispositivos.
  2. Abrir la app. Busca sola las cámaras emparejadas y las que se anuncian y, con Conectar al abrir activado (por defecto), conecta sola con la cámara de la última vez. Si no, elige la de la lista y pulsa Conectar. El punto verde y la línea de estado indican conexión, cámara encendida, versión de protocolo y alimentación.
  3. HUD superior, como la pantalla de la Pocket: timecode en grande (se pone rojo y parpadea un punto al grabar) y las celdas FPS · SHUTTER · IRIS · ISO · WB · TINT con los valores actuales. Pulsar una celda abre un menú rápido: ángulos y velocidades de obturador, f/ del diafragma (y Auto iris), ISO, Kelvin (y Auto WB) y tinte.
  4. Organización como la cámara, en pestañas: PRINCIPAL (enfoque, diafragma y zoom, ISO / obturador / balance de blancos, REC), GRABACIÓN (formato, códec, rango dinámico, autoexposición), MONITOR (ayudas y overlays por salida, LUT, barras, reset de color) y AJUSTES (cámara, emparejar, conectar al abrir, apagar, registro). El HUD queda siempre arriba.
  5. Controles:
    • Enfoque: botón grande de autofoco (también con la barra espaciadora); junto a él el conmutador PEAKING (focus assist con líneas de color, color elegible: rojo, verde, azul, blanco o negro) para ver dónde está enfocando; AF automático cada N segundos para mantener enfocado a alguien sin tocar nada; deslizador de foco manual y pasos ◀ ▶. Con objetivos EF por adaptador (24-105 con el Metabones 0.64x) hace falta el firmware del adaptador al día (Metabones App, V5.10 en oct-2026): con el firmware viejo la cámara ignoraba AF y foco manual; con el nuevo, medido el 9-oct-2026 sobre el HDMI, el AF, las posiciones absolutas (0,05 / 0,5 / 0,95) y los pasos relativos (±0,2) mueven el objetivo. El objetivo EF sigue sin informar de su posición: la app muestra la última posición enviada y tras un AF la da por desconocida («—») hasta que se mueve el deslizador. Flechas ← → = pasos de 0,01, con Mayús = 0,05; barra espaciadora = AF. Verificación del AF (9-oct-2026): el paquete que envía la app es byte a byte el del ejemplo oficial del manual (ff 04 00 00 00 01 00 00). Midiendo la nitidez del HDMI en OBS a 10 muestras/s, las barras de color y el auto iris cambian la imagen al instante, pero tras el AF el objetivo no se mueve nada (ni barrido ni cambio). Es decir, la cámara recibe la orden y el objetivo no la ejecuta. Lista de comprobación: (1) interruptor del objetivo en AF; (2) pulsar el botón Focus físico de la cámara: si tampoco enfoca, el adaptador no da AF con ese objetivo (Metabones XL 0.64x necesita firmware 3.x actualizado con la app de Metabones por USB; Viltrox EF-M2 igual); (3) si el botón físico enfoca y la app no, avisar para investigar.
    • Diafragma: auto iris, deslizador 0 (abierto) a 1 (cerrado) y pasos; se muestra el f/ real que informa la cámara.
    • Zoom: deslizador para objetivos motorizados; la focal en mm se muestra siempre.
    • Grabación: botón GRABAR / PARAR, estado de transporte, formato y códec. Debajo, el panel Formato de grabación: códec (BRAW Q0/Q1/Q3/Q5/3:1/5:1/8:1/12:1, ProRes HQ/422/LT/Proxy), resolución (DCI 4K, 4096×1720, UHD, 2.6K, HD), fotogramas (23.98 a 60), fotogramas del sensor para off-speed y ventana del sensor; Aplicar formato envía códec (10.0) y formato (1.9). La cámara responde con el formato real que ha aceptado y el panel se actualiza con él.
    • Monitor y utilidades: selector Aplicar en (HDMI, pantalla LCD o ambas; por defecto HDMI porque la cámara va remota). Las ayudas (zebra, peaking, falso color) y los overlays (texto de estado, guías de encuadre, señal limpia) se envían con el campo «pantallas destino» del protocolo (4.1 y 3.0), así que afectan solo a la salida elegida.
    • Exposición y color: ISO, ángulo o velocidad de obturador, balance de blancos (Kelvin y tinte, presets y Auto WB), modo de autoexposición, rango dinámico y LUT de monitor.
    • Monitor y utilidades: zebra, peaking, falso color, barras de color, reset de corrección de color y apagar la cámara (con confirmación).
    • Registro: todo lo que se envía y lo que la cámara responde, con nombres legibles.

Detalles que conviene saber

  • Al conectar, la app pide a la cámara toda su configuración. La cámara solo la envía sola cuando el enlace Bluetooth es nuevo, pero escribir el valor 0x21 (Camera Ready sin «Initial Payload Received») en la característica Camera Status hace que la reenvíe siempre. Así el HUD (FPS, obturador, iris, ISO, WB, tinte), el formato, el códec y el objetivo se rellenan en unos 6 segundos tras cada conexión, aunque Windows reutilice un enlace ya abierto.
  • En este firmware la operación «offset» del protocolo se comporta como asignación absoluta, por eso los pasos ◀ ▶ del diafragma solo se activan cuando se conoce el valor actual.
  • Las ayudas de monitor (zebra, peaking, falso color) y el apagado por Bluetooth dependen del firmware; si no cambian nada en la cámara es que no las acepta por este canal.
  • Los nombres de las variantes de códec (BRAW 5:1, ProRes HQ, etc.) siguen la tabla del Blackmagic Camera Control Developer Guide; si alguno no coincide con la cámara, es solo etiqueta.
  • config.json guarda la última cámara usada y el tamaño de la ventana.
  • Solo puede haber una copia abierta: si se vuelve a lanzar, trae al frente la que ya está.
  • Estética: negro y gris oscuro como la pantalla de la cámara, barra de título oscura. Icono: cuadrado rojo con bordes redondeados, borde blanco y el «lab» del wordmark real de Labstream más un punto blanco (opción 2 de iconos/opciones.png; make_icon.py genera las cuatro opciones a partir de 0_Modelo Propuestas/Logos/Logo Blanco.png; para cambiarla, ajusta OPCION_POR_DEFECTO y vuelve a ejecutarlo).
  • El «acceso denegado al servicio de control» al conectar casi siempre significa que otra aplicación de este PC ya está conectada a la cámara (otra copia de Labmagic, un script o la ventana de Configuración > Bluetooth); solo si no es eso hay que volver a emparejar.

Archivos

  • app.py: ventana (Tkinter).
  • bmpcc_ble.py: protocolo Blackmagic Camera Control sobre BLE (bleak), búsqueda de cámaras emparejadas y anunciadas, envío y decodificación de parámetros.
  • Iniciar Labmagic.bat: lanzador.
  • requirements.txt: dependencias de Python.