22snd-firewire-ctl-services
33========================
44
5- 2023/04/16
5+ 2023/04/19
66Takashi Sakamoto
77
88Introduction
99============
1010
11- This project is a sub project in Advanced Linux Sound Architecture a.k.a ALSA,
12- to produce userspace service daemon for Audio and Music units on IEEE 1394 bus,
13- supported by drivers in ALSA firewire stack.
11+ This project is a sub- project within Advanced Linux Sound Architecture a.k.a ALSA, aimed to provide
12+ user space service programs for Audio and Music units connected to IEEE 1394 bus, supported by
13+ drivers in ALSA firewire stack.
1414
15- Executables (binary crates)
16- ===========================
15+ The latest release is
16+ `version 0.1.0 <https://github.com/alsa-project/snd-firewire-ctl-services/releases/tag/snd-firewire-ctl-services%2Fv0.1.0 >`_.
17+
18+ The service programs are designed to operate digital signal processing function in the audio and
19+ music units connected to IEEE 1394 bus. The service programs work as
20+ `message broker <https://en.wikipedia.org/wiki/Message_broker >`_. ALSA control and sequencer
21+ applications are available as an end to communicate to the service programs. The audio and music
22+ units in IEEE 1394 bus is the opposite end. The service programs receives messages from both
23+ ends, then translates and convert the messages to send to the opposite end. The internal design of
24+ the programs are illustrated in ``Design note `` section.
25+
26+ Executables for service programs
27+ ================================
28+
29+ The project provides the following service programs in the form of Rust binary crates:
1730
1831snd-firewire-digi00x-ctl-service
1932 For sound card bound to ALSA firewire-digi00x driver (snd-firewire-digi00x)
@@ -32,98 +45,19 @@ snd-dice-ctl-service
3245snd-fireface-ctl-service
3346 For sound card bound to ALSA fireface driver (snd-fireface)
3447
35- License
36- =======
37-
38- * Some library crates are released under MIT license. They are available in `<crates.io >`_
39- as well.
40-
41- * `alsa-ctl-tlv-codec <https://crates.io/crates/alsa-ctl-tlv-codec >`_
42- * `ieee1212-config-rom <https://crates.io/crates/ieee1212-config-rom >`_
43- * `ta1394-avc-general <https://crates.io/crates/ta1394-avc-general >`_
44- * `ta1394-avc-audio <https://crates.io/crates/ta1394-avc-audio >`_
45- * `ta1394-avc-stream-format <https://crates.io/crates/ta1394-avc-stream-format >`_
46- * `ta1394-avc-ccm <https://crates.io/crates/ta1394-avc-ccm >`_
47-
48- * Some library crates for protocol implementation are released under GNU Lesser General
49- Public License v3.0 or later with respect to clause for reverse engineering. They are
50- available in `<crates.io >`_ as well.
51-
52- * `firewire-bebob-protocols <https://crates.io/crates/firewire-bebob-protocols >`_
53- * `firewire-fireworks-protocols <https://crates.io/crates/firewire-fireworks-protocols >`_
54- * `firewire-oxfw-protocols <https://crates.io/crates/firewire-oxfw-protocols >`_
55- * `firewire-dice-protocols <https://crates.io/crates/firewire-dice-protocols >`_
56- * `firewire-digi00x-protocols <https://crates.io/crates/firewire-digi00x-protocols >`_
57- * `firewire-tascam-protocols <https://crates.io/crates/firewire-tascam-protocols >`_
58- * `firewire-motu-protocols <https://crates.io/crates/firewire-motu-protocols >`_
59- * `firewire-fireface-protocols <https://crates.io/crates/firewire-fireface-protocols >`_
60-
61- * The other crates are released under GNU General Public License Version 3.
62-
63- Dependencies
64- ============
65-
66- * Rust programming language <https://www.rust-lang.org/>
67- * Cargo
68- * glib `<https://developer.gnome.org/glib/ >`_
69- * libhinawa v2.5 or later `<https://github.com/alsa-project/libhinawa >`_
70- * libhitaki v0.2 or later `<https://github.com/alsa-project/libhitaki >`_
71- * alsa-gobject v0.3 or later `<https://github.com/alsa-project/alsa-gobject/ >`_
72-
73- * The library crates enumerated in `License ` section are downloaded from `<crates.io >`_ when
74- building.
75-
76- How to build
77- ============
78-
79- Build ::
80-
81- $ cargo build
82-
83- Execute temporarily ::
84-
85- & cargo run --bin (the executable name) -- (the arguments of executable)
86-
87- All of executables can print help when either ``--help `` or ``-h `` is given as an argument of
88- command line. Additionally, either ``--log-level `` or ``-l `` is also available for runtime
89- debugging. For further information, please refer to ``Runtime debugging `` clause.
90-
91- Install executables ::
92-
93- $ cargo install --path (path to binary crate)
48+ Disclaimer
49+ ==========
9450
95- The runtime crates which provide the executables are listed below:
96-
97- snd-firewire-digi00x-ctl-service
98- ``snd-firewire-digi00x-ctl-service `` crate locates in ``runtime/digi00x ``
99- snd-firewire-tascam-ctl-service
100- ``snd-firewire-tascam-ctl-service `` crate locates in ``runtime/tascam ``
101- snd-fireworks-ctl-service
102- ``snd-fireworks-ctl-service `` crate locates in ``runtime/fireworks ``
103- snd-firewire-motu-ctl-service
104- ``snd-firewire-motu-ctl-service `` crate locates in ``runtime/motu ``
105- snd-oxfw-ctl-service
106- ``snd-oxfw-ctl-service `` crate locates in ``runtime/oxfw ``
107- snd-bebob-ctl-service
108- ``snd-bebob-ctl-service `` crate locates in ``runtime/bebob ``
109- snd-dice-ctl-service
110- ``snd-dice-ctl-service `` crate locates in ``runtime/dice ``
111- snd-fireface-ctl-service
112- ``snd-fireface-ctl-service `` crate locates in ``runtime/fireface ``
113-
114- The executable is usually installed under ``~/.cargo/bin ``, while it's possible to choose the path.
115- In detail, please refer to
116- `manual of cargo install <https://doc.rust-lang.org/cargo/commands/cargo-install.html >`_.
117-
118- Uninstall executables ::
51+ The project provides neither GUI programs nor end-user interfaces against expectation of users,
11952
120- $ cargo uninstall -p (name of runtime crate)
53+ The main motivation of project is to preserve the way (protocol) to operate the audio and music
54+ units in IEEE 1394 bus, which was defined by several vendors.
12155
12256Supported devices
12357=================
12458
125- Currently below devices are supported. If you would like to add support for
126- your device, please contact to developer.
59+ Currently below devices are supported. If you would like to add support for your device, please
60+ contact to developer.
12761
12862* snd-firewire-digi00x-ctl-service
12963
@@ -138,7 +72,7 @@ your device, please contact to developer.
13872 * Tascam FW-1884
13973 * Tascam FW-1082
14074 * Tascam FW-1804
141- * Tascam FE-8
75+ * Tascam FE-8 (work without ALSA firewire-tascam driver)
14276
14377* snd-fireworks-ctl-service
14478
@@ -155,21 +89,29 @@ your device, please contact to developer.
15589
15690* snd-firewire-motu-ctl-service
15791
158- * MOTU 828
159- * MOTU 896
160- * MOTU Traveler
161- * MOTU 828mkII
162- * MOTU 896HD
163- * MOTU UltraLite
164- * MOTU 8pre
165- * MOTU 4pre
166- * MOTU AudioExpress
167- * MOTU 828mk3 (FireWire only)
168- * MOTU 828mk3 (Hybrid)
169- * MOTU UltraLite mk3 (FireWire only)
170- * MOTU UltraLite mk3 (Hybrid)
171- * MOTU Traveler mk3
172- * MOTU Track 16
92+ * Version 1 models
93+
94+ * MOTU 828
95+ * MOTU 896
96+
97+ * Register DSP models
98+
99+ * MOTU Traveler
100+ * MOTU 828mkII
101+ * MOTU 896HD
102+ * MOTU UltraLite
103+ * MOTU 8pre
104+ * MOTU 4pre
105+ * MOTU AudioExpress
106+
107+ * Command DSP models
108+
109+ * MOTU 828mk3 (FireWire only)
110+ * MOTU 828mk3 (Hybrid)
111+ * MOTU UltraLite mk3 (FireWire only)
112+ * MOTU UltraLite mk3 (Hybrid)
113+ * MOTU Traveler mk3
114+ * MOTU Track 16
173115
174116* snd-oxfw-ctl-service
175117
@@ -242,10 +184,174 @@ your device, please contact to developer.
242184
243185* snd-fireface-ctl-service
244186
245- * Fireface 800
246- * Fireface 400
247- * Fireface UCX
248- * Fireface 802
187+ * Former models
188+
189+ * Fireface 800
190+ * Fireface 400
191+
192+ * Latter models
193+
194+ * Fireface UCX
195+ * Fireface 802
196+
197+ Restrictions
198+ ============
199+
200+ Due to a lack of information about the target devices, certain restrictions are unavoidable.
201+ However, we welcome any assistance that can enhance the project.
202+
203+ * snd-bebob-ctl-service
204+
205+ * The most of compressor, equalizer, and reverb controls are not available for Focusrite Saffire.
206+ * No control is available for un-coded devices. For example, PrismSound Orpheus is the case.
207+
208+ * snd-fireworks-ctl-service
209+
210+ * Some control is not available for Gibson Robot Interface Pack.
211+
212+ * snd-dice-ctl-service
213+
214+ * The most of equalizer controls are not available for Focusrite Saffire Pro 24 DSP.
215+ * The most of monitor parameters may not work for Alesis iO 14/26 FireWire. This may come from
216+ firmware version.
217+ * The channel strip dynamics, equalizer, and reverb are not available for Lexicon I-ONIX 810s.
218+ * No control is available for Focusrite Saffire Pro 40 (TCD3070 ASIC).
219+ * No control is available for Solid State Logic Duende Classic and Mini.
220+
221+ * snd-firewire-digi00x-ctl-service
222+
223+ * Due to hardware design, the function of DSP can not be configured unless an ALSA PCM
224+ application initiates isochronous communication.
225+
226+ * snd-firewire-tascam-ctl-service
227+
228+ * Due to hardware design, most controls are not synchronized to hardware expectedly unless an
229+ ALSA PCM application initiates isochronous communication.
230+ * For console models, any event in control surface is available via port of ALSA Sequencer. The
231+ event is converted to controller event with channel 0 which has the consecutive number as param
232+ and event value. At present, the consecutive number is fixed and not configurable.
233+
234+ * snd-motu-ctl-service
235+
236+ * Due to hardware design, most controls, including hardware metering, are not synchronized to
237+ hardware expectedly for Register DSP models unless an ALSA PCM application initiates isochronous
238+ communication.
239+ * Due to hardware design, hardware metering may not work properly for Command DSP models unless an
240+ ALSA PCM application initiates isochronous communication.
241+ * The channel positionss available in the hardware meter is not adequate in all Command DSP
242+ models.
243+ * Sometimes, there may be an issue with initializing Command DSP models for communication. In such
244+ case, the workaround is to simply restart the service program.
245+ * 896 mk3 (FireWire only/Hybrid) is not supported since developer has no change to access to it..
246+
247+ * snd-fireface-ctl-service
248+
249+ * The controls of latter models are not synchronized to any operation by the Remote Control or
250+ the Advanced Remote Control.
251+
252+ Support
253+ =======
254+
255+ * If finding any issue, please file it to
256+ `github repository <https://github.com/alsa-project/snd-firewire-ctl-services >`_.
257+
258+ License
259+ =======
260+
261+ * Some library crates are released under MIT license. They are available in `<crates.io >`_
262+ as well.
263+
264+ * `alsa-ctl-tlv-codec <https://crates.io/crates/alsa-ctl-tlv-codec >`_
265+ * `ieee1212-config-rom <https://crates.io/crates/ieee1212-config-rom >`_
266+ * `ta1394-avc-general <https://crates.io/crates/ta1394-avc-general >`_
267+ * `ta1394-avc-audio <https://crates.io/crates/ta1394-avc-audio >`_
268+ * `ta1394-avc-stream-format <https://crates.io/crates/ta1394-avc-stream-format >`_
269+ * `ta1394-avc-ccm <https://crates.io/crates/ta1394-avc-ccm >`_
270+
271+ * Some library crates for protocol implementation are released under GNU Lesser General
272+ Public License v3.0 or later with respect to clause for reverse engineering. They are
273+ available in `<crates.io >`_ as well.
274+
275+ * `firewire-bebob-protocols <https://crates.io/crates/firewire-bebob-protocols >`_
276+ * `firewire-fireworks-protocols <https://crates.io/crates/firewire-fireworks-protocols >`_
277+ * `firewire-oxfw-protocols <https://crates.io/crates/firewire-oxfw-protocols >`_
278+ * `firewire-dice-protocols <https://crates.io/crates/firewire-dice-protocols >`_
279+ * `firewire-digi00x-protocols <https://crates.io/crates/firewire-digi00x-protocols >`_
280+ * `firewire-tascam-protocols <https://crates.io/crates/firewire-tascam-protocols >`_
281+ * `firewire-motu-protocols <https://crates.io/crates/firewire-motu-protocols >`_
282+ * `firewire-fireface-protocols <https://crates.io/crates/firewire-fireface-protocols >`_
283+
284+ * The other crates are for runtime and released under GNU General Public License Version 3.
285+
286+ Dependencies
287+ ============
288+
289+ * Rust programming language <https://www.rust-lang.org/> v1.65 or later.
290+ * Cargo
291+ * glib `<https://developer.gnome.org/glib/ >`_
292+ * libhinawa v2.5 or later `<https://github.com/alsa-project/libhinawa >`_
293+ * libhitaki v0.2 or later `<https://github.com/alsa-project/libhitaki >`_
294+ * alsa-gobject v0.3 or later `<https://github.com/alsa-project/alsa-gobject/ >`_
295+
296+ * The library crates enumerated in `License ` section are downloaded from `<crates.io >`_ when
297+ building by configurations of `Cargo.toml `.
298+
299+ How to build
300+ ============
301+
302+ Build ::
303+
304+ $ cargo build
305+
306+ Execute temporarily ::
307+
308+ & cargo run --bin (the executable name) -- (the arguments of executable)
309+
310+ All of executables can print help when either ``--help `` or ``-h `` is given as an argument of
311+ command line. In the most executables, the first positional argument is the numeric identifier of
312+ sound card in Linux sound subsystem. For further information, please refer to ``Runtime debugging ``
313+ clause.
314+
315+ Install executables ::
316+
317+ $ cargo install --path (path to binary crate)
318+
319+ The runtime crates which provide the executables are listed below:
320+
321+ snd-firewire-digi00x-ctl-service
322+ ``snd-firewire-digi00x-ctl-service `` crate locates in ``runtime/digi00x ``
323+ snd-firewire-tascam-ctl-service
324+ ``snd-firewire-tascam-ctl-service `` crate locates in ``runtime/tascam ``
325+ snd-fireworks-ctl-service
326+ ``snd-fireworks-ctl-service `` crate locates in ``runtime/fireworks ``
327+ snd-firewire-motu-ctl-service
328+ ``snd-firewire-motu-ctl-service `` crate locates in ``runtime/motu ``
329+ snd-oxfw-ctl-service
330+ ``snd-oxfw-ctl-service `` crate locates in ``runtime/oxfw ``
331+ snd-bebob-ctl-service
332+ ``snd-bebob-ctl-service `` crate locates in ``runtime/bebob ``
333+ snd-dice-ctl-service
334+ ``snd-dice-ctl-service `` crate locates in ``runtime/dice ``
335+ snd-fireface-ctl-service
336+ ``snd-fireface-ctl-service `` crate locates in ``runtime/fireface ``
337+
338+ The executable is usually installed under ``~/.cargo/bin ``, while it's possible to choose the path.
339+ In detail, please refer to
340+ `manual of cargo install <https://doc.rust-lang.org/cargo/commands/cargo-install.html >`_.
341+
342+ Uninstall executables ::
343+
344+ $ cargo uninstall -p (name of runtime crate)
345+
346+ Runtime debugging
347+ =================
348+
349+ All executables support an option for log level for debugging. When either ``-l `` or
350+ ``--log-level `` is given with log level, they prints verbose logs to standard output.
351+ At present, ``debug `` is just supported for the log level.
352+
353+ This function is implemented by `tracing <https://crates.io/crates/tracing >`_ and
354+ `tracing-subscriber <https://crates.io/crates/tracing-subscriber >`_ crates.
249355
250356Supported protocols
251357===================
@@ -271,16 +377,6 @@ Supported protocols
271377 * Protocol for former models of Fireface series of RME GmbH
272378 * Protocol for latter models of Fireface series of RME GmbH
273379
274- Runtime debugging
275- =================
276-
277- All executables support an option for log level for debugging. When either ``-l `` or
278- ``--log-level `` is given with log level, they prints verbose logs to standard output.
279- At present, ``debug `` is just supported for the log level.
280-
281- This function is implemented by `tracing <https://crates.io/crates/tracing >`_ and
282- `tracing-subscriber <https://crates.io/crates/tracing-subscriber >`_ crates.
283-
284380Design note
285381===========
286382
0 commit comments