c언어 - 음계의 주파수를 화면에 출력
c언어 - 음계의 주파수를 화면에 출력
<소스파일>
#include <stdio.h>
#include <math.h>
void print_frequency(int octave);
int main(void)
{
char *scale[]={"도","도#","레","레#","미","파","파#","솔","솔#","라","라#","시","도"};
int i,octave,count=0;
printf("음계와 주파수\n\n음계\t ");
for(i=0;i<13;i++)
printf("%-5s",scale[i]);
printf("\n");
for(i=0;i<=75;i++)
printf("-");
printf("\n");
for(octave=1;octave<7;octave++)
print_frequency(octave);
return 0;
}
void print_frequency(int octave)
{
double do_scale=32.7032;
double ratio=pow(2.,1/12.), temp;
int i;
temp=do_scale*pow(2.,octave-1);
printf("%d옥타브 : ",octave);
for(i=0;i<13;i++)
{
printf("%5ld",(unsigned long)(temp+0.5));
temp*=ratio;
}
printf("\n");
}
<실행화면>
중학교 때 트롬본을 하면서 음악에 사실 관심이 많아요 (클래식 음악) 이번 프로그램을 공부하면서 옥타프의 주파수를 공부하게되는 점이 왠지 신선하게 다가왔습니다. 실제 제가 트롬본을 할때 제 트롬본의 음역대가 궁금해서 여러가지 실험해봤던것들이 생각나더라구요
사실 음악과 주파수가 그렇게 많이 관계가 있는것인지는 잘모르겠지만 컴퓨터 상에선 엄청나게 관계가 많아 이렇게 한번 구현해봤습니다.
'IT > c / c++' 카테고리의 다른 글
c언어 - 영문 소문자의 자판을 연습하는 프로그램 (1) | 2014.08.12 |
---|---|
[c언어] 각도를 0도에서 90도까지 10도씩 증가하여 삼각함수의 결과를 출력 (0) | 2014.08.04 |
c언어 - 10진수를 8진수로 변환하는 프로그램 (2) | 2014.08.04 |
C언어 기초 문법에 대해 알고 들어가자 (0) | 2014.08.03 |
[C++] 면적이 100보다 큰 원 구하기 (0) | 2014.08.01 |