Beispiel #1
0
 public OscillationRangeSettings(WaveShapes waveShape)
 {
     WaveShape = waveShape;
     Frequency = new MinMax(1f, 2f);
     Amplitude = new MinMax(0f, 1f);
     Center    = new MinMax(0f, 0f);
     Offset    = new MinMax(0f, 100f);
     Ratio     = new MinMax(0.5f, 0.5f);
 }
 public OscillationRangeSettings(WaveShapes waveShape)
 {
     WaveShape = waveShape;
     Frequency = new MinMax(1f, 2f);
     Amplitude = new MinMax(0f, 1f);
     Center = new MinMax(0f, 0f);
     Offset = new MinMax(0f, 100f);
     Ratio = new MinMax(0.5f, 0.5f);
 }
Beispiel #3
0
//	void OscillatorInitialize(){
//		if (waveShape == WaveShapes.Sinus){
//			waveArray = new float[(int) (sampleRate / frequency)];
//			double currentPhase = 0;
//			double incr = (Math.PI * 2) / waveArray.Length;
//			for (int i = 0; i < waveArray.Length; i++){
//				waveArray[i] = Mathf.Sin((float) currentPhase);
//				currentPhase += incr;
//			}
//		}
//	}

    void OscillatorProcess(float[] data, int channels)
    {
        if (waveShape == WaveShapes.Sinus)
        {
            if (pFrequency != frequency || pWaveShape != waveShape || pModule != module)
            {
                oscIncrement = frequency * 2 * Math.PI / sampleRate;
//				OscillatorInitialize();
                pFrequency = frequency;
                pWaveShape = waveShape;
                pModule    = module;
            }
            if (pPhase != phase)
            {
                oscCurrentPhase = phase * 2 * Math.PI;
            }
            pPhase = phase;
            for (int i = 0; i < data.Length; i++)
            {
                oscCurrentPhase += oscIncrement;
                data[i]         += (float)Math.Sin(oscCurrentPhase);
                oscCurrentPhase %= 2 * Math.PI;
//				oscCurrentPhase = (oscCurrentPhase + 1) % waveArray.Length;
//				data[i] += waveArray[oscCurrentPhase];
            }
        }
        else if (waveShape == WaveShapes.Custom)
        {
            if (pFrequency != frequency || pWaveShape != waveShape || pModule != module)
            {
                oscIncrement = frequency / sampleRate;
                pFrequency   = frequency;
                pWaveShape   = waveShape;
                pModule      = module;
            }
            if (pPhase != phase)
            {
                oscCurrentPhase = phase;
            }
            pPhase = phase;
            for (int i = 0; i < data.Length; i++)
            {
                oscCurrentPhase += oscIncrement;
                data[i]         += oscCustomShape.Evaluate((float)oscCurrentPhase);
                oscCurrentPhase %= 1;
            }
        }
    }
Beispiel #4
0
 public static Func <OscillationSettings, float, float> GetWaveFunction(WaveShapes waveShape)
 {
     return(waveFunctions[(int)waveShape]);
 }
 public static Func<OscillationSettings, float, float> GetWaveFunction(WaveShapes waveShape)
 {
     return waveFunctions[(int)waveShape];
 }