SPI Flash or SD Card?

I’m not sure how many people are following Build Your Music, but I have a question I want to pose to the community.  For the song data storage, should I use Winbond SPI Flash or an SD Card with Data Logger Shield in my final design?  The robotic xylophone is currently made using Winbond SPI Flash as the data storage.  I originally chose this option because it was cheaper than a Data Logger Shield and SD card, and I felt that 1 MB of memory was more than sufficient for this type of data.  However, I have since realized some drawbacks with going this route:

  1. Many of the on-line retailers that used to sell the Winbond SPI Flash in the DIP8 form factor no longer carry this part. Neither Adafruit nor AliExpress, (both places that I have bought this from before) is selling this part any more.  In fact, when I do a Google search now, the only place I can find still selling this part is E-bay.
  2. Using the SPI Flash as I have been doing requires Windows-based software to decompile MIDI files, and then load the data into the Flash memory in a format that will be read by the Arduino and used to play the xylophone. This isn’t that big of a deal when I am just using the software for myself.  However, when I think of going the next step, of making the software available so that others can put music on their own robotic xylophone, I realize that I am going to have to put a lot more work into the software, debugging it, making it more usable, etc., before I could be confident that others could use it trouble-free.

At the same time, there are some advantages to using an SD Card:

  1. I have found an Arduino library MD_MidiFile which can read a MIDI file from an SD card and generate MIDI events “on-the-fly”. That means that I could copy a MIDI file directly to the SD card, and have the Arduino play it on the xylophone.  Then there would be no need for this separate custom-developed Windows-based software.
  2. The amount of Arduino code I would need to write, document, and publish would be significantly less if I used an SD Card with the MD_MidiFile library.
  3. The SD Card seems to be much more commonly used in other Arduino DIY projects.
  4. I can find a Data Logger shield on AliExpress for only $2, and an SD card on Amazon for $6-$10. This compares with about $2 for the Winbond SPI Flash chip, and around $1 for the Solderless Breadboard, resistors, and capacitor.  So, the cost adder is really only about $5-$10, which is probably worth it, when considering how much less custom code would need to be developed and maintained.

If you have been looking at the instructions on-line, you will see that the parts list, and instructions for building the physical xylophone are already there, but the software is not there yet.

My question to the community is this: Should I continue along my current path, and spend a lot of time debugging, commenting, and documenting the software needed to make the xylophone work with Winbond SPI Flash?  Or should I switch the design to use an SD Card, make the necessary changes to the parts list and assembly instructions, and then document and publish a much simpler Arduino code?

Please share your thoughts with me in the comments or via the Contact form.


SPI Flash Setup
Test Setup using Winbond SPI Flash
SD Setup 2
Test Setup using Data Logger Shield and SD Card

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s