you could instead suborn the "skipped_count" field, which is never filled in by the player.
Hmm, good point. I'll use that instead of the plays count.
This has the advantage over "x-rating" that it can be changed with the music partitions read-only (in Hijack; there's no player UI to do so).
Yeah, I don't want to get involved in writing to the music partition. skipped_count seems to be the best field to use for this purpose. The problem is the player writes the entire DynamicData structure (including an empty skipped_count) on track changes, so I'll probably have to wait until the player's done its thing before I write ratings out.
My original idea (filtering the player's disk write at the kernel) level seems difficult on second thought, as the kernel would have to calculate a new CRC16 for the dynamic data structure, since the player's idea of what's there is going to be different than what's actually written to disk. Probably best to avoid that whole mess and detect the plays_count of the last track changing before writing the numerical rating out the skipped_count field.