Skip to content

Implement SH-101-style architecture for each polyphonic voice #1

@seclorum

Description

@seclorum

This feature request is to refactor and enhance the synth engine so each polyphonic voice closely models the signal path and features of the Roland SH-101, but with modern polyphony. The goal is to make each voice a true SH-101 channel, while retaining SIMD optimizations.

Scope of changes:

Oscillator Section

  • Add noise generator (white and pink noise) as selectable source or blend with main VCO.
  • Implement pulse waveform for main oscillator with variable pulse width and pulse width modulation (PWM).
  • Ensure sub-oscillator is always square wave and strictly -1 or -2 octaves below main VCO (with selectable range).
  • Main oscillator should support saw, square/pulse, and noise, selectable or blendable per SH-101 style.

Filter Section

  • Refactor per-voice filter to model IR3109/SH-101 characteristics: 24dB lowpass, analog non-linearity, resonance with self-oscillation, key tracking, and variable envelope modulation amount.
  • Add option for filter envelope amount and keyboard tracking per voice.
  • Support filter self-oscillation at high resonance.

Modulation and Envelope Section

  • Ensure each voice has two independent envelope generators: one for VCA, one for VCF (per SH-101).
  • LFO should offer triangle and square waveforms, modulate VCO pitch, PWM, and VCF cutoff independently.
  • Add modulation matrix or routing logic for LFO/envelope destinations per SH-101 panel.

Other Features

  • Add portamento/glide per voice (exponential/linear selectable).
  • Add accent (velocity-sensitive envelope) and proper MIDI legato handling for polyphony.
  • Restructure signal flow so each voice follows: VCO+Noise+Sub → Mixer → VCF → VCA.
  • Maintain SIMD optimization and polyphonic capabilities.

Example code areas for modification:


This issue is for a major feature refactor and should be split into sub-issues:

  • Oscillator/Noise/PWM refactor
  • Filter model upgrade
  • Envelope/LFO/Modulation matrix
  • Voice signal flow and performance features

Label: enhancement

See the following code references:

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions