... my experience is that you can only estimate knob locations. The reason for this is that while the knobs go from 0->10 in the electronics may not start to see movement of the knob until it reaches '1' and may not see any more when you've passed '9'. The numbers I used are just examples - the actual numbers will depend on how the individual keyboards are set up, how the ADCs are calibrated, etc. ... SND2P5 ====== SND2P5 reads a 44kHz, 8-bit signed RAW sound file (.snd) and generates two file. The format of the command is: SND2P5 {filename.snd} and it will generate: filename.tap and filename.dat filename.tap will be 960 byte file containing the full data dump from the Prophet-5 and filename.dat. I originally wrote this in Pascal - and I've never bothered to rewrite it in C. I've included both the source and the DOS executable. (My oppologies in advance for the sloppy code - it was only a quick hack when I first did it ...) P5CNVREV ======== This will convert the 960 byte P5 file from one Prophet Revision to another (Rev 1/2 and Rev 3 Prophets internally organize the patch data differently). The program will output 1 file called FILENAME.R? where "?" represents the destination hardware revision number. For instance: P5CNVREV FACTORY.R2 2 3 Would result in the FACTORY.R2 file being read as a Rev 1/2 format dump and it would produce FACTORY.R3 (a Rev 3 format dump). P5TOTAPE ======== A program to convert the 960-byte memory representation of a Prophet-5 cassette dump back into an audio file. The audio file created is a 44.1kHz, 8-bit, signed raw audio file (44.1kHz, 8-bit, SND, mono). The program will output 1 file called FILENAME.SND. From a properly formatted P5 file, the resulting SND file will be just over 2MB. P5DECODE ======== Decode a Rev 3 P5 (960 byte) file into knob/switch values. As noted above, the knob values can only really be a guide because of how different keyboards behave. SAMPLES/EXAMPLES %%%%%%%%%%%%%%%% FACTORY1.SND A RAW Cassette file version of the Factory Presets - bank 1 for a Rev 2 Prophet 5 (44kHz, 8-bit, mono, signed). If you type "SND2P5 FACTORY1.SND" you should get: FACTORY1.DAT (9690 bytes) and FACTORY1.TAP (960 bytes) FACTORY1.DAT contains the program data, presented as 40 groupings of 24 8-bit bytes. This is set up to be consistent with how Sequential discusses the layout of their programs. The single 8-bit byte at the end of the file is the checksum value which the P5 will use to determine if the loaded data is correct. FACTORY1.TAP is the actual binary representation of the 40x24 byte program dump from a P5. Since the original dump came from a Rev 2 P5, the data in FACTORY1.TAP is formatted for a Rev 2. To signify this, I would recommend that you rename FACTORY1.TAP to FACTORY1.R2. Rev 1/2 and Rev 3 P5's use have different data formats. If you have a Rev 3 Prophet and you attempt to load a program from a Rev 2 dump, the program may load - but the resulting program will be different than it was on the Rev 2. That being the case (and considering I have a Rev 1 and my friends all seem to have Rev 3's) I wrote a little conversion program. To convert FACTORY1.R2 to a format consistent with Rev 3 P5's type: P5CNVREV FACTORY1.R2 2 3 This will assume that FACTORY1.TAP is in Rev 2 format, and will produce a new file - in Rev 3 format. Specifically, this command will create a new file called FACTORY1.R3 This file (FACTORY1.R3) contains all the data which is needed to describe a 40 program bank for a Rev 3 P5. To convert this file back into something that can be loaded by the Prophet we'd do: P5TOTAPE.EXE FACTORY1.R3 which would create factory1.snd I hadn't previously put anything together to do a program decode, but I just slapped something together today (P5DECODE). I've included the source and compile version for you. Enjoy. Dave