Skip to content

Chiptable Registers

Overview

To reduce the number of address lines required, Chiptable makes use of a register bank. The first address ($00) selects the bank which changes the function of the remaining 7 addresses.

Adr Name
$00 Register Bank Select
$01 Ext 1
$02 Ext 2
$03 Ext 3
$04 Ext 4
$05 Ext 5
$06 Ext 6
$07 Ext 7

Banks

  • $00 = Control
  • $01 = Samples
  • $02 = Envelopes
  • $03 = LFOs
  • $04 = Mod Matrix

Control

These are the main control registers, where the assumed bulk of the interactions will be. The channel sets the channel for the remaining registers.

For instance, setting the channel to $01 and then writing a frame value would update the frame only for channel 01. Note that some of the registers in the other banks also use the currently set channel number for modifying values.

Reg File: $00

Adr Name Encoding
$00-01 Channel Select Cyclic Mode: 7-6, Note On/Off/Rel (5-4), Channel: 2-0
$00-02 Patch 7-0
$00-03 Frame Position 7-0
$00-04 Note Note: 7-0
$00-05 Semitone Semitone: 7-0
$00-06 Vol 7-0
$00-07 Glide Rate: 7-0

Cyclic Modes:

  • $0 = LSDJ-like frames (32 bytes/frame), cycle on
  • $1 = Free frame window, cycle on
  • $2 = Jumbo frame, cycle on
  • $3 = Jumbo frame, cycle off

Samples

This allows writing and updated patches and the samples for each patch. Each patch contains 256 bytes worth of sample data broken up into 8 frames.

It has an auto-stride such that reading or writing to/from the sample register will increment the sample position. Once at the end, it will wrap to the beginning.

To load a full patch (either of 8 frames or off a full 256 byte sample), set the sample position to zero, and then simply write 256 bytes to the sample register.

Reg File: $01

Adr Name
$01-01 Patch Number
$01-01 Sample Position
$01-02 Sample

Envelopes

Reg File: $02

Adr Name
$02-01 Env Number
$02-04 Attack
$02-05 Decay
$02-06 Sustain
$02-07 Release

LFOs

The current proposal for LFOs is separate and applicable across different channel functions. Depending on how much processing power and timers are available depends on how many LFOs there can be.

Reg File: $03

Adr Name Encoding
$03-01 LFO Number
$03-02 LFO Type
$03-03 Cross-Mod Channel
$03-04 Frame Select / Position

LFO Types

  • 0 = Sine
  • 1 = Tri
  • 2 = Saw
  • 3 = Square
  • 4 = Random
  • 5 = Cross-Mod, Aligned Frame
  • 6 = Cross-Mod, Free Frame

Mod Matrix

Apply the set Env and LFO numbers ($02-01), ($03-01) to modulation targets for the set channel ($00-01).

Writing a 1 to any of the LFO|Env to Vol|Pitch bits will enable the configured LFO or ENV for that channel for the given purpose.

Reg File: $04

Adr Name Encoding
$04-01 Destination LFO to Pitch (7), LFO to Volume (6), Env to Pitch (5), Env to Volume (4)
$04-02 LFO Depth Depth (6:0)
$04-03 Env Speed
$04-04 Env Depth