Cygwinは /dev/をWindowsのデバイスが扱える様になっていてて
- /dev/dsp
- /dev/audio
にファイルを通すと音が鳴るらしい
とりあえずやってみる
cat /cygdrive/c/Windows/Media/tada.wav > /dev/dsp
なんかおとでる。でもこれは音が再生されるよりさきに次のデータを送りつける。
音としての情報は失われている。
ためしにRubyからも音を出してみる
ruby からは音が鳴った。←これもちょっと苦労したけど
調べてみたら、ラ音をだすC言語ソースがあったのでコレを使って試して。
wget http://homepage3.nifty.com/rio_i/lab/oss/src/002sound.c -O sound.c
ヘッダ部分を書換え
linux を sys に書換えた
takuya@letsnote:~/Desktop$ diff -c 002sound.c sound.c *** 002sound.c 2011-03-03 11:20:12.178997700 +0900 --- sound.c 2011-03-03 11:18:05.333742600 +0900 *************** *** 1,6 **** #include <fcntl.h> #include <limits.h> ! #include <linux/soundcard.h> #include <math.h> #include <stdio.h> #include <sys/ioctl.h> --- 1,6 ---- #include <fcntl.h> #include <limits.h> ! #include <sys/soundcard.h> #include <math.h> #include <stdio.h> #include <sys/ioctl.h>
soundcard.hが無い場合はapt-cygでaudio/soundのDevelパッケージを作る
あとは
gcc -o sound sound.c -lm ./sound
音が出る
音が出てビックリしたりする。
2012/06/14追記
Ruby でWindowsサウンドを片っ端から再生してみた
Dir.glob("/cygdrive/c/Windows/Media/*.wav").each{|e| puts e ;d=open("/dev/dsp","w"); open(e){|f|while(c=f.getc)do d.putc(c); end };}