HARK FORUM › problem with wios
Tagged: wios
- This topic has 16 replies, 3 voices, and was last updated 5 years, 4 months ago by paul.
-
AuthorPosts
-
June 7, 2019 at 11:43 pm #899
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
Attachments:
June 11, 2019 at 12:26 pm #915Yes, 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.
June 12, 2019 at 6:33 pm #931Thank you for your inquiry.
wios uses ALSA directly.
First, make sure you can record and playback using
arecord
oraplay
. 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 butS24_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 ofplayback
,capture
orboth
.
defaults:<device>
ishw:0,0
selected, and<type>
isboth
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,
- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
June 12, 2019 at 11:40 pm #935@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.wavJune 13, 2019 at 12:05 pm #940Ok, thank you for the information
June 13, 2019 at 12:31 pm #941@paul do let me know if you manage to get wios working.
June 13, 2019 at 2:07 pm #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 downloadwios-check2.zip
.- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
Attachments:
June 13, 2019 at 2:17 pm #945@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?
June 13, 2019 at 2:29 pm #946Also, 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) + ” )”);June 13, 2019 at 8:06 pm #947It 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.June 14, 2019 at 12:30 am #948@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
Attachments:
June 14, 2019 at 2:12 pm #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 calledsox
, 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,
- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
June 14, 2019 at 4:35 pm #951@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).
Attachments:
June 24, 2019 at 3:39 pm #975Thank 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,
- This reply was modified 5 years, 5 months ago by Masayuki Takigahira.
June 26, 2019 at 5:38 am #999Im 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 5 years, 5 months ago by paul.
-
AuthorPosts
- You must be logged in to reply to this topic.