← Documents Documentation/sound/cards/hdspm.rst GitHub 원문 ↗

Linux 6.18.37 · Sound

ALSA-DSP MADI 드라이버 소프트웨어 인터페이스

RME HDSPM/DSP-MADI의 속도별 채널 수, S32_LE 비인터리브 MMAP 형식, 정밀 포인터, hwdep 믹서 행렬, 클록·Safe Mode·동기화 상태와 모듈 매개변수를 원문 제어 이름 그대로 설명합니다.

Source pathDocumentation/sound/cards/hdspm.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

hdspm.rst:1-379

RME HDSPM/DSP-MADI의 속도별 채널 수, S32_LE 비인터리브 MMAP 형식, 정밀 포인터, hwdep 믹서 행렬, 클록·Safe Mode·동기화 상태와 모듈 매개변수를 원문 제어 이름 그대로 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 =======================================
2 Software Interface ALSA-DSP MADI Driver
3 =======================================
4
5 (translated from German, so no good English ;-),
6
7 2004 - winfried ritsch
8
9
10 Full functionality has been added to the driver. Since some of
11 the Controls and startup-options are ALSA-Standard and only the
12 special Controls are described and discussed below.
13
14
15 Hardware functionality
16 ======================
17
18 Audio transmission
19 ------------------
20
21 * number of channels -- depends on transmission mode
22
23 The number of channels chosen is from 1..Nmax. The reason to
24 use for a lower number of channels is only resource allocation,
25 since unused DMA channels are disabled and less memory is
26 allocated. So also the throughput of the PCI system can be
27 scaled. (Only important for low performance boards).
28
29 * Single Speed -- 1..64 channels
30
31 .. note::
32 (Note: Choosing the 56channel mode for transmission or as
33 receiver, only 56 are transmitted/received over the MADI, but
34 all 64 channels are available for the mixer, so channel count
35 for the driver)
36
37 * Double Speed -- 1..32 channels
38
39 .. note::
40 Note: Choosing the 56-channel mode for
41 transmission/receive-mode , only 28 are transmitted/received
42 over the MADI, but all 32 channels are available for the mixer,
43 so channel count for the driver
44
45
46 * Quad Speed -- 1..16 channels
47
48 .. note::
49 Choosing the 56-channel mode for
50 transmission/receive-mode , only 14 are transmitted/received
51 over the MADI, but all 16 channels are available for the mixer,
52 so channel count for the driver
53
54 * Format -- signed 32 Bit Little Endian (SNDRV_PCM_FMTBIT_S32_LE)
55
56 * Sample Rates --
57
58 Single Speed -- 32000, 44100, 48000
59
60 Double Speed -- 64000, 88200, 96000 (untested)
61
62 Quad Speed -- 128000, 176400, 192000 (untested)
63
64 * access-mode -- MMAP (memory mapped), Not interleaved (PCM_NON-INTERLEAVED)
65
66 * buffer-sizes -- 64,128,256,512,1024,2048,8192 Samples
67
68 * fragments -- 2
69
70 * Hardware-pointer -- 2 Modi
71
72
73 The Card supports the readout of the actual Buffer-pointer,
74 where DMA reads/writes. Since of the bulk mode of PCI it is only
75 64 Byte accurate. SO it is not really usable for the
76 ALSA-mid-level functions (here the buffer-ID gives a better
77 result), but if MMAP is used by the application. Therefore it
78 can be configured at load-time with the parameter
79 precise-pointer.
80
81
82 .. hint::
83 (Hint: Experimenting I found that the pointer is maximum 64 to
84 large never to small. So if you subtract 64 you always have a
85 safe pointer for writing, which is used on this mode inside
86 ALSA. In theory now you can get now a latency as low as 16
87 Samples, which is a quarter of the interrupt possibilities.)
88
89 * Precise Pointer -- off
90 interrupt used for pointer-calculation
91
92 * Precise Pointer -- on
93 hardware pointer used.
94
95 Controller
96 ----------
97
98 Since DSP-MADI-Mixer has 8152 Fader, it does not make sense to
99 use the standard mixer-controls, since this would break most of
100 (especially graphic) ALSA-Mixer GUIs. So Mixer control has be
101 provided by a 2-dimensional controller using the
102 hwdep-interface.
103
104 Also all 128+256 Peak and RMS-Meter can be accessed via the
105 hwdep-interface. Since it could be a performance problem always
106 copying and converting Peak and RMS-Levels even if you just need
107 one, I decided to export the hardware structure, so that of
108 needed some driver-guru can implement a memory-mapping of mixer
109 or peak-meters over ioctl, or also to do only copying and no
110 conversion. A test-application shows the usage of the controller.
111
112 * Latency Controls --- not implemented !!!
113
114 .. note::
115 Note: Within the windows-driver the latency is accessible of a
116 control-panel, but buffer-sizes are controlled with ALSA from
117 hwparams-calls and should not be changed in run-state, I did not
118 implement it here.
119
120
121 * System Clock -- suspended !!!!
122
123 * Name -- "System Clock Mode"
124
125 * Access -- Read Write
126
127 * Values -- "Master" "Slave"
128
129 .. note::
130 !!!! This is a hardware-function but is in conflict with the
131 Clock-source controller, which is a kind of ALSA-standard. I
132 makes sense to set the card to a special mode (master at some
133 frequency or slave), since even not using an Audio-application
134 a studio should have working synchronisations setup. So use
135 Clock-source-controller instead !!!!
136
137 * Clock Source
138
139 * Name -- "Sample Clock Source"
140
141 * Access -- Read Write
142
143 * Values -- "AutoSync", "Internal 32.0 kHz", "Internal 44.1 kHz",
144 "Internal 48.0 kHz", "Internal 64.0 kHz", "Internal 88.2 kHz",
145 "Internal 96.0 kHz"
146
147 Choose between Master at a specific Frequency and so also the
148 Speed-mode or Slave (Autosync). Also see "Preferred Sync Ref"
149
150 .. warning::
151 !!!! This is no pure hardware function but was implemented by
152 ALSA by some ALSA-drivers before, so I use it also. !!!
153
154
155 * Preferred Sync Ref
156
157 * Name -- "Preferred Sync Reference"
158
159 * Access -- Read Write
160
161 * Values -- "Word" "MADI"
162
163
164 Within the Auto-sync-Mode the preferred Sync Source can be
165 chosen. If it is not available another is used if possible.
166
167 .. note::
168 Note: Since MADI has a much higher bit-rate than word-clock, the
169 card should synchronise better in MADI Mode. But since the
170 RME-PLL is very good, there are almost no problems with
171 word-clock too. I never found a difference.
172
173
174 * TX 64 channel
175
176 * Name -- "TX 64 channels mode"
177
178 * Access -- Read Write
179
180 * Values -- 0 1
181
182 Using 64-channel-modus (1) or 56-channel-modus for
183 MADI-transmission (0).
184
185
186 .. note::
187 Note: This control is for output only. Input-mode is detected
188 automatically from hardware sending MADI.
189
190
191 * Clear TMS
192
193 * Name -- "Clear Track Marker"
194
195 * Access -- Read Write
196
197 * Values -- 0 1
198
199
200 Don't use to lower 5 Audio-bits on AES as additional Bits.
201
202
203 * Safe Mode oder Auto Input
204
205 * Name -- "Safe Mode"
206
207 * Access -- Read Write
208
209 * Values -- 0 1 (default on)
210
211 If on (1), then if either the optical or coaxial connection
212 has a failure, there is a takeover to the working one, with no
213 sample failure. Its only useful if you use the second as a
214 backup connection.
215
216 * Input
217
218 * Name -- "Input Select"
219
220 * Access -- Read Write
221
222 * Values -- optical coaxial
223
224
225 Choosing the Input, optical or coaxial. If Safe-mode is active,
226 this is the preferred Input.
227
228 Mixer
229 -----
230
231 * Mixer
232
233 * Name -- "Mixer"
234
235 * Access -- Read Write
236
237 * Values - <channel-number 0-127> <Value 0-65535>
238
239
240 Here as a first value the channel-index is taken to get/set the
241 corresponding mixer channel, where 0-63 are the input to output
242 fader and 64-127 the playback to outputs fader. Value 0
243 is channel muted 0 and 32768 an amplification of 1.
244
245 * Chn 1-64
246
247 fast mixer for the ALSA-mixer utils. The diagonal of the
248 mixer-matrix is implemented from playback to output.
249
250
251 * Line Out
252
253 * Name -- "Line Out"
254
255 * Access -- Read Write
256
257 * Values -- 0 1
258
259 Switching on and off the analog out, which has nothing to do
260 with mixing or routing. the analog outs reflects channel 63,64.
261
262
263 Information (only read access)
264 ------------------------------
265
266 * Sample Rate
267
268 * Name -- "System Sample Rate"
269
270 * Access -- Read-only
271
272 getting the sample rate.
273
274
275 * External Rate measured
276
277 * Name -- "External Rate"
278
279 * Access -- Read only
280
281
282 Should be "Autosync Rate", but Name used is
283 ALSA-Scheme. External Sample frequency liked used on Autosync is
284 reported.
285
286
287 * MADI Sync Status
288
289 * Name -- "MADI Sync Lock Status"
290
291 * Access -- Read
292
293 * Values -- 0,1,2
294
295 MADI-Input is 0=Unlocked, 1=Locked, or 2=Synced.
296
297
298 * Word Clock Sync Status
299
300 * Name -- "Word Clock Lock Status"
301
302 * Access -- Read
303
304 * Values -- 0,1,2
305
306 Word Clock Input is 0=Unlocked, 1=Locked, or 2=Synced.
307
308 * AutoSync
309
310 * Name -- "AutoSync Reference"
311
312 * Access -- Read
313
314 * Values -- "WordClock", "MADI", "None"
315
316 Sync-Reference is either "WordClock", "MADI" or none.
317
318 * RX 64ch --- noch nicht implementiert
319
320 MADI-Receiver is in 64 channel mode oder 56 channel mode.
321
322
323 * AB_inp --- not tested
324
325 Used input for Auto-Input.
326
327
328 * actual Buffer Position --- not implemented
329
330 !!! this is a ALSA internal function, so no control is used !!!
331
332
333
334 Calling Parameter
335 =================
336
337 * index int array (min = 1, max = 8)
338
339 Index value for RME HDSPM interface. card-index within ALSA
340
341 note: ALSA-standard
342
343 * id string array (min = 1, max = 8)
344
345 ID string for RME HDSPM interface.
346
347 note: ALSA-standard
348
349 * enable int array (min = 1, max = 8)
350
351 Enable/disable specific HDSPM sound-cards.
352
353 note: ALSA-standard
354
355 * precise_ptr int array (min = 1, max = 8)
356
357 Enable precise pointer, or disable.
358
359 .. note::
360 note: Use only when the application supports this (which is a special case).
361
362 * line_outs_monitor int array (min = 1, max = 8)
363
364 Send playback streams to analog outs by default.
365
366 .. note::
367 note: each playback channel is mixed to the same numbered output
368 channel (routed). This is against the ALSA-convention, where all
369 channels have to be muted on after loading the driver, but was
370 used before on other cards, so i historically use it again)
371
372
373
374 * enable_monitor int array (min = 1, max = 8)
375
376 Enable Analog Out on Channel 63/64 by default.
377
378 .. note ::
379 note: here the analog output is enabled (but not routed).
380

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

MADI 전송, PCM 형식과 하드웨어 포인터

1-94

이 문서는 독일어에서 번역된 2004년 Winfried Ritsch의 ALSA-DSP MADI 드라이버 인터페이스 설명이다. 드라이버에는 전체 기능이 추가되어 있으며, ALSA 표준 제어와 시작 옵션은 생략하고 특수 제어만 설명한다.

전송 채널 수는 모드에 따라 1부터 최댓값까지 선택한다. 채널 수를 줄이는 이유는 자원 할당뿐이다. 사용하지 않는 DMA 채널을 끄고 메모리 할당을 줄여 PCI 시스템 처리량을 조절할 수 있으므로 성능이 낮은 보드에서만 중요하다.

Single Speed는 1~64채널이다. 56채널 전송 또는 수신 모드를 선택하면 MADI로 실제 송수신되는 것은 56채널이지만 믹서에는 64채널이 모두 보이므로 드라이버 채널 수는 64다. Double Speed는 1~32채널이며 56채널 모드에서는 MADI 송수신이 28채널이어도 믹서와 드라이버에는 32채널이 보인다. Quad Speed는 1~16채널이며 같은 조건에서 MADI 송수신은 14채널, 믹서와 드라이버는 16채널이다.

PCM 형식은 signed 32-bit little endian인 `SNDRV_PCM_FMTBIT_S32_LE`이다. Single Speed 표본률은 32000, 44100, 48000Hz이고 Double Speed는 64000, 88200, 96000Hz이며 시험되지 않았다. Quad Speed는 128000, 176400, 192000Hz이며 역시 시험되지 않았다.

접근 모드는 메모리 매핑 MMAP과 비인터리브 `PCM_NON-INTERLEAVED`다. 버퍼 크기는 64, 128, 256, 512, 1024, 2048, 8192 표본 중 하나이고 fragment 수는 2다.

HDSPM 속도 모드
모드드라이버 채널56채널 모드 실제 MADI표본률
Single Speed1~645632000 / 44100 / 48000
Double Speed1~322864000 / 88200 / 96000, 미검증
Quad Speed1~1614128000 / 176400 / 192000, 미검증

MADI 실제 전송 채널과 믹서에 노출되는 최대 채널을 구분한다.

카드는 DMA가 실제로 읽고 쓰는 버퍼 포인터를 읽을 수 있지만 PCI bulk mode 때문에 정확도는 64바이트 단위뿐이다. 따라서 ALSA 중간 계층에는 buffer ID가 더 나은 결과를 주지만 응용 프로그램이 MMAP을 쓸 때는 하드웨어 포인터가 유용할 수 있어 적재 시 `precise-pointer` 매개변수로 선택한다.

실험상 포인터는 최대 64만큼 크게 보고될 뿐 작게 보고되지는 않았다. 따라서 64를 빼면 쓰기에 안전한 포인터가 되고 ALSA의 이 모드도 그렇게 동작한다. 이론적으로 인터럽트 가능한 크기의 4분의 1인 16표본까지 지연을 낮출 수 있다. Precise Pointer가 꺼지면 인터럽트로 포인터를 계산하고, 켜지면 하드웨어 포인터를 사용한다.

하드웨어 포인터 모드
Precise Pointer off인터럽트로 버퍼 포인터 계산ALSA 중간 계층 기본
Precise Pointer on하드웨어 포인터 읽기최대 +64 오차64를 빼 안전한 쓰기 위치 확보이론상 16표본 지연

64바이트 정밀도의 실제 포인터와 인터럽트 기반 계산을 선택한다.

=======================================
Software Interface ALSA-DSP MADI Driver 
=======================================

(translated from German, so no good English ;-), 

2004 - winfried ritsch


Full functionality has been added to the driver. Since some of
the Controls and startup-options  are ALSA-Standard and only the
special Controls are described and discussed below.


Hardware functionality
======================
   
Audio transmission
------------------

* number of channels --  depends on transmission mode

                The number of channels chosen is from 1..Nmax. The reason to
                use for a lower number of channels is only resource allocation,
                since unused DMA channels are disabled and less memory is
                allocated. So also the throughput of the PCI system can be
                scaled. (Only important for low performance boards).

* Single Speed -- 1..64 channels 

.. note::
                 (Note: Choosing the 56channel mode for transmission or as
                 receiver, only 56 are transmitted/received over the MADI, but
                 all 64 channels are available for the mixer, so channel count
                 for the driver)

* Double Speed -- 1..32 channels

.. note::
                 Note: Choosing the 56-channel mode for
                 transmission/receive-mode , only 28 are transmitted/received
                 over the MADI, but all 32 channels are available for the mixer,
                 so channel count for the driver


* Quad Speed -- 1..16 channels 

.. note::
                 Choosing the 56-channel mode for
                 transmission/receive-mode , only 14 are transmitted/received
                 over the MADI, but all 16 channels are available for the mixer,
                 so channel count for the driver

* Format -- signed 32 Bit Little Endian (SNDRV_PCM_FMTBIT_S32_LE)

* Sample Rates --

       Single Speed -- 32000, 44100, 48000

       Double Speed -- 64000, 88200, 96000 (untested)

       Quad Speed -- 128000, 176400, 192000 (untested)

* access-mode -- MMAP (memory mapped), Not interleaved (PCM_NON-INTERLEAVED)

* buffer-sizes -- 64,128,256,512,1024,2048,8192 Samples

* fragments -- 2

* Hardware-pointer -- 2 Modi


                 The Card supports the readout of the actual Buffer-pointer,
                 where DMA reads/writes. Since of the bulk mode of PCI it is only
                 64 Byte accurate. SO it is not really usable for the
                 ALSA-mid-level functions (here the buffer-ID gives a better
                 result), but if MMAP is used by the application. Therefore it
                 can be configured at load-time with the parameter
                 precise-pointer.


.. hint::
                 (Hint: Experimenting I found that the pointer is maximum 64 to
                 large never to small. So if you subtract 64 you always have a
                 safe pointer for writing, which is used on this mode inside
                 ALSA. In theory now you can get now a latency as low as 16
                 Samples, which is a quarter of the interrupt possibilities.)

   * Precise Pointer -- off
                                        interrupt used for pointer-calculation
                                
   * Precise Pointer -- on
                                        hardware pointer used.

hwdep 컨트롤러와 보류된 제어

95-135

DSP-MADI 믹서에는 원문 표기상 8,152개의 페이더가 있어 표준 믹서 제어로 노출하면 대부분의 ALSA 믹서 GUI, 특히 그래픽 GUI가 깨진다. 그래서 믹서 제어는 `hwdep` 인터페이스의 2차원 컨트롤러로 제공한다.

Peak/RMS 미터 128+256개도 `hwdep` 인터페이스로 접근한다. 하나의 값만 필요해도 모든 Peak/RMS 레벨을 복사하고 변환하면 성능 문제가 될 수 있어 하드웨어 구조를 그대로 내보낸다. 이를 바탕으로 드라이버 개발자는 `ioctl`을 통한 믹서·피크 미터 메모리 매핑이나 변환 없는 복사만 구현할 수 있다. 테스트 응용 프로그램이 컨트롤러 사용법을 보여 준다.

Latency Controls는 구현되지 않았다. Windows 드라이버에서는 제어판으로 지연을 바꾸지만 ALSA의 버퍼 크기는 `hwparams` 호출로 제어하며 실행 중 바꾸면 안 되므로 구현하지 않았다.

`System Clock Mode`는 읽기·쓰기가 가능하고 `Master` 또는 `Slave` 값을 갖지만 사용이 보류됐다. 이 하드웨어 기능은 ALSA 표준에 가까운 Clock Source 제어와 충돌한다. 오디오 응용 프로그램을 쓰지 않는 동안에도 스튜디오 동기화가 유지되어야 하므로, 특정 주파수의 master 또는 slave 모드는 `Sample Clock Source` 제어로 설정해야 한다.

HDSPM 컨트롤러 인터페이스
항목인터페이스 / 상태설명
Mixer 8152 fader2차원 hwdep표준 ALSA 믹서 GUI 과부하 방지
128+256 Peak/RMShwdep 하드웨어 구조필요한 값만 복사·매핑 가능
Latency Controls미구현버퍼 크기는 hwparams로 설정
System Clock Mode보류Sample Clock Source와 충돌

표준 믹서 대신 hwdep을 쓰는 이유와 구현 상태다.

Controller
----------

Since DSP-MADI-Mixer has 8152 Fader, it does not make sense to
use the standard mixer-controls, since this would break most of
(especially graphic) ALSA-Mixer GUIs. So Mixer control has be
provided by a 2-dimensional controller using the
hwdep-interface. 

Also all 128+256 Peak and RMS-Meter can be accessed via the
hwdep-interface. Since it could be a performance problem always
copying and converting Peak and RMS-Levels even if you just need
one, I decided to export the hardware structure, so that of
needed some driver-guru can implement a memory-mapping of mixer
or peak-meters over ioctl, or also to do only copying and no
conversion. A test-application shows the usage of the controller.

* Latency Controls --- not implemented !!!

.. note::
           Note: Within the windows-driver the latency is accessible of a
           control-panel, but buffer-sizes are controlled with ALSA from
           hwparams-calls and should not be changed in run-state, I did not
           implement it here.


* System Clock -- suspended !!!!

  * Name -- "System Clock Mode"

  * Access -- Read Write
    
  * Values -- "Master" "Slave"

.. note::
                  !!!! This is a hardware-function but is in conflict with the
                  Clock-source controller, which is a kind of ALSA-standard. I
                  makes sense to set the card to a special mode (master at some
                  frequency or slave), since even not using an Audio-application
                  a studio should have working synchronisations setup. So use
                  Clock-source-controller instead !!!!

클록, MADI 송신과 입력 페일오버 제어

136-227

`Sample Clock Source`는 읽기·쓰기가 가능하며 `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` 중 하나를 고른다. 특정 주파수의 Master와 속도 모드를 선택하거나 AutoSync Slave를 선택하는 제어다. 순수 하드웨어 기능은 아니지만 이전 ALSA 드라이버들이 구현한 관례를 따라 사용한다.

`Preferred Sync Reference`는 AutoSync 모드에서 `Word` 또는 `MADI`를 선호 동기 소스로 지정한다. 선호 소스를 쓸 수 없으면 가능한 다른 소스를 사용한다. MADI의 비트 전송률이 Word Clock보다 훨씬 높아 이론상 동기화가 더 낫지만 RME PLL도 매우 우수해 작성자는 차이를 발견하지 못했다.

`TX 64 channels mode`는 1이면 MADI 64채널 송신, 0이면 56채널 송신이다. 출력 전용 제어이며 입력 모드는 MADI를 보내는 하드웨어에서 자동 감지한다.

`Clear Track Marker`는 읽기·쓰기가 가능한 0/1 제어로, AES의 하위 5개 오디오 비트를 추가 비트로 사용하지 않게 한다.

`Safe Mode`는 읽기·쓰기가 가능한 0/1 제어이며 기본값은 켜짐이다. 광 또는 동축 연결 한쪽에 장애가 생기면 표본 손실 없이 정상 연결로 인계한다. 두 번째 연결을 백업으로 사용할 때만 유용하다.

`Input Select`는 `optical` 또는 `coaxial`을 고른다. Safe Mode가 활성화돼 있으면 선택한 입력이 선호 입력이 된다.

HDSPM 클록·MADI 제어
제어 이름효과
Sample Clock SourceAutoSync / Internal 32.0~96.0 kHzMaster 주파수·속도 또는 Slave 선택
Preferred Sync ReferenceWord / MADIAutoSync의 선호 소스
TX 64 channels mode0 / 156 / 64채널 MADI 송신
Clear Track Marker0 / 1AES 하위 5비트를 추가 비트로 사용하지 않음
Safe Mode0 / 1, 기본 on광·동축 장애 시 무손실 페일오버
Input Selectoptical / coaxial입력 또는 Safe Mode 선호 입력

쓰기 가능한 동기화와 전송 제어의 이름·값·효과다.

Safe Mode 입력 인계
Input Select로 optical 또는 coaxial 선호Safe Mode on선호 연결 장애 감지작동 중인 다른 연결로 인계표본 손실 없이 계속

선호 입력 장애 시 백업 연결로 자동 전환한다.


* Clock Source  

  * Name -- "Sample Clock Source"

  * Access -- Read Write

  * Values -- "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"

                 Choose between Master at a specific Frequency and so also the
                 Speed-mode or Slave (Autosync). Also see  "Preferred Sync Ref"

.. warning::
       !!!! This is no pure hardware function but was implemented by
       ALSA by some ALSA-drivers before, so I use it also. !!!


* Preferred Sync Ref

  * Name -- "Preferred Sync Reference"

  * Access -- Read Write

  * Values -- "Word" "MADI"


                 Within the Auto-sync-Mode the preferred Sync Source can be
                 chosen. If it is not available another is used if possible.

.. note::
                 Note: Since MADI has a much higher bit-rate than word-clock, the
                 card should synchronise better in MADI Mode. But since the
                 RME-PLL is very good, there are almost no problems with
                 word-clock too. I never found a difference.


* TX 64 channel

  * Name -- "TX 64 channels mode"

  * Access -- Read Write

  * Values -- 0 1

                 Using 64-channel-modus (1) or 56-channel-modus for
                 MADI-transmission (0).


.. note::
                 Note: This control is for output only. Input-mode is detected
                 automatically from hardware sending MADI.


* Clear TMS

  * Name -- "Clear Track Marker"

  * Access -- Read Write

  * Values -- 0 1


                 Don't use to lower 5 Audio-bits on AES as additional Bits.
        

* Safe Mode oder Auto Input

  * Name -- "Safe Mode"

  * Access -- Read Write

  * Values -- 0 1 (default on)

                 If on (1), then if either the optical or coaxial connection
                 has a failure, there is a takeover to the working one, with no
                 sample failure. Its only useful if you use the second as a
                 backup connection.

* Input

  * Name -- "Input Select"

  * Access -- Read Write

  * Values -- optical coaxial


                 Choosing the Input, optical or coaxial. If Safe-mode is active,
                 this is the preferred Input.

2차원 믹서 행렬과 아날로그 Line Out

228-262

`Mixer` 제어는 읽기·쓰기가 가능하며 값 형식은 `<channel-number 0-127> <Value 0-65535>`이다. 첫 값인 채널 인덱스로 해당 믹서 채널을 읽거나 쓴다. 0~63은 입력에서 출력으로 가는 페이더이고 64~127은 재생에서 출력으로 가는 페이더다. 값 0은 채널 음소거, 32768은 증폭률 1이다.

`Chn 1-64`는 ALSA 믹서 유틸리티용 빠른 믹서로, 믹서 행렬의 재생-출력 대각선을 구현한다.

`Line Out`은 읽기·쓰기가 가능한 0/1 제어로 아날로그 출력을 켜거나 끈다. 믹싱이나 라우팅과는 무관하며 아날로그 출력은 채널 63과 64를 반영한다.

HDSPM 믹서 좌표
인덱스 / 값의미
채널 0~63입력 → 출력 페이더
채널 64~127재생 → 출력 페이더
값 0음소거
값 32768증폭률 1
값 최대 65535페이더 값 상한
Chn 1-64재생 → 출력 행렬 대각선 빠른 제어

채널 인덱스 범위와 페이더 값의 의미다.

아날로그 Line Out
Mixer 행렬채널 63/64 신호Line Out=1아날로그 출력 활성
Line Out=0아날로그 출력 비활성
Line Out 스위치믹싱·라우팅 자체는 변경하지 않음

활성화와 라우팅은 별도 동작이다.

Mixer
-----

* Mixer

  * Name -- "Mixer"

  * Access -- Read Write

  * Values - <channel-number 0-127> <Value 0-65535>


                 Here as a first value the channel-index is taken to get/set the
                 corresponding mixer channel, where 0-63 are the input to output
                 fader and 64-127 the playback to outputs fader. Value 0
                 is channel muted 0 and 32768 an amplification of  1.

* Chn 1-64

       fast mixer for the ALSA-mixer utils. The diagonal of the
       mixer-matrix is implemented from playback to output.
       

* Line Out

  * Name  -- "Line Out"

  * Access -- Read Write

  * Values -- 0 1

                 Switching on and off the analog out, which has nothing to do
                 with mixing or routing. the analog outs reflects channel 63,64.

읽기 전용 상태 정보

263-332

`System Sample Rate`는 현재 표본률을 읽는다. `External Rate`는 ALSA 명명 규칙 때문에 이 이름을 쓰지만 의미상 `Autosync Rate`이며, AutoSync에서 사용하는 외부 표본 주파수를 보고한다.

`MADI Sync Lock Status`는 MADI 입력 상태를 0=Unlocked, 1=Locked, 2=Synced로 보고한다. `Word Clock Lock Status`도 Word Clock 입력을 같은 0, 1, 2 상태로 보고한다.

`AutoSync Reference`는 현재 동기 기준을 `WordClock`, `MADI`, `None` 중 하나로 보고한다.

`RX 64ch`는 아직 구현되지 않았으며 MADI 수신기가 64채널 또는 56채널 모드인지 나타낼 예정인 항목이다. `AB_inp`는 시험되지 않았고 Auto Input에서 사용한 입력을 뜻한다.

actual Buffer Position은 구현되지 않았다. 이는 ALSA 내부 기능이므로 별도의 제어를 사용하지 않는다.

HDSPM 읽기 전용 상태
제어 / 항목상태
System Sample Rate현재 표본률읽기 전용
External RateAutoSync 외부 표본률읽기 전용
MADI Sync Lock Status0 Unlocked / 1 Locked / 2 Synced읽기
Word Clock Lock Status0 Unlocked / 1 Locked / 2 Synced읽기
AutoSync ReferenceWordClock / MADI / None읽기
RX 64ch64 / 56채널 모드미구현
AB_inpAuto Input 사용 입력미검증
actual Buffer PositionALSA 내부미구현, 제어 없음

동기화 상태와 구현 여부를 함께 정리한다.

Information (only read access)
------------------------------
 
* Sample Rate

  * Name -- "System Sample Rate"

  * Access -- Read-only

                 getting the sample rate.


* External Rate measured

  * Name -- "External Rate"

  * Access -- Read only


                 Should be "Autosync Rate", but Name used is
                 ALSA-Scheme. External Sample frequency liked used on Autosync is
                 reported.


* MADI Sync Status

  * Name -- "MADI Sync Lock Status"

  * Access -- Read

  * Values -- 0,1,2

       MADI-Input is 0=Unlocked, 1=Locked, or 2=Synced.


* Word Clock Sync Status

  * Name -- "Word Clock Lock Status"

  * Access -- Read

  * Values -- 0,1,2

       Word Clock Input is 0=Unlocked, 1=Locked, or 2=Synced.

* AutoSync

  * Name -- "AutoSync Reference"

  * Access -- Read

  * Values -- "WordClock", "MADI", "None"

                 Sync-Reference is either "WordClock", "MADI" or none.

* RX 64ch --- noch nicht implementiert

       MADI-Receiver is in 64 channel mode oder 56 channel mode.


* AB_inp   --- not tested 

                 Used input for Auto-Input.


* actual Buffer Position --- not implemented

           !!! this is a ALSA internal function, so no control is used !!!

드라이버 호출 매개변수

333-379

`index`는 길이 1~8의 정수 배열로 RME HDSPM 인터페이스의 ALSA 카드 인덱스를 지정한다. `id`는 길이 1~8의 문자열 배열로 인터페이스 ID를 지정한다. `enable`은 길이 1~8의 정수 배열로 특정 HDSPM 사운드 카드를 켜거나 끈다. 세 항목은 ALSA 표준이다.

`precise_ptr`은 길이 1~8의 정수 배열로 정밀 포인터를 켜거나 끈다. 응용 프로그램이 이 특수 동작을 지원할 때만 사용해야 한다.

`line_outs_monitor`는 길이 1~8의 정수 배열로 기본적으로 재생 스트림을 아날로그 출력으로 보낸다. 각 재생 채널을 같은 번호의 출력 채널로 믹싱·라우팅한다. 드라이버 적재 뒤 모든 채널을 음소거해야 한다는 ALSA 관례에는 어긋나지만 다른 카드에서 역사적으로 사용한 동작이라 다시 채택했다.

`enable_monitor`는 길이 1~8의 정수 배열로 채널 63/64의 Analog Out을 기본 활성화한다. 여기서는 아날로그 출력만 켜며 라우팅하지는 않는다.

HDSPM 모듈 매개변수
매개변수형식기능
indexint[1..8]ALSA 카드 인덱스
idstring[1..8]HDSPM 인터페이스 ID
enableint[1..8]카드별 활성/비활성
precise_ptrint[1..8]정밀 하드웨어 포인터
line_outs_monitorint[1..8]동일 번호 재생→출력 기본 라우팅
enable_monitorint[1..8]채널 63/64 아날로그 출력 활성, 라우팅 없음

최대 카드 8개에 적용되는 배열 옵션과 기본 역할이다.


Calling Parameter
=================

* index int array (min = 1, max = 8) 

     Index value for RME HDSPM interface. card-index within ALSA

     note: ALSA-standard

* id string array (min = 1, max = 8) 

     ID string for RME HDSPM interface.

     note: ALSA-standard

* enable int array (min = 1, max = 8)

     Enable/disable specific HDSPM sound-cards.

     note: ALSA-standard

* precise_ptr int array (min = 1, max = 8)

     Enable precise pointer, or disable.

.. note::
     note: Use only when the application supports this (which is a special case).

* line_outs_monitor int array (min = 1, max = 8)

     Send playback streams to analog outs by default.

.. note::
          note: each playback channel is mixed to the same numbered output
          channel (routed). This is against the ALSA-convention, where all
          channels have to be muted on after loading the driver, but was
          used before on other cards, so i historically use it again)



* enable_monitor int array (min = 1, max = 8)

     Enable Analog Out on Channel 63/64 by default.

.. note ::
      note: here the analog output is enabled (but not routed).