Midi-Sequencer - how to?

Ok, I'm starting to think how my Midi-Sequencer project could work. Since the memory size of the Arduino-Mega is small (8Kb) I can't have the sequence on memory, so I will have to use a SD-Card for that.

The idea is to have Patterns, Song and Events, 3 structures. But I don't know how I will manage that on the SD card and still have things working.

Keep in mind that this is a RECORDER too, so its not just playing back a .midi file, not that simple. ;-)

Anyway, next week I will start brainstorming about this, and see what happens. :cool:

I'm still considering using another chip, like the Netduino or FEZ Panda. But .NET C# seems a bit weird to use, first since its MS, and second its interpreted, so I may not get the 72Mhz of the chip anyway... but heck, depending how the Arduino code turns to be, I may take a look at the .NET alternative. :-[

Wk

You better test the transfer speed to and from the SD card first to make sure it can handle your needs.

Also sending MIDI is not so difficult, but recieving is much harder because you need to take the MIDI protocols "runnig status" into considertation, and keeping up wih a steady incoming stream of MIDI messages while at the same time constantly writing to the SD card because your buffers will be small.

This is not an easy project. I would go for the MIDI player part first. Make it work as required, and then in version 2 start to mess with the recorder stuff which will be a serious challange to implement.

One thing I was thinking about is to have 2 parts on the SD card. The whole sequence in a stream way, so its like playing a .midi file. And another structure which is the sequence in parts: song, patterns, events.

So, when you record or edit something, the code must update the complete-sequence. That could slow things down. But if I recall right, my old Roland MC-50 worked like that. Every time I changed something, it would do some sort of process. Just simple things, like event changes, wouldn't do that. But moving things around would...

Wk