Tác giả của Instructables với biệt danh rgco đã đưa ra một bộ tổng hợp 1,5 quãng tám giọng nói trên Arduino Uno. Để so sánh, các bộ tổng hợp trẻ em phổ biến khác nhau chỉ khác nhau về thiết kế và được tạo ra bởi cùng một con chip là ba giọng nói. Thật vậy, họ có thể tự động đồng hành cùng âm nhạc với nhịp điệu, ghi nhớ giai điệu một giọng nói và bắt chước giọng nói của động vật. Nhưng sau đó tự làm âm thanh đẹp hơn. Tại sao?
Đó là tất cả về các tham số. Lấy mẫu tần số 31 kHz, 9 bit, 4 giọng nói, tổng hợp FM với thời gian quét thay đổi theo thời gian, phong bì ADSR, 12 dụng cụ ảo, 18 phím trải dài 1,5 quãng tám.
Bậc thầy tổng hợp mạch tổng hợp trong Fritzing:
Trong đó, nó mô phỏng vị trí của các thành phần trên bảng loại bánh mì và các kết nối giữa chúng:
Và thu thập các chương trình trong cuộc sống thực:
Chỉ cần rót và sử dụng LỚN là điều đơn giản nhất bạn có thể làm với thiết kế. 18 phím (từ TRƯỚC quãng tám thứ tư đến FA thứ năm) - để chơi, lần thứ mười chín chuyển các nhạc cụ ảo trong một chiếc nhẫn: piano, xylophone, guitar, cymbals, chuông, funky, rung, kim loại, violin, bass, kèn, accordion. Bản chất của âm thanh bị ảnh hưởng bởi thời lượng của các lần nhấn phím, nhưng không phải là nỗ lực, không giống như các bộ tổng hợp chuyên nghiệp. Nhưng nhà phát triển muốn bạn thử lập trình các công cụ ảo của bạn. Mỗi trong số chúng được đưa ra bởi mười tham số. Trình hướng dẫn cho bạn biết nó phụ thuộc vào tham số nào.
ldness - khối lượng
Nếu tham số này nhỏ hơn 64, quá tải và các biến dạng liên quan sẽ bị loại trừ. Nhưng nếu bạn lập trình một nhạc cụ ảo không phát ra âm lượng tối đa trong thời gian dài, giá trị của tham số này có thể vượt quá 64, vì cả bốn giọng nói đều phát ra âm thanh không thường xuyên.
pitch0 - thay đổi cao độ
Phạm vi tương ứng với ở trên, nếu bạn đặt tham số này thành 12. Giảm di chuyển xuống, tăng - tăng. Zero tương ứng với một sự thay đổi xuống chính xác một quãng tám, 24 - chính xác là một quãng tám.
ADSR_a - tốc độ xoay âm lượng từ 0 đến tối đa
Càng nhỏ, càng chậm.Ví dụ: 8192 tương ứng với 4 ms, 256 đến 128 ms.
ADSR_d - tốc độ để giảm âm lượng từ mức tối đa xuống mức được chỉ định bởi tham số ADSR_s.
Nguyên tắc là như nhau.
ADSR_s - giá trị mà âm lượng giảm khi nhấn phím trong một thời gian dài
Ví dụ: 256 - âm lượng duy trì tối đa mọi lúc trong khi phím được giữ. 192 - âm lượng giảm xuống 80 phần trăm và vẫn như vậy trong khi phím được giữ. 0 - âm lượng giảm xuống 0, ngay cả khi phím được giữ.
ADSR_r - tốc độ để giảm âm lượng về 0 sau khi nhả phím
Nguyên tắc tương tự như đối với các tham số ADSR_a và ADSR_d.
FM_inc - tỷ lệ tần số điều chế so với âm
Với giá trị 256, tỷ lệ này là 1: 1, với 512 - 2: 1, với 128 - 1: 2, phần còn lại là tương tự. Nếu tham số này được đặt thành bội số của 64, âm thanh sẽ là tiếng anh.
FM_a1 - phạm vi điều chế tần số ở đầu ghi chú
256 tương ứng với một loạt các sóng hài. Khi giảm, âm thanh sạch hơn, với sự gia tăng hài hòa, nó trở nên nhiều hơn.
FM_a2 - điều chế tần số quét ở cuối ghi chú
Nguyên tắc là như nhau. Đối với hầu hết các nhạc cụ thực, hòa âm phân rã nhanh hơn âm cơ bản. Nếu bạn làm ngược lại, bạn sẽ nhận được âm thanh khác thường.
FM_dec - tốc độ chuyển đổi của dải điều chế tần số từ bộ được đặt bởi FM_a1 sang bộ được đặt bởi FM_a2
Nguyên tắc tương tự như đối với các tham số ADSR_a, ADSR_d và ADSR_r.
Tần số PWM là 31.250 Hz có được bằng cách chia tần số xung nhịp (16 MHz) cho 512. Chương trình được thiết kế theo cách các sự kiện được liên kết với thời gian mà không bị gián đoạn. Thay vào đó, một bit tràn bộ đếm thời gian có liên quan. Để chương trình quản lý thực hiện mọi thứ theo yêu cầu của nó, chỉ các số nguyên có độ dài 8 và 16 bit được sử dụng. Sóng hình sin được trình bày dưới dạng bảng gồm các số 8 bit. Các hoạt động phụ trợ - đọc trạng thái chính, thay đổi nhạc cụ ảo, chọn giọng nói, tính toán các tham số ghi chú thay đổi theo thời gian - được phân phối trong số 15 quy trình, mất 0,48 ms để hoàn thành. Tại thời điểm này, một số thao tác được thực hiện với độ chính xác 32 bit, cần thiết để nhân hai số nhị phân 16 bit.
Một sóng hình sin đơn giản nghe có vẻ buồn tẻ vì không có sóng hài trong phổ của nó. Tổng hợp FM cho phép bạn nhận được chúng và thay đổi phổ của chúng theo thời gian, mô phỏng âm thanh của các nhạc cụ thực sự. Nhiều tần số cho âm thanh anharmonic xảy ra, ví dụ, trong tiếng chuông. Thiết bị cũng bắt chước sự thay đổi phổ vốn có trong các nhạc cụ thực theo thời gian, khi một số sóng hài phân rã nhanh hơn các thiết bị khác.