Crates.io | firewire-digi00x-protocols |
lib.rs | firewire-digi00x-protocols |
version | 0.2.0 |
source | src |
created_at | 2022-08-05 07:18:04.355429 |
updated_at | 2023-04-18 12:04:17.800139 |
description | Implementation of protocol for Digi 00x family |
homepage | https://alsa-project.github.io/gobject-introspection-docs/ |
repository | https://github.com/alsa-project/snd-firewire-ctl-services |
max_upload_size | |
id | 639189 |
size | 18,487 |
The library crate includes implementation of protocol for Digidesign Digi 00x family, designed to audio and music unit in IEEE 1394 bus.
As of 2022, Digidesign is one of brands managed by Avid Technology. Digi 002 was launched in 2002 as console model with audio interface. In 2003, Digi 002 Rack were launched as rack model. Digi 003 and 003 Rack were launched in 2007.
The above models support mostly the same protocol to configure internal functions by asynchronous transaction as well as audio data streaming by isochronous communication.
Digi 001 is out of target since it's not the system connected to IEEE 1394 bus.
Linux sound subsystem, a.k.a ALSA, provides loadable kernel module (snd-firewire-digi00x
) as
driver for the units. The driver maintains isochronous packet streams for audio frames and MIDI
messages as well as notification mechanism by asynchronous transaction since the other internal
function such as digital signal processing can be operated by user space application directly.
The driver allows the application to read the notification by executing system call.
hitaki library has
SndDigi00x
GObject class for the purpose, while the crate is still independent of the library
to delegate the task to read the notification message into application program.
The crate is supplemental implementation for runtime program to operate the internal functions except for isochronous packet streams.
This is the list of dependent crates.
The glib and hinawa crates require some underlying system libraries
The functions of Linux FireWire subsystem is called via hinawa crate and library to communicate with node in IEEE 1394 bus, thus the crate is not portable.
This is the list of models currently supported.
The crate is developed and maintained by ALSA GObject Introspection team for snd-firewire-ctl-services project, and not stable yet. The included Rust elements are likely changed without backward compatibility.
The crate is released under GNU Lesser General Public License v3.0 or later with respect to clause for reverse engineering.
If finding issue, please file it in https://github.com/alsa-project/snd-firewire-ctl-services/.
The implementation of protocol is developed by the way of reverse engineering; sniffing IEEE 1394 bus to which target device is connected, and analysis of the communication between the device and driver provided by hardware vendor. It's natural not to work with your device since developer worked with blackbox.