Skip to content

Only float32 goes to the pedal untouched (fixes #44) - #45

Merged
AliceLafox merged 1 commit into
mainfrom
fix/wav-float32-only
Aug 19, 2026
Merged

Only float32 goes to the pedal untouched (fixes #44)#45
AliceLafox merged 1 commit into
mainfrom
fix/wav-float32-only

Conversation

@AliceLafox

Copy link
Copy Markdown
Member

Closes #44.

A beta tester's 16-bit 44.1 kHz stereo WAV was accepted without a word and
the pedal would not play the memory. His 24-bit files worked — and that was
the misleading part: 24-bit DAW exports are WAVE_FORMAT_EXTENSIBLE, which
the gate already refused, so those went through the converter and arrived as
float32. What differed between working and not was conversion, not bit
depth
.

The accepted-format set came from rc5cat, which cites Roland's import
documentation for 16/24-bit support. Nobody on our side had measured it.

Measured on hardware

Two empty slots on a real RC-5, identical audio, only the format differing.
Both files landed on the card and neither was rewritten when the pedal left
storage and re-indexed. What the pedal then says about them:

slot 30: name="TEST 16BIT  "  hasAudio=NO   frames=0
slot 31: name="TEST FLOAT32"  hasAudio=YES  frames=529200

The pedal's indexer discards the 16-bit take and accepts the float32 one.

The change

assertUploadable now accepts only float32 — the format the pedal records
in — so everything else takes the converter that already works and that made
the tester's 24-bit files play. pedalAcceptsAsIs simply stops saying yes;
no new code in the import path.

Tests moved with the rule, not around it

  • upload validation now expects PCM to be refused
  • the import suite gains the reported case: plain 16-bit stereo 44.1 kHz must
    come out float32 with its frame count intact
  • command fixtures became float32 — which is what the pedal actually writes —
    and the size arithmetic they carry is now named (frame bytes, source
    header, canonical header) rather than assuming 16-bit geometry

16/16 suites pass.

A beta tester imported a 16-bit 44.1 kHz stereo WAV, the app accepted it
without a word, and the pedal would not play the memory. His 24-bit files
from the same source played fine — and that was the misleading part: a
24-bit DAW export is WAVE_FORMAT_EXTENSIBLE, which this gate already
refused, so those files went through the converter and reached the pedal as
float32. What differed between working and not working was conversion, not
bit depth.

The accepted-format set came from rc5cat, which cites Roland's import
documentation for 16- and 24-bit support. Nobody on our side ever measured
it against a pedal. This is the first report from real hardware and it says
the documentation is wrong, so the rule is now what we can prove: the pedal
plays back the format it records, float32, and that is the only shape we
hand it untouched. Everything else takes the converter that already works.

Verified on the tester's actual file: 16-bit PCM, 44.1 kHz, stereo, real
audio, structurally spotless — accepted as-is before this change, refused
by the gate after it, which is what sends it to the converter instead.

The suites moved with the rule rather than around it: the upload validation
now expects PCM to be refused, the import suite gains the reported case
(plain 16-bit stereo 44.1 must come out float32 with its frame count
intact), and the command fixtures became float32 — which is also what the
pedal actually writes, so the size arithmetic they carry is now named
(frame bytes, source header, canonical header) instead of assuming 16-bit.
@AliceLafox
AliceLafox merged commit 44b8b75 into main Aug 19, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

16-bit PCM is uploaded as-is, and the pedal will not play it

1 participant