軟體介面 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 上啟用模擬輸出。

注意

注意:此處已啟用模擬輸出(但未路由)。