Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Used the NotationElement interface and implementing classes to create…

… Guido notation, rather than constructing it directly in the OutputManager.
  • Loading branch information...
commit c21401f427c85bedafdadbeb950fef039f36cfe5 1 parent 34704bb
Myron Marston authored

Showing 150 changed files with 5,697 additions and 2,702 deletions. Show diff stats Hide diff stats

  1. +12 12 FractalComposer/build/cobertura-report/com.myronmarston.music.AudioFileCreator.html
  2. +14 14 FractalComposer/build/cobertura-report/com.myronmarston.music.Dynamic.html
  3. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.GermIsEmptyException.html
  4. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.IncorrectNoteStringException.html
  5. +145 141 FractalComposer/build/cobertura-report/com.myronmarston.music.Instrument.html
  6. +119 81 FractalComposer/build/cobertura-report/com.myronmarston.music.MidiNote.html
  7. +833 760 FractalComposer/build/cobertura-report/com.myronmarston.music.Note.html
  8. +66 58 FractalComposer/build/cobertura-report/com.myronmarston.music.NoteList.html
  9. +146 112 FractalComposer/build/cobertura-report/com.myronmarston.music.NoteName.html
  10. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.NoteStringInvalidPartException.html
  11. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.NoteStringParseException.html
  12. +638 536 FractalComposer/build/cobertura-report/com.myronmarston.music.OutputManager.html
  13. +290 103 FractalComposer/build/cobertura-report/com.myronmarston.music.SheetMusicCreator.html
  14. +140 145 FractalComposer/build/cobertura-report/com.myronmarston.music.Tempo.html
  15. +124 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.GuidoRunException.html
  16. +122 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.LilypondRunException.html
  17. +116 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationElement.html
  18. +536 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationElementList.html
  19. +555 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.NotationNote.html
  20. +348 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Part.html
  21. +313 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Piece.html
  22. +252 0 FractalComposer/build/cobertura-report/com.myronmarston.music.notation.Tuplet.html
  23. +14 14 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.ChromaticScale.html
  24. +7 7 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.HarmonicMinorScale.html
  25. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.scales.InvalidKeySignatureException.html
  26. +238 198 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.KeySignature.html
  27. +9 9 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MajorPentatonicScale.html
  28. +9 9 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MajorScale.html
  29. +9 9 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MinorPentatonicScale.html
  30. +25 17 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.MinorScale.html
  31. +113 79 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.Scale.html
  32. +21 21 FractalComposer/build/cobertura-report/com.myronmarston.music.scales.Tonality.html
  33. +17 17 FractalComposer/build/cobertura-report/com.myronmarston.music.settings.AbstractVoiceOrSection.html
  34. +14 14 FractalComposer/build/cobertura-report/com.myronmarston.music.settings.AbstractVoiceOrSectionSettings.html
  35. +190 151 FractalComposer/build/cobertura-report/com.myronmarston.music.settings.FractalPiece.html
  36. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.settings.InvalidTimeSignatureException.html
  37. +1 1  FractalComposer/build/cobertura-report/com.myronmarston.music.settings.NonPositiveTimeSignatureException.html
  38. +145 104 FractalComposer/build/cobertura-report/com.myronmarston.music.settings.Section.html
  39. +68 50 FractalComposer/build/cobertura-report/com.myronmarston.music.settings.SectionSettings.html
  40. +42 34 FractalComposer/build/cobertura-report/com.myronmarston.music.settings.SelfSimilaritySettings.html
Sorry, we could not display the entire diff because it was too big.
24 FractalComposer/build/cobertura-report/com.myronmarston.music.AudioFileCreator.html
@@ -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;38</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;50</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;34</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;34</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;46</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;46</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;34</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;46</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;34</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;46</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;34</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
123   -<tr> <td class="numLineCover">&nbsp;56</td> <td class="nbHitsCovered">&nbsp;34</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;46</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  123 +<tr> <td class="numLineCover">&nbsp;56</td> <td class="nbHitsCovered">&nbsp;46</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;34</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;46</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;34</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  129 +<tr> <td class="numLineCover">&nbsp;60</td> <td class="nbHitsCovered">&nbsp;46</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>
@@ -332,8 +332,8 @@
332 332 <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 333 <tr> <td class="numLine">&nbsp;180</td> <td class="nbHits">&nbsp;</td>
334 334 <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;42</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;42</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>
  335 +<tr> <td class="numLineCover">&nbsp;181</td> <td class="nbHitsCovered">&nbsp;54</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;54</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 337 <tr> <td class="numLine">&nbsp;183</td> <td class="nbHits">&nbsp;</td>
338 338 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
339 339 <tr> <td class="numLine">&nbsp;184</td> <td class="nbHits">&nbsp;</td>
@@ -408,6 +408,6 @@
408 408 <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
409 409 </table>
410 410
411   -<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/7/08 12:35 AM.</div>
  411 +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/14/08 10:59 PM.</div>
412 412 </body>
413 413 </html>
28 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;166</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;46</td> <td class="src"><pre class="src">&nbsp; PPP(10),</pre></td></tr>
74   -<tr> <td class="numLineCover">&nbsp;29</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; PP(25),</pre></td></tr>
75   -<tr> <td class="numLineCover">&nbsp;30</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; P(50),</pre></td></tr>
76   -<tr> <td class="numLineCover">&nbsp;31</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; MP(60),</pre></td></tr>
77   -<tr> <td class="numLineCover">&nbsp;32</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; MF(70),</pre></td></tr>
78   -<tr> <td class="numLineCover">&nbsp;33</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; F(85),</pre></td></tr>
79   -<tr> <td class="numLineCover">&nbsp;34</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; FF(100),</pre></td></tr>
80   -<tr> <td class="numLineCover">&nbsp;35</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; FFF(120);</pre></td></tr>
  72 +<tr> <td class="numLineCover">&nbsp;27</td> <td class="nbHitsCovered">&nbsp;167</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;47</td> <td class="src"><pre class="src">&nbsp; PPP(10),</pre></td></tr>
  74 +<tr> <td class="numLineCover">&nbsp;29</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; PP(25),</pre></td></tr>
  75 +<tr> <td class="numLineCover">&nbsp;30</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; P(50),</pre></td></tr>
  76 +<tr> <td class="numLineCover">&nbsp;31</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; MP(60),</pre></td></tr>
  77 +<tr> <td class="numLineCover">&nbsp;32</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; MF(70),</pre></td></tr>
  78 +<tr> <td class="numLineCover">&nbsp;33</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; F(85),</pre></td></tr>
  79 +<tr> <td class="numLineCover">&nbsp;34</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; FF(100),</pre></td></tr>
  80 +<tr> <td class="numLineCover">&nbsp;35</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; FFF(120);</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>
@@ -86,9 +86,9 @@
86 86 <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">static</span> String regexPattern;</pre></td></tr>
87 87 <tr> <td class="numLine">&nbsp;39</td> <td class="nbHits">&nbsp;</td>
88 88 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
89   -<tr> <td class="numLineCover">&nbsp;40</td> <td class="nbHitsCovered">&nbsp;368</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Dynamic(<span class="keyword">int</span> midiVolume) {</pre></td></tr>
90   -<tr> <td class="numLineCover">&nbsp;41</td> <td class="nbHitsCovered">&nbsp;368</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.midiVolume = midiVolume;</pre></td></tr>
91   -<tr> <td class="numLineCover">&nbsp;42</td> <td class="nbHitsCovered">&nbsp;368</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  89 +<tr> <td class="numLineCover">&nbsp;40</td> <td class="nbHitsCovered">&nbsp;376</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Dynamic(<span class="keyword">int</span> midiVolume) {</pre></td></tr>
  90 +<tr> <td class="numLineCover">&nbsp;41</td> <td class="nbHitsCovered">&nbsp;376</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.midiVolume = midiVolume;</pre></td></tr>
  91 +<tr> <td class="numLineCover">&nbsp;42</td> <td class="nbHitsCovered">&nbsp;376</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
92 92 <tr> <td class="numLine">&nbsp;43</td> <td class="nbHits">&nbsp;</td>
93 93 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
94 94 <tr> <td class="numLine">&nbsp;44</td> <td class="nbHits">&nbsp;</td>
@@ -103,7 +103,7 @@
103 103 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
104 104 <tr> <td class="numLine">&nbsp;49</td> <td class="nbHits">&nbsp;</td>
105 105 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">int</span> getMidiVolume() {</pre></td></tr>
106   -<tr> <td class="numLineCover">&nbsp;50</td> <td class="nbHitsCovered">&nbsp;1070</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">this</span>.midiVolume;</pre></td></tr>
  106 +<tr> <td class="numLineCover">&nbsp;50</td> <td class="nbHitsCovered">&nbsp;1014</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">this</span>.midiVolume;</pre></td></tr>
107 107 <tr> <td class="numLine">&nbsp;51</td> <td class="nbHits">&nbsp;</td>
108 108 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
109 109 <tr> <td class="numLine">&nbsp;52</td> <td class="nbHits">&nbsp;</td>
@@ -161,6 +161,6 @@
161 161 <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
162 162 </table>
163 163
164   -<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/7/08 12:35 AM.</div>
  164 +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/14/08 10:59 PM.</div>
165 165 </body>
166 166 </html>
2  FractalComposer/build/cobertura-report/com.myronmarston.music.GermIsEmptyException.html
@@ -89,6 +89,6 @@
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/7/08 12:35 AM.</div>
  92 +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/14/08 10:59 PM.</div>
93 93 </body>
94 94 </html>
2  FractalComposer/build/cobertura-report/com.myronmarston.music.IncorrectNoteStringException.html
@@ -95,6 +95,6 @@
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/7/08 12:35 AM.</div>
  98 +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/14/08 10:59 PM.</div>
99 99 </body>
100 100 </html>
286 FractalComposer/build/cobertura-report/com.myronmarston.music.Instrument.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.Instrument.html">Instrument</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">91%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:91px"><span class="text">31/34</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">50%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:50px"><span class="text">2/4</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.Instrument.html">Instrument</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">96%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:96px"><span class="text">52/54</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">50%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:50px"><span class="text">4/8</span></div></div></td></tr></table></td><td class="value"><span class="hidden">0.0;</span>0</td></tr>
16 16
17 17 </table>
18 18 <div class="separator">&nbsp;</div>
@@ -60,223 +60,227 @@
60 60 <tr> <td class="numLine">&nbsp;21</td> <td class="nbHits">&nbsp;</td>
61 61 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
62 62 <tr> <td class="numLine">&nbsp;22</td> <td class="nbHits">&nbsp;</td>
63   - <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> javax.sound.midi.*;</pre></td></tr>
  63 + <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> com.myronmarston.music.notation.NotationElement;</pre></td></tr>
64 64 <tr> <td class="numLine">&nbsp;23</td> <td class="nbHits">&nbsp;</td>
65   - <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.*;</pre></td></tr>
  65 + <td class="src"><pre class="src">&nbsp;</pre></td></tr>
66 66 <tr> <td class="numLine">&nbsp;24</td> <td class="nbHits">&nbsp;</td>
67   - <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.lang.reflect.UndeclaredThrowableException;</pre></td></tr>
  67 + <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> com.myronmarston.util.FileHelper;</pre></td></tr>
68 68 <tr> <td class="numLine">&nbsp;25</td> <td class="nbHits">&nbsp;</td>
69   - <td class="src"><pre class="src">&nbsp;</pre></td></tr>
  69 + <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> javax.sound.midi.*;</pre></td></tr>
70 70 <tr> <td class="numLine">&nbsp;26</td> <td class="nbHits">&nbsp;</td>
71   - <td class="src"><pre class="src">&nbsp;<span class="comment">/**</span></pre></td></tr>
  71 + <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.*;</pre></td></tr>
72 72 <tr> <td class="numLine">&nbsp;27</td> <td class="nbHits">&nbsp;</td>
73   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * Represents a midi instrument. Cannot be instantiated directly. Instead,</span></pre></td></tr>
  73 + <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.lang.reflect.UndeclaredThrowableException;</pre></td></tr>
74 74 <tr> <td class="numLine">&nbsp;28</td> <td class="nbHits">&nbsp;</td>
75   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * get an instrument using the static getInstrument() method.</span></pre></td></tr>
  75 + <td class="src"><pre class="src">&nbsp;</pre></td></tr>
76 76 <tr> <td class="numLine">&nbsp;29</td> <td class="nbHits">&nbsp;</td>
77   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  77 + <td class="src"><pre class="src">&nbsp;<span class="comment">/**</span></pre></td></tr>
78 78 <tr> <td class="numLine">&nbsp;30</td> <td class="nbHits">&nbsp;</td>
79   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Myron</span></pre></td></tr>
  79 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Represents a midi instrument. Cannot be instantiated directly. Instead,</span></pre></td></tr>
80 80 <tr> <td class="numLine">&nbsp;31</td> <td class="nbHits">&nbsp;</td>
81   - <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
82   -<tr> <td class="numLineCover">&nbsp;32</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> Instrument {</pre></td></tr>
  81 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * get an instrument using the static getInstrument() method.</span></pre></td></tr>
  82 +<tr> <td class="numLine">&nbsp;32</td> <td class="nbHits">&nbsp;</td>
  83 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
83 84 <tr> <td class="numLine">&nbsp;33</td> <td class="nbHits">&nbsp;</td>
  85 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Myron</span></pre></td></tr>
  86 +<tr> <td class="numLineCover">&nbsp;34</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  87 +<tr> <td class="numLineCover">&nbsp;35</td> <td class="nbHitsCovered">&nbsp;22</td> <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> Instrument <span class="keyword">implements</span> NotationElement {</pre></td></tr>
  88 +<tr> <td class="numLine">&nbsp;36</td> <td class="nbHits">&nbsp;</td>
84 89 <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>
85   -<tr> <td class="numLine">&nbsp;34</td> <td class="nbHits">&nbsp;</td>
  90 +<tr> <td class="numLine">&nbsp;37</td> <td class="nbHits">&nbsp;</td>
86 91 <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> REGULAR_INSTRUMENT_BANK = 0; </pre></td></tr>
87   -<tr> <td class="numLine">&nbsp;35</td> <td class="nbHits">&nbsp;</td>
  92 +<tr> <td class="numLine">&nbsp;38</td> <td class="nbHits">&nbsp;</td>
88 93 <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Map&lt;String, Instrument&gt; INSTRUMENT_MAP;</pre></td></tr>
89   -<tr> <td class="numLine">&nbsp;36</td> <td class="nbHits">&nbsp;</td>
  94 +<tr> <td class="numLine">&nbsp;39</td> <td class="nbHits">&nbsp;</td>
90 95 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
91   -<tr> <td class="numLine">&nbsp;37</td> <td class="nbHits">&nbsp;</td>
  96 +<tr> <td class="numLine">&nbsp;40</td> <td class="nbHits">&nbsp;</td>
92 97 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
93   -<tr> <td class="numLine">&nbsp;38</td> <td class="nbHits">&nbsp;</td>
  98 +<tr> <td class="numLine">&nbsp;41</td> <td class="nbHits">&nbsp;</td>
94 99 <td class="src"><pre class="src">&nbsp;<span class="comment"> * The default instrument (a piano).</span></pre></td></tr>
95   -<tr> <td class="numLine">&nbsp;39</td> <td class="nbHits">&nbsp;</td>
  100 +<tr> <td class="numLine">&nbsp;42</td> <td class="nbHits">&nbsp;</td>
96 101 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
97   -<tr> <td class="numLine">&nbsp;40</td> <td class="nbHits">&nbsp;</td>
  102 +<tr> <td class="numLine">&nbsp;43</td> <td class="nbHits">&nbsp;</td>
98 103 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> Instrument DEFAULT;</pre></td></tr>
99   -<tr> <td class="numLine">&nbsp;41</td> <td class="nbHits">&nbsp;</td>
  104 +<tr> <td class="numLine">&nbsp;44</td> <td class="nbHits">&nbsp;</td>
100 105 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
101   -<tr> <td class="numLine">&nbsp;42</td> <td class="nbHits">&nbsp;</td>
  106 +<tr> <td class="numLine">&nbsp;45</td> <td class="nbHits">&nbsp;</td>
102 107 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
103   -<tr> <td class="numLine">&nbsp;43</td> <td class="nbHits">&nbsp;</td>
  108 +<tr> <td class="numLine">&nbsp;46</td> <td class="nbHits">&nbsp;</td>
104 109 <td class="src"><pre class="src">&nbsp;<span class="comment"> * List of possible instruments.</span></pre></td></tr>
105   -<tr> <td class="numLine">&nbsp;44</td> <td class="nbHits">&nbsp;</td>
  110 +<tr> <td class="numLine">&nbsp;47</td> <td class="nbHits">&nbsp;</td>
106 111 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
107   -<tr> <td class="numLine">&nbsp;45</td> <td class="nbHits">&nbsp;</td>
  112 +<tr> <td class="numLine">&nbsp;48</td> <td class="nbHits">&nbsp;</td>
108 113 <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>
109   -<tr> <td class="numLine">&nbsp;46</td> <td class="nbHits">&nbsp;</td>
110   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
111   -<tr> <td class="numLineCover">&nbsp;47</td> <td class="nbHitsCovered">&nbsp;4658</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Instrument(javax.sound.midi.Instrument midiInstrument) {</pre></td></tr>
112   -<tr> <td class="numLineCover">&nbsp;48</td> <td class="nbHitsCovered">&nbsp;4658</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.midiInstrument = midiInstrument; </pre></td></tr>
113   -<tr> <td class="numLineCover">&nbsp;49</td> <td class="nbHitsCovered">&nbsp;4658</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
114   -<tr> <td class="numLine">&nbsp;50</td> <td class="nbHits">&nbsp;</td>
  114 +<tr> <td class="numLineCover">&nbsp;49</td> <td class="nbHitsCovered">&nbsp;3288</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  115 +<tr> <td class="numLineCover">&nbsp;50</td> <td class="nbHitsCovered">&nbsp;6302</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Instrument(javax.sound.midi.Instrument midiInstrument) {</pre></td></tr>
  116 +<tr> <td class="numLineCover">&nbsp;51</td> <td class="nbHitsCovered">&nbsp;6302</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.midiInstrument = midiInstrument; </pre></td></tr>
  117 +<tr> <td class="numLineCover">&nbsp;52</td> <td class="nbHitsCovered">&nbsp;3014</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  118 +<tr> <td class="numLine">&nbsp;53</td> <td class="nbHits">&nbsp;</td>
115 119 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
116   -<tr> <td class="numLine">&nbsp;51</td> <td class="nbHits">&nbsp;</td>
  120 +<tr> <td class="numLine">&nbsp;54</td> <td class="nbHits">&nbsp;</td>
117 121 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
118   -<tr> <td class="numLine">&nbsp;52</td> <td class="nbHits">&nbsp;</td>
  122 +<tr> <td class="numLine">&nbsp;55</td> <td class="nbHits">&nbsp;</td>
119 123 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Initializes our list and hash map of instruments.</span></pre></td></tr>
120   -<tr> <td class="numLine">&nbsp;53</td> <td class="nbHits">&nbsp;</td>
  124 +<tr> <td class="numLine">&nbsp;56</td> <td class="nbHits">&nbsp;</td>
121 125 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
122   -<tr> <td class="numLine">&nbsp;54</td> <td class="nbHits">&nbsp;</td>
123   - <td class="src"><pre class="src">&nbsp; <span class="keyword">static</span> {</pre></td></tr>
124   -<tr> <td class="numLineCover">&nbsp;55</td> <td class="nbHitsCovered">&nbsp;34</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>
125   -<tr> <td class="numLineCover">&nbsp;56</td> <td class="nbHitsCovered">&nbsp;34</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>
126   -<tr> <td class="numLine">&nbsp;57</td> <td class="nbHits">&nbsp;</td>
127   - <td class="src"><pre class="src">&nbsp; String trimmedName;</pre></td></tr>
128   -<tr> <td class="numLine">&nbsp;58</td> <td class="nbHits">&nbsp;</td>
129   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
130   -<tr> <td class="numLineCover">&nbsp;59</td> <td class="nbHitsCovered">&nbsp;8024</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">for</span> (javax.sound.midi.Instrument i : AudioFileCreator.SOUNDBANK.getInstruments()) {</pre></td></tr>
  126 +<tr> <td class="numLineCover">&nbsp;57</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">static</span> {</pre></td></tr>
  127 +<tr> <td class="numLineCover">&nbsp;58</td> <td class="nbHitsCovered">&nbsp;46</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>
  128 +<tr> <td class="numLineCover">&nbsp;59</td> <td class="nbHitsCovered">&nbsp;22</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>
131 129 <tr> <td class="numLine">&nbsp;60</td> <td class="nbHits">&nbsp;</td>
  130 + <td class="src"><pre class="src">&nbsp; String trimmedName;</pre></td></tr>
  131 +<tr> <td class="numLineCover">&nbsp;61</td> <td class="nbHitsCovered">&nbsp;5664</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  132 +<tr> <td class="numLineCover">&nbsp;62</td> <td class="nbHitsCovered">&nbsp;5192</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">for</span> (javax.sound.midi.Instrument i : AudioFileCreator.SOUNDBANK.getInstruments()) {</pre></td></tr>
  133 +<tr> <td class="numLine">&nbsp;63</td> <td class="nbHits">&nbsp;</td>
132 134 <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>
133   -<tr> <td class="numLine">&nbsp;61</td> <td class="nbHits">&nbsp;</td>
134   - <td class="src"><pre class="src">&nbsp; <span class="comment">// "regular" ones like piano, violin, cello, etc.</span></pre></td></tr>
135   -<tr> <td class="numLineCover">&nbsp;62</td> <td class="nbHitsCovered">&nbsp;7990</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">if</span> (i.getPatch().getBank() == REGULAR_INSTRUMENT_BANK) { </pre></td></tr>
136   -<tr> <td class="numLineCover">&nbsp;63</td> <td class="nbHitsCovered">&nbsp;4658</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>
137   -<tr> <td class="numLineCover">&nbsp;64</td> <td class="nbHitsCovered">&nbsp;4658</td> <td class="src"><pre class="src">&nbsp; map.put(trimmedName.toLowerCase(Locale.ENGLISH), <span class="keyword">new</span> Instrument(i));</pre></td></tr>
138   -<tr> <td class="numLineCover">&nbsp;65</td> <td class="nbHitsCovered">&nbsp;4658</td> <td class="src"><pre class="src">&nbsp; list.add(trimmedName);</pre></td></tr>
139   -<tr> <td class="numLine">&nbsp;66</td> <td class="nbHits">&nbsp;</td>
  135 +<tr> <td class="numLineCover">&nbsp;64</td> <td class="nbHitsCovered">&nbsp;5640</td> <td class="src"><pre class="src">&nbsp; <span class="comment">// "regular" ones like piano, violin, cello, etc.</span></pre></td></tr>
  136 +<tr> <td class="numLineCover">&nbsp;65</td> <td class="nbHitsCovered">&nbsp;8458</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">if</span> (i.getPatch().getBank() == REGULAR_INSTRUMENT_BANK) { </pre></td></tr>
  137 +<tr> <td class="numLineCover">&nbsp;66</td> <td class="nbHitsCovered">&nbsp;6302</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>
  138 +<tr> <td class="numLineCover">&nbsp;67</td> <td class="nbHitsCovered">&nbsp;6302</td> <td class="src"><pre class="src">&nbsp; map.put(trimmedName.toLowerCase(Locale.ENGLISH), <span class="keyword">new</span> Instrument(i));</pre></td></tr>
  139 +<tr> <td class="numLineCover">&nbsp;68</td> <td class="nbHitsCovered">&nbsp;3014</td> <td class="src"><pre class="src">&nbsp; list.add(trimmedName);</pre></td></tr>
  140 +<tr> <td class="numLine">&nbsp;69</td> <td class="nbHits">&nbsp;</td>
140 141 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
141   -<tr> <td class="numLine">&nbsp;67</td> <td class="nbHits">&nbsp;</td>
  142 +<tr> <td class="numLine">&nbsp;70</td> <td class="nbHits">&nbsp;</td>
142 143 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
143   -<tr> <td class="numLine">&nbsp;68</td> <td class="nbHits">&nbsp;</td>
144   - <td class="src"><pre class="src">&nbsp;</pre></td></tr>
145   -<tr> <td class="numLineCover">&nbsp;69</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; INSTRUMENT_MAP = Collections.unmodifiableMap(map); </pre></td></tr>
146   -<tr> <td class="numLineCover">&nbsp;70</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; AVAILABLE_INSTRUMENTS = Collections.unmodifiableList(list);</pre></td></tr>
147   -<tr> <td class="numLine">&nbsp;71</td> <td class="nbHits">&nbsp;</td>
148   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
149   -<tr> <td class="numLineCover">&nbsp;72</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; Instrument temp = <span class="keyword">null</span>;</pre></td></tr>
150   -<tr> <td class="numLine">&nbsp;73</td> <td class="nbHits">&nbsp;</td>
151   - <td class="src"><pre class="src">&nbsp; <span class="comment">// try to get a piano as the default instrument...</span></pre></td></tr>
152   -<tr> <td class="numLineCover">&nbsp;74</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">for</span> (String instrumentName : AVAILABLE_INSTRUMENTS) {</pre></td></tr>
153   -<tr> <td class="numLineCover">&nbsp;75</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">if</span> (instrumentName.contains(<span class="string">"Piano"</span>)) {</pre></td></tr>
154   -<tr> <td class="numLineCover">&nbsp;76</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; temp = getInstrument(instrumentName);</pre></td></tr>
155   -<tr> <td class="numLineCover">&nbsp;77</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">break</span>;</pre></td></tr>
156   -<tr> <td class="numLine">&nbsp;78</td> <td class="nbHits">&nbsp;</td>
  144 +<tr> <td class="numLineCover">&nbsp;71</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp;</pre></td></tr>
  145 +<tr> <td class="numLineCover">&nbsp;72</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; INSTRUMENT_MAP = Collections.unmodifiableMap(map); </pre></td></tr>
  146 +<tr> <td class="numLineCover">&nbsp;73</td> <td class="nbHitsCovered">&nbsp;22</td> <td class="src"><pre class="src">&nbsp; AVAILABLE_INSTRUMENTS = Collections.unmodifiableList(list);</pre></td></tr>
  147 +<tr> <td class="numLineCover">&nbsp;74</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  148 +<tr> <td class="numLineCover">&nbsp;75</td> <td class="nbHitsCovered">&nbsp;22</td> <td class="src"><pre class="src">&nbsp; Instrument temp = <span class="keyword">null</span>;</pre></td></tr>
  149 +<tr> <td class="numLineCover">&nbsp;76</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp; <span class="comment">// try to get a piano as the default instrument...</span></pre></td></tr>
  150 +<tr> <td class="numLineCover">&nbsp;77</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">for</span> (String instrumentName : AVAILABLE_INSTRUMENTS) {</pre></td></tr>
  151 +<tr> <td class="numLineCover">&nbsp;78</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">if</span> (instrumentName.contains(<span class="string">"Piano"</span>)) {</pre></td></tr>
  152 +<tr> <td class="numLineCover">&nbsp;79</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; temp = getInstrument(instrumentName);</pre></td></tr>
  153 +<tr> <td class="numLineCover">&nbsp;80</td> <td class="nbHitsCovered">&nbsp;22</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">break</span>;</pre></td></tr>
  154 +<tr> <td class="numLine">&nbsp;81</td> <td class="nbHits">&nbsp;</td>
157 155 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
158   -<tr> <td class="numLine">&nbsp;79</td> <td class="nbHits">&nbsp;</td>
  156 +<tr> <td class="numLine">&nbsp;82</td> <td class="nbHits">&nbsp;</td>
159 157 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
160   -<tr> <td class="numLine">&nbsp;80</td> <td class="nbHits">&nbsp;</td>
161   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
162   -<tr> <td class="numLine">&nbsp;81</td> <td class="nbHits">&nbsp;</td>
163   - <td class="src"><pre class="src">&nbsp; <span class="comment">// otherwise, just pick the first instrument...</span></pre></td></tr>
164   -<tr> <td class="numLineCover">&nbsp;82</td> <td class="nbHitsCovered">&nbsp;34</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>
165 158 <tr> <td class="numLine">&nbsp;83</td> <td class="nbHits">&nbsp;</td>
166 159 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
167   -<tr> <td class="numLineCover">&nbsp;84</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; DEFAULT = temp; </pre></td></tr>
168   -<tr> <td class="numLineCover">&nbsp;85</td> <td class="nbHitsCovered">&nbsp;34</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>
169   -<tr> <td class="numLineCover">&nbsp;86</td> <td class="nbHitsCovered">&nbsp;34</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
170   -<tr> <td class="numLine">&nbsp;87</td> <td class="nbHits">&nbsp;</td>
  160 +<tr> <td class="numLineCover">&nbsp;84</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp; <span class="comment">// otherwise, just pick the first instrument...</span></pre></td></tr>
  161 +<tr> <td class="numLineCover">&nbsp;85</td> <td class="nbHitsCovered">&nbsp;22</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>
  162 +<tr> <td class="numLineCover">&nbsp;86</td> <td class="nbHitsCovered">&nbsp;24</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  163 +<tr> <td class="numLineCover">&nbsp;87</td> <td class="nbHitsCovered">&nbsp;46</td> <td class="src"><pre class="src">&nbsp; DEFAULT = temp; </pre></td></tr>
  164 +<tr> <td class="numLineCover">&nbsp;88</td> <td class="nbHitsCovered">&nbsp;46</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>
  165 +<tr> <td class="numLineCover">&nbsp;89</td> <td class="nbHitsCovered">&nbsp;22</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  166 +<tr> <td class="numLine">&nbsp;90</td> <td class="nbHits">&nbsp;</td>
171 167 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
172   -<tr> <td class="numLine">&nbsp;88</td> <td class="nbHits">&nbsp;</td>
  168 +<tr> <td class="numLine">&nbsp;91</td> <td class="nbHits">&nbsp;</td>
173 169 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
174   -<tr> <td class="numLine">&nbsp;89</td> <td class="nbHits">&nbsp;</td>
  170 +<tr> <td class="numLine">&nbsp;92</td> <td class="nbHits">&nbsp;</td>
175 171 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the midi instrument.</span></pre></td></tr>
176   -<tr> <td class="numLine">&nbsp;90</td> <td class="nbHits">&nbsp;</td>
  172 +<tr> <td class="numLine">&nbsp;93</td> <td class="nbHits">&nbsp;</td>
177 173 <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
178   -<tr> <td class="numLine">&nbsp;91</td> <td class="nbHits">&nbsp;</td>
  174 +<tr> <td class="numLine">&nbsp;94</td> <td class="nbHits">&nbsp;</td>
179 175 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the midi instrument object</span></pre></td></tr>
180   -<tr> <td class="numLine">&nbsp;92</td> <td class="nbHits">&nbsp;</td>
181   - <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
182   -<tr> <td class="numLine">&nbsp;93</td> <td class="nbHits">&nbsp;</td>
183   - <td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> javax.sound.midi.Instrument getMidiInstrument() {</pre></td></tr>
184   -<tr> <td class="numLineCover">&nbsp;94</td> <td class="nbHitsCovered">&nbsp;84</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> midiInstrument;</pre></td></tr>
185 176 <tr> <td class="numLine">&nbsp;95</td> <td class="nbHits">&nbsp;</td>
  177 + <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  178 +<tr> <td class="numLineCover">&nbsp;96</td> <td class="nbHitsCovered">&nbsp;44</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> javax.sound.midi.Instrument getMidiInstrument() {</pre></td></tr>
  179 +<tr> <td class="numLineCover">&nbsp;97</td> <td class="nbHitsCovered">&nbsp;10</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> midiInstrument;</pre></td></tr>
  180 +<tr> <td class="numLine">&nbsp;98</td> <td class="nbHits">&nbsp;</td>
186 181 <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
187   -<tr> <td class="numLine">&nbsp;96</td> <td class="nbHits">&nbsp;</td>
  182 +<tr> <td class="numLine">&nbsp;99</td> <td class="nbHits">&nbsp;</td>
188 183 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
189   -<tr> <td class="numLine">&nbsp;97</td> <td class="nbHits">&nbsp;</td>
  184 +<tr> <td class="numLine">&nbsp;100</td> <td class="nbHits">&nbsp;</td>
190 185 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
191   -<tr> <td class="numLine">&nbsp;98</td> <td class="nbHits">&nbsp;</td>
  186 +<tr> <td class="numLine">&nbsp;101</td> <td class="nbHits">&nbsp;</td>
192 187 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the instrument with the given name.</span></pre></td></tr>
193   -<tr> <td class="numLine">&nbsp;99</td> <td class="nbHits">&nbsp;</td>
  188 +<tr> <td class="numLine">&nbsp;102</td> <td class="nbHits">&nbsp;</td>
194 189 <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
195   -<tr> <td class="numLine">&nbsp;100</td> <td class="nbHits">&nbsp;</td>
  190 +<tr> <td class="numLine">&nbsp;103</td> <td class="nbHits">&nbsp;</td>
196 191 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param name the case-insensitive name of the instrument</span></pre></td></tr>
197   -<tr> <td class="numLine">&nbsp;101</td> <td class="nbHits">&nbsp;</td>
  192 +<tr> <td class="numLine">&nbsp;104</td> <td class="nbHits">&nbsp;</td>
198 193 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the instrument, or null, if none was found with the given name</span></pre></td></tr>
199   -<tr> <td class="numLine">&nbsp;102</td> <td class="nbHits">&nbsp;</td>
200   - <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span> </pre></td></tr>
201   -<tr> <td class="numLine">&nbsp;103</td> <td class="nbHits">&nbsp;</td>
202   - <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">static</span> Instrument getInstrument(String name) {</pre></td></tr>
203   -<tr> <td class="numLineCover">&nbsp;104</td> <td class="nbHitsCovered">&nbsp;2142</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> INSTRUMENT_MAP.get(name.trim().toLowerCase(Locale.ENGLISH));</pre></td></tr>
204 194 <tr> <td class="numLine">&nbsp;105</td> <td class="nbHits">&nbsp;</td>
  195 + <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span> </pre></td></tr>
  196 +<tr> <td class="numLineCover">&nbsp;106</td> <td class="nbHitsCovered">&nbsp;1237</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">static</span> Instrument getInstrument(String name) {</pre></td></tr>
  197 +<tr> <td class="numLineCover">&nbsp;107</td> <td class="nbHitsCovered">&nbsp;1241</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> INSTRUMENT_MAP.get(name.trim().toLowerCase(Locale.ENGLISH));</pre></td></tr>
  198 +<tr> <td class="numLine">&nbsp;108</td> <td class="nbHits">&nbsp;</td>
205 199 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
206   -<tr> <td class="numLine">&nbsp;106</td> <td class="nbHits">&nbsp;</td>
  200 +<tr> <td class="numLine">&nbsp;109</td> <td class="nbHits">&nbsp;</td>
207 201 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
208   -<tr> <td class="numLine">&nbsp;107</td> <td class="nbHits">&nbsp;</td>
  202 +<tr> <td class="numLine">&nbsp;110</td> <td class="nbHits">&nbsp;</td>
209 203 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
210   -<tr> <td class="numLine">&nbsp;108</td> <td class="nbHits">&nbsp;</td>
  204 +<tr> <td class="numLine">&nbsp;111</td> <td class="nbHits">&nbsp;</td>
211 205 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the name of the instrument.</span></pre></td></tr>
212   -<tr> <td class="numLine">&nbsp;109</td> <td class="nbHits">&nbsp;</td>
  206 +<tr> <td class="numLine">&nbsp;112</td> <td class="nbHits">&nbsp;</td>
213 207 <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
214   -<tr> <td class="numLine">&nbsp;110</td> <td class="nbHits">&nbsp;</td>
  208 +<tr> <td class="numLine">&nbsp;113</td> <td class="nbHits">&nbsp;</td>
215 209 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the name of the instrument</span></pre></td></tr>
216   -<tr> <td class="numLine">&nbsp;111</td> <td class="nbHits">&nbsp;</td>
217   - <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
218   -<tr> <td class="numLine">&nbsp;112</td> <td class="nbHits">&nbsp;</td>
219   - <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> String getName() {</pre></td></tr>
220   -<tr> <td class="numLineCover">&nbsp;113</td> <td class="nbHitsCovered">&nbsp;520</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">this</span>.midiInstrument.getName().trim();</pre></td></tr>
221 210 <tr> <td class="numLine">&nbsp;114</td> <td class="nbHits">&nbsp;</td>
  211 + <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  212 +<tr> <td class="numLineCover">&nbsp;115</td> <td class="nbHitsCovered">&nbsp;246</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> String getName() {</pre></td></tr>
  213 +<tr> <td class="numLineCover">&nbsp;116</td> <td class="nbHitsCovered">&nbsp;214</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">this</span>.midiInstrument.getName().trim();</pre></td></tr>
  214 +<tr> <td class="numLine">&nbsp;117</td> <td class="nbHits">&nbsp;</td>
222 215 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
223   -<tr> <td class="numLine">&nbsp;115</td> <td class="nbHits">&nbsp;</td>
  216 +<tr> <td class="numLine">&nbsp;118</td> <td class="nbHits">&nbsp;</td>
224 217 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
225   -<tr> <td class="numLine">&nbsp;116</td> <td class="nbHits">&nbsp;</td>
  218 +<tr> <td class="numLine">&nbsp;119</td> <td class="nbHits">&nbsp;</td>
226 219 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
227   -<tr> <td class="numLine">&nbsp;117</td> <td class="nbHits">&nbsp;</td>
  220 +<tr> <td class="numLine">&nbsp;120</td> <td class="nbHits">&nbsp;</td>
228 221 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets a string representing this instrument in GUIDO notation.</span></pre></td></tr>
229   -<tr> <td class="numLine">&nbsp;118</td> <td class="nbHits">&nbsp;</td>
  222 +<tr> <td class="numLine">&nbsp;121</td> <td class="nbHits">&nbsp;</td>
230 223 <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
231   -<tr> <td class="numLine">&nbsp;119</td> <td class="nbHits">&nbsp;</td>
  224 +<tr> <td class="numLine">&nbsp;122</td> <td class="nbHits">&nbsp;</td>
232 225 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the guido string</span></pre></td></tr>
233   -<tr> <td class="numLine">&nbsp;120</td> <td class="nbHits">&nbsp;</td>
234   - <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
235   -<tr> <td class="numLine">&nbsp;121</td> <td class="nbHits">&nbsp;</td>
236   - <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> String toGuidoString() {</pre></td></tr>
237   -<tr> <td class="numLineCover">&nbsp;122</td> <td class="nbHitsCovered">&nbsp;84</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>
238 226 <tr> <td class="numLine">&nbsp;123</td> <td class="nbHits">&nbsp;</td>
239   - <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
240   -<tr> <td class="numLine">&nbsp;124</td> <td class="nbHits">&nbsp;</td>
241   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
242   -<tr> <td class="numLine">&nbsp;125</td> <td class="nbHits">&nbsp;</td>
243   - <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  227 + <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  228 +<tr> <td class="numLineCover">&nbsp;124</td> <td class="nbHitsCovered">&nbsp;44</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> String toGuidoString() {</pre></td></tr>
  229 +<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsCovered">&nbsp;10</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 230 <tr> <td class="numLine">&nbsp;126</td> <td class="nbHits">&nbsp;</td>
245   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * Creates a midi program change event on the given channel using this </span></pre></td></tr>
  231 + <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
246 232 <tr> <td class="numLine">&nbsp;127</td> <td class="nbHits">&nbsp;</td>
247   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * instrument.</span></pre></td></tr>
  233 + <td class="src"><pre class="src">&nbsp;</pre></td></tr>
248 234 <tr> <td class="numLine">&nbsp;128</td> <td class="nbHits">&nbsp;</td>
249   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  235 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
250 236 <tr> <td class="numLine">&nbsp;129</td> <td class="nbHits">&nbsp;</td>
251   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param midiChannel the channel to use (0-15)</span></pre></td></tr>
  237 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets a string representing this instrument in Lilypond notation.</span></pre></td></tr>
252 238 <tr> <td class="numLine">&nbsp;130</td> <td class="nbHits">&nbsp;</td>
253   - <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the program change midi event</span></pre></td></tr>
  239 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
254 240 <tr> <td class="numLine">&nbsp;131</td> <td class="nbHits">&nbsp;</td>
255   - <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  241 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the lilypond string</span></pre></td></tr>
256 242 <tr> <td class="numLine">&nbsp;132</td> <td class="nbHits">&nbsp;</td>
257   - <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> MidiEvent getProgramChangeMidiEvent(<span class="keyword">int</span> midiChannel) {</pre></td></tr>
258   -<tr> <td class="numLineCover">&nbsp;133</td> <td class="nbHitsUncovered"><a title="Line 133: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;258</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 133: 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>
259   -<tr> <td class="numLineCover">&nbsp;134</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>
  243 + <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  244 +<tr> <td class="numLineCover">&nbsp;133</td> <td class="nbHitsCovered">&nbsp;5</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> String toLilypondString() { </pre></td></tr>
  245 +<tr> <td class="numLineCover">&nbsp;134</td> <td class="nbHitsCovered">&nbsp;7</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 246 <tr> <td class="numLine">&nbsp;135</td> <td class="nbHits">&nbsp;</td>
261   - <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
  247 + <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
262 248 <tr> <td class="numLine">&nbsp;136</td> <td class="nbHits">&nbsp;</td>
263   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
264   -<tr> <td class="numLineCover">&nbsp;137</td> <td class="nbHitsCovered">&nbsp;258</td> <td class="src"><pre class="src">&nbsp; ShortMessage msg = <span class="keyword">new</span> ShortMessage();</pre></td></tr>
  249 + <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  250 +<tr> <td class="numLine">&nbsp;137</td> <td class="nbHits">&nbsp;</td>
  251 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
265 252 <tr> <td class="numLine">&nbsp;138</td> <td class="nbHits">&nbsp;</td>
266   - <td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
267   -<tr> <td class="numLineCover">&nbsp;139</td> <td class="nbHitsCovered">&nbsp;258</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>
268   -<tr> <td class="numLineCover">&nbsp;140</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>
269   -<tr> <td class="numLineCover">&nbsp;141</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>
270   -<tr> <td class="numLineCover">&nbsp;142</td> <td class="nbHitsCovered">&nbsp;258</td> <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
  253 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Creates a midi program change event on the given channel using this </span></pre></td></tr>
  254 +<tr> <td class="numLine">&nbsp;139</td> <td class="nbHits">&nbsp;</td>
  255 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * instrument.</span></pre></td></tr>
  256 +<tr> <td class="numLine">&nbsp;140</td> <td class="nbHits">&nbsp;</td>
  257 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  258 +<tr> <td class="numLine">&nbsp;141</td> <td class="nbHits">&nbsp;</td>
  259 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param midiChannel the channel to use (0-15)</span></pre></td></tr>
  260 +<tr> <td class="numLine">&nbsp;142</td> <td class="nbHits">&nbsp;</td>
  261 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the program change midi event</span></pre></td></tr>
271 262 <tr> <td class="numLine">&nbsp;143</td> <td class="nbHits">&nbsp;</td>
272   - <td class="src"><pre class="src">&nbsp; </pre></td></tr>
273   -<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsCovered">&nbsp;258</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">new</span> MidiEvent(msg, 0);</pre></td></tr>
274   -<tr> <td class="numLine">&nbsp;145</td> <td class="nbHits">&nbsp;</td>
  263 + <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
  264 +<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsUncovered"><a title="Line 144: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;130</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 144: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">public</span> MidiEvent getProgramChangeMidiEvent(<span class="keyword">int</span> midiChannel) {</a></span></pre></td></tr>
  265 +<tr> <td class="numLineCover">&nbsp;145</td> <td class="nbHitsUncovered"><a title="Line 145: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;132</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>
  266 +<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>
  267 +<tr> <td class="numLine">&nbsp;147</td> <td class="nbHits">&nbsp;</td>
  268 + <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
  269 +<tr> <td class="numLineCover">&nbsp;148</td> <td class="nbHitsCovered">&nbsp;130</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  270 +<tr> <td class="numLineCover">&nbsp;149</td> <td class="nbHitsCovered">&nbsp;132</td> <td class="src"><pre class="src">&nbsp; ShortMessage msg = <span class="keyword">new</span> ShortMessage();</pre></td></tr>
  271 +<tr> <td class="numLineCover">&nbsp;150</td> <td class="nbHitsCovered">&nbsp;130</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
  272 +<tr> <td class="numLineCover">&nbsp;151</td> <td class="nbHitsCovered">&nbsp;132</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>
  273 +<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>
  274 +<tr> <td class="numLineCover">&nbsp;153</td> <td class="nbHitsCovered">&nbsp;130</td> <td class="src"><pre class="src">&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>);</pre></td></tr>
  275 +<tr> <td class="numLineCover">&nbsp;154</td> <td class="nbHitsCovered">&nbsp;132</td> <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
  276 +<tr> <td class="numLineCover">&nbsp;155</td> <td class="nbHitsCovered">&nbsp;130</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  277 +<tr> <td class="numLineCover">&nbsp;156</td> <td class="nbHitsCovered">&nbsp;132</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">new</span> MidiEvent(msg, 0);</pre></td></tr>
  278 +<tr> <td class="numLine">&nbsp;157</td> <td class="nbHits">&nbsp;</td>
275 279 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
276   -<tr> <td class="numLine">&nbsp;146</td> <td class="nbHits">&nbsp;</td>
  280 +<tr> <td class="numLine">&nbsp;158</td> <td class="nbHits">&nbsp;</td>
277 281 <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
278 282 </table>
279 283
280   -<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/7/08 12:35 AM.</div>
  284 +<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9 on 7/14/08 10:59 PM.</div>
281 285 </body>
282 286 </html>
200 FractalComposer/build/cobertura-report/com.myronmarston.music.MidiNote.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.MidiNote.html">MidiNote</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">90/90</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">72%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:72px"><span class="text">13/18</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.45;</span>1.45</td></tr>
  15 + <tr><td><a href="com.myronmarston.music.MidiNote.html">MidiNote</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">52/52</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">72%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:72px"><span class="text">13/18</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.45;</span>1.45</td></tr>
16 16
17 17 </table>
18 18 <div class="separator">&nbsp;</div>
@@ -105,8 +105,9 @@
105 105 <td class="src"><pre class="src">&nbsp;<span class="comment"> * The default velocity (volume) of the note</span></pre></td></tr>
106 106 <tr> <td class="numLine">&nbsp;44</td> <td class="nbHits">&nbsp;</td>
107 107 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
108   -<tr> <td class="numLineCover">&nbsp;45</td> <td class="nbHitsCovered">&nbsp;44</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> DEFAULT_VELOCITY = Dynamic.MF.getMidiVolume(); </pre></td></tr>
109   -<tr> <td class="numLineCover">&nbsp;46</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  108 +<tr> <td class="numLineCover">&nbsp;45</td> <td class="nbHitsCovered">&nbsp;47</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> DEFAULT_VELOCITY = Dynamic.MF.getMidiVolume(); </pre></td></tr>
  109 +<tr> <td class="numLine">&nbsp;46</td> <td class="nbHits">&nbsp;</td>
  110 + <td class="src"><pre class="src">&nbsp; </pre></td></tr>
110 111 <tr> <td class="numLine">&nbsp;47</td> <td class="nbHits">&nbsp;</td>
111 112 <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
112 113 <tr> <td class="numLine">&nbsp;48</td> <td class="nbHits">&nbsp;</td>
@@ -237,21 +238,25 @@
237 238 <tr> <td class="numLine">&nbsp;115</td> <td class="nbHits">&nbsp;</td>
238 239 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> MidiNote(<span class="keyword">int</span> pitch, <span class="keyword">long</span> startTime, <span class="keyword">long</span> duration) {</pre></td></tr>
239 240 <tr> <td class="numLineCover">&nbsp;116</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>(pitch, startTime, duration, DEFAULT_CHANNEL);</pre></td></tr>
240   -<tr> <td class="numLineCover">&nbsp;117</td> <td class="nbHitsCovered">&nbsp;62</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
241   -<tr> <td class="numLineCover">&nbsp;118</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp; </pre></td></tr>
242   -<tr> <td class="numLineCover">&nbsp;119</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
243   -<tr> <td class="numLineCover">&nbsp;120</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * Default Constructor. You should use the field setters to provide values </span></pre></td></tr>
  241 +<tr> <td class="numLineCover">&nbsp;117</td> <td class="nbHitsCovered">&nbsp;6</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  242 +<tr> <td class="numLine">&nbsp;118</td> <td class="nbHits">&nbsp;</td>
  243 + <td class="src"><pre class="src">&nbsp; </pre></td></tr>
  244 +<tr> <td class="numLine">&nbsp;119</td> <td class="nbHits">&nbsp;</td>
  245 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  246 +<tr> <td class="numLine">&nbsp;120</td> <td class="nbHits">&nbsp;</td>
  247 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Default Constructor. You should use the field setters to provide values </span></pre></td></tr>
244 248 <tr> <td class="numLine">&nbsp;121</td> <td class="nbHits">&nbsp;</td>
245 249 <td class="src"><pre class="src">&nbsp;<span class="comment"> * for each parameter.</span></pre></td></tr>
246 250 <tr> <td class="numLine">&nbsp;122</td> <td class="nbHits">&nbsp;</td>
247 251 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
248   -<tr> <td class="numLineCover">&nbsp;123</td> <td class="nbHitsCovered">&nbsp;3634</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> MidiNote() {</pre></td></tr>
249   -<tr> <td class="numLineCover">&nbsp;124</td> <td class="nbHitsCovered">&nbsp;3634</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.setChannel(DEFAULT_CHANNEL);</pre></td></tr>
250   -<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsCovered">&nbsp;3634</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.setVelocity(DEFAULT_VELOCITY);</pre></td></tr>
251   -<tr> <td class="numLineCover">&nbsp;126</td> <td class="nbHitsCovered">&nbsp;3634</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  252 +<tr> <td class="numLineCover">&nbsp;123</td> <td class="nbHitsCovered">&nbsp;4057</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> MidiNote() {</pre></td></tr>
  253 +<tr> <td class="numLineCover">&nbsp;124</td> <td class="nbHitsCovered">&nbsp;4057</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.setChannel(DEFAULT_CHANNEL);</pre></td></tr>
  254 +<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsCovered">&nbsp;4057</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.setVelocity(DEFAULT_VELOCITY);</pre></td></tr>
  255 +<tr> <td class="numLineCover">&nbsp;126</td> <td class="nbHitsCovered">&nbsp;4057</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
252 256 <tr> <td class="numLine">&nbsp;127</td> <td class="nbHits">&nbsp;</td>
253 257 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
254   -<tr> <td class="numLineCover">&nbsp;128</td> <td class="nbHitsCovered">&nbsp;324</td> <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  258 +<tr> <td class="numLine">&nbsp;128</td> <td class="nbHits">&nbsp;</td>
  259 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
255 260 <tr> <td class="numLine">&nbsp;129</td> <td class="nbHits">&nbsp;</td>
256 261 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the note's pitch, in half-step increments.</span></pre></td></tr>
257 262 <tr> <td class="numLine">&nbsp;130</td> <td class="nbHits">&nbsp;</td>
@@ -262,26 +267,30 @@
262 267 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
263 268 <tr> <td class="numLine">&nbsp;133</td> <td class="nbHits">&nbsp;</td>
264 269 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">int</span> getPitch() {</pre></td></tr>
265   -<tr> <td class="numLineCover">&nbsp;134</td> <td class="nbHitsCovered">&nbsp;20582</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> pitch;</pre></td></tr>
  270 +<tr> <td class="numLineCover">&nbsp;134</td> <td class="nbHitsCovered">&nbsp;26870</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> pitch;</pre></td></tr>
266 271 <tr> <td class="numLine">&nbsp;135</td> <td class="nbHits">&nbsp;</td>
267 272 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
268 273 <tr> <td class="numLine">&nbsp;136</td> <td class="nbHits">&nbsp;</td>
269 274 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
270   -<tr> <td class="numLineCover">&nbsp;137</td> <td class="nbHitsUncovered"><a title="Line 137: Conditional coverage 50% (1/2).">&nbsp;56</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 137: Conditional coverage 50% (1/2)."> <span class="comment">/**</span></a></span></pre></td></tr>
271   -<tr> <td class="numLineCover">&nbsp;138</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets the note's pitch, in half-step increments.</span></pre></td></tr>
272   -<tr> <td class="numLineCover">&nbsp;139</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  275 +<tr> <td class="numLine">&nbsp;137</td> <td class="nbHits">&nbsp;</td>
  276 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  277 +<tr> <td class="numLine">&nbsp;138</td> <td class="nbHits">&nbsp;</td>
  278 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets the note's pitch, in half-step increments.</span></pre></td></tr>
  279 +<tr> <td class="numLine">&nbsp;139</td> <td class="nbHits">&nbsp;</td>
  280 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
273 281 <tr> <td class="numLine">&nbsp;140</td> <td class="nbHits">&nbsp;</td>
274 282 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param pitch the pitch to use, in half-step increments; 60 = middle C</span></pre></td></tr>
275 283 <tr> <td class="numLine">&nbsp;141</td> <td class="nbHits">&nbsp;</td>
276 284 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
277 285 <tr> <td class="numLine">&nbsp;142</td> <td class="nbHits">&nbsp;</td>
278 286 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> setPitch(<span class="keyword">int</span> pitch) {</pre></td></tr>
279   -<tr> <td class="numLineCover">&nbsp;143</td> <td class="nbHitsCovered"><a title="Line 143: Conditional coverage 100% (2/2).">&nbsp;3650</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 143: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.pitch != pitch) clearNoteEvents();</a></pre></td></tr>
280   -<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsCovered">&nbsp;3650</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.pitch = pitch; </pre></td></tr>
281   -<tr> <td class="numLineCover">&nbsp;145</td> <td class="nbHitsCovered">&nbsp;3650</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  287 +<tr> <td class="numLineCover">&nbsp;143</td> <td class="nbHitsCovered"><a title="Line 143: Conditional coverage 100% (2/2).">&nbsp;4065</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 143: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.pitch != pitch) clearNoteEvents();</a></pre></td></tr>
  288 +<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsCovered">&nbsp;4065</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.pitch = pitch; </pre></td></tr>
  289 +<tr> <td class="numLineCover">&nbsp;145</td> <td class="nbHitsCovered">&nbsp;4065</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
282 290 <tr> <td class="numLine">&nbsp;146</td> <td class="nbHits">&nbsp;</td>
283 291 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
284   -<tr> <td class="numLineCover">&nbsp;147</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  292 +<tr> <td class="numLine">&nbsp;147</td> <td class="nbHits">&nbsp;</td>
  293 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
285 294 <tr> <td class="numLine">&nbsp;148</td> <td class="nbHits">&nbsp;</td>
286 295 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets how long the note should be, in midi ticks.</span></pre></td></tr>
287 296 <tr> <td class="numLine">&nbsp;149</td> <td class="nbHits">&nbsp;</td>
@@ -292,26 +301,30 @@
292 301 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
293 302 <tr> <td class="numLine">&nbsp;152</td> <td class="nbHits">&nbsp;</td>
294 303 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">long</span> getDuration() {</pre></td></tr>
295   -<tr> <td class="numLineCover">&nbsp;153</td> <td class="nbHitsCovered">&nbsp;3578</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> duration;</pre></td></tr>
  304 +<tr> <td class="numLineCover">&nbsp;153</td> <td class="nbHitsCovered">&nbsp;3992</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> duration;</pre></td></tr>
296 305 <tr> <td class="numLine">&nbsp;154</td> <td class="nbHits">&nbsp;</td>
297 306 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
298 307 <tr> <td class="numLine">&nbsp;155</td> <td class="nbHits">&nbsp;</td>
299 308 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
300   -<tr> <td class="numLineCover">&nbsp;156</td> <td class="nbHitsUncovered"><a title="Line 156: Conditional coverage 50% (1/2).">&nbsp;56</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 156: Conditional coverage 50% (1/2)."> <span class="comment">/**</span></a></span></pre></td></tr>
301   -<tr> <td class="numLineCover">&nbsp;157</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets how long the note should be, in midi ticks.</span></pre></td></tr>
302   -<tr> <td class="numLineCover">&nbsp;158</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  309 +<tr> <td class="numLine">&nbsp;156</td> <td class="nbHits">&nbsp;</td>
  310 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  311 +<tr> <td class="numLine">&nbsp;157</td> <td class="nbHits">&nbsp;</td>
  312 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets how long the note should be, in midi ticks.</span></pre></td></tr>
  313 +<tr> <td class="numLine">&nbsp;158</td> <td class="nbHits">&nbsp;</td>
  314 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
303 315 <tr> <td class="numLine">&nbsp;159</td> <td class="nbHits">&nbsp;</td>
304 316 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param duration how long the note should be, in midi ticks</span></pre></td></tr>
305 317 <tr> <td class="numLine">&nbsp;160</td> <td class="nbHits">&nbsp;</td>
306 318 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
307 319 <tr> <td class="numLine">&nbsp;161</td> <td class="nbHits">&nbsp;</td>
308 320 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> setDuration(<span class="keyword">long</span> duration) {</pre></td></tr>
309   -<tr> <td class="numLineCover">&nbsp;162</td> <td class="nbHitsUncovered"><a title="Line 162: Conditional coverage 50% (1/2).">&nbsp;3630</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 162: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.duration != duration) clearNoteEvents();</a></span></pre></td></tr>
310   -<tr> <td class="numLineCover">&nbsp;163</td> <td class="nbHitsCovered">&nbsp;3630</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.duration = duration; </pre></td></tr>
311   -<tr> <td class="numLineCover">&nbsp;164</td> <td class="nbHitsCovered">&nbsp;3630</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  321 +<tr> <td class="numLineCover">&nbsp;162</td> <td class="nbHitsUncovered"><a title="Line 162: Conditional coverage 50% (1/2).">&nbsp;4055</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 162: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.duration != duration) clearNoteEvents();</a></span></pre></td></tr>
  322 +<tr> <td class="numLineCover">&nbsp;163</td> <td class="nbHitsCovered">&nbsp;4055</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.duration = duration; </pre></td></tr>
  323 +<tr> <td class="numLineCover">&nbsp;164</td> <td class="nbHitsCovered">&nbsp;4055</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
312 324 <tr> <td class="numLine">&nbsp;165</td> <td class="nbHits">&nbsp;</td>
313 325 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
314   -<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsCovered">&nbsp;112</td> <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  326 +<tr> <td class="numLine">&nbsp;166</td> <td class="nbHits">&nbsp;</td>
  327 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
315 328 <tr> <td class="numLine">&nbsp;167</td> <td class="nbHits">&nbsp;</td>
316 329 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets when this note should sound, in midi ticks.</span></pre></td></tr>
317 330 <tr> <td class="numLine">&nbsp;168</td> <td class="nbHits">&nbsp;</td>
@@ -322,26 +335,30 @@
322 335 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
323 336 <tr> <td class="numLine">&nbsp;171</td> <td class="nbHits">&nbsp;</td>
324 337 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">long</span> getStartTime() {</pre></td></tr>
325   -<tr> <td class="numLineCover">&nbsp;172</td> <td class="nbHitsCovered">&nbsp;7072</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> startTime;</pre></td></tr>
  338 +<tr> <td class="numLineCover">&nbsp;172</td> <td class="nbHitsCovered">&nbsp;7900</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> startTime;</pre></td></tr>
326 339 <tr> <td class="numLine">&nbsp;173</td> <td class="nbHits">&nbsp;</td>
327 340 <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
328 341 <tr> <td class="numLine">&nbsp;174</td> <td class="nbHits">&nbsp;</td>
329 342 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
330   -<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsUncovered"><a title="Line 175: Conditional coverage 50% (1/2).">&nbsp;56</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 175: Conditional coverage 50% (1/2)."> <span class="comment">/**</span></a></span></pre></td></tr>
331   -<tr> <td class="numLineCover">&nbsp;176</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets when this note should sound, in midi ticks.</span></pre></td></tr>
332   -<tr> <td class="numLineCover">&nbsp;177</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  343 +<tr> <td class="numLine">&nbsp;175</td> <td class="nbHits">&nbsp;</td>
  344 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  345 +<tr> <td class="numLine">&nbsp;176</td> <td class="nbHits">&nbsp;</td>
  346 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets when this note should sound, in midi ticks.</span></pre></td></tr>
  347 +<tr> <td class="numLine">&nbsp;177</td> <td class="nbHits">&nbsp;</td>
  348 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
333 349 <tr> <td class="numLine">&nbsp;178</td> <td class="nbHits">&nbsp;</td>
334 350 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param startTime when this note should sound, in midi ticks</span></pre></td></tr>
335 351 <tr> <td class="numLine">&nbsp;179</td> <td class="nbHits">&nbsp;</td>
336 352 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
337 353 <tr> <td class="numLine">&nbsp;180</td> <td class="nbHits">&nbsp;</td>
338 354 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> setStartTime(<span class="keyword">long</span> startTime) {</pre></td></tr>
339   -<tr> <td class="numLineCover">&nbsp;181</td> <td class="nbHitsUncovered"><a title="Line 181: Conditional coverage 50% (1/2).">&nbsp;3630</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 181: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.startTime != startTime) clearNoteEvents();</a></span></pre></td></tr>
340   -<tr> <td class="numLineCover">&nbsp;182</td> <td class="nbHitsCovered">&nbsp;3630</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.startTime = startTime; </pre></td></tr>
341   -<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsCovered">&nbsp;3630</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
  355 +<tr> <td class="numLineCover">&nbsp;181</td> <td class="nbHitsUncovered"><a title="Line 181: Conditional coverage 50% (1/2).">&nbsp;4055</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 181: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.startTime != startTime) clearNoteEvents();</a></span></pre></td></tr>
  356 +<tr> <td class="numLineCover">&nbsp;182</td> <td class="nbHitsCovered">&nbsp;4055</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.startTime = startTime; </pre></td></tr>
  357 +<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsCovered">&nbsp;4055</td> <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
342 358 <tr> <td class="numLine">&nbsp;184</td> <td class="nbHits">&nbsp;</td>
343 359 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
344   -<tr> <td class="numLineCover">&nbsp;185</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  360 +<tr> <td class="numLine">&nbsp;185</td> <td class="nbHits">&nbsp;</td>
  361 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
345 362 <tr> <td class="numLine">&nbsp;186</td> <td class="nbHits">&nbsp;</td>
346 363 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the velocity (volume) of the note, on a scale of 0 to 127.</span></pre></td></tr>
347 364 <tr> <td class="numLine">&nbsp;187</td> <td class="nbHits">&nbsp;</td>
@@ -352,26 +369,30 @@
352 369 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
353 370 <tr> <td class="numLine">&nbsp;190</td> <td class="nbHits">&nbsp;</td>
354 371 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">int</span> getVelocity() {</pre></td></tr>
355   -<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered">&nbsp;3578</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> velocity;</pre></td></tr>
  372 +<tr> <td class="numLineCover">&nbsp;191</td> <td class="nbHitsCovered">&nbsp;3992</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> velocity;</pre></td></tr>
356 373 <tr> <td class="numLine">&nbsp;192</td> <td class="nbHits">&nbsp;</td>
357 374 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
358 375 <tr> <td class="numLine">&nbsp;193</td> <td class="nbHits">&nbsp;</td>
359 376 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
360   -<tr> <td class="numLineCover">&nbsp;194</td> <td class="nbHitsCovered"><a title="Line 194: Conditional coverage 100% (2/2).">&nbsp;112</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 194: Conditional coverage 100% (2/2)."> <span class="comment">/**</span></a></pre></td></tr>
361   -<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsCovered">&nbsp;112</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets the velocity (volume) of the note, on a scale of 0 to 127.</span></pre></td></tr>
362   -<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsCovered">&nbsp;112</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  377 +<tr> <td class="numLine">&nbsp;194</td> <td class="nbHits">&nbsp;</td>
  378 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  379 +<tr> <td class="numLine">&nbsp;195</td> <td class="nbHits">&nbsp;</td>
  380 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets the velocity (volume) of the note, on a scale of 0 to 127.</span></pre></td></tr>
  381 +<tr> <td class="numLine">&nbsp;196</td> <td class="nbHits">&nbsp;</td>
  382 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
363 383 <tr> <td class="numLine">&nbsp;197</td> <td class="nbHits">&nbsp;</td>
364 384 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param velocity the velocity (volume) of the note, on a scale of 0 to 127</span></pre></td></tr>
365 385 <tr> <td class="numLine">&nbsp;198</td> <td class="nbHits">&nbsp;</td>
366 386 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
367 387 <tr> <td class="numLine">&nbsp;199</td> <td class="nbHits">&nbsp;</td>
368 388 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> setVelocity(<span class="keyword">int</span> velocity) {</pre></td></tr>
369   -<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsCovered"><a title="Line 200: Conditional coverage 100% (2/2).">&nbsp;7264</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 200: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.velocity != velocity) clearNoteEvents();</a></pre></td></tr>
370   -<tr> <td class="numLineCover">&nbsp;201</td> <td class="nbHitsCovered">&nbsp;7264</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.velocity = velocity; </pre></td></tr>
371   -<tr> <td class="numLineCover">&nbsp;202</td> <td class="nbHitsCovered">&nbsp;7264</td> <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
  389 +<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsCovered"><a title="Line 200: Conditional coverage 100% (2/2).">&nbsp;8112</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 200: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.velocity != velocity) clearNoteEvents();</a></pre></td></tr>
  390 +<tr> <td class="numLineCover">&nbsp;201</td> <td class="nbHitsCovered">&nbsp;8112</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.velocity = velocity; </pre></td></tr>
  391 +<tr> <td class="numLineCover">&nbsp;202</td> <td class="nbHitsCovered">&nbsp;8112</td> <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
372 392 <tr> <td class="numLine">&nbsp;203</td> <td class="nbHits">&nbsp;</td>
373 393 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
374   -<tr> <td class="numLineCover">&nbsp;204</td> <td class="nbHitsCovered">&nbsp;112</td> <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  394 +<tr> <td class="numLine">&nbsp;204</td> <td class="nbHits">&nbsp;</td>
  395 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
375 396 <tr> <td class="numLine">&nbsp;205</td> <td class="nbHits">&nbsp;</td>
376 397 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets which channel (0-15) this note should be on.</span></pre></td></tr>
377 398 <tr> <td class="numLine">&nbsp;206</td> <td class="nbHits">&nbsp;</td>
@@ -382,23 +403,27 @@
382 403 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
383 404 <tr> <td class="numLine">&nbsp;209</td> <td class="nbHits">&nbsp;</td>
384 405 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">int</span> getChannel() {</pre></td></tr>
385   -<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsCovered">&nbsp;6994</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> channel;</pre></td></tr>
  406 +<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsCovered">&nbsp;7822</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> channel;</pre></td></tr>
386 407 <tr> <td class="numLine">&nbsp;211</td> <td class="nbHits">&nbsp;</td>
387 408 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
388 409 <tr> <td class="numLine">&nbsp;212</td> <td class="nbHits">&nbsp;</td>
389 410 <td class="src"><pre class="src">&nbsp;</pre></td></tr>
390   -<tr> <td class="numLineCover">&nbsp;213</td> <td class="nbHitsUncovered"><a title="Line 213: Conditional coverage 50% (2/4) [each condition: 50%, 50%].">&nbsp;112</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 213: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="comment">/**</span></a></span></pre></td></tr>
391   -<tr> <td class="numLineCover">&nbsp;214</td> <td class="nbHitsCovered"><a title="Line 214: Conditional coverage 100% (2/2).">&nbsp;112</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 214: Conditional coverage 100% (2/2)."><span class="comment"> * Sets which channel (0-15) this note should be on.</span></a></pre></td></tr>
392   -<tr> <td class="numLineCover">&nbsp;215</td> <td class="nbHitsCovered">&nbsp;112</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
393   -<tr> <td class="numLineCover">&nbsp;216</td> <td class="nbHitsCovered">&nbsp;112</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param channel which channel (0-15) this note should be on</span></pre></td></tr>
  411 +<tr> <td class="numLine">&nbsp;213</td> <td class="nbHits">&nbsp;</td>
  412 + <td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
  413 +<tr> <td class="numLine">&nbsp;214</td> <td class="nbHits">&nbsp;</td>
  414 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * Sets which channel (0-15) this note should be on.</span></pre></td></tr>
  415 +<tr> <td class="numLine">&nbsp;215</td> <td class="nbHits">&nbsp;</td>
  416 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  417 +<tr> <td class="numLine">&nbsp;216</td> <td class="nbHits">&nbsp;</td>
  418 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @param channel which channel (0-15) this note should be on</span></pre></td></tr>
394 419 <tr> <td class="numLine">&nbsp;217</td> <td class="nbHits">&nbsp;</td>
395 420 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
396 421 <tr> <td class="numLine">&nbsp;218</td> <td class="nbHits">&nbsp;</td>
397 422 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> setChannel(<span class="keyword">int</span> channel) {</pre></td></tr>
398   -<tr> <td class="numLineCover">&nbsp;219</td> <td class="nbHitsUncovered"><a title="Line 219: Conditional coverage 75% (3/4) [each condition: 50%, 100%].">&nbsp;7266</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 219: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (channel &lt; MIN_CHANNEL || channel &gt; MAX_CHANNEL) <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(String.format(<span class="string">"The channel must be between %d and %d."</span>, MIN_CHANNEL, MAX_CHANNEL));</a></span></pre></td></tr>
399   -<tr> <td class="numLineCover">&nbsp;220</td> <td class="nbHitsCovered"><a title="Line 220: Conditional coverage 100% (2/2).">&nbsp;7264</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 220: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.channel != channel) clearNoteEvents();</a></pre></td></tr>
400   -<tr> <td class="numLineCover">&nbsp;221</td> <td class="nbHitsCovered">&nbsp;7264</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.channel = channel; </pre></td></tr>
401   -<tr> <td class="numLineCover">&nbsp;222</td> <td class="nbHitsCovered">&nbsp;7264</td> <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
  423 +<tr> <td class="numLineCover">&nbsp;219</td> <td class="nbHitsUncovered"><a title="Line 219: Conditional coverage 75% (3/4) [each condition: 50%, 100%].">&nbsp;8114</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 219: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (channel &lt; MIN_CHANNEL || channel &gt; MAX_CHANNEL) <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(String.format(<span class="string">"The channel must be between %d and %d."</span>, MIN_CHANNEL, MAX_CHANNEL));</a></span></pre></td></tr>
  424 +<tr> <td class="numLineCover">&nbsp;220</td> <td class="nbHitsCovered"><a title="Line 220: Conditional coverage 100% (2/2).">&nbsp;8112</a></td> <td class="src"><pre class="src">&nbsp;<a title="Line 220: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.channel != channel) clearNoteEvents();</a></pre></td></tr>
  425 +<tr> <td class="numLineCover">&nbsp;221</td> <td class="nbHitsCovered">&nbsp;8112</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">this</span>.channel = channel; </pre></td></tr>
  426 +<tr> <td class="numLineCover">&nbsp;222</td> <td class="nbHitsCovered">&nbsp;8112</td> <td class="src"><pre class="src">&nbsp; } </pre></td></tr>
402 427 <tr> <td class="numLine">&nbsp;223</td> <td class="nbHits">&nbsp;</td>
403 428 <td class="src"><pre class="src">&nbsp; </pre></td></tr>
404 429 <tr> <td class="numLine">&nbsp;224</td> <td class="nbHits">&nbsp;</td>
@@ -407,8 +432,10 @@
407 432 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the note on event for this note. This must be added to the Midi </span></pre></td></tr>
408 433 <tr> <td class="numLine">&nbsp;226</td> <td class="nbHits">&nbsp;</td>
409 434 <td class="src"><pre class="src">&nbsp;<span class="comment"> * track before the note off event.</span></pre></td></tr>
410   -<tr> <td class="numLineCover">&nbsp;227</td> <td class="nbHitsUncovered"><a title="Line 227: Conditional coverage 50% (1/2).">&nbsp;56</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 227: Conditional coverage 50% (1/2)."><span class="comment"> * </span></a></span></pre></td></tr>
411   -<tr> <td class="numLineCover">&nbsp;228</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the note on event</span></pre></td></tr>
  435 +<tr> <td class="numLine">&nbsp;227</td> <td class="nbHits">&nbsp;</td>
  436 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  437 +<tr> <td class="numLine">&nbsp;228</td> <td class="nbHits">&nbsp;</td>
  438 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the note on event</span></pre></td></tr>
412 439 <tr> <td class="numLine">&nbsp;229</td> <td class="nbHits">&nbsp;</td>
413 440 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws javax.sound.midi.InvalidMidiDataException if there is something</span></pre></td></tr>
414 441 <tr> <td class="numLine">&nbsp;230</td> <td class="nbHits">&nbsp;</td>
@@ -417,8 +444,8 @@
417 444 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
418 445 <tr> <td class="numLine">&nbsp;232</td> <td class="nbHits">&nbsp;</td>
419 446 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> MidiEvent getNoteOnEvent() <span class="keyword">throws</span> InvalidMidiDataException {</pre></td></tr>
420   -<tr> <td class="numLineCover">&nbsp;233</td> <td class="nbHitsUncovered"><a title="Line 233: Conditional coverage 50% (1/2).">&nbsp;3494</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 233: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (noteOnEvent == <span class="keyword">null</span>) createNoteEvents(); </a></span></pre></td></tr>
421   -<tr> <td class="numLineCover">&nbsp;234</td> <td class="nbHitsCovered">&nbsp;3494</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> noteOnEvent;</pre></td></tr>
  447 +<tr> <td class="numLineCover">&nbsp;233</td> <td class="nbHitsUncovered"><a title="Line 233: Conditional coverage 50% (1/2).">&nbsp;3908</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 233: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (noteOnEvent == <span class="keyword">null</span>) createNoteEvents(); </a></span></pre></td></tr>
  448 +<tr> <td class="numLineCover">&nbsp;234</td> <td class="nbHitsCovered">&nbsp;3908</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> noteOnEvent;</pre></td></tr>
422 449 <tr> <td class="numLine">&nbsp;235</td> <td class="nbHits">&nbsp;</td>
423 450 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
424 451 <tr> <td class="numLine">&nbsp;236</td> <td class="nbHits">&nbsp;</td>
@@ -429,8 +456,10 @@
429 456 <td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets the note off event for this note. This must be added to the Midi </span></pre></td></tr>
430 457 <tr> <td class="numLine">&nbsp;239</td> <td class="nbHits">&nbsp;</td>
431 458 <td class="src"><pre class="src">&nbsp;<span class="comment"> * track after the note on event.</span></pre></td></tr>
432   -<tr> <td class="numLineCover">&nbsp;240</td> <td class="nbHitsUncovered"><a title="Line 240: Conditional coverage 50% (1/2).">&nbsp;56</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 240: Conditional coverage 50% (1/2)."><span class="comment"> * </span></a></span></pre></td></tr>
433   -<tr> <td class="numLineCover">&nbsp;241</td> <td class="nbHitsCovered">&nbsp;56</td> <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the note off event</span></pre></td></tr>
  459 +<tr> <td class="numLine">&nbsp;240</td> <td class="nbHits">&nbsp;</td>
  460 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * </span></pre></td></tr>
  461 +<tr> <td class="numLine">&nbsp;241</td> <td class="nbHits">&nbsp;</td>
  462 + <td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the note off event</span></pre></td></tr>
434 463 <tr> <td class="numLine">&nbsp;242</td> <td class="nbHits">&nbsp;</td>
435 464 <td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws javax.sound.midi.InvalidMidiDataException if there is something</span></pre></td></tr>
436 465 <tr> <td class="numLine">&nbsp;243</td> <td class="nbHits">&nbsp;</td>
@@ -439,8 +468,8 @@
439 468 <td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
440 469 <tr> <td class="numLine">&nbsp;245</td> <td class="nbHits">&nbsp;</td>
441 470 <td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> MidiEvent getNoteOffEvent() <span class="keyword">throws</span> InvalidMidiDataException {</pre></td></tr>
442   -<tr> <td class="numLineCover">&nbsp;246</td> <td class="nbHitsUncovered"><a title="Line 246: Conditional coverage 50% (1/2).">&nbsp;3494</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 246: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (noteOffEvent == <span class="keyword">null</span>) createNoteEvents();</a></span></pre></td></tr>
443   -<tr> <td class="numLineCover">&nbsp;247</td> <td class="nbHitsCovered">&nbsp;3494</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> noteOffEvent;</pre></td></tr>
  471 +<tr> <td class="numLineCover">&nbsp;246</td> <td class="nbHitsUncovered"><a title="Line 246: Conditional coverage 50% (1/2).">&nbsp;3908</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 246: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (noteOffEvent == <span class="keyword">null</span>) createNoteEvents();</a></span></pre></td></tr>
  472 +<tr> <td class="numLineCover">&nbsp;247</td> <td class="nbHitsCovered">&nbsp;3908</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> noteOffEvent;</pre></td></tr>
444 473 <tr> <td class="numLine">&nbsp;248</td> <td class="nbHits">&nbsp;</td>
445 474 <td class="src"><pre class="src">&nbsp; }</pre></td></tr>
446 475 <tr> <td class="numLine">&nbsp;249</td> <td class="nbHits">&nbsp;</td>
@@ -460,23 +489,27 @@
460 489 <tr> <td class="numLineCover">&nbsp;256</td> <td class="nbHitsCovered">&nbsp;2</td> <td class="src"><pre class="src">&nbsp; <span class="keyword">return</span> <span class="keyword">this</span>.getStartTime() + <span class="keyword">this</span>.getDuration();</pre></td></tr>
461 490 <tr> <td class="numLine">&nbsp;257</td> <td class="nbHits">&nbsp;</td>