Jukebox Interface Guide

Warning: the work for this was done in June, 1997. So it's dated, now.

Main page and links to more current stuff

Sony CDP-CX200

[CDP-CX200 image]

Scope

This document is a reference to the content of the CDP Control-A1 messages. It describes the known messages and their responses. These commands can be sent directly to the RS232<->Control-A1 interface board. All information was reverse engineered from a CDP-CX200. I suspect that other players in the line use a subset or a superset of these commands.

Please e-mail me any new codes that you discover. I'm also very interested in any software that you write to control the CD player. Finally, drop me a line if this is useful to you - I could use the kudos. :)

Addressing

Addressing consists of a single byte. The first nibble for most commands is 0x9. Bit 3 of the second nibble sets the direction of the command and bits 2-0 are the address. Address 7 is reserved as a broadcast command. Ie. all CDs could be turned off by sending 97 2F.

	9     A
1  0  0  1   1  0  1  0
	        ^^^^^^^ <- address
	    ^^^ <- 1 = report from CD player; 0 = message to CD player

address		cd-player
000		CD1
001		CD2
010		CD3
111		All CDs

Variables

Certain fields require numerical input from the controlling software or return information. As a rule (with a couple of exceptions) numbers are represented as Binary Coded Decimal (BCD). When a number greater then 99 is required, things get a little strange. 100 can be represented by either 9A or 00. After that, 101 is 9B, 102 is 9C and so on.

Text on the CD players is represented by ASCII strings. The strings are not null terminated in most cases, nor do they have length fields associated with them. Instead, the string is finished when the data stops coming in - a short delay of a 10th of a second or so should be adequate for end determination in the few cases where this might be a problem. A new packet from the converter always begins with a linefeed (0x0A), so in back to back transmissions the end of one packet and the beginning of the next can be easily determined.

The Commands

The following commands are used to control the CD jukebox. The commands are listed in numerical order.

All commands should be preceeded by an address byte and all responses will start with an address byte, except where noted. For example, to send the play command to CD1, issue:

90 00
The CD player will respond with:
98 00
Play
call: 00
response: 00
variables: none
description: The CD player will load and play the current CD. As soon as track information is loaded, it will return that information. See track info.
Stop
call: 01
response: 01
variables: none
description: This stops the current CD.
Pause
call: 02
response: 02
variables: none
description: This puts the current CD into Pause.
Pause Queue
call: 03
response:
02 - if previously playing
00 - if previously paused
variables: none
description: The CD player is toggled between a paused state and playing the current CD.
Track Forward
call: 08
response: see Track Info.
variables: none
description: Skip forward one track. The CD player must be queued with a Pause command or actually playing for this command to work.
Track Back
call: 09
response: see Track Info.
variables: none
description: Skip back to the beginning of this track or, if already there, to the previous track. The CD player must be queued with a Pause command or actually playing for this command to work.
Scan Forward
call: 10
response: none
variables: none
description: The CD player scans forward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command.
Scan Backward
call: 11
response: none
variables: none
description: The CD player scans backward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command.
Scan Forward
call: 12
response: none
variables: none
description: The CD player scans forward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command.
Scan Backward
call: 13
response: none
variables: none
description: The CD player scans backward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command.
Resume
call: 1F
response: ??
variables: none
description: Resumes normal play mode operation after a scan forward or back.
Remote On
call: 20
response: 70 00 80 00 dsk trk
variables: none
description: Puts the CD player into "Remote" mode. This amounts to turning off the display and disabling the buttons (except power).
Remote Off
call: 21
response: 70 00 C0 00 dsk trk
variables: none
description: Puts the CD player into Normal operating mode.
Time Report
call: 25
response: 51 trk index min sec
variables:
dsk - the current disk number
trk - the current track being played
index - the index in the current track min,sec - the length of the track in minutes and seconds
description: Sends an update every second.
Report Off
call: 26
response: none
variables: none
description: Stops reporting second updates..
Power On
call: 2E
response: 2E
variables: none
description: Powers up the CD player.
Power Off
call: 2F
response: 2F
variables: none
description: Turns off the CD player.
Download Title
call: 40 dsk
response: 40 dsk ascii_text
variables:
dsk - the disk need not be loaded for this to work
ascii_text - the title information that the CD player has for this disk
description: The CD player sends the title information for a particular CD. Only works for CDP CX250 or higher.
Get CD Info
call: 44 dsk
response: 60 dsk mintrk maxtrk min sec ???
variables:
dsk - the disk number currently loaded
mintrk - the lowest track on the disk
maxtrk - the highest track on the disk
min,sec - the length of the CD in minutes and seconds
??? - unknown, seems fairly unique... frame offset?
description: Retrieves information about a CD that is currently loaded.
Get Track Info
call: 45 dsk trk
response:
62 dsk trk min sec
15 - the disk isn't loaded or the track doesn't exist
variables:
dsk - the disk number currently loaded
trk - the track you're interested in
description: Get information about a particular track on the currently loaded CD. The disk must be loaded before using this command.
Play Disk
call: 50 dsk trk
response: see Track Info.
variables:
dsk - the disk number to be played
trk - the track to be played
description: Jumps to the given track on the given disk and begins playing.
Set Disk
call: 51 dsk trk
response: see Track Info.
variables:
dsk - the disk number to be played
trk - the track to be played
description: Queues the CD player to the given disk and track number, but does not start playing it.
Track Info
call: none
response: 50 dsk trk min sec
variables:
dsk - the current disk number
trk - the current track being played
min,sec - the length of the track in minutes and seconds
description:This information is returned whenever a new track is about to be played. This can either be the result of a command or it could have happened naturally as play continues from the end of one track and on to the next.
CD Data Loaded
call: none
response: 52 dsk
variables:
dsk - the disk number currently loaded
description:The CD Player now has data for the disk available. Use Get CD Info to retrieve it.
Finding CD
call: none
response: 54 dsk
variables:
dsk - the disk number currently loaded
description:This message is sent when the CD player starts moving to a new disk location.
Loading CD
call: none
response: 58 dsk
variables: dsk - the disk number currently loaded
description:This message is returned when a CD is spinning up inside the player.
Blank
call: 00
response: 00
variables: none
description: description.

Surrogate Keyboard

The CD players accept special commands that act exactly as if the keys on the front panel are being pressed. No response is generated to these commands on the Control-A1 interface, except those responses that are generated due to events that occur - such as playing a new CD or changing disks.

The track switching control codes were deciphered by me directly. The other codes supplied by Maciej Jesmanowicz. The Control-A1 interface requires each command to be preceeded by the nibble 0xE.

These codes are only for the CX200. The other models have keys that are not listed in this table. The listed key codes are probably identical between the products in a family, however.

Power call: EA 91 Track 1 call: E0 11
Continue call: EB 91 Track 2 call: E8 11
Shuffle call: EA D1 Track 3 call: E4 11
Program call: EF 91 Track 4 call: EC 11
Disk call: E5 31 Track 5 call: E2 11
Track call: ED 31 Track 6 call: EA 11
Block call: E3 31 Track 7 call: E6 11
Repeat call: E3 51 Track 8 call: EE 11
Check call: EB 51 Track 9 call: E1 11
Play call: E4 D1 Track 0/10 call: E0 51
Pause call: E9 D1 Track >10 call: EE 51
Stop call: E1 D1 Enter call: ED 11
Skip Back call: E0 D1 Skip Forward call: E8 D1
Scan Back call: EC D1 Scan Forward call: E2 D1
Disk Back call: EB D1 Disk Forward call: E7 D1
Clear call: EF 11

History

The basis of these commands is described in the original Control-A1 document, but is a bit more cryptic.
[]Rudy Moore