d2e9c92910a5c16751c215eb4671cefa621c3ad3
[debian/freetts] / javadoc / com / sun / speech / freetts / audio / JavaStreamingAudioPlayer.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
2 <!--NewPage-->\r
3 <HTML>\r
4 <HEAD>\r
5 <!-- Generated by javadoc (build 1.4.2_16) on Mon Mar 09 18:20:29 CET 2009 -->\r
6 <TITLE>\r
7 JavaStreamingAudioPlayer (FreeTTS 1.2)\r
8 </TITLE>\r
9 \r
10 <META NAME="keywords" CONTENT="com.sun.speech.freetts.audio.JavaStreamingAudioPlayer class">\r
11 \r
12 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">\r
13 \r
14 <SCRIPT type="text/javascript">\r
15 function windowTitle()\r
16 {\r
17     parent.document.title="JavaStreamingAudioPlayer (FreeTTS 1.2)";\r
18 }\r
19 </SCRIPT>\r
20 \r
21 </HEAD>\r
22 \r
23 <BODY BGCOLOR="white" onload="windowTitle();">\r
24 \r
25
26 <!-- ========= START OF TOP NAVBAR ======= -->\r
27 <A NAME="navbar_top"><!-- --></A>
28 <A HREF="#skip-navbar_top" title="Skip navigation links"></A>
29 <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">\r
30 <TR>\r
31 <TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">\r
32 <A NAME="navbar_top_firstrow"><!-- --></A>
33 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">\r
34   <TR ALIGN="center" VALIGN="top">\r
35   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>\r
36   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>\r
37   <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>\r
38   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>\r
39   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>\r
40   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>\r
41   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>\r
42   </TR>\r
43 </TABLE>\r
44 </TD>\r
45 <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>\r
46 </EM>\r
47 </TD>\r
48 </TR>\r
49 \r
50 <TR>\r
51 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">\r
52 &nbsp;<A HREF="../../../../../com/sun/speech/freetts/audio/JavaClipAudioPlayer.html" title="class in com.sun.speech.freetts.audio"><B>PREV CLASS</B></A>&nbsp;\r
53 &nbsp;<A HREF="../../../../../com/sun/speech/freetts/audio/MultiFile8BitAudioPlayer.html" title="class in com.sun.speech.freetts.audio"><B>NEXT CLASS</B></A></FONT></TD>\r
54 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">\r
55   <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;\r
56 &nbsp;<A HREF="JavaStreamingAudioPlayer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;\r
57 &nbsp;<SCRIPT type="text/javascript">\r
58   <!--\r
59   if(window==top) {\r
60     document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');\r
61   }\r
62   //-->\r
63 </SCRIPT>\r
64 <NOSCRIPT>\r
65   <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>\r
66 </NOSCRIPT>
67 \r
68 </FONT></TD>\r
69 </TR>\r
70 <TR>\r
71 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">\r
72   SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>\r
73 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">\r
74 DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>\r
75 </TR>\r
76 </TABLE>\r
77 <A NAME="skip-navbar_top"></A>
78 <!-- ========= END OF TOP NAVBAR ========= -->\r
79 \r
80 <HR>\r
81 <!-- ======== START OF CLASS DATA ======== -->\r
82 <H2>\r
83 <FONT SIZE="-1">\r
84 com.sun.speech.freetts.audio</FONT>\r
85 <BR>\r
86 Class JavaStreamingAudioPlayer</H2>\r
87 <PRE>\r
88 java.lang.Object\r
89   <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.sun.speech.freetts.audio.JavaStreamingAudioPlayer</B>\r
90 </PRE>\r
91 <DL>\r
92 <DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></DD>\r
93 </DL>\r
94 <HR>\r
95 <DL>\r
96 <DT>public class <B>JavaStreamingAudioPlayer</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></DL>\r
97 \r
98 <P>\r
99 Streams audio to java audio. This class provides a low latency
100  method of sending audio output through the javax.sound audio API.
101  Audio data is sent in small sets to the audio system allowing it to
102  be played soon after it is generated.
103
104   Unfortunately, the current release of the JDK (JDK 1.4 beta 2) has 
105   a bug or two in
106   the implementation of 'SourceDataLine.drain'.  A workaround solution that
107   sleep/waits on SourceDataLine.isActive is used here instead.  To
108   disable the work around (i.e use the real 'drain') set the
109   property:
110  <p>
111  <code>
112    com.sun.speech.freetts.audio.AudioPlayer.drainWorksProperly;
113  </code>
114  to <code>true</code>.
115
116  If the workaround is enabled, the line.isActive method will be
117  performed periodically. The period of the test can be controlled
118  with:
119
120  <p>
121  <code>
122    com.sun.speech.freetts.audio.AudioPlayer.drainDelay"
123  </code>
124
125  <p>
126  The default if 5ms.
127
128  <p>
129  The property 
130  <code>
131    com.sun.speech.freetts.audio.AudioPlayer.bufferSize"
132  </code>
133
134  <p>
135  Controls the audio buffer size, it defaults to 8192
136
137  <p>
138  Even with this drain work around, there are some issues with this
139  class. The workaround drain is not completely reliable.
140  A <code>resume</code> following a <code>pause</code> does not
141  always continue at the proper position in the audio. On a rare
142  occasion, sound output will be repeated a number of times. This may
143  be related to bug 4421330 in the Bug Parade database.\r
144 <P>\r
145 \r
146 <P>\r
147 <HR>\r
148 \r
149 <P>\r
150 <!-- ======== NESTED CLASS SUMMARY ======== -->\r
151 \r
152 \r
153 <!-- =========== FIELD SUMMARY =========== -->\r
154 \r
155 \r
156 <!-- ======== CONSTRUCTOR SUMMARY ======== -->\r
157 \r
158 <A NAME="constructor_summary"><!-- --></A>
159 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">\r
160 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">\r
161 <TD COLSPAN=2><FONT SIZE="+2">\r
162 <B>Constructor Summary</B></FONT></TD>\r
163 </TR>\r
164 <TR BGCOLOR="white" CLASS="TableRowColor">\r
165 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#JavaStreamingAudioPlayer()">JavaStreamingAudioPlayer</A></B>()</CODE>\r
166 \r
167 <BR>\r
168 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a default JavaStreamingAudioPlayer</TD>\r
169 </TR>\r
170 </TABLE>\r
171 &nbsp;\r
172 <!-- ========== METHOD SUMMARY =========== -->\r
173 \r
174 <A NAME="method_summary"><!-- --></A>
175 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">\r
176 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">\r
177 <TD COLSPAN=2><FONT SIZE="+2">\r
178 <B>Method Summary</B></FONT></TD>\r
179 </TR>\r
180 <TR BGCOLOR="white" CLASS="TableRowColor">\r
181 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
182 <CODE>&nbsp;void</CODE></FONT></TD>\r
183 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#begin(int)">begin</A></B>(int&nbsp;size)</CODE>\r
184 \r
185 <BR>\r
186 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Starts the output of a set of data.
187  </TD>\r
188 </TR>\r
189 <TR BGCOLOR="white" CLASS="TableRowColor">\r
190 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
191 <CODE>&nbsp;void</CODE></FONT></TD>\r
192 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#cancel()">cancel</A></B>()</CODE>\r
193 \r
194 <BR>\r
195 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cancels currently playing audio.</TD>\r
196 </TR>\r
197 <TR BGCOLOR="white" CLASS="TableRowColor">\r
198 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
199 <CODE>&nbsp;void</CODE></FONT></TD>\r
200 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#close()">close</A></B>()</CODE>\r
201 \r
202 <BR>\r
203 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Closes this audio player</TD>\r
204 </TR>\r
205 <TR BGCOLOR="white" CLASS="TableRowColor">\r
206 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
207 <CODE>&nbsp;boolean</CODE></FONT></TD>\r
208 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#drain()">drain</A></B>()</CODE>\r
209 \r
210 <BR>\r
211 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Waits for all queued audio to be played</TD>\r
212 </TR>\r
213 <TR BGCOLOR="white" CLASS="TableRowColor">\r
214 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
215 <CODE>&nbsp;boolean</CODE></FONT></TD>\r
216 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#end()">end</A></B>()</CODE>\r
217 \r
218 <BR>\r
219 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Marks the end of a set of data. </TD>\r
220 </TR>\r
221 <TR BGCOLOR="white" CLASS="TableRowColor">\r
222 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
223 <CODE>&nbsp;javax.sound.sampled.AudioFormat</CODE></FONT></TD>\r
224 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#getAudioFormat()">getAudioFormat</A></B>()</CODE>\r
225 \r
226 <BR>\r
227 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the audio format for this player</TD>\r
228 </TR>\r
229 <TR BGCOLOR="white" CLASS="TableRowColor">\r
230 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
231 <CODE>&nbsp;long</CODE></FONT></TD>\r
232 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#getTime()">getTime</A></B>()</CODE>\r
233 \r
234 <BR>\r
235 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the amount of played since the last mark</TD>\r
236 </TR>\r
237 <TR BGCOLOR="white" CLASS="TableRowColor">\r
238 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
239 <CODE>&nbsp;float</CODE></FONT></TD>\r
240 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#getVolume()">getVolume</A></B>()</CODE>\r
241 \r
242 <BR>\r
243 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the current volume.</TD>\r
244 </TR>\r
245 <TR BGCOLOR="white" CLASS="TableRowColor">\r
246 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
247 <CODE>&nbsp;void</CODE></FONT></TD>\r
248 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#pause()">pause</A></B>()</CODE>\r
249 \r
250 <BR>\r
251 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pauses audio output</TD>\r
252 </TR>\r
253 <TR BGCOLOR="white" CLASS="TableRowColor">\r
254 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
255 <CODE>&nbsp;void</CODE></FONT></TD>\r
256 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#reset()">reset</A></B>()</CODE>\r
257 \r
258 <BR>\r
259 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prepares for another batch of output. </TD>\r
260 </TR>\r
261 <TR BGCOLOR="white" CLASS="TableRowColor">\r
262 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
263 <CODE>&nbsp;void</CODE></FONT></TD>\r
264 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#resetTime()">resetTime</A></B>()</CODE>\r
265 \r
266 <BR>\r
267 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resets the audio clock</TD>\r
268 </TR>\r
269 <TR BGCOLOR="white" CLASS="TableRowColor">\r
270 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
271 <CODE>&nbsp;void</CODE></FONT></TD>\r
272 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#resume()">resume</A></B>()</CODE>\r
273 \r
274 <BR>\r
275 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resumes audio output</TD>\r
276 </TR>\r
277 <TR BGCOLOR="white" CLASS="TableRowColor">\r
278 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
279 <CODE>&nbsp;void</CODE></FONT></TD>\r
280 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#setAudioFormat(javax.sound.sampled.AudioFormat)">setAudioFormat</A></B>(javax.sound.sampled.AudioFormat&nbsp;format)</CODE>\r
281 \r
282 <BR>\r
283 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the audio format for this player</TD>\r
284 </TR>\r
285 <TR BGCOLOR="white" CLASS="TableRowColor">\r
286 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
287 <CODE>&nbsp;void</CODE></FONT></TD>\r
288 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#setVolume(float)">setVolume</A></B>(float&nbsp;volume)</CODE>\r
289 \r
290 <BR>\r
291 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the current volume.</TD>\r
292 </TR>\r
293 <TR BGCOLOR="white" CLASS="TableRowColor">\r
294 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
295 <CODE>&nbsp;void</CODE></FONT></TD>\r
296 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#showMetrics()">showMetrics</A></B>()</CODE>\r
297 \r
298 <BR>\r
299 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shows metrics for this audio player</TD>\r
300 </TR>\r
301 <TR BGCOLOR="white" CLASS="TableRowColor">\r
302 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
303 <CODE>&nbsp;void</CODE></FONT></TD>\r
304 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#startFirstSampleTimer()">startFirstSampleTimer</A></B>()</CODE>\r
305 \r
306 <BR>\r
307 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Starts the first sample timer</TD>\r
308 </TR>\r
309 <TR BGCOLOR="white" CLASS="TableRowColor">\r
310 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
311 <CODE>&nbsp;java.lang.String</CODE></FONT></TD>\r
312 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#toString()">toString</A></B>()</CODE>\r
313 \r
314 <BR>\r
315 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this audioplayer</TD>\r
316 </TR>\r
317 <TR BGCOLOR="white" CLASS="TableRowColor">\r
318 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
319 <CODE>&nbsp;boolean</CODE></FONT></TD>\r
320 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#write(byte[])">write</A></B>(byte[]&nbsp;audioData)</CODE>\r
321 \r
322 <BR>\r
323 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the given bytes to the audio stream</TD>\r
324 </TR>\r
325 <TR BGCOLOR="white" CLASS="TableRowColor">\r
326 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">\r
327 <CODE>&nbsp;boolean</CODE></FONT></TD>\r
328 <TD><CODE><B><A HREF="../../../../../com/sun/speech/freetts/audio/JavaStreamingAudioPlayer.html#write(byte[], int, int)">write</A></B>(byte[]&nbsp;bytes,
329       int&nbsp;offset,
330       int&nbsp;size)</CODE>\r
331 \r
332 <BR>\r
333 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writes the given bytes to the audio stream</TD>\r
334 </TR>\r
335 </TABLE>\r
336 &nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
337 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">\r
338 <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">\r
339 <TD><B>Methods inherited from class java.lang.Object</B></TD>\r
340 </TR>\r
341 <TR BGCOLOR="white" CLASS="TableRowColor">\r
342 <TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>\r
343 </TR>\r
344 </TABLE>\r
345 &nbsp;\r
346 <P>\r
347 \r
348 <!-- ============ FIELD DETAIL =========== -->\r
349 \r
350 \r
351 <!-- ========= CONSTRUCTOR DETAIL ======== -->\r
352 \r
353 <A NAME="constructor_detail"><!-- --></A>
354 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">\r
355 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">\r
356 <TD COLSPAN=1><FONT SIZE="+2">\r
357 <B>Constructor Detail</B></FONT></TD>\r
358 </TR>\r
359 </TABLE>\r
360 \r
361 <A NAME="JavaStreamingAudioPlayer()"><!-- --></A><H3>\r
362 JavaStreamingAudioPlayer</H3>\r
363 <PRE>\r
364 public <B>JavaStreamingAudioPlayer</B>()</PRE>\r
365 <DL>\r
366 <DD>Constructs a default JavaStreamingAudioPlayer\r
367 <P>\r
368 </DL>\r
369 \r
370 <!-- ============ METHOD DETAIL ========== -->\r
371 \r
372 <A NAME="method_detail"><!-- --></A>
373 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">\r
374 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">\r
375 <TD COLSPAN=1><FONT SIZE="+2">\r
376 <B>Method Detail</B></FONT></TD>\r
377 </TR>\r
378 </TABLE>\r
379 \r
380 <A NAME="setAudioFormat(javax.sound.sampled.AudioFormat)"><!-- --></A><H3>\r
381 setAudioFormat</H3>\r
382 <PRE>\r
383 public void <B>setAudioFormat</B>(javax.sound.sampled.AudioFormat&nbsp;format)</PRE>\r
384 <DL>\r
385 <DD>Sets the audio format for this player\r
386 <P>\r
387 <DD><DL>\r
388 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#setAudioFormat(javax.sound.sampled.AudioFormat)">setAudioFormat</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
389 </DD>\r
390 <DD><DL>\r
391 <DT><B>Parameters:</B><DD><CODE>format</CODE> - the audio format
392 <DT><B>Throws:</B>
393 <DD><CODE>java.lang.UnsupportedOperationException</CODE> - if the line cannot be opened with
394      the given format</DL>\r
395 </DD>\r
396 </DL>\r
397 <HR>\r
398 \r
399 <A NAME="getAudioFormat()"><!-- --></A><H3>\r
400 getAudioFormat</H3>\r
401 <PRE>\r
402 public javax.sound.sampled.AudioFormat <B>getAudioFormat</B>()</PRE>\r
403 <DL>\r
404 <DD>Gets the audio format for this player\r
405 <P>\r
406 <DD><DL>\r
407 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#getAudioFormat()">getAudioFormat</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
408 </DD>\r
409 <DD><DL>\r
410
411 <DT><B>Returns:</B><DD>format the audio format</DL>\r
412 </DD>\r
413 </DL>\r
414 <HR>\r
415 \r
416 <A NAME="startFirstSampleTimer()"><!-- --></A><H3>\r
417 startFirstSampleTimer</H3>\r
418 <PRE>\r
419 public void <B>startFirstSampleTimer</B>()</PRE>\r
420 <DL>\r
421 <DD>Starts the first sample timer\r
422 <P>\r
423 <DD><DL>\r
424 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#startFirstSampleTimer()">startFirstSampleTimer</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
425 </DD>\r
426 <DD><DL>\r
427 </DL>\r
428 </DD>\r
429 </DL>\r
430 <HR>\r
431 \r
432 <A NAME="pause()"><!-- --></A><H3>\r
433 pause</H3>\r
434 <PRE>\r
435 public void <B>pause</B>()</PRE>\r
436 <DL>\r
437 <DD>Pauses audio output\r
438 <P>\r
439 <DD><DL>\r
440 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#pause()">pause</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
441 </DD>\r
442 <DD><DL>\r
443 </DL>\r
444 </DD>\r
445 </DL>\r
446 <HR>\r
447 \r
448 <A NAME="resume()"><!-- --></A><H3>\r
449 resume</H3>\r
450 <PRE>\r
451 public void <B>resume</B>()</PRE>\r
452 <DL>\r
453 <DD>Resumes audio output\r
454 <P>\r
455 <DD><DL>\r
456 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#resume()">resume</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
457 </DD>\r
458 <DD><DL>\r
459 </DL>\r
460 </DD>\r
461 </DL>\r
462 <HR>\r
463 \r
464 <A NAME="cancel()"><!-- --></A><H3>\r
465 cancel</H3>\r
466 <PRE>\r
467 public void <B>cancel</B>()</PRE>\r
468 <DL>\r
469 <DD>Cancels currently playing audio.\r
470 <P>\r
471 <DD><DL>\r
472 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#cancel()">cancel</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
473 </DD>\r
474 <DD><DL>\r
475 </DL>\r
476 </DD>\r
477 </DL>\r
478 <HR>\r
479 \r
480 <A NAME="reset()"><!-- --></A><H3>\r
481 reset</H3>\r
482 <PRE>\r
483 public void <B>reset</B>()</PRE>\r
484 <DL>\r
485 <DD>Prepares for another batch of output. Larger groups of output
486  (such as all output associated with a single FreeTTSSpeakable)
487  should be grouped between a reset/drain pair.\r
488 <P>\r
489 <DD><DL>\r
490 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#reset()">reset</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
491 </DD>\r
492 <DD><DL>\r
493 </DL>\r
494 </DD>\r
495 </DL>\r
496 <HR>\r
497 \r
498 <A NAME="close()"><!-- --></A><H3>\r
499 close</H3>\r
500 <PRE>\r
501 public void <B>close</B>()</PRE>\r
502 <DL>\r
503 <DD>Closes this audio player\r
504 <P>\r
505 <DD><DL>\r
506 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#close()">close</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
507 </DD>\r
508 <DD><DL>\r
509 </DL>\r
510 </DD>\r
511 </DL>\r
512 <HR>\r
513 \r
514 <A NAME="getVolume()"><!-- --></A><H3>\r
515 getVolume</H3>\r
516 <PRE>\r
517 public float <B>getVolume</B>()</PRE>\r
518 <DL>\r
519 <DD>Returns the current volume.\r
520 <P>\r
521 <DD><DL>\r
522 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#getVolume()">getVolume</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
523 </DD>\r
524 <DD><DL>\r
525
526 <DT><B>Returns:</B><DD>the current volume (between 0 and 1)</DL>\r
527 </DD>\r
528 </DL>\r
529 <HR>\r
530 \r
531 <A NAME="setVolume(float)"><!-- --></A><H3>\r
532 setVolume</H3>\r
533 <PRE>\r
534 public void <B>setVolume</B>(float&nbsp;volume)</PRE>\r
535 <DL>\r
536 <DD>Sets the current volume.\r
537 <P>\r
538 <DD><DL>\r
539 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#setVolume(float)">setVolume</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
540 </DD>\r
541 <DD><DL>\r
542 <DT><B>Parameters:</B><DD><CODE>volume</CODE> - the current volume (between 0 and 1)</DL>\r
543 </DD>\r
544 </DL>\r
545 <HR>\r
546 \r
547 <A NAME="begin(int)"><!-- --></A><H3>\r
548 begin</H3>\r
549 <PRE>\r
550 public void <B>begin</B>(int&nbsp;size)</PRE>\r
551 <DL>\r
552 <DD>Starts the output of a set of data.
553  For this JavaStreamingAudioPlayer, it actually opens the audio line.
554  Since this is a streaming audio player, the <code>size</code>
555  parameter has no meaning and effect at all, so any value can be used.
556  Audio data for a single utterance should be grouped 
557  between begin/end pairs.\r
558 <P>\r
559 <DD><DL>\r
560 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#begin(int)">begin</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
561 </DD>\r
562 <DD><DL>\r
563 <DT><B>Parameters:</B><DD><CODE>size</CODE> - supposedly the size of data between now and the end,
564     but since this is a streaming audio player, this parameter
565     has no meaning and effect at all</DL>\r
566 </DD>\r
567 </DL>\r
568 <HR>\r
569 \r
570 <A NAME="end()"><!-- --></A><H3>\r
571 end</H3>\r
572 <PRE>\r
573 public boolean <B>end</B>()</PRE>\r
574 <DL>\r
575 <DD>Marks the end of a set of data. Audio data for a single 
576   utterance should be groupd between begin/end pairs.\r
577 <P>\r
578 <DD><DL>\r
579 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#end()">end</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
580 </DD>\r
581 <DD><DL>\r
582
583 <DT><B>Returns:</B><DD>true if the audio was output properly, false if the
584       output was cancelled or interrupted.</DL>\r
585 </DD>\r
586 </DL>\r
587 <HR>\r
588 \r
589 <A NAME="drain()"><!-- --></A><H3>\r
590 drain</H3>\r
591 <PRE>\r
592 public boolean <B>drain</B>()</PRE>\r
593 <DL>\r
594 <DD>Waits for all queued audio to be played\r
595 <P>\r
596 <DD><DL>\r
597 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#drain()">drain</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
598 </DD>\r
599 <DD><DL>\r
600
601 <DT><B>Returns:</B><DD>true if the audio played to completion, false if
602    the audio was stopped
603
604         [[[ WORKAROUND TODO
605    The javax.sound.sampled drain is almost working properly.  On
606    linux, there is still a little bit of sound that needs to go
607    out, even after drain is called. Thus, the drainDelay. We
608    wait for a few hundred milliseconds while the data is really
609    drained out of the system
610  ]]]</DL>\r
611 </DD>\r
612 </DL>\r
613 <HR>\r
614 \r
615 <A NAME="getTime()"><!-- --></A><H3>\r
616 getTime</H3>\r
617 <PRE>\r
618 public long <B>getTime</B>()</PRE>\r
619 <DL>\r
620 <DD>Gets the amount of played since the last mark\r
621 <P>\r
622 <DD><DL>\r
623 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#getTime()">getTime</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
624 </DD>\r
625 <DD><DL>\r
626
627 <DT><B>Returns:</B><DD>the amount of audio in milliseconds</DL>\r
628 </DD>\r
629 </DL>\r
630 <HR>\r
631 \r
632 <A NAME="resetTime()"><!-- --></A><H3>\r
633 resetTime</H3>\r
634 <PRE>\r
635 public void <B>resetTime</B>()</PRE>\r
636 <DL>\r
637 <DD>Resets the audio clock\r
638 <P>\r
639 <DD><DL>\r
640 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#resetTime()">resetTime</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
641 </DD>\r
642 <DD><DL>\r
643 </DL>\r
644 </DD>\r
645 </DL>\r
646 <HR>\r
647 \r
648 <A NAME="write(byte[])"><!-- --></A><H3>\r
649 write</H3>\r
650 <PRE>\r
651 public boolean <B>write</B>(byte[]&nbsp;audioData)</PRE>\r
652 <DL>\r
653 <DD>Writes the given bytes to the audio stream\r
654 <P>\r
655 <DD><DL>\r
656 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#write(byte[])">write</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
657 </DD>\r
658 <DD><DL>\r
659 <DT><B>Parameters:</B><DD><CODE>audioData</CODE> - audio data to write to the device
660 <DT><B>Returns:</B><DD><code>true</code> of the write completed successfully, 
661         <code> false </code>if the write was cancelled.</DL>\r
662 </DD>\r
663 </DL>\r
664 <HR>\r
665 \r
666 <A NAME="write(byte[], int, int)"><!-- --></A><H3>\r
667 write</H3>\r
668 <PRE>\r
669 public boolean <B>write</B>(byte[]&nbsp;bytes,
670                      int&nbsp;offset,
671                      int&nbsp;size)</PRE>\r
672 <DL>\r
673 <DD>Writes the given bytes to the audio stream\r
674 <P>\r
675 <DD><DL>\r
676 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#write(byte[], int, int)">write</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
677 </DD>\r
678 <DD><DL>\r
679 <DT><B>Parameters:</B><DD><CODE>bytes</CODE> - audio data to write to the device<DD><CODE>offset</CODE> - the offset into the buffer<DD><CODE>size</CODE> - the size into the buffer
680 <DT><B>Returns:</B><DD><code>true</code> of the write completed successfully, 
681         <code> false </code>if the write was cancelled.</DL>\r
682 </DD>\r
683 </DL>\r
684 <HR>\r
685 \r
686 <A NAME="toString()"><!-- --></A><H3>\r
687 toString</H3>\r
688 <PRE>\r
689 public java.lang.String <B>toString</B>()</PRE>\r
690 <DL>\r
691 <DD>Returns the name of this audioplayer\r
692 <P>\r
693 <DD><DL>\r
694 </DL>\r
695 </DD>\r
696 <DD><DL>\r
697
698 <DT><B>Returns:</B><DD>the name of the audio player</DL>\r
699 </DD>\r
700 </DL>\r
701 <HR>\r
702 \r
703 <A NAME="showMetrics()"><!-- --></A><H3>\r
704 showMetrics</H3>\r
705 <PRE>\r
706 public void <B>showMetrics</B>()</PRE>\r
707 <DL>\r
708 <DD>Shows metrics for this audio player\r
709 <P>\r
710 <DD><DL>\r
711 <DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html#showMetrics()">showMetrics</A></CODE> in interface <CODE><A HREF="../../../../../com/sun/speech/freetts/audio/AudioPlayer.html" title="interface in com.sun.speech.freetts.audio">AudioPlayer</A></CODE></DL>\r
712 </DD>\r
713 <DD><DL>\r
714 </DL>\r
715 </DD>\r
716 </DL>\r
717 <!-- ========= END OF CLASS DATA ========= -->\r
718 <HR>\r
719 \r
720
721 <!-- ======= START OF BOTTOM NAVBAR ====== -->\r
722 <A NAME="navbar_bottom"><!-- --></A>
723 <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
724 <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">\r
725 <TR>\r
726 <TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">\r
727 <A NAME="navbar_bottom_firstrow"><!-- --></A>
728 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">\r
729   <TR ALIGN="center" VALIGN="top">\r
730   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>\r
731   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>\r
732   <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>\r
733   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>\r
734   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>\r
735   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>\r
736   <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>\r
737   </TR>\r
738 </TABLE>\r
739 </TD>\r
740 <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>\r
741 </EM>\r
742 </TD>\r
743 </TR>\r
744 \r
745 <TR>\r
746 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">\r
747 &nbsp;<A HREF="../../../../../com/sun/speech/freetts/audio/JavaClipAudioPlayer.html" title="class in com.sun.speech.freetts.audio"><B>PREV CLASS</B></A>&nbsp;\r
748 &nbsp;<A HREF="../../../../../com/sun/speech/freetts/audio/MultiFile8BitAudioPlayer.html" title="class in com.sun.speech.freetts.audio"><B>NEXT CLASS</B></A></FONT></TD>\r
749 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">\r
750   <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;\r
751 &nbsp;<A HREF="JavaStreamingAudioPlayer.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;\r
752 &nbsp;<SCRIPT type="text/javascript">\r
753   <!--\r
754   if(window==top) {\r
755     document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');\r
756   }\r
757   //-->\r
758 </SCRIPT>\r
759 <NOSCRIPT>\r
760   <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>\r
761 </NOSCRIPT>
762 \r
763 </FONT></TD>\r
764 </TR>\r
765 <TR>\r
766 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">\r
767   SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>\r
768 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">\r
769 DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>\r
770 </TR>\r
771 </TABLE>\r
772 <A NAME="skip-navbar_bottom"></A>
773 <!-- ======== END OF BOTTOM NAVBAR ======= -->\r
774 \r
775 <HR>\r
776 \r
777 </BODY>\r
778 </HTML>\r