2014年12月22日 星期一

期末作品

音樂播放器


構思
1.讀取音樂

--------功能--------------
1.顯示音樂清單
2.顯示音樂時間
3.快轉/倒轉按鈕
4.暫停/開始按鈕
5.音量大/小按鈕
6.上一首/下一首按鈕




第一次 介面
第二次 介面
硬體:
實際畫面:
實際顯示畫面:
實際操作:




2013 互動blogger
http://2013interaction.blogspot.tw/search?updated-max=2014-01-12T20:52:00-08:00&max-results=7&start=7&by-date=false

互動程式應用與設計 Arduino結合processing設計成果

https://www.youtube.com/watch?v=VXYqlfT8Iu4

互動程式應用與設計 Arduino結合processing範例
http://coopermaa2nd.blogspot.tw/2011/03/processing-arduino.html

-------------Arduino---------------------------

void setup(){

Serial.begin(9600);

pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
}

void loop(){
int sensorplay = digitalRead(2);
int sensorvoiceup = digitalRead(3);
int sensorvoicedown = digitalRead(4);
int next = digitalRead(5);
int up = digitalRead(6);

if(sensorplay == LOW)
{//播放/暫停
digitalWrite(13,LOW);
Serial.write('A');
}
if(sensorvoiceup == LOW)
{//音量增加ccac
digitalWrite(13,LOW);
Serial.write('B');
}
if(sensorvoicedown == LOW)
{//音量減少
digitalWrite(13,LOW);
Serial.write('C');
}
if(next == LOW)
{// 下一首
digitalWrite(13,LOW);
Serial.write('D');
}
if(up == LOW)
{//  上一首
digitalWrite(13,LOW);
Serial.write('E');
}
delay(125);
}
-----------------Processing-----------------------
import ddf.minim.*;
PImage imgBG;
PImage img;
Minim minim;
AudioPlayer player[]=new AudioPlayer[9];
AudioSnippet soundNoise;
import processing.serial.*;
Serial myPort;
void setup(){
size(700,460);
img = loadImage("star.png");
imgBG=loadImage("index.png");
background(imgBG);
myPort=new Serial(this,"COM6",9600);
minim = new Minim(this);


player[0] = minim.loadFile("JJ2.mp3");
player[1] = minim.loadFile("JJ1.mp3");
player[2] = minim.loadFile("JJ3.mp3");
player[3] = minim.loadFile("JJ4.mp3");
player[4] = minim.loadFile("JJ5.mp3");
player[5] = minim.loadFile("JJ6.mp3");
player[6] = minim.loadFile("JJ7.mp3");
player[7] = minim.loadFile("JJ8.mp3");
player[8] = minim.loadFile("JJ9.mp3");

for(int i=0;i<9;i++)println(player[i].getControls());
}
int hear=0,voiceup=0,voicedown=0;
int v=0,i=0,next=0,up=0,y=120;
void draw()
{
background(imgBG);

if(myPort.available()>0)
{
int a=myPort.read();
if(a=='A') hear++;
if(a=='B') {voiceup=1; v+=1;}
if(a=='C') {voiceup=1; v-=1;}
if(a=='D') {next=1;if(i<8&&i>=0){i+=1;y+=38;}else i+=0;}
if(a=='E') {up=1;if(i<=8&&i>0){i-=1;y-=38;}else i+=0;}
}


//--------------wave---------------------
float x1, y1, x2, y2;
int w;
stroke(150,255,0);
  for (w = 0; w < player[i].bufferSize() - 1; w++) {
    x1 = w;
    y1 = 40 + player[i].left.get(w) * 50;
    x2 = w+1;
    y2 = 40 + player[i].left.get(w+1) * 50;
    line(x1, y1, x2, y2);
  }
//-----------------------------------------

if(hear%2==1)
{
player[i].play();image(img,185,y);
}
if(hear%2==0)
{
player[i].pause();
}

//---------voice-up---------------
if(voiceup==1 &&v>-10 &&v<10 )
{
println(v);
if(v<=10) player[i].setGain(v);
voiceup=0;
}
//----------NEXTmusic-------------
if(next==1 )
{
if(i>=0 &&i<9)player[i-1].pause();
println(i);image(img,185,y);
next=0;
}
//----------UPmusic-------------
if(up==1)
{

if(i>=0 &&i<9)player[i+1].pause();
println(i);image(img,185,y);
up=0;
}
}

void stop()
{
player[i].close();
minim.stop();
super.stop();
}



5 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
    回覆
    1. 滑鼠控制音量


      import ddf.minim.*;
      Minim minim;
      AudioPlayer player;

      void setup()
      {
      size(320, 240);
      minim = new Minim(this);
      player = minim.loadFile("Amazing Grace.mp3");
      player.loop();
      println(player.getControls());
      }

      void draw()
      {
      float v;
      v = log(mouseX+0.0001) * 2.37 / log(10);
      println(v);
      player.setGain(v);
      if (v < 0) { v = 0; }
      background((v - 3.0) / (6.0 - 3.0) * 255.0);
      }

      void stop()
      {
      player.close();
      minim.stop();
      super.stop();
      }

      刪除
  2. 開始暫停

    import ddf.minim.*;
    Minim minim;
    AudioPlayer player;

    void setup()
    {
    size(320, 240);
    minim = new Minim(this);
    player = minim.loadFile("Amazing Grace.mp3");
    player.play();
    }

    void draw()
    {

    background(255);

    if (keyPressed == true) {
    if (key == ' ') {
    if (player.isPlaying() == true) {
    player.pause();
    } else {
    player.play();
    }
    }
    }
    }

    void stop()
    {
    player.close();
    minim.stop();
    super.stop();
    }

    回覆刪除
  3. Arduino
    增加5,6兩個鍵
    --------------------------------------------
    void setup(){

    Serial.begin(9600);

    pinMode(2,INPUT_PULLUP);
    pinMode(3,INPUT_PULLUP);
    }

    void loop(){
    int sensorplay = digitalRead(2);
    int sensorvoiceup = digitalRead(3);
    int sensorvoicedown = digitalRead(4);
    int next = digitalRead(5);
    int up = digitalRead(6);

    if(sensorplay == LOW)
    {//播放/暫停
    digitalWrite(13,LOW);
    Serial.write('A');
    }
    if(sensorvoiceup == LOW)
    {//音量增加ccac
    digitalWrite(13,LOW);
    Serial.write('B');
    }
    if(sensorvoicedown == LOW)
    {//音量減少
    digitalWrite(13,LOW);
    Serial.write('C');
    }
    if(next == LOW)
    {// 下一首
    digitalWrite(13,LOW);
    Serial.write('D');
    }
    if(up == LOW)
    {//  上一首
    digitalWrite(13,LOW);
    Serial.write('E');
    }
    delay(125);
    }

    回覆刪除
  4. processing
    加了星星符號
    ----------------------------------------------

    import ddf.minim.*;
    PImage imgBG;
    PImage img;
    Minim minim;
    AudioPlayer player[]=new AudioPlayer[2];
    AudioSnippet soundNoise;
    import processing.serial.*;
    Serial myPort;
    void setup(){
    size(700,400);
    img = loadImage("star.png");
    imgBG=loadImage("index.png");
    background(imgBG);
    myPort=new Serial(this,"COM4",9600);
    minim = new Minim(this);
    player[0] = minim.loadFile("JJ1.mp3");//JJhear
    player[1] = minim.loadFile("JJ2.mp3");//JJpraticelove
    for(int i=0;i<2;i++)println(player[i].getControls());
    }
    int hear=0,voiceup=0,voicedown=0;
    int v=0,i=0,next=0,up=0,y=42;
    void draw()
    {
    background(imgBG);

    if(myPort.available()>0)
    {
    int a=myPort.read();
    if(a=='A') hear++;
    if(a=='B') {voiceup=1; v+=1;}
    if(a=='C') {voiceup=1; v-=1;}
    if(a=='D') {next=1;if(i<1&&i>=0)i+=1;else i+=0;}
    if(a=='E') {up=1;if(i<=1&&i>0)i-=1;else i+=0;}
    }

    if(hear%2==1)
    {
    player[i].play();image(img,180,y);
    }
    if(hear%2==0)
    {
    player[i].pause();
    }

    //---------voice-up---------------
    if(voiceup==1 &&v>-10 &&v<10 )
    {
    println(v);
    if(v<=10) player[i].setGain(v);
    voiceup=0;
    }
    //----------NEXTmusic-------------
    if(next==1 )
    {
    if(i>=0 &&i<=1)player[i-1].pause();
    println(i);image(img,180,y+=41);
    next=0;
    }
    //----------UPmusic-------------
    if(up==1)
    {

    if(i>=0 &&i<=1)player[i+1].pause();
    println(i);image(img,180,y-=41);
    up=0;
    }
    }

    void stop()
    {
    player[i].close();
    minim.stop();
    super.stop();
    }

    回覆刪除