2011-09-26 8 views
1

작은 합성기 응용 프로그램을 프로그래밍하고 있는데 막대의 길이를 따라 클릭하여 음표를 입력합니다. 자, 음계는 대수적입니다. 그리고 제 질문은, 마우스의 위치를 ​​관련 음조로 어떻게 바꾸는 지입니다. 지금은 비율을 계산합니다. 그것은 작동합니다, 일종의,하지만 밀접하게 포장 된 다양한 낮은 노트, 그리고 먼 끝에 나는 여러 옥타브로 번역 단지 몇 픽셀로 소요됩니다. 기본적으로 바의 중심 (1/2)을 클릭하면 주파수가 두 배가되고 1/4은 주파수에서 또 다른 두 배가됩니다. 등 ... 나는 바보가되고있어!대수 눈금

답변

4

음표의 주파수는 대수적입니다. 주파수는 한 옥타브 높을 때 두 배가되고, 한 옥타브 낮게 갈 때 두 배가됩니다. A 표준은 정확히 440Hz입니다.

따라서 위치를 주파수로 변환하는 법이 필요합니다. f * 2.0^(x/w)와 같은 것. 여기서 w는 옥타브의 너비이고, f는 축척 계수이고 ^는 거듭 제곱 연산자입니다.

+0

또한, 일반적으로 사용되는 많은 다른 튜닝이 있습니다. 피아노의 경우 스트레치 튜닝 (http://en.wikipedia.org/wiki/Stretched_tuning)을 참조하십시오. 또한보십시오 : http://en.wikipedia.org/wiki/Piano_tuning#Temperament_and_beating – Brad

+0

당신은 구현에 정교하게 신경 쓰시겠습니까. 나는 C#에서 프로그래밍 중이지만 일반적인 의사 구문은 괜찮습니다 ... :) 응답 해 주셔서 감사합니다! – mickey

+0

옥타브의 너비가 항상 2의 요소가 아닌가요? 위의 x는 무엇입니까? – mickey