DX – PY – Collect_Media

[BETA] Media Collector for Isadora

DX – PY – Collect_Media is a User Actor that automatically copies all media referenced in your Isadora project into a clean, organized Media/ folder placed next to your .izz file.
This makes it easy to archive projects, prepare them for touring, package them for collaborators, or simply consolidate scattered media from multiple drives.

The tool reads Isadora’s Generate Media Report file and recreates your media structure locally, grouping files into folders that correspond to each BIN in your project.


How To Use

  1. Open your project in Isadora.

  2. Choose Help → Generate Media Report…

  3. Save the report next to your Isadora (.izz) file using the default name:
    media-report.txt

  4. Insert the TT_PY_Collect-Media User Actor into your scene.

  5. If needed, set the project_dir or report_name inputs (defaults usually work).

  6. Trigger run_trigger to begin the media collection process.

  7. When finished, you will find a new Media/ folder beside your .izz file.
    Inside it, the actor creates one subfolder per BIN (e.g., Media/Video Files/).

  8. If any files fail to copy, check failed_media_relocations.txt in the project folder for details.

That’s it — your media is now consolidated and ready to travel.


What This Actor Does

  • Reads the Isadora media-report.txt and extracts all media paths

  • Creates a clean folder structure mirroring your BINs

  • Copies each referenced media file into the appropriate subfolder

  • Logs missing or inaccessible files

  • Supports 3DS model files, detecting referenced textures and copying those alongside the model whenever possible

  • Safe to run multiple times — existing files are not overwritten

  • Works on both Windows and macOS


Inputs

  • project_dir
    Folder containing the .izz project. Leave empty to auto-detect.

  • report_name
    The filename of the media report (media-report.txt by default).

  • run_trigger
    Trigger (1) to start collecting media.


Outputs

  • status
    Summary of how many files were copied and how many failed.

  • last_error
    The most recent error encountered (if any).

Note: Open the Monitor window for detailed output, listing all copied files, linked texture images, errors, and more.


Best Practices

  • Save your Isadora project under a new filename before relinking.
    When you reopen the project after running this tool, Isadora will re-link media to the newly created local files.
    This means once saved the previous links will be lost. 
    Keeping a backup ensures you can revert to the original external filepaths if needed.

  • Keep the original media-report.txt.
    It contains the full list of original filepaths and may be needed to restore or verify links. Renaming this file is a good idea.


Notes

  • Non-destructive: existing files are never overwritten

  • Resilient: failures never crash the actor — all errors are logged

  • Ideal for archiving, touring, or preparing a project handoff


What this Utility does NOT collect.

  • This tool ONLY collect media in the media bins. And it will collect all media in the Bins, it does NOT know if a file is unused in your project.

  • This tool does not collect external scripts (Python, Javascript, GLSL). It does not collect data array files, text reader files, SRT files or any other external file Isadora may for use. It is best practice to create a local project folder when using external files. One level next to the Isadora (.izz) project file is ideal. Example: Isadora linked to external Python files via a ‘python_modules’ folder next to the project file. This utility, creates a ‘Media’ folder next to the Isadora project file, and second level folders matching each BINs name (this is the depth Isadora searches for media).


Do you require ADVANCED linked file collection?

  • If you have many linked files in your project. Maybe they are Python files, OpenNI tracking files, Data Array sources, Plain text and more linked from different locations of your system, hidden in numerous Isadora scenes, inside User Actors etc..

  • You might want to try this new BETA toolset. Linked File Tools
    This set of tools will search your Isadora file for all linked files, and provide you a report.
    You can automatically collect the located files, and copy them next to your project file (And MORE!)

DX – PY – Opener and Closer

Sidecar Application Launcher & Closer

This example demonstrates how to reliably open and close external applications from within Isadora using two Pythoner-based User Actors:

  • DX Sidecar Opener — launches an external program (EXE or APP), returns process details, and re-focuses Isadora.

  • DX Sidecar Closer — terminates that same program safely, using a precise cross-platform “fingerprint.”

This provides a clean, repeatable way to integrate sidecar tools such as Processing sketches, OpenFrameworks apps, Python utilities, or other helper programs into an Isadora workflow.


What This Example Includes

DX PY Opener

  • Uses a Isadora Globals (with an ID tag) to save the fingerprint from the opening process

DX PY Closer

  • Uses the same Globals ID to receive the fingerprint (PID + create time + bundle ID/PFN) to close the same instance of the app that was opened — even if another instance of that program is already running.

Important Notes for macOS Users

Automation Permissions Required

On macOS, the first time you run this example:

🔒 The OS will prompt you to give Isadora permission to control other applications.

You must approve this in System Settings → Privacy & Security → Automation.

This permission allows the Pythoner actor to:

  • Bring Isadora back into focus

  • Minimize or manage external app windows

  • Politely request an app to quit via AppleScript

If you deny permission, the Opener/Closer may not work properly.


Why IDs and Process “Fingerprints” Matter

Applications can behave unpredictably:

  • Some spawn helper processes

  • Some relaunch in the background

  • Some create multiple windows or sub-instances

  • Some may reuse a PID after closing

To handle this safely, the scripts combine:

  1. PID

  2. Creation Time

  3. Bundle ID / Package Family Name (platform dependent)

  4. Executable path normalization

Together, these form a stable identity that ensures the Closer actor terminates the exact same process the Opener launched — not a different instance.


Limitations to Be Aware Of

This method is robust, but some types of apps may behave inconsistently:

Applications with multiple windows

Some macOS apps relaunch helper processes or switch the “frontmost process,” which may change the PID unexpectedly.

UWP/MSIX apps on Windows

Some modern Windows apps (like Calculator or Photos) spawn short-lived launcher processes that immediately hand off control to another PID.
In these cases, PFN detection works when possible, but some apps still cannot be closed reliably.

Apps that block termination

If an app ignores polite quit requests, forced termination may be required.

Apps requiring special permissions

macOS sandboxed apps may offer limited scriptability.

For typical sidecar tools (Processing, OpenFrameworks, Max, Python EXEs), behavior is consistent.

Open file with application

This project does not yet include the ability to open a specific file with a host application. The target application you wish to open must be an executable file. This is perfectly suited to tools such as my Kinect2Share (which I have tested with on Windows). Projects created in environments like processing.org and Max Msp will need to have the project exported as an executable.


How to Use This Example

  1. To get started you will need to setup your Python environment. Scene one of the project includes an Easy Setup tool that should get you setup in a minute or two.

  2. This project must reside in a folder as it was distributed. The file structure of this project is important.

  3. Once your environment is setup, you will need to close Isadora, and re-open the project to be able to use the Opener and Closer user actors.

Why This Is Useful

This approach enables advanced cross-application workflows such as:

  • Launching a Processing or OpenFrameworks visual generator from Isadora

  • Managing multi-tool pipelines for LED control, tracking, or visuals

  • Remote-launching helper apps during live shows or installations

  • Ensuring sidecar apps start minimized and never steal focus

DX Python Tools for Isadora

DX Python Tools for Isadora

Overview

DX Python Tools is a collection of user actors for Isadora that enhances Pythoner workflow and virtual environment management. These tools are designed to complement Isadora’s built-in Python capabilities while providing advanced features for developers who integrate external code editors like PyCharm into their workflow. These actors work with the default Python environment provided with Pythoner, and therefore are extremely easy to get started with.

User Actors

1. DX – PY – Virtual Environment Manager

This actor provides essential tools for managing Python virtual environments within your Isadora projects:

Features:

1. Create VENV from requirements.txt

  • Creates a new virtual environment using a requirements.txt file
  • Validates environment locations and package dependencies
  • Provides clear status messages during creation process
  • Supports both Windows and macOS

2. Create requirements.txt from Active VENV

  • Generates a requirements.txt file based on the currently active virtual environment
  • Automatically excludes system packages like pip and virtualenv
  • Places the file in your project directory for easy access
  • Ideal for sharing project dependencies with collaborators

3. Update ActiveVirtualEnvironmentPath.txt

  • Updates the system path to your active Python virtual environment
  • Most useful when creating a catch all VENV for general development

4. Validate requirements.txt

  • Verifies that all packages in your requirements.txt file are available on PyPI
  • Checks if compatible wheels exist for your platform
  • Warns about missing or incompatible packages
  • Requires internet access (uses PyPI web API)

2. DX – PY – Helpers

This actor provides utility functions to enhance your Python development workflow:

Features:

1. System Path & Configuration

  • Provides quick access to important system paths
  • Shows configuration information for your Python environment
  • Displays status of virtual environment settings

2. Folder & File Management

  • Opens important folder locations with a single click
  • Creates required directories for your project
  • Browse and select folders using native OS dialogs

3. VENV Management Tools

  • Install or uninstall modules from the active virtual environment
  • Quick creation of local virtual environments for your project

4. Cache Management

  • Clear Python module cache (critical when working with link files and sub-files)
  • Ensures changes to Python files are immediately recognized

Beta Release Notes

  • These tools are in BETA status, feedback is encouraged. Please post to the user forum.
  • Both actors work on Windows and macOS platforms
  • Some functions may require administrative privileges to modify system files
  • Designed to complement the existing Isadora Python workflow

System Requirements

  • Isadora 4 with Pythoner plugin
  • Internet connection for package validation features

Getting Started

  1. Place either or both User Actors in your Isadora project.
    Note: ‘DX – PY – Helpers’ is useful in all Isadora projects using Pythoner
  2. The User Actors have many help comments included. Ensure the Information Panel is open in Isadora, so you can read the help when you rollover: the actors, the inputs, and the outputs.
  3. Open the Monitor Window for additional details.

Recommended Workflow

The DX Python Tools are especially powerful when used with external code editors like PyCharm, VS Code and others.
The recommended workflow is:

  1. Create a folder on your system for your Isadora project.
  2. Create a new Isadora File and save it into your new folder.
  3. Use this folder as the home of your project, all related files now go into this folder. (In Pycharm you will open this folder as a project)
  4. Create your VENV (virtual environment)
    – If you have a requirements.txt file, set up your virtual environment using the VENV Manager (action #1)
    – If not use ‘Create VENV in virtual_env’ to create a local virtual environment for your project
  5. Use the provided tools to add new modules as needed. Once you have the environment setup as you need it, use the VENV Manager (action #2) to record its configuration
  6. Use the tools provided to create a ‘python_modules’ folder, and save all your python files there.
  7. In Pythoner use the ‘ext file’ input to link to your external files. eg: python_modules/python-file.py
  8. Edit your Python code in your preferred external editor.
  9. Use “if __name__ == ‘__main__’:” in your python files to allow you to run/debug your code in your external editor.
  10. Use the helper tools to manage paths and configurations
  11. Run your code directly in Isadora to see the results
  12. Clear the Python module cache when changes aren’t being detected (this will happen your external files are loading additional files that you are editing. Isadora can only sense changes to files connected directly via the ‘ext file’ input of the Pythoner actor.

This release provides a foundation for more streamlined Python development within Isadora projects, with a focus on professional workflows that incorporate external development tools.

Change Log

version 1.0.3

  • combined VENV creation scripts
  • fixed issue with python paths on clean system
  • fixed issue with pythonXXX.zip and DLLs on Windows
  • fixed symlink issue on Mac
  • numerous other housekeeping tasks

DX – PY – Mediapipe – QuickStart

MediaPipe Pose Tracking for Isadora – Quickstart Example

This example project demonstrates how to integrate MediaPipe Pose tracking into Isadora using the Pythoner actor.
It provides a simple, self-contained setup for real-time full-body tracking with nothing more than your webcam — no depth camera or external hardware required.

Using Python’s MediaPipe library, the patch captures 2D pose landmarks from the live video feed and sends them into Isadora as structured data you can use for creative control, visual interaction, or motion-driven effects.


What’s Included

  • Pythoner-based Pose Tracker
    Captures all 33 MediaPipe Pose landmarks (head, limbs, hands, and torso) in real time.

  • OpenNI-Compatible Conversion Tools
    Converts MediaPipe’s full landmark set into the standard 15-joint OpenNI skeleton used by Isadora’s built-in Skeleton actors.

  • Skeleton JSON Wrapping
    Outputs properly formatted data for use with the Skeleton From JSON actor, allowing seamless integration with Isadora’s native skeleton system.

  • Automatic Environment Setup
    A simple tool automatically creates a Python virtual environment and installs the required dependencies (MediaPipe, NumPy, OpenCV).


Getting Started

  1. Unzip the example package — keep all included files together in a single folder.

  2. Open the Isadora project file (.izz).

  3. When prompted, allow the Pythoner actor to run.

  4. Enter Scene 1 and click the trigger to run the setup process.

    • This will automatically build and configure your Python environment.

  5. When setup is complete, close and reopen Isadora to finalize.

  6. Your system is now ready for real-time body tracking via your webcam.


Why Use It

This example provides a lightweight, cross-platform solution for body tracking inside Isadora — ideal for:

  • Interactive installations

  • Live VJ and performance setups

  • Motion-driven visual or lighting systems

  • Research and prototyping for gesture interfaces

With the included conversion and skeleton tools, you can go from camera feed to full Isadora skeleton control in minutes.

🔗 Watch the Quickstart on YouTube

Once you have completed the tutorial, you should look at this additional approach with Multi Body and Hand Tracking: media-pipe-pose-estimation.zip

Color Tools – Complement, Split, and Triad

A trio of user actors for Isadora that analyze any input color to provide its complementary, split-complementary, or triadic match. Designed for artists and designers, these tools simplify color theory into instant, visually harmonious outputs.

DX – PY – Cube2LUT – ColorGrading

color grading

.CUBE to PNG LUT Workflow for GLSL Color Grading in Isadora

Description:

This Isadora demo project introduces a complete workflow for using industry-standard .CUBE LUT files in your GLSL-based color grading pipeline within Isadora. Built using the Pythoner actor and a custom GLSL shader, the patch allows you to convert .CUBE files into 2D PNG LUT textures, which can then be loaded natively into Isadora for efficient, real-time processing.

This system is ideal for users who want to apply professional color grading within live or interactive environments, without relying on external grading tools during playback.

It includes a number of useful User Actors.

  • [NEW in Version 4] DX – PY – Create CUBE LUT – a powerful color grading utility that builds custom 3D LUTs by redefining the corners of RGB color space.
  • DX – GLSL – Apply Lut to Video – (GLSL based, applies a LUT image to a video stream with numerous options)
  • DX – PY – Load .Cube for Color Grading – (Python based, converts .cube files to LUT image)
  • DX – PY – Browse for File (win+mac) – (Python based, opens a file browser and returns the full file-path)
  • DX – PY – Save Video Frame as PNG – (Python based, allows the saving of a video frame as a PNG. Used here to save cube conversions for project inclusion)

Features (via included User Actors):

  • 📁 Import and parse .CUBE LUT files using Pythoner.

  • 🖼️ Auto-generate 2D PNG LUT images from .cube files compatible with GLSL shader to apply color grade.

  • 🎨 Supplied GLSL shader demonstrates real-time color transformation using the generated LUTs.

  • 🧠 Fully integrated within Isadora — no external software or plugin dependencies (* requires Pythoner virtual environment and modules).

  • 💾 Save and reuse converted LUTs in any project.

  • 📚 Includes a clean, modular patch structure to understand or extend the workflow.


Requirements (for DX – PY – Load .Cube for Color Grading):

  • Pythoner custom virtual environment (watch the Tutorial below to learn about creating a virtual environment).
  • 🧮 NumPy is required for LUT parsing.
    Install it into your Python environment via:
    pip install numpy
  •  🧮 CV2 (openCV) is required for creating LUTs.
    Install it into your Python environment via:
    pip install cv2
  • or the supplied Python scripts. Video Tutorial

Updates:

  • v4 -adds ‘Create CUBE Lut’ scene, with User Actor that allows the creation of a custom 64^2 CUBE LUT as video output and/or PNG file.
  • v2 -fixed save as PNG to use correct color order.
    -added improved comments to demo file

DX – Window Frame FX : aka [RectGrid]

Video still frame of an advanced usage of the FX

Using this FX to create a complex animated compositing FX.

 

This example file includes a fun user actor that was been used to create a number of great real-time video FX. On its own, it crops out a piece of a video, adds a rectangular frame to the cropped video, and places it back onto a blank canvas the same size as the original video, so that it can be composited onto the source as an overlay.

An example video FX using this user actor at its core can be seen here: Window Frame FX – multiplied and animated.

 

Using 3 copies of the FX

Using 3 copies of the FX

 

Animated Clock

Did you know even the time of day can be used as an interactive element in Isadora? Take a look at this animated clock example patch, we hope it’ll give you some ideas on how to bring the element of time into your work!