Fifteen Thieves
XV fures
Interface for talking to Roland synthesizers, and a few extra utilities (mostly in Python).
List of tools
dump_patches.py
: Dump factory patches from a SD-80 or SD-90.inspect_memoryregion.py
: Show the content of a.memoryregion
file generated from patch dumps in a somewhat human-readable form.srx_convert.py
: Convert dumped SD-80 / SD-90 patches to Roland SRX VSTi plugin.test_amap.py
: Load an address map file and print the memory structure specified by it.wave_stats.py
: Generate stats on usage of SD-80 / SD-90 waveforms from the dumps.
Other files
amap
: System exclusive address maps.gs.amap
: Address map for SOUNDCanvas GS devices.sd-80.amap
: Address map for STUDIOCanvas SD-80 and SD-90.xv-5080.amap
: Address map for XV-5080 and other models in the XV lineup.xv
: Python library for interfacing with Roland DT1/RQ1 system exclusive messages.
Caution
-
Many scripts contain hardcoded MIDI ports. This is subject to change, but before such changes happen, you'll have to modify them manually.
-
pypy is recommended for running all the scripts whenever possible.
-
All scripts are developed under Linux. There's no reason they wouldn't work on other major platforms, though (given you have specified the correct MIDI port).
Information for individual tools
dump_patches.py
Requires hardware SD-90 or SD-80.
Give this script a few minutes to run, then you'll get the following files:
data
+--patchparam
| +--classical
| | +--00-000-Piano 1.memoryregion
| | +--...
| +--contemporary
| | +--00-000-Ac.Piano.memoryregion
| | +--...
| +--...
+--rhythmparam
+--classical
| +--00-Standard Set.memoryregion
| +--...
+--contemporary
| +--00-StandardSet2.memoryregion
| +--...
+--...
These files contain preset data for each individual factory patch and can be used by other tools.
inspect_memoryregion.py
Requires one argument (path to the .memoryregion
file). Prints the content of the given file
in a semi-human-readable form.
Needs data/sdwavelist
to work. This file is still distributed by Roland Japan. You need to
remove the header from the file (the first line contains name of the first waveform).
srx_convert.py
Requires populated data/patchparam
and data/rhythmparam
folder. Converts patch data in
these folders into a format that can be used by Roland SRX VSTi plugins. You need to mod
the plugin with wave ROM dump of SD-90 or SD-80 for these patches to work. You'll have to
obtain the dump yourself, as they are not in this repository for obvious reasons. Of course,
you can use these patches with unmodified SRX VSTi plugins as well.
Takes one argument, specifying the SRX VSTi title you want to generate the patches for.
SRX Plguin | Parameter Used |
---|---|
Piano 1 | 2 |
Studio | 3 |
Strings | 4 |
Dance Trax | 5 |
Orchestra | 6 |
Keyboards | 7 |
World | 9 |
Brass | 10 |
Piano 2 | 11 |
Electric Piano | 12 |
Generated patches are in data/srxsdpresets
. Subfolders indicates different organization
of patches.
test_amap.py
Load an address map file and print the memory structure specified by it. The path to the amap file is hardcoded.
wave_stats.py
Requires populated data/patchparam
and data/rhythmparam
folder. Print how many times each
waveform is used by all the patches.
Needs data/sdwavelist
to work. This file is still distributed by Roland Japan. You need to
remove the header from the file (the first line contains name of the first waveform).
Disclaimer
This project is in no way endorsed by or affiliated with Roland Corporation. This project contains no reverse engineered code, or data that are extracted from Roland hardware units or Roland software. All memory address maps are transcribed from public documentation. File format are learned through examination of file contents. Misuse of this project can lead to legal disputes, and the author of this project shall not be held responsible for such misuse.