2011-01-15 71 views
6

Tôi đã thử sử dụng Console.Beep() ở tốc độ thấp mili giây hai lần phát hai tần số 'cùng một lúc', nhưng tạm dừng giữa các tiếng bíp sẽ làm hỏng nó. Tôi đã thử nghiên cứu nó nhưng tôi đã không tìm thấy gì, và không biết bắt đầu từ đâu, ngoài DirectSound, mà tôi đang tìm kiếm. Tất cả những gì tôi cần là tạo một chương trình phát hai hoặc nhiều tần số cùng một lúc trên một loa, trong C#.Hợp âm âm thanh trong C#?

Cảm ơn.

+0

Awww ... nhắc tôi về BBC Micro của tôi ... bây giờ đó là một cỗ máy có sức mạnh ... loại lập trình nâng cao này có lẽ không khả thi trong C#. –

Trả lời

2

Tôi khuyên bạn nên xem DirectSound, có các liên kết .NET đẹp mắt. Bạn có thể sử dụng hai (hoặc nhiều hơn) đối tượng Buffer và gọi phương thức Play của chúng để phát cùng một lúc.

This tutorial cho biết cách triển khai máy trống đơn giản trong C# bằng cách tổng hợp âm thanh khi đang di chuyển. Hy vọng nó giúp.

+0

Điều đó giống như chính xác những gì tôi cần. Cảm ơn. – apophis

+0

@apophis: Đừng lo lắng. – CesarGon

0

Hãy thử sử dụng MIDI. This example sẽ giúp bạn bắt đầu. Nó sử dụng một thư viện MIDI mà một số người khuyên dùng rất cao.

+0

Chúc mừng. Tôi sẽ cho nó một cái nhìn. – apophis

0

Console.Beep() là đồng bộ và không trả lại cho đến khi âm thanh kết thúc.

Thử lớp DirectMedia đơn giản (SDL.net).

0

Đây là một số mã mẫu rất đơn giản cho phép bạn phát tệp WAV hoặc MIDI. Bằng cách này bạn có thể viết mã của bạn một lần sau đó chỉ cần duy trì tập tin wav hoặc mid nếu bạn muốn thay đổi hiệu ứng âm thanh.

Play Any Sound File - C# (Sử dụng DirectX 9.0 cho Managed Code)

0

Nếu bạn biết các tần số trước bạn có thể tổng hợp chúng thành một file wave (táo bạo hoặc một chương trình khác tương tự) và sau đó chơi các tập tin sóng với lớp SoundPlayer.

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

Nếu bạn cần tổng hợp chúng khi chạy, bạn sẽ phải ghi tệp bằng tay. Here's câu hỏi SO mà bạn có thể tham khảo để tạo tệp sóng.