c언어 예제

c언어/ 비프음을 이용하여 c언어로 간단한 피아노 만들기

그저그런 2023. 4. 18. 18:18
728x90
반응형

이번엔 비프음을 활용하여 c언어로 간단한 피아노를 만들어 보겠다.

 

아래 설명에는 c언어 입문자를 위해 정석은 아니지만 코드를 이해하고 사용함에 있어

지장이 없는 부분은 정석 외의 개념으로 설명하였으니 참고바람.

 

 

사용하는 헤더는 아래 3개다.

#include<stdio.h>//표준출력 헤더
#include<conio.h>// 입력헤더
#include<windows.h>//비프음 과 도스창 유지시 사용하는 함수 헤더

 

먼저 코드는 아래와 같다.

**아래에 tap공백이 적용되지 않았지만

case를 사용할땐 꼭 소속 프로그램문은 tap으로 한칸 밀어넣기 하여 작성하도록 한다.**

 

#include<stdio.h>
#include<conio.h>
#include<windows.h>

int main(void)
{
char input;

printf("비프음을 이용하여 피아노 만들기. 종료를 원하시면 알페벳x 후 엔터를 눌러주세요\n");
printf("q w e r t y u i = 도 레 미 파 솔 라 시 도 의 대응입니다.\n");


while(1)
{

input = _getch();
switch (input)
{

case 'q':
printf(" 도 ");
Beep(260,1000);
break;

case 'w':
printf(" 레 ");
Beep(290,1000);
break;

case 'e':
printf(" 미 ");
Beep(330,1000);
break;

case 'r':
printf(" 파 ");
Beep(340,1000);
break;

case 't':
printf(" 솔 ");
Beep(380,1000);
break;

case 'y':
printf(" 라 ");
Beep(430,1000);
break;

case 'u':
printf(" 시 ");
Beep(490,1000);
break;

case 'i':
printf(" 도 ");
Beep(510,1000);
break;

case 'x':
exit(0);


}

}

system("pause");


}

 

먼저 키보드의 문자를 입력받아야 하기에  input이라는 변수를 설정해주고,

끝이 정해저 있는 것이 아닌, 원하는 만큼 진행을 해야하기에 무한루프를 이용해 줘야 하는데

c언어에서는 무한루프를 이용할때 간단하게 while문에 0을 넣어줘서 이용하면 편하다.

이러면 조건이 존재하지 않기에 종료 명령이 떨어지기 전까진 무한 반복을 하게 된다.

 

이후  _getch();를 이용하여 입력값을 받는데 이건 키보드로 입력하는 값을 받아주는 것이다.

이후 case를 이용하여 입력받았을때 입력값에 대응하는 소리를 출력하도록 해준다.

 

기본 형태는 아래와 같다.

 

case 'q':
printf(" 도 ");
Beep(260,1000);

break;

 

위 코드는 q를 눌렀을때 '도' 라는 텍스트를 출력후 260의 진동수를 1초동안 출력하는 것이다.

Beep(진동수, 시간)의 형태로 사용하는데 시간은 1/1000 이니 참고하여 사용하면 되겠다.

또한 위에 break문을 continue문으로 사용해도 용납되는 상황도 있으니

상황에 따라서 사용하면 되겠다.

 

*여기서의 진동수는 실제 소리의 주파수가 아니다.*

 

필자가 사용한 음의 진동수는 아래와 같다.

 

진동수
260
290
330
340
380
430
490
510

 

이후에 system("pause") 를 이용해서 프로그램 실행 후 도스창이 종료되지 않고 화면을 유지하도록 해주면 완성이다.

 

이렇게 사용하면 종료할때 도스창을 종료시켜줘야하지만 불편하거나 간혹 컴퓨터 환경에 따라서 좋지 못하기에

코드 끝에 exit를 넣어줘서 반복종료 및 프로그램 종료를 해주는 코드를 추가하였다.

 

실행 화면은 아래와 같이 나온다.

 

도부터 도까지 입력 후 x를 눌러 종료한 화면

 

위 화면은 도레미파솔라시도 를 출력 후 x를 입력하여 프로그렘을 종료한 화면이다.

 

이번에는 c언어로 간단한 피아노를 만들어 보았다.

혹시 필요한 예제나 원하는 프로그램이 있다면,

댓글로 남기면 확인하고 다음에 참고하여 올리도록 하겠다.

 

728x90
반응형