Skip to content

Latest commit

 

History

History
84 lines (75 loc) · 10.2 KB

File metadata and controls

84 lines (75 loc) · 10.2 KB

Effects: single-SID capability reference

Edit sidpulse/assets/effects.json; F1 topic 9 and the bottom effect helper read that catalog. Restart the app after changes. Run this script to refresh this document.

Playback and export execute A/B/C/T, E/F/G/H/J, Q0y, SCx, SDx and SID macros Z10/Z11/Z1F/Z20/Z21/Z2F. See PSID_EXPORT.md for finite order traversal and target limits.

implemented = host playback; partial = stated subset only; planned = relevant future replay effect; mapping = SID semantics require a decision; future_digi = sample-player work; not_applicable = outside the initial single-SID architecture. Live entries are green, pending entries grey and inapplicable entries red in help. The JSON separately records editability, preview implementation, PSID implementation, visibility and help visibility.

The SID has a shared programmable filter. Its cutoff, resonance, routing and mode already work in F12; the blue-grey CTRL CH / FILTER area edits working row automation. The fourth area is not another oscillator. Oscillator waveform is selected in F4 or automated using the W pattern column. W is separate from FX Wxx global-volume slides and from vibrato modulation shape.

Schism's reference help marks S0x/S1x/S2x with static # prefixes. Its current effect switch has no S0x implementation, includes S1x, and labels S2x as no longer implemented. Therefore a red help label alone is not a reliable test of an individual MOD's capabilities. SIDpulse will use its own capability table. PSID carries replay code/data; it does not itself implement these effect letters.

Code IT/Schism reference SID status Decision / limitation
Axx Song speed implemented Ticks per row 01..FF; A00 keeps speed. Preview and PSID.
Bxx Order jump partial Order jump after row. Preview supports loops. PSID compiles finite traversals; use export_config.loop for whole-song repeat.
Cxx Pattern break implemented Break to hexadecimal row of next order (or Bxx order). Out-of-range row becomes zero.
Dxx Volume slides mapping D0x/Dx0 and fine DFx/DxF require a documented SID amplitude policy; no independent voice-volume register.
Exx Pitch slide down implemented SID pitch slide down: xx4 frequency units on later ticks. EFx fine x4 and EEx extra-fine x on tick 0. E00 recalls memory.
Fxx Pitch slide up implemented SID pitch slide up: xx4 frequency units on later ticks. FFx fine x4 and FEx extra-fine x on tick 0. F00 recalls memory.
Gxx Tone portamento implemented Gate-preserving slide to target note, xx*4 SID frequency units per later tick. G00 recalls memory; no instrument restart.
Hxy Vibrato implemented Sine vibrato: speed x (phase step x*4/256), depth y/16 semitone. Each zero nibble recalls its value.
Ixy Tremor mapping Gate or waveform switching needs an explicit policy because SID retriggers affect ADSR.
Jxy Arpeggio implemented Three-tick arpeggio: base, +x, +y semitones. Replaces instrument arp for this row. J00 recalls memory.
Kxx Vibrato plus volume slide mapping Pitch motion is feasible; the Dxx amplitude mapping remains undecided.
Lxx Portamento plus volume slide mapping Portamento is feasible; the Dxx amplitude mapping remains undecided.
Mxx Channel volume mapping A SID voice has ADSR sustain, not a freely scalable PCM channel gain.
Nxx Channel-volume slides mapping N0x/Nx0/NFx/NxF depend on the same per-voice amplitude policy.
Oxx Sample offset future_digi Reserved for a future digi player, not SID oscillator sample memory.
Pxx Panning slides not_applicable The initial single-SID output is mono.
Qxy Note retrigger partial Q0y gate retriggers every y later ticks; Q00 recalls memory. Other x volume modifiers are unsupported for SID.
Rxy Tremolo mapping Amplitude modulation requires a SID-native policy, not a fake per-voice mixer gain.
Sxx Special commands mapping Subcommands are inventoried below. Do not silently reinterpret IT meanings.
Txx Tempo and tempo slides partial Absolute tempo 20..FF hex, tick = 2.5/BPM seconds. T0x/T1x slides remain unsupported.
Uxy Fine vibrato planned Finer pitch modulation; specify alongside Hxy.
Vxx Global volume mapping IT global volume needs a defined quantization to the shared 4-bit SID master volume.
Wxx Global-volume slides mapping W0x/Wx0/WFx/WxF use the same shared-volume mapping.
Xxx Panning position not_applicable Single-SID mono target.
Yxy Panbrello not_applicable Single-SID mono target.
Zxx MIDI macro / SID macro proposal partial SID macros: Z10/11/1F sync off/on/default; Z20/21/2F ring off/on/default. Other values remain reserved and are not executed.
S0x Legacy set-filter command mapping Not automatically the SID filter command. F12 already edits the actual shared SID filter; pattern encoding remains to be specified.
S1x Glissando planned Pitch quantization can be implemented in the replay engine.
S2x Finetune mapping Historical meaning needs an explicit pitch-unit mapping.
S3x Vibrato shape planned IT shapes: 0 sine, 1 descending ramp, 2 square, 3 random; distinct from oscillator waveform.
S4x Tremolo shape mapping Depends on the SID amplitude-modulation policy.
S5x Panbrello shape not_applicable Single-SID mono target.
S6x Tick delay planned Extend timing by ticks.
S70 Cut past notes not_applicable No IT virtual past-note voices in the initial three-voice architecture.
S71 Release past notes not_applicable No IT virtual past-note voices.
S72 Fade past notes not_applicable No IT virtual past-note voices.
S73 New-note action: cut mapping Define physical-voice gate/retrigger policy on the instrument side.
S74 New-note action: continue not_applicable Keeping an old voice plus a new note requires extra voice allocation; not the initial fixed three lanes.
S75 New-note action: release mapping SID release and voice reuse need explicit policy.
S76 New-note action: fade mapping No independent PCM fade channel; a SID-specific behavior must be defined.
S77 Disable volume envelope mapping Hardware ADSR cannot simply be bypassed like an IT volume envelope.
S78 Enable volume envelope mapping Hardware ADSR and a future software macro are different things.
S79 Disable panning envelope not_applicable Single-SID mono target.
S7A Enable panning envelope not_applicable Single-SID mono target.
S7B Disable pitch envelope planned Candidate control for future pitch macros.
S7C Enable pitch envelope planned Candidate control for future pitch macros.
S8x Panning position not_applicable Single-SID mono target.
S90 Disable surround not_applicable Single-SID mono target.
S91 Enable surround not_applicable Single-SID mono target.
S9E Sample forward direction future_digi Requires a future digi player.
S9F Sample reverse direction future_digi Requires a future digi player.
SAy High sample-offset bits future_digi Requires a future digi player.
SB0 Pattern loop start planned Mark the loop start.
SBx Pattern loop repeat planned Replay from the loop mark x times.
SCx Delayed note cut implemented Cut current voice on tick x; x outside row duration does nothing.
SDx Delayed note start implemented Delay note/instrument trigger to tick x. SD0 is immediate; x outside row duration does nothing.
SEx Row delay planned Extend timing by rows.
SFx Select MIDI macro mapping External MIDI is later; any SID macro reinterpretation must be explicitly documented.
Z10 Sync off implemented Persistent on this tracker channel, including held notes. Does not retrigger gate or edit the instrument. SID oscillators only; ring is audible with triangle and a running source oscillator.
Z11 Sync on implemented Persistent on this tracker channel, including held notes. Does not retrigger gate or edit the instrument. SID oscillators only; ring is audible with triangle and a running source oscillator.
Z1F Sync from instrument implemented Persistent on this tracker channel, including held notes. Does not retrigger gate or edit the instrument. SID oscillators only; ring is audible with triangle and a running source oscillator.
Z20 Ring modulation off implemented Persistent on this tracker channel, including held notes. Does not retrigger gate or edit the instrument. SID oscillators only; ring is audible with triangle and a running source oscillator.
Z21 Ring modulation on implemented Persistent on this tracker channel, including held notes. Does not retrigger gate or edit the instrument. SID oscillators only; ring is audible with triangle and a running source oscillator.
Z2F Ring modulation from instrument implemented Persistent on this tracker channel, including held notes. Does not retrigger gate or edit the instrument. SID oscillators only; ring is audible with triangle and a running source oscillator.

Qxy reference volume modifiers: 0 keeps volume; 1/2/3/4/5 subtract 1/2/4/8/16; 6 multiplies by 2/3; 7 by 1/2; 8 is unused; 9/A/B/C/D add 1/2/4/8/16; E multiplies by 3/2; F doubles it. These PCM operations are not silently applied to SID sustain. Q0y now retriggers gate and instrument program; other volume modifiers remain unsupported.

In v0.2.32 the unused EX column becomes AR: native arpeggio 0 OFF, 1 ON, R instrument, . hold. Existing FX codes are unchanged; AR OFF also suppresses Jxy. The legacy volume-column shorthand Ax/Bx/Cx/Dx, Ex/Fx, Gx and Hx is not executable or separately stored there in v0.2.0. Their main-effect counterparts remain available for source entry. FT2/XM translations are outside this initial IT/SID vocabulary.

References: Schism help, Schism effect dispatch. SID-specific decisions follow the supplied v4 roadmap and the 2026-09-10 design discussion.