DiPiVJ - Support
DiPiVJ Tutorials, Quick Start Guide, Updates, and DiPiVJ Encoder Software for Windows.
Quick Start Guide
Updates
DiPiVJ Encoder for Windows
DiPiVJ Encoder for Windows. Use the Auto Batch Video Encoder & Image Resizer to ensure perfect performance of custom content on the DiPiVJ.
DiPiVJ Video Tutorials
The Web UI provides full control over scene behavior, visual effects, overlays, playlists, and projection mapping.
When the DiPiVJ is on, you can connect to the DiPiVJ hotspot using a phone, tablet, or any device with Wi-Fi. Then open a browser and navigate to http://dipivj.local
The "Scenes" Tab, Header, and Footer
Header-
In the very top left hand corner you will see the device ID. If you are working with more than one DiPiVJ at a time then this will be how you tell their web UI’s apart.
If you have a USB drive connected that has an update file on it, you will see a large yellow button at the top of the screen with a button to begin the update. If you have an update, make sure it is in the folder called dipivj-update in the root folder.
The Now Playing panel at the top of the Web UI shows the currently running scene, a VU meter for incoming audio, and a progress bar for playback. If the VU meter is not moving, check that your USB audio device is connected and receiving signal.
Audio Boost- Audio Boost is a global control that scales how strongly every scene reacts to the music. You’ll find it as a row of preset buttons — Off, 0.25×, 0.5×, 1×, 1.25×, 1.5× — just below the Now Playing panel.
At 1× (the default) reactivity is unchanged. Raise it to 1.25× or 1.5× and the visuals respond more strongly to the audio; lower it to 0.5× or 0.25× for a gentler, more subtle response. At Off, audio reactivity is disabled entirely and the visuals run static. This applies uniformly to both video FX and GLSL shaders. The setting is saved and carries over across reboots, and it can also be controlled remotely over MIDI, OSC, and ArtNet.
Audio Boost does not change Brain Mode’s beat and energy tracking, which manages its own levels, and it does not affect the VU meter — the meter always shows the raw input level so you can use it to set your audio gain.
LIVE Button- Press this button to fade the output to black. You can set the fade
duration next to it. When blackout is active, the button changes from green to red and reads “BLACKED OUT.” Press it again to fade the visuals back in.
This button affects the entire output, including the scene, logo overlay, and all active effects.
Scenes Tab - This is where you can manually trigger scene changes, configure which scenes are included in Auto mode, customize FX stacks and FX intensities, and control the audio smoothness for each effect.
To manually trigger a scene, simply press its scene card. Scenes can be either video loops, still image scenes, or GLSL shader scenes.
Video scenes support FX stacks. GLSL shader scenes use their own audio intensity and smoothing controls instead of the standard video FX stack.
Press the FX button on a video scene to customize its FX stack. Each video scene can have up to 3 effects active at once. You can adjust the intensity and audio smoothness for each effect in real time.
"Brain Mode"
At the top of the Scenes section you will see a toggle for Brain Mode. Brain Mode automatically changes scenes and controls FX intensities and audio smoothness by listening to the music and analyzing its overall intensity and energy.
Instead of relying on a fixed beat count, Brain Mode dynamically determines when transitions should occur to create a smoother and more musical visual experience.
You can adjust the Pace slider next to the toggle to control how frequently Brain Mode transitions between scenes. Lower values result in longer, more gradual scene changes, while higher values create faster and more energetic transitions. This is a global setting for Brain Mode across all included scenes.
You can choose which scenes are included or excluded from Brain Mode within the Scenes tab by clicking the “Brain” and “Skip” buttons for each scene. You can also choose to include or skip entire folders. For convenience, there are also “Skip All” and “Include All” buttons at the top of the tab.
The "Playlist" Tab and Timecode
The Playlist tab provides a more curated playback mode. You can build a list of scenes to play in order and assign an individual beat count to each scene in the playlist.
Unlike Auto mode, Playlist mode advances through scenes in the exact order you set. Each playlist entry can use its own beat count, so you can control how long each scene stays active before moving to the next one.
Playlists can be created, saved, loaded, and deleted for later use.
Each playlist item also includes a “Cue" button, which lets you immediately jump to that scene at any time. Auto mode and Playlist mode cannot run at the same time. Turning one on will automatically disable the other.
Timecode (Playlist Mode)
Playlist Mode includes an optional Timecode sub-mode that cues scenes to an external clock instead of advancing them by beat count. Turn it on with the Timecode toggle next to the Playlist Mode switch. It reads SMPTE LTC (Linear TimeCode) from the audio input and fires each scene when the incoming timecode reaches it — in other words, your playlist becomes a timeline.
With Timecode on, each playlist item’s number becomes an absolute timecode (HH:MM:SS:FF) instead of a beat count. When the incoming LTC reaches an item’s time, that scene fires. Because it’s a timeline, seeking the source clock jumps straight to the matching scene.
Timecode only controls when scenes fire. Videos still play at their own normal speed; the timecode is never used to scrub or frame-sync the video itself.
Frame rate (24, 25, or 30) is detected automatically.
Only items with a timecode assigned are on the timeline. An item left at the blank 00:00:00:00 placeholder is not a cue point — it can still be reached by its Cue button, a tapped scene card, or MIDI, but it won’t fire on its own. This lets you park extra scenes in the list without them hijacking the timeline.
Wiring — Timecode needs a stereo USB audio interface, wired as follows:
Channel 1 — your LTC (timecode) signal.
Channel 2 — your program audio (this is what drives the visuals while in Timecode mode).
On a mono-only input, timecode isn’t available and the header shows LTC unavailable. When everything is connected, the header shows a live readout such as LTC 00:01:23:14 @30fps.
If the timecode source is paused or unplugged, the playlist holds the current scene and the header shows No LTC lock, then resumes automatically when timecode returns. Per-item timecodes are saved with the playlist alongside the beat counts, so the toggle just switches which one drives playback.
The "Auto Logo" Tab
This is where you control logo overlays’ opacity, size, and customize it’s FX stack and audio smoothness.
Logo size can be scaled from smaller to larger while remaining centered on the output. Logos have their own FX stack applied to them separately from the scene.
Auto Fade allows you to create a repeating sequence for fading your logo in and out automatically. You can control the fade-in time, hold time, fade-out time, and off time.
Custom Content and the "Content" Tab
DiPiVJ allows you to load your own videos, logos, and GLSL shaders using a USB drive. To add custom content, insert a USB drive into any USB port on the device. DiPiVJ will automatically scan the drive and load any supported content it finds. A restart is not required. Content added from a USB drive will appear automatically in the Web UI.
Your USB drive should contain the following top-level folders:
videos
glsl
logos
You can organize your files into one level of subfolders inside any of these directories. For example:
videos/
Abstract/
Wild/
Spring/
These folders will appear in the Web UI exactly as they are structured on your USB drive.
You can expand and collapse them to browse your content. All compatible files placed within these folders (including subfolders) will be detected and made available inside DiPiVJ.
To move the files from the USB to the SD card use the “Copy ALL USB content to SD” feature under the “Content” tab.
Videos
Video loops can be added to the videos folder.
Supported file formats include:
.mp4
.mov
.avi
.mkv
.webm
For best performance, video files should follow these specifications:
Codec: H.264
Resolution: 1920 × 1080
Frame Rate: 30 FPS
Bitrate: ~10 Mbps recommended
Videos that do not meet these specifications may still play, but they may cause dropped frames or reduced performance.
Use the DiPiVJ Encoder for Windows for flawless video playback.
DiPiVJ Video Encoder for Windows
Logos-
Logo images can be added to the logos folder. Supported formats include:
.png
.webp
.jpg
.jpeg
PNG files with transparency are recommended if you want the visuals underneath to remain visible.
Logos should be prepared inside a 1920 × 1080 image, so they appear positioned exactly where you want them during playback.
Logos can be scaled, faded, and have FX applied using the Logo & FX controls in the Web UI.
GLSL Shaders-
Real-time GLSL shaders can be added to the glsl folder. Shaders must use the following entry point:
void mainImage(out vec4 fragColor, in vec2 fragCoord)
The DiPiVJ engine automatically injects the required uniforms, so they should not be declared inside your shader file.
Available uniforms include:
iTime
iResolution
u_audio_global
u_audio_bass
u_audio_pulse
These uniforms allow shaders to react to audio and time. Use caution when adding GLSL shaders. Some shaders may be very GPU intensive.
If a shader requires too much processing power, it may cause slow performance or instability.
For best results, test new shaders individually before relying on them during live performances.
Content Tab-
This is where you manage the videos, logos, and GLSL files that are on the DiPiVJ. You can delete files and even entire folders from the device permanently.
At the bottom of the tab you can see your custom content that is currently on the USB drive. Under that there is a button to copy all the USB content to the SD card.
System Controls-
-Shutdown Device
To properly shut down the device, use the “Shutdown Device” button at the bottom of the Web UI. This is the recommended way to power down the system and helps prevent SD card corruption.
-Reset Display Output
DiPiVJ is configured to be hot-swappable, however in the chance that it does have a hard time negotiating with a particular display, try the “Reset Display Output” button in order to initiate a new negotiation.
The "Mapping" Tab
Projection mapping tools are available within the Web UI. These tools allow you to align the output image with projection surfaces.
Mapping is now organized into layers. You can stack up to 8 mapping layers, each with its own warp, mask, and crop, composited together in order. Use the layer list to add, remove, reorder, rename, and show or hide individual layers. This lets you map several surfaces independently from a single output.
Warping uses corner pins to adjust the output image. These pins can be moved to reshape the projected image so it fits the surface being mapped. For more detailed adjustments, grid warp modes are also available for finer control, with 2×2, 3×3, and 4×4 subdivisions. For precise adjustments, D-pad controls are provided to move mapping points one or ten pixels at a time, allowing for accurate alignment.
Masking allows you to hide portions of the output that should not be projected. This is useful when parts of the projection area need to remain dark or when shaping the output for a specific installation. Each layer can use a quad, circle, triangle, or octagon mask, and an Invert Mask option flips the mask so the shape cuts a hole instead of framing the content.
Each layer also has an optional Slice control, which shows only a sub-region of the source content by adjusting its X, Y, width, and height. This is useful for sending different portions of the same content to different surfaces.
To start over, Reset Mapping clears all layers and replaces them with a single default layer, returning all warp, mask, and slice settings to their defaults.
MIDI/OSC/ARTNET
Beyond the Web UI, DiPiVJ can be driven by external controllers using three protocols: MIDI (a USB controller plugged into the device), OSC (Open Sound Control, sent over the hotspot from apps like TouchDesigner, TouchOSC, or QLab), and ArtNet / DMX (sent from a lighting console).
All three feed the same controls, so you can mix and match them with the Web UI in any combination. The general rule when more than one source touches the same control is last writer wins — the most recent input takes over. Brain Mode always wins for FX. While Brain Mode is on, it calculates FX intensity and smoothing from the audio in real time, so the FX knobs on MIDI, OSC, and ArtNet are ignored until you turn Brain Mode off.
MIDI Control-
DiPiVJ works with any standard class-compliant USB MIDI controller — knobs, faders, buttons, and pads. No drivers and no config files are needed. You map controls right in the browser, and everything you map is remembered across reboots.
Connecting a Controller-
• Plug the controller into any USB port on the device. It is detected automatically.
• Hot-plugging is not detected automatically. If you connect (or swap) a controller after the device
has already powered on, the engine needs to restart to pick it up. The simplest way is to power-cycle the device, or use the restart command if you are comfortable with SSH access.
• If more than one controller is attached, the first one found is used.
Mapping Controls (MIDI Learn)-
Mapping is a quick four-step loop you repeat for each control you want:
1. Turn on MIDI Learn using the toggle at the right end of the Audio Boost row. Every mappable control gains a dashed amber outline, and a strip of eight FX knobs appears for mapping.
2. Click the on-screen control you want to map. It begins pulsing blue to show it is armed and waiting.
3. Move a knob or fader, or press a button or pad, on your controller. The next message it sends is
captured and bound to that control.
4. The control flashes green to confirm and shows a small badge of what it is bound to. Repeat for the next control.
There can be up to a one-second delay before the green confirmation appears — that is the normal refresh interval, not a freeze.
Each control holds one binding at a time. Mapping it again simply overwrites the old binding. To wipe every mapping at once, turn on MIDI Learn and press Clear MIDI (you will be asked to confirm, since this cannot be undone).
Almost every control in the Web UI can be mapped, including:
• Each scene card, to switch instantly to that scene.
• The Audio Boost presets, Blackout / LIVE, Brain Mode, and Playlist Mode.
• Brain Mode’s “Next” jump and the Playlist “Prev” / “Next” cues.
• The eight FX knobs — six that adjust FX intensity and smoothing across every scene at once, plus two for the logo overlay’s effect.
The six scene FX knobs are global overrides: map them once and they apply to your whole library. While you are actively moving a knob it overrides the per-scene sliders; leave it alone (or press Clear MIDI) and each scene returns to its own saved values. These overrides are live only — they always start fresh on each boot and are never restored from a previous session.
Scene mappings use the scene’s filename, not its position in the list, so they keep working even after you plug or unplug a USB drive and the scene order changes.
OSC Control-
DiPiVJ also accepts OSC (Open Sound Control) over the hotspot network, so any OSC sender — TouchDesigner, TouchOSC, QLab, Max/MSP, or a custom app — can drive the same actions as MIDI and the Web UI. Unlike MIDI, there is no learn step: you simply point your sender at a fixed address and it works.
Connection
Setting Value
Transport UDP
Host 192.168.4.1 (the hotspot IP)
Port 9000
Make sure your sending device is connected to the DIPiVJ Hotspot first.
Finding the Addresses-
Turn on the OSC checkbox at the right end of the Audio Boost row (next to MIDI Learn — you use one or the other). Every OSC-controllable element gets a cyan dashed outline; click any one and a popup shows its exact OSC address and a hint about the value to send.
Scene buttons are rising-edge: a sender that streams its value continuously fires only once when the value rises to 1, not many times per second. To re-trigger the same scene, let the value drop back to 0 and rise again — momentary buttons do this naturally. The FX knobs use a simple 0.0–1.0 range so a standard fader maps cleanly.
Live State Feedback-
DiPiVJ also sends its own live state back out as OSC, so a console or TouchOSC layout can mirror what the engine is doing — audio levels, beat and energy, the current scene, FX values, and mode states. This is on by default and streams to port 9001. If you leave the target IP blank, DiPiVJ automatically replies to
whichever device last sent it OSC, so a controller that sends to the Pi starts receiving feedback with no extra setup.