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