2009-04-26 36 views
6

Tôi muốn tạo ra âm thanh giống với âm thanh từ các nhạc cụ thực sự. Vấn đề là tôi có rất ít đầu mối để đạt được điều đó.Làm thế nào để tổng hợp âm thanh?

Điều tôi biết ở xa các công cụ thực tế là âm thanh mà chúng xuất ra hiếm khi được làm sạch. Nhưng làm thế nào để tạo ra âm thanh ô uế như vậy?

Điều này đến nay tôi đã nhận được để làm điều này, nó tạo ra âm thanh khá đơn giản mà từ đó tôi không chắc chắn nó thậm chí sử dụng alsa một cách chính xác.

import numpy 
from numpy.fft import fft, ifft 
from numpy.random import random_sample 
from alsaaudio import PCM, PCM_NONBLOCK, PCM_FORMAT_FLOAT_LE 

pcm = PCM()#mode=PCM_NONBLOCK) 
pcm.setrate(44100) 
pcm.setformat(PCM_FORMAT_FLOAT_LE) 
pcm.setchannels(1) 
pcm.setperiodsize(4096) 

def sine_wave(x, freq=100): 
    sample = numpy.arange(x*4096, (x+1)*4096, dtype=numpy.float32) 
    sample *= numpy.pi * 2/44100 
    sample *= freq 
    return numpy.sin(sample) 

for x in xrange(1000): 
    sample = sine_wave(x, 100) 
    pcm.write(sample.tostring()) 

Trả lời

8

Vui vẻ, nếu bạn muốn tạo (từ đầu) cái gì đó thực sự có vẻ "hữu cơ", ví dụ như một vật thể, có lẽ bạn nên tìm hiểu một chút về cách tạo ra những âm thanh này. Để có phần giới thiệu vững chắc, bạn có thể xem một cuốn sách như Fletcher và Rossings The Physics of Musical Instruments. Có rất nhiều nội dung trên web, bạn có thể muốn xem xét phần giới thiệu của James Clark có here

Có ít nhất một loại bỏ qua loại nội dung này sẽ cung cấp cho bạn ý tưởng về những gì bạn đang chống lại. Mô hình hóa các công cụ vật lý chính xác là rất khó!

Nếu những gì bạn muốn làm là có thứ gì đó nghe có vẻ thể chất, chứ không phải thứ gì đó nghe như nhạc cụ X, công việc của bạn dễ hơn một chút. Bạn có thể xây dựng các tần số khá dễ dàng và xếp chúng lại với nhau, thêm một chút tiếng ồn, và bạn sẽ nhận được một cái gì đó mà ít nhất không âm thanh bất cứ điều gì giống như một giai điệu thuần túy.

Đọc một chút về phân tích Fourier nói chung sẽ giúp, như kỹ thuật điều chế tần số (FM).

Hãy vui vẻ!

15

Tổng hợp âm thanh là một chủ đề phức tạp đòi hỏi nhiều năm nghiên cứu để làm chủ.

Nó cũng không phải là một vấn đề được giải quyết hoàn toàn, mặc dù những phát triển tương đối gần đây (như tổng hợp mô hình vật lý) đã có tiến bộ trong việc bắt chước các công cụ thực tế.

Có một số tùy chọn mở cho bạn. Nếu bạn chắc chắn rằng bạn muốn khám phá tổng hợp hơn nữa, sau đó tôi đề nghị bạn bắt đầu bằng cách tìm hiểu về tổng hợp FM. Nó tương đối dễ học và thực hiện trong phần mềm, ít nhất là ở dạng cơ bản, và tạo ra một loạt các âm thanh thú vị. Ngoài ra, hãy xem cuốn sách "Hướng dẫn âm nhạc máy tính" của Curtis Roads. Đó là một kinh thánh cho tất cả mọi thứ âm nhạc máy tính, và mặc dù nó là một vài năm tuổi nó là cuốn sách của sự lựa chọn cho việc học các nguyên tắc cơ bản.

Nếu bạn muốn một cách nhanh hơn để tạo ra âm thanh giống như cuộc sống, hãy cân nhắc sử dụng các kỹ thuật lấy mẫu: ghi lại các công cụ bạn muốn sao chép (hoặc sử dụng ngân hàng mẫu đã tồn tại từ trước) và chỉ phát lại mẫu. Đó là cách tiếp cận đơn giản hơn (và thường hiệu quả hơn).

+0

Tôi không muốn sử dụng ngân hàng mẫu. Tôi muốn một cái gì đó giống như dụng cụ, không giống như cuộc sống ở tất cả. – Cheery

1

Tôi đồng ý rằng điều này là rất nhỏ và không có "cách đúng", nhưng bạn nên cân nhắc bắt đầu bằng (hoặc tự tạo) MIDISoundFont.

0

Như những người khác đã nói, không phải là một chủ đề tầm thường chút nào. Có những thách thức cả ở phía lập trình của sự vật (đặc biệt là nếu bạn quan tâm đến độ trễ thấp) và phần tổng hợp. Một mỏ vàng cho tổng hợp âm thanh là trang của Julius O. Smith. Có rất nhiều kỹ thuật để tổng hợp http://ccrma-www.stanford.edu/~jos/.

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