Win32SoundというライブラリでRubyはWAVを簡単に再生できると知ったので試してみた
音の鳴らせ方
- Ruby on Windows: Adding Sound to Your Ruby Apps
- Rubyist Magazine - Ruby Library Report 【第 4 回】 Win32Utils
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になる.
実際のファイル名は 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版は簡単だった。だけど、僕のRubyはCygwin版.そう簡単にはいかない.
とおもったら、Cygwin版もGem入れ直したら動いた。
cygwin環境の所為かと考えてmingw32環境を作ってみた
mswin32はzlibなど重要なライブラリが欠損してる
を試した
最終的にmingw32/cygwinで音が出ること確認。mswinは面倒になって辞めた