2016-11-29 2 views
1
import processing.serial.*; // add the serial library 
Serial myPort;  // the serial port to monitor 
PFont f; 
PrintWriter output; 
int pianoBColor = 0; 
int numKeys = 6; 
int sizeW = 900; 
int sizeH = 830; 
int pianoBackgroundW = sizeW*8/9; 
int pianoBackgroundH = sizeH/3; 
int blackSpace = 30; 
int Empty1; 
int Empty2; 
int whitePressed=20; 
int blackPressed = 255; 
int whiteUnpressed = 255; 
int blackUnpressed = 0; 
int divider = 2; 
int roundness = 10; 
int pianoSpacingH =(sizeH - pianoBackgroundH) ; 
int pianoSpacingW = (sizeW-pianoBackgroundW)/2; 
int pianoKeyH = pianoBackgroundH - divider*2 ; 
int pianoKeyW = (780/numKeys) - divider*8; 
int num; 

void setup() 
{ 
    size(900, 830); // set the window size, will need to hardcode for Processing 3 compatibility 
    background(0, 255, 250); 
    println(Serial.list()); // list all available serial ports 
    // myPort = new Serial(this, Serial.list()[0], 115200); // define input port 
    // myPort.clear(); 
    f = createFont("Arial", 50, true); 
    RecorderDrawer(); 
    PianoDrawer(); 


} 

void draw() 
{ 
delay(1000); 
PianoPress(1, 255,200); 
println("fr"); 
delay(1000); 
PianoPress(1,0,255); 

} 

void PianoPress(int num, int blackKeysColor, int whiteKeysColor) 
{ 
    // 1, 8 black key covers the right hand 
    // 7, 12 black key covers the left hand 
    // 2,4,6,9,11 black keys 
    // 3,5,10 white keys covered by both sides 
    switch(num) 
    { 
    case 1: 
    fill (whiteKeysColor); 
    println("front"); 
    rect(pianoSpacingW +divider/2, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    println("debug"); 
    fill (blackKeysColor); 
    println("back"); 
    rect(pianoSpacingW +divider/2+divider+pianoKeyW*2/3-2, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    println("debug"); 
    break; 

    case 2: 
    fill (blackKeysColor); 
    println("case2"); 
    rect(pianoSpacingW +divider/2+divider+pianoKeyW*2/3-2, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    delay(100); 
    break; 

    case 3: 
    fill (whiteKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    fill (blackKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*4/6, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    rect(pianoSpacingW +divider/2+divider+pianoKeyW*10/6, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

    case 4: 
    fill (blackKeysColor); 
    rect(pianoSpacingW +divider/2+divider+pianoKeyW*10/6, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

    case 5: 
    fill (whiteKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*2, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    fill (blackKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*16/6+4, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    rect(pianoSpacingW +divider/2+divider+pianoKeyW*10/6, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

    case 6: 
    fill (blackKeysColor); 
    println("case6"); 
    rect(pianoSpacingW +divider/2+pianoKeyW*16/6+4, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    delay(100); 
    break; 

    case 7: 
    fill (whiteKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*3, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    fill (blackKeysColor); 
    rect(pianoSpacingW+pianoKeyW*16/6+4, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

case 8: 
    fill (whiteKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*4, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    fill (blackKeysColor); 
    rect(pianoSpacingW+pianoKeyW*28/6+9, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

    case 9: 
    fill (blackKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*28/6+8, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

     case 10: 
    fill (whiteKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*5, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    fill (blackKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*28/6, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    rect(pianoSpacingW +divider/2+pianoKeyW*34/6+10, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

    case 11: 
    fill (blackKeysColor); 
    rect(pianoSpacingW +divider/2+pianoKeyW*34/6+10, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    break; 

    case 12: 
    fill (whiteKeysColor); 
    println("case12"); 
    rect(pianoSpacingW +divider/2+pianoKeyW*6, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    fill(blackKeysColor); 
    rect(pianoSpacingW+pianoKeyW*34/6+10, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    delay(100); 
    break; 
    } 
} 


// set up functions 
void PianoDrawer() 
{ 
    fill(pianoBColor); 
    rect(pianoSpacingW, pianoSpacingH, pianoBackgroundW, pianoBackgroundH, roundness); 
    WhiteKeyDrawer(); 
    BlackKeyDrawer(); 
} 

void WhiteKeyDrawer() 
{ 
    for (int i = 0; i <= numKeys; i = i+1) 
    { 
    fill (255); 
    rect(pianoSpacingW +divider/2+i*pianoKeyW, pianoSpacingH+divider, pianoKeyW, pianoKeyH, roundness) ; 
    } 
} 
void BlackKeyDrawer() 
{ 

    for (int i = 0; i <= numKeys; i = i+1) 
    { 
    if (i<=3) 
    { 
     Empty1 = i/3; 
    } else 
    { 
     Empty1 = (i-3)/3; 
    } 
    Empty2 = i/7; 
    println(Empty1, " ", Empty2); 
    if (Empty1 == 0 && Empty2 == 0) 
    { 
     fill (0); 
     rect(pianoSpacingW +divider/2+divider*i+pianoKeyW*2/3 + pianoKeyW*i, pianoSpacingH+divider, pianoKeyW/2, pianoKeyH/2, roundness) ; 
    } 
    } 
} 

void RecorderDrawer() 
{ 
    fill(255); 
    rect(pianoSpacingW-5, blackSpace-5, pianoBackgroundW+10, (sizeH-pianoBackgroundH)-100, roundness); 
    //stroke(255); 
    fill(60); 
    rect(pianoSpacingW, blackSpace, pianoKeyW*2/3, (sizeH-pianoBackgroundH)-blackSpace-80); 
    for (int i = 0; i <= numKeys-2; i = i+1) 
    { 
    rect(pianoSpacingW+pianoKeyW*2/3+pianoKeyW*i/2, blackSpace, pianoKeyW/2, (sizeH-pianoBackgroundH)-blackSpace-80); 
    } 
    rect(pianoSpacingW+pianoKeyW*19/6, blackSpace, pianoKeyW*5/6, (sizeH-pianoBackgroundH)-blackSpace-80); 
    rect(pianoSpacingW+pianoKeyW*4, blackSpace, pianoKeyW*5/6, (sizeH-pianoBackgroundH)-blackSpace-80); 

    for (int i = 0; i <= numKeys-4; i = i+1) 
    { 
    rect(pianoSpacingW+pianoKeyW*29/6-10 +pianoKeyW*i/2, blackSpace, pianoKeyW/2, (sizeH-pianoBackgroundH)-blackSpace-80); 
    } 
    rect(pianoSpacingW+pianoKeyW*25/4, blackSpace, pianoKeyW*3/4+2, (sizeH-pianoBackgroundH)-blackSpace-80);  
    fill(100, 20, 200); 
    textFont(f); 
    textAlign(CENTER); 
    text("ARDUINO PIANO PLAYER", sizeW/2, sizeH-pianoBackgroundH-20); 
} 

を処理していない、私はストロークと時間の長さを記録し、それを再生しますピアノの鍵盤を作成しようとしています。コードの残りの部分を調べる前にトラブルシューティングを行っていて、押されたキーの色の変更に問題があるようです。私はそれが機能を通過し、スイッチのケースに基づいて、キーの色を変更します。それはコードを通過するが、処理画面は色の変化を経ない。どうすれば修正できますか?スイッチが通過しますが、完全な操作がこんにちは

答えて

0

delay()機能をdraw()の中から呼び出すべきではありません。これにより、2秒ごとに1フレームしか取得できなくなります。これは間違いなくユーザーの入力を邪魔します。

代わりに、millis()またはframeCount変数を使用して時間ベースのアクションを実行してください。

関連する問題