Limitations
Ultimate VJ is a Resolume-like workflow, not a claim of Resolume compatibility. This page is the honest inventory of what it does not do. Everything below is either absent from the source or restricted by an explicit guard.
Scope of the claim
Ultimate VJ is an independent implementation. It does not promise full binary, file or plug-in compatibility with commercial VJ applications.
A limited legacy .avc importer exists; it does not reconstruct arbitrary proprietary effect chains.
Platform
- macOS only. No Windows or Linux version exists.
- Requires macOS 26.0 or later and an Apple Silicon Mac, for both the published cask and source builds.
Import and third-party content
- Imported third-party effect records are retained opaquely. Native effects do not reconstruct arbitrary third-party effect chains, including proprietary presets of any kind.
- Plug-in hosting is unavailable — no FFGL, ISF or third-party plug-in loader exists.
- Older native effect settings keep their original pipeline until you explicitly rearrange or extend them.
- Grouped routing must be opened as a full set; it cannot arrive through Import banks from set….
- Columns can be added in the Composition structure editor; ordinary batch paste must fit the existing grid. Import and duplication can grow it. Explicit removal can remove the last empty column; the empty trailing column is not an unconditional invariant.
Effects and routing
- Dashboard routing and any FFT band selection are unavailable. The audio-level driver operates on the whole monitored level.
- Group effect stacks are available through Groups or group-header FX. The main Inspector still has Clip, Layer and Master scopes. Group routing requires full-set Open rather than bank import.
- The modulation driver's phase offset and Random hold seed have no UI controls, although they round-trip in files. This does not refer to effect controls such as Strobe's Phase or Slice Glitch's Pattern seed, which are exposed.
- Only one RenderWave effect exists (Kaleidoscope · RenderWave); everything else is Core Image or native Metal kernels.
Output
- Multiple simultaneous physical outputs are unavailable — one selected output at a time.
- No mesh warping, masks, soft-edge calibration or per-surface colour controls. Mapping is rectangular crop plus convex four-corner perspective per surface.
- Syphon and NDI are unavailable. There is no frame-sharing output to other applications.
- No audio is captured in recordings, ever.
Control and sync
- No MIDI clock, no MIDI Time Code, no song-position pointer — neither input nor output. Only Note On, Note Off and Control Change are handled.
- Ableton Link syncs tempo and bar phase only. Transport start/stop and play-state sync do not exist.
- Learned keyboard parameters set a fixed captured value; there is no continuous keyboard control.
- Only six numeric parameters are controllable externally at all (layer opacity, master opacity, crossfader, BPM, clip speed, clip playhead).
- Physical MIDI behaviour — device-specific LED colours, motorized-fader profiles, second-host operation — is unqualified. Claimed support rests on virtual endpoints in the app's own test suites.
- The local control API binds loopback only. LAN and second-host operation do not exist.
- Effect internals, mapping surfaces and several other areas are deliberately not addressable by the control API.
Audio
- File audio changes pitch with speed. There is no pitch-preserving time stretch and no band-limiting resampler — only linear interpolation.
- Standalone multichannel audio uses its first two channels (mono is duplicated).
- 32 simultaneous voices, counting transition hand-offs.
- No guarantee against audio underruns. Buffering and decoder failures are reported, not prevented.
- Microphone capture, permission prompts and audible output have not been verified against real hardware.
Playback and rendering
- Reverse decoding has substantially greater decoder cost than forward playback on interframe codecs.
- No sustained frame-rate guarantee exists for any resolution, including 4K60. The app reports what was requested and what it measured; it does not promise what it will sustain.
- No keyframe snapping. Large real-time gaps beyond a quarter second in one tick are discarded rather than accumulated, so playback cannot catch up slowly.
- A brief held frame at loop wraps and after seeks is expected behaviour, not a perfect encoded seam.
- The CPU compositor retained in the core library is a behavioural test reference, not an alternative output path.
Tempo detection
- BPM detection is an onset estimator. Syncopation, non-percussive music and half/double tempo remain genuinely ambiguous — the app tells you when it is unsure rather than picking silently.
- Reported confidence is not a calibrated probability.
- File tempo analysis covers the first 120 seconds only.
Storage hygiene
- The
~/Library/Application Support/ULTIMATEVJ/Recovery/folder is never pruned. Clean it manually. - Media referenced by a set is tracked by path, never copied — unless you explicitly Collect it.
Not verified
This section lists absences established by reading the source, which is strong evidence but not build-level proof in every case:
- No MIDI clock or timecode anywhere in the MIDI receive path.
- No Link transport start/stop beyond the bridge surface.
- No sustained-performance claim in any code path.
- No user-facing Syphon or NDI frame-sharing output was found in the native output implementation. The compiled runtime packaging includes a Syphon framework; its presence does not expose an output control.