Calibrate OscA pitch depth, G1 pre-roll phases and control levels #11

Merged
peterswimm merged 1 commit from calibration-v25 into main 2026-10-22 02:18:37 +00:00
Owner

Fit the OscA/OscB Type II pitch input to G1-Emu measurements: each knob
has a measured full-scale step count on the 1/128-semitone grid, and the
summed inputs are floored once. Pitch modulation lands at capture start;
through the adapter pre-roll the oscillator free-runs at its static pitch.

Model the adapter pre-roll (0.31 s) in the Faust runner so free-running
sources keep patch time: ClkGen beat phase, LFOB/LFOC start phases per
voice mode, and OscA sine/triangle start phases. LFOC follows G1's
waveform order and LFOB's range-1/2 rates.

Unipolar 7-bit levels (Constant, ADSR/Mod-Env sustain, Multi-Env,
NoteVelScal) send v/128 with 127 at full scale, as G1 does.

Scope

Testing

Impact Statement

  • Existing features:
  • Public APIs / contracts:
  • Schemas:
  • Data / artifacts:
  • Integrations:
  • Mappings:
  • Backward compatibility:

Docs

Fit the OscA/OscB Type II pitch input to G1-Emu measurements: each knob has a measured full-scale step count on the 1/128-semitone grid, and the summed inputs are floored once. Pitch modulation lands at capture start; through the adapter pre-roll the oscillator free-runs at its static pitch. Model the adapter pre-roll (0.31 s) in the Faust runner so free-running sources keep patch time: ClkGen beat phase, LFOB/LFOC start phases per voice mode, and OscA sine/triangle start phases. LFOC follows G1's waveform order and LFOB's range-1/2 rates. Unipolar 7-bit levels (Constant, ADSR/Mod-Env sustain, Multi-Env, NoteVelScal) send v/128 with 127 at full scale, as G1 does. <!-- BEGIN ORG-POLICY (managed by .spel/bin/forge-policy-sync.sh — do not hand-edit; source: core.contributor_review_policy, policy_key=org_contributor_review) --> ## Scope <!-- One major feature or closely-related family only. Note any unrelated work split into a separate PR. --> ## Testing <!-- What tests were added/updated? If this is docs-only and skips behavior tests, say why. --> ## Impact Statement - Existing features: - Public APIs / contracts: - Schemas: - Data / artifacts: - Integrations: - Mappings: - Backward compatibility: <!-- "No expected impact" is fine per line above, but only after actually considering it. --> ## Docs <!-- Updated docs/examples/schemas/migration notes if the public contract changed? --> <!-- END ORG-POLICY -->
Calibrate OscA pitch depth, G1 pre-roll phases and control levels
All checks were successful
PR policy check / policy-gate (pull_request) Successful in 0s
b871fdafb4
Fit the OscA/OscB Type II pitch input to G1-Emu measurements: each knob
has a measured full-scale step count on the 1/128-semitone grid, and the
summed inputs are floored once. Pitch modulation lands at capture start;
through the adapter pre-roll the oscillator free-runs at its static pitch.

Model the adapter pre-roll (0.31 s) in the Faust runner so free-running
sources keep patch time: ClkGen beat phase, LFOB/LFOC start phases per
voice mode, and OscA sine/triangle start phases. LFOC follows G1's
waveform order and LFOB's range-1/2 rates.

Unipolar 7-bit levels (Constant, ADSR/Mod-Env sustain, Multi-Env,
NoteVelScal) send v/128 with 127 at full scale, as G1 does.
peterswimm deleted branch calibration-v25 2026-10-22 02:18:37 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
peter-swimm/nardwahl!11
No description provided.