태그: diy midi 댓글 스레드 토글 전환 | 키보드 단축키

  • joynimm September 28, 2011 4:02 pm 퍼머링크 | 응답
    태그: diy midi, ,   

    강의자료 2 

    내용은 거의 흡사합니다.

    스프레드시트 버전
    https://docs.google.com/spreadsheet/ccc?key=0AtucKJx9fzfzdE53RjlyRC1zRXJwenliU2VWSm0zT2c&hl=en_US

    프레젠테이션 버전
    https://docs.google.com/present/edit?id=0AducKJx9fzfzZGd2ZDU0cmRfMmRmYmNubWdu&hl=en_US

    Advertisements
     
  • joynimm September 5, 2011 12:51 pm 퍼머링크 | 응답
    태그: diy midi, 악기,   

    자작 미디컨트롤러 워크숍 

    제목과 홍보 문구는 다 같이 고민해봅시다.

    제가 그냥 초안 같이 커리큘럼을 썼는데요 다 같이 보시고 조언 부탁드립니다.
    문구가 거칠고 횡설 수설하네요… 넣고 고치고 뺄 부분이 많은 듯…

    http://ge.tt/8dn5TR7?c

    밑은 위의 다운로드가 안될경우 보세요…
    (더 보기 …)

     
  • joynimm August 13, 2011 5:47 pm 퍼머링크 | 응답
    태그: diy midi, step sequencer,   

    4 step sequencer prototype 

    시퀀서를 대충 만들어봤는데요…

    timer interrupt 를 이용해서 속도를 조절하고요..

    라이브랑 붙여서 해봤음…

    볼륨한개는
    버튼 네개와 결합하여 각 단계별 음정. 별도 버튼 하나로 시퀀싱 속도를 관장하고

    또 다른 한개는 피치벤드인데… 라이브에서는 필터 프리퀀시로 매핑했어요..

    아래 코드는 틴지용이므로 usbMIDI 부분과 핀 부분은 수정하셔야합니다.

    #include "TimerOne.h"
    
    char button[5] = {0,1,2,3,4};
    char analogPin7 = A7;
    char analogPin6 = A6;
    long buttonFreq[5] ={0,0,0,0,0};
    long oldbuttonFreq[4]={0,0,0,0};
    byte ledpin = 6;//13 for uno/duemi...
    long freqVal;
    long tempo = 1000000;
    void setup()
    { // input button
     pinMode(button[0], INPUT);
     pinMode(button[1], INPUT);
     pinMode(button[2], INPUT);
     pinMode(button[3], INPUT); 
     pinMode(button[4], INPUT);
     pinMode(ledpin, OUTPUT);
     digitalWrite(button[0], HIGH);
     digitalWrite(button[1], HIGH);
     digitalWrite(button[2], HIGH);
     digitalWrite(button[3], HIGH); 
     digitalWrite(button[4], HIGH);
     Serial.begin(9600);
     Timer1.initialize();
     Timer1.attachInterrupt(run);
    }
    int num =0;
    void run()
    {
     digitalWrite(ledpin, digitalRead(ledpin) ^ 1);
     
       usbMIDI.sendNoteOff(oldbuttonFreq[num]/8, 0, 2);  
       if(num<3){ num++; } else {num=0;}
       usbMIDI.sendNoteOn(buttonFreq[num]/8, 120, 2);  
       oldbuttonFreq[num] = buttonFreq[num];
    }
    int pitchval=0, oldval=0, olderval=0;
    void loop()
    {
      freqVal = analogRead(analogPin7);
      for(char i = 0; i<5; i++)  
    { if (digitalRead(button[i])==0)
     {buttonFreq[i] = freqVal ;
     }
    }
        
      tempo = 50000+buttonFreq[4]*500;
      Timer1.setPeriod(tempo);
    pitchval = analogRead(analogPin6);
    if (pitchval!=oldval && pitchval != olderval)
     {usbMIDI.sendPitchBend( pitchval*16,2);
      olderval = oldval;
          oldval = pitchval;
        }
      //Serial.println(buttonFreq[4]);
    
      delay(10);
    }
    
     
    • joynimm 8월 13, 2011 6:40 오후 퍼머링크 | 응답

      teensy에서는 midi device로 잡혀도 시리얼모니터에 신호가 뜨네요…

    • hoonida 8월 13, 2011 10:55 오후 퍼머링크 | 응답

      오오 좋아용… 그런데 TimerOne-v2설치가 안돼네요..도큐멘트안에 libraries에넣어는뎅~~

    • teum11 8월 15, 2011 5:50 오후 퍼머링크 | 응답

      석종님, 멋집니다~. 요거 만드신거 찬찬히 보고 있는데요, 위에 흰/파란 pot 두개 역할이 약간 헷갈려서요.

      – 파란 pot+5번째 버튼이 눌린상태: 전체 속도 바꾸기
      – 파란 pot+4개의 버튼이 눌린상태: 각각의 음정 바꾸기
      – 흰 pot: 피치벤드 (필터 프리퀀시로 매핑)

      맞나요?

      • joynimm 8월 15, 2011 8:05 오후 퍼머링크 | 응답

        네 정확하게 맞습니다… 파란pot는 analog6번핀이고 흰pot는 analgog7번핀이에요…(아두이노에서는 적절히 바꿔줘야함…)
        버튼은 0~3핀은 각 스텝(4개)이고 4번핀(5번째 버튼)은 전체 속도 지정할 때이고요…

c
새 글 작성
j
다음 글/다음 댓글
k
이전 글/이전 댓글
r
응답
e
편집
o
댓글 표시/숨기기
t
상위로 가기
l
로그인하기
h
도움말 표시/숨기기
shift + esc
취소