Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/diskchord/aps-song-check/archive/refs/heads/main.zipAn installable WordPress plugin that checks MIDI and E-SEQ files for common issues. Choose or drop files and the check starts automatically. Results explain what was found and link to relevant APS tools.
Install
Upload the ZIP in Plugins → Add New → Upload Plugin, install, and activate. Create a page such as Why Won't This Song Play? and add a Shortcode block:
[aps_song_check]
Alternatively use the APS Song Check block. The block displays a placeholder in the editor and the complete checker on the published/preview page.
Optional title and alias:
[aps_song_check title="Check Your Piano Song"]
[why_wont_this_song_play]
The plugin adds Tools → APS Song Check with setup and coverage notes. It does not install a page, create a menu item, publish content, change a database schema, or alter existing tools automatically.
Suggested page slug: /why-wont-this-song-play/. Link that page from the Tools & Downloads hub, MIDI/E-SEQ converters, XF Stripper, and Disklavier compatibility table.
What the visitor does
Choose or drop a MIDI or E-SEQ file to start a general check. Optionally select your piano or current controller to include its compatibility checks. Selecting a piano reveals a playback-method choice, initialized to the profile's documented default route; choose the route you use. Changing either selection automatically rechecks the current files. No symptom or recording-history input is needed.
Multiple files can be checked together; a new file selection replaces the previous results. The format is detected from the contents, even if the extension is wrong.
The results lead with common issues and next steps. Observations, channel tables, and technical details are expandable. Users can copy or download the report; JSON is available under Export technical report. E-SEQ coverage limits appear directly in its report. No file or report is automatically sent to Alex.
Included
- Automatic file checks with optional piano and playback-method selection.
- Read-only MIDI structure, note, track, channel, controller, timing, and metadata inspection.
- Targeted XF record recognition; possible XP/PRO preservation warnings without treating all pressure data as XP.
- Bounded ZIP and FAT12 inspection remains available when those files are selected, including catalog references within a package.
- Findings for damaged structure, missing or muted notes, unreleased notes and pedals, unusual tempo, long initial silence, and metadata concerns.
- Scoped responsive CSS, native labeled controls, accessible status announcements, cancellation, and escaped untrusted text.
- No external JS libraries, AI dependency, upload endpoint, account, MIDI connection, or server-side music processing.
Important scope limits
This is a diagnostic, not a converter or hardware playback test. It does not repair, export music, remove XF/XP, change filenames, or send MIDI. Recommendation links do not transfer files automatically.
XP detection is advisory. This version is not a complete proprietary XP decoder. It recognizes preservation indicators, not every XP variant, and does not certify XP absence. Ordinary polyphonic aftertouch and CC88 alone are not definitive XP identification.
E-SEQ and HFE inspection is limited. E-SEQ signatures and recognized headers are inspected, but its musical event stream is not decoded here. HFE headers are checked, but the magnetic track bitstream is not decoded. The report explicitly directs these files to APS MIDI Prep Tool for deeper inspection. MUSIC.DIR and PIANODIR reference checks cover recognized layouts, not every historical variant.
The browser defaults to general file checks without a destination instrument. Its optional piano selector uses 33 bundled profiles, including the general-check choice, to add checks for the selected controller and playback method. These remain file reports; the page does not add a hardware troubleshooting questionnaire or report. Profiles are a reference snapshot dated 2026-09-13. Firmware, controller settings, and physical media are outside the file check.
Developer layout
| File | Responsibility |
|---|---|
aps-song-check.php |
WordPress shortcode/block, assets, setup screen |
data/config.json |
Profiles, sources, limits, thresholds, destination links |
assets/config.js |
Generated browser/Node copy of configuration |
assets/engine.js |
DOM-free read-only analyzer and guidance |
assets/worker.js |
Background worker entry point |
assets/app.js |
Browser interface, file selection, cancellation, reporting |
assets/style.css |
Scoped responsive design |
tests/ |
Synthetic fixtures and automated tests |
docs/ |
Coverage, sources, maintenance, test record |
No build tooling is required to install. See docs/MAINTENANCE.md to modify rules and regenerate the bundled config.
Tests and preview
node --test tests/engine.test.js
php -l aps-song-check.php
php tests/wp-render.php --test
The fixtures are synthetic, not customer recordings. SYNTHETIC.FIL only exercises header inspection; it is not a factory-valid performance. Do not send test fixtures to physical piano keys.
To generate and serve a standalone preview:
php tests/wp-render.php > demo/index.html
python3 -m http.server 8765 --bind 127.0.0.1
Open http://127.0.0.1:8765/demo/index.html. The demo must be served from the plugin directory root, not opened as a file:// page. Browser test prerequisites and test coverage are documented in docs/TESTING.md.
License
Apache-2.0. See LICENSE and NOTICE for the targeted XF and E-SEQ/catalog mapping attribution to APS MIDI Prep Tool.