Store Tunes On Paper And Stream Them Over LoRA

Some projects seem too good to be true until you dig into it and find the secret magic that makes it all work. Take Paper Tunes by [Makestreame], a project which purports to store a song on a single sheet of paper via QR code and transmit the data over LoRA. If it was a MIDI sequence, maybe. But the promise of Paper Tunes is to take any MP3 and give it this treatment, and that just seems like an impossible level of compression at first glance.

The music is heavily compressed, make no doubt about that. There’s samples in the Instructables link above and in the video below, but it sounds far better than it has any right to. The secret is Meta’s EnCodec neural codec, which like you’d guess uses neural nets to squeeze the absolute minimum information needed to reconstruct a sample. With it [Makestreame] is able to get a 2.9 MB MP3 file down to just 21.44 kB.

Of course, that’s still not going to fit in a 3.3 kB QR code. But by simply making eight of them, [Makestreame] is able to fit the song onto the front and back of a piece of paper. Yes, each song has an “A” and a “B” side — and you thought flipping a record halfway through got old fast. Having to scan eight codes to get one song may strike some as a bit silly, but we do enjoy some silly things here.

The same EnCodec compression that gets the song so tiny as to fit in a brace of QR codes is obviously also what enables its transmission over LoRA. While it’s got far lower bandwidth than something like WiFi, 21 kB is well within its limits. It’s often said that LoRA isn’t suitable for audio, but this project is another example that one person’s “unsuitable” is another person’s “challenge accepted”.

We’ve seen other LoRA audio projects before. Speaking of things not suitable for audio, we once featured an entire album crammed onto a floppy disk.

37 thoughts on “Store Tunes On Paper And Stream Them Over LoRA

    1. Love it. Have to check out the compressor.

      I think you can out more QR codes on a page.
      Page is 7.5 inches, laser printer runs at 600dpi, that’s 4500 dots across. QR code is 177 wide.
      The current 2×2 uses about 12 ink dots per QR code dot. Perhaps that can be doubled, 6 ink dots per QR dot. Use the 30% error correction QR code. So, maybe 3×5, 15 QR codes on a an A4 page?

      1. It’s not hard to source black and white printers that will do 1200 DPI and even higher. Using coated paper you can ensure clarity for consumer photo printers to make 2400 dpi prints, though at this point optics might be an issue if the camera isn’t high enough resolution.

  1. If encodec can get a ~3 minute song down to ~21 KB, I wonder how small it would make a voice recording.

    My thought would be that if Meshtastic could bundle that in, it could add a walkie-talkie function that works over the mesh. It currently has (or had?) an experimental voice message mode, but it could only work over LoRA at 2.4 GHz which isn’t a common use. I don’t even see that module in the latest version of the app, so they may have removed it.

    1. Replying to myself after some thought:

      If I recall, the (former?) “Audio” module in Meshtastic used Codec2 which can compress speech down to 450-700 bps. I’ve played around with that, and 700 was often pretty rough but you could make still make it out.

      If 700bps was too much for the LoRa mesh to handle, then 1.5 kbps would be way too much. I didn’t catch (or the video didn’t show) the spreading factor used, but I have a few of those UART->LoRa modules, and they are pretty much only good for point-to-point. Even at a higher SF, you could probably transmit that P2P where it would likely clog up a mesh that’s having to rebroadcast it.

      Still, I may try it experimentally and see how it goes. Maybe setting a low hop count on those so they’re only reaching direct peers or, at most, 1 hop away may mitigate that.

      1. Was thinking similar but in HF being a Licensed Ham.

        Probably too much bandwidth there with that model ideal for music, wasteful for the needs of speech, so went down the conformer/vocoder thought route instead…

        Take voice into latent space ( https://en.wikipedia.org/wiki/Latent_space ), transmit the compressed vector, and the vocoder other side to bring the compressed vector back to speech and fell over RADE already existing, and in FreeDV now.

        Not yet looked for any GnuRadio flows though to enhance it more.

        1. And thought not fully formed, but bedtime… I shall reply to myself to leave the V1 models and python testing parts, so pretty much leveraging the checkpoints only as in the TX and RC.py files there… maybe… in theory and instead of the OFDM stuff feeding the latent space vector over meshtastic. Maybe. No calculations on bitrate needed and so on.

          https://github.com/drowe67/radae

    1. Laser cut into metal

      “We’re here to burn all books.”
      Rolls out Harlequin romance novels from yard sales.

      “Gee, I have never seen screen door patterns like that…with glass over them.”

      They’re just blinds, dear boy… gasoline?

  2. IMHO, next logical step, 3D printing a platter, then adding a tonarm made from a scanner wand to read it as it spins round, round, round. LPs reinvented :] Maybe two sides, two tonarms, too. Who knows, maybe it even works out, and zero wearout.

    1. As nice side-effect, clock signal can be embedded in the shortest track, so the platter could be rotated with the cheapest/wobbliest motor, no difference :] As long as buffering is large enough, that is, and as long as error checking is not bad.

    2. Maybe it could use a focused IR laser to make it work with smaller dots. The dots could then be stamped on a thin aluminum surface over a rigid plastic disc. Some error correcting would be needed, maybe use 8 to 14 modulation. The disc could be called Coded Disc, or CD, since it has audio coded on it. Maybe it could also be used for data storage.

      1. Scanner wand swipes entire half-platter in one go, meaning, no need to focus anything, so gone the pains of track-following, etc.

        But yeah, wheels are regularly reinvented anew :]

  3. This is cool! I did a lot of work with paper user interface at Xerox Parc and Fuji Xerox in the early 1990s. I have is an expired patent (US5459307A) for Paper Floppies, which you would scan on a copier or scanner and the file would appear on your desktop. We eventually released a product called Paperworks and a research paper called Protofoil, and a Disney Tomorrowland exhibit with action stickers based on DataGlyphs, and a few enterprise hardware/software paper document management systems with Paper User Interface (DocuStation IM 200, FlowPort). The research effort can not be seen as a pre-web paper browser.

  4. I listened to their EnCodec neural codec samples. It’s changing the music significantly. The encoded music is similar to the original but clearly different in a worse way. I get the novelty, but if this were widely adopted for streaming to save on bitrate, humanity would be losing out, just like if all food was transformed into McDonalds. Everyone would forget what music was supposed to sound like and wonder when music lost its soul.

    1. Yeah, “sounds better than it has any right to” doesn’t mean “sounds good”– but that’s what lossy compression does. I doubt it’ll catch on, except when extreme compression is needed. On the other hand, is it worse than a 78 compared to a live performance? Nobody worried about music losing its soul in those days.

  5. Ok. Compression rates are impressive.
    But how many CPU-cycles are needed and how much energy is required to compress a certain number of samples? This is very likely not something you’re going to run on a single board computer.

  6. I’m the maker of this project. Thanks for featuring it here and love to see all the curious comments.

    Just to add, this project was never meant to be something useful. It was a fun idea I had and thought of seeing if it works.

    But it did come to me couple of years ago when I used to sell artworks on etsy and wanted to somehow store personalized voice recordings in the physical print of the artwork. Back then I had no idea how to pull it off and simply stored barcodes shaped like sound waves with links to the audio.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.