Mercurial > hg > mep
view MelodyResults.java @ 21:9e45ae01f81e
Make final questionnaire not necessarily appear.
author | Marcus Pearce <marcus.pearce@eecs.qmul.ac.uk> |
---|---|
date | Tue, 27 Mar 2012 16:54:17 +0100 |
parents | 3dd7636ca811 |
children | 84d943797cf2 |
line wrap: on
line source
/*============================================================================= * File: MelodyResults.java * Author: Marcus Pearce <m.pearce@gold.ac.uk> * Created: <2007-02-14 11:28:27 marcusp> * Time-stamp: <2011-11-04 17:35:30 marcusp> *============================================================================= */ import java.util.ArrayList; import java.util.Iterator; import java.io.*; public class MelodyResults { /* Probe positions, subject responses and times, note onsets and IOIs */ private ArrayList probes, responses, responseTimes, questions, answers, onsets, iois, durations, pitches; private String composition; private int subjectID; /* accessors */ public int getSubjectID() { return subjectID; } public void setSubjectID(int id) { subjectID = id; } /* constructor */ public MelodyResults (String midifile, ArrayList pr, ArrayList o, ArrayList i, ArrayList d, ArrayList pi) { questions = new ArrayList(); answers = new ArrayList(); responses = new ArrayList(); responseTimes = new ArrayList(); composition = compositionName(midifile); probes = pr; onsets = o; iois = i; durations = d; pitches = pi; // Iterator oi = onsets.iterator(); // Iterator di = durations.iterator(); // Iterator ioii = iois.iterator(); // Iterator piti = pitches.iterator(); // while(oi.hasNext()) { // long onset = ((Long)oi.next()).longValue(); // long duration = ((Long)di.next()).longValue(); // long ioi = ((Long)ioii.next()).longValue(); // int pitch = ((Integer)piti.next()).intValue(); // System.out.println(onset + " " + duration + " " + ioi + " " + // pitch + " "); // } } private String compositionName(String midifile) { // assuming extension is '.mid' return midifile.substring(0, midifile.length() - 4); } /* add a reponse i and time t (nanoseconds) */ public void addResponse(int i, long t) { //if (exp.getDebug()) // System.out.println("addResponse(" + i + ", " + t + ")"); responses.add(i); responseTimes.add(t); } /* add question */ public void addQuestion(String question) { questions.add(question); } /* add response to question */ public void addAnswer(String answer) { answers.add(answer); } public void writeResults(File outputFile, boolean header, boolean append) { Writer writer = null; try { writer = new FileWriter (outputFile, append); } catch (IOException e) { System.out.println("Could not write file: " + outputFile.getPath()); return; } try { writeResults(writer, header); writer.close(); } catch (IOException e) { System.out.println (e.getMessage()); return; } } private void writeResults(Writer w, boolean header) throws IOException { Iterator oi = onsets.iterator(); Iterator di = durations.iterator(); Iterator ioii = iois.iterator(); Iterator piti = pitches.iterator(); Iterator pi = probes.iterator(); Iterator ri = responses.iterator(); Iterator rti = responseTimes.iterator(); int eventIndex = 1; if (header) writeHeader(w); String answerString = new String(""); Iterator ai = answers.iterator(); while(ai.hasNext()) answerString = answerString + (String)ai.next() + " "; while(oi.hasNext()) { long onset = ((Long)oi.next()).longValue(); long duration = ((Long)di.next()).longValue(); long ioi = ((Long)ioii.next()).longValue(); int pitch = ((Integer)piti.next()).intValue(); ProbeID p = (ProbeID)pi.next(); int probe = 0; int response = 0; long responseTime = 0; switch(p) { case NOT_PROBE: case START_CLOCK: case BEFORE_PROBE: case AFTER_PROBE: break; case PROBE: case PROBE_EX: case PROBE_UNEX: if (p == ProbeID.PROBE_UNEX) probe = 1; else if (p == ProbeID.PROBE_EX) probe = 2; else if (p == ProbeID.PROBE) probe = 1; if (ri.hasNext()) response = ((Integer)ri.next()).intValue(); if (rti.hasNext()) { responseTime = ((Long)rti.next()).longValue(); } break; default: System.out.println("Unexpected probe id: " + p); break; } w.write(subjectID + " " + composition + " " + eventIndex + " " + onset + " " + duration + " " + ioi + " " + pitch + " " + probe + " " + response + " " + responseTime + " " + answerString + "\n"); eventIndex++; } } private void writeHeader(Writer w) throws IOException { w.write("subject melody note " + "onset duration ioi pitch " + "probe response time"); Iterator qi = questions.iterator(); while(qi.hasNext()) w.write(" " + (String)qi.next()); w.write("\n"); } }