|
Install
mdpw30.zip |
インストール今回初めてJRubyを使用する方はJRuby(Ruby)をインストールしてください。 Download mdpw30.zipを解凍するとmdpw.jarがありますので JAVAのクラスパスに足してください。さらに"jruby"フォルダ内に"mdpw.rb"がありますので、 インクルードする必要があります。Top of this page| Next step 音の作り方音はクラスMnで作る必要があります。作成時の引数は前から ピッチ(0-127), 長さ(positive double), 強さ(0-127) 音色 (0 - 127, 129) となります。
require "mdpw"
n = Mn.new(60,1,32,1)
p = MidiFilePlayer.new
p.init('note.mid')
p.setTempo(120)
p.play(n)
p.end()
Top of this page| Next step 音列の作り方音列はクラスMsでつくります。このクラスは"Array"クラスを継承していますので同じメソッドが使用できます。
require "mdpw"
seq = Ms.new([Mn.new(60,1,64,1), Mn.new(62,1,64,1), Mn.new(64,1,64,1) ])
p = MidiFilePlayer.new
p.init('seq.mid')
p.setTempo(120)
p.play(seq)
p.end()
Top of this page| Next step 和音の作り方和音はクラスMcを使用して作ります。やはり"Array"クラスを継承しています。 和音という名前ですが、音列を含むことも出来ます。
require "mdpw"
chord = Mc.new([Mn.new(60,1,64,1), Mn.new(64,1,64,1), Mn.new(67,1,64,1) ])
p = MidiFilePlayer.new
p.init('chord.mid')
p.setTempo(120)
p.play(chord)
p.end()
Top of this page| Next step 曲の作り方曲は音列と和音を組み合わせて作ります。 これらは入れ子に出来ます。 メロディーを音列にして記述し、和音を列にして伴奏を作ります。 これらを和音に入れれば組み合わせて演奏されます。
require "mdpw"
seq = Ms.new([Mn.new(60,1,64,1), Mn.new(62,1,64,1), Mn.new(64,1,64,1) , Mn.new(65,1,-64,1) ])
chord = Mc.new([Mn.new(60,2,32,1), Mn.new(64,2,120,1), Mn.new(67,2,1,1)])
mp = Ms.new([seq, seq])
cp = Ms.new([chord, chord, chord, chord])
sample = Mc.new([mp , cp])
p = MidiFilePlayer.new
p.init('sample.mid')
p.setTempo(120)
p.play(sample)
p.end()
Top of this page| Next step Visitor"Crescendo" visitorを実装した例です。 メソッド"proccess"で音に対する処理を記述します。第一引数が処理対象の音です。 第二引数は音の出現するタイミングが入ります。
require "mdpw"
class Crescendo < Visitor
def initialize(d, sv, en)
@duration = d
@startv = sv
@endv = en
end
def process(mn, d)
mn.setVelocity((@endv - @startv)*d/@duration+@startv)
end
end
seq = Ms.new([Mn.new(60,1,64,1), Mn.new(62,1,64,1), Mn.new(64,1,64,1) ])
v = Crescendo.new(seq.getDuration(), 32, 120)
seq.visit(v)
p = MidiFilePlayer.new
p.init('visitor.mid')
p.setTempo(120)
p.play(seq)
p.end()
Top of this page |