軟體介面 ALSA-DSP MADI 驅動¶
(從德語翻譯而來,所以英語不太好 ;-),
2004 - winfried ritsch
驅動程式已新增完整功能。由於一些控制和啟動選項是 ALSA 標準,因此僅描述和討論下面的特殊控制。
硬體功能¶
音訊傳輸¶
通道數 -- 取決於傳輸模式
選擇的通道數從 1..Nmax。僅因資源分配而使用較少通道的原因,是因為未使用的 DMA 通道被停用,並且分配的記憶體較少。因此,PCI 系統的吞吐量也可以縮放。(僅對低效能板重要)。
單速 -- 1..64 個通道
注意
(注意:選擇 56 通道模式進行傳輸或作為接收器時,只有 56 個通道透過 MADI 傳輸/接收,但所有 64 個通道都可用於混音器,因此通道數用於驅動程式)
雙倍速 -- 1..32 個通道
注意
注意:選擇 56 通道模式進行傳輸/接收模式時,只有 28 個通道透過 MADI 傳輸/接收,但所有 32 個通道都可用於混音器,因此通道數用於驅動程式
四倍速 -- 1..16 個通道
注意
選擇 56 通道模式進行傳輸/接收模式時,只有 14 個通道透過 MADI 傳輸/接收,但所有 16 個通道都可用於混音器,因此通道數用於驅動程式
格式 -- 有符號 32 位小端 (SNDRV_PCM_FMTBIT_S32_LE)
取樣率 --
單倍速 -- 32000, 44100, 48000
雙倍速 -- 64000, 88200, 96000 (未經測試)
四倍速 -- 128000, 176400, 192000 (未經測試)
訪問模式 -- MMAP(記憶體對映),非交錯 (PCM_NON-INTERLEAVED)
緩衝區大小 -- 64,128,256,512,1024,2048,8192 取樣
片段 -- 2
硬體指標 -- 2 種模式
該卡支援讀取 DMA 讀取/寫入的實際緩衝區指標。由於 PCI 的批次模式,它僅精確到 64 位元組。因此它對於 ALSA 中間層函式(這裡緩衝區 ID 給出了更好的結果)並不是真正可用,但如果應用程式使用 MMAP,則可以使用。因此,它可以在載入時使用引數 precise-pointer 進行配置。
提示
(提示:實驗發現指標最多大 64 個位元組,永遠不會太小。因此,如果減去 64,您始終會有一個用於寫入的安全指標,該指標在此模式下在 ALSA 內部使用。理論上,您現在可以獲得低至 16 個取樣的延遲,這是中斷可能性的四分之一。)
- 精確指標 -- 關閉
用於指標計算的中斷
- 精確指標 -- 開啟
使用硬體指標。
控制器¶
由於 DSP-MADI-Mixer 具有 8152 個推子,因此使用標準混音器控制元件沒有意義,因為這會破壞大多數(尤其是圖形)ALSA-Mixer GUI。因此,混音器控制必須由使用 hwdep 介面的二維控制器提供。
此外,所有 128+256 個峰值和 RMS 計均可透過 hwdep 介面訪問。由於即使您只需要一個峰值和 RMS 水平,也始終複製和轉換峰值和 RMS 水平可能是一個性能問題,因此我決定匯出硬體結構,以便如果需要,一些驅動程式專家可以實現混音器或峰值計的記憶體對映透過 ioctl,或者也可以只進行復制而不進行轉換。一個測試應用程式展示了控制器的用法。
延遲控制 --- 未實現!!!
注意
注意:在 Windows 驅動程式中,延遲可以透過控制面板訪問,但緩衝區大小由 hwparams 呼叫從 ALSA 控制,並且不應在執行狀態下更改,我沒有在此處實現它。
系統時鐘 -- 暫停!!!!
名稱 -- “系統時鐘模式”
訪問 -- 讀寫
值 -- “Master” “Slave”
注意
!!!!這是一個硬體功能,但與時鐘源控制器衝突,時鐘源控制器是一種 ALSA 標準。將卡設定為特殊模式(以某種頻率作為主裝置或從裝置)是有意義的,因為即使不使用音訊應用程式,工作室也應該具有有效同步設定。所以請改用時鐘源控制器!!!!
時鐘源
名稱 -- “取樣時鐘源”
訪問 -- 讀寫
值 -- “AutoSync”, “Internal 32.0 kHz”, “Internal 44.1 kHz”, “Internal 48.0 kHz”, “Internal 64.0 kHz”, “Internal 88.2 kHz”, “Internal 96.0 kHz”
在特定頻率下選擇主裝置,因此也選擇速度模式或從裝置(自動同步)。另請參閱“首選同步參考”
警告
!!!!這並非純硬體功能,但以前由一些 ALSA 驅動程式透過 ALSA 實現,因此我也使用它。!!
首選同步參考
名稱 -- “首選同步參考”
訪問 -- 讀寫
值 -- “Word” “MADI”
在自動同步模式下,可以選擇首選同步源。如果不可用,則會盡可能使用另一個。
注意
注意:由於 MADI 的位元率遠高於字時鐘,因此卡在 MADI 模式下應該可以更好地同步。但是由於 RME-PLL 非常好,因此字時鐘也幾乎沒有問題。我從未發現任何差異。
TX 64 通道
名稱 -- “TX 64 通道模式”
訪問 -- 讀寫
值 -- 0 1
對 MADI 傳輸使用 64 通道模式 (1) 或 56 通道模式 (0)。
注意
注意:此控制僅用於輸出。輸入模式是從傳送 MADI 的硬體自動檢測的。
清除 TMS
名稱 -- “清除軌道標記”
訪問 -- 讀寫
值 -- 0 1
不要使用 AES 上的較低 5 位音訊位作為附加位。
安全模式或自動輸入
名稱 -- “安全模式”
訪問 -- 讀寫
值 -- 0 1(預設開啟)
如果開啟 (1),則如果光纖或同軸連接出現故障,則會接管到工作連線,而不會出現取樣故障。只有當您將第二個連線用作備份連線時,它才有用。
輸入
名稱 -- “輸入選擇”
訪問 -- 讀寫
值 -- 光纖 同軸
選擇輸入,光纖或同軸。如果安全模式處於活動狀態,則這是首選輸入。
混音器¶
混音器
名稱 -- “混音器”
訪問 -- 讀寫
值 - <通道號 0-127> <值 0-65535>
這裡將通道索引作為第一個值來獲取/設定相應的混音器通道,其中 0-63 是輸入到輸出的推子,64-127 是播放到輸出的推子。值 0 是通道靜音 0,32768 是 1 的放大倍數。
通道 1-64
用於 ALSA 混音器實用程式的快速混音器。從播放到輸出實現了混音器矩陣的對角線。
線路輸出
名稱 -- “線路輸出”
訪問 -- 讀寫
值 -- 0 1
開啟和關閉模擬輸出,這與混音或路由無關。模擬輸出反映通道 63,64。
資訊(僅限讀取訪問)¶
取樣率
名稱 -- “系統取樣率”
訪問 -- 只讀
獲取取樣率。
測量的外部速率
名稱 -- “外部速率”
訪問 -- 只讀
應該是“自動同步速率”,但使用的名稱是 ALSA 方案。報告了自動同步上使用的外部取樣頻率。
MADI 同步狀態
名稱 -- “MADI 同步鎖定狀態”
訪問 -- 讀取
值 -- 0,1,2
MADI 輸入為 0=未鎖定,1=已鎖定,或 2=已同步。
字時鐘同步狀態
名稱 -- “字時鐘鎖定狀態”
訪問 -- 讀取
值 -- 0,1,2
字時鐘輸入為 0=未鎖定,1=已鎖定,或 2=已同步。
自動同步
名稱 -- “自動同步參考”
訪問 -- 讀取
值 -- “WordClock”, “MADI”, “None”
同步參考是“WordClock”、“MADI”或無。
RX 64ch --- 尚未實現
MADI 接收器處於 64 通道模式 oder 56 通道模式。
AB_inp --- 未經測試
用於自動輸入的輸入。
實際緩衝區位置 --- 未實現
!!!這是一個 ALSA 內部函式,因此未使用任何控制元件!!!
呼叫引數¶
index int 陣列(最小值 = 1,最大值 = 8)
RME HDSPM 介面的索引值。ALSA 中的卡索引
注意:ALSA 標準
id 字串陣列(最小值 = 1,最大值 = 8)
RME HDSPM 介面的 ID 字串。
注意:ALSA 標準
enable int 陣列(最小值 = 1,最大值 = 8)
啟用/停用特定的 HDSPM 音效卡。
注意:ALSA 標準
precise_ptr int 陣列(最小值 = 1,最大值 = 8)
啟用精確指標,或停用。
注意
注意:僅當應用程式支援此功能時才使用(這是一種特殊情況)。
line_outs_monitor int 陣列(最小值 = 1,最大值 = 8)
預設情況下將播放流傳送到模擬輸出。
注意
注意:每個播放通道都混合到相同編號的輸出通道(路由)。這違反了 ALSA 約定,即在載入驅動程式後必須將所有通道靜音,但以前在其他卡上使用過,所以我歷史上再次使用它)
enable_monitor int 陣列(最小值 = 1,最大值 = 8)
預設情況下在通道 63/64 上啟用模擬輸出。
注意
注意:此處已啟用模擬輸出(但未路由)。