Releases: stoatworks-labs/vectrix
Release list
v0.1.10
What's Changed
- Check names and displays against FFGL's sixteen characters by @stoatworks-labs in #11
Full Changelog: v0.1.9...v0.1.10
v0.1.9
What's Changed
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #1
- Bump actions/checkout from 4 to 7 by @dependabot[bot] in #2
- Bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #4
- Bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #3
New Contributors
- @dependabot[bot] made their first contribution in #1
Full Changelog: v0.1.8...v0.1.9
v0.1.8
v0.1.7
Both plugins now carry proper help text, which Resolume shows you in its interface.
Vectrix's description used to be a caption — "Vector CRT synth: oscillator, pedals, oscilloscope" — where Resolume's own effects use that same field to explain what a thing is and how it works. Its CRT effect spends two paragraphs on it. 110 of the effects that ship with Arena have one.
Both plugins now explain what they are, the one idea everything rests on (brightness follows dwell time — where the beam moves fast the trace is dim, where it turns around it blooms), and that the panel only shows the controls that can currently do something, which is otherwise a surprising thing to run into.
Nothing about the picture changed.
On tooltips
Requested in #8. Per-parameter tooltips are not available to any Resolume plugin — the interface has no channel for them. This is the closest thing that exists, and it is most of what was being asked for. Thanks to @VJPandaAU for the request.
v0.1.6
The parameter panel now shows you about eighty controls instead of a hundred and seventy-three, and Preset is at the bottom where the rest of the plugins put it.
Only what can currently do something
Vectrix has a lot of controls, and cutting them is not the answer — the effect parameters are the plugin. So instead it now hides the ones that cannot reach the picture from where you are:
- The Source you have chosen shows its own controls. The other four sources' controls are not there, and they swap the instant you change Source.
- Each of the thirteen pedals shows only its on/off switch until you switch it on. Turn Delay on and its nine controls arrive with it.
Every pedal's switch is always visible, so there is no state you can get into and not get out of.
173 shown -> 81
Delay on -> 90
Preset is its own section, at the bottom
It used to sit inside Output with the seventeen Modulation controls after it, which is a long way to scroll for the thing you most likely want first.
Your saved compositions are unaffected. Resolume matches a plugin's parameters by name rather than by position, so moving a control does not disturb anything you have saved — checked by saving a composition, moving the control, and reloading it.
Notes
Thanks to @VJPandaAU for #7, which is what prompted all of this, and for #8 — tooltips are a separate job and still open.
Nothing about the picture changed in this release.
v0.1.5
Windows users on v0.1.0 – v0.1.4 should update. On those builds Vectrix crashed Resolume while it was scanning the plugin folder, so Resolume would not start at all until the DLLs were deleted. macOS was never affected.
The bug
The file parameter's list of audio extensions was built by walking an array until a null entry. The array has no null entry — a separate count bounds it, and that count was used nowhere. So the loop ran off the end and read whatever the linker had put next.
On macOS that happened to be zero, the loop stopped, and every offline check passed. On Windows the compiler lays the count itself immediately after the array, so the walk read the integer 7, tried to build a string from address 0x7, and took an access violation inside the host.
It happens while the plugin declares its parameters — before the first frame, and before the plugin has opened its own log. That is why there was nothing to look at: Resolume's log simply ended at Loading plugin 'Vectrix Trace.dll' and the process was gone.
The fix
The extension list is now a complete type the compiler can size, and the code iterates it directly, so the mistake cannot be written again.
Verified by installing the shipped build in Resolume Arena 7.27.1 on Windows, where both plugins now load and register.
If you are coming from an affected build
If Resolume will not start, delete Vectrix.dll and Vectrix Trace.dll from Documents\Resolume Arena\Extra Effects, start Resolume once to confirm it is happy, then install this release.
Also
The user guide now names the log path on all three platforms rather than only macOS, and carries an entry for this failure.
Thanks to @VJPandaAU, who reported it in #5 with the one detail that made it findable — that the last line in Resolume's log named the plugin.
v0.1.4
The Linux plugin no longer needs GLEW installed
v0.1.3 shipped a Linux .ofx that required libGLEW.so.2.0 on the machine, and
said so only after the fact. On Rocky 8 — the Linux Resolve supports — there is
no way to obtain that library without enabling PowerTools and installing a
-devel package to get a runtime .so.
GLEW is now linked statically. What the shipped binary asks of a machine:
| v0.1.3 | v0.1.4 | |
|---|---|---|
| Needs | libGLEW.so.2.0, libc, libm, libpthread |
libGL.so.1, libc, libm, libpthread |
| To satisfy it on Rocky 8 | enable PowerTools, install glew-devel |
nothing — libGL is already there |
libGL is a fair thing to require where libGLEW was not: it is in the base
repository and is present on any machine capable of running Resolve at all.
Why this mattered more than a missing dependency usually does: an OFX host
does not report a plugin that failed to load. Resolve simply started with no
Vectrix in the effects list and nothing in any log — which reads as a broken
download rather than a missing library.
Vectrix is the only plugin in the fleet this affected, because it is the only
one whose OpenFX build links OpenGL at all: the Trace source is a GPU edge
trace. Its siblings need only libc, libm and libpthread.
If you are staying on v0.1.3, its release notes carry the dnf commands.
Upgrading is the easier fix.
How it is checked
The load test now runs on a stock Rocky 8 container — no GLEW, no
PowerTools, no EPEL, nothing but mesa-libGL — and dlopens the shipped plugin,
then calls the two entry points a host calls first. That absence is the
assertion: the plugin loads on a machine that has never heard of GLEW.
The build additionally fails outright if libGLEW ever reappears in the
binary's NEEDED list, so this cannot regress quietly the way it shipped.
Also in this release
Three things had to line up, and the second and third only became visible once
the first was done: EL8 packages no libGLEW.a anywhere, so the build compiles
GLEW from source; a static GLEW provides extension entry points but not core
GL, which previously arrived transitively through libGLEW.so; and CMake
prefers GLVND, whose libOpenGL.so.0 ships in libglvnd-* rather than
mesa-libGL. Each produced a plugin that built, linked, and failed at load.
The README and user guide were updated to match, and still tell a v0.1.3 user
the right thing.
v0.1.3
Two truncated control names fixed
FFGL hands the host a 16-character parameter-name buffer. Two controls were
declared longer than that and have been shipping cut off:
| Declared | What Resolume drew | Now |
|---|---|---|
Rectifier Routing (17) |
Rectifier Routin |
Rectify Routing |
Crossfade Time Changes (22) |
Crossfade Time C |
Crossfade Time |
Both keep the pattern their neighbours use — nine sibling controls are
<effect> Routing, and the Delay group heading already supplies the context the
longer name spelled out. The OpenFX labels changed with them, so the control
reads the same in Resolume and in Resolve.
They are the same controls with the same defaults, but the name is what an OSC
path or a name-based mapping addresses, so re-check any such mapping.
The OpenFX plugin now ships for Linux — and needs GLEW installed
There is a -ofx-linux-x86_64 build in this release, for Resolve on Linux. It is
checked by loading it in a Rocky 8 container and calling the two entry points a
host calls first, rather than inferring from a successful build that it would load.
Linux users: install GLEW first, or the plugin will not load. Vectrix's
trace renderer is on the GPU, so unlike every other plugin in this fleet its
.ofxlinks OpenGL — the shipped binary needslibGLEW.so.2.0where its
siblings need only libc, libm and libpthread. On Rocky 8 / RHEL 8 that means
enabling PowerTools and installingglew-devel, which brings the runtime
library with it:sudo dnf config-manager --set-enabled powertools sudo dnf install glew-develThis is worth stating loudly because of how it fails: an OFX host does not
report a plugin that fails to load. Without GLEW, Resolve simply starts with
no Vectrix in the effects list and no error anywhere — which reads as a broken
download rather than a missing library. The container the load test runs in
installs GLEW before testing, so the test passing is not by itself evidence
that a stock machine will load it.
macOS and Windows are unaffected — they carry what they need.
A User guide button in the About block
About now carries four buttons instead of three: User guide, Project page,
Source on GitHub, Support the work. The guide button is new and opens this
plugin's published guide.
Also in this release
- Load test: install glew-devel, which is what actually carries libGLEW on EL8
- Load test: libGLEW comes from EPEL, which sharpens the problem
- Load test: glew comes from PowerTools on Rocky 8, not the base repos
- Link Threads, and install GLEW in the load test because the plugin needs it
- Vectrix Linux: build the FFGL SDK position-independent
- demo: let the support footer reach the intake origin
- Quote the vcpkg toolchain path so PowerShell expands it
- docs: add a user guide
Full changelog: v0.1.2...v0.1.3