=== Cassette ===
Loading from cassette effectively uses all the CPU's time because you have to keep checking it must poll the cassette signal input in order to see if it has changed, convert the sound into data.So to do music and you use a CPU other things during loading requires precise timing loop to calculate length of signal.
So to do music and other things during loading requires precise timing. The C64 effectively had interrupt driven loading music and the serial chip handled clocking in of the data bits and signalled an interrupt when the byte of data was ready. This meant music during loading was much easier to achieve.
I think only Firebird games had loading music on cassette. The music was composed by Melvyn Wright ([http://www.melright.com www.melright.com]). The music data was embeded into the data on cassette. The data was read as a group of 3 bits and 8 data bits. The 3 bits determined if the 8 data bits were for data or for music.