From aefdc8d0edad5d77d73ac40d8002363e12da00da Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Tue, 9 Aug 2022 02:56:10 -0400 Subject: fures, ostendite se! --- README.md | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 README.md (limited to 'README.md') 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. + -- cgit v1.2.3