/** * Copyright (c) 2005 - Bob Lang (http://www.cems.uwe.ac.uk/~lrlang/) * * http://www.frinika.com * * This file is part of Frinika. * * Frinika is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * Frinika is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with Frinika; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package com.frinika.contrib.boblang; /** Bezier Parameters 3.5 * When adding new versions of BezierParams create a new class instead of modifing the current * The new class should implement this interface. The old versions should be modified so that new * parameters return a default value. @author Bob Lang @author Peter Salomonsen @version 21 May 2004 */ public class BezierParamsV3_5 implements BezierParams,java.io.Serializable { private static final long serialVersionUID = 1L; // Useful constants public static final int MAX_AMPLITUDE = 8000, // Maximum amplitude of wave form MAX_PITCH = 128, // Maximum midi pitch number HIGH_PITCH = 96, // Midi number of highest working pitch LOW_PITCH = 33; // Midi number of lowest working pitch // Amplitude envelope types public static final int AMP_STEADY = 0, // Steady amplitude AMP_RISE_FALL = 1, // Amplitude rises and then falls AMP_RISING = 2, // Amplitude rises to maximum AMP_FALLING = 3; // Amplitude falls from maximum to zero // Internal and output sampling rates. These *must* be linked by // a whole integer multiplier private int sampleRate, // Internal sampling rate outputRate; // Output sampling rate // Java output write buffer size. A larger buffer reduces the possibility // of glitches, but increases the latency private int bufferLength; // X Centre positions are stored as a percentage of the wave width // Y Centre positions are stored as a percentage of the max amplitude private int upperCentreX, // X centre position of upper control point upperCentreY, // Y centre position of upper control point lowerCentreX, // X centre position of lower control point lowerCentreY; // Y centre position of lower control point // Amplitudes are stored in the same units as the centre positions private int upperAmplX, // Max X amplitude of upper control point upperAmplY, // Max Y amplitude of upper control point lowerAmplX, // Max X amplitude of lower control point lowerAmplY; // Max Y amplitude of lower control point // Amplitude envelopes - default is steady private int upperEnvX, // Upper X amplitude envelope type upperEnvY, // Upper Y amplitude envelope type lowerEnvX, // Lower X amplitude envelope type lowerEnvY; // Lower Y amplitude envelope type // Amplitude envelope times in millisecs private int upperXEnvTime, // Upper point X amplitude envelope upperYEnvTime, // Upper point Y amplitude envelope lowerXEnvTime, // Lower point X amplitude envelope lowerYEnvTime; // Lower point Y amplitude envelope // Absolute frequency component in Hz private double upperAbsFreqX, // SHM X frequency of upper control point upperAbsFreqY, // SHM Y frequency of upper control point lowerAbsFreqX, // SHM X frequency of lower control point lowerAbsFreqY; // SHM Y frequency of lower control point // Relative frequency component as fraction of fundamental private double upperRelFreqX, // SHM X frequency of upper control point upperRelFreqY, // SHM Y frequency of upper control point lowerRelFreqX, // SHM X frequency of lower control point lowerRelFreqY; // SHM Y frequency of lower control point // Starting phase for frequency components - all in degrees private int upperPhaseX, // Phase variation of upper control point upperPhaseY, // Phase variation of upper control point lowerPhaseX, // Phase variation of lower control point lowerPhaseY; // Phase variation of lower control point // Envelope shaper parameters - most parameters in millisecs private int envAttackTime, // Attack time in mSecs envDecayTime, // Decay time in mSecs envSusLevel, // Sustain level as % of max amplitude envReleaseTime; // Release time in mSecs /** Set the output sampling rate and calculate the internal working rate */ public void setOutputRate (int inOutputRate, int overSamplingRate) { // Set the sampling and output rates outputRate = inOutputRate; sampleRate = inOutputRate * overSamplingRate; } /** Obtain the wavelength in samples from the frequency */ public int wavelengthFromFrequency (double frequency) { return (int) (sampleRate/frequency); } // wavelengthFromFrequency () /** Obtain the corrected frequency, from the integer wavelength */ public double frequencyFromWavelength (int wavelength) { return (double) sampleRate/(double) wavelength; } // frequencyFromWavelength () // Bezier parameter modifiers /** * @return Returns the envAttackTime. */ public int getEnvAttackTime() { return envAttackTime; } /** * @param envAttackTime The envAttackTime to set. */ public void setEnvAttackTime(int envAttackTime) { this.envAttackTime = envAttackTime; } /** * @return Returns the envDecayTime. */ public int getEnvDecayTime() { return envDecayTime; } /** * @param envDecayTime The envDecayTime to set. */ public void setEnvDecayTime(int envDecayTime) { this.envDecayTime = envDecayTime; } /** * @return Returns the envReleaseTime. */ public int getEnvReleaseTime() { return envReleaseTime; } /** * @param envReleaseTime The envReleaseTime to set. */ public void setEnvReleaseTime(int envReleaseTime) { this.envReleaseTime = envReleaseTime; } /** * @return Returns the envSusLevel. */ public int getEnvSusLevel() { return envSusLevel; } /** * @param envSusLevel The envSusLevel to set. */ public void setEnvSusLevel(int envSusLevel) { this.envSusLevel = envSusLevel; } /** * @return Returns the lowerAbsFreqX. */ public double getLowerAbsFreqX() { return lowerAbsFreqX; } /** * @param lowerAbsFreqX The lowerAbsFreqX to set. */ public void setLowerAbsFreqX(double lowerAbsFreqX) { this.lowerAbsFreqX = lowerAbsFreqX; } /** * @return Returns the lowerAbsFreqY. */ public double getLowerAbsFreqY() { return lowerAbsFreqY; } /** * @param lowerAbsFreqY The lowerAbsFreqY to set. */ public void setLowerAbsFreqY(double lowerAbsFreqY) { this.lowerAbsFreqY = lowerAbsFreqY; } /** * @return Returns the lowerAmplX. */ public int getLowerAmplX() { return lowerAmplX; } /** * @param lowerAmplX The lowerAmplX to set. */ public void setLowerAmplX(int lowerAmplX) { this.lowerAmplX = lowerAmplX; } /** * @return Returns the lowerAmplY. */ public int getLowerAmplY() { return lowerAmplY; } /** * @param lowerAmplY The lowerAmplY to set. */ public void setLowerAmplY(int lowerAmplY) { this.lowerAmplY = lowerAmplY; } /** * @return Returns the lowerCentreX. */ public int getLowerCentreX() { return lowerCentreX; } /** * @param lowerCentreX The lowerCentreX to set. */ public void setLowerCentreX(int lowerCentreX) { this.lowerCentreX = lowerCentreX; } /** * @return Returns the lowerCentreY. */ public int getLowerCentreY() { return lowerCentreY; } /** * @param lowerCentreY The lowerCentreY to set. */ public void setLowerCentreY(int lowerCentreY) { this.lowerCentreY = lowerCentreY; } /** * @return Returns the lowerEnvX. */ public int getLowerEnvX() { return lowerEnvX; } /** * @param lowerEnvX The lowerEnvX to set. */ public void setLowerEnvX(int lowerEnvX) { this.lowerEnvX = lowerEnvX; } /** * @return Returns the lowerEnvY. */ public int getLowerEnvY() { return lowerEnvY; } /** * @param lowerEnvY The lowerEnvY to set. */ public void setLowerEnvY(int lowerEnvY) { this.lowerEnvY = lowerEnvY; } /** * @return Returns the lowerPhaseX. */ public int getLowerPhaseX() { return lowerPhaseX; } /** * @param lowerPhaseX The lowerPhaseX to set. */ public void setLowerPhaseX(int lowerPhaseX) { this.lowerPhaseX = lowerPhaseX; } /** * @return Returns the lowerPhaseY. */ public int getLowerPhaseY() { return lowerPhaseY; } /** * @param lowerPhaseY The lowerPhaseY to set. */ public void setLowerPhaseY(int lowerPhaseY) { this.lowerPhaseY = lowerPhaseY; } /** * @return Returns the lowerRelFreqX. */ public double getLowerRelFreqX() { return lowerRelFreqX; } /** * @param lowerRelFreqX The lowerRelFreqX to set. */ public void setLowerRelFreqX(double lowerRelFreqX) { this.lowerRelFreqX = lowerRelFreqX; } /** * @return Returns the lowerRelFreqY. */ public double getLowerRelFreqY() { return lowerRelFreqY; } /** * @param lowerRelFreqY The lowerRelFreqY to set. */ public void setLowerRelFreqY(double lowerRelFreqY) { this.lowerRelFreqY = lowerRelFreqY; } /** * @return Returns the lowerXEnvTime. */ public int getLowerXEnvTime() { return lowerXEnvTime; } /** * @param lowerXEnvTime The lowerXEnvTime to set. */ public void setLowerXEnvTime(int lowerXEnvTime) { this.lowerXEnvTime = lowerXEnvTime; } /** * @return Returns the lowerYEnvTime. */ public int getLowerYEnvTime() { return lowerYEnvTime; } /** * @param lowerYEnvTime The lowerYEnvTime to set. */ public void setLowerYEnvTime(int lowerYEnvTime) { this.lowerYEnvTime = lowerYEnvTime; } /** * @return Returns the upperAbsFreqX. */ public double getUpperAbsFreqX() { return upperAbsFreqX; } /** * @param upperAbsFreqX The upperAbsFreqX to set. */ public void setUpperAbsFreqX(double upperAbsFreqX) { this.upperAbsFreqX = upperAbsFreqX; } /** * @return Returns the upperAbsFreqY. */ public double getUpperAbsFreqY() { return upperAbsFreqY; } /** * @param upperAbsFreqY The upperAbsFreqY to set. */ public void setUpperAbsFreqY(double upperAbsFreqY) { this.upperAbsFreqY = upperAbsFreqY; } /** * @return Returns the upperAmplX. */ public int getUpperAmplX() { return upperAmplX; } /** * @param upperAmplX The upperAmplX to set. */ public void setUpperAmplX(int upperAmplX) { this.upperAmplX = upperAmplX; } /** * @return Returns the upperAmplY. */ public int getUpperAmplY() { return upperAmplY; } /** * @param upperAmplY The upperAmplY to set. */ public void setUpperAmplY(int upperAmplY) { this.upperAmplY = upperAmplY; } /** * @return Returns the upperCentreX. */ public int getUpperCentreX() { return upperCentreX; } /** * @param upperCentreX The upperCentreX to set. */ public void setUpperCentreX(int upperCentreX) { this.upperCentreX = upperCentreX; } /** * @return Returns the upperCentreY. */ public int getUpperCentreY() { return upperCentreY; } /** * @param upperCentreY The upperCentreY to set. */ public void setUpperCentreY(int upperCentreY) { this.upperCentreY = upperCentreY; } /** * @return Returns the upperEnvX. */ public int getUpperEnvX() { return upperEnvX; } /** * @param upperEnvX The upperEnvX to set. */ public void setUpperEnvX(int upperEnvX) { this.upperEnvX = upperEnvX; } /** * @return Returns the upperEnvY. */ public int getUpperEnvY() { return upperEnvY; } /** * @param upperEnvY The upperEnvY to set. */ public void setUpperEnvY(int upperEnvY) { this.upperEnvY = upperEnvY; } /** * @return Returns the upperPhaseX. */ public int getUpperPhaseX() { return upperPhaseX; } /** * @param upperPhaseX The upperPhaseX to set. */ public void setUpperPhaseX(int upperPhaseX) { this.upperPhaseX = upperPhaseX; } /** * @return Returns the upperPhaseY. */ public int getUpperPhaseY() { return upperPhaseY; } /** * @param upperPhaseY The upperPhaseY to set. */ public void setUpperPhaseY(int upperPhaseY) { this.upperPhaseY = upperPhaseY; } /** * @return Returns the upperRelFreqX. */ public double getUpperRelFreqX() { return upperRelFreqX; } /** * @param upperRelFreqX The upperRelFreqX to set. */ public void setUpperRelFreqX(double upperRelFreqX) { this.upperRelFreqX = upperRelFreqX; } /** * @return Returns the upperRelFreqY. */ public double getUpperRelFreqY() { return upperRelFreqY; } /** * @param upperRelFreqY The upperRelFreqY to set. */ public void setUpperRelFreqY(double upperRelFreqY) { this.upperRelFreqY = upperRelFreqY; } /** * @return Returns the upperXEnvTime. */ public int getUpperXEnvTime() { return upperXEnvTime; } /** * @param upperXEnvTime The upperXEnvTime to set. */ public void setUpperXEnvTime(int upperXEnvTime) { this.upperXEnvTime = upperXEnvTime; } /** * @return Returns the upperYEnvTime. */ public int getUpperYEnvTime() { return upperYEnvTime; } /** * @param upperYEnvTime The upperYEnvTime to set. */ public void setUpperYEnvTime(int upperYEnvTime) { this.upperYEnvTime = upperYEnvTime; } public int getSampleRate() { return sampleRate; } public void setSampleRate(int sampleRate) { this.sampleRate = sampleRate; } public int getOutputRate() { return outputRate; } /** * @return Returns the bufferLength. */ public int getBufferLength() { return bufferLength; } /** * @param bufferLength The bufferLength to set. */ public void setBufferLength(int bufferLength) { this.bufferLength = bufferLength; } /** * @param outputRate The outputRate to set. */ public void setOutputRate(int outputRate) { this.outputRate = outputRate; } } // BezierParams