luis@0
|
1 import javax.servlet.http.HttpServlet;
|
luis@0
|
2 import javax.servlet.http.HttpServletRequest;
|
luis@0
|
3 import javax.servlet.http.HttpServletResponse;
|
luis@0
|
4 import javax.servlet.ServletException;
|
luis@0
|
5 import javax.servlet.ServletConfig;
|
luis@0
|
6 import java.io.IOException;
|
luis@11
|
7
|
luis@0
|
8 import uk.ac.soton.isvr.*;
|
luis@0
|
9
|
luis@0
|
10 import com.mathworks.toolbox.javabuilder.MWJavaObjectRef;
|
luis@0
|
11 import com.mathworks.toolbox.javabuilder.MWNumericArray;
|
luis@11
|
12 import com.mathworks.toolbox.javabuilder.MWStructArray;
|
luis@0
|
13 import com.mathworks.toolbox.javabuilder.MWException;
|
luis@0
|
14
|
luis@0
|
15 public class HumanEchoServlet extends HttpServlet {
|
luis@0
|
16 private HumanEcho echo;
|
luis@0
|
17
|
luis@0
|
18 public void init(ServletConfig config) throws ServletException {
|
luis@0
|
19 super.init(config);
|
luis@0
|
20
|
luis@0
|
21 try {
|
luis@0
|
22 echo = new HumanEcho();
|
luis@0
|
23 }
|
luis@0
|
24 catch(MWException e) {
|
luis@0
|
25 e.printStackTrace();
|
luis@0
|
26 }
|
luis@0
|
27 }
|
luis@0
|
28
|
luis@0
|
29 public void destroy() {
|
luis@0
|
30 super.destroy();
|
luis@0
|
31
|
luis@0
|
32 if(echo!=null) {
|
luis@0
|
33 echo.dispose();
|
luis@0
|
34 }
|
luis@0
|
35 }
|
luis@0
|
36
|
luis@11
|
37 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
luis@0
|
38
|
luis@11
|
39 // todo: validate/normalise distance
|
luis@11
|
40 int dist = Integer.parseInt(request.getParameter("dist"));
|
luis@11
|
41 MWStructArray Input = null;
|
luis@11
|
42 HumanEcho echo;
|
luis@0
|
43
|
luis@11
|
44 try {
|
luis@11
|
45 echo = new HumanEcho();
|
luis@0
|
46
|
luis@11
|
47 // Matlab structure:
|
luis@11
|
48 // Input = struct('dist', 0.9, 'azim', 0, 'orient', 'horz', 'dirweight', 0.2, 'outputfname', 'foo.wav')
|
luis@0
|
49
|
luis@11
|
50 String[] InputStructFields = {"dist", "azim", "orient", "dirweight", "outputfname"};
|
luis@11
|
51 Input = new MWStructArray(1, 1, InputStructFields);
|
luis@11
|
52 Input.set("dist", 1, Double.valueOf(dist));
|
luis@11
|
53 Input.set("azim", 1, Double.valueOf(0));
|
luis@11
|
54 Input.set("orient", 1, "horz");
|
luis@11
|
55 Input.set("dirweight", 1, Double.valueOf(0.2));
|
luis@0
|
56
|
luis@11
|
57 // the ofname should depend on the parameters
|
luis@11
|
58 StringBuilder sb = new StringBuilder();
|
luis@11
|
59 sb.append("e_d");
|
luis@11
|
60 sb.append(dist);
|
luis@11
|
61 sb.append(".wav");
|
luis@11
|
62 String outputfname = sb.toString();
|
luis@11
|
63
|
luis@11
|
64 Input.set("outputfname", 1, outputfname);
|
luis@11
|
65
|
luis@11
|
66 // todo: before calling should test if wav already exists..
|
luis@11
|
67 Object[] result = echo.simulateBinauralSignals(Input);
|
luis@0
|
68 }
|
luis@0
|
69 catch(MWException e) {
|
luis@0
|
70 e.printStackTrace();
|
luis@0
|
71 }
|
luis@0
|
72
|
luis@11
|
73 /*
|
luis@0
|
74 StringBuffer buffer = new StringBuffer();
|
luis@0
|
75
|
luis@0
|
76 buffer.append("<BR>");
|
luis@0
|
77 buffer.append("<BR>");
|
luis@0
|
78
|
luis@0
|
79 buffer.append("<TABLE >");
|
luis@0
|
80 for (double[] row : square)
|
luis@0
|
81 {
|
luis@0
|
82 buffer.append("<TR>");
|
luis@0
|
83 for (double value : row)
|
luis@0
|
84 {
|
luis@0
|
85 buffer.append("<TH>");
|
luis@0
|
86 buffer.append(new Double(value).intValue());
|
luis@0
|
87 }
|
luis@0
|
88 }
|
luis@0
|
89 buffer.append("</TABLE>");
|
luis@0
|
90 buffer.append("<BR>");
|
luis@0
|
91 response.getOutputStream().print(buffer.toString());
|
luis@8
|
92 */
|
luis@0
|
93 }
|
luis@0
|
94 }
|