應用 Digilent Arty A7 設計 Wifi 電子鋼琴

想彈鋼琴,卻沒有鋼琴怎麼辦?鋼琴動輒上萬元怎麼辦?何不 DIY 一個電子鋼琴呢?一塊 FPGA 開發板+ 一個鍵盤+ 一個WIFI小板,即可完成電子鋼琴的 DIY 工作。插上電,連上網,躺在床上都能彈鋼琴。

本項目是一款以 Digilent Arty FPGA 開發板為基礎進行設計的 WiFi 電子鋼琴,利用普通電腦鍵盤的 104 個按鍵代替鋼琴的 88 個音符鍵,不同的按鍵對應不同的音符,實現 88 個音符的無線演奏。FPGA 驅動鍵盤與 WiFi 模組,建立服務器並控制音響播放音符文件。

FPGA 透過 WiFi 模組與遠端服務器和音響建立連接,用戶可以感受“無線鋼琴”的體驗。 本項目的特色在於,利用普通電腦鍵盤代替鋼琴鍵盤,通過 WiFi 模組傳輸鋼琴鍵值,服務器端根據接收到的鍵值播放對應的音符文件,實現"數位鋼琴"的概念。這樣的設計與實際生活中的鋼琴相比,一般由於大氣壓力、溫度、濕度以及彈奏等多方面因素影響,一台鋼琴正常使用一段時間後,會使音調產生偏離,即通常所說的音不准了,這時候就需要對其進行調音。而本項目的“ WiFi 電子鋼琴” 採用標準的 88 音符 wav 文件,也就不存在音調偏離和調音的情況了。

如圖所示,首先將鍵盤透過 USB 介面連接 Digilent Basys 3 FPGA 開發板(因為 Arty 沒有 USB Host 的介面,所以使用了 Basys 3),Basys3驅動鍵盤、讀取按鍵值,並利用串列通訊界面將按鍵值​​傳遞給 Arty 開發板。Arty 開發板讀取按鍵值之後,再透過 WiFi 模組傳輸到遠端服務器。服務器使用的是家用電腦,利用 Qt 編寫了 TCP 通訊的程序,使之與 Arty 端的 WiFi 模組建立連接。主機方面,製作了 88 個音符 wav 文件,利用 QSound 類根據按鍵值播放對應的音符 wav 文件。按鍵盤後電腦就會撥放相對應的音符。

本項目完成了“無線傳輸”和“鋼琴彈奏”的功能,由於 WiFi 僅傳輸按鍵值,音符文件儲存在服務器本地,所以基本不會存在“彈奏延時”的情況。另外,利用 Qt 編寫服務器端的主機程序,實現接收鍵值和播放音符的工作。
(本文為 2017 DDC中國選拔賽參賽作品)

 


文章連結 │ 基于FPGA的WiFi电子钢琴