1 package com.faust; 2 3 import com.faust.MultiParams.OnMultiParamsChangeListener; 4 import com.faust.PianoKeyboard.PianoKey; 5 import com.faust.PianoKeyboard.OnKeyboardChangeListener; 6 7 import android.app.Activity; 8 import android.content.SharedPreferences; 9 import android.os.Bundle; 10 11 public class MultiKeyboardActivity extends Activity { 12 int nParams; 13 float[] values; 14 ParametersInfo parametersInfo; 15 16 @Override onCreate(Bundle savedInstanceState)17 public void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.combined); 20 21 final PianoKeyboard keyboard = (PianoKeyboard)this.findViewById(R.id.PianoKeyboard); 22 keyboard.setOnKeyboardChangeListener(new OnKeyboardChangeListener(){ 23 @Override 24 public void onKeyChanged(int note, int velocity, boolean status) { 25 if (status) { 26 keyboard.keys[note - keyboard.baseNote].voice = FaustActivity.dspFaust.keyOn(note, velocity); 27 } else { 28 FaustActivity.dspFaust.keyOff(note); 29 keyboard.keys[note - keyboard.baseNote].voice = -1; 30 } 31 } 32 33 @Override 34 public void onPitchBend(long voice, float pitch) { 35 FaustActivity.dspFaust.setVoiceParamValue("freq", voice, (float)(440.0 * Math.pow(2.0, (pitch-69.0)/12.0))); 36 } 37 @Override 38 public void onYChanged(long voice, float y) { 39 FaustActivity.dspFaust.setVoiceParamValue("gain", voice, y); 40 } 41 }); 42 43 int numberOfParameters = FaustActivity.dspFaust.getParamsCount(); 44 parametersInfo = new ParametersInfo(); 45 parametersInfo.init(numberOfParameters); 46 SharedPreferences settings = getSharedPreferences("savedParameters", 0); 47 parametersInfo.loadParameters(settings); 48 49 final MultiParams mp = (MultiParams) this.findViewById(R.id.MultiParams); 50 int nMultiParams = parametersInfo.nMultiParams; 51 nParams = parametersInfo.nParams; 52 String[] labels = new String[nMultiParams]; 53 final String[] addresses = new String[nMultiParams]; 54 float[] min = new float[nMultiParams]; 55 float[] max = new float[nMultiParams]; 56 values = new float[nMultiParams]; 57 58 for(int i=0; i<nParams; i++){ 59 int currentIndex = parametersInfo.order[i]; 60 if(currentIndex != -1){ 61 addresses[currentIndex] = FaustActivity.dspFaust.getParamAddress(i); 62 labels[currentIndex] = parametersInfo.label[i]; 63 min[currentIndex] = parametersInfo.min[i]; 64 max[currentIndex] = parametersInfo.max[i]; 65 values[currentIndex] = FaustActivity.dspFaust.getParamValue(addresses[currentIndex]); 66 } 67 } 68 mp.setParams(labels, min, max, values); 69 70 mp.setOnMultiParamsChangeListener(new OnMultiParamsChangeListener(){ 71 @Override 72 public void onParamChange(int paramID, float value) { 73 FaustActivity.dspFaust.setParamValue(addresses[paramID], value); 74 } 75 }); 76 } 77 78 @Override onDestroy()79 public void onDestroy(){ 80 super.onDestroy(); 81 } 82 } 83