a C++ library for manipulating DX7 SysEx files.
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 13 commits behind rogerallen:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Build Status

dxsyx - a C++ library for manipulating DX7 SysEx files.

I created this after using the Dexed VST in Reaper. See https://github.com/asb2m10/dexed I wanted an easier way to create my own syx files after finding it difficult to keep track of the voices I found in the .syx files I found. One good source is http://homepages.abdn.ac.uk/mth192/pages/html/dx7.html

Plus, I was looking for a C++ project to check out C++11 coding.


Build via the Xcode project, Visual Studio project or Makefile. Tested on Mac OS X, Linux and Windows 10, but should work with any C++11 compiler.


 $ dxsyx [options] [file1.syx file2.syx] ...

 (none)                   : print out voices
 --                       : read filenames from stdin
 -b config.txt output.syx : select specific voices, breed 32 random voices
 -c                       : print out voices with a unique voice data CRC
 -h                       : help (this message)
 -i                       : ignore checksum errors
 -s config.txt output.syx : select specific voices, output to new syx file
 -u mk2cfg.txt            : use mk2cfg.txt to upgrade to DX7 mk2 sysex (use with -s)
 -U                       : when upgrading to DX7 mk2 sysex, double the osc amp mod values
 -y                       : print full data as YAML


If you want to get a list of all voices in a syx file or files:

$ dxsyx file1.syx file2.syx

The output from this command is the basis for all the config.txt files used as input. It is a CSV-formatted line for each voice containing first, the 10-character ASCII name (any chars < 32 are changed to '_'), next the voice number and finally the full path to the syx file containing the voice.

OEOEOE    ,0,/Users/rallen/Music/VST/dexed-0.8.0/Dexed_cart/Sysex/things.syx
CHOPPER   ,2,/Users/rallen/Music/VST/dexed-0.8.0/Dexed_cart/Sysex/things.syx

If you want to see YAML-formatted individual settings for each voice:

$ dxysx -y file1.syx file2.syx

Here is a snippet:

filename: /Users/rallen/Music/VST/dexed-0.8.0/Dexed_cart/Sysex/things.syx
  voice_name: OEOEOE
    op6_eg_rate_1: 99
    op6_eg_rate_2: 99
    op6_eg_rate_3: 99
    op6_eg_rate_4: 99
    op6_eg_level_1: 99
    op6_eg_level_2: 99
    op6_eg_level_3: 99
    op6_eg_level_4: 0

If you want to select voices and create your own syx file:

$ dxsyx file1.syx file2.syx file3.syx > config.txt

Now, edit the lines of config.txt to leave only the 32 voices you desire (do not change any text or add any comments).

$ dxsyx -s config.txt my.syx

This creates your custom my.syx file with your selected voices.

Next, how about "breeding" your own sounds? Create a config.txt file with the "parents" of the voices you would like to blend together.

$ dxsyx -b parents.txt mutants.syx

Each of the 32 "mutants" you create will be a random blend of 2 random parents in the config.txt file.

If parents.txt contains:

DL RHODES3,30,/Users/rallen/Music/VST/dexed-0.8.0/Dexed_cart/Sysex/road2.syx
METAL BOW ,19,/Users/rallen/Music/VST/dexed-0.8.0/Dexed_cart/Sysex/things.syx
RUMBLE    ,7,/Users/rallen/Music/VST/dexed-0.8.0/Dexed_cart/Sysex/things.syx

Mutants.txt might contain something like:

12MBLEBO  ,0,mutants.syx
01 ALODOW3,1,mutants.syx
20 BLE E 3,2,mutants.syx
12TALEB   ,31,mutants.syx

Where the first two characters of the name indicate the parents of that voice. These voices are completely random blends and might sound great or might sound awful. Listen to the results, keep breeding from your best sounds and evolve your own, unique sounds!

For DX7 mk2 (DX7s/DX7IID/DX7IIFD) users, you might find that DX7 bulk dumps are not very useful because the mk2 stores mod wheel and numerous other parameters in each voice, rather than as global parameters. You can use dxsyx to upgrade a DX7 dump by adding the additional parameters (for details, see the mk2cfg files in the doc folder):

$ dxsyx -u mk2cfg.txt -s config.txt mymk2.syx


This pages contains a link that looks like the best, most comprehensive collection. (25MB as of 2017) http://bobbyblues.recup.ch/yamaha_dx7/dx7_patches.html


Copyright © 2015 Roger Allen

Dxsyx is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Dxsyx is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Dxsyx. If not, see http://www.gnu.org/licenses/.