Streaming output through Pulseaudio? No ALSA.

Im trying to use audacity inside my chroot environment, but I cant get it to output sound. I dont have a sound device, I am streaming all audio through pulseaudio’s native-tcp over localhost. Whereas in VLC and kdenlive etc I can select pulseaudio as an output device, in audacity I cannot. The Interface Host section and the Playback Device section are both entirely blank.

This is running on an android device, so ALSA is not present in the kernel and I cannot output sound directly to a sound device from the chroot environment. This is why I am streaming output to a pulseaudio client located outside the chroot.

Any insight on how I can set this up?

Audacity does not officially support android, so how did you do that?

It is running inside a chroot arch Linux environment using a terminal emulator app called termux. It is a full Linux environment running on the android kernel. It seems like all functions of audacity work fine, I just cant get playback.

Audacity communicates with the sound system via PortAudio. PortAudio may be built with support for ALSA, JACK, or OSS (“hosts”). To use PortAudio, it has to be built against a host that is present on the system. Most Linux distributions build PortAudio against ALSA, as that is their default. I don’t know enough about Termux to know if that is possible.

Thank you for that insight. I see that portaudio is not listed as dependency for audacity in arch, and on my system it is not installed. Is it integrated into audacity, or is this something that I can build myself and audacity will pick it up?

I found this portaudio api for a pulseaudio host, do you think this could solve my problem?

My Linux system is pretty standard other than that I have no direct access to my hardware. There should be no constraints to getting this to work other then streaming output with pulseaudio.

It is included in the Audacity source code:

Thank you very much. I am going to try building audacity with portaudio-pulseaudio. I will check back with my results. Should it be ok to sub this version of portaudio, or is there something I should know while attempting this?

I don’t know.
You are working on a platform that is not officially supported and creating a custom build of Audacity, so this is uncharted territory.
Let us know how you get on.

So I am able to build portaudio-pulseaudio and audacity, but when I try to build them together I get to 99% then I get this error.

/usr/bin/ld: ../cmake-proxies/portmixer/libportmixer.a(px_mixer.c.o): in function `Px_OpenMixer':         
px_mixer.c:(.text+0x24c): undefined reference to `Pa_GetStreamHostApiType'                                                      
/usr/bin/ld: ../cmake-proxies/portmixer/libportmixer.a(px_unix_oss.c.o): in function `OpenMixer_Unix_OSS':                      
px_unix_oss.c:(.text+0xd40): undefined reference to `PaOSS_GetStreamInputDevice'                                                
/usr/bin/ld: px_unix_oss.c:(.text+0xda0): undefined reference to `PaOSS_GetStreamOutputDevice'                                  
collect2: error: ld returned 1 exit status                      
make[2]: *** [src/CMakeFiles/Audacity.dir/build.make:6597: bin/Release/audacity] Error 1                                        
make[1]: *** [CMakeFiles/Makefile2:880: src/CMakeFiles/Audacity.dir/all] Error 2                                                
make: *** [Makefile:149: all] Error 2

I dont know what portmixer does, but I did see that its possible to compile audacity without it. However, I only found this done with the old configure script, not with cmake. How would I go about excluding portaudio from the cmake configuration? Alternatively, is there a way to build audacity to use a system installed portaudio rather a bundled one?

Thanks for you patience.

Portmixer is used alongside PortAudio. I think it provides a mixer interface between Audacity and the sound system. Although it may be possible to build Audacity without portmixer, I believe that portmixer is required for Audacity to function correctly. I know a bit of C / C++ but I’m out of my depth with this code.

I was able to exclude portmixer and that gave me a host of other errors… I too am out of my depth here, I wish there was someone who could help out… Ill play around a bit more and see if I can figure anything out.