VS 2 - Visual Synthesizer - User Manual
VS 2 Help
Thank you for your interest in VS - Visual Synthesizer.
VS provides an easy and intuitive way to create reactive visuals from your musical projects and compositions. It consists of a collection of customisable materials which can be blended together to create personalised visual compositions.
VS - Visual Synthesizer is much more than just a traditional music visualisation tool. It is designed to help you express your musical creativity graphically, by giving you the power of control and customisation using both audio and MIDI. It takes a synthesizer approach to the world of audio visualisation, making creation of visuals much more accessible to musicians than it has ever been.
If you prefer a hands-on visual demonstration, you can follow along with our YouTube Tutorial Series.
If needed, don't hesitate to contact us with any questions or comments.
Contents
- Overview
- Mixer Panel
- Material Browser
- Layer Properties
- Modulation Sources
- Playlist
- Media Manager
- MIDI Mapping
- Audio Player
- Patch Manager
- Store Panel
- Settings
- Shortcuts
If you’re new to VS and like hands-on learning, these examples can be quickly set up from the Default state. Go through these to get a grip on VS’s basic workflow.
- Loading your track and making visuals react to it
- Using the Visualizers
- Setting up MIDI reactive visuals
- VS as a plug-in in your DAW
- Material Editor: Making your own shaders
- Migrating shaders from VS 1
Overview

Status Bar

- MIDI Learn - Toggle MIDI mapping mode. When active, click highlighted controls to select them. Incoming MIDI messages from your connected MIDI devices will map to the selected control, letting you control VS with your sliders, knobs and notes. Double click a highlighted control to manually enter mapping information. Mappings will show in the MIDI Mapping panel.
- Clock Source (Standalone only) - Select the clock source: Internal, External MIDI Clock, or Ableton Link.
- Tempo - Set project tempo. You can use the +/- buttons, double click for manual insertion, or press and drag left and right. The Tap button allows setting tempo by tapping rhythmically.
- Patch - Displays the name of the selected patch. Click to show/hide the Patch Manager.
- Disk - Save current patch state.
- Revert - Revert current patch to its original state.
- Up Arrow - Load the previous patch in the Bank.
- Down Arrow - Load the next patch in the Bank.
Render output bar

- Help - Opens a help panel with a brief description of various render controls.
- Undo / Redo - Undo or redo the most recent changes.
- Fill Mode - Choose between crop mode — which crops the render output to fill the display — or fit mode — which will fit the render in the display without cropping.
- Full Screen - Enters fullscreen mode, showing only the render output. Double click anywhere inside the window to exit.
- Pop Out - Opens an additional separate render area window without overlays or controls. This provides a clean feed of the render output for projection or video capture, suitable for live performance and VJ use while using VS's interface controls on another screen.
- FPS Display - Shows the current rendering frame rate in frames per second. If performance is low, consider lowering the quality settings.
- Record - Records VS's render output to disk as a video file. Click once to start recording and again to stop. The file will be saved to your 'Recordings Folder. When used as a plug-in, press and hold to arm recording, which starts/stops with host playback.
- Screenshot - Takes a screenshot of VS's render output and saves it as an image.
- Recordings Folder - Opens the recordings folder.
- Recording Settings - Opens the recording settings panel.
- Recording Quality - Level of quality/detail of VS's video recordings. The higher the setting, the larger the produced file.
- Screenshot format - Choose between PNG and JPG image formats.
- Output Folder - Recordings are saved to this folder. Click the folder icon to set a new folder.
- Record Audio From - Choose which audio inputs will be included in the recording. This also selects what VS passes to its output for monitoring.
Render Output
Displays the render output of your session. This is what will be shown during recording or projection.
Main panel selection

Choose which panel to display in the Main panel area. In order:
- Mixer - Resembling an audio mixer, you’ll be able to control the opacity of all Layers using the sliders, as well as the parameters of the selected Layer. This is the selected panel by default.
- Playlist - Create and manage a custom preset playlist.
- Media Manager - View the media being used in Layers along with their path. You can also relink missing media.
- MIDI Mapping - Access and edit all MIDI mappings.
- Audio Player - Load audio and MIDI files to drive your visuals.
Selected main panel

This area displays the selected panel. By default, VS starts with the Mixer panel, which provides access to Layer controls such as the opacity slider, mute/solo buttons, material-specific parameters, and the Material Browser.
The title bar includes a help icon that provides a brief overview of the selected panel.
Info Bar

Displays some information about the selected Layer as well as audio and MIDI status.
- State - Indicates whether the Layer is enabled.
- Type - Shows the type of loaded material (e.g. shader, image, video).
- Name - Displays the name of the loaded material. For media files, the full path is shown.
- Blend Mode - Selected blend mode (e.g. normal, add, multiply).
- MIDI - Shows the Layer's MIDI input channels and note filter settings.
- Audio status - Indicates whether the audio engine is running, along with the current sample rate and buffer size. If audio is disabled, select your audio device in the Settings.
- MIDI event indicator - A visual indicator that flashes when the Layer receives MIDI note events.
- MIDI log - A panel showing all incoming MIDI events along with their time, source, message type, channel and data.
Layer Properties

Control various Layer settings and access the Matrix to modulate both Layer and material parameters. This panel contains independent sections — Input, Color, Text, Video, and Matrix — which can be collapsed. Some are available only when relevant to the currently loaded material (eg. Text is available only when the Layer contains the Text material).
Each section includes:
- A Pin button that keeps the pinned tab on top.
- A Help button that displays a brief description of the section.
- A Revert button that resets all settings in the section to their default values.
Modulation Sources

Access and configure modulation sources to use with VS’s Modulation Matrix, letting you modulate both Layer and material parameters. The 3 tabs provide access to the 2 EGs, 4 LFOs and 4 Audio Modulators. A Help button is also available, providing a brief overview of the section and guidance on how to use the modulators.
Mixer Panel

In this panel you’ll be able to select and control Layers, edit material parameters, and manage the materials used in the Layers. VS offers a layout already familiar in the audio realm: a set of faders and solo/mute buttons.
You can select layers using the 1 – 9 number keys as shortcuts. See all shortcuts in the Shortcuts section.
Parameters

- Speed - Common to all Layers, it will affect the speed of the shader materials and videos.
- Custom Parameters - The following 7 parameters are related to the material in use, so they change with each Layer material.
- Trigger - When using the MIDI Trigger Mode, the Layer will only display its content when MIDI note events are received. In this mode, make sure EG 1 or EG 2 are modulating the ALPHA parameter in the Matrix, otherwise you won’t be able to trigger the material.
Let’s dive deeper into the parameters for each material type:
- Shader - Each shader will have its own set of parameters which will control the given shader behavior.
- Video / Image / Input Materials
- Scale - Scales the material.
- Rotation - Rotates the material.
- X - Changes the position in the x axis.
- Y - Changes the position in the y axis.
- Fill Mode (not available with Render Output)
- Fit - Changes the material size so it can fit in the screen.
- Crop - Crops the material so it can fill the screen.
- Start (Video only) - Defines the starting point of the video.
- End (Video only) - Defines the end point of the video.
- Text
- Scale - Scales the text.
- Rotation - Rotates the text.
- X - Changes the x axis anchor point of text.
- Y - Changes the y axis anchor point of the text.
- Pool Index - Changes the current text, picking a new one from the pool (see Layer Properties → Text).
- Length - Changes the length of the text. This will hide/show characters from the current text.
Layers

Here you have 8 Layers plus a Background Layer. Each of the first 8 Layers consists of:
- Layer thumbnail - Displays a preview of the material in use. The following interactions can be made:
- Press & Drag - Move the Layer position.
- Right click - Open the Layer context menu.
- Double click - Open the Material Browser for browsing and selecting the Layer material.
- Left/Right Arrows (only visible in the selected Layer) - Selects the previous and next materials.
- Layer number - Enables/disables Layer.
- S - Solo/unsolo Layer
- Fader - Controls the opacity (alpha) of the Layer.
The background Layer is fixed underneath all the other layers. Its Material Browser will only let you load media files, such as images and videos. It has the following parameters:
- Alpha - Controls the opacity of the material.
- Scale - Scales the material.
- Rotate - Rotates the material.
- X - Changes the X axis position.
- Y - Changes the Y axis position.
- Rate (Video only) - Changes the playback speed of videos.
- Mode (Video only)
- Loop - The video will play and loop.
- Still - The video will be paused at the frame given by the position parameter.
- Position (Video only) - Current frame of the video.
- Start (Video only) - Starting point of the video.
- End (Video only) - Ending point of the video.
- Fill Mode
- Crop - Media will scale to fill the screen.
- Fit - Media will scale to fit on the screen.
The Layer context menu can be opened by right clicking the Layer thumbnail. For the Background Layer, the Files option replaces Materials, opening the Media Browser instead.

- Materials (Excluding Background Layer) - Opens the Material Browser.
- Files (iOS) - Opens iOS file browser.
- Photos (iOS) - Opens iOS Photos library.
- Copy (Excluding Background Layer) - Copies the Layer state.
- Paste (Excluding Background Layer) - Pastes the copied Layer state.
- Files (Background Layer only) - Opens the Media Browser.
- Reset - Lets you reset the Layer in various ways.
- Material - Clear the material from the Layer.
- Material Parameters - Resets the material to its original state.
- Modulation Matrix - Resets all the Matrix values.
The material previews in the Layer thumbnails are animated, which can consume resources. The preview will be a static snapshot of the material.
Material Browser

You can change a Layer’s material in the Material Browser. As previously mentioned, you can open it by either double clicking the Layer thumbnail or by opening the Layer context menu (right click) and clicking ‘Materials’.
Once open, you’ll be able to select the material type using the providers on the left. The remainder of the interface shows the materials themselves.
The material type is divided into categories:
- Shaders - VS offers a range of shaders. The ones from the Factory bank are available by default, while other banks can be acquired as expansions. Each shader has its own set of unique parameters.
- Visualizers - These are a special kind of shader, capable of receiving audio information directly. Here you’ll find various visualizers and an oscilloscope, each one with its own set of parameters.
- User Materials - Your custom materials. See Material Editor: Making your own shaders.
- Media
- Image / Video - Load images and videos from VS’s resources or from your disk.
- Image Folder - Choose a folder either from VS's resources or directly from your local disk to serve as an Image Pool. Once selected, you can easily cycle through the images in that folder using the 'Pool' parameter on the layer.
- Text - Insert text in a Layer. Text can be edited in Layer Properties → Text.
- Input - Live input feeds.
- Render Output - The output of all Layers combined. This can be used for feedback effects, achieving unique visuals even with few materials.
- Syphon (macOS only) - If a Syphon server is active, receive its video feed in the Layer — useful for integrating video from other media applications. Note that Syphon must be enabled in the Settings.
- Spout (Windows only) - If a Spout server is active, receive its video feed in the Layer — useful for integrating video from other media applications. Note that Spout must be enabled in the Settings.
- Camera - If a camera is connected to your computer, this option receives its live feed in the Layer.
If you want to learn more about each material, please check our Shaders, Images/Videos, Visualizers, Text and Inputs Youtube tutorials.
Bookmarks, favorites and custom media in iOS

Within the Image/Video and Image Folder providers, you will find a Bookmarks section. This area displays your favorite folders, which you can set by clicking the Star icon next to any folder name. You can also manually add new directories to this list by clicking the Folder button shown in the image above.
Material Search and Clear Cache.
The search bar, located on top, can be used to search through all the available materials.
Materials can be loaded by clicking the Load button located on the bottom. Shaders, Visualizers and Media can also be loaded by double clicking the desired material.
All shaders have an Options button which will open the context menu.

- Edit (user materials only) - Edit the material in the Material Editor.
- Clone - Create a copy of the material, move it to User Materials and open the Material Editor.
- Export (user materials only) - Export the material.
- Delete (user materials only) - Delete the material.
- Rename (user materials only) - Rename material.
On the bottom left there is a clear cache button. Resetting the shader cache will force them to recompile on the next reboot. Try this if shaders are failing to display.
Layer Properties

This panel houses material-specific settings, as well as input settings and the Matrix. Only the relevant sections for the current Layer are available to tweak, and the others will be collapsed and disabled. This panel is always linked with the selected Layer.
Input
Layers can receive both MIDI and audio to trigger the materials and/or feed the visualizer shaders. You can get polyphony in the Layers by sending MIDI note events to a Layer, each note representing a given “voice” that will trigger a material. You can trigger up to 4 voices at a time.
MIDI

MIDI can be used to trigger the Layer materials, making them appear with note on events and disappear with note off events. The result is that the material will be on screen for the duration of the note.
- Channels - MIDI channels which the Layer will be listening to. MIDI events from the other channels won’t be received.
- All - Select all channels.
- Reset - Only select channel 1.
- Note Range - The range of notes that will be accepted by the Layer. Notes outside of the range won’t be received.
- Voice Mode
- Poly - Layer will be in polyphonic mode, letting you trigger up to 4 voices of the current material. You can change the maximum number of voices in the Settings.
- Mono - You’ll only be able to play one voice at a time.
- Glide - This is related to the KBD source in the Matrix. It's the time it will take for the note to reach its value from the last received note, making a ramp rather than a jump.
Audio

These settings are only relevant when using shader materials which process audio data directly, such as the ones from the Visualizers category. Audio input is required for them to work properly. See Using the Visualizers for more information.
- Source - The source of the audio sent to the material. It can be audio from VS’s Player or one of the input audio device’s channels. When using VS as a plug-in in a DAW, the stereo bus '1/2' contains the audio entering the plug-in.
- Gain - Gain applied to the signal fed to the materials. It won’t affect the original source.
- Buffer Size - The size of the audio buffer sent to the materials. Only relevant for Visualizers using the waveform information. Larger values will retain more information, often resulting in a larger chunk of audio being displayed.
- Spectrum Speed - Spectrum frequency bin decay rate. Only relevant for Visualizers using the spectrum information. Slower values will make smoother spectrums.
Color

When using shader or text materials in a Layer, you can adjust their color. In all Layers except the background Layer, you can also change the blend mode applied to the Layer.
Blend modes determine how Layers interact visually by applying different operations to their color information. By default, Layers use the Normal blend mode, meaning upper Layers visually appear above lower ones in the stack.
- Saturation/Brightness picker - You can control the saturation (X axis) and brightness (Y axis) of the current color.
- Hex Color - Enter the color in a hex format. (eg: #ffffff)
- Invert Color - Inverts the hue of the current color.
- Hue - Changes the hue factor of the color.
- Blend mode - Sets the blend mode for the current Layer. The available blend modes are: Normal, Soft Add, Overlay, Screen, Lighten, Subtract Soft, Reverse Subtract, Subtract, Add, Multiply, Darken, Exclusion.
Text

These settings will only be available when using the Text material. You can add text items to a pool, which can be scanned through in real time with the Pool Index parameter.
- Font - Selects the text font.
- Size - Selects the font size.
- Style
- B – Applies bold styling to the text.
- / – Applies italic styling to the text.
- U – Applies an underline to the text.
- H. Alignment – Sets horizontal alignment: Left, Center, or Right. This defines the anchor point from which the text expands horizontally.
- V. Alignment – Sets vertical alignment: Top, Center, or Bottom. This defines the anchor point from which the text expands vertically.
- Width – Defines the width of the virtual canvas in which the text is drawn, as a proportion of the rendering canvas. This determines where line breaks occur.
- Pool - The pool of texts of the Layer. Pool items can be selected by clicking on them or using the Pool Index parameter of the Layer.
- + - Add a new text entry to the pool.
- - - Remove the selected pool entry.
- Drag - Change the position of the entry in the pool.
Video

These settings will be available when using a video in a Layer.
- Loop - Choose whether the video will loop or not.
- Restart - When using the MIDI option, video will restart when the Layer receives a MIDI note on message.
Matrix

This section is available in all Layers except the background Layer. It lets you modulate both Layer and material parameters, adding motion and reactivity to your visuals.
The Modulation Matrix is organized with the target parameters on the left and the modulation sources on top. The white bars under each modulation source show their respective values in real time.
There are two pages, one with the 2 EGs and 4 LFOs, and the other with the 4 Audio Modulators, as well as the Keyboard and Velocity sources.
When using a Layer in MIDI Trigger Mode, it will only respond to incoming MIDI note messages. For this mode to function properly, either EG 1 or EG 2 must be assigned to modulate the Layer's Alpha parameter. By default, the Matrix starts with EG1 modulating Alpha, so MIDI Trigger Mode works immediately upon activation.
To change a modulation amount, press a cell and drag up/down or left/right. The modulation amount can be positive or negative. To quickly locate a given parameter in the Matrix, simply long press it and the Matrix will be displayed along with the parameter highlighted.
Apart from the EGs, LFOs and AMs, which be explained in the next chapter, you have two other modulation sources:
- KBD (Keyboard) - The pitch of the note on events. The MIDI pitch 60 corresponds to the central point of the modulation (0). Higher notes will act as a positive modulation increasing with pitch, and lower notes will likewise act as a negative modulation.
- VEL (Velocity) - Velocity of the MIDI note on events.
Modulation Sources
The bottom right corner of VS’s interface is dedicated to the Modulation Sources.
Modulation Sources are used to create modulation signals that change the various Layer parameters, making them vary over time. These modulations are managed in the aforementioned Modulation Matrix and are responsible for introducing audio and MIDI reactivity to your visuals.
There are three different modulation sources available: EGs (Envelope Generators), LFOs (Low Frequency Oscillators) and AMs (Audio Modulators).
Envelope Generators

Envelope Generators create shapes that react when a MIDI note is triggered. You can use them to control a visual parameter (such as opacity, size, or glow), making it change when the note starts and ends. There are 2 EGs available, each with their own controls.
- Attack - Duration of the attack phase. Short values make an abrupt start, while long values make a long upward ramp while the note is held down.
- Decay - Duration of the decay phase. Once the attack phase finishes, the signal decays to the Sustain value.
- Sustain - Sustain level. After the Attack and Decay phases, the envelope will remain at this value until the note is released.
- Release - Duration of the release phase. Once the note is released, the envelope will decay to 0. A short release will decay quickly, while a long release will decay slowly.
LFOs

Low Frequency Oscillators are perpetually moving signal generators. They’re useful for adding independent, constant motion to visuals. They can be configured to start on MIDI notes and follow your project tempo. Four LFOs are available.
- Waveform Display - View of the generated modulation signal.
- Waveform - Shape of the generated waveform.
- Sine - Sinusoidal waveform.
- Square - Square-shaped waveform.
- Saw - Sawtooth-shaped waveform.
- Tri - Triangle-shaped waveform.
- S&H - Sample & Hold. Periodically generates a new random value.
- FS&H - Filtered Sample & Hold. Periodically generates a new random value and smoothly transitions to it with a ramp.
- D.Saw - Double Saw. Similar to a sawtooth, but inverts its direction when crossing 0.
- R.Sin - Random Sine. Makes random sine-like shapes.
- Phase - Determines the position from which the waveform cycle starts. In most cases, only relevant when Retrigger is set to ‘Key’, or Sync is enabled.
- Sync - When enabled, the oscillator Rate will synchronize to your project tempo. If VS is running as a plug-in in a host, the oscillator will restart when transport is started.
- Rate - Oscillator speed. Displayed in Hertz (cycles per second) when Sync is off, and displayed in Beats otherwise.
- Retrigger - When set to Key, the waveform cycle will restart when a MIDI note is played.
- Channel (Only when Retrigger is set to 'Key') - Filter the MIDI by channel; only MIDI from this channel can trigger a restart.
- One Shot - When enabled, the LFO will stop after a single cycle is played.
- Offset - The LFO generates a bipolar signal ranging from -1 to 1, meaning modulated parameters will range above and below their original value. The Offset pushes the signal into only the positive or negative values, turning it unipolar. Useful for when you want the LFO to modulate parameters in only one direction.
Audio Modulators
Audio Modulators receive audio from the Player or from the selected input channels of your Input Audio Device, selected in the Settings. It then generates a modulation signal following the intensity of the incoming audio. This can make your Layers react to the intensity of your music. There are 4 AMs available.
The AMs have two modes: Gate and Spectrum.
Gate

In Gate mode, the AM follows the peaks (highest amplitude values) of the sound. This can accurately detect elements with loud transients in dynamic music, such as drums and percussions in general.
Spectrum

If you’re working with mastered music lacking strong transients and dynamics, Spectrum mode may prove more adequate.
It works similarly to Gate mode, but you can click and drag the spectrum to isolate a specific frequency band. This can be used to try and pinpoint elements in a mix, such as bassy kick drums or hi-hats.
- Display
- In Gate mode, displays the rectified audio signal.
- In Spectrum mode, displays the spectrum of the audio signal. Click and drag to select the frequency band.
- Mode - Switch between Gate and Spectrum mode.
- Threshold - Amplitude level that the audio must cross to generate a signal. Adjust this according to the volume or intensity of your music.
- Gain - Increase the intensity of the generated signal. If you’re very precisely detecting peaks, the resulting modulator signal may be subtle; increase the Gain to amplify it.
- Monitor
- In Gate mode, toggle to hear the detected peaks.
- In Spectrum mode, toggle to hear the selected frequency band.
- Attack - Once the incoming audio crosses the Threshold, the generated modulation signal starts growing from 0. A large attack value makes the generated signal grow slowly, making it fade in. Low values make it appear abruptly.
- Release - Once the incoming audio drops under the Threshold, the generated modulation signal starts fading to 0. A large release value makes it decrease slowly, making it fade out over time. Low values make it disappear abruptly.
- Input - Select audio input. These are the input channels of your Input Audio Device. Audio from the Audio Player is always available as ‘Player’.
- Lock - Keep this AM’s state when changing through patches.
- Value Display - This vertical bar provides a helpgul visualization of the generated modulation signal.
Playlist

VS offers a way to create custom preset playlists, useful in live situations or for automatically changing presets.
By default, the playlist is empty. You can freely add presets to it, and each slot is MIDI mappable, making it easy to trigger specific presets via MIDI messages. This makes the playlist panel not only a performance tool but also a convenient MIDI mapping interface for swapping presets.
It is also a way of having a list of presets which can be selected using the arrow buttons.
Once you have a prepared playlist, you can define the duration of each one along with fade in and fade out times for smooth transitions. The fade times are applied when a preset is selected manually (via mouse click), triggered through MIDI, or when the current preset’s time is up and it moves on to the next one.
Top Bar

- + - Adds the current preset to the list. The entry will be added next to the selected entry.
- Play - Starts the playlist.
- Stop - Stop the playlist.
- Loop - Turns loop on/off. When off, once the playlist reaches the final entry, it will stop.
- Top Arrow - Triggers the preset of the previous entry.
- Bottom Arrow - Triggers the preset of the next entry.
- Pencil - When active, lets you edit general duration and fade times.
- Time - Default preset duration in minutes and seconds. Changing this will overwrite the settings on every entry.
- Fade in - Default preset fade in in seconds. Changing this will overwrite the setting on every entry.
- Fade out - Default preset fade out in seconds. Changing this will overwrite the setting on every entry.
Playlist Entry

- Index - Entry position index.
- Name - Name of the preset of the entry.
- Pencil - Edit MIDI mapping configuration.
- Channel - MIDI channel of the MIDI mapping.
- CC/Note - CC value or Note number of the MIDI mapping.
- Pencil - When active lets you change the entry duration.
- Time - Entry duration in minutes and seconds.
- Bin - Remove the current entry.
- Drag indicator - Press and drag to change the entry's position in the Playlist.
Bottom Bar

- + - Creates a new playlist.
- Disk - Saves current playlist.
- Bin - Deletes current playlist.
- Playlist browser - Browse and select playlists.
- Import - Imports a playlist to the list.
- Export - Exports current playlist.
Media Manager

The Media Manager provides a general overview of the media assets (such as images and videos) used in your patch and lets you relocate missing media files.
The panel displays the Media Name and Path for each Layer. Any media that failed to load will appear in red. The Relink Media button can be used to reference a new folder containing the missing media. Please note that the file names must be the same for VS to successfully relink them.
If a media file was loaded from disk, you can right click the file path to open the context menu, and select Show in Explorer to open the folder containing the file.
When exporting custom banks or patches, you have the option to export assets as well. This will export the media files in a folder alongside the bank/patch file. Use the Media Manager to import the media when importing on another computer.
MIDI Mapping

All your MIDI mappings are displayed in the MIDI Mapping panel. To create a mapping, enable the MIDI Learn mode located in the Status Bar. Clicking a parameter and sending a MIDI message from your controller will establish the mapping. You can also double click a highlighted control to manually enter mapping information. Toggle MIDI Learn off to finish mapping.

The MIDI Mapping panel displays the mapped Parameter name alongside the Channel, Message (type and number), Range and Resolution. Under Actions you can delete the mapping or open the MIDI Assign dialog, where you can configure the mapping.

- MIDI Message - Select between a Note and a CC (control change) message.
- Channel (1 - 16)
- CC/Note (0 - 127)
- Min/Max - Set the mapping range minimum and maximum values.
- 14-bit MIDI (CC only) - Enable this if you’re mapping to high resolution MIDI CC messages. Some high-end MIDI controllers may need this.
- Reset - Delete the mapping.
- Cancel
- Save
The Link option is available for mappings of Layer parameters (those displayed in the Mixer panel). When enabled, the MIDI message will control the parameter in that position for the selected layer. By MIDI mapping Layer selection and all Layer parameters in Link mode, you can have flexible control of your Layers.
Audio Player

The Audio Player can be selected in the Main Panel selection, located in the left sidebar. It allows loading and playing audio and MIDI.
To load an audio or MIDI file, drag it onto the Audio Player, or click the browser icon to open the file browser and load from disk. Loading any of the files from the Demos folder will load both the audio and the respective MIDI. You can load .wav, .flac, .mp3, .aif, .aiff, .mid, and .midi files.

- Audio settings
- Auto play on record - If enabled, the player automatically begins playback when a recording starts.
- On stop, end recording - If enabled, any ongoing recording stops when the player reaches the end and doesn’t loop.
- Transport time - Clicking anywhere on the audio waveform lets you jump to that exact point in the track and start playback from there.
- Play - Begin playback from the start.
- Stop - Stop playback.
- Loop - If enabled, loops the playback.
- Gain - Gain control for the audio.
- Open browser - Open the built-in browser for loading audio and MIDI files.

The player output is available as an input in the Audio Modulators and Layer Properties → Input. If you want to set up audio reactivity to a recorded song or an audio file, start by loading it into the player. Then handle it in the AMs and/or in the Layer Properties. See Loading your track and making visuals react to it and Using the Visualizers.
Patch Manager

Click the patch name on the Status Bar to open the Patch Manager.
VS’s Patch Manager has a simple layout with banks displayed on the left, patch list in the center and the tags pool for patch search filtering on the right. The patch list displays patches from the selected bank.
The patch browser’s left side contains three default banks:
- Factory - A selection of built-in patches.
- Local - The default bank where custom patches are saved
- Favorites - Provides a shortcut to all starred/favorited patches.
There are additional banks available as separate expansions. Any banks you own will appear unlocked. See Store Panel for more information.
You can import/export customs banks with the import/export buttons on the bank section. You can also import custom patches to either the local bank or to custom banks using the import button in the patches section.
When exporting your custom patches or banks, you have the option to export the assets — media files used by the patches. Use the Media Manager to relink your assets when importing them in another computer.
You can filter your patches either by name, using the search bar, or by the tags in the filter section.
To save a patch, click on the save icon in the Status Bar. This will open the patch save dialog.

Here you can change the patch name, select the bank where you’ll save it and choose its tags. You can then save it as a new patch (Save as), which will create a .vpf file, or you can overwrite an existing patch (Save) if you’re using a name that is in use by another patch. You can also choose to save a reference to the current audio/MIDI files in the patch, which will then be loaded into the Audio Player when the patch is opened.
Store Panel
Click the Store Panel icon in the bottom left corner of the interface to open the Store Panel.
![]()

The Store Panel shows available expansion packs for VS. These expansions include additional patches, media and/or shaders.
Each item includes a short description, along with links to the preview videos and to purchase.
Settings

- Window Scale - Scale the window and UI elements by this factor.
- Input Audio Device (Standalone only) - Select audio input device. Audio Modulators and Layers will receive audio from this device’s input channels.
- Output Audio Device (Standalone only) - Select audio output device. Audio Player output will play through this device.
- Sample Rate (Standalone only)
- Buffer Size (Standalone only)
- Render Output - Enable NDI, Spout (Windows) or Syphon (Mac) video output.
- Frame Rate - Target refresh rate of VS render output.
- Output Resolution - The resolution at which the output is rendered. You can choose betweeen a standard resolution from the list or select a custom one. Set to lower resolutions for lighter GPU load. Set to higher resolutions for a more detailed visual output.
- Aspect Ratio - Select between different output formats.
- Landscape - Uses the width and height of the output resolution.
- Portrait - Swaps the Output Resolution width and height for a vertical output.
- Square - Height will have the same value as the width.
- Render Quality - Select Performance for more consistent framerate or High Resolution for the best image quality.
- Display Latency - Set visual latency in frames.
- Respond to Program Change - When enabled, you can switch between patches using MIDI Program Change messages. You can filter these messages by specific MIDI channels.
- Voices - Number of simultaneous polyphonic visual voices per Layer. With 4 polyphonic voices, each Layer can display 4 simultaneous instances of its material.
- Animated layer thumbnails - If enabled, Layer thumbnails display a real-time representation of the Layer output.
Shortcuts
- New - Opens the default patch and reverts it to its initial state.
- macOS: Cmd+N
- Windows: Ctrl+N
- Save - Save changes on the current patch.
- macOS: Cmd+S
- Windows: Ctrl+S
- Save As - Save patch under a different name.
- macOS: Cmd+Shift+S
- Windows: Ctrl+Shift+S
- Undo - Undo most recent change.
- macOS: Cmd+Z
- Windows: Ctrl+Z
- Redo - Redo most recent undone change.
- macOS: Cmd+Shift+Z
- Windows: Ctrl+Y
- Layer Selection - Select Layers 1 through 8.
- macOS/Windows: 1 - 8
- Background Layer Selection - Select the Background Layer.
- macOS/Windows: 9
- Enable Layer - Enable selected Layer.
- macOS/Windows: E
- Solo Layer - Solo selected Layer.
- macOS/Windows: S
- Fullscreen - Enter fullscreen mode, showing only the render output.
- macOS/Windows: F
- Find - In the Material Browser, filter shader materials by name. In the Material Editor, search and highlight text.
- macOS: Cmd+F
- Windows: Ctrl+F
Getting Started: Basic Examples
If you’re new to VS and like hands-on learning, these examples can be quickly set up from the Default state. Go through these to get a grip on VS’s basic workflow.
Loading your track and making visuals react to it
Let’s start with something simple — loading your own audio file and making the visuals respond to it.
Load your music
- Open the Audio Player by clicking its icon in the left sidebar.
- Load your music file (wav, mp3, etc.) by dragging it onto the panel or loading through the browser.
- Start playback by clicking the Play icon or tapping the waveform.
- Your song should now be playing.

Load a Shader Material onto a Layer
- Open the Mixer panel.
- Select Layer 1 — this layer uses the Wobbly Ring shader by default, which we’ll be using for this example. You can right click the layer thumbnail to open the context menu and select Materials to browse other materials.
- Make sure Layer 1 is enabled. You should be seeing your material on the render display.

Set up an Audio Modulator
- In the bottom-right corner, find and open Modulation Sources → AMs (Audio Modulators). Select AM 1.
- Make sure the AM is in Gate mode. Set Input to ‘Player’ so it listens to your music.
- Adjust the Threshold — this controls when the modulator activates. Set it so the waveform crosses the line at the peaks, the loudest parts of the song.
- This creates an envelope follower — basically, a signal that goes up and down with the energy of the music. This is the signal that your shader will react to.

Connect the Sound to a Visual Parameter
- With the Mixer still open and your Layer 1 selected, look for a parameter you want to modulate. Let’s use Glow.
- Click and hold on the Glow knob. The Matrix will open in the Layer Properties panel on the right.
- In the Matrix, find the column for AM 1, and follow it to the row labeled Glow. Click and drag that cell to set the modulation amount. Drag right for Glow to increase with the music. Drag left for Glow to decrease with the music.
- You should now see the Glow effect pulsing with your track.

Play around with the modulation amount and the AM 1 settings (especially Threshold and Gain). You’ll get a feel for how to make the reaction tighter or smoother.
Explore the other modulators as well to understand how they work. The LFOs are low frequency oscillators that constantly move, while the EGs generate envelopes from MIDI input. The method for setting up a visual modulation is the same: open the Matrix, find the proper column and row for your source and target, and set a modulation amount.
Using the Visualizers
Visualizers are special shaders designed to directly respond to audio input, unlike regular shaders which can only be controlled by modulators (like AMs or LFOs).
Load your music
- Open the Audio Player by clicking its icon in the left sidebar.
- Load your music file (wav, mp3, etc.) by dragging it onto the panel or through the browser.
- Start playback by clicking the Play icon or clicking the waveform.
- Your song should now be playing.

Load a visualizer shader onto a layer
- Open the Mixer panel and select Layer 1. Right click it and open the Material Browser.
- Navigate to Visualizers → Shaders. You should see a selection of factory visualizers.
- Select Bars Spectrum 1 and load it.

Set the audio input
- With your layer selected, go to the Layer Properties on the right and open the Input tab.
- Scroll to the Audio section and set Source to ‘Player’ so it listens to your music.
- Adjust the Gain to change how loud the audio appears to the visualizer.
- You should now see your visualizer react to your music.

Important Note: Some visualizers are waveform-based, while others are spectrum-based. The factory visualizers are named accordingly, including 'waveform' or 'spectrum' in their names. The difference between them is that waveform visualizers will display the audio waveform, while spectrum visualizers display the frequency data (FFT bins).
The Buffer Size control under Layer Properties → Input applies only to waveform shaders. It controls how much of the waveform is shown, up to 2 seconds. It has no effect on spectrum visualizers.
Likewise, the Spectrum Speed control applies only to spectrum visualizers, and controls how quickly the visual reacts to incoming audio. It has no effect on waveform visualizers.
For this example, we’ve used a spectrum-based visualizer. Explore both types and the Buffer Size / Spectrum Speed controls to understand them better.
Optional: Modulate other parameters
Visualizers, like regular shaders, may also have additional parameters — position, height, etc. These can still be modulated through the Matrix.
See Loading your track and making visuals react to it for more details on how to use the Matrix.
Setting up MIDI reactive visuals
MIDI notes trigger the EG (envelope generator) in the Modulation Sources, which then control the Layer’s alpha. This makes the visuals appear when notes are played.
In this example, we’ll make a shader respond to MIDI input from a MIDI controller. If you don’t have a MIDI controller, you may use one of the included factory MIDI files instead.
Load a Shader Material onto a Layer
- Open the Mixer panel and select Layer 1. Double click it to open the Material Browser.
- Navigate to Shaders → Factory. You should see a selection of factory visualizers. We’ll use the Wobbly Ring shader for this example.

Enable MIDI Trigger mode
- In the Layer Parameters, change the Trigger mode to MIDI. This allows the shader to respond to MIDI note input and display multiple visual “voices.”
Note: The shader will disappear from view. This is expected. It only appears when MIDI notes are played.

Provide MIDI input
- If you have a MIDI controller: Connect it and play a few notes. You should see the shader react.
- No MIDI controller? Open the Audio Player. Open the browser and load one of the factory demo files. These demos include preloaded MIDI tracks that will trigger visuals when played.

Adjust EGs (Envelope Generators)
- Open the EGs tab under Modulation Sources.
- Adjust the Attack, Decay, Sustain and Release times to change how the shader appears when you play a note. For instance, high attack and release values will make it fade in slowly while you hold the note, and disappear slowly once you let go. Small values will make it snappy.

Optional: Adjust Layer Input settings
- With your Layer selected, open the Input tab in the Layer Properties panel (right side of the interface).
- In the MIDI section, you can:
- Filter by Channel — useful if you want different layers to respond to different MIDI tracks.
- Set Note Range — limit which notes will trigger the shader.
- Set Voice Mode to Poly (up to 4 voices shown at once) or Mono (only the most recent note is shown).
VS as a plug-in in your DAW
VS can run inside your DAW as an AU, VST, or VST3 plug-in. There are three common ways to use it:
1. Use VS as an instrument and receive MIDI
This lets you trigger visuals with MIDI from other tracks.
- Load VS (instrument) on its own instrument track.
- In your DAW, route MIDI from other tracks to this one.
- VS can receive MIDI on up to 16 separate channels, letting you trigger different layers independently. For information on how to use MIDI in VS, see Setting up MIDI reactive visuals.

2. Use VS as an instrument and receive audio
Lets you send audio from other tracks to VS for audio-reactive visuals.
- Load VS (Instrument) on its own track.
- Route audio from another track into the VS track. The audio will come through the 1/2 stereo bus, available in the Audio Modulators (A) and Layer Properties → Input (B). *


3. Use VSfx (effect version)
VSfx is the Effect version of VS. It can be placed directly on an audio track as an insert effect.
- Load VSfx on an audio or instrument track.
- The audio from that track is automatically sent into VS. Access the incoming signal via Bus 1/2 in the Audio Modulators and Layer Properties → Input. *

Material Editor: Making your own shaders
VS’s built-in Material Editor allows editing and creating your own GLSL fragment shaders. The simplest way to create a new shader is to clone and edit an existing one from the Material Editor. When you clone a shader material, it will automatically open the editor window. Your edited shaders are saved under Shaders → User Materials in the Material Browser.


You can also import shader materials using the Import button located in the bottom left corner.

VS's Material Editor consists of a text editor, a live preview window and a set of knobs representing the standard and custom material parameters.

Every time a change is made in the code, the shader material will be updated. If the code is right and there are no errors, the preview window will update with your changes. The preview window can be moved by dragging, and can be made full screen by clicking the full screen icon in its corner. To close the full screen preview, double click on the preview area.
Structure of a shader
VS shaders follow a structure similar to ISF (Interactive Shader Format), but the two formats are not identical or compatible with each other. This means that if you import an ISF shader as a new shader material into VS, it will not work immediately.
Each shader’s source code starts with a manifest (commented JSON block) which declares the shader’s properties/parameters. A shader must have a manifest in order to load correctly.
Here is an example:
/*
{
"author": "",
"color": "white",
"movement": true,
"parameters": [
{
"default": 0.5,
"name": "x"
},
{
"default": 0.5,
"name": "y"
},
{
"default": 0.75,
"name": "spread",
"min" : 0.1,
"max" : 5,
}
],
"url": "",
"uuid": "babfc75f-178c-44e3-9ef5-89208122f156"
}
*/
Every manifest must have the following properties:
- uuid - Unique identifier. When a shader is cloned, a new uuid is automatically generated. You can create new uuids at https://www.uuidgenerator.net/
- color - Default color. It can be an SVG (Scalable Vector Graphics) named color or a hex string starting with # (eg: #ff0000).
- movement (either 'true' or 'false') - If set to true, will enable the speed layer parameter.
The following properties are optional:
- parameters - An array of JSON objects with name, default, min (optional), max (optional) properties. Min and max, if not declared, are 0 and 1 by default.
- url - URL to shader’s author/source.
- author
The example shader above declares three parameters: 'x', 'y' and 'spread', which become available as variables for use in the code.
Note: A parameter’s default value must be normalized (between 0 and 1). Despite this, min and max are real values, not normalized. For example, for a parameter that ranges from 0 to 4, a default of 0.5 will place the value at 2.
Environment variables
There are specific pre-declared environment variables to be aware of. Keep these in mind when editing your shaders:
- time (highp float) - Linked with the Layer’s ‘Speed’ parameter.
- alpha (highp float) - Linked with the Layer’s ‘Alpha’ parameter, controlled through the Mixer slider.
- color (highp vec4) - Linked with the Layer’s color.
- resolution (highp vec2) - Holds the viewport resolution.
- texCoord (highp vec2) - Holds the texture coordinates, normalized between 0 and 1.
- fragColor (highp vec4) - Equivalent to gl_FragColor. Copy your final pixel color to this variable and it will be displayed.
Cloning shaders from the Factory bank and reading the code is the best way of learning how VS shader materials work.
Adapting a GLSL shader for VS usage
GLSL fragment shaders are a highly complex topic that requires a good understanding of computer graphics, as well as deep knowledge of mathematics — something we are by no means masters of.
Still, if you are brave enough to take on this challenge, we recommend reading The Book of Shaders as a starting point. It’s an incredible online resource written by Patricio Gonzales Vivo.
We do feel that it is important to mention some of the most basic caveats of converting a typical GLSL fragment shader code to be compatible with VS. Let's take the circle shader code from The Book of Shaders as an example.
float circle(in vec2 _st, in float _radius)
{
vec2 dist = _st-vec2(0.5);
return 1.-smoothstep(_radius-(_radius*0.01), _radius+(_radius*0.01), dot(dist,dist)*4.0);
}
void main()
{
vec2 st = gl_FragCoord.xy/u_resolution.xy;
vec3 color = vec3(circle(st,0.9));
gl_FragColor = vec4( color, 1.0 );
}
If you paste the following code into VS material editor after the manifest, it will show nothing but green and display an error, as u_resolution and gl_FragColor are not declared variables. Replace u_resolution with resolution and gl_FragColor with fragColor, our environment variables. Refer back to Structure of a shader for a list of usable environment variables.
No more errors will be displayed and the preview will turn black. However, nothing seems to be displayed yet. If you drag the window to the top-left side of the editor window, you will see a deformed white circle — it’s being drawn with no regard to the viewport position or size.
In order to paint inside the preview window, we must use the 'texCoord' variable that holds the normalized texture coordinates. In order to do this, replace the line:
vec2 st = gl_FragCoord.xy/resolution.xy;
with
vec2 st = texCoord;
Now the circle is positioned within the bounds of the preview window. However, it’s vertically squashed. Since texCoord holds normalized positions, it doesn't take into account that the display window might not be a square. This results in the height and width of the rendered circle being stretched proportionally to the viewport’s height and width.
We need to calculate the ratio ourselves. This is done in most of the factory materials. If you replace:
vec2 st = texCoord;
with
float div = resolution.y/resolution.x;
vec2 aspect = vec2(1.,div);
vec2 st = texCoord*aspect;
You will see that the circle now has the right proportions, but is going outside of the window bounds. With some further tweaks for better positioning, we end up with the following code:
float circle(in vec2 _st, in float _radius)
{
vec2 dist = _st;
return 1.-smoothstep(_radius-(_radius*0.01),
_radius+(_radius*0.01),
dot(dist,dist)*4.0);
}
void main()
{
float div = resolution.y/resolution.x;
vec2 aspect = vec2(1.,div);
vec2 st = texCoord*aspect-vec2(0.5, 0.5*div);
vec3 color = vec3(circle(st, 0.3));
fragColor = vec4( color, 1.0 );
}
So now that we have a centered circle drawn in the preview, let's take advantage of the built-in variables to control alpha, color, and brightness. Then, let’s add parameters to the manifest to control the circle's x, y position and radius.
/*
{
"author": "",
"color": "violet",
"movement": true,
"parameters": [
{
"default": 0.5,
"name": "x"
},
{
"default": 0.5,
"name": "y"
},
{
"default": 0.1,
"name": "radius",
"min": 0.1,
"max": 2
}
],
"url": "",
"uuid": "1823757c-871c-4057-baee-8c69a8ff1ff8"
}
*/
#ifdef GL_ES
precision highp float;
#endif
float circle(in vec2 _st, in float _radius)
{
vec2 dist = _st;
return 1.-smoothstep(_radius-(_radius*0.01),
_radius+(_radius*0.01),
dot(dist,dist)*4.0);
}
void main()
{
float div = resolution.y/resolution.x;
vec2 aspect = vec2(1.,div);
vec2 st = texCoord*aspect-vec2(x, y*div);
vec3 c = vec3(circle(st, abs(sin(time))*0.4+radius));
vec3 finalColor = vec3(c);
float coloredPixels = dot(clamp(finalColor, 0., 1.), vec3(1.0));
fragColor = vec4(finalColor * color.rgb, alpha * coloredPixels);
}
Take special notice of the last 3 lines. We’re obtaining coloredPixels — a float variable indicating how far from black a pixel is — and using it for our final opacity. This turns the black background transparent. It’s important to have transparency in your VS shaders for the visual “voices” to overlay properly and for other, underlying layers to remain visible. For more information on this, check Migrating shaders from VS 1.
</br>
If you want to learn more, please check our Shader Editor tutorial on Youtube.
Migrating shaders from VS 1
Due to internal changes from version 1 to 2, shader materials made for VS 1 need to be tweaked to work properly in VS 2. There are two main differences:
- The previously available 'opacity' variable no longer exists, so your shaders will fail to compile.
- The fragColor calculation now depends on coloredPixels — a calculation determining how far a pixel is from black.
- It was previously impossible to make black shaders due to how VS handled color and transparency: black pixels were turned transparent when the alpha decreased. In order to allow black shader materials, we now calculate a new variable (commonly named coloredPixels) before applying our Layer’s color. The coloredPixels variable calculates the pixel’s intended opacity based on how black it is. It is then used for fragColor’s alpha. Only after all this do we apply our own color to the pixels (which can be black).
- Note: If your shaders use the color variable before the coloredPixels and fragColor calculations, the Layer’s color choice may cause unintended effects. If so, try replacing these usages of color with vec3(1.0) — a fully white pixel.
For the simplest cases, migrating your shader may consist of simply replacing the fragColor calculation:
fragColor = vec4(final * color.rgb * opacity, alpha);
with
vec3 finalColor = vec3(final)
float coloredPixels = dot(clamp(finalColor, 0., 1.), vec3(1.0));
fragColor = vec4(finalColor * color.rgb, alpha * coloredPixels);
Here, final is a placeholder name for your vec3 variable representing the color of your pixel after the shader calculations; substitute with your own. Note that it may also be a float, in which case you must convert it to a vec3 for the coloredPixels calculation.
There may be nuances depending on the complexity of the shader. You can always clone a shader material from the factory and see how it was done.
Updated on: 12/03/2026
Thank you!
