Tascam US-16x08

Another consideration we should make is handling of mono or stereo inputs.

The current configuration treats each input as a mono source. Although (as described above) selecting two inputs creates two routes, one each to left and right of the chain, this is still dual mono. For purely audio inputs this is not an issue because we get phase coherent mono audio from each input that is fed to a stereo processing chain. But with the US-16x08 we have DSP on each mono input. If we want to use two inputs as a stereo pair then we ideally want to treat the DSP as a stereo compressor and/or equaliser, i.e. only offer a single control that affects both channels in the same way, e.g. just one compressor ratio which sets the ratio of both left and right compressors.

If this is desirable then how do we switch the channels between mono / stereo? Do we add another control to the audio levels for each pair of channels? This is effectively what tascam-gtk does with its “Link” button.

2 Likes

Maybe we could have an option for linking one inputs DSP settings to another. And then the other input’s DSP would be grayed out (or even be invisible) - except for one option that would be to unlink. Then the settings of one input could be master to the settings of the other, and the mutual dependency would be stated by their link-status. Maybe one input could master more than just one other input. I would not know right now when that would be needed though.

I also would not have any idea how these implementations are programmed and how to make something like that happen. But from a user point it would make less settings available (and maybe visible) when two inputs (or more) were linked, instead of an even longer list of settings

@riban how does this Tascam compares with the UMC 1820 in terms of audio quality?

I haven’t done a comparison. I’m rather busy so may not manage that for some time.

Last Wednesday I got a second-hand tascam. I could only turn off the internal input->output routing by muting all inputs individually. Is this the correct way to go about it?

No! The device has some useful internal routing and DSP that kinda gets in the way of our simple requirements. We need each output connected to its corresponding direct ouput (by default, outputs 1 & 2 are connected to the internal stereo mixer) and we need to disable connection of the “Computer Inputs” to the mixer. (In fact, that doesn’t really matter if you have made the correct output routing.) Staging (vangelis) has this configuration in webconf. Selecting “US-16x08” soundcard and saving (which prompts reboot) should assert the correct configuration so that the US-16x08 internal mixer is bypassed, leaving just the DSP compressors and EQ available. This also sets a default controller configuration that exposes the DSP in zynthian UI Audio Levels pages.

[Edit] Look at the picture I posted earlier in this thread to see how the device handles internal audio routing. The picture isn’t great but gives a clue.

Thanks. When I get back to my setup I’ll switch card conf twice to test that.

ok.

I have added a bold press action in the audio in and audio out chain menus that navigates to the audio levels view and shows controls, filtered by the selected input/output number. This is far from perfect. The same list is shown for input and output and it includes things that may not be relevant to the input/output. It only works for system audio, i.e. the core soundcard. But it is better than nothing… maybe.

I have also added “Stereo” group to the audio levels that allows linking each input pair. When linked, the relevant controls for either input will act on both. This too isn’t perfect but again, it gives us some benefit.

These changes are in testing (vangelis).

Ok, selected another card (hifiberry) then selected tascam again. Now I have no sound whatsoever going into zynthian chains.

tascamgtk shows this (all channels individually muted):

I think that Routinb ch 1 and 2 (upper right corner) should be routed not to master L+R but to output 1 and 2. But i do not think that is why you have no sound. But maybe. I’m still fumbling my way through this routing stuff. But i at least lerned the above from Riban, and my Tascam is working as it should for now!

Are you on a fully updated vangelis? Reselecting us16x08 and saving should set the correct audio routing. You still have the mixer feeding outputs 1&2. If you don’t want to use the mixer (and I recommend not using it) then you want to route 1->1, 2->2, etc.

I was, well, I was on my fix SooperLooper branch with Vangelis merged in. Many attempts of de selecting, reselecting, updating, rebooting, unplugging all peripherals, pulling the power plug after which the device wasn’t recognised, realizing it has a power switch (ouch), nicely turning it on with the power switch, being relieved it was recognised again, reselecting etc etc it now seems to work as advertised. But haven’t checked everything yet, and am stuck at the pool for now.

Where is the configuration saved, so I can inspect that and keep it in a safe place instead of relying on tascamgtk and/or webconf?

The configuration is held in env vars (don’t ask me why!) and there is a file in the config directory that stores these persistently. (I’m not near a zynthian to check right now.). Having configured in webconf, you shouldn’t need to revisit. Webconf _should- configure correctly.

If there is a problem using vangelis then report in issue tracker, using webconf Report Issue button.

It’ll come in handy if someone does a container version?

Keep having difficulties with this card. Sometimes it works, sometimes it doesn’t, but doesn’t is now really doesn’t, like in ERROR screen on start up.

This is the log from journalctl

(venv) root@zynthian:~# journalctl 
Jan 19 21:34:06 zynthian kernel: Booting Linux on physical CPU 0x0000000000 [0x410fd083]
Jan 19 21:34:06 zynthian kernel: Linux version 6.6.62+rpt-rpi-v8 (serge@raspberrypi.com) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian>
Jan 19 21:34:06 zynthian kernel: KASLR enabled
Jan 19 21:34:06 zynthian kernel: random: crng init done
Jan 19 21:34:06 zynthian kernel: Machine model: Raspberry Pi 4 Model B Rev 1.4
Jan 19 21:34:06 zynthian kernel: efi: UEFI not found.
Jan 19 21:34:06 zynthian kernel: Reserved memory: created CMA memory pool at 0x000000002a400000, size 64 MiB
Jan 19 21:34:06 zynthian kernel: OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
Jan 19 21:34:06 zynthian kernel: OF: reserved mem: 0x000000002a400000..0x000000002e3fffff (65536 KiB) map reusable linux,cma
Jan 19 21:34:06 zynthian kernel: OF: reserved mem: 0x000000003ef653c0..0x000000003ef655bf (0 KiB) nomap non-reusable nvram@1
Jan 19 21:34:06 zynthian kernel: OF: reserved mem: 0x000000003ef65600..0x000000003ef656e1 (0 KiB) nomap non-reusable nvram@0
Jan 19 21:34:06 zynthian kernel: NUMA: No NUMA configuration found
Jan 19 21:34:06 zynthian kernel: Faking a node at [mem 0x0000000000000000-0x00000000ffffffff]
Jan 19 21:34:06 zynthian kernel: Faking a node at [mem 0x0000000100000000-0x00000001ffffffff]
Jan 19 21:34:06 zynthian kernel: NUMA: NODE_DATA [mem 0xfbffd3c0-0xfbffffff]
Jan 19 21:34:06 zynthian kernel: NUMA: NODE_DATA [mem 0x1fefec3c0-0x1fefeefff]
Jan 19 21:34:06 zynthian kernel: Zone ranges:
Jan 19 21:34:06 zynthian kernel:   DMA      [mem 0x0000000000000000-0x000000003fffffff]
Jan 19 21:34:06 zynthian kernel:   DMA32    [mem 0x0000000040000000-0x00000000ffffffff]
Jan 19 21:34:06 zynthian kernel:   Normal   [mem 0x0000000100000000-0x00000001ffffffff]
Jan 19 21:34:06 zynthian kernel: Movable zone start for each node
Jan 19 21:34:06 zynthian kernel: Early memory node ranges
Jan 19 21:34:06 zynthian kernel:   node   0: [mem 0x0000000000000000-0x000000003b3fffff]
Jan 19 21:34:06 zynthian kernel:   node   0: [mem 0x0000000040000000-0x00000000fbffffff]
Jan 19 21:34:06 zynthian kernel:   node   1: [mem 0x0000000100000000-0x00000001ffffffff]
Jan 19 21:34:06 zynthian kernel: Initmem setup node 0 [mem 0x0000000000000000-0x00000000fbffffff]
Jan 19 21:34:06 zynthian kernel: Initmem setup node 1 [mem 0x0000000100000000-0x00000001ffffffff]
Jan 19 21:34:06 zynthian kernel: On node 0, zone DMA32: 19456 pages in unavailable ranges
Jan 19 21:34:06 zynthian kernel: On node 1, zone Normal: 16384 pages in unavailable ranges
Jan 19 21:34:06 zynthian kernel: percpu: Embedded 30 pages/cpu s85928 r8192 d28760 u122880
Jan 19 21:34:06 zynthian kernel: pcpu-alloc: s85928 r8192 d28760 u122880 alloc=30*4096
Jan 19 21:34:06 zynthian kernel: pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
Jan 19 21:34:06 zynthian kernel: Detected PIPT I-cache on CPU0
Jan 19 21:34:06 zynthian kernel: CPU features: detected: Spectre-v2
Jan 19 21:34:06 zynthian kernel: CPU features: detected: Spectre-v3a
Jan 19 21:34:06 zynthian kernel: CPU features: detected: Spectre-v4
Jan 19 21:34:06 zynthian kernel: CPU features: detected: Spectre-BHB
Jan 19 21:34:06 zynthian kernel: CPU features: kernel page table isolation forced ON by KASLR
Jan 19 21:34:06 zynthian kernel: CPU features: detected: Kernel page table isolation (KPTI)
Jan 19 21:34:06 zynthian kernel: CPU features: detected: ARM erratum 1742098
Jan 19 21:34:06 zynthian kernel: CPU features: detected: ARM errata 1165522, 1319367, or 1530923
Jan 19 21:34:06 zynthian kernel: alternatives: applying boot alternatives
Jan 19 21:34:06 zynthian kernel: Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=in>
Jan 19 21:34:06 zynthian kernel: cgroup: Disabling memory control group subsystem
Jan 19 21:34:06 zynthian kernel: mempolicy: NUMA default policy overridden to 'interleave:0-1'
Jan 19 21:34:06 zynthian kernel: Unknown kernel command line parameters "modules-load=dwc2,libcomposite", will be passed to user space.
Jan 19 21:34:06 zynthian kernel: Fallback order for Node 0: 0 1 
Jan 19 21:34:06 zynthian kernel: Fallback order for Node 1: 1 0 
Jan 19 21:34:06 zynthian kernel: Built 2 zonelists, mobility grouping on.  Total pages: 2029104
Jan 19 21:34:06 zynthian kernel: Policy zone: Normal
Jan 19 21:34:06 zynthian kernel: mem auto-init: stack:all(zero), heap alloc:off, heap free:off
Jan 19 21:34:06 zynthian kernel: software IO TLB: area num 4.
Jan 19 21:34:06 zynthian kernel: software IO TLB: mapped [mem 0x0000000037400000-0x000000003b400000] (64MB)
Jan 19 21:34:06 zynthian kernel: Memory: 7927652K/8245248K available (13504K kernel code, 2206K rwdata, 4292K rodata, 4864K init, 1086K bss, 252060K reserv>
Jan 19 21:34:06 zynthian kernel: SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=2
Jan 19 21:34:06 zynthian kernel: ftrace: allocating 43495 entries in 170 pages
Jan 19 21:34:06 zynthian kernel: ftrace: allocated 170 pages with 4 groups
...skipping...
Jan 19 21:34:06 zynthian kernel: usb 1-1.2.4.4: Product: US-16x08
Jan 19 21:34:06 zynthian kernel: usb 1-1.2.4.4: Manufacturer: TASCAM
Jan 19 21:34:06 zynthian kernel: usb 1-1.2.4.4: SerialNumber: no serial number
Jan 19 21:34:06 zynthian systemd[1]: Finished ifupdown-pre.service - Helper to synchronize boot up for ifupdown.
Jan 19 21:34:06 zynthian systemd-journald[252]: Journal started
Jan 19 21:34:06 zynthian systemd-journald[252]: Runtime Journal (/run/log/journal/88637d52455446d3a68d1a005737f3c8) is 8.0M, max 78.2M, 70.2M free.
Jan 19 21:34:06 zynthian systemd-modules-load[254]: Inserted module 'libcomposite'
Jan 19 21:34:06 zynthian systemd-modules-load[254]: Inserted module 'i2c_dev'
Jan 19 21:34:06 zynthian systemd-sysctl[276]: Couldn't write '1' to 'kernel/unprivileged_userns_clone', ignoring: No such file or directory
Jan 19 21:34:06 zynthian systemd-udevd[280]: Using default interface naming scheme 'v252'.
Jan 19 21:34:06 zynthian systemd[1]: Started systemd-udevd.service - Rule-based Manager for Device Events and Files.
Jan 19 21:34:06 zynthian systemd[1]: Started systemd-journald.service - Journal Service.
Jan 19 21:34:06 zynthian fake-hwclock[256]: Sun 19 Jan 21:34:06 UTC 2025
Jan 19 21:34:06 zynthian mtp-probe[309]: checking bus 1, device 8: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1>
Jan 19 21:34:06 zynthian mtp-probe[309]: bus: 1, device: 8 was not an MTP device
Jan 19 21:34:06 zynthian kernel: vc_sm_cma: module is from the staging directory, the quality is unknown, you have been warned.
Jan 19 21:34:06 zynthian kernel: bcm2835_vc_sm_cma_probe: Videocore shared memory driver
Jan 19 21:34:06 zynthian kernel: [vc_sm_connected_init]: start
Jan 19 21:34:06 zynthian kernel: rpi-gpiomem fe200000.gpiomem: window base 0xfe200000 size 0x00001000
Jan 19 21:34:06 zynthian kernel: rpi-gpiomem fe200000.gpiomem: initialised 1 regions as /dev/gpiomem
Jan 19 21:34:06 zynthian kernel: mc: Linux media interface: v0.10
Jan 19 21:34:06 zynthian kernel: [vc_sm_connected_init]: installed successfully
Jan 19 21:34:06 zynthian systemd[1]: Found device dev-disk-by\x2dpartuuid-e249d476\x2d01.device - /dev/disk/by-partuuid/e249d476-01.
Jan 19 21:34:06 zynthian systemd[1]: Reached target usb-gadget.target - Hardware activated USB gadget.
Jan 19 21:34:06 zynthian kernel: videodev: Linux video capture interface: v2.00
Jan 19 21:34:06 zynthian systemd[1]: Starting systemd-fsck@dev-disk-by\x2dpartuuid-e249d476\x2d01.service - File System Check on /dev/disk/by-partuuid/e249>
Jan 19 21:34:06 zynthian kernel: snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
Jan 19 21:34:06 zynthian kernel: bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
Jan 19 21:34:06 zynthian systemd[1]: Started systemd-fsckd.service - File System Check Daemon to report status.
Jan 19 21:34:06 zynthian kernel: bcm2835_isp: module is from the staging directory, the quality is unknown, you have been warned.
Jan 19 21:34:06 zynthian kernel: bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video13
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video14
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video15
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video16
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register output node 0 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video20
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video21
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video22
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video23
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register output node 0 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
Jan 19 21:34:06 zynthian kernel: bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp
Jan 19 21:34:06 zynthian kernel: bcm2835_codec: module is from the staging directory, the quality is unknown, you have been warned.
Jan 19 21:34:07 zynthian kernel: Bluetooth: Core ver 2.22
Jan 19 21:34:07 zynthian kernel: NET: Registered PF_BLUETOOTH protocol family
Jan 19 21:34:07 zynthian kernel: Bluetooth: HCI device and connection manager initialized
Jan 19 21:34:07 zynthian kernel: Bluetooth: HCI socket layer initialized
Jan 19 21:34:07 zynthian kernel: Bluetooth: L2CAP socket layer initialized
Jan 19 21:34:07 zynthian kernel: Bluetooth: SCO socket layer initialized
Jan 19 21:34:07 zynthian kernel: bcm2835-codec bcm2835-codec: Device registered as /dev/video10
Jan 19 21:34:07 zynthian kernel: bcm2835-codec bcm2835-codec: Loaded V4L2 decode
...skipping...
Jan 19 21:34:09 zynthian NetworkManager[781]: <info>  [1737322449.5692] monitoring ifupdown state file '/run/network/ifstate'.
Jan 19 21:34:09 zynthian jack_wait[665]: Cannot connect to server socket err = No such file or directory
Jan 19 21:34:09 zynthian jack_wait[665]: Cannot connect to server request channel
Jan 19 21:34:09 zynthian dbus-daemon[606]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.s>
Jan 19 21:34:09 zynthian jack_wait[665]: jack server is not running or cannot be started
Jan 19 21:34:09 zynthian systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
Jan 19 21:34:09 zynthian jack_wait[665]: JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Jan 19 21:34:09 zynthian jack_wait[665]: JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Jan 19 21:34:09 zynthian systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...
Jan 19 21:34:09 zynthian jackd[653]: creating alsa driver ... hw:US16x08|hw:US16x08|256|2|48000|0|0|nomon|swmeter|soft-mode|16bit
Jan 19 21:34:09 zynthian systemd[1]: Starting systemd-hostnamed.service - Hostname Service...
Jan 19 21:34:09 zynthian systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.
Jan 19 21:34:09 zynthian jackd[653]: Failed to open server
Jan 19 21:34:09 zynthian systemd[1]: jack2.service: Main process exited, code=exited, status=255/EXCEPTION
Jan 19 21:34:09 zynthian systemd[1]: jack2.service: Failed with result 'exit-code'.

It looks like you have the US-16x08 plugged into a USB hub. Is that correct? Try plugging it to each RPi USB port directly. My RPi5 seems to not like too much plugged into its USB3 ports (maybe a fault) but the US-16x08 seems to work better when plugged into USB3. I haven’t fully investigated and it may be some other issues, like power loading of other peripherals that causes problems.

What RPi do you have? 3, 4, 5? Your boot sequence looks different to mine (although you did skip some parts).

Plugging it into a powered hub for me seems to work better than directly into either 2.0 or 3.0. Removing all other peripherals at boot time also seems to help. But it is inconsistent.
In fact, it looked like the Tascam also works better in a 2.0 than in a 3.0 port. I’ve got a Raspberry Pi 4 Model B Rev 1.4 (the Zynthian 4 kit).