Terrible use-case though. ID3 metadata is a few hundred bytes, all of it in the header. Just use READ-SEQUENCE and be done with it.
(defun read-n-bytes (path &optional (n 512))
(with-open-file (fd path :element-type '(unsigned-byte 8))
(let ((header (make-array n)))
(read-sequence header fd)
header)))