예제 #1
0
    public FMVoice(string name, FMSynthesizer parent)
    {
        Name = name;
        p    = parent.UI;

        eg         = new EnvelopeGenerator(name);
        eg.Attack  = p.Attack1;
        eg.Decay   = p.Decay1;
        eg.Sustain = p.Sustain1;
        eg.Release = p.Release1;

        eg2         = new EnvelopeGenerator(name);
        eg2.Attack  = p.Attack2;
        eg2.Decay   = p.Decay2;
        eg2.Sustain = p.Sustain2;
        eg2.Release = p.Release2;


        table = new float[Settings.SampleRate / 220];

        for (int i = 0; i < table.Length; i++)
        {
            table[i] = Mathf.Sin(TWO_PI * ((float)i / (float)(table.Length - 1))) * .8f;// + (Mathf.Pow( UnityEngine.Random.Range(0,1), 5 )*2-1);
            //Debug.Log(table[i]);
        }
        index = 0;
    }
예제 #2
0
    //

    public FMSynthesizer(UIFMSynthesizer UI = null, int noOfVoices = 6)
    {
        Name    = "hi";
        this.UI = UI;

        noOfVoices = Mathf.Clamp(noOfVoices, 2, 12);
        FMVoice[] voices = new FMVoice[noOfVoices];
        for (int i = 0; i < voices.Length; i++)
        {
            voices[i] = new FMVoice("voice" + i, this);
            voices[i].UpdateParams();
        }
        voiceManager = new VoiceManager(voices);
    }