[C#] 비프음

개발 노트/C#  2012.10.06 20:46



안녕하세요 개발자 명월입니다.

이번 포스팅에서는 C#으로 비프음을 내는 함수를 소개하도록 하겠습니다.

오늘 아침에 문득 음악을 듣다가 피아노 프로그램을 만들어 보면 어떨까하고 고민하다가 생각해보니 컴퓨터는 피아노 음을 가지고 있지 않고(다른 피아노 프로그램은 아마 피아노 음을 녹음하여 넣어 만든음) 비프음만을 가지고 있다는 걸 알았습니다.

 

그래서 비프음이라도 내는 함수를 소개 할까합니다.

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Runtime.InteropServices;
  5 using System.Threading;
  6 using System.IO;
  7
  8 namespace Test20121006
  9 {
10     class Program
11     {
12         [DllImport("KERNEL32.DLL")]
13         public extern static void Beep(int freq, int dur);
14
15         // 도 = 256Hz
16         // 레 = 도 * 9/8 = 288Hz
17         // 미 = 레 * 10/9 = 320Hz
18         // 파 = 미 * 16/15 = 341.3Hz
19         // 솔 = 파 * 9/8 = 384Hz
20         // 라 = 솔 * 10/9 = 426.6Hz
21         // 시 = 라 * 9/8 = 480Hz
22         // 도 = 시 * 16/15 = 512Hz (= 처음 도의 2배)
23         // 2배 = 높은음, 1/2배 = 낮은음
24
25         static void Main(string[] args)
26         {
27             new Program();
28         }
29         public Program() {
30             String data = "솔솔라라솔솔미솔솔미미레솔솔라라솔솔미솔미레미도";
31             for (int i = 0; i < data.Length; i++) {
32                 tone(data[i].ToString());
33             }
34         }
35         public void tone(String data) {
36             int hrz = 0;
37             switch (data) {
38                 case "도": hrz = 256; break;
39                 case "레": hrz = 288; break;
40                 case "미": hrz = 320; break;
41                 case "파": hrz = 341; break;
42                 case "솔": hrz = 384; break;
43                 case "라": hrz = 426; break;
44                 case "시": hrz = 480; break;
45             }
46             Beep(hrz,500);
47         }
48     }
49 }
50

 

 

 

참고소스 : Test20121006.zip

 

'개발 노트 > C#' 카테고리의 다른 글

[C#] 웹서버 개발하기  (0) 2012.10.15
[C#] Dokan 소스 (Ndrive) - 1  (9) 2012.10.11
[C#] 퍼즐 게임 - 3  (0) 2012.10.10
[C#] 스니퍼  (2) 2012.10.09
[C#] 비프음  (0) 2012.10.06
[C#] 퍼즐게임 - 2  (0) 2012.10.05
[C#] 서비스 프로그램  (0) 2012.10.05
[C#] 퍼즐게임 - 1  (0) 2012.10.04
[C#] GDI 좌표계  (0) 2012.10.01

댓글 0개가 달렸습니다.
댓글쓰기