LoginSignup
15
23

More than 5 years have passed since last update.

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

Posted at

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

15
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
23