aboutsummaryrefslogtreecommitdiff

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.