R·ex / Zeng


音遊狗、安全狗、攻城獅、業餘設計師、段子手、苦學日語的少年。

在 Mac 上實現雷蛇鍵盤幻彩視覺化:燈隨音動,炫出心動

為了應付音遊“高手速、短鍵程、快速回彈”的特點,我入手了雷蛇的獵魂光蛛鍵盤。它除了可以滿足音遊的需求以外,還可以透過 Razer Synapse 3 實現燈光效果的個性化設定,例如透過幻彩視覺化軟體,讓鍵盤的燈光隨著音樂節奏變化。

Windows 上的幻彩視覺化

這是官方的演示影片:

可以看到鍵盤有兩個燈光效果,一個是按鍵區域被當成了螢幕,顯示了音樂的頻譜,另一個是鍵盤的邊框燈光效果,發光區域隨著音樂的音量大小而變化。

在 Mac 上面配置幻彩視覺化的替代品

Razer Synapse 3 是 Windows 平臺獨佔的軟體。雖然它的前一版本 Razer Synapse 2 支援 Mac,但並沒有幻彩視覺化功能,你只能設定固定的燈光效果。在雷蛇 Insider 論壇上也有帖子掛了好幾年(Synapse 3.0 for Mac?Synapse 3 Mac OS X Support),問 Mac 版本的幻彩視覺化何時能出,但雷蛇一直沒有給出明確的答覆。

在帖子中,網友有提出唯一能在 Mac 上執行並且相容最新裝置的專案是 GitHub 上面的 1kc/razer-macos,它在一定程度上支援 spectrum 功能,但它本質上是向硬體傳送命令、使用硬體自帶的功能,而不是透過軟體監聽系統音訊來實現幻彩視覺化。

razer-macos 倉庫中的截圖,可以看到選單上面寫了 spectrum

Mac 監聽系統音訊的難點

在 Windows 下想要監聽系統音訊,可以透過 Core Audio APIs 下的 WASAPI 來實現,Linux 也有類似的 ALSAPulseAudio。這兩個系統都可以讓軟體直接獲取系統音訊,而不影響正常的播放。

Mac 並沒有提供好用的 API 用於直接監聽系統音訊。想要在 Mac 上獲取音訊,你首先要指定一個輸入裝置,但是 Mac 也沒提供內建的虛擬裝置……所以我們必須先透過第三方軟體新增虛擬裝置。目前我個人比較推薦的是 ExistentialAudio/BlackHole,理由如下:

  • 它是一個現代軟體(與之相比,另一個軟體 Soundflower 已經停止維護,不支援新系統和 Apple Silicon 晶片)
  • 完全免費,可以在下載頁面上選擇性贊助(與之相比,另一個軟體 Loopback 是收費軟體)
  • 它的自由度非常高(支援 2 通道到 16 通道、可以自定義延遲、位元率等),不需要修改核心或安全策略

可以在 官方提供的下載頁 下載和安裝,也可以透過 Homebrew 安裝(2ch 表示 2 通道,對於我們來說已經足夠了):

brew install blackhole-2ch

此時,我們的系統裡就會多出一個名為 BlackHole 2ch 的輸入裝置和輸出裝置。當我們把 BlackHole 2ch 設定為系統的“輸出”裝置時,所有的音訊都會被傳輸到 BlackHole 2ch 的“輸入”裝置,而不會輸出到揚聲器。雖然不完美,但我們已經有一個可以監聽系統音訊的裝置了。

不影響播放:多輸出裝置

按照上述方法,我們可以監聽系統音訊,但是這樣會導致我們聽不到聲音,因為揚聲器被忽略了。好在 Mac 提供了一個叫做“多輸出裝置”的功能,可以讓我們同時輸出到多個裝置。開啟搜尋框,輸入“音訊 MIDI 設定”,然後在彈出視窗的左下角點選“+”號,選擇“建立多輸出裝置”,最後在右邊的列表中同時勾選你的揚聲器和 BlackHole 2ch

配置完多輸出裝置後的樣子;我用的是藍芽耳機,所以選擇了我的 NANK-RUNNER PRO3

現在,我們可以在系統設定裡選擇“多輸出裝置”作為系統的“輸出”裝置,這樣我們就可以同時聽到聲音了。

安裝 OpenRGB 驅動

在 Mac 上,我們需要一個驅動來控制鍵盤的燈光。我選擇了 CalcProgrammer1/OpenRGB,它是一個開源的 RGB 控制軟體,支援多種品牌的 RGB 裝置,包括雷蛇鍵盤。它的最新版本是 0.9,可以從 這裡 下載。

OpenRGB 除了可以透過 GUI 來配置每個按鍵的燈光,還可以啟動一個伺服器,讓第三方程式透過這個伺服器來控制燈光。下圖展示了 OpenRGB 的 SDK Server 標籤頁,可以直接點選 Start Server 按鈕來啟動伺服器。如果點不動,很可能是埠被佔用了,在左邊的設定裡將 6742 修改成別的近似的數字再試試。(注意不要修改成已經被佔用的埠;也儘量不要修改成 1024 以下的數字,因為可能需要更高的許可權才能監聽這些埠。)

OpenRGB 的 SDK Server 標籤頁

安裝 KeyboardVisualizer

CalcProgrammer1/KeyboardVisualizer 是一個跨平臺的軟體,可以透過捕獲特定的系統音訊輸入,將其轉換為鍵盤燈光效果。它的燈光效果高度可定製化,且它支援 OpenRGB 協議,可以透過 OpenRGB 控制鍵盤的燈光。

美中不足的是,雖然它是個跨平臺軟體,但它目前只提供了 Windows 版本 的預構建檔案。但是沒關係,作為一個熱愛折騰的人,我們有辦法讓它在 Mac 上跑起來!不過在這之前,請先安裝 Git 和 qmake。

brew install git
brew install qt

然後,我們可以透過 Git 克隆倉庫:

# 克隆倉庫
git clone https://gitlab.com/CalcProgrammer1/KeyboardVisualizer.git

# 進入倉庫目錄
cd KeyboardVisualizer

# 克隆倉庫裡面的子倉庫
git submodule update --init --recursive

接著,我們可以透過 qmake 來生成 Makefile,並呼叫 make 命令來編譯它:

qmake KeyboardVisualizer.pro
make -j8

此時,可以發現在目錄下多了一個 KeyboardVisualizer.app 檔案,這就是我們編譯好的軟體。不過這個軟體有個問題:你直接點選執行的時候不會申請麥克風許可權,所以你需要透過終端來執行它,並給終端賦予麥克風許可權:

./KeyboardVisualizer.app/Contents/MacOS/KeyboardVisualizer

然後……你會發現音訊輸出的音質突然變得非常低。這是因為 KeyboardVisualizer 強行修改並鎖定了輸入裝置的取樣率。對於一個鍵盤光效來說,確實不需要特別高的音質,這隻會徒增計算量。

讓聚集裝置來救場

我們可以透過聚集裝置來解決這個問題。開啟搜尋框,輸入“音訊 MIDI 設定”,然後在彈出視窗的左下角點選“+”號,選擇“建立聚集裝置”,最後在右邊的列表中同時勾選你的揚聲器和 BlackHole 2ch

配置完聚集裝置後的樣子;我用的是藍芽耳機,所以選擇了我的 NANK-RUNNER PRO3

將其作為系統的“輸入”裝置,再啟動 KeyboardVisualizer,你會發現音質恢復正常了,且 KeyboardVisualizer 也能正常工作。

KeyboardVisualizer 正在執行的樣子

如果能像我一樣看到波形圖,那已經離成功不遠了!最後點選右下角的 Connect 按鈕,連線到剛才開啟的 OpenRGB 伺服器,然後你就可以看到鍵盤的燈光效果隨著音樂的節奏變化了。

我們至今做了什麼

  • 安裝了 BlackHole 2ch 驅動
  • 透過多輸出裝置同時輸出到揚聲器和 BlackHole 2ch
  • 透過 OpenRGB 控制鍵盤的燈光
  • 透過 KeyboardVisualizer 監聽系統音訊並轉換為鍵盤燈光效果
  • 透過聚集裝置解決了 KeyboardVisualizer 修改取樣率的問題
  • 透過 OpenRGB SDK Server 與 KeyboardVisualizer 連線

我們可以用一個簡易的架構圖來表示這個過程:

值得注意的是,由於開了兩個軟體,並且啟用了錄音許可權,因此頂部狀態列會多出三個圖示,分別是 OpenRGB、KeyboardVisualizer 和系統錄音。

頂部狀態列多出的圖示

Disqus 載入中……如未能載入,請將 disqus.com 和 disquscdn.com 加入白名單。

這是我們共同度過的

第 3849 天