alsa-project / snd-firewire-ctl-services Goto Github PK
View Code? Open in Web Editor NEWA set of server programs for audio and music units on IEEE 1394 bus supported by Linux sound subsystem a.k.a. ALSA.
License: GNU General Public License v3.0
A set of server programs for audio and music units on IEEE 1394 bus supported by Linux sound subsystem a.k.a. ALSA.
License: GNU General Public License v3.0
The gtk-rs project released glib crate version 0.17, which requires rustc version 1.64 or later as Minimum Supported Rust Version (MSRV):
The project still uses glib crate version v0.15 or later. This is due to my environment to work for it (Ubuntu 22.10, rustc version 1.61.0).
When upgrading the environment in which rustc version 1.64 or later is available, let me introduce the latest version of glib crate. I think crates in hinawa-rs
and alsa-gobject
should be also upgraded as well.
Trying to revive old "M-Audio ProFire LightBridge" interface.
It's attached using adat to one PreSonus Digimax FS (I also have a Behringer Ultragain Pro-8 and an Expert Sleepers ES-3 with adat)
no-name Firewire pci-e interface (VIA VT6307 + asmedia asm1083 ICs)
motherboard is an ASRock Phantom Gaming 4 / AMD X570
CPU is a Ryzen 7 3700x
RAM is 2x16GB Corsair CMK32GX4M2B3200C16
uname -a
Linux debian 5.10.0-8-amd64 #1 SMP Debian 5.10.46-1 (2021-06-24) x86_64 GNU/Linux
lspci |grep -i firewire
05:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev 80)
I get a Kernel Panic when I turn on the "M-Audio ProFire LightBridge".
[ 96.930836] mce: [Hardware Error]: CPU 6: Machine Check Exception: 7 Bank 0: bc002800000c0135
[ 96.930837] mce: [Hardware Error]: RIP 10:ffffffffc025b08a> {get_cycle_time+0x2a/0x120 [firewire_ohci]}
[ 96.930838] mce: [Hardware Error]: TSC 69e4ebbb40 ADDR fc7000c0 MISC d01a0ffe00000000 IPID b000000000
[ 96.930840] mce: [Hardware Error]: PROCESSOR 2:870f10 TIME 1626800481 SOCKET 0 APIC c microcode 8701021
[ 96.930840] Kernel panic - not syncing: Fatal local machine check
[ 96.931077] Kernel Offset: 0x2b000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
The "M-Audio ProFire LightBridge" crashes Windows 10 too using the M-Audio drivers for windows 7 SP1 (released 06/02/2012)
I can set the sample rate and sync and change the LED's accordingly on the ProFire. But when i try sending audio to it, windows crashes.
https://m-audio.com/support/download/drivers/firewire-installer-6.0.4-driver-5.10.0.5061
I don't have other firewire devices for testing the VIA firewire adapter.
Am I missing something obvious?
Any tips on how to proceed ?
Hello,
Thank you for all your work on the firewire audio drivers!
I have successfully installed the snd-firewire-improve drivers for my DIGI 002 Rack. I have some success using the device with snd-firewire-improve but I am getting a lot of xruns and choppy audio when using with jack2. I am now trying to build & install the snd-firewire-ctl-services as I hope that will help the device work better. Part of my problem is that I do not have any previous experience with the rust language. When I try to install the hinawa-rs and alsa-gobject-rs packages I get the following message:
$ cargo install --git https://github.com/alsa-project/hinawa-rs.git
Updating git repository https://github.com/alsa-project/hinawa-rs.git
error: no packages found with binaries or examples
$ cargo install --git https://github.com/alsa-project/alsa-gobject-rs.git
Updating git repository https://github.com/alsa-project/alsa-gobject-rs.git
error: no packages found with binaries or examples
thus when trying to build snd-firewire-ctl-services:
$ cargo build
Compiling hinawa-sys v0.4.0 (https://github.com/alsa-project/hinawa-rs.git?tag=v0.4.0#6865cfd3)
Compiling alsatimer-sys v0.2.0 (https://github.com/alsa-project/alsa-gobject-rs.git?tag=v0.2.0#fcab3654)
error: failed to run custom build command for hinawa-sys v0.4.0 (https://github.com/alsa-project/hinawa-rs.git?tag=v0.4.0#6865cfd3)
Caused by:
process didn't exit successfully: /usr/local/src/snd-firewire-ctl-services/snd-firewire-ctl-services/target/debug/build/hinawa-sys-d6c0ffcaf03d9fbd/build-script-build
(exit status: 1)
--- stdout
cargo:rerun-if-env-changed=HINAWA_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=HINAWA_STATIC
cargo:rerun-if-env-changed=HINAWA_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
--- stderr
"pkg-config" "--libs" "--cflags" "hinawa" "hinawa >= 2.3"
did not exit successfully: exit status: 1
error: could not find system library 'hinawa' required by the 'hinawa-sys' crate
--- stderr
Package hinawa was not found in the pkg-config search path.
Perhaps you should add the directory containing hinawa.pc' to the PKG_CONFIG_PATH environment variable No package 'hinawa' found Package hinawa was not found in the pkg-config search path. Perhaps you should add the directory containing
hinawa.pc'
to the PKG_CONFIG_PATH environment variable
No package 'hinawa' found
warning: build failed, waiting for other jobs to finish...
error: build failed
If you can please offer me some guidance regarding how to resolve this error I would be very appreciative.
Thank you for your time.
-David
When I try to launch cargo run --bin snd-dice-ctl-service
I got this error:
Finished dev [unoptimized + debuginfo] target(s) in 0.08s
Running `/home/pszemo/programowanie/snd-firewire-ctl-services/target/debug/snd-dice-ctl-service`
/home/pszemo/programowanie/snd-firewire-ctl-services/target/debug/snd-dice-ctl-service: error while loading shared libraries: libalsaseq.so.0: cannot open shared object file: No such file or directory
How can I link libalsaseq so that main program would see it? I mean I checked and I have libalsaseq installed (whereis libalsaseq
):
libalsaseq: /usr/local/lib/x86_64-linux-gnu/libalsaseq.so
When muting an output channel via TotalMix FX on Windows and booting into Linux, the channel's output volume control in ALSA doesn't have any effect on the output volume of the muted channel and no audio is coming out of the output anymore.
Booting into Windows and unmuting the channel in TotalMix FX makes ALSA's channel output volume control have an effect on the output again and audio send to that output actually comes out of the Fireface 802.
Since no mute-related parameter can be found in the alsa controls, I wonder if it has been overlooked and is something stored in the hardware's device state.
Hi,
I've installed all dependencies and E0308 appears when running the cargo build command. How can I fix it?
error[E0308]: mismatched types
--> /home/sse_021/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hitaki-0.3.0/src/enums.rs:14:72
|
14 | ffi::hitaki_alsa_firewire_error_to_label(self.into_glib(), &mut ptr);
| ---------------------------------------- ^^^^^^^^ expected `*mut *const u8`, found `&mut *const i8`
| |
| arguments to this function are incorrect
|
= note: expected raw pointer `*mut *const u8`
found mutable reference `&mut *const i8`
note: function defined here
--> /home/sse_021/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hitaki-sys-0.3.0/src/lib.rs:560:12
|
560 | pub fn hitaki_alsa_firewire_error_to_label(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0308]: mismatched types
--> /home/sse_021/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hitaki-0.3.0/src/enums.rs:15:38
|
15 | std::ffi::CStr::from_ptr(ptr).to_str().unwrap()
| ------------------------ ^^^ expected `*const u8`, found `*const i8`
| |
| arguments to this function are incorrect
|
= note: expected raw pointer `*const u8`
found raw pointer `*const i8`
note: associated function defined here
--> /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/ffi/c_str.rs:262:25
error[E0308]: mismatched types
--> /home/sse_021/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hitaki-0.3.0/src/enums.rs:29:71
|
29 | ffi::hitaki_efw_protocol_error_to_label(self.into_glib(), &mut ptr);
| --------------------------------------- ^^^^^^^^ expected `*mut *const u8`, found `&mut *const i8`
| |
| arguments to this function are incorrect
|
= note: expected raw pointer `*mut *const u8`
found mutable reference `&mut *const i8`
note: function defined here
--> /home/sse_021/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hitaki-sys-0.3.0/src/lib.rs:575:12
|
575 | pub fn hitaki_efw_protocol_error_to_label(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0308]: mismatched types
--> /home/sse_021/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hitaki-0.3.0/src/enums.rs:30:38
|
30 | std::ffi::CStr::from_ptr(ptr).to_str().unwrap()
| ------------------------ ^^^ expected `*const u8`, found `*const i8`
| |
| arguments to this function are incorrect
|
= note: expected raw pointer `*const u8`
found raw pointer `*const i8`
note: associated function defined here
--> /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/ffi/c_str.rs:262:25
For more information about this error, try `rustc --explain E0308`.
error: could not compile `hitaki` (lib) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
Hello,
I get the following error while trying to start the driver for the Apogee Duet audio interface. JACK has been working well with it.
$ cargo run --bin snd-oxfw-ctl-service 2
Finished dev [unoptimized + debuginfo] target(s) in 0.07s
Running `target/debug/snd-oxfw-ctl-service 2`
Linux file operation error: , Configuration ROM is not for 1394TA standard
Usage:
snd-oxfw-ctl-service CARD_ID
where
CARD_ID: The numeric ID of sound card
Hello.
Thanks for these new project(s) for firewire alsa. Just trying to compile / install this one. However at the very end (after compile success), then the linker cannot find references. And fails... not sure what is missing here.
Of course we have lots of build dependancies. Some other rust crates, and some C libraries. (and with GIR bridge to rust). Unfortunately I cannot seem to find what is missing anymore.
Here is the full cmdline I ran, which includes compiling deps (but is it complete?)
https://gist.github.com/dreamcat4/5ac66878e6eea10f80d5911d9cd398fb
and here is the full build log:
https://gist.github.com/dreamcat4/5ac66878e6eea10f80d5911d9cd398fb
The actual 1st linker error msg you can see at the end of the build log. It repeats several times (similar linker failure msgs):
Compiling bebob-runtime v0.1.0 (/home/id/.builds/firewire/snd-firewire-ctl-services/libs/bebob/runtime)
Compiling snd-firewire-ctl-services v0.1.0 (/home/id/.builds/firewire/snd-firewire-ctl-services/services)
error: linking with `cc` failed: exit status: 1
|
= note: "cc" "-m64" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.149zzcjbv56j4h9c.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.15bcccdujk8anvpn.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.1dkc290id8qs1nrk.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.1euf7gb6rb4bldpx.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.1jtkey3ugc56h56v.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.1y180ifhlt29a2vn.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.1ypmklp8iufifcg9.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.248cyhx70a3l0itz.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.28gjq4vdsi6g8958.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.2rqo7hb48i5469ye.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.2s7s0qksnnmlhqnn.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.2sg9z5wuy5ptlz5x.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.2zb1uxr7fwomemk7.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.389bhfpa12rfuqx.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.38bypb4ujl310epz.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.3hteldkqhqv4g3xh.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.3jedo1dsc78c0ngz.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.3pm8l4ewx662yl1w.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.3q3qr1yg5vcsukml.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.3qrpingcq5oi88o7.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.4b9f35e1eylytbri.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.4epb17s3w5rq1qw1.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.4f5s6kzbgmju3wen.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.54hdwmhmq6cl21eo.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.5cnq3izmc17ajbo6.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.5ef4xaeyydu4xy51.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.5fqgkfm0n2wjdxyo.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.dfjv5xwijcp53y0.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.qd845v15ezt5azu.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.s3qs0ht5hxre3zb.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.wzpzjwn440oyxig.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218.3z3j97lciof5wazm.rcgu.o" "-Wl,--as-needed" "-L" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps" "-L" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libsnd_firewire_ctl_services-fbb30fbec426a2eb.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/liboxfw_runtime-0838c256185504bc.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libcore-aa20d5b369e23417.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libnix-ef06e6d3e7763292.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libvoid-a21a3b904291c39d.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libcfg_if-9e5685c44d76ca0a.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libhitaki-4fa079e67c43bb39.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libhitaki_sys-900a3d4fcb04bb8b.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsaseq-181f56210b62c914.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsatimer-9a085c07a4b46580.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsaseq_sys-4160724151dbbb14.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsatimer_sys-542c83c522c7d68a.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsactl-52e6e4bfb90a79d7.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsactl_sys-e839080ad4ee5791.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/liboxfw_protocols-1cc98a9baa69cbf0.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libta1394-0fc30e7b5366b78c.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libieee1212_config_rom-d55d85c2a99a8f0c.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libhinawa-025621909f160445.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libhinawa_sys-14494471e11ed3ee.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libglib-9ef6468032042fe7.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libfutures_executor-fcd2ae7ca6ac9fe6.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libfutures_util-db4e8cf953b16973.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libslab-de332a61ef2f015a.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libpin_project_lite-567c09aa5c2806c0.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libpin_utils-7b37542bd86a85d7.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libfutures_task-df76de6971600cc5.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libfutures_channel-e9560b5f01db246a.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libfutures_core-f1562aab75d97baf.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libgobject_sys-bccda11dc39aacba.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libglib_sys-baa5727c880f0fb7.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libonce_cell-58ce2c539dbc1068.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/liblibc-73c8e2e6776f5bc1.rlib" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libbitflags-462dfa36d3305633.rlib" "-Wl,--start-group" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-05b39ac0cb4c5688.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-ccaa149b737d6503.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-a94a6388c153126b.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-1ecfa264246b85c6.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-ee710154a50440b8.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-f09986d873ea8592.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-f3521e20c99619ab.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-df6036c77d75ce21.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-24f91c1a1dfc7e13.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-bffcc61991adb202.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-cf22313353d8663e.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-c45fb100f99430e9.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-0cdc47a8a81950ea.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-f1e158606c4c82f6.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-0b608b5ef4df0ec4.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-b8438dc0bcbbcc08.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-70e2ae036775ff2f.rlib" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-815d281f7068a893.rlib" "-Wl,--end-group" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-377835cfab8dae0d.rlib" "-Wl,-Bdynamic" "-lhitaki" "-lalsaseq" "-lalsatimer" "-lalsactl" "-lhinawa" "-lgobject-2.0" "-lglib-2.0" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/id/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_oxfw_ctl_service-9fed2f17fc089218" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs"
= note: /usr/bin/ld: /home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/liboxfw_runtime-0838c256185504bc.rlib(oxfw_runtime-0838c256185504bc.2lz9x506z170dgkk.rcgu.o): in function `<O as alsactl::auto::elem_info::ElemInfoExt>::set_enum_data':
/home/id/.cargo/git/checkouts/alsa-gobject-rs-c7fcb4b1481d0cb3/fcab365/alsactl/src/auto/elem_info.rs:87: undefined reference to `alsactl_elem_info_set_enum_data'
/usr/bin/ld: /home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libcore-aa20d5b369e23417.rlib(core-aa20d5b369e23417.ie2ewgu0r85cjqo.rcgu.o): in function `<O as alsactl::elem_info::ElemInfoExtManual>::set_int_data':
/home/id/.cargo/git/checkouts/alsa-gobject-rs-c7fcb4b1481d0cb3/fcab365/alsactl/src/elem_info.rs:39: undefined reference to `alsactl_elem_info_set_int_data'
/usr/bin/ld: /home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsactl-52e6e4bfb90a79d7.rlib(alsactl-52e6e4bfb90a79d7.alsactl.ac907637-cgu.14.rcgu.o): in function `alsactl::auto::elem_info::ElemInfo::new':
/home/id/.cargo/git/checkouts/alsa-gobject-rs-c7fcb4b1481d0cb3/fcab365/alsactl/src/auto/elem_info.rs:38: undefined reference to `alsactl_elem_info_new'
/usr/bin/ld: /home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/libalsactl-52e6e4bfb90a79d7.rlib(alsactl-52e6e4bfb90a79d7.alsactl.ac907637-cgu.14.rcgu.o): in function `<alsactl::auto::elem_info::ElemInfo as glib::types::StaticType>::static_type':
/home/id/.cargo/git/checkouts/alsa-gobject-rs-c7fcb4b1481d0cb3/fcab365/alsactl/src/auto/elem_info.rs:30: undefined reference to `alsactl_elem_info_get_type'
collect2: error: ld returned 1 exit status
= help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
= note: use the `-l` flag to specify native libraries to link
= note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)
error: could not compile `snd-firewire-ctl-services` due to previous error
warning: build failed, waiting for other jobs to finish...
error: linking with `cc` failed: exit status: 1
|
= note: "cc" "-m64" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_firewire_digi00x_ctl_service-4c21db3479d85c3b.179e73j2590yzb81.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_firewire_digi00x_ctl_service-4c21db3479d85c3b.1951dgyrovosts3.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_firewire_digi00x_ctl_service-4c21db3479d85c3b.1d2uqv3r930z5eho.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_firewire_digi00x_ctl_service-4c21db3479d85c3b.1gybq3mrh0pnthig.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/target/debug/deps/snd_firewire_digi00x_ctl_service-4c21db3479d85c3b.25dnx49qgwm647fc.rcgu.o" "/home/id/.builds/firewire/snd-firewire-ctl-services/ta
Hello,
I cannot change some settings in Alsamixer.
compressor-attack - value cannot be changed
compressor-enable - value cannot be changed (stuck at 0M (on))
equalizer-enable - value cannot be changed (stuck at MM (off))
metering -value cannot be changed (stuck at MM (off))
mixer-out-saturation - all 5 settings (front,back, etc.)- value cannot be changed (stuck at MM (off))
mixer-source-meter - all 5 settings (front,back, etc.)- value cannot be changed (stuck at 0<>0 )
output-source-meter - all 5 settings (front,back, etc.)- value cannot be changed (stuck at 0<>0 )
reverb-enable - value cannot be changed (stuck at MM (off))
stream-source-meter - all 5 settings (front,back, etc.)- value cannot be changed (stuck at 0<>0 )
Also not shure if that is correct, all on/off settings for compressor, reverb, equalizer etc. are on the play side only. They cannot be found on the record side in alsamixer.
regards
Hi,
I am on AVLinux which is a custom rolled debian flavour of GNU/Linux, which has a large user base for pro-audio.
I cannot install the required core dependency stack for this mixer software because its on an outdated version of Debian (and all the deps are very new). It's a lot of work to compile this project from source:
First you need to get glib from the repo, gobject-introspection isn't detected even when installed,
then you need to compile libhitaki and libhinawa etc etc.
My main qualm with this project is that the dependencies are very fragmented, when all I really need is a CLI binary
that controls my firewire mixer.
Would it be possible to statically compile a binary and add it to the release so users can just grab this if they just want to use it standalone?
Thanks,
Hello
The driver works well with the fireface 802 with a buffer size of 256 or 64 and Periods = 2,
but there is an error when the buffer size = 128, and periods = 2.
Here are the error logs:
Starting jack server...
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
Acquired audio card Audio5
creating alsa driver ... hw:Fireface802,0|hw:Fireface802,0|128|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 128 frames (2.7 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ERROR: ALSA: cannot set hardware parameters for capture
ERROR: ALSA: cannot configure capture channel
Released audio card Audio5
ERROR: Cannot initialize driver
ERROR: JackServer::Open failed with -1
ERROR: Failed to open server
This works fine when the buffer size = 128, and periods = 4.
The ffado-mixer does not show these either, but using things like ffado-test does. The Windows GUI also shows gang switches across each pair of channels. I suspect that this is the reason the pan controls act like balance controls rather than pan controls. I will note that when using the ffado drivers, the pan controls do work as expected. So the gang switches seem to be set by default in the alsa driver. For the kind of mixing this internal mixer is made to be used for, mono inputs to stereo outputs would make more sense at least for control room monitoring but for performer personal monitoring mono outs would be useful too. So being able to switch each one would be helpful. Perhaps a better method is to set no groups as balance can be effected with changing left/right levels. So I don't know if this is a bug with this software or the snd-fireworks kernel module.
Hello,
First thank you again for this great project.
I use the driver with a fireface 802 and 2x 8 channels input adat converters (aphex 142) and it works really well.
I think I noticed a bug on the headphone output:
2
, which is the speaker output and should not be routed to the headphone.Hello again,
This is for saffire-pro 40 (dice)... When i run the following cmdline:
amixer -c2 sget stream-source,0
Simple mixer control 'stream-source',0
Capabilities: enum
Items: 'None' 'Analog-B-0' 'Analog-B-1' 'Analog-B-2' 'Analog-B-3' 'Analog-B-4' 'Analog-B-5' 'S/PDIF-coax-0' 'S/PDIF-coax-1' 'ADAT-0' 'ADAT-1' 'ADAT-2' 'ADAT-3' 'ADAT-4' 'ADAT-5' 'ADAT-6' 'ADAT-7' 'S/PDIF-opt-0' 'S/PDIF-opt-1' 'Mixer-0' 'Mixer-1' 'Mixer-2' 'Mixer-3' 'Mixer-4' 'Mixer-5' 'Mixer-6' 'Mixer-7' 'Mixer-8' 'Mixer-9' 'Mixer-10' 'Mixer-11' 'Mixer-12' 'Mixer-13' 'Mixer-14' 'Mixer-15'
Item0: 'Analog-B-0'
Item1: 'Analog-B-1'
Item2: 'Analog-B-2'
Item3: 'Analog-B-3'
Item4: 'Analog-B-4'
Item5: 'Analog-B-5'
Item6: 'None'
Item7: 'None'
Item8: 'S/PDIF-coax-0'
Item9: 'S/PDIF-coax-1'
Item10: 'ADAT-0'
Item11: 'ADAT-1'
Item12: 'ADAT-2'
Item13: 'ADAT-3'
Item14: 'None'
Item15: 'None'
Item16: 'None'
Item17: 'None'
Item18: 'None'
Item19: 'None'
Item20: 'None'
Item21: 'None'
Item22: 'None'
Item23: 'None'
Item24: 'None'
Item25: 'None'
it seems like only the 1st 6 anaglog input channels are being routed. This seems to concur with my early initial test (which is not verified again)... where i did not get loopback working on the last 2 analog inputs (channels 7 and 8). But there was a working signal on the 1st six (6) audio input channels.
So it seems like this is the setting for routing those inputs... at least until I do some further testing to be sure. And double check.
Anyhow I was just wondering why is only defined as ENUM values the 1st 6 channels here
Item0: 'Analog-B-0'
Item1: 'Analog-B-1'
Item2: 'Analog-B-2'
Item3: 'Analog-B-3'
Item4: 'Analog-B-4'
Item5: 'Analog-B-5'
Item6: 'None'
Item7: 'None'
and why is not exist in the interface those last 2 channels. Which would otherwise be expected as further enum label Analog-B-6
and Analog-B-7
.
I can see here in the rust code a reference to the string stream-source
= const ROUTER_CAP_SRC_NAME
being defined here:
so it looks like new
and old
are the string on cmdline
which then must be convert to actual enum (or uint32
/ <u32>
whatever)
and you get_vals()
from the self
object or wherever is being held some lookup table.
However I cannot actually find where is the enum definition (maybe in a C lib after bindings / GIR ?). To then see and know why is not exist those last 2 input channels (of 7 and 8 on the saffire pro 40 hardware, they are physical analog XLR inputs).
It would be nice to know! Many thanks
Hi
So this is quite a great project and nice to see that your be-bob have listed the terrated aureron 7.1 . But i do wonder how is the use of the firmware ? Is that installing will list all available input of the terrated over Alsa and in order to 'select' the proper input : you enable the one in the list... as result : this will change input on the unit ?
Thanks in advance
Hello Takashi,
Me again with noob questions :).
I try to make the fireface 802 work on Fedora.
If I don't install any specific library on the system, I can see the fireface 802 in Bitwig preferences and configure the audio inputs and outputs. However there is no audio going through.
Is it normal?
To fix it I try to install snd-fireface-ctl-service
.
I installed the dependencies (rust and cargo, libinawa, libitaki and alsa-gobject).
Howevere when I do snd-fireface-ctl-service 0
,
There is an error : snd-fireface-ctl-service: error while loading shared libraries: libhitaki.so.0: cannot open shared object file: No such file or directory
.
libhitaki.so.0
is installed.
ls -la /usr/local/lib64/
total 1388
drwxr-xr-x. 1 root root 750 11 févr. 14:19 .
drwxr-xr-x. 1 root root 90 9 août 2022 ..
drwxr-xr-x. 1 root root 0 9 août 2022 bpf
drwxr-xr-x. 1 root root 278 11 févr. 14:19 girepository-1.0
lrwxrwxrwx. 1 root root 15 11 févr. 14:07 libalsactl.so -> libalsactl.so.0
lrwxrwxrwx. 1 root root 19 11 févr. 14:07 libalsactl.so.0 -> libalsactl.so.0.3.0
-rwxr-xr-x. 1 root root 215304 11 févr. 14:06 libalsactl.so.0.3.0
lrwxrwxrwx. 1 root root 17 11 févr. 14:07 libalsahwdep.so -> libalsahwdep.so.0
lrwxrwxrwx. 1 root root 21 11 févr. 14:07 libalsahwdep.so.0 -> libalsahwdep.so.0.3.0
-rwxr-xr-x. 1 root root 74208 11 févr. 14:06 libalsahwdep.so.0.3.0
lrwxrwxrwx. 1 root root 19 11 févr. 14:07 libalsarawmidi.so -> libalsarawmidi.so.0
lrwxrwxrwx. 1 root root 23 11 févr. 14:07 libalsarawmidi.so.0 -> libalsarawmidi.so.0.3.0
-rwxr-xr-x. 1 root root 115072 11 févr. 14:06 libalsarawmidi.so.0.3.0
lrwxrwxrwx. 1 root root 15 11 févr. 14:07 libalsaseq.so -> libalsaseq.so.0
lrwxrwxrwx. 1 root root 19 11 févr. 14:07 libalsaseq.so.0 -> libalsaseq.so.0.3.0
-rwxr-xr-x. 1 root root 333720 11 févr. 14:07 libalsaseq.so.0.3.0
lrwxrwxrwx. 1 root root 17 11 févr. 14:07 libalsatimer.so -> libalsatimer.so.0
lrwxrwxrwx. 1 root root 21 11 févr. 14:07 libalsatimer.so.0 -> libalsatimer.so.0.3.0
-rwxr-xr-x. 1 root root 166112 11 févr. 14:06 libalsatimer.so.0.3.0
lrwxrwxrwx. 1 root root 14 11 févr. 14:11 libhinawa.so -> libhinawa.so.2
lrwxrwxrwx. 1 root root 18 11 févr. 14:11 libhinawa.so.2 -> libhinawa.so.2.5.1
-rwxr-xr-x. 1 root root 239944 11 févr. 14:11 libhinawa.so.2.5.1
lrwxrwxrwx. 1 root root 14 11 févr. 14:19 libhitaki.so -> libhitaki.so.0
lrwxrwxrwx. 1 root root 18 11 févr. 14:19 libhitaki.so.0 -> libhitaki.so.0.1.1
-rwxr-xr-x. 1 root root 204072 11 févr. 14:10 libhitaki.so.0.1.1
drwxr-xr-x. 1 root root 152 11 févr. 14:19 pkgconfig
How can I make this work?
Thank you
Hi,
I tried to build snd-firewire-ctl-services with the command below and failed.
root@darkstar:/tmp/snd-firewire-ctl-services-master# cargo build 2>./log
The command gave me a very long error log attouched below .
I'm sorry I can't read what was wrong from the log because I have no knowledge of the cargo build system.
Of course, before building it, I had installed its dependencies, the latest version of libhinawa, libhitaki and alsa-gobject under /usr/local.
I would appreciate any advice or suggestions for the proper build.
Thanks,
Susie B.
There is a whole other set of controls which ffado-mixer calls "Pad" but the Windows GUI calls "+4" that are missing. I think calling them +4 (or maybe -10) is better because the outputs work opposite to the inputs. That is, for inputs, turning this on in ffado-mixer makes the input level go up (that would seem to indicate on is for -10 signals). For outputs, turning this on makes the the level go down so again -10. The values from the device may say pro/consumer, Pro devices run at +4 while consumer devices run at -10.
The input switches would be more important that the output switches as a large input could overload the analog portion of the preamp. The pad to set inputs to +4 mode should be passive and come before the preamp. (not saying I know this is true in fact, the delta series cards just set the input/output levels differently (at least the D44/66)
Hi there! Thanks for all the work supporting firewire devices.
I confirmed I can use the PreSonus Firebox hardware DSP mixer via libffado v2.4.7 but wanted to see if I could get it running with ALSA. I'm somewhat familiar with Linux audio internals but wanted to file an issue in case I'm missing something obvious in either building the project or invoking it.
I built the following:
Here's my output:
$ snd-bebob-ctl-service -l debug 0
2023-07-03T20:31:42.741987Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=MediaClockParameters { freq_idx: 1 } res=Ok(())
2023-07-03T20:31:42.748050Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=SamplingClockParameters { src_idx: 0 } res=Ok(())
2023-07-03T20:31:42.781479Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLevelParameters { levels: [0, 0, 0, 0, 0, 0] } res=Ok(())
2023-07-03T20:31:42.792918Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLevelParameters { levels: [0, 0] } res=Ok(())
2023-07-03T20:31:42.827229Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLevelParameters { levels: [0, 0, 0, 0, 0, 0] } res=Ok(())
2023-07-03T20:31:42.833004Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLevelParameters { levels: [0] } res=Ok(())
2023-07-03T20:31:42.844518Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLevelParameters { levels: [0, 0] } res=Ok(())
2023-07-03T20:31:42.878950Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLrBalanceParameters { balances: [32512, -32768, 32512, -32768, 32512, -32768] } res=Ok(())
2023-07-03T20:31:42.890431Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcLrBalanceParameters { balances: [32512, -32768] } res=Ok(())
2023-07-03T20:31:42.924342Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcMuteParameters { mutes: [false, false, false, false, false, false] } res=Ok(())
2023-07-03T20:31:42.935929Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcMuteParameters { mutes: [false, false] } res=Ok(())
2023-07-03T20:31:42.970092Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcMuteParameters { mutes: [false, false, false, false, false, false] } res=Ok(())
2023-07-03T20:31:42.975793Z DEBUG cache: snd_bebob_ctl_service::common_ctls: params=AvcMuteParameters { mutes: [false] } res=Err(Error { domain: g-file-error-quark, code: 21, message: "unexpected response status" })
Linux file operation error: , unexpected response status
Greetings! Trying to compile snd-bebob-ctl-service
for M-Audio Project Mix I/O.
As far as I understood, it requires this one as well: https://github.com/alsa-project/alsa-gobject/
Tried installing alsa-gobject, after running pkg-config --cflags --libs alsactl
getting this:
Package alsactl was not found in the pkg-config search path.
Perhaps you should add the directory containing `alsactl.pc'
to the PKG_CONFIG_PATH environment variable
Package 'alsactl', required by 'virtual:world', not found
[s@asus-mainrig snd-firewire-ctl-services]$ cargo build
Compiling hinawa-sys v0.4.0 (https://github.com/alsa-project/hinawa-rs.git?tag=v0.4.0#6865cfd3)
Compiling alsatimer-sys v0.2.0 (https://github.com/alsa-project/alsa-gobject-rs.git?tag=v0.2.0#fcab3654)
Compiling alsactl-sys v0.2.0 (https://github.com/alsa-project/alsa-gobject-rs.git?tag=v0.2.0#fcab3654)
error: failed to run custom build command for `alsatimer-sys v0.2.0 (https://github.com/alsa-project/alsa-gobject-rs.git?tag=v0.2.0#fcab3654)`
Caused by:
process didn't exit successfully: `/home/s/sound/snd-firewire-ctl-services/target/debug/build/alsatimer-sys-58b1bd9cf56c052d/build-script-build` (exit status: 1)
--- stdout
cargo:rerun-if-env-changed=ALSATIMER_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=ALSATIMER_STATIC
cargo:rerun-if-env-changed=ALSATIMER_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
--- stderr
`"pkg-config" "--libs" "--cflags" "alsatimer" "alsatimer >= 0.0"` did not exit successfully: exit status: 1
error: could not find system library 'alsatimer' required by the 'alsatimer-sys' crate
--- stderr
Package alsatimer was not found in the pkg-config search path.
Perhaps you should add the directory containing `alsatimer.pc'
to the PKG_CONFIG_PATH environment variable
Package 'alsatimer', required by 'virtual:world', not found
Package 'alsatimer', required by 'virtual:world', not found
warning: build failed, waiting for other jobs to finish...
error: build failed
Also tried compiling and installing alsa-gobject-rs and libhinawa, and it does not help. Lastly, tried fiddling around with the PKG_CONFIG_PATH=/usr/bin:/home/s/sound/alsa-gobject/build/meson-private/:/home/s/sound/libhinawa/build/meson-private/:/home/s/sound/alsa-gobject/build/meson-private/:/home/s/sound/alsa-gobject/build/meson-private/
etc. Does not work.
OS: Garuda Linux (arch-based)
Kernel: 5.15.24-2-lts
Alsactl installed, exists and runs OK.
Any advice? Can't get audio output on the Project Mix, basically I just need to enable all audio outputs and pull the volume up, however, the ffado-mixer also does not work.
Thanks!
As stated in the title.
Probbably after solving takaswie/linux-firewire-dkms#38
I tried compiling but I don't know rust and cargo.
git clone https://github.com/alsa-project/snd-firewire-ctl-services/
cd snd-firewire-ctl-services
cargo build
failed with this output.
Updating git repository `https://github.com/alsa-project/alsa-gobject-rs.git`
Updating crates.io index
Updating git repository `https://github.com/alsa-project/hinawa-rs.git`
Compiling proc-macro2 v1.0.32
Compiling unicode-xid v0.2.2
Compiling syn v1.0.82
Compiling serde v1.0.130
Compiling unicode-segmentation v1.8.0
Compiling pkg-config v0.3.22
Compiling strum v0.18.0
Compiling version-compare v0.0.10
Compiling libc v0.2.109
Compiling version_check v0.9.3
Compiling futures-core v0.3.18
Compiling futures-task v0.3.18
Compiling futures-util v0.3.18
Compiling anyhow v1.0.51
Compiling slab v0.4.5
Compiling futures-channel v0.3.18
Compiling pin-project-lite v0.2.7
Compiling pin-utils v0.1.0
Compiling either v1.6.1
Compiling bitflags v1.3.2
Compiling once_cell v1.8.0
Compiling ieee1212-config-rom v0.1.0 (/home/user/scripts/snd-firewire-ctl-services/libs/ieee1212-config-rom)
Compiling version-compare v0.0.11
Compiling strum v0.20.0
Compiling nix v0.17.0
Compiling void v1.0.2
Compiling cfg-if v0.1.10
Compiling alsa-ctl-tlv-codec v0.0.1 (/home/user/scripts/snd-firewire-ctl-services/libs/alsa-ctl-tlv-codec)
Compiling heck v0.3.3
Compiling proc-macro-error-attr v1.0.4
Compiling proc-macro-error v1.0.4
Compiling itertools v0.9.0
Compiling quote v1.0.10
Compiling toml v0.5.8
Compiling proc-macro-crate v0.1.5
Compiling thiserror-impl v1.0.30
Compiling strum_macros v0.18.0
Compiling futures-macro v0.3.18
Compiling glib-macros v0.10.1
Compiling strum_macros v0.20.1
Compiling thiserror v1.0.30
Compiling system-deps v1.3.2
Compiling glib-sys v0.10.1
Compiling gobject-sys v0.10.0
Compiling hinawa-sys v0.4.0 (https://github.com/alsa-project/hinawa-rs.git?tag=v0.4.0#6865cfd3)
Compiling futures-executor v0.3.18
Compiling system-deps v2.0.3
error: failed to run custom build command for `hinawa-sys v0.4.0 (https://github.com/alsa-project/hinawa-rs.git?tag=v0.4.0#6865cfd3)`
Caused by:
process didn't exit successfully: `/home/user/scripts/snd-firewire-ctl-services/target/debug/build/hinawa-sys-3b7316a75307a0e6/build-script-build` (exit status: 1)
--- stdout
cargo:rerun-if-env-changed=HINAWA_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=HINAWA_STATIC
cargo:rerun-if-env-changed=HINAWA_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
--- stderr
`"pkg-config" "--libs" "--cflags" "hinawa" "hinawa >= 2.3"` did not exit successfully: exit status: 1
--- stderr
Package hinawa was not found in the pkg-config search path.
Perhaps you should add the directory containing `hinawa.pc'
to the PKG_CONFIG_PATH environment variable
Package 'hinawa', required by 'virtual:world', not found
Package 'hinawa', required by 'virtual:world', not found
warning: build failed, waiting for other jobs to finish...
error: build failed
Hi,
I have a revised Focusrite Saffire Pro 40 (Model ID: 0x00de) which is not supported by FFADO, ffado-mixer doesn't recognize because it seems Focusrite eliminated EAP suport and moved from DICE II to DICE III.
This is the FFADO post about that: http://www.ffado.org/posts/news-20151121/
Does this project support the revised Pro 40 or only the original? the lack of access to the mixer makes this unit unusable with Linux.
Thank you very much in advance,
Luis Pablo
This is a feature request for planned system service program.
The alsactl(1) in alsa-utils installs some system services to store/restore current state of control element sets in sound card. This is useful to configure device status automatically.
This request is mentioned by @ovenwerks in my RFT message to LAD:
http://linux-audio.4202.n7.nabble.com/RFT-ALSA-control-service-programs-for-Fireworks-board-module-tp110065p110088.html
Unfortunately, current implementation of alsactl includes some bugs to represent the status in cache file. In my memory, it's file format issue. As a result, alsactl restores control element set unexpected by the service program.
@ovenwerks reports at #3 with his Audiofire 12.
pans seem to work more like a balance, not a pan though. (I expected my mono mic to be able to move from side to side, but it just got louder or quieter.
In 2a2bf6d, implementation for Fireworks transaction has invalid command numbers for pan of monitor functionality. They are the same as solo.
pub struct EfwMonitor {}
impl EfwMonitor {
const CMD_SET_VOL: u32 = 0;
const CMD_GET_VOL: u32 = 1;
const CMD_SET_MUTE: u32 = 2;
const CMD_GET_MUTE: u32 = 3;
const CMD_SET_SOLO: u32 = 4;
const CMD_GET_SOLO: u32 = 5;
const CMD_SET_PAN: u32 = 4;
const CMD_GET_PAN: u32 = 5;
Hello,
I am new to this. Sorry for my stupid questions.
I just would like to install the firewire driver for the fireface 802 on ubuntu 22.04.
I cloned this repo, then I installed the dependencies:
rust
and cargo
,libudev1
, gobject-introspection
, meson
, ninja-build
, build-essential
and libgtk2.0-dev
Now I would like to install libhinawa
, libhitaki
and alsa-gobject
. So I cloned the 3 repos to build them. But in the docs, I don't understand what are the directory-to-install
and the build-directory
variables.
Could you explain how to do it please?
Hi Takashi,
I'm very sorry to waste your time, but I'm new at this. I was able to get all of the dependencies, compile everything, and install snd-dice-ctl-service
, but when I go to run the file, I get this error:
$ cargo run --bin snd-dice-ctl-service
Finished dev [unoptimized + debuginfo] target(s) in 0.12s
Running `target/debug/snd-dice-ctl-service`
target/debug/snd-dice-ctl-service: error while loading shared libraries: libhitaki.so.0: cannot open shared object file: No such file or directory
Do you know what I'm doing wrong?
Sorry again for the trouble. Thank you in advance.
I found this bug when investigating #3
Even if I configure monitor parameters as non-zero, they are displayed zero after restarting the service program.
This is a bug in implementation of EfwMonitor. In Fireworks transaction, three parameters are available in response of each of monitor command. The last parameter is the current value. However, current implementation refers to the second parameter, which is destination.
pub struct EfwMonitor {}
impl EfwMonitor {
...
const CMD_SET_MUTE: u32 = 2;
...
pub fn get_vol(unit: &hinawa::SndEfw, dst: usize, src: usize) -> Result<i32, Error> {
let args = [src as u32, dst as u32, 0];
let mut params = [0; 3];
let _ = unit.transaction(
u32::from(Category::Monitor),
Self::CMD_GET_VOL,
&args,
&mut params,
)?;
Ok(params[1] as i32)
}
...
}
Greetings! Trying to install snd-firewire-digi00x-ctl-service using cargo install --runtime/digi00x
, i have dependencies installed.
This is the error I'm having:
Compiling core v0.1.0 (/home/naku/ctrl/snd-firewire-ctl-services/runtime/core)
error[E0412]: cannot find type `Signal` in module `signal`
--> runtime/core/src/dispatcher.rs:68:64
|
68 | pub fn attach_signal_handler<F>(&mut self, signum: signal::Signal, cb: F)
| ^^^^^^ not found in `signal`
|
help: consider importing this struct
|
4 + use glib::subclass::Signal;
|
help: if you import `Signal`, refer to it directly
|
68 - pub fn attach_signal_handler<F>(&mut self, signum: signal::Signal, cb: F)
68 + pub fn attach_signal_handler<F>(&mut self, signum: Signal, cb: F)
|
For more information about this error, try `rustc --explain E0412`.
error: could not compile `core` (lib) due to previous error
warning: build failed, waiting for other jobs to finish...
error: failed to compile `snd-firewire-digi00x-ctl-service v0.1.0 (/home/naku/ctrl/snd-firewire-ctl-services/runtime/digi00x)`, intermediate artifacts can be found at `/home/naku/ctrl/snd-firewire-ctl-services/target`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
I'm also having similar error when I'm building the snd-firewire-ctl-services folder using cargo build
Compiling firewire-bebob-protocols v0.2.0
error[E0412]: cannot find type `Signal` in module `signal`
--> runtime/core/src/dispatcher.rs:68:64
|
68 | pub fn attach_signal_handler<F>(&mut self, signum: signal::Signal, cb: F)
| ^^^^^^ not found in `signal`
|
help: consider importing this struct
|
4 + use glib::subclass::Signal;
|
help: if you import `Signal`, refer to it directly
|
68 - pub fn attach_signal_handler<F>(&mut self, signum: signal::Signal, cb: F)
68 + pub fn attach_signal_handler<F>(&mut self, signum: Signal, cb: F)
|
For more information about this error, try `rustc --explain E0412`.
error: could not compile `core` (lib) due to previous error
warning: build failed, waiting for other jobs to finish...
OS:
Description: Ubuntu 22.04.3 LTS (Ubuntu Studio)
Release: 22.04
Codename: jammy
Any advice?
Thank you in advance
Testing with an audiofire 12. Wow lots of controls very hard to figure out which control goes where. Also impeded by not understanding ffado-mixer well. In order to see a change made by alsamixer in ffado-mixer, the "Refresh Current Panels" menu item has to be selected. In any case once I figured that out, I started testing with "Front" which really should be just 1 and 2 or 1/2. But before I got there, my AF12 defaults to wordclock and I have been having to boot with snd-fire* blacklist (modprobe -r doesn't seem to work) just so I could switch to internal. This alone is worth all of it. However, I turn the AF12 on, then run snd-firewire-ctl-services, then alsamixer. It shows wordclock, the af12 front panel shows wordclock. So I use alsamixer to switch to internal but the device front panel still shows wordclock. So then I switch it to wordclock in alsamixer at which point the front panel of the device shows internal. And jack runs without the panel flashing. I am guessing that the device when it gets a switch to wordclock and there is no signal, aborts to internal but I do not why I can not just set it to internal.
In all a gui like mudita24 has for the ICE1712 chip, would be great
In TCD22xx controls, SrcBlkId::Reserved(0xff) is used for silent signal source, however SrcBlkId::Mute is available for the purpose.
@ovenwerks reports at #3 with his Audiofire 12.
In ALSA control applications, change operation for clock source looks successful but the LEDs on device have no effect from the operation.
In 2a2bf6d, the change operation is written below:
$ cat src/efw/clk_ctl.rs
pub fn write(
&mut self,
unit: &hinawa::SndEfw,
elem_id: &alsactl::ElemId,
old: &alsactl::ElemValue,
new: &alsactl::ElemValue,
) -> Result<bool, Error> {
match elem_id.get_name().as_str() {
Self::SRC_NAME => {
if !unit.get_property_streaming() {
let mut vals = [0; 2];
old.get_enum(&mut vals[0..1]);
new.get_enum(&mut vals[1..]);
if vals[0] != vals[1] {
EfwHwCtl::set_clock(unit, Some(ClkSrc::from(vals[0] as usize)), None)?;
}
Ok(true)
} else {
Ok(false)
}
}
...
_ => Ok(false),
}
}
}
The old value is referred for the transaction. Furthermore, the value should be index in device specific table for supported clock source, but actually it's code in clock transaction.
Hi,
In the README instructions, the suggestion is to run the service via cargo run
command
& cargo run --bin (the executable name) (the arguments of executable)
however i discovered today, that (while cargo run is running in the background). It keeps deleting a file called rustup-init
in ~/.cargo/bin/
... and this breaks the rustup self update (or rustup update).
Not sure why this is happening. But here is the evidence...
θ68° [id:~] 255 $ sudo auditctl -w /home/id/.cargo/bin/rustup-init -p wra
[id:~] 1 $ ausearch -f /home/id/.cargo/bin/rustup-init -i
----
type=PROCTITLE msg=audit(20/07/22 15:23:37.098:305) : proctitle=cargo run --bin snd-dice-ctl-service 1
type=PATH msg=audit(20/07/22 15:23:37.098:305) : item=1 name=/home/id/.cargo/bin/rustup-init inode=13293144 dev=08:42 mode=file,775 ouid=id ogid=id rdev=00:00 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(20/07/22 15:23:37.098:305) : item=0 name=/home/id/.cargo/bin/ inode=13247264 dev=08:42 mode=dir,775 ouid=id ogid=id rdev=00:00 nametype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(20/07/22 15:23:37.098:305) : cwd=/home/id/.builds/firewire/snd-firewire-ctl-services
type=SYSCALL msg=audit(20/07/22 15:23:37.098:305) : arch=x86_64 syscall=unlink success=yes exit=0 a0=0x55b28d748e20 a1=0x20 a2=0x20 a3=0xfff items=2 ppid=12639 pid=1635287 auid=id uid=id gid=id euid=id suid=id fsuid=id egid=id sgid=id fsgid=id tty=(none) ses=5 comm=cargo exe=/home/id/.cargo/bin/cargo subj==unconfined key=(null)
θ60° [id:~] $
and here was the error message complain from the side of rustup:
[id:~/.builds/swhkd] main ± rustup self update
info: checking for self-updates
info: downloading self-update
error: failed to set permissions for '/home/id/.cargo/bin/rustup-init': No such file or directory (os error 2)
so when i changed my systemd service file (for your service snd-firewire-ctl-*), i removed the cargo run
... and just invoked the executable directly. From a static known folder. And the issue went away.
I think this is a bad thing, no idea why it happens. Perhaps it should be reported upstream (to rust developers somewhere). Also maybe remove cargo run
from your readme file. Unless / until it can be fixed properly upstream.
Many thanks!
Part of my post from DIYaudio:
I have been struggling with professional use of CamillaDSP for last 2 months.
It's difficult for me to contribute in other way than to provide my feedback with many combinations of hardware.
2 months ago, when i have started playing around with combination of CDSP on a server + firewire interface, the only problems I had were:
Some buffer underruns/CDSP restarts with 96k sampling frequency and 128 sample chunksize
Rare buffer underruns/CDSP restarts with 96k sampling frequency and 256 sample chunksize
Stalling of CDSP with 96k sampling frequency and 64 sample chunksize - recoverable, I could just change chunksize via web gui and CDSP would restart itself with stable parameters
About 2-3 weeks ago something changed, completely new system with same hardware and installation method (audioscience review tutorial):
No buffer underruns/CDSP restarts with 96k sampling frequency and 2048 (!) sample chunksize, at least for 14-hour stability test
Complete freezing of whole system with 96k sampling frequency and 1024 (!) sample chunksize, within minutes of running
Complete freezing of whole system with 96k sampling frequency and 512 sample chunksize or less, right after applying changes
The system freeze means dropped connection via web GUI and SSH as well as console notification:
NMI Watchdog detected hard LOCKUP on CPU XX
The only thing I can do at this point is to do a hard reset of the machine, or power cycle.
Needles to say this is unacceptable from a stability point of view.
Tested Hardware:
PCs:
Haswell-based Supermicro server (Xeon E3-1271 V3, X10 supermicro MB)
Skylake-based Suprmicro server (Xeon E3-1220 V6, Asus P10 MB)
Firewire PCIe cards:
TI-based (...)ZAY chip, 3x FW800 ports
TI-based (...)ZAY chip, 1x FW400 + 2x FW800 ports (recommended by ‘Interfacing Linux’ guy)
VIA – based chip with PCI bridge chip, 3x FW400
Firewire interfaces (all of them made by MOTU):
2 different UltraLite
2 different 828 MK2
2 different 828 MK3
UltraLite MK3 FW
UltraLite MK3 Hybrid
Traveler
A lot of different FW cables, various lenghts and makes
Tested Software:
Firewire drivers:
Takashi Sakamoto’s alsa-firewire, versions 4.17 and 5.19
Kernel-included from 5.14 upwards
Kernels:
almost everyone from 4.10 to 6.06
generic
lowlatency
rt
Distros:
Ubuntu desktop 18.4; 20.4; 20.10
Ubuntu server 18.4; 20.4; 20.10
Debian 10
Debian 11
Debian 12
CDSP versions:
1.0.0; 1.0.1; 1.0.2; 1.0.3
no GUI and GUI 1.0.0; 1.0.1
Every combination of the above gives the same result. Even if I can make it work ‘stable’, the chunksize is so big that latency without FIR filters is significant (above 30-40 ms).
Unstability means system lockup, as I have mentioned before. It used to work before last 2-3 weeks. My yet another conclusion is that the problem lies in dependencies, for example updated python packages? The distribution, kernel, hardware, drivers and CDSP doesn’t seem to matter.
I have invested a lot of time and funds to make it work – no success now, with a big red flag that package upgrades might ruin this software/hardware combination.
I beg you all for help, I can provide logs/configs after NYE. Even if my problem can’t be resolved – this can be a warning for everyone who wants to try to go ‘pro’ with firewire.
Hello,
I am Linux Kernel:
Linux version 5.4.0-94-lowlatency (buildd@lcy02-amd64-053).
My Card is a Focusrite Saffire Pro 24 DSP Firewire, detected with cat /proc/asound/cards:
0 [Pro24DSP002245 ]: DICE - Pro24DSP-002245
Focusrite SAFFIRE_PRO_24DSP (serial 8773) at fw1.0, S400
I had no issue in building.
When executing: cargo run --bin snd-dice-ctl-service 0
I receive:
Finished dev [unoptimized + debuginfo] target(s) in 0.05s
Running target/debug/snd-dice-ctl-service 0
Allocation of user-defined element set reached capacity of snd.ko
This can be fixed by using Linux kernel v5.13 or later,
or by using snd.ko pached to extend the capacity.
The capacity is defined as 'MAX_USER_CONTROLS'located in 'sound/core/control.c'.
Fail to listen to events: ioctl(ELEM_ADD) 12(Cannot allocate memory)
Usage:
snd-dice-ctl-service CARD_ID
where
CARD_ID: The numeric ID of sound card
How can I fix that?
Loud Technologies Mackie Onyx 400F refuses request to configure playback solo due to hinawa::SndEfwStatus::BadCommand
. The detail is still unclear but I guess that DSP models don't support the function since the model is one of the DSP models.
The latest version of clap crate is v4.1. It requires rustc version 1.64 or later as Minimum Supported Rust Version (MSRV):
The project still uses clap version v3.2 or later. This is due to my environment to work for it (Ubuntu 22.10, rustc version 1.61.0).
When upgrading the environment in which rustc version 1.64 or later is available, let me introduce the latest version of clap.
When setting the volume digitally:
amixer -c1 cset iface=CARD,name=output-group-volume 127,127,127,127,127,112,127,11,113,11
numid=34,iface=CARD,name='output-group-volume'
; type=INTEGER,access=rw----W-,values=10,min=0,max=127,step=1
: values=127,127,127,127,127,112,127,11,113,11
I am listening on headphones 2 (channel 9+10 of the saffire pro 40), and both the position and the values set for that given position... they DO change the volume. It becomes louder or quieter.
However the numbers do not seem to correspond to any predictable or reliable pattern. With one side going quiet. Then the other side. It is clear that the volume is changing. But it is not logical whatsoever
The Fireface 802 has a three-state LED per Mic input indicating the status of the input. It can be in the states off
, 48V
or Inst
. These states are taken from the manual: https://archiv.rme-audio.de/download/fface_802_e.pdf (page 57). The manual doesn't mention that these states are mutually exclusive, it also doesn't mention that the LED will show a different colour for 48V
and Inst.
. If both settings are off, the LED will stop emitting light.
This repo's service exposes these settings of the Fireface 802 via the input:mic-power
(48V) and the input:mic-instrument
(Inst.) mixer property. However, setting any of these options doesn't cause the LED on the mic inputs to emit light.
Furthermore, this repo's service allows to set both properties input:mic-power
and input:mic-instrument
to true at the same time, which is not supported by the RME driver on Windows. For instance, setting the input:mic-power
property of channel 9 to true should set the input:mic-instrument
property of channel 9 to false if it was true before.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.