test code to let sing eVocaloid eVY1 shield
Fork of eVY1_shield_test by
main.cpp@2:a629af871f93, 2013-11-26 (annotated)
- Committer:
- naohiro2g
- Date:
- Tue Nov 26 13:22:13 2013 +0000
- Revision:
- 2:a629af871f93
- Parent:
- 1:ffd1fb78a02f
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ytsuboi | 0:bc5433b55c5c | 1 | #include "mbed.h" |
ytsuboi | 0:bc5433b55c5c | 2 | |
ytsuboi | 0:bc5433b55c5c | 3 | Serial evy1(P0_4, P0_0); // tx, rx configured for LPC800-MAX |
ytsuboi | 1:ffd1fb78a02f | 4 | //Serial evy1(PTA2, PTA1); // tx, rx configured for FRDM-KL25Z |
ytsuboi | 0:bc5433b55c5c | 5 | |
ytsuboi | 0:bc5433b55c5c | 6 | // DO NOT EDIT!! |
ytsuboi | 0:bc5433b55c5c | 7 | const char* phoneticSymbols[] = { |
ytsuboi | 0:bc5433b55c5c | 8 | "a", "i", "M", "e", "o", // あいうえお0-4 |
ytsuboi | 0:bc5433b55c5c | 9 | "k a", "k' i", "k M", "k e", "k o", // かきくけこ5-9 |
ytsuboi | 0:bc5433b55c5c | 10 | "s a", "S i", "s M", "s e", "s o", // さしすえそ10-14 |
ytsuboi | 0:bc5433b55c5c | 11 | "t a", "tS i", "ts M", "t e", "t o", // たちつてと15-19 |
ytsuboi | 0:bc5433b55c5c | 12 | "n a", "J i", "n M", "n e", "n o", //なにぬねの20-24 |
ytsuboi | 0:bc5433b55c5c | 13 | "h a", "C i", "p\\ M", "h e", "h o", // はひふへほ25-29 |
ytsuboi | 0:bc5433b55c5c | 14 | "m a", "m' i", "m M", "m e", "m o", // まみむめも30-34 |
ytsuboi | 0:bc5433b55c5c | 15 | "j a","i", "j M","e","j o",//やいゆえよ35-39 |
ytsuboi | 0:bc5433b55c5c | 16 | "4 a", "4' i", "4 M", "4 e", "4 o", // らりるれろ40-44 |
ytsuboi | 0:bc5433b55c5c | 17 | "w a","w o","N\\","","",// わをん 45-49 |
ytsuboi | 0:bc5433b55c5c | 18 | "g a", "g' i", "g M", "g e", "g o",//がぎぐげご 50-54 |
ytsuboi | 0:bc5433b55c5c | 19 | "dz a", "dZ i", "dz M", "dz e", "dz o",//ざじずぜぞ55-59 |
ytsuboi | 0:bc5433b55c5c | 20 | "d a", "dZ i", "dz M", "d e", "d o",//だじづでど60-64 |
ytsuboi | 0:bc5433b55c5c | 21 | "b a", "b' i", "b M", "b e", "b o",//ばびぶべぼ 65-69 |
naohiro2g | 2:a629af871f93 | 22 | "p a", "p' i", "p M", "p e", "p o"//ぱぴぷぺぽ70-74 |
ytsuboi | 0:bc5433b55c5c | 23 | }; |
ytsuboi | 0:bc5433b55c5c | 24 | |
ytsuboi | 0:bc5433b55c5c | 25 | //lylics |
ytsuboi | 0:bc5433b55c5c | 26 | //かえるのうたがきこえてくるよ |
naohiro2g | 2:a629af871f93 | 27 | int lylics[]={5,3,42,24,2,15,50,0,6,9,3,18,7,42,39}; |
naohiro2g | 2:a629af871f93 | 28 | char mml[] ="CDEFEDCCEFGAGFE"; |
ytsuboi | 0:bc5433b55c5c | 29 | |
ytsuboi | 0:bc5433b55c5c | 30 | void Short_Message(int cmd, int d1, int d2) { |
ytsuboi | 0:bc5433b55c5c | 31 | evy1.putc(cmd); |
ytsuboi | 0:bc5433b55c5c | 32 | evy1.putc(d1); |
ytsuboi | 0:bc5433b55c5c | 33 | evy1.putc(d2); |
ytsuboi | 0:bc5433b55c5c | 34 | } |
ytsuboi | 0:bc5433b55c5c | 35 | |
ytsuboi | 0:bc5433b55c5c | 36 | // send lylics |
ytsuboi | 0:bc5433b55c5c | 37 | void lylic_send(int num){ |
ytsuboi | 0:bc5433b55c5c | 38 | //hedaer |
ytsuboi | 0:bc5433b55c5c | 39 | evy1.putc(0xF0); |
ytsuboi | 0:bc5433b55c5c | 40 | evy1.putc(0x43); |
ytsuboi | 0:bc5433b55c5c | 41 | evy1.putc(0x79); |
ytsuboi | 0:bc5433b55c5c | 42 | evy1.putc(0x09); |
ytsuboi | 0:bc5433b55c5c | 43 | evy1.putc(0x00); |
ytsuboi | 0:bc5433b55c5c | 44 | evy1.putc(0x50); |
ytsuboi | 0:bc5433b55c5c | 45 | evy1.putc(0x10); |
ytsuboi | 0:bc5433b55c5c | 46 | |
ytsuboi | 0:bc5433b55c5c | 47 | for(int i=0;i<num;i++){ |
ytsuboi | 1:ffd1fb78a02f | 48 | if(i != 0) evy1.putc(0x2c); // 0x2c is separator |
ytsuboi | 0:bc5433b55c5c | 49 | evy1.printf(phoneticSymbols[lylics[i]]); |
ytsuboi | 0:bc5433b55c5c | 50 | } |
ytsuboi | 0:bc5433b55c5c | 51 | //footer |
ytsuboi | 1:ffd1fb78a02f | 52 | evy1.putc(0x00); // footer for NSX-1 |
ytsuboi | 1:ffd1fb78a02f | 53 | evy1.putc(0xF7); // footer of MIDI sys-ex |
ytsuboi | 0:bc5433b55c5c | 54 | } |
ytsuboi | 0:bc5433b55c5c | 55 | |
ytsuboi | 0:bc5433b55c5c | 56 | |
ytsuboi | 0:bc5433b55c5c | 57 | int main() { |
ytsuboi | 0:bc5433b55c5c | 58 | int key = 0x3c; //C |
ytsuboi | 0:bc5433b55c5c | 59 | |
ytsuboi | 0:bc5433b55c5c | 60 | evy1.baud(31250); // MIDI speed |
ytsuboi | 0:bc5433b55c5c | 61 | wait(5); // waiting for eVY1 module boot up |
ytsuboi | 0:bc5433b55c5c | 62 | |
ytsuboi | 0:bc5433b55c5c | 63 | //send lylics |
ytsuboi | 0:bc5433b55c5c | 64 | int lylic_len = sizeof(lylics) / sizeof(lylics[0]); |
ytsuboi | 1:ffd1fb78a02f | 65 | lylic_send(lylic_len); // sending lylics first |
ytsuboi | 0:bc5433b55c5c | 66 | |
ytsuboi | 0:bc5433b55c5c | 67 | int mml_len = sizeof(mml) / sizeof(mml[0]); |
naohiro2g | 2:a629af871f93 | 68 | |
naohiro2g | 2:a629af871f93 | 69 | |
naohiro2g | 2:a629af871f93 | 70 | while (1) { |
ytsuboi | 0:bc5433b55c5c | 71 | for(int i = 0;i< mml_len ;i++){ |
ytsuboi | 0:bc5433b55c5c | 72 | char c = mml[i]; |
ytsuboi | 0:bc5433b55c5c | 73 | if(c >= 'a' && c <='z') c-= 0x20; |
ytsuboi | 0:bc5433b55c5c | 74 | if((c>='A' && c<='Z')||c=='<'||c=='>'){ |
ytsuboi | 0:bc5433b55c5c | 75 | //key send |
ytsuboi | 0:bc5433b55c5c | 76 | if(i!=0){ |
naohiro2g | 2:a629af871f93 | 77 | Short_Message(0x90,key,0x7f); |
ytsuboi | 0:bc5433b55c5c | 78 | wait(0.5); |
ytsuboi | 0:bc5433b55c5c | 79 | } |
ytsuboi | 0:bc5433b55c5c | 80 | key= 0x3c; |
ytsuboi | 0:bc5433b55c5c | 81 | |
ytsuboi | 0:bc5433b55c5c | 82 | switch(c) { |
ytsuboi | 0:bc5433b55c5c | 83 | case 'C': break; |
ytsuboi | 0:bc5433b55c5c | 84 | case 'D': key+=2; break; |
ytsuboi | 0:bc5433b55c5c | 85 | case 'E': key+=4; break; |
ytsuboi | 0:bc5433b55c5c | 86 | case 'F': key+=5; break; |
ytsuboi | 0:bc5433b55c5c | 87 | case 'G': key+=7; break; |
ytsuboi | 0:bc5433b55c5c | 88 | case 'A': key+=9; break; |
ytsuboi | 0:bc5433b55c5c | 89 | case 'B': key+=11; break; |
ytsuboi | 0:bc5433b55c5c | 90 | default: break; |
ytsuboi | 0:bc5433b55c5c | 91 | } |
ytsuboi | 0:bc5433b55c5c | 92 | } |
ytsuboi | 0:bc5433b55c5c | 93 | } |
ytsuboi | 1:ffd1fb78a02f | 94 | Short_Message(0x90,key,0x7f); // note on message. 0x90=1ch, 0x7f=Velocity |
naohiro2g | 2:a629af871f93 | 95 | wait(1); |
naohiro2g | 2:a629af871f93 | 96 | } |
naohiro2g | 2:a629af871f93 | 97 | |
ytsuboi | 0:bc5433b55c5c | 98 | } |