亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過控制揚聲器通道的音量使用 python 創建環繞效果?

如何通過控制揚聲器通道的音量使用 python 創建環繞效果?

交互式愛情 2023-02-15 16:39:51
我買了一張聲卡:Focusrite Scarlett 4i4 3rd Gen,有 4 個輸出通道。我還有 4 個揚聲器,我會將每個揚聲器與聲卡相連。我希望能夠單獨設置每個揚聲器的音量,也許有一個 tkinter 接口(最終,但這不是重點)。我已經看到我們可以有很多不同的庫(我在這個項目中使用的是 Windows 10):似乎有趣的是 sounddevice 和 soundcard。我雖然想選擇聲卡作為我的輸出設備,并指定現在必須播放聲音的通道。一個好的用法是在單聲道中有一個 .wav 文件以在 1、2、3 或 4 個揚聲器中實現;或立體聲中的 .wav 文件以相同的方式實現,但立體聲的第一個通道在 2 個揚聲器中,立體聲的第二個通道在另外兩個揚聲器中。最完美的用法是創建一個環繞聲 4.0 效果,制作一個正方形的揚聲器并能夠隨著聲音“轉身”:你可以想象我放一個火車的聲音,這個聲音好像在轉火車繞著你轉。sounddevice.AsioSettings()似乎允許我們控制使用哪個輸出來播放某些東西,對吧?( https://python-sounddevice.readthedocs.io/en/0.3.15/api/platform-specific-settings.html ) 但是當我詳細查看文檔時,我還注意到sounddevice.play()允許我們指定映射參數,我不太明白。( https://python-sounddevice.readthedocs.io/en/0.3.15/api/convenience-functions.html#sounddevice.play ) 我想在所有情況下我都必須安裝 Asio,這不是問題 (我希望?。?。由于我的目的是控制每個揚聲器,我可以指定什么以及如何使用 souddevice 庫或其他庫來實現?此外,是否可以使用那些圖書館或其他圖書館(例如:pycaw)來控制每個揚聲器的音量?非常感謝!埃柳恩PS:如果 python 不存在解決方案,那么如果您有想法以另一種方式實現此目標(例如能夠做到這一點的軟件),那將是一種樂趣。
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

AsioSettings和參數都mapping用于靜態選擇頻道。您不能使用它們來混合信號或改變它們的音量。

如果您想按升序使用聲卡的前幾個通道(例如通道 1、2、3 和 4),則根本不需要它們。例如,您可以簡單地使用channels=4, 它將選擇前 4 個通道。更簡單的是,如果您使用sounddevice.play(),通道數將由給定的 NumPy 數組確定,您不必顯式指定參數channels

如果您事先知道所需的運動(示例中的火車),則可以預先計算 2 通道或 4 通道信號。然后你可以簡單地播放多通道信號sounddevice.play()(如果需要,使用AsioSettings或參數)。mapping

如果您事先不知道運動(例如,如果它是實時計算的),您可以使用 asounddevice.OutputStream并實現一個自定義callback函數來對信號進行加權。

sounddevice至于究竟如何將信號混合到輸出通道,這與模塊或模塊沒有任何關系soundcard。您或許可以找到信號處理庫來執行此操作,或者您可以自己實現它。合適的搜索詞是“平移”。對于兩個通道,您可以使用“立體聲聲像”,對于更多通道,還有其他方法,如“矢量基幅聲像 (VBAP)”、“Ambisonics 聲像聲像”……


查看完整回答
反對 回復 2023-02-15
  • 1 回答
  • 0 關注
  • 283 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號