NativeBoostで音をならす(Windows版)

昨日のSmalltalk勉強会で学んだNativeBoostで何をやろうかいろいろ考えてたけど、今朝ふっと思い立ったのは「音を鳴らす」だった。
学園祭のゲームで音がないのが寂しかったけど、PharoSoundの状況は芳しくないしどうにもならないと考えていた。
でも、マルチメディア関数を使えば直接鳴るはずではないか!ということに気づいた。

ということで、適当なクラス(SoundTest1)を作って、以下のようなメソッドを追加した。

playSoundNamed: aString
  <primitive: #primitiveNativeCall module: #NativeBoostPlugin>
  ^ self nbCall: #( int PlaySoundA (String aString, 0, 1)) module: 'C:\Windows\System32\winmm.dll'

でもって適当なワークスペースで以下をDo itする。

SoundTest1 new playSoundNamed: 'C:\Windows\Media\chimes.wav'

チャイムが鳴った!
Windows XPでしか試していないけど、超手軽に音を鳴らせることができた。
あと1週間前に気づいていればゲームも華やかになったのだが…
来年の楽しみにしておこう。