Midi sequencer SD Card storage, ideas?

Guys, I'm working on my Midi Sequencer project and using the SD Card for memory, as there's not much in the Arduino, even the Mega. :wink:


So, just wondering if anyone has some pointers on how I could organize the 16 midi sequences in a SD Card RAW mode? (for faster usage)

I will brainstorm a bit on this over the weekend, but I would like to hear from some other people too. Just so I don't "reinvent the wheel" as some people pointed out. :-[

Anyway, its late so I'm going for now, but we talk more during the next days...

Best Regards, WilliamK

Hello WilliamK ,

Check out the Storage Shield. http://www.chipstobits.com/blog/storage-shield/

I have prototyped a MP3 player with the Storage Shield using the TWI mode and had some nice throughput. SPI mode is even faster. Raw mode is not supported yet, only FAT type file systems.

What type of throughput are you looking for?

It looks like you are using the Mega correct? I have a set of libraries for the mega that I have not released yet. If you are interested let me know.


Thanks, that sure looks good. I'm still deciding how I will handle how the data will be stored and read, so I don't know yet how many bytes I need to read per second.

The idea is to have a pattern loaded on memory for the drums, and load the 16 Midi sequences directly from the SD card. When the drum pattern change, load the next pattern from the SD card. When there's a midi track recording going on, record to a buffer and send to the SD Card when the buffer is full.

The easy way to playback the whole thing is to have all the data "merged" in another SD Card temporary area and have that played back, which would be a very slow read. BUT, every time you change something on the sequence, means you need to redo the whole temporary "merged" sequence. And when the song project gets large, any small change would mean a few seconds of waiting for this to happen. (unless is a simple change) So I'm still trying to figure out how I will deal with this whole thing. :wink: In the PC side, I already did it, but it takes a lot of memory which we don't have in the Arduino side. :o

Anyway, I will brainstorm more about this later on... thanks for now. :sunglasses: