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; }
public void EmitFMGrain(FMSynthesizer syn, float time) { var length = (int)(time * this.SamplingRate); var realLength = Math.Min(length, this.Data.Length - this.nextIn); syn.GenerateGrain(this.Data, this.nextIn, realLength, this.SamplingRate); this.nextIn += realLength; }
void Start() { fm = new FMSynthesizer(this, 6); UpdateParams(); ready = true; }