Updates from 10월, 2011 댓글 스레드 토글 전환 | 키보드 단축키

  • joynimm October 5, 2011 7:49 pm 퍼머링크 | 응답  

    강의자료 3 

    https://docs.google.com/spreadsheet/ccc?key=0AtucKJx9fzfzdGU1ZTEzMmY3cVExOGxyZzBseTh4UkE&hl=en_US

     
    • jimmii 10월 10, 2011 10:20 오후 퍼머링크 | 응답

      Midi OX 사용법을 모르겠어요~ 설치는 했는데 사용법이 도통 검색해도 안나오구.. 그래서 예제 중 usbMIDI구문 테스팅이 안되어요~~어떻게하는것일까욤?

    • jimmii 10월 11, 2011 1:35 오후 퍼머링크 | 응답

      아, 처음에 주신 물체주머니(!!!) 안에 포텐시오미터랑.. 버튼도 있고.. 또하나 길다랗게 생겨서 볼륨이나 수치같은거 쭉 밀어올려서 변화시키는 그걸 뭐라고 하죠? 그것도 사용해서 테스트 해보고 싶은데 다리가 여러개라 어떻게 사용하는지 잘 모르겠더라구요 ^^ 이름도 몰라서 검색도 애매하구

      • joynimm 10월 11, 2011 7:02 오후 퍼머링크 | 응답

        물체주머니… ㅋㅋ
        진미님은 예습도 잘하시니 좋습니다.

        슬라이드 가변저항을 말씀하시는 것 같은데요. 뒷면에 숫자가 있을 거에요… 2번을 신호선 1번/3번을 전원에 연결하시면 될 것같아요. 혹시 모르니 5v 연결전에 330옴 저항 하나 다시고 실험해보시기를… 지금.. 똑같은 부품이 저에겐 없어서… 확신하지는 않지만..

        바로 브레드보드에는 못 꼽을 것 같아요. 와이어를 잘 꼬아서 연결시키거나 납땜하시거나…
        수요일 확실히 알려드릴께요.

    • jimmii 10월 11, 2011 8:41 오후 퍼머링크 | 응답

      ㅋㅋㅋ 지미에요 신승현양입니당 ^^

      • joynimm 10월 11, 2011 11:37 오후 퍼머링크 | 응답

        아 죄송… 신승현님!… 성은 알았는데 잠시 착각을… -..-;

  • mortp October 5, 2011 7:17 pm 퍼머링크 | 응답  

    프로세싱 예제를 실행하기 위해서 필요한 두 가지는 1… 

    프로세싱 예제를 실행하기 위해서 필요한 두 가지는,

    1. 프로세싱을 설치한다.
    http://processing.org/download/

    2. 프로세싱에서 미디신호를 주고받기 위한 라이브러리인 promidi를 설치한다.
    http://creativecomputing.cc/p5libs/promidi/
    에서 다운받은 폴더를 자신의 컴퓨터, processing -> libraries 폴더에 넣는다.

    잘 안되시면 바로 손들어주세요!

     
  • mortp October 5, 2011 7:11 pm 퍼머링크 | 응답  

    프로세싱 예제입니다:) 

    
    import promidi.*;
    import ddf.minim.*;
    
    Minim minim;
    AudioInput in;
    
    MidiIO midiIO;
    
    int drawtype = 2; //choose 1 ~ 4. default = 4;
    
    float angle;
    float cx, cy, cr;
    
    int[] notes = new int[4];
    int[] vels = new int[4];
    boolean[] onoff = new boolean[4];
    float[] timerOn = new float[4];
    float[] interval = new float[4];
    float[] sr = new float[4];
    float[] velo = new float[4];
    color[] col = new color[4];
    int[] ap = new int[4];
    float tradAvg;
    
    void setup()
    {
      size(800, 800);
      background(0);
      smooth();
      angle = 0;
      cx = width/2;
      cy = height/2;
      cr = 600;
      
      for(int i = 0; i < 4; i++)
      {
        ap[i] = 20;
      }
      
      col[0] = color(30, 48, 113);
      col[1] = color(20, 80, 30);
      col[2] = color(10, 30, 13);
      col[3] = color(30, 10, 10);  
      
      midiIO = MidiIO.getInstance(this);
      midiIO.printDevices();
      midiIO.openInput(2, 0); //input device, channel. set input device idx first.
      midiIO.openInput(2, 1);
      midiIO.openInput(2, 2);
      midiIO.openInput(2, 3);
      
      minim = new Minim(this);
      minim.debugOn();
      
      // get a line in from Minim, default bit depth is 16
      in = minim.getLineIn(Minim.STEREO, 512);
      tradAvg = 0;
      
    }
    
    void draw()
    {
      background(255);
      stroke(0);
      round(angle+=1);
      
      
        fill(255, 200);
        ellipse(cx, cy, cr, cr);
    
    
      for(int i = 0; i < 4; i++)
      {
        float[] tvel = new float[4];
        tvel[i] = map(notes[i], 0, 127, 0, 4.0);
    
        float[] trad = new float[4];
        trad[i] = map(vels[i], 0, 127, 10, cr/3);
        
        float[] intv = new float[4];
        intv[i] = (4000 - interval[i])/2000;
        
    
        tradAvg+=trad[i];
        fill(col[i], ap[i]);
        ccc(cx, cy, cr/2 - trad[i]/2, trad[i], tvel[i]);
      }
      
        tradAvg = tradAvg/4.0;
      
        stroke(0);
        for(int i = 0; i < in.bufferSize() - 1; i++)
      {
        switch(drawtype){
          
        case 1:
        line((width/2) + cos(radians(i)) * (cr/2), height/8 + sin(radians(in.left.get(i)*200)) * (cr/2), width/2 + cos(radians(i+1)) * (cr/2), height/8 * 7 + sin(radians(in.left.get(i+1)*200)) * (cr/2));
        break;
        
        case 2:
        line((width/2) + cos(radians(i)) * (cr/2), height/2 + sin(radians(i)) * (cr/2), width/2 + cos(radians(i+1)) * (cr/2), height/2 + sin(radians(in.left.get(i+1)*200)) * (cr/2));
        break;
        
        case 3:
        line((width/2) + cos(radians(i)) * (cr/2), height/2 + sin(radians(i)) + (in.left.get(i)*300) , width/2 + cos(radians(i+1)) * (cr/2), height/2 + sin(radians((i+1))) * (cr/2) + (in.left.get(i+1)*300));    
        break;
        
        default:
        line((width/2) + cos(radians(i)) * (cr/2), height/2 + sin(radians((i))) * (cr/2) + (in.left.get(i)*200) , width/2 + cos(radians(i+1)) * (cr/2), height/2 + sin(radians((i+1))) * (cr/2) + (in.left.get(i+1)*2000));
        break;
        
        }
      }
    
      
    }
    
    
    void ccc(float xoffset, float yoffset, float rad, float sr, float vel)
    {
      float[] tarr;
      tarr = new float[2];
        tarr[0] = round1(xoffset + sin(radians((angle*vel)%360)) * rad);
        tarr[1] = round1(yoffset + cos(radians((angle*vel)%360)) * rad);
        
      noStroke();
        ellipseh(tarr[0], tarr[1], sr, 5);
      
    }
    
    
    float round1(float in)
    {
      return round(in * pow(10, 1)) / pow(10, 1);
    }
    
    
    void ellipseh(float px, float py, float rad, int layer)
    {
      float tx, ty, tr;
      for(int i = 0; i < layer; i++)
      {
        tx = random(1.0);
        ty = random(1.0);
        tr = random(rad/10);
        
        ellipse(px + tx, py + ty, rad + tr, rad + tr);
      }
    }
    
    void stop()
    {
      // always close Minim audio classes when you are done with them
      in.close();
      minim.stop();
      
      super.stop();
    }
    
    
    
    void noteOn(Note note, int device, int channel){
    int vel = note.getVelocity();
    int pit = note.getPitch();
    
    notes[channel] = pit;
    vels[channel] = vel;
    
      if(onoff[channel] == false)
      {
        timerOn[channel] = millis();
        onoff[channel] = true;
      }
    }
    
    void noteOff(Note note, int device, int channel){
      int pit = note.getPitch();
    
      onoff[channel] = false;
      vels[channel] = 0;  
      interval[channel] = millis() - timerOn[channel]; 
    }
    
    
     
c
새 글 작성
j
다음 글/다음 댓글
k
이전 글/이전 댓글
r
응답
e
편집
o
댓글 표시/숨기기
t
상위로 가기
l
로그인하기
h
도움말 표시/숨기기
shift + esc
취소