MADZINE

Vision MOD

User Manual — v0.9.2 — English — 雲外鏡

1. Overview

Vision MOD is a real-time visual synthesizer for macOS and Windows. It borrows the Complex Oscillator idea from modular synthesis, where one oscillator shapes the other: the Modifier material provides the dynamics, and the Carrier material is the image carried by those dynamics. One footage modulates another footage, producing a new audio-visual phenomenon.

Every station downstream of the source operates on the resulting Carrier stream. Background removal only happens at the very source (Fundamental Vision). Areas with no content carry alpha 0 from that point on, and every downstream station discards those pixels, so the subject stays cut out through the whole chain.

The main control window: top bar, the parameter panel of the selected module, the Contour Scanner and CV Generator block, and the module catalog on the right.
The main control window: top bar, the parameter panel of the selected module, the Contour Scanner and CV Generator block, and the module catalog on the right.

Top bar

HUEToggle the HUE colour-wheel panel to adjust the interface accent colour
SIGNALToggle the SIGNAL floating window (audio input meters + CV Output routing + seven CV meters)
LanguageSwitch the interface language (EN / JA / ZH); hover descriptions follow and the choice persists
SD statusSD service status: shows SD Loading while starting, then the active acceleration backend

HUE wheel

Outer ringOuter ring: drag to change the accent hue
CentreCentre: drag vertically to change the accent saturation
PresetsPreset hues: click to apply Coral / Mint / Sky / Violet
Phase coloursPhase-derived colour preview (complementary +180°, triadic ±120°, analogous ±30°), reference only

2. Signal Flow and Module Catalog

The pipeline is defined by the module catalog on the right side of the main window. Fundamental Vision is pinned to slot 1 as the source anchor; every other module is added, reordered, bypassed, or removed by the user. Drag the grip icon to reorder, click the X icon (two-click confirmation) to remove, toggle the checkbox to bypass an instance. The same module kind can be added multiple times; each instance keeps its own parameters and is wired in series, top to bottom.

The module catalog. Click a row to show that module's parameters in the panel on the left. Each row has a grip icon, an X icon, and an enable checkbox.
The module catalog. Click a row to show that module's parameters in the panel on the left. Each row has a grip icon, an X icon, and an enable checkbox.
CatalogModule catalog (Signal Flow): the pipeline list, executed top to bottom; the same module kind can be instantiated multiple times with independent parameters
Drag to reorderDrag to reorder: hold the grip icon and drag vertically to change the instance position in the signal flow (Fundamental Vision is pinned to the first slot)
RemoveRemove instance: first click prompts a trilingual confirmation; click again to delete, or click outside / press Esc to cancel
EnableEnable this instance: unchecking bypasses the instance (signal passes through to the next station) without affecting parameters or order

+ Module

The + Module button opens the module library popup. Available modules: Stable Diffusion, Minimalize, Chromascope, 3D Object, Particle, Flow Warp, Feedback, Triposr 3D, Slow Motion, Plugin. Stable Diffusion is a single-instance module: once it is in the chain, its entry is greyed out. Fundamental Vision is the fixed anchor and cannot be added or removed.

Common station controls

Every station after Fundamental Vision shares the same header controls: an enable checkbox, Mix, Brightness, and a Position / Scale pad. Mix is the station dry/wet and is the only mix control; modules have no mix fader of their own. A newly added instance starts with Mix at 0, so adding a module does not change the picture until you raise Mix.

A station panel (Triposr 3D shown). The header row holds the enable checkbox and RESET; Mix, Brightness, and the Position / Scale pad are shared by all stations.
A station panel (Triposr 3D shown). The header row holds the enable checkbox and RESET; Mix, Brightness, and the Position / Scale pad are shared by all stations.
MixStation dry/wet mix: 0 passes the previous station's output through, 1 is fully wet
BrightnessOutput brightness gain of this station (0–4, double-click resets to 1)
Position / ScalePosition / Scale: drag to move, scroll to zoom (0.25–4), double-click to reset
Detail panel iconClick to open the detail settings panel for this module (brush mask, under development)

3. Fundamental Vision

The source station. Two slots sit side by side: Modifier on the left, Carrier on the right. Each slot takes a camera, a video file, or a photo. The Modifier is analysed for the Movement and Color signals and drives Image Displace and the Flow Warp flow field; the Carrier is the image fed into the chain.

Fundamental Vision: Modifier (left) and Carrier (right) with the Mix fader between them.
Fundamental Vision: Modifier (left) and Carrier (right) with the Mix fader between them.
CardSource input card: Modifier (left) modulates Carrier (right); Mix blends between them
ModifierModifier slot: the modulating material; source for Movement/Color CV, particle Displace, and the Flow Warp flow field
CarrierCarrier slot: the main image, fed into the downstream processing chain
MixBlend between the Carrier and Modifier sources: right shows Carrier, left shows Modifier
Source typeSource type: camera, video, or photo (drop a file to load video/photo)
Remove backgroundCamera background removal: MediaPipe masks the foreground, keeping only the subject
Flip HHorizontal flip (left-right mirror) of the source image; applied at the producer stage, affecting the whole chain
Flip VVertical flip (top-bottom mirror) of the source image; applied at the producer stage, affecting the whole chain
Video speedPlayback speed of the loaded video (0 pause, 1 normal, 5 fivefold)

Camera menu and settings

Camera selection dropdown and the camera settings icon.
Camera selection dropdown and the camera settings icon.
CameraSelect the camera input device
Settings iconClick to open the camera settings panel (Brightness / Contrast / Saturation — three hardware-controllable parameters); Carrier and Modifier cameras keep independent settings
BrightnessCamera brightness (camera driver layer, UVC / V4L2 corresponding axis, 0–1)
ContrastCamera contrast (camera driver layer, UVC / V4L2 corresponding axis, 0–1)
SaturationCamera saturation (camera driver layer, UVC / V4L2 corresponding axis, 0–1)

Loading a video or photo

Drop a file onto the window: the left half loads it into the Modifier, the right half into the Carrier.
Drop a file onto the window: the left half loads it into the Modifier, the right half into the Carrier.
File pathPath of the loaded file; drop a file onto the window to load (left half = Modifier, right half = Carrier)

4. Contour Scanner and CV Generator

Below the module panel, the main window always shows the Contour Scanner card and the CV Generator. The scanner detects contours from the image; the CV Generator turns the scan, motion, and colour into modulation signals. The global action rows (PRESET, PLUGINS, OUTPUT, View Panic, Help) sit at the top of the Contour Scanner card.

Contour Scanner

CardContour Scanner card: detects contours from the image for the SEQ signals and the contour overlay
PreviewContour preview: live image with contour lines and a draggable scan ROI circle
Scan ROIScan ROI circle: drag the centre to move the scan anchor, drag the edge to resize the scan range
ThresholdContour edge detection threshold: higher keeps only stronger edges
SmoothingContour smoothing: suppresses jaggedness and noise
Scene ThresholdContour update gate (not the edge detection threshold): the image must change by more than this percent before contours are detected again. Higher holds the contour stiller and costs less CPU/GPU, lower reacts faster, 0 recomputes almost every frame
LockLock the current contour: freezes CV and particle signals at this moment
MixBlend ratio of the contour overlay onto the image

CV Generator

CardCV Generator: derives modulation signals from the image (contour SEQ, Movement, Color)
Scan TimeContour scan period: time for one full scan pass (2-10 s); the white line on the track shows the current scan position
SmoothSmoothing of the SEQ sequence signals
GainGain of the Movement foreground-energy signal (source: full Modifier frame)
ForegroundMovement CV foreground threshold; VAV legacy interface, currently inert because the Modifier path is not background-removed

5. Stable Diffusion

Turns the incoming image into AI-generated visuals. macOS runs Stable Diffusion 1.5 with ControlNet and a Hyper-SD15 1-step LoRA on Metal; Windows runs Stream Diffusion on CUDA / TensorRT. Only one Stable Diffusion instance can exist in the chain. The dry/wet balance is the station Mix; while Enable is unchecked, Mix is forced to 0 so the chain never receives an empty AI frame.

Stable Diffusion panel: Enable, Grayscale, Likeness, Preset, Prompt, LoRA.
Stable Diffusion panel: Enable, Grayscale, Likeness, Preset, Prompt, LoRA.
EnableEnable Stable Diffusion: loads the model and turns the camera into AI visuals; unchecking releases it
GrayscaleForce the AI output to grayscale
LikenessHow closely the AI output follows the camera structure (high = like camera)
PresetSwitch built-in style prompts (29 styles/materials)
PromptText prompt for AI generation (describes the desired style)
LoRAChoose a LoRA file (.safetensors) for Stable Diffusion; clear to disable LoRA. The row shows No LoRA when none is set.
StatusSD service status: shows SD Loading while starting, then the active acceleration backend

6. Chromascope

Four colour channels are laid over the image. Base Hue sets the starting hue, Hue Spread distributes the four channels around it, and each channel has its own Curve and Angle. The dry/wet balance is the station Mix.

Chromascope panel: Base Hue, Hue Spread, and the per-channel Curve and Angle faders.
Chromascope panel: Base Hue, Hue Spread, and the per-channel Curve and Angle faders.
EnableEnable the Chromascope colour effect
Base HueChromascope base hue
Hue SpreadChromascope hue spread across channels
CH 1 to 4 CurveChromascope colour curve for this channel
CH 1 to 4 AngleChromascope hue rotation angle for this channel

7. Minimalize

Rebuilds the image as polygons from tracked seed points. Topology picks Triangle (Delaunay mesh), Cell (Voronoi), or Square (Quadtree rectangles); Fill toggles between filled polygons and edge-only wireframe. Polygon colour is sampled from the chain input; the Modifier only displaces the seed points.

Minimalize panel: Density, Topology, Fill, Displace, Smooth, Line Color, Line Width, Line Sat, Fill Sat.
Minimalize panel: Density, Topology, Fill, Displace, Smooth, Line Color, Line Width, Line Sat, Fill Sat.
EnableEnable the Minimalize station: re-partition the Chromascope output into polygons (Voronoi / Delaunay / Quadtree) using seed points
DensityUpper bound of seed point count (2-1500); higher values yield finer polygons
TopologyMinimalize topology: Triangle (Delaunay mesh) / Cell (Voronoi) / Square (Quadtree rectangles)
FillToggle polygon fill: when on, polygons are filled with Fill Sat saturation; when off, only edges are drawn (wireframe)
DisplaceSeed points are displaced as 2D vectors by the Modifier image R/G channels (Image Displace exception: Modifier acts as a displacement vector source here, not as colour sampling); 0 = off, higher values yield stronger polygon jitter
SmoothTemporal smoothing of seed points: higher values reduce LK tracking jitter but slow the response to image change
Line ColorPolygon edge hue (0–1 maps to 0–360°)
Line WidthPolygon edge line width (pixels)
Line SatEdge line saturation (0 = black/grey, 1 = fully saturated hue)
Fill SatFill saturation (no visible effect when the Fill toggle is off)

8. 3D Object

A ray-marched 3D object skinned with the chain input. Shape morphs between five primitives; Distort, Repeat, Spacing, Jitter, and Smooth shape the field; Zoom, Pan, and Tilt move the camera. Displace pushes the surface by Modifier luma.

EnableEnable 3D Object: SDF raymarch solid object rendering
RESETReset all 3D Object parameters to their defaults
Shape3D object shape: morph between 5 primitives (sphere/box/torus/octahedron/gyroid)
SizeOverall size of the 3D object
DistortDomain warp (sine-domain distortion) strength
DisplaceDisplaces the 3D object surface by Modifier image luma (0 = off; higher = deeper relief)
RepeatDomain repeat: amount of spatial array replication
SpacingSpacing of the repeated array
JitterJitter of the array arrangement
SmoothSmoothness of shape blending (smin)
ZoomCamera distance to the object (pull back to avoid overexposure)
PanCamera horizontal orbit angle
TiltCamera pitch angle

9. Triposr 3D

Renders a 3D mesh skinned with the chain input. The mesh comes from an OBJ file you choose or from one of 100 built-in preset shapes; there is no camera snapshot reconstruction in this version. Several Triposr 3D instances can be in the chain, each with its own mesh. Rotate X / Y / Z, Scale, Displace, and Wireframe are modulatable.

The Preset dropdown lists the 100 built-in shapes with thumbnails.
The Preset dropdown lists the 100 built-in shapes with thumbnails.
An OBJ file loaded through the OBJ File row.
An OBJ file loaded through the OBJ File row.
Rotate YRotation of the 3D mesh around the Y axis (0–360°)
Rotate XRotation of the 3D mesh around the X axis (0–360°)
Rotate ZRotation of the 3D mesh around the Z axis (0–360°)
ScaleOverall scale of the 3D mesh (0.1–5)
DisplaceDisplaces mesh vertices along their normals by Modifier image luma (0 = off; higher = deeper relief)
WireframeWireframe blend: 0 solid, 1 pure wireframe, values between mix both
OBJ FileChoose an OBJ file (.obj) to load a 3D model; clear to remove it
PresetChoose a built-in shape (100 total) as the 3D model; pick No Preset to deselect

10. Particle

Samples the chain input into a 3D particle field. Density, Size, Jitter, and Shape define the particles; Depth Mix and Displace move them along the z-axis; Zoom and Scale X / Y / Z transform the whole field.

Particle panel.
Particle panel.
EnableEnable Particle rendering
RESETReset the particle field transform (Zoom / Scale X·Y·Z / orbit) to defaults
DensityParticle density (number of sampled particles)
SizeParticle size
JitterAmount of particle position jitter
ShapeParticle shape
Depth MixHow much depth affects particle distribution along the z-axis
DisplaceStrength of Modifier luma displacing particles along the z-axis
ZoomViewport zoom of the particle field
Scale XParticle field scale along X (negative mirrors)
Scale YParticle field scale along Y (negative mirrors)
Scale ZParticle field scale along Z (negative mirrors)

11. Flow Warp

Displaces the image along the optical flow computed from the Modifier.

Flow Warp panel.
Flow Warp panel.
EnableEnable the Flow Warp effect (flow field is computed from the Modifier source)
StrengthStrength of the optical-flow displacement effect
DirectionDisplacement direction (forward / reverse / bidirectional)
AccumulateWhether to accumulate displacement across frames
PresetOptical-flow speed preset (fast / medium / ultrafast)

12. Feedback

Feeds the output back into itself to build trails.

Feedback panel.
Feedback panel.
EnableEnable the Feedback effect
DecayDecay rate of the image feedback trail
ChromaColour shift through the feedback loop

13. Slow Motion

Records the incoming image at 30 fps into a segment, then loops it at a slower speed. The segment locks once Buffer seconds have been recorded; drag the Buffer fader or toggle the station off and on to capture a new segment.

SpeedPlayback speed (0.05–1, 1 = original speed): the image is recorded at a fixed 30 fps and played back at 30 x this value. 0.25 = 4x slow motion. The segment loops once recording fills it
BufferSegment length (0.5-15 s): after N seconds are recorded at 30 fps the segment locks and loops. Drag this fader, or toggle the station off and on, to capture a new segment. Larger values use more VRAM
BlendFrame blending: interpolates between two adjacent recorded frames so slow motion stays smooth. Off plays discrete frames with visible stutter

14. Plugin

Runs a third-party fragment shader as a station. Plugins are single .wgsl files read from the plugin folder (default ~/.visionmod/plugins/, top level only). The folder is chosen with the PLUGINS row in the main window and is rescanned automatically when it changes. In this version the Plugin panel shows no parameters; the first plugin in the folder that compiles is used, and a plugin that fails to compile is skipped so the station passes the image through.

Plugin file header

Metadata lives in a block of //! comment lines at the top of the file. api and name.en are required; name.zh, name.ja, author, description, url, and param lines are optional. Parsing stops at the first line that is not a //! comment. The plugin id is the file name in lower case, so renaming the file makes it a different plugin.

15. Global Actions

The action rows at the top of the Contour Scanner card apply to the whole program.

PRESETSAVE AS writes all current parameters to a file. LOAD reads a file; because loading overwrites every current parameter and cannot be undone, an inline OVERWRITE / CANCEL confirmation appears first.
PLUGINSCHOOSE opens a folder picker for the plugin folder; DEFAULT returns to the default folder. The second row shows the folder in use, or No folder available.
OUTPUT+ WINDOW opens an output window showing the end of the chain. The output window can be cropped, panned, and zoomed.
View PanicView Panic: click to force-repaint when the output viewport freezes (no GPU reset)
Help (i)Toggle Help mode: when on, hover descriptions move from the top bar to a tooltip next to the cursor

16. SIGNAL Window

The SIGNAL toggle in the top bar opens a floating window. The left column shows a preview and the seven CV meters (Sequence 1 / 2, Movement, Color R / G / B / Saturation). The right column holds Audio Inputs, CV Output, and LFO.

SIGNAL window: CV meters on the left; Audio Inputs, CV Output routes, and LFO on the right.
SIGNAL window: CV meters on the left; Audio Inputs, CV Output routes, and LFO on the right.

CV meters

Sequence 1SEQ1 sequence signal: horizontal distance between the moving scan point and the anchor (0-10V, smoothed); the fill shows the current output
Sequence 2SEQ2 sequence signal: vertical distance between the moving scan point and the anchor (0-10V, smoothed); the fill shows the current output
MovementMovement energy: mean frame-to-frame luma difference of the full Modifier frame, scaled by Gain (0-10V, smoothed)
Color RedAverage red of the Modifier frame (0-10V), usable as a modulation source and CV output
Color GreenAverage green of the Modifier frame (0-10V), usable as a modulation source and CV output
Color BlueAverage blue of the Modifier frame (0-10V), usable as a modulation source and CV output
Color SaturationAverage saturation of the Modifier frame (HSV S, 0-10V), usable as a modulation source and CV output

Audio Inputs

CardAudio Inputs: four audio input tracks whose levels (RMS) serve as modulation sources
DeviceAudio input/output device selection
ChannelWhich input device channel this track reads from
MeterInput level meter for this track (peak); the top colour line matches the same-numbered Chromascope channel

CV Output

The Output dropdown selects the audio output device and the MIDI output port together. Each route then picks a source signal, an audio output channel, and a MIDI CC number.

CardCV Output: sends modulation signals to audio output channels (ch 3+) and a MIDI device
SourceSource of a modulation signal; sent to both an audio output channel and a MIDI device (per-route CC#, 14-bit)
ChWhich audio output channel this CV signal is sent to (the MIDI side uses the CC# field on the right)
CCMIDI CC number for this route (0-127); sent as 14-bit (MSB=CC, LSB=CC+32), falling back to 7-bit when CC>95
ClockDesign constraint: the CV clock runs on the audio output callback; with no output device, CV and the scan/meters/visuals freeze

LFO

LFO 1 to 4Built-in LFO 1 to 4. Each row has a waveform button that cycles Sine, Triangle, Square, Saw, and a rate value in Hz (0.01 to 20; drag, or double-click to type). Available as modulation sources LFO 1 to 4.

17. Modulation and MIDI Learn

Modulatable faders have a small dot on the left of the label. Left-click the dot to switch the connection on or off; right-click it to open the popup, pick one Source from the grid, and set Amount. Amount is bipolar (-1 to 1, centre 0), so a source can push the parameter either way. Each parameter holds one connection.

Modulation source signals are generated continuously from the live image, audio, and the built-in LFOs.
Modulation source signals are generated continuously from the live image, audio, and the built-in LFOs.
Right-click a modulation dot to open the popup: choose a source, then drag Amount.
Right-click a modulation dot to open the popup: choose a source, then drag Amount.

Sources

Sequence 1 / 2Contour scan signals; Smooth Sequence 1 / 2 are the smoothed versions.
Audio Input 1 to 4 RMSLevel of the four audio input tracks.
MovementForeground motion energy; Movement Smooth is the smoothed version.
Color Red / Green / Blue / SaturationAverage colour of the Modifier frame.
LFO 1 to 4Built-in LFOs set in the SIGNAL window.

MIDI Learn

Faders that support MIDI have a binding dot on the right of the value. Right-click it and choose MIDI Learn, then move a control on your MIDI device; the dot turns to the accent colour when bound. The same menu shows the bound channel and CC and offers Clear Binding. Only 7-bit Control Change messages are learned.

18. Mac App Store Version

The Mac App Store build draws a semi-transparent VISION MOD watermark in the bottom-right corner of the output until the one-time purchase is made. The purchase row sits above PRESET.

Remove WatermarkOne-time purchase that permanently removes the watermark from the output. The App Store shows the price for your region. Once bought, the row reads Purchased: Watermark Removed. If the purchase is waiting for approval, the watermark is removed automatically once it is approved.
Restore PurchasesAlready purchased (reinstall or another Mac)? Restore with the same Apple Account. You will not be charged again.
IMPORTImports settings saved by the earlier DMG version (from ~/.visionmod or ~/.config/visionmod) through a folder picker; the imported settings are applied immediately.