The Festival 300 / 500 sound system consists of the Tuner (master), the Amplifier, a CD deck and a tape deck.
As I intend to read / write a small batch of old-school mixtapes, I did what everyone would do and go for the unnecessarily complicated route.
The plan of this project is to build a small microcontroller and Software to remotely control the tape deck via USB and thus automate the recording / digitizing process.
For that, I use the cheap Saleae Logic Analyzer clone connected to DATA and GND (COM) of the ribbon cable. Thanks to the very well written (repair) manual of this old Sound System, I could get a hint how zeros and ones are encoded, as well as the framing and timing. Based on that, I wrote a custom Low-Level Analyzer plugin for Saleae to decode the raw values (see repo for details). I already got a preliminary table of commands and interpretation of payload data together. Currently the Low-Level Analyzer also decodes the meaning, but later this should be done via a (python) High-Level Analyzer. This is 1. more clean, and 2. can be reused better, as I plan on the Microcontroller to just read/write raw commands, with the interpretation done separately (in the host computer).
Note: All numbers in Hex
Recorded IDs
| ID | Name |
| ---- | ----- || `0`| Probably the Tuner (or display?) |
|`3`| Probably the Tape Deck || `4`| ?? Only acted as destination, perhaps CD, or AMP ?|
|`6`| only startup and off: `6->6 0x20` |
Commands `0 -> 3`
----
Missing to identify: Mute / unmute output
| ID | Description | (Data)
| ---- | ----------- | ------
| `05` | Stop ?? Comes directly after `0->4: 07`and after startup|
|`07`| Eject ? || `08` | Increase FF speed |
|`09`| Increase FR speed || `0A` | Fast Forward ? |
|`0B`| Fast Reverse ? || `0E` |Dolby: B |
|`0F`| Dolby: C || `10` |Dolby: None |
|`11`| Reverse Playing direction
|`12`| ?? Comes directly after `08` or `09`|| `13` | ?? Comes directly after startup
| `15` | Request to record
| `17` | Play |
|`16`| Pause (Mute?)|| `1C` | ? Answer to `3->0 : 07`, so perhaps "Ok to output", or"request for playing direction"| `1E` | RECORD "NORM"| `1F` | Zero time counter
Commands `3 -> 0`
----
| ID | Description | (Data)
| ---- | ----------- | ------
| `05` | ? Comes sometimes after `13` (is it the broadcast stop?)|
|`06`| Status Un-Playable? Eject was pressed, tape coming out
|`07`| Status playable? Eject was pressed, tape coming inand small wait time
|`0B`| Current FF/FR speed | _Only one byte!_ : lower nibble = speed (1-4), MSBit (`80`) = isReverse |
|`0C`| Set Time display | BCD-Like MM:SS, e.g. `0x0159`for01:59|
|`0D`| Set Time display Negative ? | like `0C`|
|`0F`| Tape deck is present (in Dolby: C mode?) || `10` | Is playing "to the right"|
|`11`| Is playing "to the left" || `12` | ?? comes sometimes as answer to `0 -> 3: 12`| `13` | ? Came during FF, and after startup |
|`14`| Can not record (tape was not loaded) || `15` | Able to record (tape was just loaded) |
Broadcast commands `0 -> 0`| Command | Direction | Type | Data |
| ------- | --------- | ---- | ---- || `01` |`0->0`| System On
|`02`| `0->0` | System Off
| `05` |`0->0`| Stop all?