Attiny85로 오디오 피치 쉬프터 만들기
하고 싶은 일
마이크로 녹음한 소리에 연동하여 우퍼를 움직이고 싶다.
중음역의 소리에서도, 우퍼를 진동시키기 위해서, 1옥타브 내린다.
우퍼에 입력되는 중고음역과 노이즈를 제거하기 위해 LPF를 통과시킨다.
필요한 것
Digispark Attiny85 개발 보드
이것을 참고로 :
htps : // bg. 아다 f 루이 t. 이 m / 2017/03/15 / 저쪽 ny85 - 라 l - 치메 - 아우 오피 tch - f r /
설정
http://digistump.com/package_digistump_index.json
Tools에서 다음과 같이 설정.
코드
참조 코드 빌드
1옥타브 내린다
위의 코드와 달리 이번에 만들고 싶은 것은 1 옥타브 낮추는 것을 만들고 싶다.
로 OCR0A를 변경하고 결정을 치고.
// OCR0A = 55; // 17.9kHz interrupt
OCR0A = 28; // 約1オクターブ下げる
또한 버튼 인터럽트를 주석 처리
//// Pin change interrupt adjusts shift
//ISR (PCINT0_vect) {
// int Buttons = PINB;
// if ((Buttons & 0x01) == 0) OCR0A++;
// else if ((Buttons & 0x04) == 0) OCR0A--;
//}
//////////// 中略 //////
// Set up buttons on PB0 and PB2
// pinMode(0, INPUT_PULLUP);
// pinMode(2, INPUT_PULLUP);
// PCMSK = 1<<PINB0 | 1<<PINB2; // Pin change interrupts on PB0 and PB2
// GIMSK = GIMSK | 1<<PCIE; // Enable pin change interrupt
저역 통과 필터 만들기
간단한 1차 LPF를 만들어 불필요한 소리 제외
volatile uint16_t alpha = 10;
volatile uint16_t alpha_max = 255;
volatile uint8_t previous_output = 0;
uint8_t lpf (uint8_t input){
uint8_t output = alpha * input / alpha_max + (alpha_max - alpha) * previous_output / alpha_max;
previous_output = output;
return output;
}
그리고 DAC에 걸친 값을 LPF 통과 후의 값으로 한다.
OCR1A = lpf(Buffer[ReadPtr]);
참고
Reference
이 문제에 관하여(Attiny85로 오디오 피치 쉬프터 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tatsuhiroiida/items/e692e903a27065708174
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Attiny85로 오디오 피치 쉬프터 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tatsuhiroiida/items/e692e903a27065708174텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)