それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Windowsパソコンの音を鳴らす.Rubyで簡単 に警報音装置

Win32SoundというライブラリでRubyはWAVを簡単に再生できると知ったので試してみた

音の鳴らせ方

require "win32/sound"
include Win32

# システムサウンドの再生
Sound.play("SystemAsterisk",Sound::ALIAS)

# wav ファイルの再生
Sound.play("foo.wav") #カレントディレクトリから

Windowsのシステム・サウンドを鳴らす

システムサウンドの場所→→C:\Windows\Media

準備:Windowsのシステム・サウンドファイルを探す

Windowsもサウンドをエクスプロラーで見ても実際のファイル名じゃない.

ここ注意点

Windows ログオフ サウンド.wav など日本語ファイル名はdesktop.iniで仮想的に名前をつけているので、実際の名前ではない。つまりRubyからFile.exist?するとFalseになる.

エクスプローラーで見ると・・・

実際のファイル名は?

desktop.ini設定で仮想化されているのが分かる.



実際のファイル名は cmd.exeでdir/lsして探さないと見られない。

エクスプローラーで見たファイル名 実際のファイル名
Windows ログオン サウンド.wav Windows Logon Sound.wav

ここはまりどころ

ファイルを指定すればあとは音を出して遊べる。

それでは、遊んでみます

require "win32/sound"
include Win32
Dir.chdir("C:/Windows/Media")
5.times{Sound.play("tada.wav",Sound::ALIAS)}

タダー!!!うるさい。

Windowsのシステムサウンドを片っ端から鳴らしてみる

require "win32/sound"
include Win32
Dir.chdir("C:/Windows/Media")
list = Dir.entries "."
list = list.reject{|e| FileTest.directory?e}
list.each{|e|Sound.play(e,Sound::ALIAS)}

Mingw版は簡単だった。だけど、僕のRubyCygwin版.そう簡単にはいかない.
とおもったら、Cygwin版もGem入れ直したら動いた。

cygwin環境の所為かと考えてmingw32環境を作ってみた
mswin32はzlibなど重要なライブラリが欠損してる

mswin32版
mingw
cygwin

を試した

最終的にmingw32/cygwinで音が出ること確認。mswinは面倒になって辞めた

まとめ Win32Sound

簡単に音が鳴って楽しい

cygwin -ruby 動く #2011-04-11動く事を確認
mingw32 -ruby まぁ動く
mswin32 -ruby 地雷