problem with wios

HARK FORUM problem with wios

Tagged: 

This topic contains 16 replies, has 3 voices, and was last updated by Avatar paul 1 month, 3 weeks ago.

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #899
    Avatar
    paul
    Participant

    Whenever I try to play or record something with wios it gives me the error message
    “*** stack smashing detected ***: <unknown> terminated
    Aborted (core dumped)”
    I tried different options with the wios-command, tried wios on Ubuntu 18.04 and 16.04 and on two different computers. Same result. What could be the problem?

    PS: In the screenshot you also have a list of the hardware devices I use for playback and recording

    #915
    Avatar
    Rohan sheelvant
    Participant

    Yes, I am also facing the same error. I tried but was unsuccessful to figure out the problem.

    my command : wios -r -x 0 -d plughw:1,0 -c 6 -f 48000 -t 6 -o test.wav

    Please do let me know on this post if you find a solution.

    There is an alternative to wios. You can use Audacity software to record the multichannel audio data.

    #931

    Thank you for your inquiry.

    wios uses ALSA directly.

    First, make sure you can record and playback using arecord or aplay . If you set the number of bits or encoding that the hardware does not support, it may not work properly. In other words, be aware of the default settings that is used by wios.
    Secondly, wios implements only some of the features of ALSA, so some devices may not be supported. For example, when recording 24-bit PCM with the --encoding 24 option, S24_LE is supported but S24_3LE is not.

    I created a tool that I attached in this post, which can be used do a quick check. But since it has not been tested thoroughly, there may be some problems remaining. But if it works well, the output result may be helpful.

    How to compile:
    g++ wios-check.cpp -lasound -o wios-check

    How to use:
    ./wios-check <device> <type>
    <type> is one of playback , capture or both.
    defaults: <device> is hw:0,0 selected, and <type> is both selected.
    e.g.) ./wios-check plughw:0,0 playback

    Finally, HARKTOOL5 offers a new way to create transfer functions from TSP recordings that have not been synchronized. The information is written below, so I hope you find it useful.

    [HARKTOOL5-GUI documentation] => [Transfer Function Estimation Using Complex Regression Model]

    Best regards,

    #935
    Avatar
    paul
    Participant

    @Masayuki Takigahira: Thank you for your detailed reply and writing an extra tool. I would love to try out the tool because arecord and aplay work just fine and I still dont understand why wios is not working. I dont see any attachments to your post though 🙁

    @Rohan: I wrote a very simple bash-script which records an plays almost simultaneously using arecord and aplay (see end of post). Maybe measure the unavoidable latency between both arecord and aplay commands in a practical experiment were you put speaker and microphone right next to each other. With that information you can maybe later edit the tsp responces accordingly. I will put it to a test soon if I cant get wios working.

    !/bin/sh
    echo “Starting…” 1>&2
    arecord -d 2 -D plughw:1,0 -f S32_LE -r 48000 roomname_distance_d$1.wav &
    aplay tsp.wav

    #940
    Avatar
    Rohan sheelvant
    Participant

    Ok, thank you for the information

    #941
    Avatar
    Rohan sheelvant
    Participant

    @paul do let me know if you manage to get wios working.

    #942

    @paul: The upload failed due to a problem with the file permission. Thank you for contacting me.

    ———-
    For those who visited later …

    This post was corrected on 27th June 2019.
    Since an error was found in the attached file, uploading is done again.
    Please download wios-check2.zip.

    #945
    Avatar
    Rohan sheelvant
    Participant

    @Masayuki Takigahira: I checked arecord and aplay are working with my device.

    Also, I am sure that the default settings of wios are correct as the same recording device works fine using the wios command in another computer I am operating.

    Can you let me know what is the error?

    #946
    Avatar
    Rohan sheelvant
    Participant

    Also, I tried to run the command: g++ wios-check.cpp -lasound -o wios-check

    but I got the following error :
    g++ wios-check.cpp -lasound -o wios-check
    wios-check.cpp:23:3: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:30:3: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:23:3: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:23:3: error: converting to ‘std::vector<_snd_pcm_access>’ from initializer list would use explicit constructor ‘std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = _snd_pcm_access; _Alloc = std::allocator<_snd_pcm_access>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = _snd_pcm_access; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<_snd_pcm_access>]’
    wios-check.cpp:30:3: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:30:3: error: could not convert ‘{SND_PCM_FORMAT_U8, SND_PCM_FORMAT_S16_LE, SND_PCM_FORMAT_S24_LE, SND_PCM_FORMAT_S32_LE}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<_snd_pcm_format>’
    wios-check.cpp:129:3: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:179:3: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:195:3: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:129:3: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:129:3: error: could not convert ‘{SND_PCM_ACCESS_MMAP_INTERLEAVED, SND_PCM_ACCESS_MMAP_NONINTERLEAVED, SND_PCM_ACCESS_MMAP_COMPLEX, SND_PCM_ACCESS_RW_INTERLEAVED, SND_PCM_ACCESS_RW_NONINTERLEAVED}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<_snd_pcm_access>’
    wios-check.cpp:179:3: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:179:3: error: could not convert ‘{SND_PCM_FORMAT_S8, SND_PCM_FORMAT_U8, SND_PCM_FORMAT_S16_LE, SND_PCM_FORMAT_S16_BE, SND_PCM_FORMAT_U16_LE, SND_PCM_FORMAT_U16_BE, SND_PCM_FORMAT_S24_LE, SND_PCM_FORMAT_S24_BE, SND_PCM_FORMAT_U24_LE, SND_PCM_FORMAT_U24_BE, SND_PCM_FORMAT_S32_LE, SND_PCM_FORMAT_S32_BE, SND_PCM_FORMAT_U32_LE, SND_PCM_FORMAT_U32_BE, SND_PCM_FORMAT_FLOAT_LE, SND_PCM_FORMAT_FLOAT_BE, SND_PCM_FORMAT_FLOAT64_LE, SND_PCM_FORMAT_FLOAT64_BE, SND_PCM_FORMAT_IEC958_SUBFRAME_LE, SND_PCM_FORMAT_IEC958_SUBFRAME_BE, SND_PCM_FORMAT_MU_LAW, SND_PCM_FORMAT_A_LAW, SND_PCM_FORMAT_IMA_ADPCM, SND_PCM_FORMAT_MPEG, SND_PCM_FORMAT_GSM, SND_PCM_FORMAT_SPECIAL, SND_PCM_FORMAT_S24_3LE, SND_PCM_FORMAT_S24_3BE, SND_PCM_FORMAT_U24_3LE, SND_PCM_FORMAT_U24_3BE, SND_PCM_FORMAT_S20_3LE, SND_PCM_FORMAT_S20_3BE, SND_PCM_FORMAT_U20_3LE, SND_PCM_FORMAT_U20_3BE, SND_PCM_FORMAT_S18_3LE, SND_PCM_FORMAT_S18_3BE, SND_PCM_FORMAT_U18_3LE, SND_PCM_FORMAT_U18_3BE, SND_PCM_FORMAT_G723_24, SND_PCM_FORMAT_G723_24_1B, SND_PCM_FORMAT_G723_40, SND_PCM_FORMAT_G723_40_1B, SND_PCM_FORMAT_DSD_U8, SND_PCM_FORMAT_DSD_U16_LE, SND_PCM_FORMAT_DSD_U32_LE, SND_PCM_FORMAT_DSD_U16_BE, SND_PCM_FORMAT_DSD_U32_BE}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<_snd_pcm_format>’
    wios-check.cpp:195:3: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
    };
    ^
    wios-check.cpp:195:3: error: could not convert ‘{5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, 96000, 176400, 192000}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<unsigned int>’
    wios-check.cpp: In constructor ‘AudioDevice::AudioDevice()’:
    wios-check.cpp:205:32: error: ‘nullptr’ was not declared in this scope
    AudioDevice(): name(“”), pcm(nullptr), hw_params(nullptr){
    ^
    wios-check.cpp: In destructor ‘AudioDevice::~AudioDevice()’:
    wios-check.cpp:208:15: error: ‘nullptr’ was not declared in this scope
    if(pcm != nullptr){
    ^
    wios-check.cpp:212:21: error: ‘nullptr’ was not declared in this scope
    if(hw_params != nullptr){
    ^
    wios-check.cpp: In member function ‘bool AudioDevice::is_valid()’:
    wios-check.cpp:219:15: error: ‘nullptr’ was not declared in this scope
    if(pcm == nullptr){ return false; }
    ^
    wios-check.cpp:221:21: error: ‘nullptr’ was not declared in this scope
    if(hw_params == nullptr){ return false; }
    ^
    wios-check.cpp: In member function ‘bool AudioDevice::open_device(std::__cxx11::string&, std::__cxx11::string&, std::__cxx11::string&, bool)’:
    wios-check.cpp:239:15: error: ‘nullptr’ was not declared in this scope
    if(pcm != nullptr){
    ^
    wios-check.cpp:263:13: error: ‘nullptr’ was not declared in this scope
    pcm = nullptr;
    ^
    wios-check.cpp:272:13: error: ‘nullptr’ was not declared in this scope
    pcm = nullptr;
    ^
    wios-check.cpp:281:13: error: ‘nullptr’ was not declared in this scope
    pcm = nullptr;
    ^
    wios-check.cpp: In member function ‘bool AudioDevice::print_support_channels()’:
    wios-check.cpp:353:28: error: ‘to_string’ is not a member of ‘std’
    std::string s(“( ” + std::to_string(min) + ” )”);
    ^
    wios-check.cpp: In member function ‘bool AudioDevice::print_support_rates()’:
    wios-check.cpp:406:28: error: ‘to_string’ is not a member of ‘std’
    std::string s(“( ” + std::to_string(min) + ” )”);
    ^
    wios-check.cpp:411:28: error: ‘to_string’ is not a member of ‘std’
    std::string s(“( ” + std::to_string(min) + “-” + std::to_string(max) + ” )”);
    ^
    wios-check.cpp:411:56: error: ‘to_string’ is not a member of ‘std’
    std::string s(“( ” + std::to_string(min) + “-” + std::to_string(max) + ” )”);

    #947

    It seems that you need to add -std=c++11 as a compile-time option in environments other than Ubuntu 18.04 or later. This is because the source code was written based on the C++11 specification.

    #948
    Avatar
    paul
    Participant

    @Masayuki Takigahira: Thank you. The script compiled successfully. Unfortunately, it did not give me any new information on how to overcome my problem with wios (see results of my wios_check in attachments). I hope I can do without wios.

    Paul

    #950

    > Unfortunately, it did not give me any new information on how to overcome my problem with wios (see results of my wios_check in attachments).

    @paul: No. I saw your results and understood at least one of the causes.

    
    You can use following channels argument with the wios command.
        -c <channels> (same as --channels <channels>)
        *) Please select one of ( 2 ) as <channels>.
    

    This means that your device only supports 2 channels. If your device supports 1 or 2 channels, you will see the following message:

    
    You can use following channels argument with the wios command.
        -c <channels> (same as --channels <channels>)
        *) Please select one of ( 1-2 ) as <channels>.
    

    Also, while wios defaults to 16 kHz for the sampling rate, your device does not support 16 kHz. Your device supports only the sampling rates below. In other words, 44.1 kHz, 48 kHz, etc. should be selected.

    your playback device:

    
    You can use following sampling rate argument with the wios command.
        -f <rate> (same as --frequency <rate>)
        *) Please select one of ( 44100 48000 96000 192000 ) as <rate>.
    

    your capture device:

    
    You can use following sampling rate argument with the wios command.
        -f <rate> (same as --frequency <rate>)
        *) Please select one of ( 44100 48000 96000 ) as <rate>.
    

    ——
    You will need to do some things:
    – The tsp1.wav that you used is 1 Channel (Mono) data, but you need to make it 2 Chennels (Stereo).
    e.g.) If you use a tool called sox , the following will duplicate the channel after rate conversion:
    sox tsp1.wav -r 48000 tsp2.wav remix 1 1
    Instead, please try using the output tsp2.wav.
    – Please set the channel number explicitly as -c 2 on your device. It is not -c 1 .
    – Please set the sampling rate explicitly as (e.g.) -f 48000 on your device. It is not -f 16000 (This is the wios default if not set).

    ——
    The following commands should work on your device.
    arecord -d 16 -D plughw:0,0 -f S32_LE -c 2 -r 48000 output.wav
    To make it work the same way:
    wios -r -x 0 -t 16 -a plughw:0,0 -e 32 -c 2 -f 48000 -o output.wav

    The following commands should work on your device.
    aplay -D plughw:0,0 tsp.wav
    To make it work the same way:
    wios -p -x 0 -d plughw:0,0 -i tsp.wav
    *) tsp.wav must be 48 kHz, 32-bit (or 16-bit) 2-channel data.

    The settings for syncing your recording and playback devices in this example are:
    wios -s -x 0 -y plughw:0,0 -z plughw:0,0 -e 32 -c 2 -f 48000 -i tsp.wav -o output.wav
    wios -s -y 0 -d plughw:0,0 -z 0 -a plughw:0,0 -e 32 -c 2 -f 48000 -i tsp.wav -o output.wav

    Notes:
    If you get an error message about buffers (for example, buffer overruns), you can work around by setting the buffer size larger than the initial value using the -N and -Z options.

    I hope this answer will help you solve your problem.

    Best regards,

    #951
    Avatar
    paul
    Participant

    @Masayuki Takigahira: I understood the wios_check_results and already tried -c 2 and -f 48000 together. What I did not think of was making the tsp a 48kHz stereo sound before playback with wios. Sadly, the results are the same (see attachment).

    #975

    Thank you for reporting this error.
    And, I appreciate your help confirming the operation of the debug version.

    It has been confirmed that this error is caused by compiler optimization. Currently, we are preparing a package for publishing with a reduced optimization level as a workaround. It will be released in the next few days.

    The version with the bug fixed will be “WIOS 3.0.7.1”. Please wait for it to be posted on “News” page.

    Best regards,

    #999
    Avatar
    paul
    Participant

    Im glad I could help. However I experienced a new problem with the debug version when using synchronous mode and an external recorder (plughw:1,0):

    wios -s -x 0 -z plughw:1,0 -i input.wav -o output.wav (=>Fail)

    If I enter the command above it only shows me the wios help page. As if I typed “wios -h”. It feels like it doesnt even know the option “-z”. Synchronous mode only works when leaving out “-z plughw:1,0” and therefore using the default setting. Although if I explicitly type in “-z plughw:0,0” it again shows me the help page ¯\_(ツ)_/¯

    “plughw:1,0” works fine in recording mode:
    wios -r -x 0 -t 4 -o output.wav -a plughw:1,0 -c 8 (=>Success)

    • This reply was modified 1 month, 4 weeks ago by Avatar paul.
Viewing 15 posts - 1 through 15 (of 17 total)

You must be logged in to reply to this topic.