Thuật toán hiệu ứng méo kỹ thuật số


10

Tôi đã đọc cuốn sách DAFX của Udo Zölzer về hiệu ứng biến dạng ở trang 124-125 và nó nói rằng mô phỏng phù hợp của biến dạng được đưa ra bởi hàm:

f(x)= =x|x|(1-ex2/|x|)

Ai đó có thể giải thích công thức này và loại tín hiệu chúng ta nhận được?

Từ những gì tôi hiểu 'x' là tín hiệu được lấy mẫu, vì vậy đây là một chuỗi các số. Làm gì | x | nghĩa là? Nó có đề cập đến giá trị tuyệt đối của x cho mỗi giá trị được lấy mẫu không?

Vì vậy, nếu tôi muốn thực hiện mô phỏng hiệu ứng méo này,

  1. Tôi cần biết chiều dài của x (Nó được tính theo số lượng mẫu)
  2. Trong một vòng lặp, tôi cần tính công thức này cho từng giá trị mẫu
  3. sau khi vòng lặp kết thúc, tôi nhận được tín hiệu bị méo (ở dạng kỹ thuật số)

Sau đó, tôi cần chuyển đổi nó thành tín hiệu tương tự để tôi có thể nghe thấy nó.


2
Lưu ý rằng có một lỗi trong công thức được đưa ra trong cuốn sách (cần có một dấu âm trong số mũ). Xem câu trả lời của tôi dưới đây.
Matt L.

Câu trả lời:


5

| x | biểu thị giá trị tuyệt đối - x / | x | bit của công thức là có để đảm bảo rằng dấu của đầu vào được giữ nguyên trong đầu ra. Về việc thực hiện, có, các bước bạn đã liệt kê là chính xác.


1
Bạn có ý nghĩa gì bởi "sự biến dạng thực sự"? Hoàn toàn bất kỳ hoạt động bạn làm trên tín hiệu ban đầu sẽ bị biến dạng! Bạn đang cố làm gì vậy?
pichenettes

1
Méo là một thuật ngữ rất mơ hồ mô tả bất kỳ biến đổi (thường là không mong muốn) làm thay đổi tín hiệu. Sự biến dạng của guitar đạt được bằng nhiều quy trình khác nhau - cắt, chỉnh lưu, quá tải - tùy thuộc vào loại bàn đạp / amp xảy ra - không có công thức "đúng" duy nhất ... Công thức mà bạn có giống như nó sẽ đưa ra chức năng giống như sigmoid sẽ mô phỏng quá tải; nhưng tôi nghĩ rằng nó có thể có một sai lầm ở đâu đó.
pichenettes

1
Bạn phải làm điều này trong miền thời gian.
pichenettes

1
Bởi vì đó là cách hiệu ứng méo guitar hoạt động. Chúng ban đầu được chế tạo với các phần tử phi tuyến tính như ống, điốt và các bóng bán dẫn sau này có hành vi được mô tả trong miền thời gian bằng một hàm phi tuyến tính. Và bạn đang cố gắng mô phỏng kỹ thuật số đó ...
pichenettes 14/12/13

1
Sự thay đổi cao độ, bộ tạo hài hòa ưa thích (giả sử EHX micro pog) hoặc hình thái phổ ưa thích (không thể nhớ lại tên sản phẩm) yêu cầu xử lý miền tần số. Một số trình giả lập amps / loa yêu cầu kết hợp dài, được thực hiện hiệu quả bằng cách nhân trong miền tần số. Nhưng trong mọi trường hợp, KHÔNG BAO GIỜ "lấy toàn bộ FFT của tín hiệu" - điều này được thực hiện bằng cách thêm chồng chéo FFT có độ dài nhỏ (1024 mẫu hoặc hơn).
pichenettes

9

Nhờ cốt truyện trong câu trả lời của Olli Niemitalo, tôi đã tin rằng công thức được đưa ra trong cuốn sách có lỗi về dấu hiệu. Tính phi tuyến tính được sử dụng cho fuzz hoặc méo luôn là một số loại chức năng cắt được làm mịn, giúp nén tín hiệu đầu vào. Vì vậy, biên độ đầu vào nhỏ trải qua ít thay đổi trong khi biên độ đầu vào cao (ít nhiều) được cắt nhẹ. Và con số thể hiện trong câu trả lời của Olli hoàn toàn ngược lại.

Vì vậy, tôi tin rằng công thức chính xác phải là

(1)f(x)= =x|x|(1-e-x2/|x|)= =sgn(x)(1-e-|x|)

xf(x)sgn(x)|x|= =xf(x)sgn(x)

f(x)

nhập mô tả hình ảnh ở đây

(1)x/|x|x2/|x|x

nếu (x> 0)
   y = 1 - điểm kinh nghiệm (-x);
khác
   y = -1 + exp (x);
kết thúc

Ồ vâng, cuốn sách đánh giá sai web.archive.org/web/20070826204128/http://www.notam02.no/ trên và đây là công thức chính xác.
Olli Niemitalo

Được rồi cảm ơn. Bạn có nghĩ rằng đây là nguồn của cuốn sách?
Matt L.

Có cuốn sách tham khảo luận án sinh viên. Có một luận án sinh viên Na Uy thứ hai có công thức sai và trích dẫn luận án sinh viên đầu tiên. Tôi không buồn kiểm tra ngày để xem cuốn sách có sao chép luận điểm thứ hai mà không kiểm tra nguồn gốc hoặc nếu luận án thứ hai sao chép cuốn sách.
Olli Niemitalo

1
x2/|x|

2

Bạn có thể viết phần thân của hàm trực tiếp vào Wolfram Alpha và nó vẽ đồ thị:

nhập mô tả hình ảnh ở đây

Nó trông giống như một waveshaper đối với tôi, và chúng có thể được sử dụng như bạn mô tả.


1
Bây giờ tôi thấy cốt truyện của bạn, tôi hoàn toàn tin rằng công thức trong cuốn sách là sai. Xem câu trả lời của tôi. Bạn nghĩ sao?
Matt L.

2
@ MattL.Đúng có ý nghĩa hơn nhiều. Chức năng của cuốn sách cũng đang giảm dần sẽ gây ra một pha đảo ngược không mong muốn.
Olli Niemitalo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.