Quick hack to make NSX-39 (Poke-Miku) USB MIDI device to speak "mbed" from mbed which acts as an USB host.
Dependencies: FatFileSystem mbed
Fork of MIDI_BlueUSB by
Description of the project
This is quick hack to control Poke-miku (NSX-39) from mbed. The mbed acts as an USB host and controls USB MIDI device NSX-39. It speaks "mbed" if you send "s¥n" from virtual USB serial (connected to PC or Mac) or push SW connected to p21. It plays MIDI file "test.mid" on local file-system if you push SW connected to p22. You can find files that I have tested at the bottom. The standard MIDI file support is still preliminary. See TestShell.cpp for the hack. This program is derived from MIDI_BlueUSB (http://mbed.org/users/radiojunkbox/code/MIDI_BlueUSB/) by Radio Junk Box.
ポケミク(NSX-39)を無改造のままmbedから鳴らせるようにしてみました。mbedがUSB hostになって、USB MIDIデバイスのポケミクを鳴らします。mbedのバーチャルシリアル(USBシリアル)にPCからs\nを送るか、p21につないだスイッチを押すとmbedとしゃべります。p22につないだスイッチを押すと、ローカルファイルシステム(.binと同じ場所)に保存した test.mid を再生します。試したファイルは下にある test1.mid と test2.mid です。MIDIファイルのサポートはまだまだ完全とはいえません。
tested MIDI files
Video: Poke-miku speaks `mbed'
Utils.cpp
- Committer:
- non
- Date:
- 2014-04-27
- Revision:
- 3:31fbce33c25b
- Parent:
- 0:79620c558b0c
File content as of revision 3:31fbce33c25b:
#include "mbed.h" #include "Utils.h" void printfBytes(const char* s, const u8* data, int len) { printf("%s %d:",s,len); if (len > 256) len = 256; while (len-- > 0) printf(" %02X",*data++); printf("\n"); } void printHexLine(const u8* d, int addr, int len) { printf("%04X ",addr); int i; for (i = 0; i < len; i++) printf("%02X ",d[i]); for (;i < 16; i++) printf(" "); char s[16+1]; memset(s,0,sizeof(s)); for (i = 0; i < len; i++) { int c = d[i]; if (c < 0x20 || c > 0x7E) c = '.'; s[i] = c; } printf("%s\n",s); } void printHex(const u8* d, int len) { int addr = 0; while (len) { int count = len; if (count > 16) count = 16; printHexLine(d+addr,addr,count); addr += 16; len -= count; } }