2011-11-09 35 views
15

Tôi đang cố gắng xây dựng một cây đàn piano ảo trong C# và muốn có cách tạo thang âm nhạc từ đầu.Cách tạo âm thanh từ đầu C#

Tôi biết rằng tôi có thể tìm hoặc tạo một loạt các tệp .wav, 1 cho mỗi ghi chú, nhưng điều này sẽ tạo ra quá nhiều không gian trên đĩa cứng của người dùng và không mang tính trực giác cho bản thân trong tương lai. Vì vậy, có một cách để tạo ra một âm thanh thích hợp - ví dụ như B phẳng, trong C# mà không sử dụng tệp .wav, tất cả trong mã thorugh C#, và nếu không, có cách nào để làm điều này bằng ngôn ngữ khác không - C++.

Cảm ơn, tôi đã cố gắng làm cho nó rõ ràng nhất có thể.

+2

+1 cho câu hỏi hay - tôi biết điều đó có thể nhưng tôi không có ý tưởng nhỏ nào về cách thực hiện điều đó :) Chúc bạn may mắn! –

+0

+1 mặc dù các tệp '.wav' không chiếm nhiều không gian, nhưng phải có cách để thực hiện mà không có chúng – Dani

+1

[Wikipedia] (http://en.wikipedia.org/wiki/Note#Note_frequency_.28hertz.29) mục nhập về cách chuyển đổi nốt nhạc thành tần suất bạn có thể cắm vào máy phát âm thanh của mình. – user786653

Trả lời

7

Tôi nghĩ rằng điều này có vẻ như nó sẽ giúp bạn bắt đầu:

http://blogs.msdn.com/b/dawate/archive/2009/06/24/intro-to-audio-programming-part-3-synthesizing-simple-wave-audio-using-c.aspx

EDIT: tôi nên thêm tạo mà âm thanh mà không .wav mẫu và bắt chước một cây đàn piano là mâu thuẫn với nhau.

Nếu bạn muốn nhận được âm thanh piano 'thực', tốt nhất bạn nên làm việc với các mẫu (giữ chúng trong bộ nhớ nếu bạn không muốn giữ chúng trong hệ thống tệp). Nếu bạn chỉ muốn một cách đơn giản để phát ra các ghi chú chính xác (âm thanh không có gì giống như một cây đàn piano thực) thì làm theo cách lập trình là cách để đi!

+0

Cảm ơn, điều đó có vẻ như điều tôi cần. Tôi đã có một con đường dài phía trước! –

+0

+1 Chủ yếu là tên bạn là một sự kính trọng với một trong những tác phẩm âm nhạc yêu thích của tôi ... –

+0

@Dommer Cảm ơn, một trong số tôi cũng vậy. Giả sử bạn đang đề cập đến _Toccata_ nổi tiếng nhất của mình! – Widor

0

Bạn có thể muốn xem qua MIDI.

Có một windows API bạn có thể gói trong C++, sau đó hiển thị giao diện được quản lý mà bạn có thể sử dụng trong C#.

0

Có thể sử dụng thư viện MIDI có thể trợ giúp? Tôi không quan tâm đến vấn đề này, nhưng nếu bạn không muốn sử dụng các tập tin âm thanh thì đó là điều duy nhất xuất hiện trong đầu tôi. Có một câu hỏi về nó here.

0

Here bạn tìm thấy một bài viết bao gồm nguồn về cách tạo âm thanh piano từ đầu cho ít nhất một giá trị âm nhạc của Octave (có thể mở rộng).

4

Nếu bạn muốn mô phỏng piano cụ thể, bạn chỉ có hai tùy chọn, một trong số đó là sử dụng mẫu và một là physical modelling. Mô hình vật lý đòi hỏi một số kiến ​​thức khá tiên tiến về DSP (lọc, chập, vv) và một cây đàn piano sẽ là một công cụ đầy thử thách để giải quyết nhưng nó đã được thực hiện bởi những người thích Pianoteq

Về chủ đề của mẫu, để tạo đàn piano ở bất kỳ vị trí nào gần tương tự thuyết phục, lý tưởng bạn cần nhiều hơn một mẫu cho mỗi ghi chú cho các vận tốc khác nhau với các dải xen kẽ giữa chúng, nhưng bạn có thể lấy mẫu bằng một phạm vi giới hạn các ghi chú để giảm tổng số mẫu.

Các vấn đề liên quan