Repository navigation
FSVR v0.4.3
FSVR v0.4.3: the amplitude EG's key code table at every semitone, the unvoiced resonance carrier against its register, and voice edits that reach sounding notes.
The key code table, all of it. rgwan's fourth hardware session (FS1R.unlock/captures/fs1r_capture_session4.py) plays one EG decay at every semitone from 12 to 120. Each of the 109 slopes lands on the chip's rate ladder outright, so the key offset the EG rate scaling adds is read at all 37 key codes rather than interpolated between ten: twelve notes had been a rate step off, an eighth to a fifth of their decay time. The same take holds 135 ms at every note, so the hold register does not scale with the key code; the engine had held note 12 for 920 ms. 21_keycode envelope shape 2.43 → 0.57 dB. docs/aeg.md.
The unvoiced resonance carrier. 22_ures reads the carrier at five bandwidth registers by the four settings that produce a tone. Its amplitude against the band depends on the register as much as on the setting (1.50 at register 10, 2.37 at 87), and the noise under it is cut, 23 dB at a narrow band and setting 7 where a wide band loses nothing. Both are tables now, interpolated over the register. 22_ures band shape 2.11 → 0.62 dB. The take also showed the capture chain's right channel lags the left by one sample, which had put a phantom decibel into every 8 kHz unvoiced take; the carrier is read off the left channel alone.
Voice edits are live. A parameter change into a voice, common or per-operator, now rebuilds the sounding channels at their own pitch and velocity, as the unit's edit buffer does: frequency, level, form, bandwidth, detune, algorithm, LFOs and the filter all move while a note holds. Envelopes in flight keep the segments they started with.
Fixes. The plugin's voice Note Shift parameter defaulted to −24 semitones (the one Data List row written (-24-0-+24) instead of with tildes was read as unipolar), so performances loaded an octave off whenever the host reset it. Parts whose voice bank is off no longer receive MIDI (A011 Sho played four parts where the unit plays two). DX7 voices are converted through the firmware's own algorithm map and rate corrections, which took a high-frequency hiss off B024 at high velocity.
Numbers. Demo set against rgwan's recording: mean band error 4.96 dB, tilt 1.95, envelope correlation median 0.976 and worst 0.912 (0.902 at v0.4.2). Twenty-seven of the 38 capture files inside half a decibel of level. docs/fidelity_plan.md has the table; docs/findings.md the working. Left: the effects DSP, and the per-channel register dump (perchan3) whose first run stopped on a script bug now fixed.
The demo clips in the README are the v0.4.2 renders.
Known issue, fixed in v0.4.4: DX7-bank voices (PrC..PrK) are converted with their operators one slot off the firmware's placement, so a carrier can land on a modulator's slot. B025 Tremolo rings a tone after note-off and Full Tines is wrong. Use v0.4.4.