I'm using X Server on Windows. GNOME desktop works fine. But very quiet. So, I wrote Windows platform support code for EsounD. And fixed some mistake at PCM mixing code. This fix reduce noises. Reason of noises are left white space on clipping, too much swapping left-right-channel stereo source on rate conversion. My EsounD patch features. (Based Dec/30/2000) 1. Eliminates noises. Multiple stream mixing and play samples have any noise! (I think for all platform. I tested on Windows, WindowsNT, Linux.) 2. Windows MultiMedia System support. (Windows) 3. with cygwin run-time dll. Compile with CYGWIN32 environment. without cygwin run-time dll. Compile with MINGW32 environment. (Windows) Build instruction. 1. With cygwin run-time. exec Cygwin bash shell 1.1 build audiofile. untar audiofile archive. ./configure make make install 1.2 build esound cvs checkout esound cd esound patch < <patch file> ./autogen.sh 1.3 execute esd ./esd -public -tcp 2. Without cygwin run-time. exec Cygwin bash shell. ln -s /usr/lib/mingw32/libmingw32.a /usr/lib/mingw32/libc.a ln -s /usr/lib/mingw32/libmingw32.a /usr/lib/mingw32/libm.a ln -s /usr/lib/mingw32/libmingw32.a /usr/lib/mingw32/libg.a 2.1 build audiofile untar audiofile archive. comment out audiofile/Makefile.am CFLAGS line modify some audiofile/*.c fit for MINGW32 env. it's easy. libtoolize --automake -c -f --ltdl aclocal autoheader autoconf automake --gnu --add-missing CFLAGS='-mno-cygwin -mconsole' ./confgiure i686-pc-mingw32 --prefix='/usr/local/mingw32' --libdir='/usr/lib/mingw32' --includedir='/usr/include/mingw32' make make install 2.2 build esound cvs checkout esound cd esound patch < <patch file> libtoolize --automake -c -f --ltdl aclocal autoheader autoconf automake --gnu --add-missing CFLAGS='-mno-cygwin -mconsole' ./confgiure i686-pc-mingw32 --prefix='/usr/local/mingw32' --libdir='/usr/lib/mingw32' --includedir='/usr/include/mingw32' --audiofile-prefix='/usr/local/mingw32' make make install 2.3 execute esd run DOS Prompt or Command Prompt. cd <CYGWIN root>\usr\local\mingw32\bin esd -public Current TODO: NOISE reduction (mix.c) 1. check buffer admin code. [HIGH PRIORITY] 2. more faster rate conversion. [MID PRIORITY] 3. High-quality rate conversion. [LOW PRIORITY] Current plan: oversampling -> FIR -> LowPass -> downsampling Windows MultiMedia System(audio_winmm.c) 1. device enumeration in esd_audio_device. and add device selectable code. [MID PRIORITY] 2. half duplex sound device test and implement half duplex codes. [HIGH PRIORITY] 3. recording time upto infinit. current maximam is 1157 days. [LOW PRIORITY] 4. Support DirectSound. [LOWEST PRIORITY] MINGW32(audio.c, esd-server.h, esd.c, esdcat.c, esdfile.c esdfilt.c, esdlib.c, esdloop.c, esdmgr.c, esdmon.c, esdplay.c, esdsample.c, filter.c, genrand.c, mix.c, players.c, proto.c, samples.c winsup.h) 1. separate OS depended functions for multiarch. [HIGH PRIORITY] 2. add WindowsNT service registerable code. [MID PRIOPITY] 3. MSVC support. [MID PRIORITY] 4. Write code genrand.c [HIGH PRIORITY] 5. Write SINGAL emulate functions. [HIGH PRIORITY] 6. Write our version ioctl() and fcntl(). [MID PRIORITY] 7. UNIX Domain Socket emulation. [LOWEST PRIORITY] MINGW32 version binary and source tarball at http://www.kiss.taihaku.sendai.jp/~fuji/product/20001202/ . also patch available at same place. Patch
Attachment:
diff
Description: Binary data
Attachment:
audio_winmm.c
Description: Binary data
Attachment:
winsup.h
Description: Binary data