Skip to content

PulzWave/PulzWaveArtNetMidiBridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PulzWaveArtNetMidiBridge

Art-Net to MIDI Bridge - Convert DMX lighting data to MIDI for visual synchronization.

Download Stable Download Beta

Platform Python License

Features

  • 🎨 DMX to MIDI Conversion - Converts RGB, White, UV, and Intensity channels to MIDI CC
  • 🌈 Color Analysis - Extracts Hue from RGB for color-reactive visuals
  • 🎹 Note Triggers - DMX attribute channel triggers MIDI notes
  • ⚑ Strobe Support - Simulates strobe effects via intensity modulation
  • πŸ–₯️ Cross-Platform - Native builds for Windows and macOS
  • πŸŽ›οΈ Real-time Monitor - Visual feedback of all DMX and MIDI values

Installation

Windows

  1. Download the latest PulzWaveArtNetMidiBridge-Setup.exe
  2. Run the installer and follow the prompts
  3. If loopMIDI is not installed, the installer will prompt you to download it

Note: Windows requires loopMIDI (free) to create virtual MIDI ports. See loopMIDI Setup for configuration details.

macOS

  1. Download the latest PulzWaveArtNetMidiBridge.dmg
  2. Open the DMG and drag the app to your Applications folder
  3. Set up a virtual MIDI port using the built-in IAC Driver:

Creating a Virtual MIDI Port (macOS)

macOS includes a built-in virtual MIDI driver called IAC Driver:

  1. Open Audio MIDI Setup (search in Spotlight or find in /Applications/Utilities/)
  2. From the menu bar, select Window β†’ Show MIDI Studio
  3. Double-click IAC Driver
  4. Check Device is online
  5. Click the + button under "Ports" to add a new port (e.g., "PulzWave MIDI")
  6. Click Apply

The virtual MIDI port will now appear in PulzWaveArtNetMidiBridge and other MIDI applications.

From Source

# Clone the repository
git clone https://github.com/pulzwave/PulzWaveArtNetMidiBridge.git
cd PulzWaveArtNetMidiBridge

# Create virtual environment
python -m venv .venv

# Activate (Windows)
.venv\Scripts\activate

# Activate (macOS/Linux)
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Running

python -m src.main

DMX Channel Layout

Starting from the configured start channel (10 channels total):

Offset Channel Description
+0 Red RGB Red (0-255)
+1 Green RGB Green (0-255)
+2 Blue RGB Blue (0-255)
+3 White White (0-255)
+4 UV UV/Blacklight (0-255)
+5 Dimmer Master Intensity (0-255)
+6 Strobe Strobe Speed (0-255)
+7 Attribute Note Trigger (0-255)
+8 Hold MSB Note Hold Time - High Byte
+9 Hold LSB Note Hold Time - Low Byte

Hold Time (16-bit)

The hold time uses two DMX channels (MSB + LSB) for precise timing control:

  • Calculation: (MSB Γ— 256) + LSB = milliseconds
  • Range: 0-10,000 (capped at 10 seconds)
  • Value 0: Note is held continuously until the attribute changes
  • Value 1-10000: Note is held for the specified duration in milliseconds

Examples:

MSB LSB Result
0 0 Continuous (∞)
0 255 255ms
3 232 1000ms (1 second)
19 136 5000ms (5 seconds)
39 16 10000ms (10 seconds)

MIDI Output

Control Changes (CC)

CC Parameter Range
10 Red 0-127
11 Green 0-127
12 Blue 0-127
13 White 0-127
14 UV 0-127
15 Intensity 0-127
16 Hue 0-127
17 Inverse Hue 0-127

Notes

  • Attribute channel value 1-127 triggers MIDI notes 12-138 (C0 onwards)
  • Notes are automatically released when attribute changes

Configuration

Settings are stored in:

  • Windows: %APPDATA%\PulzWave\PulzWaveArtNetMidiBridge\config.json
  • macOS: ~/Library/Application Support/PulzWaveArtNetMidiBridge/config.json

First-Time Setup

On first launch, the app displays a setup wizard that guides you through:

  1. DMX Configuration - Set Art-Net universe and start channel
  2. MIDI Output - Select your MIDI output device
  3. Connection Test - Verify Art-Net connectivity

loopMIDI Setup (Windows)

PulzWaveArtNetMidiBridge requires a virtual MIDI port to send MIDI to other applications. I recommend loopMIDI (free).

  1. Download and install loopMIDI
  2. Launch loopMIDI
  3. Click the + button to create a new virtual MIDI port
  4. The port will appear in the list and can now be selected in PulzWaveArtNetMidiBridge

loopMIDI Configuration

SoundSwitch Setup

To use PulzWaveArtNetMidiBridge with SoundSwitch, you need to configure Art-Net output and add the fixture.

Enable Art-Net

  1. Open SoundSwitch Preferences
  2. Go to the Art-Net section
  3. Enable Art-Net output
  4. You should see the PulzWaveArtNetMIDI interface in the list (make sure the app is running)

SoundSwitch Preferences

Note: If the PulzWaveArtNetMIDI interface doesn't appear, make sure PulzWaveArtNetMidiBridge is running and listening on the correct network interface.

Add the Fixture

  1. Go to DMX Setup
  2. Click Add Fixture
  3. Search for manufacturer: Unknown
  4. Select fixture: PulzWave ArtNet MIDI Bridge
  5. Add it to your DMX profile and assign it to the desired universe/channel

SoundSwitch DMX Setup

Note: Make sure the Art-Net universe and start channel in SoundSwitch match the settings configured in PulzWaveArtNetMidiBridge.

Laser Software Integration

Pangolin QuickShow

PulzWaveArtNetMidiBridge works great with Pangolin QuickShow for lighting-synchronized laser shows.

πŸ“– See the QuickShow Setup Guide β†’

The guide includes animated demos showing:

  • How to configure MIDI mapping using the LEARN button
  • What the live synchronization looks like in action

Project Structure

β”œβ”€β”€ .github/workflows/    # CI/CD pipelines
β”œβ”€β”€ build_scripts/        # PyInstaller specs
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ main.py           # Entry point
β”‚   β”œβ”€β”€ config.py         # Settings manager
β”‚   β”œβ”€β”€ ui.py             # NiceGUI interface
β”‚   β”œβ”€β”€ setup_wizard.py   # First-time setup wizard
β”‚   β”œβ”€β”€ texts.json        # UI texts for easy localization
β”‚   β”œβ”€β”€ artnet_listener.py# UDP Art-Net receiver
β”‚   └── midi_manager.py   # MIDI output handling
β”œβ”€β”€ requirements.txt
└── README.md

License

MIT License - See LICENSE file for details.

Support

β˜• Buy me a coffee


Made with ❀️ by PulzWave

About

Art-Net to MIDI Bridge - Convert DMX lighting data to MIDI for visual synchronization

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors