Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Updated the way lilypond is run so that the png images are cropped an…

…d only a single file (rather than one per page) is produced. Also changed the extra time at the end of the wave/mp3 files to 2 seconds from 4 seconds.
  • Loading branch information...
commit ea767d6f1df9317a4f1200f713af9d7fc6dbc916 1 parent 31ef518
Myron Marston authored July 30, 2008

Showing 39 changed files with 2,591 additions and 2,387 deletions. Show diff stats Hide diff stats

  1. 315  FractalComposer/build/cobertura-report/com.myronmarston.music.AudioFileCreator.html
  2. 56  FractalComposer/build/cobertura-report/com.myronmarston.music.Dynamic.html
  3. 6  FractalComposer/build/cobertura-report/com.myronmarston.music.GermIsEmptyException.html
  4. 6  FractalComposer/build/cobertura-report/com.myronmarston.music.IncorrectNoteStringException.html
  5. 66  FractalComposer/build/cobertura-report/com.myronmarston.music.Instrument.html
  6. 106  FractalComposer/build/cobertura-report/com.myronmarston.music.MidiNote.html
  7. 442  FractalComposer/build/cobertura-report/com.myronmarston.music.Note.html
  8. 150  FractalComposer/build/cobertura-report/com.myronmarston.music.NoteList.html
  9. 170  FractalComposer/build/cobertura-report/com.myronmarston.music.NoteName.html
  10. 32  FractalComposer/build/cobertura-report/com.myronmarston.music.NoteStringInvalidPartException.html
  11. 8  FractalComposer/build/cobertura-report/com.myronmarston.music.NoteStringParseException.html
  12. 1,138  FractalComposer/build/cobertura-report/com.myronmarston.music.OutputManager.html
  13. 516  FractalComposer/build/cobertura-report/com.myronmarston.music.SheetMusicCreator.html
  14. 66  FractalComposer/build/cobertura-report/com.myronmarston.music.Tempo.html
  15. 18  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.AbstractNotationElement.html
  16. 68  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Clef.html
  17. 8  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.GuidoRunException.html
  18. 8  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.LilypondRunException.html
  19. 74  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationDynamic.html
  20. 2  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationElement.html
  21. 210  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationElementList.html
  22. 140  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationNote.html
  23. 202  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Part.html
  24. 88  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.PartSection.html
  25. 481  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Piece.html
  26. 62  FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Tuplet.html
  27. 48  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.ChromaticScale.html
  28. 14  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.HarmonicMinorScale.html
  29. 6  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.InvalidKeySignatureException.html
  30. 104  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.KeySignature.html
  31. 18  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MajorPentatonicScale.html
  32. 18  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MajorScale.html
  33. 18  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MinorPentatonicScale.html
  34. 18  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MinorScale.html
  35. 132  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.Scale.html
  36. 42  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.Tonality.html
  37. 40  FractalComposer/build/cobertura-report/com.myronmarston.music.settings.AbstractVoiceOrSection.html
  38. 82  FractalComposer/build/cobertura-report/com.myronmarston.music.settings.AbstractVoiceOrSectionSettings.html
315  FractalComposer/build/cobertura-report/com.myronmarston.music.AudioFileCreator.html
@@ -12,7 +12,7 @@
12 12
 <div class="separator">&nbsp;</div>
13 13
 <table class="report">
14 14
 <thead><tr>  <td class="heading">Classes in this File</td>  <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td>  <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td>  <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
15  
-  <tr><td><a href="com.myronmarston.music.AudioFileCreator.html">AudioFileCreator</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">88%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">59/67</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">53%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:53px"><span class="text">16/30</span></div></div></td></tr></table></td><td class="value"><span class="hidden">0.0;</span>0</td></tr>
  15
+  <tr><td><a href="com.myronmarston.music.AudioFileCreator.html">AudioFileCreator</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">88%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:88px"><span class="text">60/68</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">53%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:53px"><span class="text">16/30</span></div></div></td></tr></table></td><td class="value"><span class="hidden">0.0;</span>0</td></tr>
16 16
   <tr><td><a href="com.myronmarston.music.AudioFileCreator.html">AudioFileCreator$1</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">0.0;</span>0</td></tr>
17 17
 
18 18
 </table>
@@ -90,11 +90,11 @@
90 90
   <td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Myron</span></pre></td></tr>
91 91
 <tr>  <td class="numLine">&nbsp;36</td>  <td class="nbHits">&nbsp;</td>
92 92
   <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
93  
-<tr>  <td class="numLineCover">&nbsp;37</td>  <td class="nbHitsCovered">&nbsp;52</td>  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> AudioFileCreator {</pre></td></tr>
  93
+<tr>  <td class="numLineCover">&nbsp;37</td>  <td class="nbHitsCovered">&nbsp;25</td>  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> AudioFileCreator {</pre></td></tr>
94 94
 <tr>  <td class="numLine">&nbsp;38</td>  <td class="nbHits">&nbsp;</td>
95 95
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">final</span> OutputManager outputManager;    </pre></td></tr>
96  
-<tr>  <td class="numLineCover">&nbsp;39</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AudioFormat.Encoding MPEG1L3 = Encodings.getEncoding(<span class="string">"MPEG1L3"</span>);</pre></td></tr>
97  
-<tr>  <td class="numLineCover">&nbsp;40</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AudioFileFormat.Type MP3 = AudioFileTypes.getType(<span class="string">"MP3"</span>, <span class="string">"mp3"</span>);</pre></td></tr>
  96
+<tr>  <td class="numLineCover">&nbsp;39</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AudioFormat.Encoding MPEG1L3 = Encodings.getEncoding(<span class="string">"MPEG1L3"</span>);</pre></td></tr>
  97
+<tr>  <td class="numLineCover">&nbsp;40</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> AudioFileFormat.Type MP3 = AudioFileTypes.getType(<span class="string">"MP3"</span>, <span class="string">"mp3"</span>);</pre></td></tr>
98 98
 <tr>  <td class="numLine">&nbsp;41</td>  <td class="nbHits">&nbsp;</td>
99 99
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">double</span> MICROSECONDS_PER_SECOND = 1000000.0;</pre></td></tr>
100 100
 <tr>  <td class="numLine">&nbsp;42</td>  <td class="nbHits">&nbsp;</td>
@@ -111,22 +111,22 @@
111 111
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
112 112
 <tr>  <td class="numLine">&nbsp;48</td>  <td class="nbHits">&nbsp;</td>
113 113
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">static</span> {        </pre></td></tr>
114  
-<tr>  <td class="numLineCover">&nbsp;49</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        Synthesizer synth = <span class="keyword">null</span>;</pre></td></tr>
  114
+<tr>  <td class="numLineCover">&nbsp;49</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        Synthesizer synth = <span class="keyword">null</span>;</pre></td></tr>
115 115
 <tr>  <td class="numLine">&nbsp;50</td>  <td class="nbHits">&nbsp;</td>
116 116
   <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td></tr>
117 117
 <tr>  <td class="numLine">&nbsp;51</td>  <td class="nbHits">&nbsp;</td>
118 118
   <td class="src"><pre class="src">&nbsp;            <span class="keyword">try</span> {</pre></td></tr>
119  
-<tr>  <td class="numLineCover">&nbsp;52</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;                synth = AudioFileCreator.getAudioSynthesizer();</pre></td></tr>
  119
+<tr>  <td class="numLineCover">&nbsp;52</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;                synth = AudioFileCreator.getAudioSynthesizer();</pre></td></tr>
120 120
 <tr>  <td class="numLineCover">&nbsp;53</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            } <span class="keyword">catch</span> (MidiUnavailableException ex) {</span></pre></td></tr>
121 121
 <tr>  <td class="numLineCover">&nbsp;54</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                <span class="keyword">throw</span> <span class="keyword">new</span> UndeclaredThrowableException(ex, <span class="string">"An error occured while getting the Midi synthesizer."</span>);</span></pre></td></tr>
122  
-<tr>  <td class="numLineCover">&nbsp;55</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
123  
-<tr>  <td class="numLineCover">&nbsp;56</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;            SOUNDBANK = synth.getDefaultSoundbank();</pre></td></tr>
  122
+<tr>  <td class="numLineCover">&nbsp;55</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
  123
+<tr>  <td class="numLineCover">&nbsp;56</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;            SOUNDBANK = synth.getDefaultSoundbank();</pre></td></tr>
124 124
 <tr>  <td class="numLine">&nbsp;57</td>  <td class="nbHits">&nbsp;</td>
125 125
   <td class="src"><pre class="src">&nbsp;        } <span class="keyword">finally</span> {</pre></td></tr>
126  
-<tr>  <td class="numLineCover">&nbsp;58</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (synth != <span class="keyword">null</span>) synth.close();</pre></td></tr>
  126
+<tr>  <td class="numLineCover">&nbsp;58</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (synth != <span class="keyword">null</span>) synth.close();</pre></td></tr>
127 127
 <tr>  <td class="numLine">&nbsp;59</td>  <td class="nbHits">&nbsp;</td>
128 128
   <td class="src"><pre class="src">&nbsp;        }                                               </pre></td></tr>
129  
-<tr>  <td class="numLineCover">&nbsp;60</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  129
+<tr>  <td class="numLineCover">&nbsp;60</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
130 130
 <tr>  <td class="numLine">&nbsp;61</td>  <td class="nbHits">&nbsp;</td>
131 131
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
132 132
 <tr>  <td class="numLine">&nbsp;62</td>  <td class="nbHits">&nbsp;</td>
@@ -141,9 +141,9 @@
141 141
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * to convert to a wav or mp3 file.</span></pre></td></tr>
142 142
 <tr>  <td class="numLine">&nbsp;67</td>  <td class="nbHits">&nbsp;</td>
143 143
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
144  
-<tr>  <td class="numLineCover">&nbsp;68</td>  <td class="nbHitsCovered">&nbsp;6</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> AudioFileCreator(OutputManager outputManager) {</pre></td></tr>
145  
-<tr>  <td class="numLineCover">&nbsp;69</td>  <td class="nbHitsCovered">&nbsp;6</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.outputManager = outputManager;</pre></td></tr>
146  
-<tr>  <td class="numLineCover">&nbsp;70</td>  <td class="nbHitsCovered">&nbsp;6</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  144
+<tr>  <td class="numLineCover">&nbsp;68</td>  <td class="nbHitsCovered">&nbsp;3</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> AudioFileCreator(OutputManager outputManager) {</pre></td></tr>
  145
+<tr>  <td class="numLineCover">&nbsp;69</td>  <td class="nbHitsCovered">&nbsp;3</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.outputManager = outputManager;</pre></td></tr>
  146
+<tr>  <td class="numLineCover">&nbsp;70</td>  <td class="nbHitsCovered">&nbsp;3</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
147 147
 <tr>  <td class="numLine">&nbsp;71</td>  <td class="nbHits">&nbsp;</td>
148 148
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
149 149
 <tr>  <td class="numLine">&nbsp;72</td>  <td class="nbHits">&nbsp;</td>
@@ -164,250 +164,253 @@
164 164
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
165 165
 <tr>  <td class="numLine">&nbsp;80</td>  <td class="nbHits">&nbsp;</td>
166 166
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> saveWavFile(<span class="keyword">final</span> String wavFileName) <span class="keyword">throws</span> MidiUnavailableException, IOException {</pre></td></tr>
167  
-<tr>  <td class="numLineCover">&nbsp;81</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        AudioSynthesizer synth = <span class="keyword">null</span>;</pre></td></tr>
168  
-<tr>  <td class="numLineCover">&nbsp;82</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream stream1 = <span class="keyword">null</span>;</pre></td></tr>
169  
-<tr>  <td class="numLineCover">&nbsp;83</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream stream2 = <span class="keyword">null</span>;        </pre></td></tr>
  167
+<tr>  <td class="numLineCover">&nbsp;81</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioSynthesizer synth = <span class="keyword">null</span>;</pre></td></tr>
  168
+<tr>  <td class="numLineCover">&nbsp;82</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream stream1 = <span class="keyword">null</span>;</pre></td></tr>
  169
+<tr>  <td class="numLineCover">&nbsp;83</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream stream2 = <span class="keyword">null</span>;        </pre></td></tr>
170 170
 <tr>  <td class="numLine">&nbsp;84</td>  <td class="nbHits">&nbsp;</td>
171 171
   <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td></tr>
172  
-<tr>  <td class="numLineCover">&nbsp;85</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            synth = AudioFileCreator.getAudioSynthesizer();</pre></td></tr>
  172
+<tr>  <td class="numLineCover">&nbsp;85</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            synth = AudioFileCreator.getAudioSynthesizer();</pre></td></tr>
173 173
 <tr>  <td class="numLine">&nbsp;86</td>  <td class="nbHits">&nbsp;</td>
174 174
   <td class="src"><pre class="src">&nbsp;            </pre></td></tr>
175 175
 <tr>  <td class="numLine">&nbsp;87</td>  <td class="nbHits">&nbsp;</td>
176 176
   <td class="src"><pre class="src">&nbsp;            <span class="comment">// Open AudioStream from AudioSynthesizer with default values</span></pre></td></tr>
177  
-<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            stream1 = synth.openStream(<span class="keyword">null</span>, <span class="keyword">null</span>);            </pre></td></tr>
  177
+<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            stream1 = synth.openStream(<span class="keyword">null</span>, <span class="keyword">null</span>);            </pre></td></tr>
178 178
 <tr>  <td class="numLine">&nbsp;89</td>  <td class="nbHits">&nbsp;</td>
179 179
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
180 180
 <tr>  <td class="numLine">&nbsp;90</td>  <td class="nbHits">&nbsp;</td>
181 181
   <td class="src"><pre class="src">&nbsp;            <span class="comment">// Play Sequence into AudioSynthesizer Receiver.</span></pre></td></tr>
182  
-<tr>  <td class="numLineCover">&nbsp;91</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">double</span> totalLength = <span class="keyword">this</span>.sendOutputSequenceMidiEvents(synth.getReceiver());</pre></td></tr>
  182
+<tr>  <td class="numLineCover">&nbsp;91</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">double</span> totalLength = <span class="keyword">this</span>.sendOutputSequenceMidiEvents(synth.getReceiver());</pre></td></tr>
183 183
 <tr>  <td class="numLine">&nbsp;92</td>  <td class="nbHits">&nbsp;</td>
184 184
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
185 185
 <tr>  <td class="numLine">&nbsp;93</td>  <td class="nbHits">&nbsp;</td>
  186
+  <td class="src"><pre class="src">&nbsp;            <span class="comment">// give it an extra 2 seconds, to the reverb to fade out--otherwise it sounds unnatural</span></pre></td></tr>
  187
+<tr>  <td class="numLineCover">&nbsp;94</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            totalLength += 2;</pre></td></tr>
  188
+<tr>  <td class="numLine">&nbsp;95</td>  <td class="nbHits">&nbsp;</td>
186 189
   <td class="src"><pre class="src">&nbsp;            <span class="comment">// Calculate how long the WAVE file needs to be.</span></pre></td></tr>
187  
-<tr>  <td class="numLineCover">&nbsp;94</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">long</span> len = (<span class="keyword">long</span>) (stream1.getFormat().getFrameRate() * (totalLength + 4));</pre></td></tr>
188  
-<tr>  <td class="numLineCover">&nbsp;95</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            stream2 = <span class="keyword">new</span> AudioInputStream(stream1, stream1.getFormat(), len);</pre></td></tr>
189  
-<tr>  <td class="numLine">&nbsp;96</td>  <td class="nbHits">&nbsp;</td>
  190
+<tr>  <td class="numLineCover">&nbsp;96</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">long</span> len = (<span class="keyword">long</span>) (stream1.getFormat().getFrameRate() * totalLength);</pre></td></tr>
  191
+<tr>  <td class="numLineCover">&nbsp;97</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            stream2 = <span class="keyword">new</span> AudioInputStream(stream1, stream1.getFormat(), len);</pre></td></tr>
  192
+<tr>  <td class="numLine">&nbsp;98</td>  <td class="nbHits">&nbsp;</td>
190 193
   <td class="src"><pre class="src">&nbsp;            </pre></td></tr>
191  
-<tr>  <td class="numLine">&nbsp;97</td>  <td class="nbHits">&nbsp;</td>
192  
-  <td class="src"><pre class="src">&nbsp;            <span class="comment">// Write the wave file to disk</span></pre></td></tr>
193  
-<tr>  <td class="numLineCover">&nbsp;98</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            AudioSystem.write(stream2, AudioFileFormat.Type.WAVE, <span class="keyword">new</span> File(wavFileName));            </pre></td></tr>
194 194
 <tr>  <td class="numLine">&nbsp;99</td>  <td class="nbHits">&nbsp;</td>
  195
+  <td class="src"><pre class="src">&nbsp;            <span class="comment">// Write the wave file to disk</span></pre></td></tr>
  196
+<tr>  <td class="numLineCover">&nbsp;100</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            AudioSystem.write(stream2, AudioFileFormat.Type.WAVE, <span class="keyword">new</span> File(wavFileName));            </pre></td></tr>
  197
+<tr>  <td class="numLine">&nbsp;101</td>  <td class="nbHits">&nbsp;</td>
195 198
   <td class="src"><pre class="src">&nbsp;        } <span class="keyword">finally</span> {</pre></td></tr>
196  
-<tr>  <td class="numLineCover">&nbsp;100</td>  <td class="nbHitsUncovered"><a title="Line 100: Conditional coverage 50% (1/2).">&nbsp;8</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 100: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (stream1 != <span class="keyword">null</span>) stream1.close();</a></span></pre></td></tr>
197  
-<tr>  <td class="numLineCover">&nbsp;101</td>  <td class="nbHitsUncovered"><a title="Line 101: Conditional coverage 50% (1/2).">&nbsp;8</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 101: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (stream2 != <span class="keyword">null</span>) stream2.close();</a></span></pre></td></tr>
198  
-<tr>  <td class="numLineCover">&nbsp;102</td>  <td class="nbHitsUncovered"><a title="Line 102: Conditional coverage 50% (1/2).">&nbsp;8</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 102: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (synth != <span class="keyword">null</span>) synth.close();</a></span></pre></td></tr>
199  
-<tr>  <td class="numLine">&nbsp;103</td>  <td class="nbHits">&nbsp;</td>
200  
-  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
201  
-<tr>  <td class="numLineCover">&nbsp;104</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  199
+<tr>  <td class="numLineCover">&nbsp;102</td>  <td class="nbHitsUncovered"><a title="Line 102: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 102: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (stream1 != <span class="keyword">null</span>) stream1.close();</a></span></pre></td></tr>
  200
+<tr>  <td class="numLineCover">&nbsp;103</td>  <td class="nbHitsUncovered"><a title="Line 103: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 103: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (stream2 != <span class="keyword">null</span>) stream2.close();</a></span></pre></td></tr>
  201
+<tr>  <td class="numLineCover">&nbsp;104</td>  <td class="nbHitsUncovered"><a title="Line 104: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 104: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (synth != <span class="keyword">null</span>) synth.close();</a></span></pre></td></tr>
202 202
 <tr>  <td class="numLine">&nbsp;105</td>  <td class="nbHits">&nbsp;</td>
  203
+  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
  204
+<tr>  <td class="numLineCover">&nbsp;106</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  205
+<tr>  <td class="numLine">&nbsp;107</td>  <td class="nbHits">&nbsp;</td>
203 206
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
204  
-<tr>  <td class="numLine">&nbsp;106</td>  <td class="nbHits">&nbsp;</td>
  207
+<tr>  <td class="numLine">&nbsp;108</td>  <td class="nbHits">&nbsp;</td>
205 208
   <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td></tr>
206  
-<tr>  <td class="numLine">&nbsp;107</td>  <td class="nbHits">&nbsp;</td>
  209
+<tr>  <td class="numLine">&nbsp;109</td>  <td class="nbHits">&nbsp;</td>
207 210
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * Saves the music as a mp3 file.</span></pre></td></tr>
208  
-<tr>  <td class="numLine">&nbsp;108</td>  <td class="nbHits">&nbsp;</td>
  211
+<tr>  <td class="numLine">&nbsp;110</td>  <td class="nbHits">&nbsp;</td>
209 212
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td></tr>
210  
-<tr>  <td class="numLine">&nbsp;109</td>  <td class="nbHits">&nbsp;</td>
  213
+<tr>  <td class="numLine">&nbsp;111</td>  <td class="nbHits">&nbsp;</td>
211 214
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param mp3FileName the file name to save to</span></pre></td></tr>
212  
-<tr>  <td class="numLine">&nbsp;110</td>  <td class="nbHits">&nbsp;</td>
  215
+<tr>  <td class="numLine">&nbsp;112</td>  <td class="nbHits">&nbsp;</td>
213 216
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws java.lang.Exception if there is an error</span></pre></td></tr>
214  
-<tr>  <td class="numLine">&nbsp;111</td>  <td class="nbHits">&nbsp;</td>
  217
+<tr>  <td class="numLine">&nbsp;113</td>  <td class="nbHits">&nbsp;</td>
215 218
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
216  
-<tr>  <td class="numLine">&nbsp;112</td>  <td class="nbHits">&nbsp;</td>
217  
-  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> saveMp3File(<span class="keyword">final</span> String mp3FileName) <span class="keyword">throws</span> Exception {</pre></td></tr>
218  
-<tr>  <td class="numLineCover">&nbsp;113</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        FileHelper.createAndUseTempFile(<span class="string">"TempWav"</span>, <span class="string">".wav"</span>, <span class="keyword">new</span> FileHelper.TempFileUser() {</pre></td></tr>
219 219
 <tr>  <td class="numLine">&nbsp;114</td>  <td class="nbHits">&nbsp;</td>
  220
+  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> saveMp3File(<span class="keyword">final</span> String mp3FileName) <span class="keyword">throws</span> Exception {</pre></td></tr>
  221
+<tr>  <td class="numLineCover">&nbsp;115</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        FileHelper.createAndUseTempFile(<span class="string">"TempWav"</span>, <span class="string">".wav"</span>, <span class="keyword">new</span> FileHelper.TempFileUser() {</pre></td></tr>
  222
+<tr>  <td class="numLine">&nbsp;116</td>  <td class="nbHits">&nbsp;</td>
220 223
   <td class="src"><pre class="src">&nbsp;            <span class="keyword">public</span> <span class="keyword">void</span> useTempFile(String tempFileName) <span class="keyword">throws</span> Exception {    </pre></td></tr>
221  
-<tr>  <td class="numLineCover">&nbsp;115</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;                AudioFileCreator.<span class="keyword">this</span>.saveWavFile(tempFileName);                </pre></td></tr>
222  
-<tr>  <td class="numLineCover">&nbsp;116</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;                AudioFileCreator.convertWavToMp3(tempFileName, mp3FileName);</pre></td></tr>
223  
-<tr>  <td class="numLineCover">&nbsp;117</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
224  
-<tr>  <td class="numLine">&nbsp;118</td>  <td class="nbHits">&nbsp;</td>
225  
-  <td class="src"><pre class="src">&nbsp;        });</pre></td></tr>
226  
-<tr>  <td class="numLineCover">&nbsp;119</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  224
+<tr>  <td class="numLineCover">&nbsp;117</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;                AudioFileCreator.<span class="keyword">this</span>.saveWavFile(tempFileName);                </pre></td></tr>
  225
+<tr>  <td class="numLineCover">&nbsp;118</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;                AudioFileCreator.convertWavToMp3(tempFileName, mp3FileName);</pre></td></tr>
  226
+<tr>  <td class="numLineCover">&nbsp;119</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
227 227
 <tr>  <td class="numLine">&nbsp;120</td>  <td class="nbHits">&nbsp;</td>
  228
+  <td class="src"><pre class="src">&nbsp;        });</pre></td></tr>
  229
+<tr>  <td class="numLineCover">&nbsp;121</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  230
+<tr>  <td class="numLine">&nbsp;122</td>  <td class="nbHits">&nbsp;</td>
228 231
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
229  
-<tr>  <td class="numLine">&nbsp;121</td>  <td class="nbHits">&nbsp;</td>
  232
+<tr>  <td class="numLine">&nbsp;123</td>  <td class="nbHits">&nbsp;</td>
230 233
   <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td></tr>
231  
-<tr>  <td class="numLine">&nbsp;122</td>  <td class="nbHits">&nbsp;</td>
  234
+<tr>  <td class="numLine">&nbsp;124</td>  <td class="nbHits">&nbsp;</td>
232 235
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * Converts the given wav file to an mp3 file.</span></pre></td></tr>
233  
-<tr>  <td class="numLine">&nbsp;123</td>  <td class="nbHits">&nbsp;</td>
  236
+<tr>  <td class="numLine">&nbsp;125</td>  <td class="nbHits">&nbsp;</td>
234 237
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td></tr>
235  
-<tr>  <td class="numLine">&nbsp;124</td>  <td class="nbHits">&nbsp;</td>
  238
+<tr>  <td class="numLine">&nbsp;126</td>  <td class="nbHits">&nbsp;</td>
236 239
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param wavFileName the wav file</span></pre></td></tr>
237  
-<tr>  <td class="numLine">&nbsp;125</td>  <td class="nbHits">&nbsp;</td>
  240
+<tr>  <td class="numLine">&nbsp;127</td>  <td class="nbHits">&nbsp;</td>
238 241
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param mp3FileName the mp3 file</span></pre></td></tr>
239  
-<tr>  <td class="numLine">&nbsp;126</td>  <td class="nbHits">&nbsp;</td>
  242
+<tr>  <td class="numLine">&nbsp;128</td>  <td class="nbHits">&nbsp;</td>
240 243
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the number of bytes written to the file</span></pre></td></tr>
241  
-<tr>  <td class="numLine">&nbsp;127</td>  <td class="nbHits">&nbsp;</td>
  244
+<tr>  <td class="numLine">&nbsp;129</td>  <td class="nbHits">&nbsp;</td>
242 245
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws javax.sound.sampled.UnsupportedAudioFileException if the given</span></pre></td></tr>
243  
-<tr>  <td class="numLine">&nbsp;128</td>  <td class="nbHits">&nbsp;</td>
  246
+<tr>  <td class="numLine">&nbsp;130</td>  <td class="nbHits">&nbsp;</td>
244 247
   <td class="src"><pre class="src">&nbsp;<span class="comment">     *         wav file is in an unsupported format</span></pre></td></tr>
245  
-<tr>  <td class="numLine">&nbsp;129</td>  <td class="nbHits">&nbsp;</td>
  248
+<tr>  <td class="numLine">&nbsp;131</td>  <td class="nbHits">&nbsp;</td>
246 249
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws java.io.IOException if there is an I/O error</span></pre></td></tr>
247  
-<tr>  <td class="numLine">&nbsp;130</td>  <td class="nbHits">&nbsp;</td>
  250
+<tr>  <td class="numLine">&nbsp;132</td>  <td class="nbHits">&nbsp;</td>
248 251
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
249  
-<tr>  <td class="numLine">&nbsp;131</td>  <td class="nbHits">&nbsp;</td>
  252
+<tr>  <td class="numLine">&nbsp;133</td>  <td class="nbHits">&nbsp;</td>
250 253
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">int</span> convertWavToMp3(String wavFileName, String mp3FileName) <span class="keyword">throws</span> UnsupportedAudioFileException, IOException {                                </pre></td></tr>
251  
-<tr>  <td class="numLineCover">&nbsp;132</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream streamToConvert = <span class="keyword">null</span>;</pre></td></tr>
252  
-<tr>  <td class="numLineCover">&nbsp;133</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream streamThatCanConvertToMp3 = <span class="keyword">null</span>;</pre></td></tr>
253  
-<tr>  <td class="numLineCover">&nbsp;134</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream mp3Stream = <span class="keyword">null</span>;</pre></td></tr>
254  
-<tr>  <td class="numLine">&nbsp;135</td>  <td class="nbHits">&nbsp;</td>
  254
+<tr>  <td class="numLineCover">&nbsp;134</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream streamToConvert = <span class="keyword">null</span>;</pre></td></tr>
  255
+<tr>  <td class="numLineCover">&nbsp;135</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream streamThatCanConvertToMp3 = <span class="keyword">null</span>;</pre></td></tr>
  256
+<tr>  <td class="numLineCover">&nbsp;136</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        AudioInputStream mp3Stream = <span class="keyword">null</span>;</pre></td></tr>
  257
+<tr>  <td class="numLine">&nbsp;137</td>  <td class="nbHits">&nbsp;</td>
255 258
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
256  
-<tr>  <td class="numLine">&nbsp;136</td>  <td class="nbHits">&nbsp;</td>
  259
+<tr>  <td class="numLine">&nbsp;138</td>  <td class="nbHits">&nbsp;</td>
257 260
   <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td></tr>
258  
-<tr>  <td class="numLineCover">&nbsp;137</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            streamToConvert = AudioSystem.getAudioInputStream(<span class="keyword">new</span> File(wavFileName));    </pre></td></tr>
259  
-<tr>  <td class="numLineCover">&nbsp;138</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            streamThatCanConvertToMp3 = AudioFileCreator.getStreamThatCanConvertToMp3(streamToConvert);                </pre></td></tr>
260  
-<tr>  <td class="numLineCover">&nbsp;139</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            mp3Stream =  AudioSystem.getAudioInputStream(MPEG1L3, streamToConvert);          </pre></td></tr>
261  
-<tr>  <td class="numLineCover">&nbsp;140</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">return</span> AudioSystem.write(mp3Stream, MP3, <span class="keyword">new</span> File(mp3FileName));</pre></td></tr>
262  
-<tr>  <td class="numLine">&nbsp;141</td>  <td class="nbHits">&nbsp;</td>
  261
+<tr>  <td class="numLineCover">&nbsp;139</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            streamToConvert = AudioSystem.getAudioInputStream(<span class="keyword">new</span> File(wavFileName));    </pre></td></tr>
  262
+<tr>  <td class="numLineCover">&nbsp;140</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            streamThatCanConvertToMp3 = AudioFileCreator.getStreamThatCanConvertToMp3(streamToConvert);                </pre></td></tr>
  263
+<tr>  <td class="numLineCover">&nbsp;141</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            mp3Stream =  AudioSystem.getAudioInputStream(MPEG1L3, streamToConvert);          </pre></td></tr>
  264
+<tr>  <td class="numLineCover">&nbsp;142</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">return</span> AudioSystem.write(mp3Stream, MP3, <span class="keyword">new</span> File(mp3FileName));</pre></td></tr>
  265
+<tr>  <td class="numLine">&nbsp;143</td>  <td class="nbHits">&nbsp;</td>
263 266
   <td class="src"><pre class="src">&nbsp;        } <span class="keyword">finally</span> {</pre></td></tr>
264  
-<tr>  <td class="numLineCover">&nbsp;142</td>  <td class="nbHitsUncovered"><a title="Line 142: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 142: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (streamToConvert != <span class="keyword">null</span>) streamToConvert.close();</a></span></pre></td></tr>
265  
-<tr>  <td class="numLineCover">&nbsp;143</td>  <td class="nbHitsUncovered"><a title="Line 143: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 143: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (streamThatCanConvertToMp3 != <span class="keyword">null</span>) streamThatCanConvertToMp3.close();</a></span></pre></td></tr>
266  
-<tr>  <td class="numLineCover">&nbsp;144</td>  <td class="nbHitsUncovered"><a title="Line 144: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 144: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (mp3Stream != <span class="keyword">null</span>) mp3Stream.close();</a></span></pre></td></tr>
267  
-<tr>  <td class="numLine">&nbsp;145</td>  <td class="nbHits">&nbsp;</td>
  267
+<tr>  <td class="numLineCover">&nbsp;144</td>  <td class="nbHitsUncovered"><a title="Line 144: Conditional coverage 50% (1/2).">&nbsp;2</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 144: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (streamToConvert != <span class="keyword">null</span>) streamToConvert.close();</a></span></pre></td></tr>
  268
+<tr>  <td class="numLineCover">&nbsp;145</td>  <td class="nbHitsUncovered"><a title="Line 145: Conditional coverage 50% (1/2).">&nbsp;2</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 145: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (streamThatCanConvertToMp3 != <span class="keyword">null</span>) streamThatCanConvertToMp3.close();</a></span></pre></td></tr>
  269
+<tr>  <td class="numLineCover">&nbsp;146</td>  <td class="nbHitsUncovered"><a title="Line 146: Conditional coverage 50% (1/2).">&nbsp;2</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 146: Conditional coverage 50% (1/2).">            <span class="keyword">if</span> (mp3Stream != <span class="keyword">null</span>) mp3Stream.close();</a></span></pre></td></tr>
  270
+<tr>  <td class="numLine">&nbsp;147</td>  <td class="nbHits">&nbsp;</td>
268 271
   <td class="src"><pre class="src">&nbsp;        }        </pre></td></tr>
269  
-<tr>  <td class="numLine">&nbsp;146</td>  <td class="nbHits">&nbsp;</td>
  272
+<tr>  <td class="numLine">&nbsp;148</td>  <td class="nbHits">&nbsp;</td>
270 273
   <td class="src"><pre class="src">&nbsp;    }    </pre></td></tr>
271  
-<tr>  <td class="numLine">&nbsp;147</td>  <td class="nbHits">&nbsp;</td>
  274
+<tr>  <td class="numLine">&nbsp;149</td>  <td class="nbHits">&nbsp;</td>
272 275
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
273  
-<tr>  <td class="numLine">&nbsp;148</td>  <td class="nbHits">&nbsp;</td>
  276
+<tr>  <td class="numLine">&nbsp;150</td>  <td class="nbHits">&nbsp;</td>
274 277
   <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td></tr>
275  
-<tr>  <td class="numLine">&nbsp;149</td>  <td class="nbHits">&nbsp;</td>
  278
+<tr>  <td class="numLine">&nbsp;151</td>  <td class="nbHits">&nbsp;</td>
276 279
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * Gets a stream that can be converted to mp3.  This might be the given </span></pre></td></tr>
277  
-<tr>  <td class="numLine">&nbsp;150</td>  <td class="nbHits">&nbsp;</td>
  280
+<tr>  <td class="numLine">&nbsp;152</td>  <td class="nbHits">&nbsp;</td>
278 281
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * stream or an intermediary stream.</span></pre></td></tr>
279  
-<tr>  <td class="numLine">&nbsp;151</td>  <td class="nbHits">&nbsp;</td>
  282
+<tr>  <td class="numLine">&nbsp;153</td>  <td class="nbHits">&nbsp;</td>
280 283
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td></tr>
281  
-<tr>  <td class="numLine">&nbsp;152</td>  <td class="nbHits">&nbsp;</td>
  284
+<tr>  <td class="numLine">&nbsp;154</td>  <td class="nbHits">&nbsp;</td>
282 285
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param streamToConvert the input stream containing PCM data</span></pre></td></tr>
283  
-<tr>  <td class="numLine">&nbsp;153</td>  <td class="nbHits">&nbsp;</td>
  286
+<tr>  <td class="numLine">&nbsp;155</td>  <td class="nbHits">&nbsp;</td>
284 287
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a stream that can be converted to mp3 format</span></pre></td></tr>
285  
-<tr>  <td class="numLine">&nbsp;154</td>  <td class="nbHits">&nbsp;</td>
  288
+<tr>  <td class="numLine">&nbsp;156</td>  <td class="nbHits">&nbsp;</td>
286 289
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
287  
-<tr>  <td class="numLine">&nbsp;155</td>  <td class="nbHits">&nbsp;</td>
  290
+<tr>  <td class="numLine">&nbsp;157</td>  <td class="nbHits">&nbsp;</td>
288 291
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> AudioInputStream getStreamThatCanConvertToMp3(AudioInputStream streamToConvert) {</pre></td></tr>
289  
-<tr>  <td class="numLineCover">&nbsp;156</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AudioFormat sourceFormat = streamToConvert.getFormat();</pre></td></tr>
290  
-<tr>  <td class="numLineCover">&nbsp;157</td>  <td class="nbHitsUncovered"><a title="Line 157: Conditional coverage 50% (1/2).">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 157: Conditional coverage 50% (1/2).">        <span class="keyword">if</span> (AudioSystem.isConversionSupported(MPEG1L3, sourceFormat)) <span class="keyword">return</span> streamToConvert;</a></span></pre></td></tr>
291  
-<tr>  <td class="numLine">&nbsp;158</td>  <td class="nbHits">&nbsp;</td>
  292
+<tr>  <td class="numLineCover">&nbsp;158</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        AudioFormat sourceFormat = streamToConvert.getFormat();</pre></td></tr>
  293
+<tr>  <td class="numLineCover">&nbsp;159</td>  <td class="nbHitsUncovered"><a title="Line 159: Conditional coverage 50% (1/2).">&nbsp;2</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 159: Conditional coverage 50% (1/2).">        <span class="keyword">if</span> (AudioSystem.isConversionSupported(MPEG1L3, sourceFormat)) <span class="keyword">return</span> streamToConvert;</a></span></pre></td></tr>
  294
+<tr>  <td class="numLine">&nbsp;160</td>  <td class="nbHits">&nbsp;</td>
292 295
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
293  
-<tr>  <td class="numLine">&nbsp;159</td>  <td class="nbHits">&nbsp;</td>
294  
-  <td class="src"><pre class="src">&nbsp;        <span class="comment">// direct conversion to mp3 is not possible; try an intermediate PCM format</span></pre></td></tr>
295  
-<tr>  <td class="numLineCover">&nbsp;160</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        AudioFormat intermediateFormat = <span class="keyword">new</span> AudioFormat(</span></pre></td></tr>
296 296
 <tr>  <td class="numLine">&nbsp;161</td>  <td class="nbHits">&nbsp;</td>
  297
+  <td class="src"><pre class="src">&nbsp;        <span class="comment">// direct conversion to mp3 is not possible; try an intermediate PCM format</span></pre></td></tr>
  298
+<tr>  <td class="numLineCover">&nbsp;162</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        AudioFormat intermediateFormat = <span class="keyword">new</span> AudioFormat(</span></pre></td></tr>
  299
+<tr>  <td class="numLine">&nbsp;163</td>  <td class="nbHits">&nbsp;</td>
297 300
   <td class="src"><pre class="src">&nbsp;             AudioFormat.Encoding.PCM_SIGNED,</pre></td></tr>
298  
-<tr>  <td class="numLine">&nbsp;162</td>  <td class="nbHits">&nbsp;</td>
  301
+<tr>  <td class="numLine">&nbsp;164</td>  <td class="nbHits">&nbsp;</td>
299 302
   <td class="src"><pre class="src">&nbsp;             sourceFormat.getSampleRate(),</pre></td></tr>
300  
-<tr>  <td class="numLine">&nbsp;163</td>  <td class="nbHits">&nbsp;</td>
  303
+<tr>  <td class="numLine">&nbsp;165</td>  <td class="nbHits">&nbsp;</td>
301 304
   <td class="src"><pre class="src">&nbsp;             16,</pre></td></tr>
302  
-<tr>  <td class="numLine">&nbsp;164</td>  <td class="nbHits">&nbsp;</td>
  305
+<tr>  <td class="numLine">&nbsp;166</td>  <td class="nbHits">&nbsp;</td>
303 306
   <td class="src"><pre class="src">&nbsp;             sourceFormat.getChannels(),</pre></td></tr>
304  
-<tr>  <td class="numLine">&nbsp;165</td>  <td class="nbHits">&nbsp;</td>
  307
+<tr>  <td class="numLine">&nbsp;167</td>  <td class="nbHits">&nbsp;</td>
305 308
   <td class="src"><pre class="src">&nbsp;             2 * sourceFormat.getChannels(), <span class="comment">// frameSize</span></pre></td></tr>
306  
-<tr>  <td class="numLine">&nbsp;166</td>  <td class="nbHits">&nbsp;</td>
  309
+<tr>  <td class="numLine">&nbsp;168</td>  <td class="nbHits">&nbsp;</td>
307 310
   <td class="src"><pre class="src">&nbsp;             sourceFormat.getSampleRate(),</pre></td></tr>
308  
-<tr>  <td class="numLine">&nbsp;167</td>  <td class="nbHits">&nbsp;</td>
  311
+<tr>  <td class="numLine">&nbsp;169</td>  <td class="nbHits">&nbsp;</td>
309 312
   <td class="src"><pre class="src">&nbsp;             <span class="keyword">false</span>);</pre></td></tr>
310  
-<tr>  <td class="numLine">&nbsp;168</td>  <td class="nbHits">&nbsp;</td>
311  
-  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
312  
-<tr>  <td class="numLineCover">&nbsp;169</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> AudioSystem.getAudioInputStream(intermediateFormat, streamToConvert);        </span></pre></td></tr>
313 313
 <tr>  <td class="numLine">&nbsp;170</td>  <td class="nbHits">&nbsp;</td>
  314
+  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
  315
+<tr>  <td class="numLineCover">&nbsp;171</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> AudioSystem.getAudioInputStream(intermediateFormat, streamToConvert);        </span></pre></td></tr>
  316
+<tr>  <td class="numLine">&nbsp;172</td>  <td class="nbHits">&nbsp;</td>
314 317
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
315  
-<tr>  <td class="numLine">&nbsp;171</td>  <td class="nbHits">&nbsp;</td>
  318
+<tr>  <td class="numLine">&nbsp;173</td>  <td class="nbHits">&nbsp;</td>
316 319
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
317  
-<tr>  <td class="numLine">&nbsp;172</td>  <td class="nbHits">&nbsp;</td>
  320
+<tr>  <td class="numLine">&nbsp;174</td>  <td class="nbHits">&nbsp;</td>
318 321
   <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td></tr>
319  
-<tr>  <td class="numLine">&nbsp;173</td>  <td class="nbHits">&nbsp;</td>
  322
+<tr>  <td class="numLine">&nbsp;175</td>  <td class="nbHits">&nbsp;</td>
320 323
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * Gets the audio synthesizer.</span></pre></td></tr>
321  
-<tr>  <td class="numLine">&nbsp;174</td>  <td class="nbHits">&nbsp;</td>
  324
+<tr>  <td class="numLine">&nbsp;176</td>  <td class="nbHits">&nbsp;</td>
322 325
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td></tr>
323  
-<tr>  <td class="numLine">&nbsp;175</td>  <td class="nbHits">&nbsp;</td>
  326
+<tr>  <td class="numLine">&nbsp;177</td>  <td class="nbHits">&nbsp;</td>
324 327
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the audio synthesizer</span></pre></td></tr>
325  
-<tr>  <td class="numLine">&nbsp;176</td>  <td class="nbHits">&nbsp;</td>
  328
+<tr>  <td class="numLine">&nbsp;178</td>  <td class="nbHits">&nbsp;</td>
326 329
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @throws javax.sound.midi.MidiUnavailableException if the audio </span></pre></td></tr>
327  
-<tr>  <td class="numLine">&nbsp;177</td>  <td class="nbHits">&nbsp;</td>
  330
+<tr>  <td class="numLine">&nbsp;179</td>  <td class="nbHits">&nbsp;</td>
328 331
   <td class="src"><pre class="src">&nbsp;<span class="comment">     *         synthesizer cannot be found</span></pre></td></tr>
329  
-<tr>  <td class="numLine">&nbsp;178</td>  <td class="nbHits">&nbsp;</td>
  332
+<tr>  <td class="numLine">&nbsp;180</td>  <td class="nbHits">&nbsp;</td>
330 333
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
331  
-<tr>  <td class="numLine">&nbsp;179</td>  <td class="nbHits">&nbsp;</td>
  334
+<tr>  <td class="numLine">&nbsp;181</td>  <td class="nbHits">&nbsp;</td>
332 335
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> AudioSynthesizer getAudioSynthesizer() <span class="keyword">throws</span> MidiUnavailableException {</pre></td></tr>
333  
-<tr>  <td class="numLine">&nbsp;180</td>  <td class="nbHits">&nbsp;</td>
  336
+<tr>  <td class="numLine">&nbsp;182</td>  <td class="nbHits">&nbsp;</td>
334 337
   <td class="src"><pre class="src">&nbsp;        <span class="comment">// First check if default synthesizer is AudioSynthesizer.</span></pre></td></tr>
335  
-<tr>  <td class="numLineCover">&nbsp;181</td>  <td class="nbHitsCovered">&nbsp;56</td>  <td class="src"><pre class="src">&nbsp;        Synthesizer synth = MidiSystem.getSynthesizer();</pre></td></tr>
336  
-<tr>  <td class="numLineCover">&nbsp;182</td>  <td class="nbHitsUncovered"><a title="Line 182: Conditional coverage 50% (1/2).">&nbsp;56</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 182: Conditional coverage 50% (1/2).">        <span class="keyword">if</span> (synth <span class="keyword">instanceof</span> AudioSynthesizer) <span class="keyword">return</span> (AudioSynthesizer) synth;</a></span></pre></td></tr>
337  
-<tr>  <td class="numLine">&nbsp;183</td>  <td class="nbHits">&nbsp;</td>
  338
+<tr>  <td class="numLineCover">&nbsp;183</td>  <td class="nbHitsCovered">&nbsp;27</td>  <td class="src"><pre class="src">&nbsp;        Synthesizer synth = MidiSystem.getSynthesizer();</pre></td></tr>
  339
+<tr>  <td class="numLineCover">&nbsp;184</td>  <td class="nbHitsUncovered"><a title="Line 184: Conditional coverage 50% (1/2).">&nbsp;27</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 184: Conditional coverage 50% (1/2).">        <span class="keyword">if</span> (synth <span class="keyword">instanceof</span> AudioSynthesizer) <span class="keyword">return</span> (AudioSynthesizer) synth;</a></span></pre></td></tr>
  340
+<tr>  <td class="numLine">&nbsp;185</td>  <td class="nbHits">&nbsp;</td>
338 341
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
339  
-<tr>  <td class="numLine">&nbsp;184</td>  <td class="nbHits">&nbsp;</td>
  342
+<tr>  <td class="numLine">&nbsp;186</td>  <td class="nbHits">&nbsp;</td>
340 343
   <td class="src"><pre class="src">&nbsp;        <span class="comment">// now check the others...        </span></pre></td></tr>
341  
-<tr>  <td class="numLineCover">&nbsp;185</td>  <td class="nbHitsUncovered"><a title="Line 185: Conditional coverage 0% (0/2).">&nbsp;0</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 185: Conditional coverage 0% (0/2).">        <span class="keyword">for</span> (MidiDevice.Info info : MidiSystem.getMidiDeviceInfo()) {</a></span></pre></td></tr>
342  
-<tr>  <td class="numLineCover">&nbsp;186</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            MidiDevice device = MidiSystem.getMidiDevice(info);</span></pre></td></tr>
343  
-<tr>  <td class="numLineCover">&nbsp;187</td>  <td class="nbHitsUncovered"><a title="Line 187: Conditional coverage 0% (0/2).">&nbsp;0</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 187: Conditional coverage 0% (0/2).">            <span class="keyword">if</span> (device <span class="keyword">instanceof</span> AudioSynthesizer) <span class="keyword">return</span> (AudioSynthesizer) device;</a></span></pre></td></tr>
344  
-<tr>  <td class="numLine">&nbsp;188</td>  <td class="nbHits">&nbsp;</td>
  344
+<tr>  <td class="numLineCover">&nbsp;187</td>  <td class="nbHitsUncovered"><a title="Line 187: Conditional coverage 0% (0/2).">&nbsp;0</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 187: Conditional coverage 0% (0/2).">        <span class="keyword">for</span> (MidiDevice.Info info : MidiSystem.getMidiDeviceInfo()) {</a></span></pre></td></tr>
  345
+<tr>  <td class="numLineCover">&nbsp;188</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            MidiDevice device = MidiSystem.getMidiDevice(info);</span></pre></td></tr>
  346
+<tr>  <td class="numLineCover">&nbsp;189</td>  <td class="nbHitsUncovered"><a title="Line 189: Conditional coverage 0% (0/2).">&nbsp;0</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 189: Conditional coverage 0% (0/2).">            <span class="keyword">if</span> (device <span class="keyword">instanceof</span> AudioSynthesizer) <span class="keyword">return</span> (AudioSynthesizer) device;</a></span></pre></td></tr>
  347
+<tr>  <td class="numLine">&nbsp;190</td>  <td class="nbHits">&nbsp;</td>
345 348
   <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
346  
-<tr>  <td class="numLine">&nbsp;189</td>  <td class="nbHits">&nbsp;</td>
347  
-  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
348  
-<tr>  <td class="numLineCover">&nbsp;190</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">throw</span> <span class="keyword">new</span> MidiUnavailableException(<span class="string">"The AudioSynthesizer is not available."</span>);                      </span></pre></td></tr>
349 349
 <tr>  <td class="numLine">&nbsp;191</td>  <td class="nbHits">&nbsp;</td>
  350
+  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
  351
+<tr>  <td class="numLineCover">&nbsp;192</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">throw</span> <span class="keyword">new</span> MidiUnavailableException(<span class="string">"The AudioSynthesizer is not available."</span>);                      </span></pre></td></tr>
  352
+<tr>  <td class="numLine">&nbsp;193</td>  <td class="nbHits">&nbsp;</td>
350 353
   <td class="src"><pre class="src">&nbsp;    }    </pre></td></tr>
351  
-<tr>  <td class="numLine">&nbsp;192</td>  <td class="nbHits">&nbsp;</td>
  354
+<tr>  <td class="numLine">&nbsp;194</td>  <td class="nbHits">&nbsp;</td>
352 355
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
353  
-<tr>  <td class="numLine">&nbsp;193</td>  <td class="nbHits">&nbsp;</td>
  356
+<tr>  <td class="numLine">&nbsp;195</td>  <td class="nbHits">&nbsp;</td>
354 357
   <td class="src"><pre class="src">&nbsp;    <span class="comment">/**</span></pre></td></tr>
355  
-<tr>  <td class="numLine">&nbsp;194</td>  <td class="nbHits">&nbsp;</td>
  358
+<tr>  <td class="numLine">&nbsp;196</td>  <td class="nbHits">&nbsp;</td>
356 359
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * Sends the outputManager's midi sequence events to the given receiver.</span></pre></td></tr>
357  
-<tr>  <td class="numLine">&nbsp;195</td>  <td class="nbHits">&nbsp;</td>
  360
+<tr>  <td class="numLine">&nbsp;197</td>  <td class="nbHits">&nbsp;</td>
358 361
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * </span></pre></td></tr>
359  
-<tr>  <td class="numLine">&nbsp;196</td>  <td class="nbHits">&nbsp;</td>
  362
+<tr>  <td class="numLine">&nbsp;198</td>  <td class="nbHits">&nbsp;</td>
360 363
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param receiver the receiver</span></pre></td></tr>
361  
-<tr>  <td class="numLine">&nbsp;197</td>  <td class="nbHits">&nbsp;</td>
  364
+<tr>  <td class="numLine">&nbsp;199</td>  <td class="nbHits">&nbsp;</td>
362 365
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return the length of the audio, in seconds</span></pre></td></tr>
363  
-<tr>  <td class="numLine">&nbsp;198</td>  <td class="nbHits">&nbsp;</td>
  366
+<tr>  <td class="numLine">&nbsp;200</td>  <td class="nbHits">&nbsp;</td>
364 367
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
365  
-<tr>  <td class="numLine">&nbsp;199</td>  <td class="nbHits">&nbsp;</td>
366  
-  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">double</span> sendOutputSequenceMidiEvents(Receiver receiver) {</pre></td></tr>
367  
-<tr>  <td class="numLineCover">&nbsp;200</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        Sequence sequence = <span class="keyword">this</span>.outputManager.getSequence();</pre></td></tr>
368 368
 <tr>  <td class="numLine">&nbsp;201</td>  <td class="nbHits">&nbsp;</td>
369  
-  <td class="src"><pre class="src">&nbsp;        <span class="comment">// this method is only designed to handle the PPQ division type.</span></pre></td></tr>
370  
-<tr>  <td class="numLineCover">&nbsp;202</td>  <td class="nbHitsUncovered"><a title="Line 202: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;8</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 202: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">        <span class="keyword">assert</span> sequence.getDivisionType() == Sequence.PPQ : sequence.getDivisionType();                </a></span></pre></td></tr>
  369
+  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">double</span> sendOutputSequenceMidiEvents(Receiver receiver) {</pre></td></tr>
  370
+<tr>  <td class="numLineCover">&nbsp;202</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        Sequence sequence = <span class="keyword">this</span>.outputManager.getSequence();</pre></td></tr>
371 371
 <tr>  <td class="numLine">&nbsp;203</td>  <td class="nbHits">&nbsp;</td>
  372
+  <td class="src"><pre class="src">&nbsp;        <span class="comment">// this method is only designed to handle the PPQ division type.</span></pre></td></tr>
  373
+<tr>  <td class="numLineCover">&nbsp;204</td>  <td class="nbHitsUncovered"><a title="Line 204: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;4</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 204: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">        <span class="keyword">assert</span> sequence.getDivisionType() == Sequence.PPQ : sequence.getDivisionType();                </a></span></pre></td></tr>
  374
+<tr>  <td class="numLine">&nbsp;205</td>  <td class="nbHits">&nbsp;</td>
372 375
   <td class="src"><pre class="src">&nbsp;                                                              </pre></td></tr>
373  
-<tr>  <td class="numLineCover">&nbsp;204</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> microsecondsPerQtrNote = Tempo.convertToMicrosecondsPerQuarterNote(<span class="keyword">this</span>.outputManager.getFractalPiece().getTempo());</pre></td></tr>
374  
-<tr>  <td class="numLineCover">&nbsp;205</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> seqRes = sequence.getResolution();</pre></td></tr>
375  
-<tr>  <td class="numLineCover">&nbsp;206</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">long</span> totalTime = 0;</pre></td></tr>
376  
-<tr>  <td class="numLine">&nbsp;207</td>  <td class="nbHits">&nbsp;</td>
  376
+<tr>  <td class="numLineCover">&nbsp;206</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> microsecondsPerQtrNote = Tempo.convertToMicrosecondsPerQuarterNote(<span class="keyword">this</span>.outputManager.getFractalPiece().getTempo());</pre></td></tr>
  377
+<tr>  <td class="numLineCover">&nbsp;207</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> seqRes = sequence.getResolution();</pre></td></tr>
  378
+<tr>  <td class="numLineCover">&nbsp;208</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">long</span> totalTime = 0;</pre></td></tr>
  379
+<tr>  <td class="numLine">&nbsp;209</td>  <td class="nbHits">&nbsp;</td>
377 380
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
378  
-<tr>  <td class="numLineCover">&nbsp;208</td>  <td class="nbHitsCovered"><a title="Line 208: Conditional coverage 100% (2/2).">&nbsp;24</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 208: Conditional coverage 100% (2/2).">        <span class="keyword">for</span> (Track track : sequence.getTracks()) {</a></pre></td></tr>
379  
-<tr>  <td class="numLineCover">&nbsp;209</td>  <td class="nbHitsCovered">&nbsp;16</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">long</span> lastTick = 0;</pre></td></tr>
380  
-<tr>  <td class="numLineCover">&nbsp;210</td>  <td class="nbHitsCovered">&nbsp;16</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">long</span> curTime = 0;</pre></td></tr>
381  
-<tr>  <td class="numLine">&nbsp;211</td>  <td class="nbHits">&nbsp;</td>
  381
+<tr>  <td class="numLineCover">&nbsp;210</td>  <td class="nbHitsCovered"><a title="Line 210: Conditional coverage 100% (2/2).">&nbsp;12</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 210: Conditional coverage 100% (2/2).">        <span class="keyword">for</span> (Track track : sequence.getTracks()) {</a></pre></td></tr>
  382
+<tr>  <td class="numLineCover">&nbsp;211</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">long</span> lastTick = 0;</pre></td></tr>
  383
+<tr>  <td class="numLineCover">&nbsp;212</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">long</span> curTime = 0;</pre></td></tr>
  384
+<tr>  <td class="numLine">&nbsp;213</td>  <td class="nbHits">&nbsp;</td>
382 385
   <td class="src"><pre class="src">&nbsp;            </pre></td></tr>
383  
-<tr>  <td class="numLineCover">&nbsp;212</td>  <td class="nbHitsCovered"><a title="Line 212: Conditional coverage 100% (2/2).">&nbsp;104</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 212: Conditional coverage 100% (2/2).">            <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i &lt; track.size(); i++) {                            </a></pre></td></tr>
384  
-<tr>  <td class="numLineCover">&nbsp;213</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;                MidiEvent event = track.get(i);</pre></td></tr>
385  
-<tr>  <td class="numLineCover">&nbsp;214</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;                <span class="keyword">long</span> tick = event.getTick();</pre></td></tr>
386  
-<tr>  <td class="numLineCover">&nbsp;215</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;                curTime += ((tick - lastTick) * microsecondsPerQtrNote) / seqRes;            </pre></td></tr>
387  
-<tr>  <td class="numLineCover">&nbsp;216</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;                lastTick = tick;</pre></td></tr>
388  
-<tr>  <td class="numLineCover">&nbsp;217</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;                MidiMessage msg = event.getMessage();</pre></td></tr>
389  
-<tr>  <td class="numLineCover">&nbsp;218</td>  <td class="nbHitsCovered"><a title="Line 218: Conditional coverage 100% (2/2).">&nbsp;88</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 218: Conditional coverage 100% (2/2).">                <span class="keyword">if</span> (!(msg <span class="keyword">instanceof</span> MetaMessage)) {                                </a></pre></td></tr>
390  
-<tr>  <td class="numLineCover">&nbsp;219</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;                    receiver.send(msg, curTime);</pre></td></tr>
391  
-<tr>  <td class="numLine">&nbsp;220</td>  <td class="nbHits">&nbsp;</td>
  386
+<tr>  <td class="numLineCover">&nbsp;214</td>  <td class="nbHitsCovered"><a title="Line 214: Conditional coverage 100% (2/2).">&nbsp;52</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 214: Conditional coverage 100% (2/2).">            <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i &lt; track.size(); i++) {                            </a></pre></td></tr>
  387
+<tr>  <td class="numLineCover">&nbsp;215</td>  <td class="nbHitsCovered">&nbsp;44</td>  <td class="src"><pre class="src">&nbsp;                MidiEvent event = track.get(i);</pre></td></tr>
  388
+<tr>  <td class="numLineCover">&nbsp;216</td>  <td class="nbHitsCovered">&nbsp;44</td>  <td class="src"><pre class="src">&nbsp;                <span class="keyword">long</span> tick = event.getTick();</pre></td></tr>
  389
+<tr>  <td class="numLineCover">&nbsp;217</td>  <td class="nbHitsCovered">&nbsp;44</td>  <td class="src"><pre class="src">&nbsp;                curTime += ((tick - lastTick) * microsecondsPerQtrNote) / seqRes;            </pre></td></tr>
  390
+<tr>  <td class="numLineCover">&nbsp;218</td>  <td class="nbHitsCovered">&nbsp;44</td>  <td class="src"><pre class="src">&nbsp;                lastTick = tick;</pre></td></tr>
  391
+<tr>  <td class="numLineCover">&nbsp;219</td>  <td class="nbHitsCovered">&nbsp;44</td>  <td class="src"><pre class="src">&nbsp;                MidiMessage msg = event.getMessage();</pre></td></tr>
  392
+<tr>  <td class="numLineCover">&nbsp;220</td>  <td class="nbHitsCovered"><a title="Line 220: Conditional coverage 100% (2/2).">&nbsp;44</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 220: Conditional coverage 100% (2/2).">                <span class="keyword">if</span> (!(msg <span class="keyword">instanceof</span> MetaMessage)) {                                </a></pre></td></tr>
  393
+<tr>  <td class="numLineCover">&nbsp;221</td>  <td class="nbHitsCovered">&nbsp;24</td>  <td class="src"><pre class="src">&nbsp;                    receiver.send(msg, curTime);</pre></td></tr>
  394
+<tr>  <td class="numLine">&nbsp;222</td>  <td class="nbHits">&nbsp;</td>
392 395
   <td class="src"><pre class="src">&nbsp;                }                </pre></td></tr>
393  
-<tr>  <td class="numLine">&nbsp;221</td>  <td class="nbHits">&nbsp;</td>
  396
+<tr>  <td class="numLine">&nbsp;223</td>  <td class="nbHits">&nbsp;</td>
394 397
   <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
395  
-<tr>  <td class="numLine">&nbsp;222</td>  <td class="nbHits">&nbsp;</td>
  398
+<tr>  <td class="numLine">&nbsp;224</td>  <td class="nbHits">&nbsp;</td>
396 399
   <td class="src"><pre class="src">&nbsp;            </pre></td></tr>
397  
-<tr>  <td class="numLine">&nbsp;223</td>  <td class="nbHits">&nbsp;</td>
398  
-  <td class="src"><pre class="src">&nbsp;            <span class="comment">// make the total time be the time of the langest track</span></pre></td></tr>
399  
-<tr>  <td class="numLineCover">&nbsp;224</td>  <td class="nbHitsCovered">&nbsp;16</td>  <td class="src"><pre class="src">&nbsp;            totalTime = Math.max(curTime, totalTime);</pre></td></tr>
400 400
 <tr>  <td class="numLine">&nbsp;225</td>  <td class="nbHits">&nbsp;</td>
  401
+  <td class="src"><pre class="src">&nbsp;            <span class="comment">// make the total time be the time of the langest track</span></pre></td></tr>
  402
+<tr>  <td class="numLineCover">&nbsp;226</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            totalTime = Math.max(curTime, totalTime);</pre></td></tr>
  403
+<tr>  <td class="numLine">&nbsp;227</td>  <td class="nbHits">&nbsp;</td>
401 404
   <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
402  
-<tr>  <td class="numLine">&nbsp;226</td>  <td class="nbHits">&nbsp;</td>
403  
-  <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
404  
-<tr>  <td class="numLineCover">&nbsp;227</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> totalTime / MICROSECONDS_PER_SECOND;</pre></td></tr>
405 405
 <tr>  <td class="numLine">&nbsp;228</td>  <td class="nbHits">&nbsp;</td>
  406
+  <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
  407
+<tr>  <td class="numLineCover">&nbsp;229</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> totalTime / MICROSECONDS_PER_SECOND;</pre></td></tr>
  408
+<tr>  <td class="numLine">&nbsp;230</td>  <td class="nbHits">&nbsp;</td>
406 409
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
407  
-<tr>  <td class="numLine">&nbsp;229</td>  <td class="nbHits">&nbsp;</td>
  410
+<tr>  <td class="numLine">&nbsp;231</td>  <td class="nbHits">&nbsp;</td>
408 411
   <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
409 412
 </table>
410 413
 
411  
-<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 12:13 AM.</div>
  414
+<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 6:40 PM.</div>
412 415
 </body>
413 416
 </html>
56  FractalComposer/build/cobertura-report/com.myronmarston.music.Dynamic.html
@@ -69,15 +69,15 @@
69 69
   <td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Myron</span></pre></td></tr>
70 70
 <tr>  <td class="numLine">&nbsp;26</td>  <td class="nbHits">&nbsp;</td>
71 71
   <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
72  
-<tr>  <td class="numLineCover">&nbsp;27</td>  <td class="nbHitsCovered">&nbsp;5028</td>  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> enum Dynamic {</pre></td></tr>
73  
-<tr>  <td class="numLineCover">&nbsp;28</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    PPP(1),</pre></td></tr>
74  
-<tr>  <td class="numLineCover">&nbsp;29</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    PP(2),</pre></td></tr>
75  
-<tr>  <td class="numLineCover">&nbsp;30</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    P(3),</pre></td></tr>
76  
-<tr>  <td class="numLineCover">&nbsp;31</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    MP(4),</pre></td></tr>
77  
-<tr>  <td class="numLineCover">&nbsp;32</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    MF(5),</pre></td></tr>
78  
-<tr>  <td class="numLineCover">&nbsp;33</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    F(6),</pre></td></tr>
79  
-<tr>  <td class="numLineCover">&nbsp;34</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    FF(7),</pre></td></tr>
80  
-<tr>  <td class="numLineCover">&nbsp;35</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;    FFF(8);</pre></td></tr>
  72
+<tr>  <td class="numLineCover">&nbsp;27</td>  <td class="nbHitsCovered">&nbsp;2424</td>  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> enum Dynamic {</pre></td></tr>
  73
+<tr>  <td class="numLineCover">&nbsp;28</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    PPP(1),</pre></td></tr>
  74
+<tr>  <td class="numLineCover">&nbsp;29</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    PP(2),</pre></td></tr>
  75
+<tr>  <td class="numLineCover">&nbsp;30</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    P(3),</pre></td></tr>
  76
+<tr>  <td class="numLineCover">&nbsp;31</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    MP(4),</pre></td></tr>
  77
+<tr>  <td class="numLineCover">&nbsp;32</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    MF(5),</pre></td></tr>
  78
+<tr>  <td class="numLineCover">&nbsp;33</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    F(6),</pre></td></tr>
  79
+<tr>  <td class="numLineCover">&nbsp;34</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    FF(7),</pre></td></tr>
  80
+<tr>  <td class="numLineCover">&nbsp;35</td>  <td class="nbHitsCovered">&nbsp;30</td>  <td class="src"><pre class="src">&nbsp;    FFF(8);</pre></td></tr>
81 81
 <tr>  <td class="numLine">&nbsp;36</td>  <td class="nbHits">&nbsp;</td>
82 82
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
83 83
 <tr>  <td class="numLine">&nbsp;37</td>  <td class="nbHits">&nbsp;</td>
@@ -92,10 +92,10 @@
92 92
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> ADDITIONAL_OFFSET = -4;</pre></td></tr>
93 93
 <tr>  <td class="numLine">&nbsp;42</td>  <td class="nbHits">&nbsp;</td>
94 94
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
95  
-<tr>  <td class="numLineCover">&nbsp;43</td>  <td class="nbHitsCovered">&nbsp;496</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Dynamic(<span class="keyword">int</span> dynamicLevel) {</pre></td></tr>
96  
-<tr>  <td class="numLineCover">&nbsp;44</td>  <td class="nbHitsCovered">&nbsp;496</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.dynamicLevel = dynamicLevel;</pre></td></tr>
97  
-<tr>  <td class="numLineCover">&nbsp;45</td>  <td class="nbHitsCovered">&nbsp;496</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.midiVolume = (dynamicLevel * MIDI_VOLUME_PER_LEVEL) + ADDITIONAL_OFFSET;</pre></td></tr>
98  
-<tr>  <td class="numLineCover">&nbsp;46</td>  <td class="nbHitsCovered">&nbsp;496</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  95
+<tr>  <td class="numLineCover">&nbsp;43</td>  <td class="nbHitsCovered">&nbsp;240</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Dynamic(<span class="keyword">int</span> dynamicLevel) {</pre></td></tr>
  96
+<tr>  <td class="numLineCover">&nbsp;44</td>  <td class="nbHitsCovered">&nbsp;240</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.dynamicLevel = dynamicLevel;</pre></td></tr>
  97
+<tr>  <td class="numLineCover">&nbsp;45</td>  <td class="nbHitsCovered">&nbsp;240</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.midiVolume = (dynamicLevel * MIDI_VOLUME_PER_LEVEL) + ADDITIONAL_OFFSET;</pre></td></tr>
  98
+<tr>  <td class="numLineCover">&nbsp;46</td>  <td class="nbHitsCovered">&nbsp;240</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
99 99
 <tr>  <td class="numLine">&nbsp;47</td>  <td class="nbHits">&nbsp;</td>
100 100
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
101 101
 <tr>  <td class="numLine">&nbsp;48</td>  <td class="nbHits">&nbsp;</td>
@@ -110,7 +110,7 @@
110 110
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
111 111
 <tr>  <td class="numLine">&nbsp;53</td>  <td class="nbHits">&nbsp;</td>
112 112
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">int</span> getMidiVolume() {</pre></td></tr>
113  
-<tr>  <td class="numLineCover">&nbsp;54</td>  <td class="nbHitsCovered">&nbsp;1178</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">this</span>.midiVolume;</pre></td></tr>
  113
+<tr>  <td class="numLineCover">&nbsp;54</td>  <td class="nbHitsCovered">&nbsp;563</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">this</span>.midiVolume;</pre></td></tr>
114 114
 <tr>  <td class="numLine">&nbsp;55</td>  <td class="nbHits">&nbsp;</td>
115 115
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
116 116
 <tr>  <td class="numLine">&nbsp;56</td>  <td class="nbHits">&nbsp;</td>
@@ -146,9 +146,9 @@
146 146
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
147 147
 <tr>  <td class="numLine">&nbsp;72</td>  <td class="nbHits">&nbsp;</td>
148 148
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">static</span> Dynamic getDynamicForDynamicLevel(<span class="keyword">int</span> dynamicLevel) {</pre></td></tr>
149  
-<tr>  <td class="numLineCover">&nbsp;73</td>  <td class="nbHitsCovered">&nbsp;4762</td>  <td class="src"><pre class="src">&nbsp;        Dynamic d = Dynamic.values()[dynamicLevel - 1];</pre></td></tr>
150  
-<tr>  <td class="numLineCover">&nbsp;74</td>  <td class="nbHitsUncovered"><a title="Line 74: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;4762</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 74: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">        <span class="keyword">assert</span> d.dynamicLevel == dynamicLevel : d;</a></span></pre></td></tr>
151  
-<tr>  <td class="numLineCover">&nbsp;75</td>  <td class="nbHitsCovered">&nbsp;4762</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> d;</pre></td></tr>
  149
+<tr>  <td class="numLineCover">&nbsp;73</td>  <td class="nbHitsCovered">&nbsp;2293</td>  <td class="src"><pre class="src">&nbsp;        Dynamic d = Dynamic.values()[dynamicLevel - 1];</pre></td></tr>
  150
+<tr>  <td class="numLineCover">&nbsp;74</td>  <td class="nbHitsUncovered"><a title="Line 74: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;2293</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 74: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">        <span class="keyword">assert</span> d.dynamicLevel == dynamicLevel : d;</a></span></pre></td></tr>
  151
+<tr>  <td class="numLineCover">&nbsp;75</td>  <td class="nbHitsCovered">&nbsp;2293</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> d;</pre></td></tr>
152 152
 <tr>  <td class="numLine">&nbsp;76</td>  <td class="nbHits">&nbsp;</td>
153 153
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
154 154
 <tr>  <td class="numLine">&nbsp;77</td>  <td class="nbHits">&nbsp;</td>
@@ -169,11 +169,11 @@
169 169
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
170 170
 <tr>  <td class="numLine">&nbsp;85</td>  <td class="nbHits">&nbsp;</td>
171 171
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> Dynamic getDynamicForMidiVolume(<span class="keyword">int</span> midiVolume) {</pre></td></tr>
172  
-<tr>  <td class="numLineCover">&nbsp;86</td>  <td class="nbHitsCovered"><a title="Line 86: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;4830</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 86: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">        <span class="keyword">if</span> (midiVolume &lt;= MidiNote.MIN_VELOCITY || midiVolume &gt; MidiNote.MAX_VELOCITY) <span class="keyword">return</span> <span class="keyword">null</span>;</a></pre></td></tr>
  172
+<tr>  <td class="numLineCover">&nbsp;86</td>  <td class="nbHitsCovered"><a title="Line 86: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">&nbsp;2327</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 86: Conditional coverage 100% (4/4) [each condition: 100%, 100%].">        <span class="keyword">if</span> (midiVolume &lt;= MidiNote.MIN_VELOCITY || midiVolume &gt; MidiNote.MAX_VELOCITY) <span class="keyword">return</span> <span class="keyword">null</span>;</a></pre></td></tr>
173 173
 <tr>  <td class="numLine">&nbsp;87</td>  <td class="nbHits">&nbsp;</td>
174 174
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
175  
-<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;4762</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> dynamicLevel = (midiVolume - (MIDI_VOLUME_PER_LEVEL + ADDITIONAL_OFFSET)) / MIDI_VOLUME_PER_LEVEL + 1;</pre></td></tr>
176  
-<tr>  <td class="numLineCover">&nbsp;89</td>  <td class="nbHitsCovered">&nbsp;4762</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> getDynamicForDynamicLevel(dynamicLevel);</pre></td></tr>
  175
+<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;2293</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> dynamicLevel = (midiVolume - (MIDI_VOLUME_PER_LEVEL + ADDITIONAL_OFFSET)) / MIDI_VOLUME_PER_LEVEL + 1;</pre></td></tr>
  176
+<tr>  <td class="numLineCover">&nbsp;89</td>  <td class="nbHitsCovered">&nbsp;2293</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> getDynamicForDynamicLevel(dynamicLevel);</pre></td></tr>
177 177
 <tr>  <td class="numLine">&nbsp;90</td>  <td class="nbHits">&nbsp;</td>
178 178
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
179 179
 <tr>  <td class="numLine">&nbsp;91</td>  <td class="nbHits">&nbsp;</td>
@@ -190,21 +190,21 @@
190 190
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
191 191
 <tr>  <td class="numLine">&nbsp;97</td>  <td class="nbHits">&nbsp;</td>
192 192
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> String getDynamicExampleString() {</pre></td></tr>
193  
-<tr>  <td class="numLineCover">&nbsp;98</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        StringBuilder str = <span class="keyword">new</span> StringBuilder();</pre></td></tr>
194  
-<tr>  <td class="numLineCover">&nbsp;99</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        Dynamic[] values = Dynamic.values(); <span class="comment">// cache the array...</span></pre></td></tr>
  193
+<tr>  <td class="numLineCover">&nbsp;98</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        StringBuilder str = <span class="keyword">new</span> StringBuilder();</pre></td></tr>
  194
+<tr>  <td class="numLineCover">&nbsp;99</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        Dynamic[] values = Dynamic.values(); <span class="comment">// cache the array...</span></pre></td></tr>
195 195
 <tr>  <td class="numLine">&nbsp;100</td>  <td class="nbHits">&nbsp;</td>
196 196
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
197  
-<tr>  <td class="numLineCover">&nbsp;101</td>  <td class="nbHitsCovered"><a title="Line 101: Conditional coverage 100% (2/2).">&nbsp;18</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 101: Conditional coverage 100% (2/2).">        <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i &lt; values.length; i++) {</a></pre></td></tr>
198  
-<tr>  <td class="numLineCover">&nbsp;102</td>  <td class="nbHitsCovered">&nbsp;16</td>  <td class="src"><pre class="src">&nbsp;            str.append(values[i].toString());            </pre></td></tr>
  197
+<tr>  <td class="numLineCover">&nbsp;101</td>  <td class="nbHitsCovered"><a title="Line 101: Conditional coverage 100% (2/2).">&nbsp;9</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 101: Conditional coverage 100% (2/2).">        <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i &lt; values.length; i++) {</a></pre></td></tr>
  198
+<tr>  <td class="numLineCover">&nbsp;102</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;            str.append(values[i].toString());            </pre></td></tr>
199 199
 <tr>  <td class="numLine">&nbsp;103</td>  <td class="nbHits">&nbsp;</td>
200 200
   <td class="src"><pre class="src">&nbsp;            </pre></td></tr>
201  
-<tr>  <td class="numLineCover">&nbsp;104</td>  <td class="nbHitsCovered"><a title="Line 104: Conditional coverage 100% (2/2).">&nbsp;16</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 104: Conditional coverage 100% (2/2).">            <span class="keyword">if</span> (i == values.length - 2) str.append(<span class="string">" or "</span>);                </a></pre></td></tr>
202  
-<tr>  <td class="numLineCover">&nbsp;105</td>  <td class="nbHitsCovered"><a title="Line 105: Conditional coverage 100% (2/2).">&nbsp;14</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 105: Conditional coverage 100% (2/2).">            <span class="keyword">else</span> <span class="keyword">if</span> (i &lt; values.length - 2) str.append(<span class="string">", "</span>);            </a></pre></td></tr>
  201
+<tr>  <td class="numLineCover">&nbsp;104</td>  <td class="nbHitsCovered"><a title="Line 104: Conditional coverage 100% (2/2).">&nbsp;8</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 104: Conditional coverage 100% (2/2).">            <span class="keyword">if</span> (i == values.length - 2) str.append(<span class="string">" or "</span>);                </a></pre></td></tr>
  202
+<tr>  <td class="numLineCover">&nbsp;105</td>  <td class="nbHitsCovered"><a title="Line 105: Conditional coverage 100% (2/2).">&nbsp;7</a></td>  <td class="src"><pre class="src">&nbsp;<a title="Line 105: Conditional coverage 100% (2/2).">            <span class="keyword">else</span> <span class="keyword">if</span> (i &lt; values.length - 2) str.append(<span class="string">", "</span>);            </a></pre></td></tr>
203 203
 <tr>  <td class="numLine">&nbsp;106</td>  <td class="nbHits">&nbsp;</td>
204 204
   <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
205 205
 <tr>  <td class="numLine">&nbsp;107</td>  <td class="nbHits">&nbsp;</td>
206 206
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
207  
-<tr>  <td class="numLineCover">&nbsp;108</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> str.toString();        </pre></td></tr>
  207
+<tr>  <td class="numLineCover">&nbsp;108</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> str.toString();        </pre></td></tr>
208 208
 <tr>  <td class="numLine">&nbsp;109</td>  <td class="nbHits">&nbsp;</td>
209 209
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
210 210
 <tr>  <td class="numLine">&nbsp;110</td>  <td class="nbHits">&nbsp;</td>
@@ -233,6 +233,6 @@
233 233
   <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
234 234
 </table>
235 235
 
236  
-<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 12:13 AM.</div>
  236
+<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 6:40 PM.</div>
237 237
 </body>
238 238
 </html>
6  FractalComposer/build/cobertura-report/com.myronmarston.music.GermIsEmptyException.html
@@ -83,12 +83,12 @@
83 83
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
84 84
 <tr>  <td class="numLine">&nbsp;33</td>  <td class="nbHits">&nbsp;</td>
85 85
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> GermIsEmptyException() {</pre></td></tr>
86  
-<tr>  <td class="numLineCover">&nbsp;34</td>  <td class="nbHitsCovered">&nbsp;3</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">super</span>(<span class="string">"The germ is empty.  A midi sequence cannot be created without it."</span>);</pre></td></tr>
87  
-<tr>  <td class="numLineCover">&nbsp;35</td>  <td class="nbHitsCovered">&nbsp;3</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  86
+<tr>  <td class="numLineCover">&nbsp;34</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">super</span>(<span class="string">"The germ is empty.  A midi sequence cannot be created without it."</span>);</pre></td></tr>
  87
+<tr>  <td class="numLineCover">&nbsp;35</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
88 88
 <tr>  <td class="numLine">&nbsp;36</td>  <td class="nbHits">&nbsp;</td>
89 89
   <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
90 90
 </table>
91 91
 
92  
-<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 12:13 AM.</div>
  92
+<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 6:40 PM.</div>
93 93
 </body>
94 94
 </html>
6  FractalComposer/build/cobertura-report/com.myronmarston.music.IncorrectNoteStringException.html
@@ -89,12 +89,12 @@
89 89
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
90 90
 <tr>  <td class="numLine">&nbsp;36</td>  <td class="nbHits">&nbsp;</td>
91 91
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> IncorrectNoteStringException(String noteString) {</pre></td></tr>
92  
-<tr>  <td class="numLineCover">&nbsp;37</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">super</span>(noteString, String.format(<span class="string">"Error: the note string '%s' was entered incorrectly and could not be parsed."</span>, noteString));</pre></td></tr>
93  
-<tr>  <td class="numLineCover">&nbsp;38</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;    }        </pre></td></tr>
  92
+<tr>  <td class="numLineCover">&nbsp;37</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">super</span>(noteString, String.format(<span class="string">"Error: the note string '%s' was entered incorrectly and could not be parsed."</span>, noteString));</pre></td></tr>
  93
+<tr>  <td class="numLineCover">&nbsp;38</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;    }        </pre></td></tr>
94 94
 <tr>  <td class="numLine">&nbsp;39</td>  <td class="nbHits">&nbsp;</td>
95 95
   <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
96 96
 </table>
97 97
 
98  
-<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 12:13 AM.</div>
  98
+<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 6:40 PM.</div>
99 99
 </body>
100 100
 </html>
66  FractalComposer/build/cobertura-report/com.myronmarston.music.Instrument.html
@@ -85,7 +85,7 @@
85 85
   <td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Myron</span></pre></td></tr>
86 86
 <tr>  <td class="numLine">&nbsp;34</td>  <td class="nbHits">&nbsp;</td>
87 87
   <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
88  
-<tr>  <td class="numLineCover">&nbsp;35</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> Instrument <span class="keyword">extends</span> AbstractNotationElement {</pre></td></tr>
  88
+<tr>  <td class="numLineCover">&nbsp;35</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> Instrument <span class="keyword">extends</span> AbstractNotationElement {</pre></td></tr>
89 89
 <tr>  <td class="numLine">&nbsp;36</td>  <td class="nbHits">&nbsp;</td>
90 90
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">final</span> javax.sound.midi.Instrument midiInstrument;</pre></td></tr>
91 91
 <tr>  <td class="numLine">&nbsp;37</td>  <td class="nbHits">&nbsp;</td>
@@ -114,9 +114,9 @@
114 114
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> List&lt;String&gt; AVAILABLE_INSTRUMENTS;</pre></td></tr>
115 115
 <tr>  <td class="numLine">&nbsp;49</td>  <td class="nbHits">&nbsp;</td>
116 116
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
117  
-<tr>  <td class="numLineCover">&nbsp;50</td>  <td class="nbHitsCovered">&nbsp;6576</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Instrument(javax.sound.midi.Instrument midiInstrument) {</pre></td></tr>
118  
-<tr>  <td class="numLineCover">&nbsp;51</td>  <td class="nbHitsCovered">&nbsp;6576</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.midiInstrument = midiInstrument;        </pre></td></tr>
119  
-<tr>  <td class="numLineCover">&nbsp;52</td>  <td class="nbHitsCovered">&nbsp;6576</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  117
+<tr>  <td class="numLineCover">&nbsp;50</td>  <td class="nbHitsCovered">&nbsp;3151</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Instrument(javax.sound.midi.Instrument midiInstrument) {</pre></td></tr>
  118
+<tr>  <td class="numLineCover">&nbsp;51</td>  <td class="nbHitsCovered">&nbsp;3151</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">this</span>.midiInstrument = midiInstrument;        </pre></td></tr>
  119
+<tr>  <td class="numLineCover">&nbsp;52</td>  <td class="nbHitsCovered">&nbsp;3151</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
120 120
 <tr>  <td class="numLine">&nbsp;53</td>  <td class="nbHits">&nbsp;</td>
121 121
   <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
122 122
 <tr>  <td class="numLine">&nbsp;54</td>  <td class="nbHits">&nbsp;</td>
@@ -127,38 +127,38 @@
127 127
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
128 128
 <tr>  <td class="numLine">&nbsp;57</td>  <td class="nbHits">&nbsp;</td>
129 129
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">static</span> {</pre></td></tr>
130  
-<tr>  <td class="numLineCover">&nbsp;58</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        HashMap&lt;String, Instrument&gt; map = <span class="keyword">new</span> HashMap&lt;String, Instrument&gt;();            </pre></td></tr>
131  
-<tr>  <td class="numLineCover">&nbsp;59</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        List&lt;String&gt; list = <span class="keyword">new</span> ArrayList&lt;String&gt;();</pre></td></tr>
  130
+<tr>  <td class="numLineCover">&nbsp;58</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        HashMap&lt;String, Instrument&gt; map = <span class="keyword">new</span> HashMap&lt;String, Instrument&gt;();            </pre></td></tr>
  131
+<tr>  <td class="numLineCover">&nbsp;59</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        List&lt;String&gt; list = <span class="keyword">new</span> ArrayList&lt;String&gt;();</pre></td></tr>
132 132
 <tr>  <td class="numLine">&nbsp;60</td>  <td class="nbHits">&nbsp;</td>
133 133
   <td class="src"><pre class="src">&nbsp;        String trimmedName;</pre></td></tr>
134 134
 <tr>  <td class="numLine">&nbsp;61</td>  <td class="nbHits">&nbsp;</td>
135 135
   <td class="src"><pre class="src">&nbsp;           </pre></td></tr>
136  
-<tr>  <td class="numLineCover">&nbsp;62</td>  <td class="nbHitsCovered">&nbsp;11328</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (javax.sound.midi.Instrument i : AudioFileCreator.SOUNDBANK.getInstruments()) {</pre></td></tr>
  136
+<tr>  <td class="numLineCover">&nbsp;62</td>  <td class="nbHitsCovered">&nbsp;5428</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (javax.sound.midi.Instrument i : AudioFileCreator.SOUNDBANK.getInstruments()) {</pre></td></tr>
137 137
 <tr>  <td class="numLine">&nbsp;63</td>  <td class="nbHits">&nbsp;</td>
138 138
   <td class="src"><pre class="src">&nbsp;            <span class="comment">// there are several hundred instruments, but we only care about the</span></pre></td></tr>
139 139
 <tr>  <td class="numLine">&nbsp;64</td>  <td class="nbHits">&nbsp;</td>
140 140
   <td class="src"><pre class="src">&nbsp;            <span class="comment">// "regular" ones like piano, violin, cello, etc.</span></pre></td></tr>
141  
-<tr>  <td class="numLineCover">&nbsp;65</td>  <td class="nbHitsCovered">&nbsp;11280</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (i.getPatch().getBank() == REGULAR_INSTRUMENT_BANK) { </pre></td></tr>
142  
-<tr>  <td class="numLineCover">&nbsp;66</td>  <td class="nbHitsCovered">&nbsp;6576</td>  <td class="src"><pre class="src">&nbsp;                trimmedName = i.getName().trim(); <span class="comment">// many instruments have extra spaces on their name</span></pre></td></tr>
143  
-<tr>  <td class="numLineCover">&nbsp;67</td>  <td class="nbHitsCovered">&nbsp;6576</td>  <td class="src"><pre class="src">&nbsp;                map.put(trimmedName.toLowerCase(Locale.ENGLISH), <span class="keyword">new</span> Instrument(i));</pre></td></tr>
144  
-<tr>  <td class="numLineCover">&nbsp;68</td>  <td class="nbHitsCovered">&nbsp;6576</td>  <td class="src"><pre class="src">&nbsp;                list.add(trimmedName);</pre></td></tr>
  141
+<tr>  <td class="numLineCover">&nbsp;65</td>  <td class="nbHitsCovered">&nbsp;5405</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (i.getPatch().getBank() == REGULAR_INSTRUMENT_BANK) { </pre></td></tr>
  142
+<tr>  <td class="numLineCover">&nbsp;66</td>  <td class="nbHitsCovered">&nbsp;3151</td>  <td class="src"><pre class="src">&nbsp;                trimmedName = i.getName().trim(); <span class="comment">// many instruments have extra spaces on their name</span></pre></td></tr>
  143
+<tr>  <td class="numLineCover">&nbsp;67</td>  <td class="nbHitsCovered">&nbsp;3151</td>  <td class="src"><pre class="src">&nbsp;                map.put(trimmedName.toLowerCase(Locale.ENGLISH), <span class="keyword">new</span> Instrument(i));</pre></td></tr>
  144
+<tr>  <td class="numLineCover">&nbsp;68</td>  <td class="nbHitsCovered">&nbsp;3151</td>  <td class="src"><pre class="src">&nbsp;                list.add(trimmedName);</pre></td></tr>
145 145
 <tr>  <td class="numLine">&nbsp;69</td>  <td class="nbHits">&nbsp;</td>
146 146
   <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
147 147
 <tr>  <td class="numLine">&nbsp;70</td>  <td class="nbHits">&nbsp;</td>
148 148
   <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
149 149
 <tr>  <td class="numLine">&nbsp;71</td>  <td class="nbHits">&nbsp;</td>
150 150
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
151  
-<tr>  <td class="numLineCover">&nbsp;72</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        INSTRUMENT_MAP = Collections.unmodifiableMap(map);            </pre></td></tr>
152  
-<tr>  <td class="numLineCover">&nbsp;73</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        AVAILABLE_INSTRUMENTS = Collections.unmodifiableList(list);</pre></td></tr>
  151
+<tr>  <td class="numLineCover">&nbsp;72</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        INSTRUMENT_MAP = Collections.unmodifiableMap(map);            </pre></td></tr>
  152
+<tr>  <td class="numLineCover">&nbsp;73</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        AVAILABLE_INSTRUMENTS = Collections.unmodifiableList(list);</pre></td></tr>
153 153
 <tr>  <td class="numLine">&nbsp;74</td>  <td class="nbHits">&nbsp;</td>
154 154
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
155  
-<tr>  <td class="numLineCover">&nbsp;75</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        Instrument temp = <span class="keyword">null</span>;</pre></td></tr>
  155
+<tr>  <td class="numLineCover">&nbsp;75</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        Instrument temp = <span class="keyword">null</span>;</pre></td></tr>
156 156
 <tr>  <td class="numLine">&nbsp;76</td>  <td class="nbHits">&nbsp;</td>
157 157
   <td class="src"><pre class="src">&nbsp;        <span class="comment">// try to get a piano as the default instrument...</span></pre></td></tr>
158  
-<tr>  <td class="numLineCover">&nbsp;77</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (String instrumentName : AVAILABLE_INSTRUMENTS) {</pre></td></tr>
159  
-<tr>  <td class="numLineCover">&nbsp;78</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (instrumentName.contains(<span class="string">"Piano"</span>)) {</pre></td></tr>
160  
-<tr>  <td class="numLineCover">&nbsp;79</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;                temp = getInstrument(instrumentName);</pre></td></tr>
161  
-<tr>  <td class="numLineCover">&nbsp;80</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;                <span class="keyword">break</span>;</pre></td></tr>
  158
+<tr>  <td class="numLineCover">&nbsp;77</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (String instrumentName : AVAILABLE_INSTRUMENTS) {</pre></td></tr>
  159
+<tr>  <td class="numLineCover">&nbsp;78</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (instrumentName.contains(<span class="string">"Piano"</span>)) {</pre></td></tr>
  160
+<tr>  <td class="numLineCover">&nbsp;79</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;                temp = getInstrument(instrumentName);</pre></td></tr>
  161
+<tr>  <td class="numLineCover">&nbsp;80</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;                <span class="keyword">break</span>;</pre></td></tr>
162 162
 <tr>  <td class="numLine">&nbsp;81</td>  <td class="nbHits">&nbsp;</td>
163 163
   <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
164 164
 <tr>  <td class="numLine">&nbsp;82</td>  <td class="nbHits">&nbsp;</td>
@@ -167,12 +167,12 @@
167 167
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
168 168
 <tr>  <td class="numLine">&nbsp;84</td>  <td class="nbHits">&nbsp;</td>
169 169
   <td class="src"><pre class="src">&nbsp;        <span class="comment">// otherwise, just pick the first instrument...</span></pre></td></tr>
170  
-<tr>  <td class="numLineCover">&nbsp;85</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (temp == <span class="keyword">null</span>) temp = getInstrument(list.get(0));</pre></td></tr>
  170
+<tr>  <td class="numLineCover">&nbsp;85</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (temp == <span class="keyword">null</span>) temp = getInstrument(list.get(0));</pre></td></tr>
171 171
 <tr>  <td class="numLine">&nbsp;86</td>  <td class="nbHits">&nbsp;</td>
172 172
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
173  
-<tr>  <td class="numLineCover">&nbsp;87</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        DEFAULT = temp;        </pre></td></tr>
174  
-<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">assert</span> DEFAULT != <span class="keyword">null</span> : <span class="string">"The default instrument could not be found."</span>;</pre></td></tr>
175  
-<tr>  <td class="numLineCover">&nbsp;89</td>  <td class="nbHitsCovered">&nbsp;48</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
  173
+<tr>  <td class="numLineCover">&nbsp;87</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        DEFAULT = temp;        </pre></td></tr>
  174
+<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">assert</span> DEFAULT != <span class="keyword">null</span> : <span class="string">"The default instrument could not be found."</span>;</pre></td></tr>
  175
+<tr>  <td class="numLineCover">&nbsp;89</td>  <td class="nbHitsCovered">&nbsp;23</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
176 176
 <tr>  <td class="numLine">&nbsp;90</td>  <td class="nbHits">&nbsp;</td>
177 177
   <td class="src"><pre class="src">&nbsp;</pre></td></tr>
178 178
 <tr>  <td class="numLine">&nbsp;91</td>  <td class="nbHits">&nbsp;</td>
@@ -187,7 +187,7 @@
187 187
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
188 188
 <tr>  <td class="numLine">&nbsp;96</td>  <td class="nbHits">&nbsp;</td>
189 189
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> javax.sound.midi.Instrument getMidiInstrument() {</pre></td></tr>
190  
-<tr>  <td class="numLineCover">&nbsp;97</td>  <td class="nbHitsCovered">&nbsp;35</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> midiInstrument;</pre></td></tr>
  190
+<tr>  <td class="numLineCover">&nbsp;97</td>  <td class="nbHitsCovered">&nbsp;13</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> midiInstrument;</pre></td></tr>
191 191
 <tr>  <td class="numLine">&nbsp;98</td>  <td class="nbHits">&nbsp;</td>
192 192
   <td class="src"><pre class="src">&nbsp;    }        </pre></td></tr>
193 193
 <tr>  <td class="numLine">&nbsp;99</td>  <td class="nbHits">&nbsp;</td>
@@ -206,7 +206,7 @@
206 206
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span>    </pre></td></tr>
207 207
 <tr>  <td class="numLine">&nbsp;106</td>  <td class="nbHits">&nbsp;</td>
208 208
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">static</span> Instrument getInstrument(String name) {</pre></td></tr>
209  
-<tr>  <td class="numLineCover">&nbsp;107</td>  <td class="nbHitsCovered">&nbsp;3690</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> INSTRUMENT_MAP.get(name.trim().toLowerCase(Locale.ENGLISH));</pre></td></tr>
  209
+<tr>  <td class="numLineCover">&nbsp;107</td>  <td class="nbHitsCovered">&nbsp;1543</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> INSTRUMENT_MAP.get(name.trim().toLowerCase(Locale.ENGLISH));</pre></td></tr>
210 210
 <tr>  <td class="numLine">&nbsp;108</td>  <td class="nbHits">&nbsp;</td>
211 211
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
212 212
 <tr>  <td class="numLine">&nbsp;109</td>  <td class="nbHits">&nbsp;</td>
@@ -223,7 +223,7 @@
223 223
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
224 224
 <tr>  <td class="numLine">&nbsp;115</td>  <td class="nbHits">&nbsp;</td>
225 225
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> String getName() {</pre></td></tr>
226  
-<tr>  <td class="numLineCover">&nbsp;116</td>  <td class="nbHitsCovered">&nbsp;524</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">this</span>.midiInstrument.getName().trim();</pre></td></tr>
  226
+<tr>  <td class="numLineCover">&nbsp;116</td>  <td class="nbHitsCovered">&nbsp;253</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">this</span>.midiInstrument.getName().trim();</pre></td></tr>
227 227
 <tr>  <td class="numLine">&nbsp;117</td>  <td class="nbHits">&nbsp;</td>
228 228
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
229 229
 <tr>  <td class="numLine">&nbsp;118</td>  <td class="nbHits">&nbsp;</td>
@@ -240,7 +240,7 @@
240 240
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
241 241
 <tr>  <td class="numLine">&nbsp;124</td>  <td class="nbHits">&nbsp;</td>
242 242
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> String toGuidoString() {</pre></td></tr>
243  
-<tr>  <td class="numLineCover">&nbsp;125</td>  <td class="nbHitsCovered">&nbsp;35</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="string">"\\instr&lt;\""</span> + <span class="keyword">this</span>.getName() + <span class="string">"\", \"MIDI "</span> + <span class="keyword">this</span>.getMidiInstrument().getPatch().getProgram() + <span class="string">"\"&gt;"</span>;</pre></td></tr>
  243
+<tr>  <td class="numLineCover">&nbsp;125</td>  <td class="nbHitsCovered">&nbsp;13</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="string">"\\instr&lt;\""</span> + <span class="keyword">this</span>.getName() + <span class="string">"\", \"MIDI "</span> + <span class="keyword">this</span>.getMidiInstrument().getPatch().getProgram() + <span class="string">"\"&gt;"</span>;</pre></td></tr>
244 244
 <tr>  <td class="numLine">&nbsp;126</td>  <td class="nbHits">&nbsp;</td>
245 245
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
246 246
 <tr>  <td class="numLine">&nbsp;127</td>  <td class="nbHits">&nbsp;</td>
@@ -257,7 +257,7 @@
257 257
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
258 258
 <tr>  <td class="numLine">&nbsp;133</td>  <td class="nbHits">&nbsp;</td>
259 259
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> String toLilypondString() {        </pre></td></tr>
260  
-<tr>  <td class="numLineCover">&nbsp;134</td>  <td class="nbHitsCovered">&nbsp;25</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="string">"\\set Staff.instrumentName = \""</span> + <span class="keyword">this</span>.getName() + <span class="string">"\""</span> + FileHelper.NEW_LINE;</pre></td></tr>
  260
+<tr>  <td class="numLineCover">&nbsp;134</td>  <td class="nbHitsCovered">&nbsp;16</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="string">"\\set Staff.instrumentName = \""</span> + <span class="keyword">this</span>.getName() + <span class="string">"\""</span> + FileHelper.NEW_LINE;</pre></td></tr>
261 261
 <tr>  <td class="numLine">&nbsp;135</td>  <td class="nbHits">&nbsp;</td>
262 262
   <td class="src"><pre class="src">&nbsp;    }        </pre></td></tr>
263 263
 <tr>  <td class="numLine">&nbsp;136</td>  <td class="nbHits">&nbsp;</td>
@@ -278,22 +278,22 @@
278 278
   <td class="src"><pre class="src">&nbsp;<span class="comment">     */</span></pre></td></tr>
279 279
 <tr>  <td class="numLine">&nbsp;144</td>  <td class="nbHits">&nbsp;</td>
280 280
   <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> MidiEvent getProgramChangeMidiEvent(<span class="keyword">int</span> midiChannel) {</pre></td></tr>
281  
-<tr>  <td class="numLineCover">&nbsp;145</td>  <td class="nbHitsUncovered"><a title="Line 145: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;321</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 145: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">        <span class="keyword">if</span> (midiChannel &lt; MidiNote.MIN_CHANNEL || midiChannel &gt; MidiNote.MAX_CHANNEL) {</a></span></pre></td></tr>
  281
+<tr>  <td class="numLineCover">&nbsp;145</td>  <td class="nbHitsUncovered"><a title="Line 145: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;142</a></td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 145: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">        <span class="keyword">if</span> (midiChannel &lt; MidiNote.MIN_CHANNEL || midiChannel &gt; MidiNote.MAX_CHANNEL) {</a></span></pre></td></tr>
282 282
 <tr>  <td class="numLineCover">&nbsp;146</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(String.format(<span class="string">"The midi channel must be between %d and %d."</span>, MidiNote.MIN_CHANNEL, MidiNote.MAX_CHANNEL));</span></pre></td></tr>
283 283
 <tr>  <td class="numLine">&nbsp;147</td>  <td class="nbHits">&nbsp;</td>
284 284
   <td class="src"><pre class="src">&nbsp;        }            </pre></td></tr>
285 285
 <tr>  <td class="numLine">&nbsp;148</td>  <td class="nbHits">&nbsp;</td>
286 286
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
287  
-<tr>  <td class="numLineCover">&nbsp;149</td>  <td class="nbHitsCovered">&nbsp;321</td>  <td class="src"><pre class="src">&nbsp;        ShortMessage msg = <span class="keyword">new</span> ShortMessage();</pre></td></tr>
  287
+<tr>  <td class="numLineCover">&nbsp;149</td>  <td class="nbHitsCovered">&nbsp;142</td>  <td class="src"><pre class="src">&nbsp;        ShortMessage msg = <span class="keyword">new</span> ShortMessage();</pre></td></tr>
288 288
 <tr>  <td class="numLine">&nbsp;150</td>  <td class="nbHits">&nbsp;</td>
289 289
   <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span> {</pre></td></tr>
290  
-<tr>  <td class="numLineCover">&nbsp;151</td>  <td class="nbHitsCovered">&nbsp;321</td>  <td class="src"><pre class="src">&nbsp;            msg.setMessage(ShortMessage.PROGRAM_CHANGE, midiChannel, <span class="keyword">this</span>.midiInstrument.getPatch().getProgram(), midiChannel);</pre></td></tr>
  290
+<tr>  <td class="numLineCover">&nbsp;151</td>  <td class="nbHitsCovered">&nbsp;142</td>  <td class="src"><pre class="src">&nbsp;            msg.setMessage(ShortMessage.PROGRAM_CHANGE, midiChannel, <span class="keyword">this</span>.midiInstrument.getPatch().getProgram(), midiChannel);</pre></td></tr>
291 291
 <tr>  <td class="numLineCover">&nbsp;152</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        } <span class="keyword">catch</span> (InvalidMidiDataException ex) {</span></pre></td></tr>
292 292
 <tr>  <td class="numLineCover">&nbsp;153</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            <span class="keyword">throw</span> <span class="keyword">new</span> UndeclaredThrowableException(ex, <span class="string">"The program change midi event could not be created for an unknown reason.  This indicates a programming error."</span>);</span></pre></td></tr>
293  
-<tr>  <td class="numLineCover">&nbsp;154</td>  <td class="nbHitsCovered">&nbsp;321</td>  <td class="src"><pre class="src">&nbsp;        }     </pre></td></tr>
  293
+<tr>  <td class="numLineCover">&nbsp;154</td>  <td class="nbHitsCovered">&nbsp;142</td>  <td class="src"><pre class="src">&nbsp;        }     </pre></td></tr>
294 294
 <tr>  <td class="numLine">&nbsp;155</td>  <td class="nbHits">&nbsp;</td>
295 295
   <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
296  
-<tr>  <td class="numLineCover">&nbsp;156</td>  <td class="nbHitsCovered">&nbsp;321</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">new</span> MidiEvent(msg, 0);</pre></td></tr>
  296
+<tr>  <td class="numLineCover">&nbsp;156</td>  <td class="nbHitsCovered">&nbsp;142</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> <span class="keyword">new</span> MidiEvent(msg, 0);</pre></td></tr>
297 297
 <tr>  <td class="numLine">&nbsp;157</td>  <td class="nbHits">&nbsp;</td>
298 298
   <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
299 299
 <tr>  <td class="numLine">&nbsp;158</td>  <td class="nbHits">&nbsp;</td>
@@ -321,6 +321,6 @@
321 321
   <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
322 322
 </table>
323 323
 
324  
-<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 12:13 AM.</div>
  324
+<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/30/08 6:40 PM.</div>
325 325
 </body>
326 326
 </html>
106  FractalComposer/build/cobertura-report/com.myronmarston.music.MidiNote.html
@@ -105,7 +105,7 @@
105 105
   <td class="src"><pre class="src">&nbsp;<span class="comment">     * The default velocity (volume) of the note</span></pre></td></tr>