[C#] 비프음


Development note/C#  2012. 10. 6. 20:46

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


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

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

 

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


using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;
using System.IO;
 
namespace Test20121006
{
  class Program
  {
    [DllImport("KERNEL32.DLL")]
    public extern static void Beep(int freq, int dur);
 
     // 도 = 256Hz
     // 레 = 도 * 9/8 = 288Hz
     // 미 = 레 * 10/9 = 320Hz
     // 파 = 미 * 16/15 = 341.3Hz
     // 솔 = 파 * 9/8 = 384Hz
     // 라 = 솔 * 10/9 = 426.6Hz
     // 시 = 라 * 9/8 = 480Hz
     // 도 = 시 * 16/15 = 512Hz (= 처음 도의 2배)
     // 2배 = 높은음, 1/2배 = 낮은음
 
    static void Main(string[] args)
    {
      new Program();
    }
    public Program()
    {
      String data = "솔솔라라솔솔미솔솔미미레솔솔라라솔솔미솔미레미도";
      for (int i = 0; i < data.Length; i++)
      {
        Tone(data[i].ToString());
      }
    }
    public void Tone(String data)
    {
      int hrz = 0;
      switch (data)
      {
        case "도": 
          hrz = 256; 
          break;
        case "레": 
          hrz = 288;
          break;
        case "미": 
          hrz = 320; 
          break;
        case "파":
          hrz = 341;
          break;
        case "솔": 
          hrz = 384; 
          break;
        case "라":
          hrz = 426;
          break;
        case "시":
          hrz = 480;
          break;
      }
      Beep(hrz,500);
    }
  }
}

첨부 소스 :Test20121006.zip