test code to let sing eVocaloid eVY1 shield

Dependencies:   mbed

Committer:
ytsuboi
Date:
Wed Oct 30 08:38:33 2013 +0000
Revision:
0:bc5433b55c5c
Child:
1:ffd1fb78a02f
first commit

Who changed what in which revision?

UserRevisionLine numberNew 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 0:bc5433b55c5c 4
ytsuboi 0:bc5433b55c5c 5 // DO NOT EDIT!!
ytsuboi 0:bc5433b55c5c 6 const char* phoneticSymbols[] = {
ytsuboi 0:bc5433b55c5c 7 "a", "i", "M", "e", "o", // あいうえお0-4
ytsuboi 0:bc5433b55c5c 8 "k a", "k' i", "k M", "k e", "k o", // かきくけこ5-9
ytsuboi 0:bc5433b55c5c 9 "s a", "S i", "s M", "s e", "s o", // さしすえそ10-14
ytsuboi 0:bc5433b55c5c 10 "t a", "tS i", "ts M", "t e", "t o", // たちつてと15-19
ytsuboi 0:bc5433b55c5c 11 "n a", "J i", "n M", "n e", "n o", //なにぬねの20-24
ytsuboi 0:bc5433b55c5c 12 "h a", "C i", "p\\ M", "h e", "h o", // はひふへほ25-29
ytsuboi 0:bc5433b55c5c 13 "m a", "m' i", "m M", "m e", "m o", // まみむめも30-34
ytsuboi 0:bc5433b55c5c 14 "j a","i", "j M","e","j o",//やいゆえよ35-39
ytsuboi 0:bc5433b55c5c 15 "4 a", "4' i", "4 M", "4 e", "4 o", // らりるれろ40-44
ytsuboi 0:bc5433b55c5c 16 "w a","w o","N\\","","",// わをん 45-49
ytsuboi 0:bc5433b55c5c 17 "g a", "g' i", "g M", "g e", "g o",//がぎぐげご 50-54
ytsuboi 0:bc5433b55c5c 18 "dz a", "dZ i", "dz M", "dz e", "dz o",//ざじずぜぞ55-59
ytsuboi 0:bc5433b55c5c 19 "d a", "dZ i", "dz M", "d e", "d o",//だじづでど60-64
ytsuboi 0:bc5433b55c5c 20 "b a", "b' i", "b M", "b e", "b o",//ばびぶべぼ 65-69
ytsuboi 0:bc5433b55c5c 21 "p a", "p' i", "p M", "p e", "p o"//ぱぴぷぺぽ70-74
ytsuboi 0:bc5433b55c5c 22 };
ytsuboi 0:bc5433b55c5c 23
ytsuboi 0:bc5433b55c5c 24 //lylics
ytsuboi 0:bc5433b55c5c 25 //かえるのうたがきこえてくるよ
ytsuboi 0:bc5433b55c5c 26 int lylics[]={5,3,42,24,2,15,50,6,9,3,18,7,42,39};
ytsuboi 0:bc5433b55c5c 27 char mml[] ="CDEFEDC EFGAGFE";
ytsuboi 0:bc5433b55c5c 28
ytsuboi 0:bc5433b55c5c 29 void Short_Message(int cmd, int d1, int d2) {
ytsuboi 0:bc5433b55c5c 30 evy1.putc(cmd);
ytsuboi 0:bc5433b55c5c 31 evy1.putc(d1);
ytsuboi 0:bc5433b55c5c 32 evy1.putc(d2);
ytsuboi 0:bc5433b55c5c 33 }
ytsuboi 0:bc5433b55c5c 34
ytsuboi 0:bc5433b55c5c 35 // send lylics
ytsuboi 0:bc5433b55c5c 36 void lylic_send(int num){
ytsuboi 0:bc5433b55c5c 37 //hedaer
ytsuboi 0:bc5433b55c5c 38 evy1.putc(0xF0);
ytsuboi 0:bc5433b55c5c 39 evy1.putc(0x43);
ytsuboi 0:bc5433b55c5c 40 evy1.putc(0x79);
ytsuboi 0:bc5433b55c5c 41 evy1.putc(0x09);
ytsuboi 0:bc5433b55c5c 42 evy1.putc(0x00);
ytsuboi 0:bc5433b55c5c 43 evy1.putc(0x50);
ytsuboi 0:bc5433b55c5c 44 evy1.putc(0x10);
ytsuboi 0:bc5433b55c5c 45
ytsuboi 0:bc5433b55c5c 46 for(int i=0;i<num;i++){
ytsuboi 0:bc5433b55c5c 47 if(i != 0) evy1.putc(0x2c);
ytsuboi 0:bc5433b55c5c 48 evy1.printf(phoneticSymbols[lylics[i]]);
ytsuboi 0:bc5433b55c5c 49 }
ytsuboi 0:bc5433b55c5c 50 //footer
ytsuboi 0:bc5433b55c5c 51 evy1.putc(0x00);
ytsuboi 0:bc5433b55c5c 52 evy1.putc(0xF7);
ytsuboi 0:bc5433b55c5c 53 }
ytsuboi 0:bc5433b55c5c 54
ytsuboi 0:bc5433b55c5c 55
ytsuboi 0:bc5433b55c5c 56 int main() {
ytsuboi 0:bc5433b55c5c 57 int key = 0x3c; //C
ytsuboi 0:bc5433b55c5c 58 // float wait =0.5;
ytsuboi 0:bc5433b55c5c 59 // int oct = 0;
ytsuboi 0:bc5433b55c5c 60
ytsuboi 0:bc5433b55c5c 61 evy1.baud(31250); // MIDI speed
ytsuboi 0:bc5433b55c5c 62 wait(5); // waiting for eVY1 module boot up
ytsuboi 0:bc5433b55c5c 63
ytsuboi 0:bc5433b55c5c 64 //send lylics
ytsuboi 0:bc5433b55c5c 65 int lylic_len = sizeof(lylics) / sizeof(lylics[0]);
ytsuboi 0:bc5433b55c5c 66 lylic_send(lylic_len);
ytsuboi 0:bc5433b55c5c 67
ytsuboi 0:bc5433b55c5c 68 int mml_len = sizeof(mml) / sizeof(mml[0]);
ytsuboi 0:bc5433b55c5c 69 for(int i = 0;i< mml_len ;i++){
ytsuboi 0:bc5433b55c5c 70 char c = mml[i];
ytsuboi 0:bc5433b55c5c 71 if(c >= 'a' && c <='z') c-= 0x20;
ytsuboi 0:bc5433b55c5c 72 if((c>='A' && c<='Z')||c=='<'||c=='>'){
ytsuboi 0:bc5433b55c5c 73 //key send
ytsuboi 0:bc5433b55c5c 74 if(i!=0){
ytsuboi 0:bc5433b55c5c 75 Short_Message(0x90,key,0x7f);
ytsuboi 0:bc5433b55c5c 76 wait(0.5);
ytsuboi 0:bc5433b55c5c 77 }
ytsuboi 0:bc5433b55c5c 78 key= 0x3c;
ytsuboi 0:bc5433b55c5c 79
ytsuboi 0:bc5433b55c5c 80 switch(c) {
ytsuboi 0:bc5433b55c5c 81 case 'C': break;
ytsuboi 0:bc5433b55c5c 82 case 'D': key+=2; break;
ytsuboi 0:bc5433b55c5c 83 case 'E': key+=4; break;
ytsuboi 0:bc5433b55c5c 84 case 'F': key+=5; break;
ytsuboi 0:bc5433b55c5c 85 case 'G': key+=7; break;
ytsuboi 0:bc5433b55c5c 86 case 'A': key+=9; break;
ytsuboi 0:bc5433b55c5c 87 case 'B': key+=11; break;
ytsuboi 0:bc5433b55c5c 88 default: break;
ytsuboi 0:bc5433b55c5c 89 }
ytsuboi 0:bc5433b55c5c 90 }
ytsuboi 0:bc5433b55c5c 91 }
ytsuboi 0:bc5433b55c5c 92 Short_Message(0x90,key,0x7f);
ytsuboi 0:bc5433b55c5c 93 wait(0.5);
ytsuboi 0:bc5433b55c5c 94 }