Summary

Professional CD recorder with RS-232C serial control interface. Commands ASCII-based, framed by LF/CR. Supports transport control, playback mode selection, track search, text/title writing, pitch/key control, digital volume, and comprehensive status sensing. Machine ID fixed at 0. No authentication required.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600  # default; also supports 4800/19200/38400 - set on device
  data_bits: 8
  parity: none  # also supports odd/even - set on device
  stop_bits: 1  # also supports 2 - set on device
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable
- routable
- queryable
- levelable

Actions

- id: stop
  label: Stop
  kind: action
  params: []
- id: play
  label: Play
  kind: action
  params: []
- id: record
  label: Record
  kind: action
  params:
    - name: mode
      type: integer
      description: |
        01 = Record Ready
        02 = Track Mark
        03 = Input Monitor
- id: ready
  label: Ready
  kind: action
  params:
    - name: mode
      type: integer
      description: "01 = Ready On"
- id: shuttle
  label: Shuttle
  kind: action
  params:
    - name: direction
      type: integer
      description: "00 = Forward, 01 = Reverse"
- id: tray
  label: Tray Open/Close
  kind: action
  params: []
- id: track_index_skip
  label: Track/Index Skip
  kind: action
  params:
    - name: type
      type: integer
      description: "00 = Next Track, 01 = Previous Track, 10 = Next Index, 11 = Previous Index"
- id: call
  label: Call
  kind: action
  params: []
- id: auto_cue_level_preset
  label: Auto Cue Level Preset
  kind: action
  params:
    - name: level
      type: integer
      description: "0=-24dB, 1=-30dB, 2=-36dB, 3=-42dB, 4=-48dB, 5=-54dB, 6=-60dB, 7=-66dB, 8=-72dB, F=Sense"
- id: auto_track_level_preset
  label: Auto Track Level Preset
  kind: action
  params:
    - name: level
      type: integer
      description: "0=-24dB, 1=-30dB, 2=-36dB, 3=-42dB, 4=-48dB, 5=-54dB, 6=-60dB, 7=-66dB, 8=-72dB, F=Sense"
- id: direct_track_search_preset
  label: Direct Track Search Preset
  kind: action
  params:
    - name: track
      type: integer
      description: "4-byte BCD track number (max 99 audio, 999 MP3)"
- id: pitch_data_preset
  label: Pitch Data Preset
  kind: action
  params:
    - name: pitch
      type: integer
      description: "4-byte: N1=tens, N2=ones, N3=decimal, 0=positive 1=negative. Range ±16.0%. FF=Sense"
- id: auto_track_time_preset
  label: Auto Track Time Preset
  kind: action
  params:
    - name: minutes
      type: integer
      description: "N1= tens digit, N2= ones digit. Range 1-10 min. FF=Sense"
- id: sync_rec_level_preset
  label: Sync Rec Level Preset
  kind: action
  params:
    - name: level
      type: integer
      description: "0=-24dB, 1=-30dB, 2=-36dB, 3=-42dB, 4=-48dB, 5=-54dB, 6=-60dB, 7=-66dB, 8=-72dB, F=Sense"
- id: text_preset
  label: Text Preset
  kind: action
  params:
    - name: target
      type: integer
      description: "4-byte BCD: 0000=disc title, 0001-0099=track title"
    - name: title
      type: string
      description: "Up to 80 single-byte alphanumeric characters"
- id: time_search_preset
  label: Time Search Preset
  kind: action
  params:
    - name: track
      type: integer
      description: "Data 1-4: track number BCD"
    - name: time
      type: integer
      description: "Data 5-12: minutes/seconds BCD, Data 11-12 must be 0"
- id: key_control_data_preset
  label: Key Control Data Preset
  kind: action
  params:
    - name: direction
      type: integer
      description: "0=Key Up, 1=Key Down. Range 0-6 semitones"
- id: fade_in_out_time_preset
  label: Fade In/Out Time Preset
  kind: action
  params:
    - name: in_time
      type: integer
      description: "N1= tens digit, N2= ones digit. Range 1-30s"
    - name: out_time
      type: integer
      description: "N3= tens digit, N4= ones digit. Range 1-30s"
- id: digital_volume_data_preset
  label: Digital Volume Data Preset
  kind: action
  params:
    - name: volume
      type: integer
      description: "4-byte: N1=tens, N2=ones, N3=decimal, 0=positive 1=negative. Range -54dB to +18dB. AAAA=-∞dB. FF=Sense"
- id: auto_cue_select
  label: Auto Cue Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: auto_track_select
  label: Auto Track Select
  kind: action
  params:
    - name: mode
      type: integer
      description: "00=Off, 01=On(Level), 02=On(Digital Direct), 03=On(Time). FF=Sense"
- id: eom_track_time_preset
  label: EOM Track Time Preset
  kind: action
  params:
    - name: seconds
      type: integer
      description: "00=Off, N1N2=1-99 seconds. FF=Sense"
- id: eom_disc_time_preset
  label: EOM Disc Time Preset
  kind: action
  params:
    - name: seconds
      type: integer
      description: "00=Off, N1N2=1-99 seconds. FF=Sense"
- id: pitch_control_select
  label: Pitch Control Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: auto_ready_select
  label: Auto Ready Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: repeat_select
  label: Repeat Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: sync_rec_select
  label: Sync Rec Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: incr_play_select
  label: Incremental Play Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: key_control_select
  label: Key Control Select
  kind: action
  params:
    - name: enabled
      type: integer
      description: "00=Off, 01=On. FF=Sense"
- id: remote_local_select
  label: Remote/Local Select
  kind: action
  params:
    - name: mode
      type: integer
      description: "00=Remote (panel disabled), 01=Local (panel enabled). FF=Sense"

Feedbacks

- id: information_return
  label: Information Return
  type: object
  fields:
    - name: version
      type: string
      description: "Data 1-4: software version BCD (e.g. 0100 = v1.00)"
- id: auto_cue_level_return
  label: Auto Cue Level Return
  type: enum
  values:
    - "-24dB"
    - "-30dB"
    - "-36dB"
    - "-42dB"
    - "-48dB"
    - "-54dB"
    - "-60dB"
    - "-66dB"
    - "-72dB"
- id: auto_track_level_return
  label: Auto Track Level Return
  type: enum
  values:
    - "-24dB"
    - "-30dB"
    - "-36dB"
    - "-42dB"
    - "-48dB"
    - "-54dB"
    - "-60dB"
    - "-66dB"
    - "-72dB"
- id: pitch_data_return
  label: Pitch Data Return
  type: object
  fields:
    - name: pitch
      type: string
      description: "N1=tens, N2=ones, N3=decimal, 0=positive 1=negative"
- id: auto_track_time_return
  label: Auto Track Time Return
  type: object
  fields:
    - name: minutes
      type: integer
      description: "N1=tens digit, N2=ones digit"
- id: sync_rec_level_return
  label: Sync Rec Level Return
  type: enum
  values:
    - "-24dB"
    - "-30dB"
    - "-36dB"
    - "-42dB"
    - "-48dB"
    - "-54dB"
    - "-60dB"
    - "-66dB"
    - "-72dB"
- id: text_preset_acknowledge
  label: Text Preset Acknowledge
  type: null
  description: "Returned when title is successfully written"
- id: key_control_data_return
  label: Key Control Data Return
  type: object
  fields:
    - name: direction
      type: integer
      description: "0=Key Up, 1=Key Down"
    - name: semitones
      type: integer
      description: "0-6"
- id: fade_in_out_time_return
  label: Fade In/Out Time Return
  type: object
  fields:
    - name: in_time
      type: integer
      description: "N1=tens, N2=ones"
    - name: out_time
      type: integer
      description: "N3=tens, N4=ones"
- id: digital_volume_data_return
  label: Digital Volume Data Return
  type: object
  fields:
    - name: volume
      type: string
      description: "N1=tens, N2=ones, N3=decimal, 0=positive 1=negative. AAAA=-∞dB"
- id: auto_cue_select_return
  label: Auto Cue Select Return
  type: enum
  values:
    - Auto Cue Off
    - Auto Cue On
- id: auto_track_select_return
  label: Auto Track Select Return
  type: enum
  values:
    - Auto Track Off
    - Auto Track On (Level)
    - Auto Track On (Digital Direct)
    - Auto Track On (Time)
- id: eom_track_time_return
  label: EOM Track Time Return
  type: object
  fields:
    - name: seconds
      type: integer
      description: "00=Off, N1N2=seconds"
- id: eom_disc_time_return
  label: EOM Disc Time Return
  type: object
  fields:
    - name: seconds
      type: integer
      description: "00=Off, N1N2=seconds"
- id: pitch_control_select_return
  label: Pitch Control Select Return
  type: enum
  values:
    - Pitch Control Off
    - Pitch Control On
- id: auto_ready_select_return
  label: Auto Ready Select Return
  type: enum
  values:
    - Auto Ready Off
    - Auto Ready On
- id: repeat_select_return
  label: Repeat Select Return
  type: enum
  values:
    - Repeat Off
    - Repeat On
- id: sync_rec_select_return
  label: Sync Rec Select Return
  type: enum
  values:
    - Sync Rec Off
    - Sync Rec On
- id: incr_play_select_return
  label: Incremental Play Select Return
  type: enum
  values:
    - INCR Play Off
    - INCR Play On
- id: key_control_select_return
  label: Key Control Select Return
  type: enum
  values:
    - Key Control Off
    - Key Control On
- id: remote_local_select_return
  label: Remote/Local Select Return
  type: enum
  values:
    - Remote
    - Local
- id: play_mode_return
  label: Play Mode Return
  type: enum
  values:
    - Continue
    - Single
    - Program (Data Empty)
    - Program
    - Random
- id: mecha_status_return
  label: Mecha Status Return
  type: enum
  values:
    - No Disc
    - Tray (opening/closing)
    - Open
    - Stop
    - Play
    - Ready On
    - Monitor
    - Record
    - Record Ready
    - TOC Writing
- id: isrc_return
  label: ISRC Return
  type: string
  description: "12-byte ISRC code, or all zeros if not stored"
- id: track_no_return
  label: Track No. Return
  type: object
  fields:
    - name: eom_status
      type: integer
      description: "00=not shown, 01=EOM displayed"
    - name: number
      type: integer
      description: "0000=stopped not cued, 0001-0999=track, 1001-1099=group (1000 added)"
- id: disc_status_return
  label: Disc Status Return
  type: object
  fields:
    - name: present
      type: integer
      description: "00=not present, 01=present"
    - name: type
      type: integer
      description: "00=CD-DA, 01=CD-R Audio, 02=CD-RW Audio, 10=CD-Data MP3, 11=CD-R Data, 12=CD-RW Data"
- id: current_track_information_return
  label: Current Track Information Return
  type: object
  fields:
    - name: track
      type: integer
      description: "4-byte BCD track number"
    - name: minutes
      type: integer
      description: "Data 5-8: track time minutes BCD"
    - name: seconds
      type: integer
      description: "Data 9-10: track time seconds BCD"
- id: current_track_time_return
  label: Current Track Time Return
  type: object
  fields:
    - name: mode
      type: integer
      description: "00=Track elapsed, 01=Track remaining, 02=Disc elapsed, 03=Disc remaining"
    - name: minutes
      type: integer
      description: "Data 3-6: minutes BCD"
    - name: seconds
      type: integer
      description: "Data 7-8: seconds BCD"
- id: text_return
  label: Text Return
  type: string
  description: "0-80 single-byte alphanumeric characters"
- id: total_track_no_time_return
  label: Total Track No./Total Time Return
  type: object
  fields:
    - name: total_tracks
      type: integer
      description: "Data 1-4: BCD. 0000=blank disc or no disc"
    - name: minutes
      type: integer
      description: "Data 5-8: total minutes BCD"
    - name: seconds
      type: integer
      description: "Data 9-10: total seconds BCD"
- id: pgm_total_track_no_time_return
  label: PGM Total Track No./Total Time Return
  type: object
  fields:
    - name: total_tracks
      type: integer
      description: "Data 1-4: BCD. 0000=no program created"
    - name: minutes
      type: integer
      description: "Data 5-8: total minutes BCD"
    - name: seconds
      type: integer
      description: "Data 9-10: total seconds BCD"
- id: keyboard_type_return
  label: Keyboard Type Return
  type: enum
  values:
    - Japanese Keyboard
    - US Keyboard
- id: error_sense_request
  label: Error Sense Request
  type: event
  description: "Unsolicited; transmitted when device enters error condition"
- id: caution_sense_request
  label: Caution Sense Request
  type: event
  description: "Unsolicited; transmitted when device enters caution condition"
- id: illegal_status
  label: Illegal Status
  type: event
  description: "Returned when invalid command or data received"
- id: power_on_status
  label: Power On Status
  type: event
  description: "Unsolicited; transmitted when device powers on"
- id: changed_status
  label: Changed Status
  type: event
  description: "Unsolicited; transmitted when device state changes"
  fields:
    - name: type
      type: integer
      description: "00=Mechanical status changed, 03=Track/EOM status changed"
- id: error_sense_return
  label: Error Sense Return
  type: object
  fields:
    - name: code
      type: string
      description: "Format N1-N2N3. Codes: 1-01=Rec Error, 1-02=Drive Error, 1-12=Disc Error, 1-1F=Format Error"
- id: caution_sense_return
  label: Caution Sense Return
  type: object
  fields:
    - name: code
      type: string
      description: "Format N1-N2N3. Codes: 1-04=Sur? Text, 1-05=Tray Error, 1-06=Disc Full, 1-07=Track Full, 1-09=D-In Unlock, 1-0B=Can't REC, 1-0F=Can't Edit, 1-13=Can't Select, 1-15=Not Fs44.1k, 1-16=Text Full, 1-19=PGM Full, 1-1A=PGM Empty, 1-1B=Ext CLK Err, 1-1D=Not Audio, 1-1E=Decode Error"

Variables

# UNRESOLVED: no standalone Variables section in source - all settable params are Actions

Events

# UNRESOLVED: populated from unsolicited status commands above

Macros

# UNRESOLVED: no macro sequences described in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source

Notes

Command timing: minimum 20ms interval between commands.

ACK policy: device does NOT send ACK for transport or preset commands. Device sends return only for sense queries.

Machine ID: fixed at 0. Commands with other IDs are ignored.

Error response: unsupported commands return ILLEGAL [F2].

Disc capacity: audio CD max 99 tracks; MP3 CD max 999 tracks.

Baud rate config: selectable on device panel (4800/9600/19200/38400). Default is 9600.

RTS/CTS: loopback-connected within device. External controller must handle accordingly if using hardware flow control.

Provenance

source_domains:
  - tascam.eu
  - cf.tascam.com
  - manua.ls
source_urls:
  - "https://www.tascam.eu/en/docs/CD-RW901%20RS-232C_Protocol%20v100.pdf"
  - https://cf.tascam.com/wp-content/uploads/downloads/products/old/833/rs-232c_protocol_cd-rw901mk2_v100_e.pdf
  - https://www.tascam.eu/en/docs/CD-RW901SL_Manual.pdf
  - https://www.manua.ls/tascam/cd-rw901/manual
retrieved_at: 2026-05-14T02:48:57.845Z
last_checked_at: 2026-06-02T22:15:34.737Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:15:34.737Z
matched_actions: 30
action_count: 30
confidence: medium
summary: "All 30 spec actions traced to source (dip-safe re-verify). (8 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "no standalone Variables section in source - all settable params are Actions"
- "populated from unsolicited status commands above"
- "no macro sequences described in source"
- "no safety warnings or interlock procedures in source"
- "port number not stated (configured on device panel)"
- "voltage/current/power specs not in control protocol section"
- "firmware version compatibility not stated in source"
- "binary encoding for error/caution codes not detailed — only ASCII return format shown"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0