aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md119
1 files changed, 119 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..973d5fd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,119 @@
+# 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 originated from Roland.
+All memory address maps are transcribed from public documentation. Misuse of this
+project can lead to legal disputes, and the author of this project shall not be
+held responsible for such misuse.
+