Finally: The new Mr.Midi 2 is ready!
It works with the real midi file protocol and supports a FAT16 file system on the inserted card. So usage is as simple as with a MP3 player.
For such a luxury you need the ATmega168 from Atmel.
Invented in Germany, going round the world! Since it is free open source, you can build it, sell it, modify it (but as open source again) and have fun with it!
Even people from UK, Japan and the Netherlands have build their own DIY MrMIDI 2!
If you like, you can send me pictures of your own!
Everybody who can build the circuit and program an ATmega168/328 on his own can use it for free and unrestricted.
Works with most cards, max size is limited to 2GB (but please also note, cards 32MB and below could use FAT12, which is not supported)
Real MIDI files on FAT16/32 (Midi format 0 only) - recording (only root dir) and playback
Maximum of 255 files per folder
Displays the file names - long names are supported - filename scrolling
File delete is possible (it can delete any file from the root directory)
256 byte input/output buffer and 8MHz clock for high performance and precise MIDI timings
Lyrics are displayed (when contained in MIDI file) - cool!
Variable speed (+/-15 steps) and transpose (+/-24) while playing a file
MMC/SD card bootloader - just format a card, copy generated MM.BIN onto it, insert it, press and hold STOP and switch ON!
MIDI channel mute for each channel
Menu for setting up drum channel, lyric display, repeat modes, channel mutes and track delay
Settings are stored in non-volatile EEPROM on-chip
IR remote control (RC5 protocol), a Philips videorecorder remote for example. Or get a programmable remote and use code 257 (for a Philips VCR).
Several song repeat modes (song, folder, random, non-stop)
Attention: Mega168 pin TX must be connected to OUT pin 5 and pull up to OUT pin 4! For LED backlight: Connect LED- (K) of your display over a resistor to PORTB6+7 (in parallel), connect LED+ (A) to Vcc 5V For mass production: Connect an 8MHz XTAL and 2 capacitors to PORTB6+7 for stable clock accuracy over life-time, see data sheet!
1x ATmega168/328 - processor
1x TSOP4836 (or TSOP1836) - IR receiver
1x 6N138 - optocoupler
1x 24x2 or 16x2 standard display LCD
1x LDO voltage converter 3.3V - for card
1x voltage converter 5V - for MCU, display and TSOP (note the power requirements for your converter! The display with LED background light alone could consume 100mA.)
1x power switch
3x 4.7k (try higher values, if you have problems with your cards)
For LCD backlight another resistor (depends on your display) - if your LCD needs to much power, you'll need an extra transistor like the 2N3906 to drive it!
1x 8 MHz XTAL + 2x 18pF for greater clock accuracy (at PB6 and PB7 instead of backlight) - the internal oscillator has too much tolerance for mass production! Don't forget to set the fuses accordingly!
Compile the project with WinAVR 20060421 + AVR Studio 4.12 or newer up to Atmel Studio 6.0. Ignore the warnings.
Use hex2bin to create the bootloader file MM.BIN.
Then update your main_blXX.hex-flashed MrMIDI2 to the current version!
Remember, this is a free DIY open source project.
Open source means: When you change it, please offer the sources as free download. If you want to make money of it (commercial production) you can do this, but put a link of this page on your product page (and in the product manual). Please send me a free sample of your product, too (so I can go showing off :-)!
No warranties or liabilities are given. Build and use this project on your own risk!