波形を生成するコード
def generate_sample_data(num_samples, frequency, max_amplitude) position_in_period = 0.0 position_in_period_delta = frequency / SAMPLE_RATE samples = [].fill(0.0, 0, num_samples) num_samples.times do |i| # 矩形波 samples[i] += ((position_in_period >= 0.5) ? max_amplitude : -max_amplitude) * 1.0 # 正弦波 # samples[i] += (Math::sin(position_in_period * TWO_PI) * max_amplitude) * 1.0 # ノコギリ波 # samples[i] += (((position_in_period * 2.0) - 1.0) * max_amplitude) * 1.0 # 三角波 # samples[i] += (max_amplitude - (((position_in_period * 2.0) - 1.0) * max_amplitude * 2.0).abs) * 1.0 position_in_period += position_in_period_delta # 0.0 → 1.0 の周期を繰り返す if position_in_period >= 1.0 position_in_period -= 1.0 end end samples end
Loading...
生成された波形
簡易鍵盤