Android Open Source - OpenSynth Resonant Filter






From Project

Back to project page OpenSynth.

License

The source code is released under:

Apache License

If you think the Android project OpenSynth listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2013 Daisuke Fuji <daisuke@indigo-lab.com>
 * /*from w  w w  .  j av a 2 s . c o m*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.thebends.synth;

/**
 * Simple VCF
 */
public class ResonantFilter extends Filter {
    private float mResonance;

    private double mY1;
    private double mY2;
    private double mY3;
    private double mY4;
    private double mOldX;
    private double mOldY1;
    private double mOldY2;
    private double mOldY3;

    public ResonantFilter() {
        mCutoff = null;
        mResonance = 0.0f;
        mY1 = 0.0f;
        mY2 = 0.0f;
        mY3 = 0.0f;
        mY4 = 0.0f;
        mOldX = 0.0f;
        mOldY1 = 0.0f;
        mOldY2 = 0.0f;
        mOldY3 = 0.0f;
    }

    public double getValue(double x) {
        if (mCutoff == null) {
            return x;
        }
        double cutoff = mCutoff.getValue();
        double f = 2.0f * cutoff / SynthTrack.SAMPLE_RATE_HZ;
        double k = 3.6f * f - 1.6f * f * f - 1;
        double p = (k + 1.0f) * 0.5f;
        double scale = Math.pow(kE, (1.0f - p) * 1.386249);
        double r = mResonance * scale;

        double out = x - r * mY4;
        mY1 = out * p + mOldX * p - k * mY1;
        mY2 = mY1 * p + mOldY1 * p - k * mY2;
        mY3 = mY2 * p + mOldY2 * p - k * mY3;
        mY4 = mY3 * p + mOldY3 * p - k * mY4;
        mY4 = mY4 - Math.pow(mY4, 3.0f) / 6.0f;
        mOldX = out;
        mOldY1 = mY1;
        mOldY2 = mY2;
        mOldY3 = mY3;
        return out;
    }

    public void setResonance(float resonance) {
        mResonance = resonance;
    }
}




Java Source Code List

com.google.synthesizer.android.widgets.piano.BlackPianoKey.java
com.google.synthesizer.android.widgets.piano.NotePianoKey.java
com.google.synthesizer.android.widgets.piano.OctavePianoKey.java
com.google.synthesizer.android.widgets.piano.PianoKey.java
com.google.synthesizer.android.widgets.piano.PianoViewListener.java
com.google.synthesizer.android.widgets.piano.PianoView.java
com.google.synthesizer.android.widgets.piano.WhitePianoKey.java
com.google.synthesizer.core.midi.MidiListener.java
com.google.synthesizer.core.music.Note.java
com.indigo_lab.android.opensynth.OpenSynthActivity.java
com.indigo_lab.android.opensynth.ViewPagerAdapter.java
com.indigo_lab.android.opensynth.view.ArpeggioView.java
com.indigo_lab.android.opensynth.view.ControllerView.java
com.indigo_lab.android.opensynth.view.EnvelopeView.java
com.indigo_lab.android.opensynth.view.FilterEnvelopeView.java
com.indigo_lab.android.opensynth.view.FilterView.java
com.indigo_lab.android.opensynth.view.ImageRadioButton.java
com.indigo_lab.android.opensynth.view.ModulationView.java
com.indigo_lab.android.opensynth.view.OscillatorDetailView.java
com.indigo_lab.android.opensynth.view.OscillatorView.java
com.indigo_lab.android.opensynth.view.RadioButton.java
com.indigo_lab.android.opensynth.view.VolumeEnvelopeView.java
org.thebends.synth.Arpeggio.java
org.thebends.synth.Controller.java
org.thebends.synth.Envelope.java
org.thebends.synth.FilterCutoff.java
org.thebends.synth.Filter.java
org.thebends.synth.FixedParameter.java
org.thebends.synth.KeyStack.java
org.thebends.synth.KeyboardOscillator.java
org.thebends.synth.LFO.java
org.thebends.synth.LagProcessor.java
org.thebends.synth.LowPassFilter.java
org.thebends.synth.MutableParameter.java
org.thebends.synth.Oscillator.java
org.thebends.synth.Parameter.java
org.thebends.synth.ResonantFilter.java
org.thebends.synth.SynthJni.java
org.thebends.synth.SynthTrack.java
org.thebends.synth.Volume.java