Unity

Unityでサイン波とか使って音を鳴らしたい!

More than 3 years have passed since last update.

UnityのOnAudioFilterReadを使う事で音をならす事ができます。

ということで、サイン波とかノコギリ波とか使って音を操りたい!って


欲求が出てきたので少し勉強をはじめました。

※こちらの記事が勉強になります。

Procedural audio with Unity

http://www.develop-online.net/tools-and-tech/procedural-audio-with-unity/0117433

音響合成、Pdでシンセサイザーをつくる

http://yoppa.org/ssaw13/4567.html?fb_source=pubv1

さて、以下のスクリプトをカメラにつければ音が鳴らせます!

周波数の値をいじれば音は変化します。

以下のスクリプトの簡単な説明として

周波数は、1秒間に波が440個あるということで

サイン関数にラジアンを渡すことで波を作っています。

using UnityEngine;

using System; // Needed for Math

public class Sinus : MonoBehaviour
{
public double frequency = 440;
public double gain = 0.05;
private double increment;
private double phase;
private double sampling_frequency = 48000;

void OnAudioFilterRead(float[] data, int channels)
{
increment = frequency * 2 * Math.PI / sampling_frequency;

for (var i = 0; i < data.Length; i = i + channels)
{
phase = phase + increment;
data[i] = (float)(gain*Math.Sin(phase));
if (channels == 2) data[i + 1] = data[i];
if (phase > 2 * Math.PI) phase = 0;
}
}
}

さあ、音が鳴りました。

これは面白いですね。

波の形を変えれば音が変化します。ノコギリ波とか

「強火で進め」さんでは、波形ごとのソースを書いてますので

そちらを参考にするとさらに前進できますね!

http://d.hatena.ne.jp/nakamura001/20120724/1343148980