Add software chromatic quantization for whole-tone layouts#15
Open
zitongcharliedeng wants to merge 5 commits intoflipcoder:mainfrom
Open
Add software chromatic quantization for whole-tone layouts#15zitongcharliedeng wants to merge 5 commits intoflipcoder:mainfrom
zitongcharliedeng wants to merge 5 commits intoflipcoder:mainfrom
Conversation
- Add bend_scale setting (default 1.0) for adjusting pitch bend intensity - Fix compose_pitch_bend() overflow bug: max bend (16384) wrapped to min - Add helpful comments: LinnStrument Pitch Quantize must be OFF for smooth slides
a4925f1 to
f0452d5
Compare
Allows semitones to be hit between whole-tone pads via software quantization. New settings: - chromatic_quantize: Enable 12-TET semitone snapping (default: false) - whole_tone_bias: Adjust zone balance, range -1.0 to 1.0 (default: 0.0) - 0.15 recommended for LinnStrument speed bump surface Requirements: - LinnStrument Quantize=OFF, Quantize Tap=OFF, Quantize Hold=OFF - This setting overrides hardware quantization with proper semitone support
- Replace string-based quantize_hold (off/fast/medium/slow) with numeric quantize_hold_threshold (0-1) - 0 = always snap (no vibrato), 1 = never snap (all microtones), 0.5 = balanced default - Movement detection: wiggling passes through microtones, stationary snaps to semitones - Preserves whole_tone_bias for mechanical surface compensation - Layout-independent: works regardless of underlying interval (semitones, whole tones, etc.)
- Comprehensive docs in settings.py (single source of truth) - Updated settings.ini.example with grouped chromatic quantization settings - Default quantize_hold_threshold=0.5 (balanced vibrato sensitivity)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds software-side chromatic (12-TET) quantization for whole-tone layouts, allowing semitones to be hit between whole-tone pads.
Depends on PR #13 (pitch bend scaling) - merge that first.
Demo video and discussion: #14
Why This Is Needed
Without any quantization, every note has slight microtonal errors from human imprecision - making chords sound slightly off and unintentional. At this pad scale, you can only realistically aim for semitones or whole tones, not microtones.
Hardware quantization (LinnStrument Quantize=ON) only snaps to pad centers (whole tones on whole-tone layouts), completely missing the semitones between pads. It also removes the ability to do vibrato/tremolo.
This software quantization snaps to ALL 12 chromatic semitones while preserving vibrato through movement detection.
New Settings
chromatic_quantize(bool): Enable 12-TET semitone snappingwhole_tone_bias(float, -1.0 to 1.0): Adjust zone balance for mechanical surface compensation0.0= equal zones (50/50)0.4375recommended for speed bump surfacequantize_hold_threshold(float, 0 to 1): Movement sensitivity for vibrato detection0.0= always snap (no vibrato passthrough)0.5= balanced (recommended default)1.0= never snap (all microtones pass through)Requirements
Must disable ALL LinnStrument quantization settings:
This software quantization then handles semitone snapping with proper support for notes between pads, while preserving intentional vibrato (which hardware quantization removes).