2011-01-15 5 views
6

낮은 밀리 초 속도로 Console.Beep()을 사용하여 두 번에 두 개의 주파수를 재생하려했으나 경고음 사이의 일시 중지로 인해 소리가 끊깁니다. 나는 그것을 연구하려고 노력했지만 아무 것도 발견하지 못했고, DirectSound를 제외하고 어디서부터 시작해야할지 모른다. 내가 필요한 것은 C#의 한 스피커에서 두 개 이상의 주파수를 동시에 재생하는 프로그램을 만드는 것입니다.C#의 사운드 화음?

감사합니다.

+0

Awww ... 내 BBC Micro를 생각 나게합니다 ... 이제는 약간의 힘을 가진 기계였습니다 ... 이런 종류의 고급 프로그래밍은 아마도 C#에서는 불가능합니다. –

답변

2

좋은 .NET 바인딩이있는 DirectSound를 살펴 보시기 바랍니다. 2 개 (또는 그 이상)의 Buffer 개체를 사용하고 해당 개체를 동시에 재생하기 위해 Play 메서드를 호출 할 수 있습니다.

This tutorial은 비행 중에 소리를 합성하여 C#으로 간단한 드럼 머신을 구현하는 방법을 보여줍니다. 희망이 도움이됩니다.

+0

정확히 필요한 것 같습니다. 감사. – apophis

+0

@apophis : 걱정할 필요가 없습니다. – CesarGon

0

MIDI를 사용해보십시오. This example을 시작해야합니다. 여러 사람들이 많이 추천하는 MIDI 라이브러리를 사용합니다.

+0

환호성. 나는 그것을 줄 것이다. – apophis

0

Console.Beep()은 동기식이며 사운드가 끝날 때까지 돌아 오지 않습니다.

간단한 DirectMedia Layer (SDL.net)를 사용해보십시오.

0

다음은 WAV 또는 MIDI 파일을 재생할 수있는 아주 간단한 샘플 코드입니다. 이 방법을 사용하면 코드를 작성한 다음 사운드 효과를 변경하려는 경우 wav 또는 mid 파일 만 유지하면됩니다. 당신이 주파수를 알고 있다면

Play Any Sound File - C# 미리 당신이 웨이브 파일 (대담 또는 다른 유사한 프로그램) 다음 SoundPlayer 클래스와 웨이브 파일을 재생할로를 합성 할 수

0

(관리 코드에 대한 다이렉트 X 9.0을 사용합니다).

string path = /*path goes here*/; 
player = new SoundPlayer(path); 
player.Play(); 

런타임시 합성해야하는 경우 파일을 직접 작성해야합니다. Here's 웨이브 파일을 빌드하기 위해 참조 할 수있는 SO 질문입니다.