Mục lục:
- Bước 1: Các thành phần cần thiết
- Bước 2: Thông số kỹ thuật
- Bước 3: Sơ đồ mạch
- Bước 4: Ứng dụng và IDE cần thiết
- Bước 5: Mã liên quan cho mọi thứ
- Bước 6: Thiết lập nó
- Bước 7: Kết quả / Video
Video: Bộ chuyển đổi âm thanh sang MIDI trong thời gian thực.: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Namaste mọi người! Đây là một dự án mà tôi đã thực hiện cho một trong các khóa học của tôi (Xử lý tín hiệu kỹ thuật số theo thời gian thực) trong chương trình cử nhân của tôi. Dự án nhằm mục đích tạo ra một hệ thống DSP "lắng nghe" dữ liệu âm thanh và xuất ra các thông điệp MIDI của các ghi chú tương ứng qua UART. Arduino Nano đã được sử dụng cho mục đích này. Tóm lại, bộ điều khiển vi mô thực hiện FFT trên dữ liệu âm thanh đến và thực hiện một số phân tích các đỉnh và gửi thông báo MIDI thích hợp. Tuy nhiên, đừng bận tâm về MOSFET vì chúng dành cho một số dự án khác (sẽ được đưa ra sau trong phần hướng dẫn) và không bắt buộc đối với dự án này. Vì vậy, chúng ta hãy bắt đầu đã !!
Bước 1: Các thành phần cần thiết
Chúng tôi sẽ cần các thành phần sau để xây dựng dự án này mặc dù nhiều thành phần trong số này là chung và có thể được thay thế bằng các thành phần tương đương của chúng. Cũng tham khảo sơ đồ mạch để tìm ra và tìm kiếm các triển khai tốt hơn.
Số lượng thành phần
1. Microphone Electret. 1
2. Điện trở 30 Kilo Ohm. 1
3. Điện trở 150 Kilo Ohm. 1
4. Điện trở 100 ohm. 1
5. Điện trở 2,2 Kilo Ohm. 3
6. Nồi đặt sẵn 10 Kilo Ohm. 1
7. Nồi tông đơ 10 Kilo Ohm. 1
8. Nồi âm thanh nổi 47 Kilo Ohm. 1
9. Điện trở 470 Ohms. 2
10. tụ điện 0,01uF. 2
11. Tụ điện 2,2uF. 3
12. Tụ điện 47uF. 2
13. Tụ điện 1000uF. 1
14. Tụ điện 470uF. 1
15. Bộ điều chỉnh điện áp 7805. 1
16. Dải tiêu đề Nữ và Nam. Mỗi người 1
17. Đầu nối Jack thùng. 1
18. Bộ chuyển đổi DC 12 V 1 Amp. 1
19. Công tắc SPST. (Tùy chọn) 1
20. Ván đục lỗ. 1
Bước 2: Thông số kỹ thuật
Tần suất lấy mẫu: 3840 mẫu / giây
Số lượng mẫu trên mỗi FFT: 256
Độ phân giải tần số: 15Hz
Tốc độ làm mới: Khoảng 15 Hz
Thang âm thấp hơn và cao hơn của các nốt nhạc không được nắm bắt một cách chính xác. Các nốt thấp hơn bị ảnh hưởng bởi độ phân giải tần số thấp khi tần số cao hơn bị ảnh hưởng bởi tốc độ lấy mẫu thấp. Arduino đã hết bộ nhớ nên không có cách nào để có được độ phân giải tốt hơn. Và độ phân giải tốt hơn sẽ đi kèm với chi phí làm giảm tốc độ làm tươi, vì vậy đánh đổi là không thể tránh khỏi. Phiên bản giáo dân của nguyên lý bất định Heisenberg.
Khó khăn cơ bản là khoảng cách theo cấp số nhân giữa các nốt (Như trong hình. Mọi xung động trên trục tần số là một nốt nhạc). Các thuật toán như LFT có thể hữu ích nhưng điều đó hơi nâng cao và hơi phức tạp đối với một thiết bị như arduino Nano.
Bước 3: Sơ đồ mạch
Lưu ý: Đừng bận tâm bởi ba MOSFET và các đầu nối vít trong hình. Chúng không bắt buộc đối với dự án này. Lưu ý rằng bảng đầu vào micrô có thể tháo rời hoặc người ta gọi nó là Mô-đun. Dưới đây là một mô tả nhỏ về các khối khác nhau.
1) Hai điện trở 470 ohm kết hợp tín hiệu âm thanh nổi thành tín hiệu âm thanh mono. Đảm bảo rằng mặt đất của tín hiệu đi vào đất ảo (vg trong sơ đồ mạch) và không tiếp đất của mạch.
2) Khối tiếp theo là bộ lọc thông thấp sallen-key bậc 2 có nhiệm vụ giới hạn băng tần tín hiệu đầu vào để tránh hiện tượng răng cưa. Vì chúng tôi chỉ làm việc với nguồn cung cấp + 12v nên chúng tôi thiên vị op-amp bằng cách tạo một bộ chia điện áp RC. điều đó đánh lừa op-amp khi nghĩ rằng nguồn cung cấp là nguồn cung cấp 6 0 -6 volt (đường sắt kép) trong đó vg là tham chiếu mặt đất cho op amp.
3) Sau đó, đầu ra là thông thấp được lọc để chặn DC bù 6 volt và kết hợp với DC khoảng 0,55 volt vì ADC sẽ được cấu hình để sử dụng bên trong 1,1 v làm Vref.
Lưu ý: Mạch tiền khuếch đại cho micrô electret không phải là mạch tốt nhất trên internet. Một mạch liên quan đến op-amp sẽ là lựa chọn tốt hơn. Chúng tôi mong muốn đáp ứng tần số càng phẳng càng tốt. Nồi âm thanh nổi 47 kilo ohms được sử dụng để xác định tần số cắt thường bằng một nửa tần số lấy mẫu. Giá trị đặt trước 10 kilo ohm (Nồi nhỏ có đầu màu trắng) được sử dụng để điều chỉnh độ lợi và giá trị Q của bộ lọc. Nồi tông đơ 10 kilo ohm (một cái có núm điều chỉnh bằng kim loại trông giống như một cái vít đầu phẳng nhỏ) được sử dụng để đặt điện áp gần bằng nửa Vref.
Lưu ý: Khi bạn kết nối Nano với P. C. giữ cho công tắc SPST mở nếu không đóng. Đặc biệt lưu ý, nếu không làm như vậy có thể gây hại cho mạch điện / máy tính / bộ điều chỉnh điện áp hoặc bất kỳ sự kết hợp nào của những điều trên
Bước 4: Ứng dụng và IDE cần thiết
- Để viết mã Arduino Nano, tôi đã sử dụng AVR studio 5.1 nguyên thủy vì nó có vẻ phù hợp với tôi. Bạn có thể tìm thấy trình cài đặt tại đây.
- Để lập trình Arduino Nano, tôi đã sử dụng Xloader. Công cụ trọng lượng nhẹ thực sự dễ sử dụng của nó để ghi các tệp.hex sang Arduinos. Bạn có thể lấy nó ở đây.
- Đối với dự án nhỏ tiền thưởng nhỏ và điều chỉnh mạch mà tôi đã sử dụng xử lý. Bạn có thể lấy nó từ đây mặc dù thực hiện những thay đổi lớn trong mọi bản sửa đổi, vì vậy bạn có thể phải loay hoay với các chức năng không dùng nữa để làm cho bản phác thảo hoạt động.
- FL studio hoặc bất kỳ phần mềm xử lý MIDI nào khác. Bạn có thể tải miễn phí phiên bản truy cập giới hạn FL studio tại đây.
- Vòng MIDI tạo ra một cổng MIDI ảo và được FL studio phát hiện như thể đó là một thiết bị MIDI. Nhận một bản sao giống nhau từ đây.
- MIDI không có lông được sử dụng để đọc các thông điệp MIDI từ cổng COM và gửi nó đến cổng MIDI vòng lặp. Nó cũng gỡ lỗi các thông báo MIDI trong thời gian thực, giúp cho việc gỡ lỗi trở nên thuận tiện. Nhận MIDI không có lông từ đây.
Bước 5: Mã liên quan cho mọi thứ
Tôi muốn cảm ơn Electronic Lifes MFG (Trang web Đây !!) cho thư viện FFT điểm cố định mà tôi đã sử dụng trong dự án này. Thư viện được tối ưu hóa cho gia đình AVR lớn. Đây là liên kết đến các tệp và mã thư viện mà anh ấy đã sử dụng. Tôi đang đính kèm mã của tôi bên dưới. Nó bao gồm cả bản phác thảo xử lý và mã AVR C. Xin lưu ý rằng đây là cấu hình phù hợp với tôi và tôi không chịu bất kỳ trách nhiệm nào nếu bạn làm hỏng bất kỳ thứ gì vì những mã này. Ngoài ra, tôi đã gặp rất nhiều vấn đề khi cố gắng làm cho mã hoạt động. Ví dụ, DDRD (Data Direction Register) có DDDx (x = 0-7) làm mặt nạ bit thay vì DDRDx thông thường (x = 0-7). Hãy coi chừng những lỗi này trong khi biên dịch. Ngoài ra, việc thay đổi bộ điều khiển vi mô cũng ảnh hưởng đến các định nghĩa này, vì vậy hãy chú ý đến điều này trong khi xử lý các lỗi biên dịch. Và nếu bạn đang thắc mắc tại sao thư mục dự án được gọi là DDT_Arduino_328p.rar, thì hãy cứ nói rằng buổi tối khi tôi bắt đầu rất tối và tôi đã lười đến mức không bật đèn.:P
Đến với phác thảo xử lý, tôi sử dụng xử lý 3.3.6 để viết phác thảo này. Bạn sẽ cần đặt số cổng COM trong bản phác thảo theo cách thủ công. Bạn có thể kiểm tra các bình luận trong mã.
Nếu ai đó có thể giúp tôi chuyển mã sang Arduino IDE và phiên bản xử lý mới nhất, tôi rất vui và cũng sẽ ghi công cho các nhà phát triển / những người đóng góp.
Bước 6: Thiết lập nó
- Mở mã và biên dịch mã với #define pcvisual không ghi chú và #define midi_out đã nhận xét.
- Mở xloader và duyệt đến thư mục có mã, duyệt đến tệp.hex và ghi nó vào nano bằng cách chọn bo mạch và cổng COM thích hợp.
- Mở phác thảo xử lý và chạy nó với chỉ mục cổng COM thích hợp. Nếu mọi thứ suôn sẻ, bạn sẽ có thể nhìn thấy phổ của tín hiệu trên chân A0.
- Lấy một tua vít và xoay nồi tông đơ cho đến khi quang phổ bằng phẳng (thành phần DC phải gần bằng 0). Sau đó, không nhập bất kỳ tín hiệu nào vào bảng. (Không gắn mô-đun micrô).
- Bây giờ hãy sử dụng bất kỳ công cụ tạo quét nào như thế này để cung cấp đầu vào cho bảng từ điện thoại vi mô và quan sát quang phổ.
- Nếu bạn không thấy tần số quét, hãy giảm tần số cắt bằng cách thay đổi điện trở 47 kilo ohm. Cũng tăng mức tăng bằng cách sử dụng nồi đặt trước 10 kilo ohm. Cố gắng đạt được đầu ra quét phẳng và nổi bật bằng cách thay đổi các thông số này. Đây là phần thú vị (phần thưởng nhỏ!), Chơi các bài hát yêu thích của bạn và thưởng thức phổ thời gian thực của chúng. (Xem video)
- Bây giờ, hãy biên dịch lại mã C nhúng lần này với #define pcvisual đã nhận xét và #define midi_out đã bỏ ghi chú.
- Tải lại mã đã biên dịch mới vào arduino Nano.
- Mở LoopMidi và tạo một cổng mới.
- Mở FL studio hoặc phần mềm giao diện MIDI khác và đảm bảo rằng cổng midi vòng lặp hiển thị trong cài đặt cổng MIDI.
- Mở MIDI không có lông với arduino được kết nối. Chọn cổng đầu ra là cổng LoopMidi. Vào cài đặt và đặt tốc độ Baud là 115200. Bây giờ chọn cổng COM tương ứng với Arduino Nano và mở cổng.
- Phát một số âm "thuần" gần micrô và bạn cũng sẽ nghe thấy nốt tương ứng trong phần mềm MIDI. Nếu không có phản hồi, hãy thử giảm ngưỡng up_threshold được xác định trong mã C. Nếu các ghi chú được kích hoạt ngẫu nhiên thì hãy tăng ngưỡng lên.
- Nhận đàn piano của bạn và kiểm tra tốc độ của hệ thống của bạn !! Điều tuyệt vời nhất là trong vùng ghi chú màu vàng, nó có thể thoải mái phát hiện nhiều phím bấm đồng thời một cách dễ dàng.
Lưu ý: Khi một ứng dụng truy cập cổng COM, nó không thể được đọc bởi một ứng dụng khác. Ví dụ: nếu MIDI không có lông đọc cổng COM, Xloader sẽ không thể flash bảng
Bước 7: Kết quả / Video
Đó là nó cho bây giờ guys! Hy vọng bạn thích nó. Nếu bạn có bất kỳ đề xuất hoặc cải tiến nào trong dự án, hãy cho tôi biết trong phần bình luận. Sự thanh bình!
Đề xuất:
Trồng nhiều rau diếp trong ít không gian hơn hoặc Trồng rau diếp trong không gian, (nhiều hơn hoặc ít hơn).: 10 bước
Trồng nhiều rau diếp hơn trong ít không gian hơn hoặc … Trồng rau diếp trong không gian, (Nhiều hơn hoặc ít hơn): Đây là bài dự thi chuyên nghiệp cho Cuộc thi trồng trọt ngoài Trái đất, được gửi thông qua Huấn luyện viên. Tôi không thể vui mừng hơn khi được thiết kế cho sản xuất cây trồng vũ trụ và đăng Tài liệu hướng dẫn đầu tiên của mình. Để bắt đầu, cuộc thi yêu cầu chúng tôi
Robot SCARA: Tìm hiểu về Foward và Chuyển động học nghịch đảo !!! (Plot Twist Tìm hiểu cách tạo giao diện thời gian thực trong ARDUINO bằng PROCESSING !!!!): 5 bước (có hình ảnh)
Robot SCARA: Tìm hiểu về Foward và Chuyển động học nghịch đảo !!! (Plot Twist Tìm hiểu cách tạo giao diện thời gian thực trong ARDUINO bằng cách sử dụng PROCESSING !!!!): Robot SCARA là một cỗ máy rất phổ biến trong thế giới công nghiệp. Tên này là viết tắt của cả Cánh tay robot lắp ráp tuân thủ có chọn lọc hoặc Cánh tay robot có khớp nối tuân thủ có chọn lọc. Về cơ bản nó là một rô bốt ba bậc tự do, là rô bốt hai cấp đầu tiên
Chuyển đổi máy quay video những năm 1980 thành hình ảnh phân cực theo thời gian thực: 14 bước (có hình ảnh)
Chuyển đổi máy ảnh video những năm 1980 thành hình ảnh phân cực theo thời gian thực: Hình ảnh phân cực cung cấp một con đường để phát triển các ứng dụng thay đổi trò chơi trên nhiều lĩnh vực - bao gồm tất cả các cách từ giám sát môi trường và chẩn đoán y tế đến các ứng dụng an ninh và chống khủng bố. Tuy nhiên, rất
Cách thay đổi pin trong thẻ thời gian tạm thời: 12 bước
Cách thay đổi pin trong thẻ thời gian Tempo: Thẻ thời gian tạm thời của Vessel là một sự thay thế thú vị cho đồng hồ, gắn vào quần áo, dây đeo túi hoặc viền túi. Cuối cùng thì pin cũng hết, vì vậy đây là cách thay thế nó. Đó là pin di động nút 364 / AG1 / LR621 / SR621W / 164 tiêu chuẩn
Biến Máy tính Đồ thị TI thành Máy đo khoảng thời gian và tạo video tua nhanh thời gian: 7 bước (có hình ảnh)
Biến Máy tính Đồ thị TI thành Máy đo khoảng thời gian và tạo video tua nhanh thời gian: Tôi luôn muốn tạo video tua nhanh thời gian, nhưng tôi không có máy ảnh tích hợp tính năng đồng hồ đo khoảng cách. Thực tế, tôi không nghĩ nhiều lắm. máy ảnh đi kèm với một tính năng như vậy (đặc biệt không phải máy ảnh SLR). Vậy bạn muốn làm gì nếu bạn muốn