I actually do, or at least I used to (I kinda stopped like a year or so ago).
Hang on...
Hang on...
Input pitch=new Input();
Input volume=new Input();
Oscillator osc=new Oscillator(pitch);
Multiplier output=new Multiplier(osc,volume);
class Input implements Device{
public double value;
public double getValue(){return value;}
}
interface Device{
public double getValue();
}
class Multiplier implements Device{
private Device[] inputs;
public Multiplier(Device... inputs){this.inputs=inputs;}
public double getValue(){
double ans=1;
for(Device inpute:inputs) ans*=input.getValue();
return ans;
}
}
class Oscillator implements Device{
private double state=0;
private Device input;
public Oscillator(Device input){this.input=input;}
public double getValue(){
state+=input.getValue();
while(state>=1) state--;
while(state<0) state++;
return state;
}
}