The camera would also be a limiting factor. The iPhone 12 has a 12 mega-pixel sensor, so even if you can get exact pixel-for-pixel alignment of the sensor and coded data, you would need to represent 10-50 bits of information in each pixel (eg via color/brightness), for an album, or 1-8 bits for a single song. In practice, you need several pixels per bit, so you would have to scan the code in sections - you couldn't image it at once. At that point, perhaps a tape would be more appropriate than a card.
That is with fairly transparent compression though. You could be a lot more aggressive, and might get something that would work with a single photo.
You will most likely have to use only primary colors or something quite close to that which will limit your data density considerably.
Using Opus at a ridiculously low quality, you can probably fit a standard 3 minute pop song in ~200KB.
A QR code, with minimum error correction, can fit a maximum of about 4KB. So a square of 7x7 codes would be enough.
The largest type 40 codes are 177x177px. So that's about 1,200px square.
Depending on the resolution of your camera, and how far away it is, you might be able to squeeze that onto an A5 print out.
There is a commercial product for children, called Tonies (Or Toniebox) - see https://us.tonies.com/. They have something called "Kreativ-Tonies" (german), where you can store up to 90min of audio content, but I did not find out, how they are working technically. I think that they just store it on a cloud server and stream / download the content on usage, but I'm not sure about this.
BTW: I don't think, that storing the music on a card directly would be the best approach, because if the card breaks, you have to rebuild the whole card. If the music is stored on the device or cloud, you just have to print one.
Jokes apart here you can find an insight about qrcodes capacity: https://github.com/dtonon/papiro