Boss VE-500 Resources Page

This page is my working directory for the Boss VE-500 Vocal Effects Pedal. The provided software was insufficient for my needs, so I've explored several options for interfacing with the pedal in a more automated fashion.

My attempts to monitor USB traffic directly failed, as well as attempts to capture the MIDI information directly as the VE-500 editor communicated with the pedal. When neither of these approaches was fruitful, I resigned myself to using the Editor software for the actual computer to pedal configuration, but to manually modify the configuration files used by the Editor's Import/Export function. Not the reverse engineering I was looking for, but suitable to create configuration files efficiently.


Documents

Manual (PDF)
Editor Software Manual (PDF)
Parameter Guide (PDF)

Downloads

Just to make sure I always have access to the specific versions of the software I use in this project, I have archived them here.

VE500 Firmware 1.05 January 2019 (ZIP)
VE500 Editor Software 1.0 (ZIP)

System & Patch Files

Here are some .bel and .bed files for download. Some of these were created with my custom scripts, some were created from the pedal itself.

Files Containing 99 Patches

init-patch.bel - This file has every memory set to the default "INIT PATCH" settings, including 1-50, which are normally copies of the built in patches after a factory reset.

Single Patch Files

System Config Files


How I've done this.

From this point forward, I'll be going into the technical details. There really shouldn't be anything useful to a non-techie below here. I will be using it as a reference as I continue the project, and may use the information to try to duplicate the process with other pedals.

File Analysis

To start modifying the file, I first need to understand the contents. The patches are stored in .bel files, which are just text. First, I start with a single patch.

Single Patch Split into multiple lines for readability. or, Check out the original single line file.

This gives me a general idea of how an individual patch is formatted. From here I should be able to isolate the individual patches and determine the format of the full file.

Here's a script that splits the factory settings into individual patches, as well as the 42 independent sections possible for each patch. There will peridocially be more detail on one section or another as I try to analyze each section and determine what each value does.
So far I've Deduced the following about certain sections of the patch file: The UserPatch%PatchCommon section contains the name of the patch. Each bit in the section contains a 2 digit hexidecimal number representing an ASCII code. It may be an interesting experiment to try some extended ASCII codes that aren't available in the user interface.

The UserPatch%PatchEH Section Controls everything on the Enhance Page of the Editor App, with the exception of the Patch/System radio button. I expect that will be found later in a different section.

Patch EH mappings:
Bit 0 = Enhance On/Off at Patch Init - always a 0 or 1
Index 1 = Enhance - Range* of 1 - 100 decimal, (0 - 64 hex)
Index 2 = Compress - Range* of 1 - 100 decimal, (0 - 64 hex)
Index 3 = De-esser - Range* of 1 - 100 decimal, (0 - 64 hex)
Index 4 = Low Gain 20+ the setting in db, converted to hex
Index 5 = High Gain 20+ the setting in db, converted to hex
Index 6 = Level Gain 20+ the setting in db, converted to hex
Index 7 = Lmid Gain 20+ the setting in db, converted to hex
Index 8 = Lmid Freq 1D (29) = 16kHz, 11 is default
Index 9 = Lmid Q 0 = 0.5, 11 = 1, ??
Index 10 = Hmid Gain 20 = 0db, 22 = 2db
Index 11 = Hmid Freq Always 16
Index 12 = Hmid Q* Always 1
Index 13 = High Gain Always 0
Index 14 = High Cut 15 = Flat, 10 = 6.30kHz

This is, conveniently, the exact order of the parameters in the Parameter Guide (PDF) which makes me cautiously optimistic that this might be easier than I thought.

Just to make sure I can generate a file that the VE-500 will take, here's a script that generates a full reset, everything is set to INIT PATCH, including 1-50.
The next section I will focus on is the PatchCTL section. Because I want to be able to update the entire patch bank with identical Control sections, I will use this section to test input/output of patch files. The idea will be to create a script that will output an importable .bel file with 99 patches. Each patch in the output file will have the specified section replaced with the template from a single patch input file.

The system settings are stored in a .bed file instead of a .bel file. It is still text. While there is only one .bed file possible on a pedal at any given time, I don't expect to need to do a full analysis of the .bed file to serve my needs. This might be a good thing to reverse engineer in the future to find any hidden features that might exist.

System Configuration File Split Into Multiple Lines