|
|
@@ -102,7 +102,7 @@ Pool rules:
|
|
|
- Entries that came with a loaded project keep their metadata untouched. New entries use `loadImpl` 0, tempo 0.0, root note 60, tune 0.0, key "C Natural Minor" (the values the device wrote for the non-factory sample).
|
|
|
- Limit: 128 samples. Refuse the 129th with a clear message.
|
|
|
|
|
|
-Validation at the edge of the model: WAV must be uncompressed (integer PCM or 32-bit float), mono or stereo, at most 20 minutes; `sliceInfo.End` is the file's own frame count minus 1 at its own sample rate; project and sequence names non-empty and free of characters that are illegal in file names on Windows or FAT; bars at least 1; BPM positive.
|
|
|
+Validation at the edge of the model: WAV must be uncompressed (integer PCM or 32-bit float), mono or stereo, at most 20 minutes; `sliceInfo.End` is the file's own frame count minus 1 at its own sample rate; project and sequence names non-empty and free of characters that are illegal in file names on Windows or FAT; bars at least 1; BPM 20-999 (the device's range); mute group 0-16.
|
|
|
|
|
|
### 4.4 Export (`internal/export`)
|
|
|
|
|
|
@@ -206,6 +206,8 @@ Run by hand on the MPC Sample. Record results in the format doc.
|
|
|
4. WAV formats: covered by the separate WAV test pack below, which can be run before any Go code exists.
|
|
|
5. A sequence at 1 bar and one at a long length (for example 64 bars); BPM at the device's lowest and highest.
|
|
|
|
|
|
+Results (2026-11-10, on the device): all passed. Tuning limits confirmed; mute groups run from none to 16; BPM from 20 to 999; 1 and 64-bar sequences work; extensible-header WAVs play. Details in the format doc, section 7, and `tools/checkpoint-a/README.md`. M3 is done.
|
|
|
+
|
|
|
**WAV test pack (`mpckit-wav-tests.zip`, built 2026-11-10 with the prototype writer):**
|
|
|
|
|
|
Akai's published spec for the device: file import at 16 or 24-bit and 44.1, 48 or 96 kHz; internal processing at 44.1 kHz, 32-bit float. That describes importing through the device's own browser. mpckit places files straight into the project folder, so the test checks whether the device still converts them when it loads a project.
|
|
|
@@ -240,7 +242,7 @@ Conclusions:
|
|
|
|
|
|
1.0 rule for assigning a file: accept any uncompressed WAV (integer PCM or 32-bit float), mono or stereo. Refuse compressed WAVs (ADPCM, MP3-in-WAV), more than two channels, and anything over 20 minutes.
|
|
|
|
|
|
-Not yet tested: WAVs with the "extensible" header that many audio tools write for 24-bit files; sample rates above 96 kHz or below 22.05 kHz; 64-bit float. Accept the extensible header when it declares PCM or float inside, and add one such file to checkpoint A.
|
|
|
+Not yet tested: sample rates above 96 kHz or below 22.05 kHz; 64-bit float (refused in 1.0). The extensible header that many audio tools write was confirmed in checkpoint A (PCM inside, 16 and 24-bit, mono and stereo); mpckit accepts it when it declares PCM or float inside.
|
|
|
|
|
|
**B (after M8), round trips through the app:**
|
|
|
1. Load `DemoFile` (recorded notes), change nothing, export: sequences still play the same on the device.
|
|
|
@@ -262,9 +264,9 @@ Not yet tested: WAVs with the "extensible" header that many audio tools write fo
|
|
|
| Firmware update changes the format | The header version (`1.3.0.12`) and `data.version` (28) are checked on load; warn when they differ from the tested values. |
|
|
|
| WAV variants the device rejects or plays wrongly | Largely retired by the WAV test pack (section 7): all eleven formats played correctly. Remaining unknowns are listed there. Akai's spec caps a sample at 20 minutes; refuse longer files. |
|
|
|
| The app's preview cannot decode a WAV the device accepts | Each system's webview has its own audio decoder, and 8-bit, 32-bit integer or extensible files may fail in some. Try the webview's decoder first; if it fails, fall back to a Go route that decodes the PCM itself and returns 32-bit float samples for the frontend to play. `internal/wav` therefore needs a small decoder as well as the header reader. |
|
|
|
-| Mute group count unknown | Checkpoint A3; the UI list is sized from the result. |
|
|
|
+| Mute group count | Resolved (checkpoint A): none and 1-16. The UI list offers Off, 1-16. |
|
|
|
| Shortening sequences with notes | Checkpoint B5; until then warn and leave notes untouched. |
|
|
|
-| Tuning limits taken from a community toolkit | Checkpoint A2. |
|
|
|
+| Tuning limits taken from a community toolkit | Resolved (checkpoint A): ±24 semitones and ±90 cents confirmed on the device. |
|
|
|
| Very long or unusual file names | Keep names as they are; reject only characters illegal on Windows/FAT. Revisit if the device truncates. |
|
|
|
| File drop quirks per system | Dialog-based assign is always available as the fallback. |
|
|
|
|