alsa-project / alsa-lib

The Advanced Linux Sound Architecture (ALSA) - library
GNU Lesser General Public License v2.1
366 stars 177 forks source link

Tenacity throws error when running "build/bin/Debug/tenacity" to run it #184

Closed ghost closed 3 years ago

ghost commented 3 years ago

context: https://github.com/tenacityteam/tenacity/issues/649

cat /proc/asound/version output: Advanced Linux Sound Architecture Driver Version k5.10.0-kali9-amd64

backtrace, which is only produced in a popup once I comment out the lines "pcm.rear #cards.pcm.rear pcm.center_lfe #cards.pcm.center_lfe pcm.side #cards.pcm.side", which produce the following backtrace in a popup labeled "../src/AudioIOBase.cpp(501): assert "false" failed in getRecordDevIndex():":

ASSERT INFO: ../src/AudioIOBase.cpp(501): assert "false" failed in getRecordDevIndex().

BACKTRACE: [1] AudioIOBase::getRecordDevIndex(wxString const&) [2] AudioIO::Init() [3] AudacityApp::InitPart2() [4] AudacityApp::OnInit() [5] wxAppConsoleBase::CallOnInit() [6] wxEntry(int&, wchar_t) [7] wxEntry(int&, char) [8] main [9] __libc_start_main [10] _sta

When going through the steps in https://github.com/tenacityteam/tenacity/blob/master/BUILDING.md, I eventually get to a point where I run the command in the issue title which brings up the tenacity logo on screen and then provides the following errors in the terminal:

ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_a52.c:835:(_snd_pcm_a52_open) a52 is only for playback zsh: segmentation fault ./tenacity/build/bin/Debug/tenacity

How can I mitigate this to use tenacity successfully?

perexg commented 3 years ago

Provide the full backtrace with the versioned symbols (debug packages). Also, report the version of installed ALSA packages.

geraldog commented 3 years ago

In my humble opinion Tenacity is segfaulting when it doesn't find a recording device.

Very ungraceful but hardly related to ALSA.

ghost commented 3 years ago

In my humble opinion Tenacity is segfaulting when it doesn't find a recording device.

Very ungraceful but hardly related to ALSA.

This issue still hasn't been solved and I have yet to figure out what's causing it. I have a microphone that's running successfully according to pulseaudio volume control, yet when turned on, it provides the same, slightly altered output all in text in the terminal after a second-long tenacity logo popup:

ALSA lib pcm_dsnoop.c:600:(snd_pcm_dsnoop_open) unable to open slave ALSA lib pcm_dmix.c:1035:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_a52.c:835:(_snd_pcm_a52_open) a52 is only for playback zsh: segmentation fault build/bin/Debug/tenacity

ghost commented 3 years ago

In my humble opinion Tenacity is segfaulting when it doesn't find a recording device.

Very ungraceful but hardly related to ALSA.

If it's mostly unrelated to alsa, where could I turn to to find a solution to this fairly enormous problem?

geraldog commented 3 years ago

I'll rephrase my previous statement:

  1. Tenacity doesn't find a recording device
  2. It defaults to a52 as a recording device
  3. a52 only handles playback. Segfault

That's what I think is happening @User10987654321

What kind of sound hardware are you trying to use with Tenacity?

Does the arecord program from alsa-utils work with your mic?

Be-ing commented 3 years ago

context: tenacityteam/tenacity#649

That is a completely different backtrace. This looks like a bug in Tenacity, not ALSA.

ghost commented 3 years ago

I'll rephrase my previous statement:

1. Tenacity doesn't find a recording device

2. It defaults to a52 as a recording device

3. a52 only handles playback. Segfault

That's what I think is happening @User10987654321

What kind of sound hardware are you trying to use with Tenacity?

Does the arecord program from alsa-utils work with your mic?

when I run arecord -d 5 -f U8 sample.mp3 and then aplay sample.mp3, I get audio output, I believe this means it works with my microphone.

Do any of you have a solution in mind, or should I look to tenacity issues or somewhere else?

geraldog commented 3 years ago

@User10987654321 thanks, you may be able to get away with running Tenacity by editing ~/.asoundrc

See https://wiki.audacityteam.org/wiki/USB_mic_on_Linux#Setting_default_recording_device

Please note that the above mentioned link is meant only as an example and that you might have to adapt it.

ghost commented 3 years ago

@User10987654321 thanks, you may be able to get away with running Tenacity by editing ~/.asoundrc

See https://wiki.audacityteam.org/wiki/USB_mic_on_Linux#Setting_default_recording_device

Please note that the above mentioned link is meant only as an example and that you might have to adapt it.

Hello, I tried adding the ~/.asoundrc with the text inside it but, as implied above, it's difficult to find how it can be adapted to my system. How might I find out the specifics of configuring the ~/.asoundrc file correctly so I can get closer to successfully running tenacity?

geraldog commented 3 years ago

Please bear in mind that this configuration is very much untested and based on the parameters you provided.

   pcm.!default {

   type asym
   playback.pcm {
           type plug
           slave {
                   pcm "hw:0,0"
                   rate 48000
           }
   }
   capture.pcm {
   type plug
           slave {
                   pcm "hw:5,0"
                   format U8
                   rate 48000
           }
   }
   }
ghost commented 3 years ago

Please bear in mind that this configuration is very much untested and based on the parameters you provided.

pcm.!default {

   type asym
   playback.pcm {
           type plug
           slave {
                   pcm "hw:0,0"
                   rate 48000
           }
   }
   capture.pcm {
   type plug
           slave {
                   pcm "hw:5,0"
                   format U8
                   rate 48000
           }
   }

}

Okay, when I used the one you created instead of the link's, I at least got a backtrace instead of an instant crash. I'll continue to look into getting tenacity up and running.

geraldog commented 3 years ago

Check if you have config files in ~/.config/tenacity and if you do, delete them and start over. That might impede .asoundrc from kicking in.

Also, check your microphone specifications and see if it can work on formats of better quality.

Last but not least, you're messing around with what amounts technically to two sound cards. Even if they are running at nominally the same sample rate, there will be artifacts. My personal advice, if you must use more than one soundcard, is to use JACK and alsa_in / alsa_out scripts.

geraldog commented 3 years ago

Oh and by the way arecord default sample rate is 8000 Hz so check both if your mic can work with formats other than U8 and sample rates other than 8000 Hz. I hardcoded 48000 Hz as an example and really the only other available sample rate for a52 playback is 44100 Hz, so your mic must be capable of supporting at least 44100 Hz.

ghost commented 3 years ago

Oh and by the way arecord default sample rate is 8000 Hz so check both if your mic can work with formats other than U8 and sample rates other than 8000 Hz. I hardcoded 48000 Hz as an example and really the only other available sample rate for a52 playback is 44100 Hz, so your mic must be capable of supporting at least 44100 Hz.

Hello, I just ran arecord -d 5 -f S16_LE -c2 -r48000 sample.mp3 and then `aplay sample.mp3' and got clear audio back, but after using tenacity(since the interface was working, just without any audio) and turning off some popups, the .asoundrc file you sent is no longer working and providing the same terminal error output as in the original post.

If you'd like the audio specifications, specific commands to find each one could be useful and maybe even provide information necessary to a solution.

geraldog commented 3 years ago

@User10987654321 try to delete the contents of directory ~/.config/tenacity like I mentioned before.

Also note that if your system runs PulseAudio, you need to either stop or suspend it temporarily to be able to use Tenacity directly with ALSA backend. See https://askubuntu.com/questions/8425/how-to-temporarily-disable-pulseaudio-while-running-a-game-under-wine

Here's a revised .asoundrc based on your latest comments:

pcm.!default { type asym playback.pcm { type plug slave { pcm "hw:0,0" format S16_LE rate 48000 } } capture.pcm { type plug slave { pcm "hw:5,0" format S16_LE rate 48000 } }

}

ghost commented 3 years ago

@geraldog The result of ~/tenacity/build/bin/Debug/tenacity after running pulseaudio -k and deleting all files in ~/.config/tenacity/* and replacing .asoundrc with your most recent comment's revision were the same as in the original post. I haven't gotten a backtrace since I last mentioned it and I think the backtrace could be gone simply due to a setting I configured when the tenacity gui was working.

A suggestion is that it might be possible to configure the audio in the gui if I were to get it up and running again. Otherwise, the output is the same as it has been - only terminal text output, like in the op.

geraldog commented 3 years ago

@User10987654321 maybe there is already a pcm default definition in your /etc/asound.conf ?

Also, try to set PortAudio environment variables, e.g.:

set PA_RECOMMENDED_OUTPUT_DEVICE=0 set PA_RECOMMENDED_INPUT_DEVICE=0

This should use pcm default I think, but you may try variations if it doesn't work, with and without an .asoundrc

ghost commented 3 years ago

@geraldog After trying multiple combinations, I've tried rebuilding tenacity. here is the output of cmake -G Ninja -S . -B build:

-- Found Git: /usr/bin/git (found version "2.33.0") -- Searching for dependencies from system, not using vcpkg. -- Detected that we are using a single config generator without a build type defined... -- To fix this we are using default value for CMAKE_BUILD_TYPE -- The C compiler identification is GNU 10.3.0 -- The CXX compiler identification is GNU 10.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- The ASM_NASM compiler identification is NASM -- Found assembler: /usr/bin/nasm -- Inter-procedural optimization is supported -- No compiler caching enabled. Install sccache or ccache to enable compiler caching. -- Build automatically optimized to use processor count: 6 -- Build Info: -- Host System Name: Linux -- Host System Version: 5.10.0-kali9-amd64 -- Host System Processor: x86_64 -- Host System Arch: 64-bit -- -- Target System Name: Linux -- Target System Version: 5.10.0-kali9-amd64 -- Target System Processor: x86_64 -- Target System Arch: 64-bit -- -- Compiler: /usr/bin/c++ -- Compiler Version: 10.3.0 -- Compiler Standard: 17 -- Compiler Standard Required: ON -- Compiler Extensions: -- -- -- Current Commit: Audacity-3.0.2-855-gbee8ce7 -- -- Looking for pow in m -- Looking for pow in m - found -- Looking for __atomic_fetch_add_4 in atomic -- Looking for __atomic_fetch_add_4 in atomic - found -- Check if the system is big endian -- Searching 16 bit integer -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of unsigned short -- Check size of unsigned short - done -- Searching 16 bit integer - Using unsigned short -- Check if the system is big endian - little endian -- Performing Test HAVE_MMX -- Performing Test HAVE_MMX - Success -- Performing Test HAVE_SSE -- Performing Test HAVE_SSE - Success -- Performing Test HAVE_SSE2 -- Performing Test HAVE_SSE2 - Success -- Looking for 4 include files float.h, ..., string.h -- Looking for 4 include files float.h, ..., string.h - found -- Looking for assert.h -- Looking for assert.h - found -- Looking for errno.h -- Looking for errno.h - found -- Looking for fcntl.h -- Looking for fcntl.h - found -- Looking for fenv.h -- Looking for fenv.h - found -- Looking for inttypes.h -- Looking for inttypes.h - found -- Looking for limits.h -- Looking for limits.h - found -- Looking for malloc.h -- Looking for malloc.h - found -- Looking for byteswap.h -- Looking for byteswap.h - found -- Looking for memory.h -- Looking for memory.h - found -- Looking for stdbool.h -- Looking for stdbool.h - found -- Looking for stdlib.h -- Looking for stdlib.h - found -- Looking for string.h -- Looking for string.h - found -- Looking for strings.h -- Looking for strings.h - found -- Looking for unistd.h -- Looking for unistd.h - found -- Looking for xmmintrin.h -- Looking for xmmintrin.h - found -- Looking for sys/param.h -- Looking for sys/param.h - found -- Looking for sys/stat.h -- Looking for sys/stat.h - found -- Looking for sys/wait.h -- Looking for sys/wait.h - found -- Looking for bcopy -- Looking for bcopy - found -- Looking for fileno -- Looking for fileno - found -- Looking for flock -- Looking for flock - found -- Looking for fork -- Looking for fork - found -- Looking for fsync -- Looking for fsync - found -- Looking for ftruncate -- Looking for ftruncate - found -- Looking for getpagesize -- Looking for getpagesize - found -- Looking for gettimeofday -- Looking for gettimeofday - found -- Looking for gmtime -- Looking for gmtime - found -- Looking for gmtime_r -- Looking for gmtime_r - found -- Looking for lrint -- Looking for lrint - found -- Looking for lrintf -- Looking for lrintf - found -- Looking for lround -- Looking for lround - found -- Looking for lstat -- Looking for lstat - found -- Looking for memcpy -- Looking for memcpy - found -- Looking for memmove -- Looking for memmove - found -- Looking for mlock -- Looking for mlock - found -- Looking for pipe -- Looking for pipe - found -- Looking for posix_fadvise -- Looking for posix_fadvise - found -- Looking for posix_memalign -- Looking for posix_memalign - found -- Looking for strchr -- Looking for strchr - found -- Looking for waitpid -- Looking for waitpid - found -- Check size of int8_t -- Check size of int8_t - done -- Check size of int16_t -- Check size of int16_t - done -- Check size of uint16_t -- Check size of uint16_t - done -- Check size of u_int16_t -- Check size of u_int16_t - done -- Check size of int32_t -- Check size of int32_t - done -- Check size of uint32_t -- Check size of uint32_t - done -- Check size of u_int32_t -- Check size of u_int32_t - done -- Check size of int64_t -- Check size of int64_t - done -- Check size of short -- Check size of short - done -- Check size of unsigned short -- Check size of unsigned short - done -- Check size of int -- Check size of int - done -- Check size of unsigned int -- Check size of unsigned int - done -- Check size of long -- Check size of long - done -- Check size of unsigned long -- Check size of unsigned long - done -- Check size of long long -- Check size of long long - done -- Check size of unsigned long long -- Check size of unsigned long long - done -- Check size of float -- Check size of float - done -- Check size of double -- Check size of double - done -- Check size of long double -- Check size of long double - done -- Check size of loff_t -- Check size of loff_t - done -- Check size of off_t -- Check size of off_t - done -- Check size of off64_t -- Check size of off64_t - failed -- Check size of size_t -- Check size of size_t - done -- Check size of wchar_t -- Check size of wchar_t - done -- Check size of void -- Check size of void - done -- Found Python3: /usr/bin/python3.9 (found version "3.9.7") found components: Interpreter -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") -- Found EXPAT: /usr/lib/x86_64-linux-gnu/libexpat.so (found version "2.4.1") -- Found mp3lame: /usr/lib/x86_64-linux-gnu/libmp3lame.so
-- Found SndFile: /usr/lib/x86_64-linux-gnu/libsndfile.so
-- Found Soxr: /usr/lib/x86_64-linux-gnu/libsoxr.so
-- Found SQLite3: /usr/lib/x86_64-linux-gnu/libsqlite3.so
-- Checking for module 'portaudio-2.0' -- No package 'portaudio-2.0' found CMake Error at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message): Could NOT find PortAudio (missing: PortAudio_LINK_LIBRARIES PortAudio_INCLUDEDIR) Call Stack (most recent call first): /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE) cmake-modules/FindPortAudio.cmake:44 (find_package_handle_standard_args) CMakeLists.txt:734 (find_package)

-- Configuring incomplete, errors occurred! See also "/home/robby/tenacity/build/CMakeFiles/CMakeOutput.log". See also "/home/robby/tenacity/build/CMakeFiles/CMakeError.log".

and running cmake --build build after this produces the error: ninja: error: loading 'build.ninja': No such file or directory

geraldog commented 3 years ago

You're either missing PortAudio or it is installed in a non-standard location and in a non-standard way such that CMake is unable to find it.

Fix the PortAudio issue, and re-run CMake configure phase. Preferrably delete directory build prior to reconfiguration.

ghost commented 3 years ago

You're either missing PortAudio or it is installed in a non-standard location and in a non-standard way such that CMake is unable to find it.

Fix the PortAudio issue, and re-run CMake configure phase. Preferrably delete directory build prior to reconfiguration.

It successfully built with cmake -G Ninja -S . -B build after installing libportaudio-ocmal-dev. I'm completing the build process now as it runs camke --build build while I type.

ghost commented 3 years ago

@geraldog when I ran build/bin/Debug/tenacity it produced the error ALSA lib pcm_dmix.c:1035:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_a52.c:835:(_snd_pcm_a52_open) a52 is only for playback zsh: segmentation fault build/bin/Debug/tenacity

this occurred after trying a multitude of combinations

geraldog commented 3 years ago

@User10987654321 try compiling https://raw.githubusercontent.com/EddieRingle/portaudio/master/examples/pa_devs.c with gcc -o pa_devs pa_devs.c -lportaudio because ALSA default pcm on my system for example is device 8.

So you would delete the contents of ~/.config/tenacity, make sure you have the right configuration in .asoundrc and that asound.conf is not conflicting with that, then set environment variable for PortAudio:

set PA_RECOMMENDED_OUTPUT_DEVICE=8 set PA_RECOMMENDED_INPUT_DEVICE=8

varying with the output of ./pa_devs

All this before actually trying to run Tenacity.

ghost commented 3 years ago

@geraldog I found two asound.conf files outside of the home directory (the ones inside are for examples or relating to disk images for other os's), will these affect the building process?

/usr/share/doc/libasound2-plugins/examples/asound.conf_jack /usr/share/doc/libasound2-plugins/examples/asound.conf_oss

ghost commented 3 years ago

@geraldog Also, before I attempt building again, how could I find the PARECOMMENED_DEVICE= variable? I'm asking what number should be inserted for my specific system and how I should find it.

geraldog commented 3 years ago

@geraldog I found two asound.conf files outside of the home directory (the ones inside are for examples or relating to disk images for other os's), will these affect the building process?

/usr/share/doc/libasound2-plugins/examples/asound.conf_jack /usr/share/doc/libasound2-plugins/examples/asound.conf_oss

These are example files that you shouldn't worry about

geraldog commented 3 years ago

@geraldog Also, before I attempt building again, how could I find the PA_RECOMMENED__DEVICE= variable? I'm asking what number should be inserted for my specific system and how I should find it.

I'm not sure you follow me. You have to build one specific c file, pa_devs.c, with the command line described in the previous post. It will output the pa_devs program, which you run with ./pa_devs

If you are unsure on how to proceed after running ./pa_devs post the output of the program run here

ghost commented 3 years ago

@geraldog I just ran ./pa_devs and got this output:

./pa_devs
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp ALSA lib pcm_a52.c:835:(_snd_pcm_a52_open) a52 is only for playback ALSA lib confmisc.c:160:(snd_config_get_card) Invalid field card ALSA lib pcm_usb_stream.c:482:(_snd_pcm_usb_stream_open) Invalid card 'card' ALSA lib confmisc.c:160:(snd_config_get_card) Invalid field card ALSA lib pcm_usb_stream.c:482:(_snd_pcm_usb_stream_open) Invalid card 'card' connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=No such file or directory) attempt to connect to server failed PortAudio version number = 1246720 PortAudio version text = 'PortAudio V19.6.0-devel, revision 396fe4b6699ae929d3a685b3ef8a7e97396139a4' Number of devices = 24 --------------------------------------- device #0 Name = HDA Intel PCH: ALC295 Analog (hw:0,0) Host API = ALSA Max inputs = 2, Max outputs = 2 Default low input latency = 0.0053 Default low output latency = 0.0053 Default high input latency = 0.0320 Default high output latency = 0.0320 Default sample rate = 48000.00 Supported standard sample rates for half-duplex 16 bit 2 channel input = 48000.00 Supported standard sample rates for half-duplex 16 bit 2 channel output = 44100.00, 48000.00 Supported standard sample rates for full-duplex 16 bit 2 channel input, 2 channel output = 48000.00 --------------------------------------- device #1 Name = HDA Intel PCH: HDMI 0 (hw:0,3) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #2 Name = HDA Intel PCH: HDMI 1 (hw:0,7) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #3 Name = HDA Intel PCH: HDMI 2 (hw:0,8) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #4 Name = HDA Intel PCH: HDMI 3 (hw:0,9) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #5 Name = HDA Intel PCH: HDMI 4 (hw:0,10) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #6 Name = HDA NVidia: HDMI 0 (hw:1,3) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #7 Name = HDA NVidia: HDMI 1 (hw:1,7) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #8 Name = HDA NVidia: HDMI 2 (hw:1,8) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #9 Name = HDA NVidia: HDMI 3 (hw:1,9) Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #10 Name = sysdefault Host API = ALSA Max inputs = 128, Max outputs = 128 Default low input latency = 0.0213 Default low output latency = 0.0213 Default high input latency = 0.0213 Default high output latency = 0.0213 Default sample rate = 48000.00 Supported standard sample rates for half-duplex 16 bit 128 channel input = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 128 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 128 channel input, 128 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #11 Name = front Host API = ALSA Max inputs = 0, Max outputs = 2 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 2 channel output = 44100.00, 48000.00 --------------------------------------- device #12 Name = surround40 Host API = ALSA Max inputs = 0, Max outputs = 2 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 2 channel output = 44100.00, 48000.00 --------------------------------------- device #13 Name = surround51 Host API = ALSA Max inputs = 0, Max outputs = 2 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 2 channel output = 44100.00, 48000.00 --------------------------------------- device #14 Name = surround71 Host API = ALSA Max inputs = 0, Max outputs = 2 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 2 channel output = 44100.00, 48000.00 --------------------------------------- device #15 Name = hdmi Host API = ALSA Max inputs = 0, Max outputs = 8 Default low input latency = -1.0000 Default low output latency = 0.0058 Default high input latency = -1.0000 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #16 Name = lavrate Host API = ALSA Max inputs = 128, Max outputs = 128 Default low input latency = 0.0078 Default low output latency = 0.0078 Default high input latency = 0.0232 Default high output latency = 0.0232 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 128 channel input = [SWR @ 0x5606b3093b40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b3093b40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b3093b40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b3093b40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b3093b40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b3092f40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b3092f40] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

None Supported standard sample rates for half-duplex 16 bit 128 channel output = [SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b308ef00] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

None Supported standard sample rates for full-duplex 16 bit 128 channel input, 128 channel output = [SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

[SWR @ 0x5606b30aeac0] Input channel count and layout are unset ALSA lib rate_lavrate.c:82:(pcm_src_init) sw_init() error -22

None --------------------------------------- device #17 Name = samplerate Host API = ALSA Max inputs = 128, Max outputs = 128 Default low input latency = 0.0078 Default low output latency = 0.0078 Default high input latency = 0.0232 Default high output latency = 0.0232 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 128 channel input = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 128 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 128 channel input, 128 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #18 Name = speexrate Host API = ALSA Max inputs = 128, Max outputs = 128 Default low input latency = 0.0078 Default low output latency = 0.0078 Default high input latency = 0.0232 Default high output latency = 0.0232 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 128 channel input = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 128 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 128 channel input, 128 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #19 Name = pulse Host API = ALSA Max inputs = 32, Max outputs = 32 Default low input latency = 0.0087 Default low output latency = 0.0087 Default high input latency = 0.0348 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 32 channel input = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 32 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 32 channel input, 32 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #20 Name = upmix Host API = ALSA Max inputs = 8, Max outputs = 8 Default low input latency = 0.0053 Default low output latency = 0.0053 Default high input latency = 0.0320 Default high output latency = 0.0320 Default sample rate = 48000.00 Supported standard sample rates for half-duplex 16 bit 8 channel input = Expression 'ret' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1736 Expression 'AlsaOpen( hostApi, parameters, streamDir, &pcm )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1768 Expression 'ret' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1736 Expression 'AlsaOpen( hostApi, parameters, streamDir, &pcm )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1768 Expression 'ret' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1736 Expression 'AlsaOpen( hostApi, parameters, streamDir, &pcm )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1768 Expression 'ret' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1736 Expression 'AlsaOpen( hostApi, parameters, streamDir, &pcm )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1768 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 8 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 8 channel input, 8 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #21 Name = vdownmix Host API = ALSA Max inputs = 6, Max outputs = 6 Default low input latency = 0.0053 Default low output latency = 0.0053 Default high input latency = 0.0320 Default high output latency = 0.0320 Default sample rate = 48000.00 Supported standard sample rates for half-duplex 16 bit 6 channel input = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 6 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 6 channel input, 6 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 --------------------------------------- device #22 Name = dmix Host API = ALSA Max inputs = 0, Max outputs = 2 Default low input latency = -1.0000 Default low output latency = 0.0213 Default high input latency = -1.0000 Default high output latency = 0.0213 Default sample rate = 48000.00 Supported standard sample rates for half-duplex 16 bit 2 channel output = 48000.00 --------------------------------------- device #23 [ Default Input, Default Output ] Name = default Host API = ALSA Max inputs = 32, Max outputs = 32 Default low input latency = 0.0087 Default low output latency = 0.0087 Default high input latency = 0.0348 Default high output latency = 0.0348 Default sample rate = 44100.00 Supported standard sample rates for half-duplex 16 bit 32 channel input = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for half-duplex 16 bit 32 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00 Supported standard sample rates for full-duplex 16 bit 32 channel input, 32 channel output = 8000.00, 9600.00, 11025.00, 12000.00, 16000.00, 22050.00, 24000.00, 32000.00, 44100.00, 48000.00, 88200.00, 96000.00, 192000.00

After doing the same build processes with it using the standards placed in

@User10987654321 try compiling https://raw.githubusercontent.com/EddieRingle/portaudio/master/examples/pa_devs.c with gcc -o pa_devs pa_devs.c -lportaudio because ALSA default pcm on my system for example is device 8.

So you would delete the contents of ~/.config/tenacity, make sure you have the right configuration in .asoundrc and that asound.conf is not conflicting with that, then set environment variable for PortAudio:

set PA_RECOMMENDED_OUTPUT_DEVICE=8 set PA_RECOMMENDED_INPUT_DEVICE=8

varying with the output of ./pa_devs

All this before actually trying to run Tenacity.

I got the same terminal output as in the op when running build/bin/Debug/tenacity

geraldog commented 3 years ago

@User10987654321 OK, try:

set PA_RECOMMENDED_OUTPUT_DEVICE=23 set PA_RECOMMENDED_INPUT_DEVICE=23

Also, I don't think you had your mic connected when you ran pa_devs. Is it a USB mic?

ghost commented 3 years ago

@geraldog bluetooth, WH-1000XM4

ghost commented 3 years ago

my mic's input is definitely registered on my system though, arecord works perfectly

ghost commented 3 years ago

@geraldog just tried with

@User10987654321 OK, try:

set PA_RECOMMENDED_OUTPUT_DEVICE=23 set PA_RECOMMENDED_INPUT_DEVICE=23

Also, I don't think you had your mic connected when you ran pa_devs. Is it a USB mic?

and got same terminal output from build/bin/Debug/tenacity

geraldog commented 3 years ago

As far as I know, it will be impossible for you to use a bluetooth-enabled headset with ALSA only.

This requires either PulseAudio or PipeWire.

ghost commented 3 years ago

As far as I know, it will be impossible for you to use a bluetooth-enabled headset with ALSA only.

This requires either PulseAudio or PipeWire.

Okay, so will it be impossible for me to use tenacity with a bluetooth headset?

ghost commented 3 years ago

@geraldog I have a usb headset I could use with it, but if I could somehow use pulseaudio with everything, that would be of incredible convenience.

geraldog commented 3 years ago

@User10987654321 the problem is the segfault

Probably one of my last tries at helping you, but do apt remove libasound2-plugins and try to run Tenacity.

ghost commented 3 years ago

@User10987654321 the problem is the segfault

Probably one of my last tries at helping you, but do apt remove libasound2-plugins and try to run Tenacity.

just ran sudo apt remove libasound2-plugins then ~/tenacity/build/bin/Debug/tenacity and the gui appears to be running flawlessly at immediate bootup.

While there were lots of suggestions before this comment that didn't directly affect the startup of tenacity in my case, there was lots that I learned in this thread. This will likely serve to equal and greater purposes to others in the future. Have a great time in your future of alsa and everything surrounding it!

geraldog commented 3 years ago

Cool, but you need that package. You need to apt install it back again

ghost commented 3 years ago

Cool, but you need that package. You need to apt install it back again

it seems to work fine without it

ghost commented 3 years ago

Cool, but you need that package. You need to apt install it back again

I just recorded a session

geraldog commented 3 years ago

Good, I'm happy for you! You might need that package in the future, however. The workaround is to install the package but remove the a52 related files so you don't get a segfault.

Here's the list of files for your distribution: https://packages.debian.org/sid/amd64/libasound2-plugins/filelist

@perexg I think you should close this now.