ビープ音で日の丸を演奏してみるテスト。

#!/usr/bin/ruby -Ks
# -*- coding: shift_jis -*-
require 'Win32API'
beep = Win32API.new('kernel32', "Beep",'LL',"L")
F = {
''=>262,''=>294,''=>330,''=>349,''=>392,''=>440,''=>494,
''=>523,''=>587,''=>659,''=>698,''=>784,''=>880,''=>988
}
std_duration = 200 # 標準的な音の長さ = 200ms
music = ARGV.size>0 ? ARGV.shift : 'ドドレレミミレーミミソソララソーララソソミドレーソソミドレミドー'
music.gsub!(/[ァぁ]/,'')
duration = std_duration
seq = []
music.split(//).reverse.each do |f|
  if // =~ f
    duration += std_duration
  else
    if F[f]
      seq.unshift(F[f],duration)
    end
    duration = std_duration
  end
end
0.step(seq.size-1,2) do |i|
  beep.call(seq[i],seq[i+1])
end