강의자료 2
내용은 거의 흡사합니다.
스프레드시트 버전
https://docs.google.com/spreadsheet/ccc?key=0AtucKJx9fzfzdE53RjlyRC1zRXJwenliU2VWSm0zT2c&hl=en_US
프레젠테이션 버전
https://docs.google.com/present/edit?id=0AducKJx9fzfzZGd2ZDU0cmRfMmRmYmNubWdu&hl=en_US
내용은 거의 흡사합니다.
스프레드시트 버전
https://docs.google.com/spreadsheet/ccc?key=0AtucKJx9fzfzdE53RjlyRC1zRXJwenliU2VWSm0zT2c&hl=en_US
프레젠테이션 버전
https://docs.google.com/present/edit?id=0AducKJx9fzfzZGd2ZDU0cmRfMmRmYmNubWdu&hl=en_US
제목과 홍보 문구는 다 같이 고민해봅시다.
제가 그냥 초안 같이 커리큘럼을 썼는데요 다 같이 보시고 조언 부탁드립니다.
문구가 거칠고 횡설 수설하네요… 넣고 고치고 뺄 부분이 많은 듯…
밑은 위의 다운로드가 안될경우 보세요…
(더 보기 …)
시퀀서를 대충 만들어봤는데요…
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); }
teensy에서는 midi device로 잡혀도 시리얼모니터에 신호가 뜨네요…
오오 좋아용… 그런데 TimerOne-v2설치가 안돼네요..도큐멘트안에 libraries에넣어는뎅~~
석종님, 멋집니다~. 요거 만드신거 찬찬히 보고 있는데요, 위에 흰/파란 pot 두개 역할이 약간 헷갈려서요.
– 파란 pot+5번째 버튼이 눌린상태: 전체 속도 바꾸기
– 파란 pot+4개의 버튼이 눌린상태: 각각의 음정 바꾸기
– 흰 pot: 피치벤드 (필터 프리퀀시로 매핑)
맞나요?
네 정확하게 맞습니다… 파란pot는 analog6번핀이고 흰pot는 analgog7번핀이에요…(아두이노에서는 적절히 바꿔줘야함…)
버튼은 0~3핀은 각 스텝(4개)이고 4번핀(5번째 버튼)은 전체 속도 지정할 때이고요…
응답