reSIDue User Guide – Wavetable System

Understanding Wavetables

Wavetables in reSIDue are step-sequenced automation tables that control SID registers over time. Each wavetable has:

  • 32 Steps: Numbered 0-31 (displayed as rows)
  • Control Columns: Exec, Loop for timing control
  • Data Columns: Register-specific values (frequency, pulse width, etc.)

Wavetable Types

FREQ (Frequency):

  • FrqA: Absolute frequency (16-bit unsigned, 0000-FFFF hex)
  • FrqR: Relative frequency change (16-bit signed, -8000 to +7FFF)
  • NotA: Absolute MIDI note (16-bit unsigned)
  • NotR: Relative note change (16-bit signed)

PULS (Pulse Width):

  • PulA: Absolute pulse width (12-bit, 000-FFF hex)
  • PulR: Relative pulse width change (16-bit signed)

CTRL (Control Register):

  • Va: Control byte (8-bit, 00-FF hex)
  • Bits 7-4: Waveform (1=Triangle, 2=Sawtooth, 4=Pulse, 8=Noise)
  • Bit 3: Test (usually 0)
  • Bit 2: Ring Modulation
  • Bit 1: Sync
  • Bit 0: Gate

A/D (Attack/Decay):

  • Va: Attack/Decay byte (8-bit, 00-FF hex)
  • Bits 7-4: Attack rate (0=fastest, F=slowest)
  • Bits 3-0: Decay rate (0=fastest, F=slowest)

S/R (Sustain/Release):

  • Va: Sustain/Release byte (8-bit, 00-FF hex)
  • Bits 7-4: Sustain level (0=lowest, F=highest)
  • Bits 3-0: Release rate (0=fastest, F=slowest)

Filter/Vol (Global Filter/Volume):

  • FCoA: Filter cutoff absolute (11-bit, 000-7FF hex)
  • FCoR: Filter cutoff relative (11-bit signed)
  • RF: Resonance/Filter routing (8-bit)
  • Bits 7-4: Resonance (0=none, F=maximum)
  • Bits 2-0: Voice filter routing (bit 0=Voice1, bit 1=Voice2, bit 2=Voice3)
  • MV: Mode/Volume (8-bit)
  • Bits 7-4: Filter mode (1=Low Pass, 2=Band Pass, 4=High Pass)
  • Bits 3-0: Main volume (0=silent, F=maximum)

Timing Control

EXEC Column (8-bit, 00-FF hex):

  • 00: Execute immediately, check LOOP for jump commands
  • 01-FF: Wait this many 50Hz cycles before continuing

LOOP Column (8-bit, 00-FF hex):

  • 00: Set loop start point to current row
  • 01-FF: Loop counter – jump back to loop point this many times

Data Entry

Hexadecimal Input:

  • Type hex values directly (case insensitive)
  • Automatic uppercase conversion
  • No need to delete existing values – just type new ones

Decimal Input (v0.6.21):

  • Enter decimal values with explicit + or prefix
  • Examples: “+1000”, “-500”, “+32767”, “-128”
  • Automatic conversion to internal integer format
  • Values display in hex format as usual

Mixed Input Support:

  • With +/- prefix: Parsed as decimal (“+1000” = 1000 decimal)
  • Without prefix: Parsed as hexadecimal (“3E8” = 1000 decimal)
  • Both methods store identical values internally
  • Complete backward compatibility with existing patches

NULL Values:

  • Leave fields empty for no change to register
  • Display as “–” (8-bit) or “—-” (16-bit)
  • Preserves current SID register state

Navigation:

  • Arrow Keys: Move between cells
  • Tab/Shift+Tab: Move to next/previous cell
  • Enter: Move to next row, same column
  • Escape: Clear focus