On 03/09/2018 08:09 PM, fredvs wrote:
>> Are you sure that the program still is OK with your changes?
>
> Ok, re-re-re checked.
>
> With forced:
> ch1on.value := true;
> ch2on.value := true;
> twochannel:= true;
> channels := 2;
>
> and audio_object_write(faudioobj,p1,bytelen div channels)
>
> And with sleep(100) after wavethread.terminate() :
>
> ---> With those changes, yes the sound of the stereo sine-wave is perfect,
>
The problem with the wrong buffer length is in pcaudiolib/source/src/alsa.c
"
int
alsa_object_open(struct audio_object *object,
enum audio_object_format format,
uint32_t rate,
uint8_t channels)
{
struct alsa_object *self = to_alsa_object(object);
if (self->handle)
return -EEXIST;
snd_pcm_format_t pcm_format;
#define FORMAT(srcfmt, dstfmt, size) case srcfmt: pcm_format = dstfmt;
self->sample_size = size; break;
"
It probably should be
"
#define FORMAT(srcfmt, dstfmt, size) case srcfmt: pcm_format = dstfmt;
self->sample_size = size*channels; break;
"
There are more problems with pcaudiolib alsa driver because it is not
synchronous as the Windows and the Pulseaudio driver. It probably
doesn't care for eSpeak-ng because eSpeak-ng does internal timing but by
feeding the audio data as fast as possible by the sine wave generator
there are problems.
Suggestion: use Pulseaudio or change the pcaudiolib alsa driver to use
an overlapping buffer pattern like in waveout.c.
Martin
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
mseide-msegui-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk