[Bluemusic-commits] SF.net SVN: bluemusic:[4205] blue/trunk/blue-core/src/blue
Brought to you by:
kunstmusik
From: <kun...@us...> - 2010-04-08 04:50:23
|
Revision: 4205 http://bluemusic.svn.sourceforge.net/bluemusic/?rev=4205&view=rev Author: kunstmusik Date: 2010-04-08 04:50:16 +0000 (Thu, 08 Apr 2010) Log Message: ----------- added serialization of MidiInputProcessor to XML Modified Paths: -------------- blue/trunk/blue-core/src/blue/BlueData.java blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java Modified: blue/trunk/blue-core/src/blue/BlueData.java =================================================================== --- blue/trunk/blue-core/src/blue/BlueData.java 2010-04-08 03:48:45 UTC (rev 4204) +++ blue/trunk/blue-core/src/blue/BlueData.java 2010-04-08 04:50:16 UTC (rev 4205) @@ -513,6 +513,9 @@ .equalsIgnoreCase("true")); } else if (nodeName.equals("tempo")) { blueData.tempo = Tempo.loadFromXML(node); + } else if (nodeName.equals("midiInputProcessor")) { + blueData.midiInputProcessor = MidiInputProcessor.loadFromXML( + node); } } @@ -564,6 +567,7 @@ Boolean.toString(loopRendering)); retVal.addElement(tempo.saveAsXML()); + retVal.addElement(midiInputProcessor.saveAsXML()); return retVal; } Modified: blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java =================================================================== --- blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java 2010-04-08 03:48:45 UTC (rev 4204) +++ blue/trunk/blue-core/src/blue/midi/MidiInputProcessor.java 2010-04-08 04:50:16 UTC (rev 4205) @@ -21,7 +21,8 @@ import blue.soundObject.pianoRoll.Scale; import blue.utility.NumberUtilities; -import java.math.BigDecimal; +import electric.xml.Element; +import electric.xml.Elements; import java.text.MessageFormat; /** @@ -32,10 +33,12 @@ private static final MessageFormat PCH_FORMAT = new MessageFormat("{0}.{1}"); - private static final MessageFormat NOTE_FORMAT = new MessageFormat("i{0}.{1} 0 -1 {2} {3}"); + private static final MessageFormat NOTE_FORMAT = new MessageFormat( + "i{0}.{1} 0 -1 {2} {3}"); - private static final MessageFormat NOTE_OFF_FORMAT = new MessageFormat("i-{0}.{1} 0 0"); - + private static final MessageFormat NOTE_OFF_FORMAT = new MessageFormat( + "i-{0}.{1} 0 0"); + private MidiKeyMapping keyMapping = MidiKeyMapping.PCH; private MidiVelocityMapping velMapping = MidiVelocityMapping.MIDI; @@ -91,12 +94,12 @@ } public String getNoteOn(String id, int noteNum, int key, int velocity) { - return NOTE_FORMAT.format(new Object[] { id, noteNum, processKey(key), processVelocity( + return NOTE_FORMAT.format(new Object[]{id, noteNum, processKey(key), processVelocity( velocity)}); } public String getNoteOff(String id, int noteNum) { - return NOTE_OFF_FORMAT.format(new Object[] { id, noteNum}); + return NOTE_OFF_FORMAT.format(new Object[]{id, noteNum}); } protected String processKey(int key) { @@ -104,7 +107,7 @@ int octave, scaleDegree, temp; - switch(keyMapping) { + switch (keyMapping) { case MIDI: retVal = Integer.toString(key); break; @@ -121,23 +124,24 @@ octave = 8 + (temp / scale.getNumScaleDegrees()); scaleDegree = temp % scale.getNumScaleDegrees(); - if(scaleDegree < 0) { + if (scaleDegree < 0) { octave -= 1; scaleDegree = scale.getNumScaleDegrees() + scaleDegree; } - retVal = NumberUtilities.formatFloat(scale.getFrequency(octave, scaleDegree)); + retVal = NumberUtilities.formatFloat(scale.getFrequency(octave, + scaleDegree)); break; case TUNING_BLUE_PCH: temp = key - 60; octave = 8 + (temp / scale.getNumScaleDegrees()); scaleDegree = temp % scale.getNumScaleDegrees(); - - if(scaleDegree < 0) { + + if (scaleDegree < 0) { octave -= 1; scaleDegree = scale.getNumScaleDegrees() + scaleDegree; } - + retVal = octave + "." + scaleDegree; break; } @@ -170,7 +174,7 @@ retVal = Double.toString(((key * key) / 16239.0) * 30000); break; } - + return retVal; } @@ -190,4 +194,52 @@ this.velMapping = velMapping; } + + /* SERIALIZATION */ + public static MidiInputProcessor loadFromXML(Element data) { + MidiInputProcessor processor = new MidiInputProcessor(); + + Elements nodes = data.getElements(); + + while (nodes.hasMoreElements()) { + Element node = nodes.next(); + String nodeName = node.getName(); + + if (nodeName.equals("keyMapping")) { + try { + processor.keyMapping = MidiKeyMapping.valueOf( + node.getTextString()); + } catch (IllegalArgumentException iae) { + + } + } else if (nodeName.equals("velMapping")) { + try { + processor.velMapping = MidiVelocityMapping.valueOf(node. + getTextString()); + } catch (IllegalArgumentException iae) { + + } + } else if (nodeName.equals("pitchConstant")) { + processor.pitchConstant = node.getTextString(); + } else if (nodeName.equals("ampConstant")) { + processor.ampConstant = node.getTextString(); + } else if (nodeName.equals("scale")) { + processor.scale = Scale.loadFromXML(node); + } + } + + return processor; + } + + public Element saveAsXML() { + Element retVal = new Element("midiInputProcessor"); + + retVal.addElement("keyMapping").setText(keyMapping.name()); + retVal.addElement("velMapping").setText(velMapping.name()); + retVal.addElement("pitchConstant").setText(pitchConstant); + retVal.addElement("ampConstant").setText(ampConstant); + retVal.addElement(scale.saveAsXML()); + + return retVal; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |