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