On Tue, Jul 18, 2023 at 02:12:31PM -0300, Geraldo Nascimento wrote:
On Tue, Jul 18, 2023 at 12:22:35PM -0400, Ico Bukvic wrote:
Hi all,
Hi Ico and friends,
I have a consumer-level setup audio question. My research project uses a Raspberry Pi in conjunction with a small portable monitor that has built-in loudspeakers that are to be used via HDMI connection. The goal here is portability and minimal cost.
Curiously, when trying to connect to monitor's loudspeakers (via HDMI) using ALSA, no matter what settings I pick, at worst I cannot get audio out, and at best, get a buzzy sound whose waveform is in the attached image. The sound is clearly periodic and impulse-like. It happens every 59 samples. Changing sample rate increases pitch, suggesting 59 samples remain constant regardless of the sampling rate. When playing the actual audio, you can hear it in the background, but this buzz is easily overpowering it.
Ico, just a wild guess but are you sure you are not capturing the raw SPDIF signal going through HDMI instead of Linear PCM audio signal?
Here's a comment from the VC4 HDMI driver:
* HDMI audio is implemented entirely within the HDMI IP block. A * register in the HDMI encoder takes SPDIF frames from the DMA engine * and transfers them over an internal MAI (multi-channel audio * interconnect) bus to the encoder side for insertion into the video * blank regions.
And there's this perhaps closely related old issue with the vendor kernel and Android: https://github.com/raspberrypi/linux/issues/4654
Changing sample rate or bit depth, or buffering, makes no difference. Selecting 8 channels for output (one of HDMI's standards, as far as I can tell), sometimes manages to output a tiny chunk of a good audio sample, and then goes silent.
Now, even more curiously, when using the portaudio backend and connecting to the default pulseaudio sink, works just fine. What could be causing this discrepancy?
Perhaps PortAudio is forcing the Linear PCM bits on the underlying ALSA backend somehow, see for example: https://fossies.org/linux/alsa-lib/src/conf/pcm/iec958.conf But this is just wild speculation, it may or may not be the case with your report. It's best if you ask Takashi Iwai and Jaroslav Kysela directly through the list with Cc: in case nobody else has any more ideas of what could be the root cause of your report.
You're probably sending PCM data to HDMI, which expects SPDIF frames instead, and PortAudio + PulseAudio seems to be aware of this. That's my theory at least. Setting the necessary bits and necessary IEC958 format on your ALSA playback may resolve your issue.
Good luck, Geraldo Nascimento
Best,
Ico
-- Ivica Ico Bukvic, D.M.A. Director, Creativity + Innovation Director, Human-Centered Design iPhD Institute for Creativity, Arts, and Technology
Virginia Tech Creative Technologies in Music School of Performing Arts – 0141 Blacksburg, VA 24061 (540) 231-6139 ico@vt.edu
ci.icat.vt.edu l2ork.icat.vt.edu ico.bukvic.net