How to transfer files from USB on Arduino to SD on an audio shield?

Hello, I am running into a challenge that seems to be chasing a unicorn, hoping someone in this community has a pointer or recommendation (or disabuse me of my aspirations).

I'm developing a device that has the following basic functional requirements:

  • Transfer audio files to it via USB from PC - don't want to have to insert a mass storage device. Storage >= 16 MB
  • Decode the audio files and provide it to some lineout pins (amplifier is a plus but I can add that after)
  • typical playback control functions for user interface: play/pause, next, vol +/-, etc.
  • project is embedded, so a standalone "mp3 player" won't work

Seems simple enough, but surprisingly I have not been able to find a commercially available board with that functionality, so I've turned to Arduino to cook my own for prototyping purposes. ...but running into major stumbling blocks here too.

Currently I'm investigating the Adafruit Feather M0 Express (ATSAMD21 Cortext M0 core) with the MusicMaker FeatherWing shield riding on it. (I tried the Adafruit EZ-FX board but was not able to achieve desired playback function with the way that the trigger functions are implemented on that board.) The combination of the two seems to have the right components to achieve the functional requirements, but I'm having trouble figuring out whether the "transfer audio files" function is achievable. Specifically, whether I can expose the SD Card on the shield as a mass storage device, either directly through the USB, or via intermediate file transfer to the Feather, and then to the shield's SD card (or otherwise mediated by the Feather).

I'm resigned that this isn't "right out-of-the-box" functionality, but my question for this community is, is this even achievable, e.g. by pulling in some library (for example, writing to SD card as a FAT16 or FAT32 filesystem)? Seems there may need to be some deconflicting with the SPI? I feel competent/confident enough to port in/borrow/tweak an existing library, but not develop one from the ground up.

Alternatively, am I just barking up the wrong tree with this configuration of boards (it does seem to be overkill for what I need the project to do, but maybe not given the additional layers of complexity w/ USB)? Another configuration I was considering is an Arduino board with the requisite mass storage, that then serves the files to the decoder module (somehow). ...I waffled between posting this question here vs. "Networking, protocols, and devices" category but I figured I'd see whether there was a relatively easy answer on SD over USB first, for the board combo I'm currently looking at.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.