The song parser is quite ugly. Functional, though. I think [`nom`](https://lib.rs/crates/nom) would be well suited to parsing this format.