ruby-soundwaveで和音や倍音を含む音が割とかんたんに作れることに気づいた。

先日のRubyist九州で発表した*1ruby-soundwave*2で異なる周波数の音をたくさん作って重ねれば和音や倍音を含む音が結構かんたんに作れることに気づいた。
まあ当たり前と言えば当たり前か。
3度、5度の和音を作るコードは以下。

require 'soundwave'
base_note = 440
base_amp  = 0.25
class Wave 
  alias make make_sin
end
sin1 = Wave.new.make(base_note, base_amp, 3)
sin3 = Wave.new.make(base_note * 5/4, base_amp / 3, 2)
sin5 = Wave.new.make(base_note * 3/2, base_amp / 2, 1)
sin1.add(sin3).add(sin5).reverse!.save('harmo.wav')

どんな音を重ねれば和音になるのか、はWikipediaの以下のエントリを参考にした。