<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-27712</id>
	<title>Nabble - OpenJDK Sound API Development</title>
	<updated>2009-11-07T22:04:00Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/OpenJDK-Sound-API-Development-f27712.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OpenJDK-Sound-API-Development-f27712.html" />
	<subtitle type="html">The Sound API is a low-level API for creating, modifying, and controlling the input and output of sound media, including both audio and MIDI (Musical Instrument Digital Interface) data. The JavaSound API provides explicit control over the capabilities normally required for sound input and output, in a framework that promotes extensibility and flexibility.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26251256</id>
	<title>Re: &lt;Sound Dev&gt; Great work on the Java Sound API for Linux!</title>
	<published>2009-11-07T22:04:00Z</published>
	<updated>2009-11-07T22:04:00Z</updated>
	<author>
		<name>Damjan Jovanovic-2</name>
	</author>
	<content type="html">On Sun, Nov 8, 2009 at 12:37 AM, Nerius Landys &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251256&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nlandys@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Do you mean that you can play sound with another non-Java applications in
&lt;br&gt;&amp;gt;&amp;gt; the same time? With Sun's JDK 1.6.0u16 i can't do it:
&lt;br&gt;&amp;gt;&amp;gt; What is a difference? Is Java Sound has been rewritten for Linux?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes, when using the OpenJDK 1.6, I can play sound from my Java app at
&lt;br&gt;&amp;gt; the same time that other audio apps are running, such as video games,
&lt;br&gt;&amp;gt; speech-dispatcher, Mumble, etc.  Furthermore, in OpenJDK, I can play 2
&lt;br&gt;&amp;gt; Clip objects simultaneously and it will mix them for me (presumably
&lt;br&gt;&amp;gt; using ALSA mix program).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On the other hand Sun's JDK does not do all of the above for me.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you, OpenJDK.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;How did you install your OpenJDK? If you're using the Debian package,
&lt;br&gt;I think it comes with Pulseaudio support.
&lt;br&gt;&lt;br&gt;Please check the jre/lib/ext directory and your /usr/share/java
&lt;br&gt;directory for pulse-java.jar.
&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;Damjan
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Great-work-on-the-Java-Sound-API-for-Linux%21-tp26243448p26251256.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26249335</id>
	<title>Re: &lt;Sound Dev&gt; Great work on the Java Sound API for Linux!</title>
	<published>2009-11-07T14:37:59Z</published>
	<updated>2009-11-07T14:37:59Z</updated>
	<author>
		<name>Nerius Landys</name>
	</author>
	<content type="html">&amp;gt; Do you mean that you can play sound with another non-Java applications in
&lt;br&gt;&amp;gt; the same time? With Sun's JDK 1.6.0u16 i can't do it:
&lt;br&gt;&amp;gt; What is a difference? Is Java Sound has been rewritten for Linux?
&lt;br&gt;&lt;br&gt;Yes, when using the OpenJDK 1.6, I can play sound from my Java app at
&lt;br&gt;the same time that other audio apps are running, such as video games,
&lt;br&gt;speech-dispatcher, Mumble, etc. &amp;nbsp;Furthermore, in OpenJDK, I can play 2
&lt;br&gt;Clip objects simultaneously and it will mix them for me (presumably
&lt;br&gt;using ALSA mix program).
&lt;br&gt;&lt;br&gt;On the other hand Sun's JDK does not do all of the above for me.
&lt;br&gt;&lt;br&gt;Thank you, OpenJDK.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Great-work-on-the-Java-Sound-API-for-Linux%21-tp26243448p26249335.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26249059</id>
	<title>Re: &lt;Sound Dev&gt; Great work on the Java Sound API for Linux!</title>
	<published>2009-11-07T14:01:13Z</published>
	<updated>2009-11-07T14:01:13Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">Do you mean that you can play sound with another non-Java applications in the same time? With Sun&amp;#39;s JDK 1.6.0u16 i can&amp;#39;t do it:&lt;br&gt;Exception in thread &amp;quot;main&amp;quot; javax.sound.sampled.LineUnavailableException: Audio Device Unavailable&lt;br&gt;
        at com.sun.media.sound.HeadspaceMixer.nResume(Native Method)&lt;br&gt;        at com.sun.media.sound.HeadspaceMixer.implOpen(HeadspaceMixer.java:346)&lt;br&gt;        at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:286)&lt;br&gt;
        at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:323)&lt;br&gt;        at com.sun.media.sound.MixerClip.open(MixerClip.java:162)&lt;br&gt;        at com.sun.media.sound.MixerClip.open(MixerClip.java:256)&lt;br&gt;        at soundtests.Main.main(Main.java:33)&lt;br&gt;
&lt;br&gt;What is a difference? Is Java Sound has been rewritten for Linux?&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/7 Nerius Landys &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26249059&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nlandys@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Well, the OpenJDK really improves the audio situation for me on Debian&lt;br&gt;
Linux.  I can now finally mix multiple audios together in the Java&lt;br&gt;
program using Clip, and I can run the Java program while other audio&lt;br&gt;
apps are running.&lt;br&gt;
&lt;br&gt;
However, just wanted to point out that on my system the call&lt;br&gt;
&amp;quot;AudioSystem.getClip()&amp;quot; does not work.  It&amp;#39;s not stopping me from my&lt;br&gt;
programming, but I thought perhaps it should work.&lt;br&gt;
&lt;br&gt;
OpenJDK  Runtime Environment (build 1.6.0_0-b11)&lt;br&gt;
OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)&lt;br&gt;
&lt;br&gt;
=============================&lt;br&gt;
import java.io.*;&lt;br&gt;
import javax.sound.sampled.*;&lt;br&gt;
&lt;br&gt;
public class PlayAudios {&lt;br&gt;
&lt;br&gt;
  public static void main(String[] args)&lt;br&gt;
    throws Exception {&lt;br&gt;
    // This call fails on my 64 bit Debian&lt;br&gt;
    // Lenny 5.0 system, HP Z400 workstation:&lt;br&gt;
    //AudioSystem.getClip();&lt;br&gt;
    // It throws an IllegalArgumentException.&lt;br&gt;
&lt;br&gt;
    for (String filename : args) {&lt;br&gt;
      AudioInputStream auIn =&lt;br&gt;
        AudioSystem.getAudioInputStream&lt;br&gt;
        (new File(filename));&lt;br&gt;
      AudioFormat format = auIn.getFormat();&lt;br&gt;
      DataLine.Info info = new DataLine.Info&lt;br&gt;
        (Clip.class, format);&lt;br&gt;
      Clip clip = (Clip) AudioSystem.getLine(info);&lt;br&gt;
      clip.open(auIn);&lt;br&gt;
      clip.start();&lt;br&gt;
    }&lt;br&gt;
    Thread.sleep(3000);&lt;br&gt;
  }&lt;br&gt;
&lt;br&gt;
}&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;-----------------------------------------------------------------&lt;br&gt;Всего наилучшего&lt;br&gt;&lt;br&gt;                          &amp;lt;y6erGn0m.&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Great-work-on-the-Java-Sound-API-for-Linux%21-tp26243448p26249059.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26243448</id>
	<title>&lt;Sound Dev&gt; Great work on the Java Sound API for Linux!</title>
	<published>2009-11-07T02:05:37Z</published>
	<updated>2009-11-07T02:05:37Z</updated>
	<author>
		<name>Nerius Landys</name>
	</author>
	<content type="html">Well, the OpenJDK really improves the audio situation for me on Debian
&lt;br&gt;Linux. &amp;nbsp;I can now finally mix multiple audios together in the Java
&lt;br&gt;program using Clip, and I can run the Java program while other audio
&lt;br&gt;apps are running.
&lt;br&gt;&lt;br&gt;However, just wanted to point out that on my system the call
&lt;br&gt;&amp;quot;AudioSystem.getClip()&amp;quot; does not work. &amp;nbsp;It's not stopping me from my
&lt;br&gt;programming, but I thought perhaps it should work.
&lt;br&gt;&lt;br&gt;OpenJDK &amp;nbsp;Runtime Environment (build 1.6.0_0-b11)
&lt;br&gt;OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
&lt;br&gt;&lt;br&gt;=============================
&lt;br&gt;import java.io.*;
&lt;br&gt;import javax.sound.sampled.*;
&lt;br&gt;&lt;br&gt;public class PlayAudios {
&lt;br&gt;&lt;br&gt;&amp;nbsp; public static void main(String[] args)
&lt;br&gt;&amp;nbsp; &amp;nbsp; throws Exception {
&lt;br&gt;&amp;nbsp; &amp;nbsp; // This call fails on my 64 bit Debian
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Lenny 5.0 system, HP Z400 workstation:
&lt;br&gt;&amp;nbsp; &amp;nbsp; //AudioSystem.getClip();
&lt;br&gt;&amp;nbsp; &amp;nbsp; // It throws an IllegalArgumentException.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; for (String filename : args) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; AudioInputStream auIn =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioSystem.getAudioInputStream
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (new File(filename));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormat format = auIn.getFormat();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; DataLine.Info info = new DataLine.Info
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Clip.class, format);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Clip clip = (Clip) AudioSystem.getLine(info);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; clip.open(auIn);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; clip.start();
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; Thread.sleep(3000);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Great-work-on-the-Java-Sound-API-for-Linux%21-tp26243448p26243448.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26150831</id>
	<title>&lt;Sound Dev&gt; Java and pulseaudio</title>
	<published>2009-11-01T05:23:34Z</published>
	<updated>2009-11-01T05:23:34Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">&lt;p&gt;Is somebody tried to implement pulseaudio sound line for java? Is it possible to implement this feature as extension for Java Sound? &lt;br&gt;
I saw thread about gstreamer.. is the same problem actual for pulse as for gstreamer?&lt;/p&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Java-and-pulseaudio-tp26150831p26150831.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25945529</id>
	<title>Re: &lt;Sound Dev&gt; gstreame - Sound output?</title>
	<published>2009-10-18T03:26:45Z</published>
	<updated>2009-10-18T03:26:45Z</updated>
	<author>
		<name>Mario Torre-2</name>
	</author>
	<content type="html">Il 18/10/2009 05:16, David Welch ha scritto:
&lt;br&gt;&amp;gt; I've loaded gstreamer to expand the number of sound formats my software will handle. Does it also assist sound output? It supports 24-bit stereo FLAC, and I can hear the difference! Is anybody working to bring this functionality to the JDK?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Warm regards,
&lt;br&gt;&amp;gt; Dave (An old retired Computer Geek.)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; P.S.
&lt;br&gt;&amp;gt; I am running OpenSolaris 2009.06 with two &amp;quot;entire&amp;quot; updates.
&lt;br&gt;&lt;br&gt;Hi!
&lt;br&gt;&lt;br&gt;I once wrote a GStreamer java sound backend. It's not in perfect shape 
&lt;br&gt;and lots of things are needed, but the code is public, you can find it 
&lt;br&gt;in the GNU Classpath repository, you could use it as a basis, or as is 
&lt;br&gt;depending on your needs. Porting it to OpenJDK should be a matter of 
&lt;br&gt;adding some build machinery, because the code doesn't really depend on 
&lt;br&gt;any internal Classpath code, if you find any of such dependencies, is 
&lt;br&gt;probably one or two lines of code that can be easily replaced (in fact, 
&lt;br&gt;as we use a Pointer abstraction in Classpath to store native pointers 
&lt;br&gt;you may need to replace this code, but it's not much work).
&lt;br&gt;&lt;br&gt;In general, it's not very easy to do a Java Sound backend with 
&lt;br&gt;GStreamer, because GStreamer is quite high level API and doesn't really 
&lt;br&gt;support well the way Java Sound work internally, but was enough to 
&lt;br&gt;stream from the network all the funny format supported by GStreamer (it 
&lt;br&gt;auto detects those, so no need to do anything). I didn't implement 
&lt;br&gt;support for MIDI and if you plan to use it for real time audio editing 
&lt;br&gt;you will be out of luck.
&lt;br&gt;&lt;br&gt;It was a fun project, I would really liked to revive it if I had some time.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Mario
&lt;br&gt;-- 
&lt;br&gt;pgp key: &lt;a href=&quot;http://subkeys.pgp.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://subkeys.pgp.net/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Proud GNU Classpath developer: &lt;a href=&quot;http://www.classpath.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.classpath.org/&lt;/a&gt;&lt;br&gt;Read About us at: &lt;a href=&quot;http://planet.classpath.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://planet.classpath.org&lt;/a&gt;&lt;br&gt;OpenJDK: &lt;a href=&quot;http://openjdk.java.net/projects/caciocavallo/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://openjdk.java.net/projects/caciocavallo/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Please, support open standards:
&lt;br&gt;&lt;a href=&quot;http://endsoftpatents.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://endsoftpatents.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-gstreame---Sound-output--tp25943686p25945529.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25943686</id>
	<title>&lt;Sound Dev&gt; gstreame - Sound output?</title>
	<published>2009-10-17T20:16:49Z</published>
	<updated>2009-10-17T20:16:49Z</updated>
	<author>
		<name>David Welch-8</name>
	</author>
	<content type="html">&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot;&gt;&lt;tr&gt;&lt;td valign=&quot;top&quot; style=&quot;font: inherit;&quot;&gt;I've loaded gstreamer to expand the number of sound formats my software will handle. Does it also assist sound output? It supports 24-bit stereo FLAC, and I can hear the difference! Is anybody working to bring this functionality to the JDK?&lt;br&gt;&lt;br&gt;Warm regards,&lt;br&gt;Dave (An old retired Computer Geek.)&lt;br&gt;&lt;br&gt;P.S.&lt;br&gt;I am running OpenSolaris 2009.06 with two &quot;entire&quot; updates.&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------&lt;br&gt;
Freemasonry is a system of morality,&lt;br&gt;
veiled in allegory,&lt;br&gt;
and illustrated by symbols.&lt;br&gt;
------------------------------------------------------------&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;

      </content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-gstreame---Sound-output--tp25943686p25943686.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25937632</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-17T04:45:01Z</published>
	<updated>2009-10-17T04:45:01Z</updated>
	<author>
		<name>Bugzilla from rom1dep@gmail.com</name>
	</author>
	<content type="html">&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/14 Alex Menkov &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25937632&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alex.menkov@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;

&lt;br&gt;
rom1dep wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex&quot;&gt;
    2009/10/13 cyberGn0m &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25937632&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25937632&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&amp;gt;&lt;div class=&quot;im&quot;&gt;&lt;br&gt;


        Anybody tested java sound on linux? As I know, java uses ALSA on&lt;br&gt;
        Linux to play audio.. so, i have a problem with it: when java&lt;br&gt;
        plays sound, other applications can&amp;#39;t play anything. When other&lt;br&gt;
        applications plays sound, java can&amp;#39;t. As i know, mplayer can&lt;br&gt;
        play sound via ALSA and i can open many players and all of them&lt;br&gt;
        will plays as expected...&lt;br&gt;
Yepp, I have this problem too and this is very annoying. I found this bug : &lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=6832063&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=6832063&lt;/a&gt;&lt;br&gt;
but I was asking me recently whether or not the fix is really in progress. This issue has made us (people working on the XtremeMP media player) think on a fallback audio backend based on gstreamer-java for people running under linux&lt;br&gt;


&lt;/div&gt;&lt;/blockquote&gt;
&lt;br&gt;
The bug is fixed in 6-open, but the fix is still not integrated into jdk7.&lt;br&gt;
&lt;br&gt;
Regards&lt;br&gt;&lt;font color=&quot;#888888&quot;&gt;
Alex&lt;/font&gt;&lt;/blockquote&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Ok, that fits with the behavior I encounter... Do you know when the fix will be applied into jdk7 ? That shouldn&amp;#39;t be that hard if the work has already been done for openjdk6 :)&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Then, have a nice WE !&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Romain.&lt;/div&gt;&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25937632.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25933284</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-16T15:29:16Z</published>
	<updated>2009-10-16T15:29:16Z</updated>
	<author>
		<name>i30817</name>
	</author>
	<content type="html">So this is only fixed on openjdk? No code level work around for lower versions?
&lt;br&gt;&lt;br&gt;On Thu, Oct 15, 2009 at 8:24 AM, cyberGn0m &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25933284&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I run mplayer in &amp;quot;alsa&amp;quot; mode and many mplayer's can play sound at the same
&lt;br&gt;&amp;gt; time in this mode. Java uses ALSA too, but it gets exclusive access to audio
&lt;br&gt;&amp;gt; device...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/14 PJ leonard &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25933284&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pauljohnleonard@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; My understanding is:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; mplayer might use pulseaudio which allows the sharing of the soundoutput
&lt;br&gt;&amp;gt;&amp;gt; (on my ubuntu this is the default)
&lt;br&gt;&amp;gt;&amp;gt; JAVA uses the alsa device directly so it can not be used by other
&lt;br&gt;&amp;gt;&amp;gt; applications.
&lt;br&gt;&amp;gt;&amp;gt; iced tea JAVA does have a pulseaudio device but I can only produce broken
&lt;br&gt;&amp;gt;&amp;gt; up sound using this.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Paul.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009/10/13 cyberGn0m &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25933284&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Anybody tested java sound on linux? As I know, java uses ALSA on Linux to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; play audio.. so, i have a problem with it: when java plays sound, other
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; applications can't play anything. When other applications plays sound, java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; can't. As i know, mplayer can play sound via ALSA and i can open many
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; players and all of them will plays as expected...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; -----------------------------------------------------------------
&lt;br&gt;&amp;gt; Всего наилучшего
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                          &amp;lt;y6erGn0m.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25933284.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25918046</id>
	<title>Re: &lt;Sound Dev&gt; SourceDataLine behavior on Linux and Windows</title>
	<published>2009-10-15T17:19:09Z</published>
	<updated>2009-10-15T17:19:09Z</updated>
	<author>
		<name>i30817</name>
	</author>
	<content type="html">Are you trying to make a pause() method in a streaming audioplayer
&lt;br&gt;implementation? If you are can you tell any pointers to do it. In fact
&lt;br&gt;&amp;nbsp;can AudioInputStream do it? The documentation implies that mark can
&lt;br&gt;work.
&lt;br&gt;&lt;br&gt;On Thu, Oct 15, 2009 at 11:18 PM, cyberGn0m &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25918046&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; DataLine has a different behavior on Linux and Windows. I do not know, it it
&lt;br&gt;&amp;gt; a bug or feature... may be documentation is not a full?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So, steps to reproduce:
&lt;br&gt;&amp;gt; 1. Create and open data line and start() on it.
&lt;br&gt;&amp;gt; 2. Write data to line in a separate thread.
&lt;br&gt;&amp;gt; 3. Stop line with a stop() method but do not stop thread from (2).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Windows:
&lt;br&gt;&amp;gt; Thread that writes data to data line will fill line's buffer and then blocks
&lt;br&gt;&amp;gt; (sleeps) when buffer reaches full.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Linux:
&lt;br&gt;&amp;gt; Thread that writes data to line will spin around method write and eat CPU,
&lt;br&gt;&amp;gt; because stopped line can't be written and write method returns 0  (no bytes
&lt;br&gt;&amp;gt; written). This happens before line's buffer reaches full (available() &amp;gt; 0).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Of course workaround present, but this behavior looks strange...
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-SourceDataLine-behavior-on-Linux-and-Windows-tp25916939p25918046.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25916939</id>
	<title>&lt;Sound Dev&gt; SourceDataLine behavior on Linux and Windows</title>
	<published>2009-10-15T15:18:20Z</published>
	<updated>2009-10-15T15:18:20Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">DataLine has a different behavior on Linux and Windows. I do not know, it it a bug or feature... may be documentation is not a full?&lt;br&gt;&lt;br&gt;So, steps to reproduce:&lt;br&gt;1. Create and open data line and start() on it.&lt;br&gt;2. Write data to line in a separate thread.&lt;br&gt;
3. Stop line with a stop() method but do not stop thread from (2).&lt;br&gt;&lt;br&gt;On Windows:&lt;br&gt;Thread that writes data to data line will fill line&amp;#39;s buffer and then blocks (sleeps) when buffer reaches full.&lt;br&gt;&lt;br&gt;On Linux:&lt;br&gt;
Thread that writes data to line will spin around method write and eat CPU, because stopped line can&amp;#39;t be written and write method returns 0  (no bytes written). This happens before line&amp;#39;s buffer reaches full (available() &amp;gt; 0).&lt;br&gt;
&lt;br&gt;Of course workaround present, but this behavior looks strange...&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-SourceDataLine-behavior-on-Linux-and-Windows-tp25916939p25916939.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25904098</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-15T00:24:28Z</published>
	<updated>2009-10-15T00:24:28Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">I run mplayer in &amp;quot;alsa&amp;quot; mode and many mplayer&amp;#39;s can play sound at the same time in this mode. Java uses ALSA too, but it gets exclusive access to audio device...&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/14 PJ leonard &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25904098&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pauljohnleonard@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;My understanding is:&lt;br&gt;&lt;br&gt;mplayer might use pulseaudio which allows the sharing of the soundoutput (on my ubuntu this is the default)&lt;br&gt;
JAVA uses the alsa device directly so it can not be used by other applications.&lt;br&gt;
iced tea JAVA does have a pulseaudio device but I can only produce broken up sound using this.&lt;br&gt;
&lt;br&gt;Paul.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/13 cyberGn0m &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25904098&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;div class=&quot;im&quot;&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;


Anybody tested java sound on linux? As I know, java uses ALSA on Linux to play audio.. so, i have a problem with it: when java plays sound, other applications can&amp;#39;t play anything. When other applications plays sound, java can&amp;#39;t. As i know, mplayer can play sound via ALSA and i can open many players and all of them will plays as expected...&lt;br clear=&quot;all&quot;&gt;



&lt;br&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;-----------------------------------------------------------------&lt;br&gt;Всего наилучшего&lt;br&gt;&lt;br&gt;                          &amp;lt;y6erGn0m.&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25904098.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25890284</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-14T05:32:16Z</published>
	<updated>2009-10-14T05:32:16Z</updated>
	<author>
		<name>Alex Menkov-2</name>
	</author>
	<content type="html">&lt;br&gt;rom1dep wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 2009/10/13 cyberGn0m &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25890284&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25890284&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Anybody tested java sound on linux? As I know, java uses ALSA on
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Linux to play audio.. so, i have a problem with it: when java
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plays sound, other applications can't play anything. When other
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; applications plays sound, java can't. As i know, mplayer can
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; play sound via ALSA and i can open many players and all of them
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; will plays as expected...
&lt;br&gt;&amp;gt; Yepp, I have this problem too and this is very annoying. I found this 
&lt;br&gt;&amp;gt; bug : &lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=6832063&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=6832063&lt;/a&gt;&lt;br&gt;&amp;gt; but I was asking me recently whether or not the fix is really in 
&lt;br&gt;&amp;gt; progress. This issue has made us (people working on the XtremeMP media 
&lt;br&gt;&amp;gt; player) think on a fallback audio backend based on gstreamer-java for 
&lt;br&gt;&amp;gt; people running under linux
&lt;/div&gt;&lt;br&gt;The bug is fixed in 6-open, but the fix is still not integrated into jdk7.
&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;Alex
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; If you rather use OpenJDK instead of Sun's, then you can use
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; pulseaudio for playback. Actually pulseaudio is default audio output
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; for OpenJDK on ubuntu linux. Then it's no problem with audio output
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; from multiple applications simultaneously..
&lt;br&gt;&amp;gt; Are you sure ? I use OpenJDK 1.7.0b70 and can't have amarok 
&lt;br&gt;&amp;gt; (gstreamer-&amp;gt;PulseAudio) and XtremeMP playing simultaneously on my 
&lt;br&gt;&amp;gt; netbook. Maybe your hardware has some mixing abilities that lets your 
&lt;br&gt;&amp;gt; 'normal' programs play through pulseaudio over a stream while another 
&lt;br&gt;&amp;gt; one is available for java ? You can try this : play something with 
&lt;br&gt;&amp;gt; mplayer or whatever grinding PA, + trying to play a wave file with 
&lt;br&gt;&amp;gt; &amp;quot;aplay &amp;lt;file.wav&amp;gt;&amp;quot;. If you have your two streams being played, then your 
&lt;br&gt;&amp;gt; audio card is likely mixing-capable...
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25890284.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25889120</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-14T04:10:29Z</published>
	<updated>2009-10-14T04:10:29Z</updated>
	<author>
		<name>Peter Salomonsen</name>
	</author>
	<content type="html">Hi,&lt;br&gt;&lt;br&gt;Yes, I&amp;#39;m sure:&lt;br&gt;&lt;br&gt;This is run on an out-of-the-box ubuntu installation:&lt;br&gt;&lt;br&gt;public static void main(String[] args) throws Exception {&lt;br&gt;        Clip clip = AudioSystem.getClip();&lt;br&gt;        clip.open(AudioSystem.getAudioInputStream(new File(&amp;quot;test.wav&amp;quot;)));&lt;br&gt;
        clip.start();&lt;br&gt;        while(true)&lt;br&gt;            Thread.sleep(1);&lt;br&gt;    }&lt;br&gt;&lt;br&gt;Plays without problems, and I can also call with skype simultaneously (and other pulseaudio supporting apps).&lt;br&gt;&lt;br&gt;As for Frinika - the sound produced from this app is choppy as Paul said - but this is a problem with Frinika and not the pulseaudio support in openjdk..&lt;br&gt;
&lt;br&gt;regards,&lt;br&gt;&lt;br&gt;Peter&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/14 rom1dep &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25889120&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rom1dep@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div class=&quot;im&quot;&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/13 cyberGn0m &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25889120&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;div&gt;


&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;

Anybody tested java sound on linux? As I know, java uses ALSA on Linux to play audio.. so, i have a problem with it: when java plays sound, other applications can&amp;#39;t play anything. When other applications plays sound, java can&amp;#39;t. As i know, mplayer can play sound via ALSA and i can open many players and all of them will plays as expected...&lt;br&gt;



&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;Yepp, I have this problem too and this is very annoying. I found this bug : &lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=6832063&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=6832063&lt;/a&gt;&lt;br&gt;
but I was asking me recently whether or not the fix is really in progress. This issue has made us (people working on the XtremeMP media player) think on a fallback audio backend based on gstreamer-java for people running under linux&lt;div class=&quot;im&quot;&gt;
&lt;br&gt;

&lt;br&gt;&lt;blockquote style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot; class=&quot;gmail_quote&quot;&gt;If you rather use OpenJDK instead of Sun&amp;#39;s, then you can use 
pulseaudio for playback. Actually pulseaudio is default audio output for
 OpenJDK on ubuntu linux. Then it&amp;#39;s no problem with audio output from 
multiple applications simultaneously..&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;Are you sure ? I use OpenJDK 1.7.0b70 and can&amp;#39;t have amarok (gstreamer-&amp;gt;PulseAudio) and XtremeMP playing simultaneously on my netbook. Maybe your hardware has some mixing abilities that lets your &amp;#39;normal&amp;#39; programs play through pulseaudio over a stream while another one is available for java ? You can try this : play something with mplayer or whatever grinding PA, + trying to play a wave file with &amp;quot;aplay &amp;lt;file.wav&amp;gt;&amp;quot;. If you have your two streams being played, then your audio card is likely mixing-capable...&lt;br&gt;


&lt;/div&gt;&lt;br&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25889120.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25888889</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-14T03:51:45Z</published>
	<updated>2009-10-14T03:51:45Z</updated>
	<author>
		<name>Bugzilla from rom1dep@gmail.com</name>
	</author>
	<content type="html">&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;&quot;&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/13 cyberGn0m &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25888889&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;div class=&quot;im&quot;&gt;

&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;

Anybody tested java sound on linux? As I know, java uses ALSA on Linux to play audio.. so, i have a problem with it: when java plays sound, other applications can&amp;#39;t play anything. When other applications plays sound, java can&amp;#39;t. As i know, mplayer can play sound via ALSA and i can open many players and all of them will plays as expected...&lt;br&gt;


&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;br&gt;&lt;/div&gt;Yepp, I have this problem too and this is very annoying. I found this bug : &lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=6832063&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=6832063&lt;/a&gt;&lt;br&gt;but I was asking me recently whether or not the fix is really in progress. This issue has made us (people working on the XtremeMP media player) think on a fallback audio backend based on gstreamer-java for people running under linux&lt;br&gt;

&lt;br&gt;&lt;blockquote style=&quot;margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;&quot; class=&quot;gmail_quote&quot;&gt;If you rather use OpenJDK instead of Sun&amp;#39;s, then you can use 
pulseaudio for playback. Actually pulseaudio is default audio output for
 OpenJDK on ubuntu linux. Then it&amp;#39;s no problem with audio output from 
multiple applications simultaneously..&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;Are you sure ? I use OpenJDK 1.7.0b70 and can&amp;#39;t have amarok (gstreamer-&amp;gt;PulseAudio) and XtremeMP playing simultaneously on my netbook. Maybe your hardware has some mixing abilities that lets your &amp;#39;normal&amp;#39; programs play through pulseaudio over a stream while another one is available for java ? You can try this : play something with mplayer or whatever grinding PA, + trying to play a wave file with &amp;quot;aplay &amp;lt;file.wav&amp;gt;&amp;quot;. If you have your two streams being played, then your audio card is likely mixing-capable...&lt;br&gt;

&lt;/div&gt;&lt;br&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25888889.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25888312</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-14T03:00:19Z</published>
	<updated>2009-10-14T03:00:19Z</updated>
	<author>
		<name>PJ leonard</name>
	</author>
	<content type="html">My understanding is:&lt;br&gt;&lt;br&gt;mplayer might use pulseaudio which allows the sharing of the soundoutput (on my ubuntu this is the default)&lt;br&gt;JAVA uses the alsa device directly so it can not be used by other applications.&lt;br&gt;
iced tea JAVA does have a pulseaudio device but I can only produce broken up sound using this.&lt;br&gt;
&lt;br&gt;Paul.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/13 cyberGn0m &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25888312&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;

Anybody tested java sound on linux? As I know, java uses ALSA on Linux to play audio.. so, i have a problem with it: when java plays sound, other applications can&amp;#39;t play anything. When other applications plays sound, java can&amp;#39;t. As i know, mplayer can play sound via ALSA and i can open many players and all of them will plays as expected...&lt;br clear=&quot;all&quot;&gt;


&lt;br&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25888312.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25886579</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-14T00:29:53Z</published>
	<updated>2009-10-14T00:29:53Z</updated>
	<author>
		<name>Peter Salomonsen</name>
	</author>
	<content type="html">Hi,&lt;br&gt;&lt;br&gt;If you rather use OpenJDK instead of Sun&amp;#39;s, then you can use pulseaudio for playback. Actually pulseaudio is default audio output for OpenJDK on ubuntu linux. Then it&amp;#39;s no problem with audio output from multiple applications simultaneously..&lt;br&gt;
&lt;br&gt;regards,&lt;br&gt;&lt;br&gt;Peter&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/14 cyberGn0m &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25886579&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cy6ergn0m@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
This way still conflicts with ALSA-based players... and probably with any other sound players.. In comments i saw that Java uses OSS for sound output? I think this is a root cause.. This looks it is the same that no sound at Linux...&lt;br&gt;

&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div class=&quot;im&quot;&gt;2009/10/14 Paulo Levi &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25886579&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;i30817@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;

Try to make the default engine the java audio engine... I think i had&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
a test case to see if it worked around here... replace the string for&lt;br&gt;
the wav file, and also, probably the &amp;quot;Java Sound Audio Engine&amp;quot; is not&lt;br&gt;
the correct name string in the comparator ... you&amp;#39;ll have to see. I&lt;br&gt;
can&amp;#39;t test this now since i don&amp;#39;t have a linux here this fails handy.&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25886579.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25885839</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-13T23:08:35Z</published>
	<updated>2009-10-13T23:08:35Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">This way still conflicts with ALSA-based players... and probably with any other sound players.. In comments i saw that Java uses OSS for sound output? I think this is a root cause.. This looks it is the same that no sound at Linux...&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/14 Paulo Levi &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25885839&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;i30817@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Try to make the default engine the java audio engine... I think i had&lt;br&gt;
a test case to see if it worked around here... replace the string for&lt;br&gt;
the wav file, and also, probably the &amp;quot;Java Sound Audio Engine&amp;quot; is not&lt;br&gt;
the correct name string in the comparator ... you&amp;#39;ll have to see. I&lt;br&gt;
can&amp;#39;t test this now since i don&amp;#39;t have a linux here this fails handy.&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25885839.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25885682</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-13T22:49:21Z</published>
	<updated>2009-10-13T22:49:21Z</updated>
	<author>
		<name>i30817</name>
	</author>
	<content type="html">Try to make the default engine the java audio engine... I think i had
&lt;br&gt;a test case to see if it worked around here... replace the string for
&lt;br&gt;the wav file, and also, probably the &amp;quot;Java Sound Audio Engine&amp;quot; is not
&lt;br&gt;the correct name string in the comparator ... you'll have to see. I
&lt;br&gt;can't test this now since i don't have a linux here this fails handy.
&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[SoundPlayer.java]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;import java.io.Closeable;
&lt;br&gt;import java.io.File;
&lt;br&gt;import java.io.IOException;
&lt;br&gt;&lt;br&gt;import java.util.Arrays;
&lt;br&gt;import java.util.Comparator;
&lt;br&gt;import javax.sound.sampled.AudioFormat;
&lt;br&gt;import javax.sound.sampled.AudioInputStream;
&lt;br&gt;import javax.sound.sampled.AudioSystem;
&lt;br&gt;import javax.sound.sampled.DataLine;
&lt;br&gt;import javax.sound.sampled.LineListener;
&lt;br&gt;import javax.sound.sampled.Mixer;
&lt;br&gt;import javax.sound.sampled.Mixer.Info;
&lt;br&gt;import javax.sound.sampled.SourceDataLine;
&lt;br&gt;import javax.sound.sampled.UnsupportedAudioFileException;
&lt;br&gt;import marytts.util.data.audio.MonoAudioInputStream;
&lt;br&gt;import marytts.util.data.audio.StereoAudioInputStream;
&lt;br&gt;&lt;br&gt;&lt;br&gt;public class SoundPlayer implements Runnable, Closeable {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public static final int MONO = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; public static final int STEREO = 3;
&lt;br&gt;&amp;nbsp; &amp;nbsp; public static final int LEFT_ONLY = 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; public static final int RIGHT_ONLY = 2;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public enum Status {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WAITING, PLAYING
&lt;br&gt;&amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; private final LineListener lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private final int outputMode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private volatile Status status = Status.WAITING;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private volatile AudioInputStream ais;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private volatile SourceDataLine line;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private volatile boolean exitRequested;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private volatile boolean isPaused;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private volatile boolean isCancelled;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public static void main(String ... args) throws Exception{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SoundPlayer p = new SoundPlayer(new File(&amp;quot;shoeshineshop.wav&amp;quot;));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.run();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* AudioPlayer which can be used if audio stream is to be set separately, using setAudio().
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(File audioFile) throws IOException, UnsupportedAudioFileException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = AudioSystem.getAudioInputStream(audioFile);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(AudioInputStream ais) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = ais;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(File audioFile, LineListener lineListener)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throws IOException, UnsupportedAudioFileException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = AudioSystem.getAudioInputStream(audioFile);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(AudioInputStream ais, LineListener lineListener) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = ais;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(File audioFile, SourceDataLine line, LineListener lineListener)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throws IOException, UnsupportedAudioFileException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = AudioSystem.getAudioInputStream(audioFile);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.line = line;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(AudioInputStream ais, SourceDataLine line, LineListener lineListener) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = ais;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.line = line;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = MONO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param audioFile
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param line
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param lineListener
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param outputMode if MONO, force output to be mono; if STEREO, force output to be STEREO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* if LEFT_ONLY, play a mono signal over the left channel of a stereo output, or mute the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* right channel of a stereo signal; if RIGHT_ONLY, do the same with the right output channel.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @throws IOException
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @throws UnsupportedAudioFileException
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(File audioFile, SourceDataLine line, LineListener lineListener, int outputMode)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throws IOException, UnsupportedAudioFileException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = AudioSystem.getAudioInputStream(audioFile);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.line = line;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = outputMode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param ais
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param line
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param lineListener
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param outputMode if MONO, force output to be mono; if STEREO, force output to be STEREO;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* if LEFT_ONLY, play a mono signal over the left channel of a stereo output, or mute the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* right channel of a stereo signal; if RIGHT_ONLY, do the same with the right output channel.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; public SoundPlayer(AudioInputStream ais, SourceDataLine line, LineListener lineListener, int outputMode) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = ais;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.line = line;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.lineListener = lineListener;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.outputMode = outputMode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(ais.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private void initAudioInputStream(AudioFormat audioFormat) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (audioFormat.getChannels() == 1) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (outputMode != MONO) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ais = new StereoAudioInputStream(ais, outputMode);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audioFormat = ais.getFormat();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert audioFormat.getChannels() == 2 : &amp;quot;Unexpected number of channels: &amp;quot; + audioFormat.getChannels();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (outputMode == MONO) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ais = new MonoAudioInputStream(ais);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (outputMode == LEFT_ONLY) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ais = new StereoAudioInputStream(ais, outputMode);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (outputMode == RIGHT_ONLY) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ais = new StereoAudioInputStream(ais, outputMode);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assert outputMode == STEREO : &amp;quot;Unexpected output mode: &amp;quot; + outputMode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public void setAudio(AudioInputStream audio) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (status == Status.PLAYING) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Cannot set audio while playing&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initAudioInputStream(audio.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.ais = audio;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Queries cancelled state.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; public boolean isPaused() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return isPaused;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public void setPaused(boolean pause) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (line != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (pause) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; isPaused = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exitRequested = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; isPaused = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exitRequested = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public void cancel() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; isPaused = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exitRequested = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; isCancelled = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public boolean isCancelled() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return isCancelled;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public SourceDataLine getLine() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return line;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public void close() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (line != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; @Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; protected void finalize() throws Throwable {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lines can fail to open because they are already in use.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Java sound uses OSS and some linuxes are using pulseaudio.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* OSS needs exclusive access to the line, and pulse audio
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* highjacks it. Try to open another line.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param format
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @return a open line
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @throws IllegalStateException if it can't open a dataline for the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* audioformat.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; private SourceDataLine getSourceDataLine(AudioFormat format) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Exception audioException = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mixer.Info [] arr = AudioSystem.getMixerInfo();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Arrays.sort(arr, new Comparator() {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public int compare(Object o1, Object o2) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mixer.Info m1 = (Info) o1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mixer.Info m2 = (Info) o2;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(&amp;quot;Java Sound Audio Engine&amp;quot;.equals(m1.getName()))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(&amp;quot;Java Sound Audio Engine&amp;quot;.equals(m2.getName()))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (Mixer.Info mi : arr) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SourceDataLine dataline = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mixer mixer = AudioSystem.getMixer(mi);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline = (SourceDataLine) mixer.getLine(info);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline.open(format);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline.start();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;		System.out.println(mi.getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return dataline;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audioException = e;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dataline != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline.close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Error trying to aquire dataline.&amp;quot;, e);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (audioException == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Couldn't aquire a dataline, this computer doesn't seem to have audio output?&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Couldn't aquire a dataline, probably because all are in use. Last exception:&amp;quot;, audioException);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public void run() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status = Status.PLAYING;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; isCancelled = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormat audioFormat = ais.getFormat();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (line == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean bIsSupportedDirectly = AudioSystem.isLineSupported(info);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!bIsSupportedDirectly) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormat sourceFormat = audioFormat;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormat targetFormat = new AudioFormat(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormat.Encoding.PCM_SIGNED,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sourceFormat.getSampleRate(),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sourceFormat.getSampleSizeInBits(),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sourceFormat.getChannels(),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sourceFormat.getChannels() * (sourceFormat.getSampleSizeInBits() / 8),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sourceFormat.getSampleRate(),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sourceFormat.isBigEndian());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ais = AudioSystem.getAudioInputStream(targetFormat, ais);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audioFormat = ais.getFormat();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line = getSourceDataLine(audioFormat);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (lineListener != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.addLineListener(lineListener);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.open(audioFormat);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int nRead = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; byte[] abData = new byte[1056]; // needs to be a multiple of 4 and 6, to support both 16 and 24 bit stereo
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean startResume;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; do {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; startResume = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.start();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (nRead != -1 &amp;&amp; !exitRequested) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nRead = ais.read(abData, 0, abData.length);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (IOException e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (nRead &amp;gt;= 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.write(abData, 0, nRead);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (exitRequested &amp;&amp; !isPaused) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //cancel
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.stop();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.flush();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (isPaused) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.stop();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.drain();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (isPaused) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread.sleep(20);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; startResume = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (InterruptedException ex) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //if interrupted...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cancel();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!exitRequested) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line.drain();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //System.out.println(&amp;quot;EXITREQ &amp;quot; + exitRequested + &amp;quot; RESUME &amp;quot; + startResume + &amp;quot; IS PAUSED &amp;quot; + isPaused);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } while (startResume);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exitRequested = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status = Status.WAITING;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25885682.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25885485</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-13T22:22:12Z</published>
	<updated>2009-10-13T22:22:12Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">I already wrote the same code but it still does not work. It conflicts with flash player and with mplayer (in any mode).&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/10/14 Paulo Levi &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25885485&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;i30817@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;I was just looking at this problem a while ago... opening the java&lt;br&gt;
sound audio engine instead of the default one might be a solution.&lt;br&gt;
Actually right now i&amp;#39;m using the method bellow, however, there are&lt;br&gt;
still some errors on a test machine that exhibited errors before (but&lt;br&gt;
no exception anymore) - the errors come in a Fedora (Pulse-Audio)&lt;br&gt;
linux. Obviously if it can&amp;#39;t open the mixer it will try to open the&lt;br&gt;
java sound audio engine one - that should take take of one of the&lt;br&gt;
errors java not playing, but still might cause the second - native&lt;br&gt;
applications not playing.&lt;br&gt;
Actually the guy that is running the tests for me in that machine&lt;br&gt;
reports that audio is inaudible still, but no exception is raised if i&lt;br&gt;
use this.&lt;br&gt;
&lt;br&gt;
    /**&lt;br&gt;
     * Lines can fail to open because they are already in use.&lt;br&gt;
     * Java sound uses OSS and some linuxes are using pulseaudio.&lt;br&gt;
     * OSS needs exclusive access to the line, and pulse audio&lt;br&gt;
     * highjacks it. Try to open another line.&lt;br&gt;
     * @param format&lt;br&gt;
     * @return a open line&lt;br&gt;
     * @throws IllegalStateException if it can&amp;#39;t open a dataline for the&lt;br&gt;
     * audioformat.&lt;br&gt;
     */&lt;br&gt;
    private SourceDataLine getSourceDataLine(AudioFormat format) {&lt;br&gt;
        Exception audioException = null;&lt;br&gt;
        try {&lt;br&gt;
            DataLine.Info info = new&lt;br&gt;
DataLine.Info(SourceDataLine.class, format);&lt;br&gt;
&lt;br&gt;
            for (Mixer.Info mi : AudioSystem.getMixerInfo()) {&lt;br&gt;
                SourceDataLine dataline = null;&lt;br&gt;
                try {&lt;br&gt;
                    Mixer mixer = AudioSystem.getMixer(mi);&lt;br&gt;
                    dataline = (SourceDataLine) mixer.getLine(info);&lt;br&gt;
                    dataline.open(format);&lt;br&gt;
                    dataline.start();&lt;br&gt;
                    return dataline;&lt;br&gt;
                } catch (Exception e) {&lt;br&gt;
                    audioException = e;&lt;br&gt;
                }&lt;br&gt;
                if (dataline != null) {&lt;br&gt;
                    try {&lt;br&gt;
                        dataline.close();&lt;br&gt;
                    } catch (Exception e) {&lt;br&gt;
                    }&lt;br&gt;
                }&lt;br&gt;
            }&lt;br&gt;
        } catch (Exception e) {&lt;br&gt;
            throw new IllegalStateException(&amp;quot;Error trying to aquire&lt;br&gt;
dataline.&amp;quot;, e);&lt;br&gt;
        }&lt;br&gt;
        if (audioException == null) {&lt;br&gt;
            throw new IllegalStateException(&amp;quot;Couldn&amp;#39;t aquire a&lt;br&gt;
dataline, this computer doesn&amp;#39;t seem to have audio output?&amp;quot;);&lt;br&gt;
        } else {&lt;br&gt;
            throw new IllegalStateException(&amp;quot;Couldn&amp;#39;t aquire a&lt;br&gt;
dataline, probably because all are in use. Last exception:&amp;quot;,&lt;br&gt;
audioException);&lt;br&gt;
        }&lt;br&gt;
    }&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;-----------------------------------------------------------------&lt;br&gt;Всего наилучшего&lt;br&gt;&lt;br&gt;                          &amp;lt;y6erGn0m.&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25885485.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25882313</id>
	<title>Re: &lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-13T15:45:37Z</published>
	<updated>2009-10-13T15:45:37Z</updated>
	<author>
		<name>i30817</name>
	</author>
	<content type="html">I was just looking at this problem a while ago... opening the java
&lt;br&gt;sound audio engine instead of the default one might be a solution.
&lt;br&gt;Actually right now i'm using the method bellow, however, there are
&lt;br&gt;still some errors on a test machine that exhibited errors before (but
&lt;br&gt;no exception anymore) - the errors come in a Fedora (Pulse-Audio)
&lt;br&gt;linux. Obviously if it can't open the mixer it will try to open the
&lt;br&gt;java sound audio engine one - that should take take of one of the
&lt;br&gt;errors java not playing, but still might cause the second - native
&lt;br&gt;applications not playing.
&lt;br&gt;Actually the guy that is running the tests for me in that machine
&lt;br&gt;reports that audio is inaudible still, but no exception is raised if i
&lt;br&gt;use this.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Lines can fail to open because they are already in use.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* Java sound uses OSS and some linuxes are using pulseaudio.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* OSS needs exclusive access to the line, and pulse audio
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* highjacks it. Try to open another line.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param format
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @return a open line
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* @throws IllegalStateException if it can't open a dataline for the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* audioformat.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; private SourceDataLine getSourceDataLine(AudioFormat format) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Exception audioException = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataLine.Info info = new
&lt;br&gt;DataLine.Info(SourceDataLine.class, format);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (Mixer.Info mi : AudioSystem.getMixerInfo()) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SourceDataLine dataline = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mixer mixer = AudioSystem.getMixer(mi);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline = (SourceDataLine) mixer.getLine(info);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline.open(format);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline.start();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return dataline;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audioException = e;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dataline != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataline.close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Error trying to aquire
&lt;br&gt;dataline.&amp;quot;, e);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (audioException == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Couldn't aquire a
&lt;br&gt;dataline, this computer doesn't seem to have audio output?&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new IllegalStateException(&amp;quot;Couldn't aquire a
&lt;br&gt;dataline, probably because all are in use. Last exception:&amp;quot;,
&lt;br&gt;audioException);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25882313.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25882185</id>
	<title>&lt;Sound Dev&gt; sound on Linux</title>
	<published>2009-10-13T15:31:56Z</published>
	<updated>2009-10-13T15:31:56Z</updated>
	<author>
		<name>Bugzilla from cy6erGn0m@gmail.com</name>
	</author>
	<content type="html">Anybody tested java sound on linux? As I know, java uses ALSA on Linux to play audio.. so, i have a problem with it: when java plays sound, other applications can&amp;#39;t play anything. When other applications plays sound, java can&amp;#39;t. As i know, mplayer can play sound via ALSA and i can open many players and all of them will plays as expected...&lt;br clear=&quot;all&quot;&gt;
&lt;br&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-sound-on-Linux-tp25882185p25882185.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23816695</id>
	<title>Re: &lt;Sound Dev&gt; Ogg Vorbis in Java sound?</title>
	<published>2009-06-01T08:14:52Z</published>
	<updated>2009-06-01T08:14:52Z</updated>
	<author>
		<name>Alex Menkov-2</name>
	</author>
	<content type="html">Hi Damjan,
&lt;br&gt;&lt;br&gt;Sorry for the lag.
&lt;br&gt;Currently nobody works on the task.
&lt;br&gt;I think the best way for the feature is a separate openJDK project with 
&lt;br&gt;following (after completion) integration into jdk (the same way as Gervill had 
&lt;br&gt;gone).
&lt;br&gt;&lt;br&gt;Do you already have some code or for now you are just planning to start?
&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;Alex
&lt;br&gt;&lt;br&gt;Damjan Jovanovic wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I see there is a lot of interest in support of the Ogg Vorbis/Theora
&lt;br&gt;&amp;gt; formats in Java Sound (&lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=4671067&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=4671067&lt;/a&gt;)
&lt;br&gt;&amp;gt; and/or JMF (&lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=4499904&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=4499904&lt;/a&gt;).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is anyone working on this?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is a patch welcome?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Regards
&lt;br&gt;&amp;gt; Damjan Jovanovic
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Ogg-Vorbis-in-Java-sound--tp23534854p23816695.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23534854</id>
	<title>&lt;Sound Dev&gt; Ogg Vorbis in Java sound?</title>
	<published>2009-05-13T23:02:10Z</published>
	<updated>2009-05-13T23:02:10Z</updated>
	<author>
		<name>Damjan Jovanovic-2</name>
	</author>
	<content type="html">Hi
&lt;br&gt;&lt;br&gt;I see there is a lot of interest in support of the Ogg Vorbis/Theora
&lt;br&gt;formats in Java Sound (&lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=4671067&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=4671067&lt;/a&gt;)
&lt;br&gt;and/or JMF (&lt;a href=&quot;http://bugs.sun.com/view_bug.do?bug_id=4499904&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/view_bug.do?bug_id=4499904&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone working on this?
&lt;br&gt;&lt;br&gt;Is a patch welcome?
&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;Damjan Jovanovic
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Ogg-Vorbis-in-Java-sound--tp23534854p23534854.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22802451</id>
	<title>&lt;Sound Dev&gt; [Request for review] 6806019: 38 JCK api/javax_sound/midi/ tests fails starting from jdk7 b46</title>
	<published>2009-03-31T03:29:43Z</published>
	<updated>2009-03-31T03:29:43Z</updated>
	<author>
		<name>Alex Menkov-2</name>
	</author>
	<content type="html">Karl,
&lt;br&gt;&lt;br&gt;Could you please review a fix for 6806019: 38 JCK api/javax_sound/midi/ tests 
&lt;br&gt;fails starting from jdk7 b46 
&lt;br&gt;(&lt;a href=&quot;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6806019&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6806019&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;The issue was discovered testing jdk7, but openjdk6 has the same bug (it's 
&lt;br&gt;Gervill issue).
&lt;br&gt;&lt;br&gt;The fix: &lt;a href=&quot;http://cr.openjdk.java.net/~amenkov/6806019/webrev.00/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~amenkov/6806019/webrev.00/&lt;/a&gt;&lt;br&gt;&lt;br&gt;The file changed (SoftSynthesizer.java) has no differences in openjdk 6 &amp; 7, so 
&lt;br&gt;the fix is targeted to both jdks.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;Alex
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E--Request-for-review--6806019%3A-38-JCK-api-javax_sound-midi--tests-fails-starting-from-jdk7-b46-tp22802451p22802451.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21860833</id>
	<title>&lt;Sound Dev&gt; Bug in AudioSystem.getLine(DataLine.Info info)</title>
	<published>2009-02-05T12:49:50Z</published>
	<updated>2009-02-05T12:49:50Z</updated>
	<author>
		<name>i30817</name>
	</author>
	<content type="html">I think there is a problem in the linux implementation of
&lt;br&gt;javax.sound.sampled.AudioSystem.getLine(DataLine.Info info);
&lt;br&gt;&lt;br&gt;It throws a line unavailable exception when trying to send data, not
&lt;br&gt;on construction. Apparently its just each Line is saying that it
&lt;br&gt;supports the AudioFormat when it does no such thing, leading to
&lt;br&gt;innumerable exceptions when trying to use freetts in linux. I've
&lt;br&gt;worked around it
&lt;br&gt;with this &lt;a href=&quot;http://forums.sun.com/thread.jspa?threadID=5189363&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://forums.sun.com/thread.jspa?threadID=5189363&lt;/a&gt;, but i'd like the
&lt;br&gt;root cause fixed.
&lt;br&gt;&lt;br&gt;BTW is FreeTTS dead or undead? Seeing projects like acapela tts with
&lt;br&gt;their much higher quality voices in many languages is slightly
&lt;br&gt;depressing from my the java is the platform and native is taboo
&lt;br&gt;mindset.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Bug-in-AudioSystem.getLine%28DataLine.Info-info%29-tp21860833p21860833.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21838278</id>
	<title>&lt;Sound Dev&gt; Bug in javax.sound.sampled.AudioSystem</title>
	<published>2009-02-04T11:56:52Z</published>
	<updated>2009-02-04T11:56:52Z</updated>
	<author>
		<name>i30817</name>
	</author>
	<content type="html">I think there is a problem in the linux implementation of
&lt;br&gt;javax.sound.sampled.AudioSystem.getLine(DataLine.Info info);
&lt;br&gt;&lt;br&gt;It throws a line unavailable exception when trying to send data, not
&lt;br&gt;on construction. Apparently its just each Line is saying that it
&lt;br&gt;supports the AudioFormat when it does no such thing, leading to
&lt;br&gt;innumerable exceptions when trying to use freetts in linux. I've
&lt;br&gt;worked around it
&lt;br&gt;with this &lt;a href=&quot;http://forums.sun.com/thread.jspa?threadID=5189363&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://forums.sun.com/thread.jspa?threadID=5189363&lt;/a&gt;, but i'd like the
&lt;br&gt;root cause fixed.
&lt;br&gt;&lt;br&gt;BTW is FreeTTS dead or undead? Seeing projects like acapela tts with
&lt;br&gt;their much higher quality voices in many languages is slightly
&lt;br&gt;depressing from my the java is the platform and native is taboo
&lt;br&gt;mindset.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Bug-in-javax.sound.sampled.AudioSystem-tp21838278p21838278.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19618443</id>
	<title>Re: &lt;Sound Dev&gt; Updating Gervill for OpenJDK 6 build 13</title>
	<published>2008-09-22T16:15:20Z</published>
	<updated>2008-09-22T16:15:20Z</updated>
	<author>
		<name>Joe Darcy</name>
	</author>
	<content type="html">Joe Darcy wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Since OpenJDK 6 took a snapshot of Gervill for b12, Gervill was been 
&lt;br&gt;&amp;gt; updated. &amp;nbsp;Also, Mark Wielaard has a patch which address some JCK 
&lt;br&gt;&amp;gt; failures:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mail.openjdk.java.net/pipermail/audio-engine-dev/2008-September/000059.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.openjdk.java.net/pipermail/audio-engine-dev/2008-September/000059.html&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For the next build of OpenJDK 6, &amp;nbsp;build 13, I'd like to include both 
&lt;br&gt;&amp;gt; sets of changes; below is patch of those changes compared to build 12.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Please review by September 19.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -Joe
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;I've applied the previously sent patch to the OpenJDK 6 b13 sources.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Updating-Gervill-for-OpenJDK-6-build-13-tp19504684p19618443.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19504684</id>
	<title>&lt;Sound Dev&gt; Updating Gervill for OpenJDK 6 build 13</title>
	<published>2008-09-15T20:24:47Z</published>
	<updated>2008-09-15T20:24:47Z</updated>
	<author>
		<name>Joe Darcy</name>
	</author>
	<content type="html">Hello.
&lt;br&gt;&lt;br&gt;Since OpenJDK 6 took a snapshot of Gervill for b12, Gervill was been 
&lt;br&gt;updated. &amp;nbsp;Also, Mark Wielaard has a patch which address some JCK failures:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://mail.openjdk.java.net/pipermail/audio-engine-dev/2008-September/000059.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.openjdk.java.net/pipermail/audio-engine-dev/2008-September/000059.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;For the next build of OpenJDK 6, &amp;nbsp;build 13, I'd like to include both 
&lt;br&gt;sets of changes; below is patch of those changes compared to build 12.
&lt;br&gt;&lt;br&gt;Please review by September 19.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/ModelByteBuffer.java	Sun Sep 14 23:15:37 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/ModelByteBuffer.java	Sun Sep 14 23:15:37 2008
&lt;br&gt;@@ -85,11 +85,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public long skip(long n) throws IOException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( n &amp;lt; 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (n &amp;gt; left)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;n = left;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;n = super.skip(n);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (n == -1)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long p = raf.getFilePointer();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;raf.seek(p + n);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left -= n;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return n;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Sun Sep 14 23:15:38 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Sun Sep 14 23:15:38 2008
&lt;br&gt;@@ -69,7 +69,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private int nrofchannels = 2;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private SoftVoice[] voicestatus = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private SoftAudioBuffer[] buffers;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private SoftAudioProcessor reverb;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private SoftReverb reverb;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private SoftAudioProcessor chorus;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private SoftAudioProcessor agc;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private long msec_buffer_len = 0;
&lt;br&gt;@@ -681,6 +681,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chorus.init(samplerate, controlrate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;agc.init(samplerate, controlrate);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;reverb.setLightMode(synth.reverb_light);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;reverb.setMixMode(true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chorus.setMixMode(true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;agc.setMixMode(false);
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/SoftReverb.java	Sun Sep 14 23:15:39 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/SoftReverb.java	Sun Sep 14 23:15:39 2008
&lt;br&gt;@@ -35,7 +35,7 @@
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;public class SoftReverb implements SoftAudioProcessor {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static class Delay {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private final static class Delay {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private float[] delaybuffer;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private int rovepos = 0;
&lt;br&gt;@@ -52,31 +52,28 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void processReplace(float[] in, float[] out) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float[] delaybuffer = this.delaybuffer;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void processReplace(float[] inout) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (delaybuffer == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = in.length;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = inout.length;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int rnlen = delaybuffer.length;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int rovepos = this.rovepos;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; len; i++) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float x = in[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out[i] = delaybuffer[rovepos];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float x = inout[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inout[i] = delaybuffer[rovepos];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[rovepos] = x;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = rovepos + 1;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (rovepos == rnlen)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (++rovepos == rnlen)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//rovepos = (rovepos + 1) % rnlen;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.rovepos = rovepos;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static class AllPass {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private final static class AllPass {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private float[] delaybuffer;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private int delaybuffersize;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private final float[] delaybuffer;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private final int delaybuffersize;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private int rovepos = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private float feedback;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -88,47 +85,42 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void setFeedBack(float feedback) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.feedback = feedback;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ucount = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void processReplace(float inout[]) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = inout.length;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int delaybuffersize = this.delaybuffersize;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int rovepos = this.rovepos; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; len; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float delayout = delaybuffer[rovepos];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float input = inout[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inout[i] = delayout - input;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[rovepos] = input + delayout * feedback;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (++rovepos == delaybuffersize)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = 0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.rovepos = rovepos; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void processReplace(float in[], float out[]) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = in.length;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int delaybuffersize = this.delaybuffersize;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int rovepos = this.rovepos; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; len; i++) {
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float delayout = delaybuffer[rovepos];
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// undenormalise(delayout)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (((delayout &amp;gt; 0.0) &amp;&amp; (delayout &amp;lt; 1.0E-10))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| ((delayout &amp;lt; 0.0) &amp;&amp; (delayout &amp;gt; -1.0E-10)))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delayout = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float input = in[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out[i] = -input + delayout;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out[i] = delayout - input;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[rovepos] = input + delayout * feedback;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (++rovepos == delaybuffersize)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ucount++;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ucount == 10) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ucount = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; delaybuffer.length; i++) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double v = delaybuffer[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (((v &amp;gt; 0.0) &amp;&amp; (v &amp;lt; 1.0E-10))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| ((v &amp;lt; 0.0) &amp;&amp; (v &amp;gt; -1.0E-10))) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[i] = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.rovepos = rovepos; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static class Comb {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private final static class Comb {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private float[] delaybuffer;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private int delaybuffersize;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private final float[] delaybuffer;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private final int delaybuffersize;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private int rovepos = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private float feedback;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private float filtertemp = 0;
&lt;br&gt;@@ -142,56 +134,54 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void setFeedBack(float feedback) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.feedback = feedback;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtercoeff2 = (1 - filtercoeff1)* feedback;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ucount = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void processMix(float in[], float out[]) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = in.length;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtercoeff2 = this.filtercoeff2 * feedback;
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = in.length; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int delaybuffersize = this.delaybuffersize;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int rovepos = this.rovepos;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtertemp = this.filtertemp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtercoeff1 = this.filtercoeff1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtercoeff2 = this.filtercoeff2;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; len; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float delayout = delaybuffer[rovepos];
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// One Pole Lowpass Filter
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtertemp = (delayout * filtercoeff2)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ (filtertemp * filtercoeff1);
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// undenormalise(filtertemp)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (((filtertemp &amp;gt; 0.0) &amp;&amp; (filtertemp &amp;lt; 1.0E-10))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| ((filtertemp &amp;lt; 0.0) &amp;&amp; (filtertemp &amp;gt; -1.0E-10)))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtertemp = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out[i] += delayout;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[rovepos] = in[i] + (filtertemp);// * feedback);
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[rovepos] = in[i] + filtertemp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (++rovepos == delaybuffersize)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = 0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.filtertemp &amp;nbsp;= filtertemp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.rovepos = rovepos;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ucount++;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ucount == 10) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ucount = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (((filtertemp &amp;gt; 0.0) &amp;&amp; (filtertemp &amp;lt; 1.0E-10))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| ((filtertemp &amp;lt; 0.0) &amp;&amp; (filtertemp &amp;gt; -1.0E-10))) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtertemp = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; delaybuffer.length; i++) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double v = delaybuffer[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (((v &amp;gt; 0.0) &amp;&amp; (v &amp;lt; 1.0E-10))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| ((v &amp;lt; 0.0) &amp;&amp; (v &amp;gt; -1.0E-10))) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[i] = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void processReplace(float in[], float out[]) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = in.length; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int delaybuffersize = this.delaybuffersize;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int rovepos = this.rovepos;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtertemp = this.filtertemp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtercoeff1 = this.filtercoeff1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float filtercoeff2 = this.filtercoeff2;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; len; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float delayout = delaybuffer[rovepos];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// One Pole Lowpass Filter
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtertemp = (delayout * filtercoeff2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ (filtertemp * filtercoeff1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out[i] = delayout;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delaybuffer[rovepos] = in[i] + filtertemp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (++rovepos == delaybuffersize)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rovepos = 0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.filtertemp &amp;nbsp;= filtertemp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.rovepos = rovepos;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void setDamp(float val) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtercoeff1 = val;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtercoeff2 = 1 - filtercoeff1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filtercoeff2 = (1 - filtercoeff1)* feedback;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private float roomsize;
&lt;br&gt;@@ -203,8 +193,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private AllPass[] allpassL;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private AllPass[] allpassR;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private float[] input;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private float[] outR;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private float[] outL;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private float[] out;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private float[] pre1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private float[] pre2;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private float[] pre3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private boolean denormal_flip = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private boolean mix = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private SoftAudioBuffer inputA;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private SoftAudioBuffer left;
&lt;br&gt;@@ -214,7 +207,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private float dirty_damp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private float dirty_predelay;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private float dirty_gain;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private float samplerate;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private float samplerate; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private boolean light = true;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void init(float samplerate, float controlrate) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.samplerate = samplerate;
&lt;br&gt;@@ -237,7 +231,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[3] = new Comb((int) (freqscale * (1356)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[3] = new Comb((int) (freqscale * (1356 + stereospread)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[4] = new Comb((int) (freqscale * (1422)));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[4] = new Comb((int) (freqscale * (1422 + stereospread)));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[4] = new Comb((int) (freqscale * (1422 + stereospread))); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[5] = new Comb((int) (freqscale * (1491)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[5] = new Comb((int) (freqscale * (1491 + stereospread)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[6] = new Comb((int) (freqscale * (1557)));
&lt;br&gt;@@ -306,58 +300,100 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;input = new float[numsamples];
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float again = gain * 0.018f / 2;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;denormal_flip = !denormal_flip;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(denormal_flip)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;input[i] = inputA[i] * again + 1E-20f;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;input[i] = inputA[i] * again - 1E-20f;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;input[i] = inputA[i] * again;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delay.processReplace(input, input);
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (right != null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (outR == null || outR.length &amp;lt; numsamples)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;outR = new float[numsamples];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.fill(outR, 0);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; combR.length; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[i].processMix(input, outR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delay.processReplace(input);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(light &amp;&amp; (right != null))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (pre1 == null || pre1.length &amp;lt; numsamples)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pre1 = new float[numsamples];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pre2 = new float[numsamples];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pre3 = new float[numsamples];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; allpassL.length; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassR[i].processReplace(outR, outR);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassL[i].processReplace(input);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mix) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;right[i] += outR[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;right[i] = outR[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[0].processReplace(input, pre3);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[1].processReplace(input, pre3);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[2].processReplace(input, pre1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 4; i &amp;lt; combL.length-2; i+=2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].processMix(input, pre1); 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[3].processReplace(input, pre2);;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 5; i &amp;lt; combL.length-2; i+=2) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].processMix(input, pre2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!mix)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.fill(right, 0); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.fill(left, 0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = combR.length-2; i &amp;lt; combR.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[i].processMix(input, right); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = combL.length-2; i &amp;lt; combL.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].processMix(input, left);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float p = pre1[i] - pre2[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float m = pre3[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left[i] += m + p;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;right[i] += m - p;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (out == null || out.length &amp;lt; numsamples)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out = new float[numsamples];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (right != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!mix) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.fill(right, 0); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassR[0].processReplace(input, out);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 1; i &amp;lt; allpassR.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassR[i].processReplace(out);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; combR.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[i].processMix(out, right);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (outL == null || outL.length &amp;lt; numsamples)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;outL = new float[numsamples];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.fill(outL, 0);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; combL.length; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].processMix(input, outL);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; allpassL.length; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassL[i].processReplace(outL, outL);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mix) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left[i] += outL[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left[i] = outL[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!mix) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Arrays.fill(left, 0); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassL[0].processReplace(input, out);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 1; i &amp;lt; allpassL.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allpassL[i].processReplace(out);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; combL.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].processMix(out, left); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (silent_input) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float avgpower = 0; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;silent = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numsamples; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;avgpower += outL[i]*outL[i];
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;avgpower /= numsamples;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;avgpower = (float)Math.sqrt(avgpower);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(avgpower &amp;lt; 0.00001)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;silent = true;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} 
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float v = left[i];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(v &amp;gt; 1E-10 || v &amp;lt; -1E-10)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;silent = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void globalParameterControlChange(int[] slothpath, long param,
&lt;br&gt;@@ -440,7 +476,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setRoomSize(float value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;roomsize = 1 - (0.17f / value);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; combL.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].feedback = roomsize;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[i].feedback = roomsize;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -464,10 +500,16 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;damp = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// damp = value * 0.4f;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; combL.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combL[i].setDamp(damp);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;combR[i].setDamp(damp);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setLightMode(boolean light)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.light = light;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/DLSSoundbankReader.java	Sun Sep 14 23:15:40 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/DLSSoundbankReader.java	Sun Sep 14 23:15:40 2008
&lt;br&gt;@@ -47,6 +47,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new DLSSoundbank(url);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (RIFFInvalidFormatException e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch(IOException ioe) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/SF2SoundbankReader.java	Sun Sep 14 23:15:40 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/SF2SoundbankReader.java	Sun Sep 14 23:15:40 2008
&lt;br&gt;@@ -46,6 +46,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new SF2Soundbank(url);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (RIFFInvalidFormatException e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch(IOException ioe) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/SoftChannel.java	Sun Sep 14 23:15:41 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/SoftChannel.java	Sun Sep 14 23:15:41 2008
&lt;br&gt;@@ -1215,7 +1215,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public int getController(int controller) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;synchronized (control_mutex) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this.controller[controller];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Should only return lower 7 bits,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// even when controller is &amp;quot;boosted&amp;quot; higher.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this.controller[controller] &amp; 127;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/SoftSynthesizer.java	Sun Sep 14 23:15:42 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/SoftSynthesizer.java	Sun Sep 14 23:15:42 2008
&lt;br&gt;@@ -177,6 +177,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// 1: DLS Voice Allocation
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected int voice_allocation_mode = 0;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected boolean reverb_light = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean reverb_on = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean chorus_on = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean agc_on = true;
&lt;br&gt;@@ -334,6 +335,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;largemode = (Boolean)items[9].value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;number_of_midi_channels = (Integer)items[10].value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jitter_correction = (Boolean)items[11].value;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;reverb_light = (Boolean)items[12].value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private String patchToString(Patch patch) {
&lt;br&gt;@@ -742,6 +744,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void unloadAllInstruments(Soundbank soundbank) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (soundbank == null || !isSoundbankSupported(soundbank))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(&amp;quot;Unsupported soundbank: &amp;quot; + soundbank);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!isOpen())
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -766,6 +771,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void unloadInstruments(Soundbank soundbank, Patch[] patchList) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (soundbank == null || !isSoundbankSupported(soundbank))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(&amp;quot;Unsupported soundbank: &amp;quot; + soundbank);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!isOpen())
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -844,6 +852,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item.description = &amp;quot;Turn jitter correction on or off.&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.add(item);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item = new AudioSynthesizerPropertyInfo(&amp;quot;light reverb&amp;quot;, o?reverb_light:true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item.description = &amp;quot;Turn light reverb mode on or off&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.add(item);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioSynthesizerPropertyInfo[] items;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;items = list.toArray(new AudioSynthesizerPropertyInfo[list.size()]);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;--- old/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java	Sun Sep 14 23:15:43 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java	Sun Sep 14 23:15:43 2008
&lt;br&gt;@@ -43,11 +43,30 @@
&lt;br&gt;&amp;nbsp;			testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;&amp;nbsp;			testarray[i] *= 0.3;
&lt;br&gt;&amp;nbsp;		}		
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Check conversion using PCM_FLOAT
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int big = 0; big &amp;lt; 2; big+=1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int bits = 32; bits &amp;lt;= 64; bits+=32) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFormat frm = new AudioFormat(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.PCM_FLOAT,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;44100, bits, 1, bits/8,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;44100, big==1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] buff = new byte[testarray.length * frm.getFrameSize()];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;float[] testarray2 = new float[testarray.length];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter conv = AudioFloatConverter.getConverter(frm);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conv.toByteArray(testarray, buff);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conv.toFloatArray(buff, testarray2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; testarray2.length; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(Math.abs(testarray[i] - testarray2[i]) &amp;gt; 0.05)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Conversion failed for &amp;quot; + frm &amp;nbsp;+&amp;quot; , arrays not equal enough!\n&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;		// Check conversion from float2byte and byte2float.
&lt;br&gt;&amp;nbsp;		for (int big = 0; big &amp;lt; 2; big+=1) 
&lt;br&gt;&amp;nbsp;		for (int signed = 0; signed &amp;lt; 2; signed+=1) 
&lt;br&gt;-		for (int bits = 8; bits &amp;lt;= 32; bits+=8) {					
&lt;br&gt;+		for (int bits = 6; bits &amp;lt;= 40; bits+=2) {					
&lt;br&gt;&amp;nbsp;			AudioFormat frm = new AudioFormat(44100, bits, 1, signed==1, big==1);
&lt;br&gt;&amp;nbsp;			byte[] buff = new byte[testarray.length * frm.getFrameSize()];
&lt;br&gt;&amp;nbsp;			float[] testarray2 = new float[testarray.length];
&lt;br&gt;@@ -63,7 +82,7 @@
&lt;br&gt;&amp;nbsp;		// Check big/little
&lt;br&gt;&amp;nbsp;		for (int big = 0; big &amp;lt; 2; big+=1) 
&lt;br&gt;&amp;nbsp;		for (int signed = 0; signed &amp;lt; 2; signed+=1)
&lt;br&gt;-		for (int bits = 8; bits &amp;lt;= 32; bits+=8) {					
&lt;br&gt;+		for (int bits = 6; bits &amp;lt;= 40; bits+=2) {					
&lt;br&gt;&amp;nbsp;			AudioFormat frm = new AudioFormat(44100, bits, 1, signed==1, big==1);
&lt;br&gt;&amp;nbsp;			byte[] buff = new byte[testarray.length * frm.getFrameSize()];
&lt;br&gt;&amp;nbsp;			AudioFloatConverter conv = AudioFloatConverter.getConverter(frm);
&lt;br&gt;@@ -89,7 +108,7 @@
&lt;br&gt;&amp;nbsp;		// Check signed/unsigned 
&lt;br&gt;&amp;nbsp;		for (int big = 0; big &amp;lt; 2; big+=1) 
&lt;br&gt;&amp;nbsp;		for (int signed = 0; signed &amp;lt; 2; signed+=1)
&lt;br&gt;-		for (int bits = 8; bits &amp;lt;= 32; bits+=8) {					
&lt;br&gt;+		for (int bits = 6; bits &amp;lt;= 40; bits+=2) {					
&lt;br&gt;&amp;nbsp;			AudioFormat frm = new AudioFormat(44100, bits, 1, signed==1, big==1);
&lt;br&gt;&amp;nbsp;			byte[] b = new byte[testarray.length * frm.getFrameSize()];
&lt;br&gt;&amp;nbsp;			AudioFloatConverter conv = AudioFloatConverter.getConverter(frm);
&lt;br&gt;@@ -117,10 +136,10 @@
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;		
&lt;br&gt;&amp;nbsp;		// Check if conversion 32-&amp;gt;24, 24-&amp;gt;16, 16-&amp;gt;8 result in same float data
&lt;br&gt;-		AudioFormat frm = new AudioFormat(44100, 32, 1, true, true);
&lt;br&gt;+		AudioFormat frm = new AudioFormat(44100, 40, 1, true, true);
&lt;br&gt;&amp;nbsp;		byte[] b = new byte[testarray.length * frm.getFrameSize()];
&lt;br&gt;&amp;nbsp;		AudioFloatConverter.getConverter(frm).toByteArray(testarray, b);
&lt;br&gt;-		for (int bits = 8; bits &amp;lt;= 32; bits+=8) {
&lt;br&gt;+		for (int bits = 6; bits &amp;lt;= 40; bits+=2) {
&lt;br&gt;&amp;nbsp;			AudioFormat frm2 = new AudioFormat(44100, bits, 1, true, true);
&lt;br&gt;&amp;nbsp;			byte[] b2 = new byte[testarray.length * frm2.getFrameSize()];
&lt;br&gt;&amp;nbsp;			int fs1 = frm.getFrameSize();
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:44 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java	Sun Sep 14 23:15:44 2008
&lt;br&gt;@@ -0,0 +1,107 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream available() method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class Available {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(ret != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;is.available() return unexpected value!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:44 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java	Sun Sep 14 23:15:44 2008
&lt;br&gt;@@ -0,0 +1,104 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream close method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class Close {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:45 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java	Sun Sep 14 23:15:44 2008
&lt;br&gt;@@ -0,0 +1,129 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream mark and reset methods */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class MarkReset {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.mark(1000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int a = is.read();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.skip(75); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.reset();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int b = is.read();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(a != b)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is doesn't return same value after reset (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ a + &amp;quot;!=&amp;quot;+b+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.skip(15); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.mark(1000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.reset();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:45 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java	Sun Sep 14 23:15:45 2008
&lt;br&gt;@@ -0,0 +1,106 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream markSupported() method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class MarkSupported {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!is.markSupported())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;InputStream doesn't support mark/reset!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:45 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java	Sun Sep 14 23:15:45 2008
&lt;br&gt;@@ -0,0 +1,117 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream read() method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class Read {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] b = new byte[100];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int n = is.read();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(n == -1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;is.read shouldn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret - 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret - 1)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.skip(5000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.read() != -1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.read() doesn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:45 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java	Sun Sep 14 23:15:45 2008
&lt;br&gt;@@ -0,0 +1,118 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream read(byte[]) method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class ReadByte {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] b = new byte[100];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int n = is.read(b);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(n == -1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;is.read shouldn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret - n)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret - n)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.skip(5000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.read(b) != -1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.read() doesn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:45 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java	Sun Sep 14 23:15:45 2008
&lt;br&gt;@@ -0,0 +1,118 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream read(byte[], int, int) method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class ReadByteIntInt {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] b = new byte[100];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int n = is.read(b, 7, 50);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(n == -1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;is.read shouldn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret - n)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret - n)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.skip(5000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.read(b, 7, 50) != -1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.read() doesn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;--- /dev/null	Sun Sep 14 23:15:46 2008
&lt;br&gt;+++ new/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java	Sun Sep 14 23:15:46 2008
&lt;br&gt;@@ -0,0 +1,131 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Copyright 2007 Sun Microsystems, Inc. &amp;nbsp;All Rights Reserved.
&lt;br&gt;+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is free software; you can redistribute it and/or modify it
&lt;br&gt;+ * under the terms of the GNU General Public License version 2 only, as
&lt;br&gt;+ * published by the Free Software Foundation. &amp;nbsp;Sun designates this
&lt;br&gt;+ * particular file as subject to the &amp;quot;Classpath&amp;quot; exception as provided
&lt;br&gt;+ * by Sun in the LICENSE file that accompanied this code.
&lt;br&gt;+ *
&lt;br&gt;+ * This code is distributed in the hope that it will be useful, but WITHOUT
&lt;br&gt;+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
&lt;br&gt;+ * FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the GNU General Public License
&lt;br&gt;+ * version 2 for more details (a copy is included in the LICENSE file that
&lt;br&gt;+ * accompanied this code).
&lt;br&gt;+ *
&lt;br&gt;+ * You should have received a copy of the GNU General Public License version
&lt;br&gt;+ * 2 along with this work; if not, write to the Free Software Foundation,
&lt;br&gt;+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
&lt;br&gt;+ *
&lt;br&gt;+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
&lt;br&gt;+ * CA 95054 USA or visit www.sun.com if you need additional information or
&lt;br&gt;+ * have any questions.
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/* @test
&lt;br&gt;+ &amp;nbsp; @summary Test ModelByteBuffer.RandomFileInputStream skip(long) method */
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+import java.io.FileOutputStream;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.InputStream;
&lt;br&gt;+
&lt;br&gt;+import javax.sound.sampled.*;
&lt;br&gt;+
&lt;br&gt;+import com.sun.media.sound.*;
&lt;br&gt;+
&lt;br&gt;+public class Skip {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static float[] testarray;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static byte[] test_byte_array; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static File test_file;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray = new float[1024];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 1024; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double ii = i / 1024.0;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ii = ii * ii;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testarray[i] *= 0.3;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_byte_array = new byte[testarray.length*2];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file = File.createTempFile(&amp;quot;test&amp;quot;, &amp;quot;.raw&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new FileOutputStream(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static void tearDown() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(!test_file.delete())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;test_file.deleteOnExit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; 8; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModelByteBuffer buff;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(i % 2 == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_file);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff = new ModelByteBuffer(test_byte_array);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,500);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if((i / 2) == 3)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buff.subbuffer(5,600,true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long capacity = buff.capacity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InputStream is = buff.getInputStream();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long n = is.skip(75);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(n == -1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;is.read shouldn't return -1!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret - n)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret - n)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;n = is.skip(-100);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(n != 0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;is.skip(-100) shouldn't skip values!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret - n)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret - n)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ret = is.available();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;n = is.skip(5000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != ret - n)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(ret - n)+&amp;quot;) !&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(is.available() != 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;is.available() returns incorrect value (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ is.available() + &amp;quot;!=&amp;quot;+(0)+&amp;quot;) !&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;is.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(buff.capacity() != capacity)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&amp;quot;Capacity variable should not change!&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;finally
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tearDown();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Updating-Gervill-for-OpenJDK-6-build-13-tp19504684p19504684.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19101077</id>
	<title>&lt;Sound Dev&gt; Further updating Gervill for OpenJDK 6 build 12</title>
	<published>2008-08-21T21:14:27Z</published>
	<updated>2008-08-21T21:14:27Z</updated>
	<author>
		<name>Joe Darcy</name>
	</author>
	<content type="html">Hello.
&lt;br&gt;&lt;br&gt;I noticed the Gervill CVS tree has been updated since I last integrated 
&lt;br&gt;Gervill into OpenJDK 6 [1]. &amp;nbsp;Here is a patch of the current differences:
&lt;br&gt;&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/SoftMixingMixer.java	Thu Aug 21 21:06:18 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/SoftMixingMixer.java	Thu Aug 21 21:06:18 2008
&lt;br&gt;@@ -62,7 +62,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected static final String INFO_DESCRIPTION = &amp;quot;Software Sound Mixer&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected static final String INFO_VERSION = &amp;quot;0.9&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected static final String INFO_VERSION = &amp;quot;1.0&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected final static Mixer.Info info = new Info();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/ModelInstrument.java	Thu Aug 21 21:06:20 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/ModelInstrument.java	Thu Aug 21 21:06:20 2008
&lt;br&gt;@@ -88,10 +88,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// This information is generated from ModelPerformer.getName()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// returned from getPerformers().
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public String[] getKeys() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] keys = new String[127];
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] keys = new String[128];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (ModelPerformer performer : getPerformers()) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = performer.getKeyFrom(); k &amp;lt;= performer.getKeyTo(); k++) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (keys[k] == null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (k &amp;gt;= 0 &amp;&amp; k &amp;lt; 128 &amp;&amp; keys[k] == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = performer.getName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = &amp;quot;untitled&amp;quot;;
&lt;br&gt;--- old/src/share/classes/com/sun/media/sound/ModelByteBuffer.java	Thu Aug 21 21:06:21 2008
&lt;br&gt;+++ new/src/share/classes/com/sun/media/sound/ModelByteBuffer.java	Thu Aug 21 21:06:21 2008
&lt;br&gt;@@ -45,7 +45,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private long fileoffset;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private byte[] buffer;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private long offset;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private long len;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private final long len;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private class RandomFileInputStream extends InputStream {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -107,11 +107,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public int read(byte[] b) throws IOException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = b.length;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (len &amp;gt; left)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;len = (int)left;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (left == 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int len = raf.read(b);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;len = raf.read(b, 0, len);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (len == -1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left -= len;
&lt;br&gt;@@ -119,12 +120,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public int read() throws IOException {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (len == 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (left == 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int b = raf.read();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (b == -1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;len--;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left--;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return b;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -137,15 +138,15 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long beginIndex, long endIndex, boolean independent) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.root = parent.root;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.offset = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.len = parent.len;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long parent_len = parent.len;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (beginIndex &amp;lt; 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;beginIndex = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (beginIndex &amp;gt; len)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;beginIndex = len;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (beginIndex &amp;gt; parent_len)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;beginIndex = parent_len;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (endIndex &amp;lt; 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;endIndex = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (endIndex &amp;gt; len)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;endIndex = len;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (endIndex &amp;gt; parent_len)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;endIndex = parent_len;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (beginIndex &amp;gt; endIndex)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;beginIndex = endIndex;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;offset = beginIndex;
&lt;br&gt;&lt;br&gt;I plan to apply this patch before OpenJDK 6 b12 is published, which 
&lt;br&gt;should be within a week or two. (Neither the test directory nor the 
&lt;br&gt;src.floatwav files seem to have been updated since the last integration.)
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://mail.openjdk.java.net/pipermail/sound-dev/2008-July/000064.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.openjdk.java.net/pipermail/sound-dev/2008-July/000064.html&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Further-updating-Gervill-for-OpenJDK-6-build-12-tp19101077p19101077.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19098716</id>
	<title>Re: &lt;Sound Dev&gt; java sound implementation using pulseaudio - ports</title>
	<published>2008-08-21T16:06:01Z</published>
	<updated>2008-08-21T16:06:01Z</updated>
	<author>
		<name>Colin Guthrie-6</name>
	</author>
	<content type="html">Ioana Ivan wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; We've been trying to write an implementation of 
&lt;br&gt;&amp;gt; javax.sound.sampled.Mixer(and the associated classes: SourceDataLine, 
&lt;br&gt;&amp;gt; TargetDataLine, Clip, and Port) that uses pulseaudio as a backend. So 
&lt;br&gt;&amp;gt; far, SourceDataLine, TargetDataLine and Clip are working (somewhat, 
&lt;br&gt;&amp;gt; there are still issues that need to be fixed), but we're not sure how to 
&lt;br&gt;&amp;gt; approach Port.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;From the java API:
&lt;br&gt;&amp;gt; &amp;quot;Ports are simple lines for input or output of audio to or from audio 
&lt;br&gt;&amp;gt; devices. Common examples of ports that act as source lines (mixer 
&lt;br&gt;&amp;gt; inputs) include the microphone, line input, and CD-ROM drive. Ports that 
&lt;br&gt;&amp;gt; act as target lines (mixer outputs) include the speaker, headphone, and 
&lt;br&gt;&amp;gt; line output. You can access port using a Port.Info &amp;nbsp;object.&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ports should have an open() and close() method, and ideally they should 
&lt;br&gt;&amp;gt; also support volume and mute controls. There currently is an 
&lt;br&gt;&amp;gt; implementation of Port in openjdk that uses alsa to enumerate the 
&lt;br&gt;&amp;gt; devices that could connect to the sound system, and implement the 
&lt;br&gt;&amp;gt; required methods.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; We were wondering whether there's anything in the pulseaudio API that 
&lt;br&gt;&amp;gt; could be used to do something similar, and, if not, how problematic 
&lt;br&gt;&amp;gt; using the old version of Port(that uses alsa directly) with our mixer 
&lt;br&gt;&amp;gt; that uses pulseaudio is.
&lt;/div&gt;&lt;br&gt;I spoke to you on the mailing list but this is a little clearer I think.
&lt;br&gt;&lt;br&gt;Basically you just want to expose the volume of the various Sinks and 
&lt;br&gt;Sources here. I would just get a list of all the Sinks and provide 
&lt;br&gt;playback Ports that allow volume control and muting etc. and do a 
&lt;br&gt;similar exposure for the Sources.
&lt;br&gt;&lt;br&gt;I'd use the introspection stuff to do this (tho' not overly sure).
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://0pointer.de/lennart/projects/pulseaudio/doxygen/introspect_8h.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://0pointer.de/lennart/projects/pulseaudio/doxygen/introspect_8h.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;You can probably use the source of pavucontrol to work out what to do here.
&lt;br&gt;&lt;br&gt;You can of course export a volume on a &amp;quot;per stream&amp;quot; basis, but I'd 
&lt;br&gt;imagine this doesn't map too well to the Java API seeing as streams will 
&lt;br&gt;come and go quickly but sinks/sources will be slightly more long term 
&lt;br&gt;(tho can still come and go (e.g. when a usb audio device is plugged in 
&lt;br&gt;or a network sink is detected etc.)
&lt;br&gt;&lt;br&gt;&lt;br&gt;I think whatever is in the &amp;quot;Output devices&amp;quot; and &amp;quot;Input devices&amp;quot; tab in 
&lt;br&gt;pavucontrol (from git) is probably what you want...
&lt;br&gt;&lt;br&gt;&lt;br&gt;HTHs
&lt;br&gt;&lt;br&gt;Col
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;br&gt;Colin Guthrie
&lt;br&gt;gmane(at)colin.guthr.ie
&lt;br&gt;&lt;a href=&quot;http://colin.guthr.ie/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://colin.guthr.ie/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Day Job:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Tribalogic Limited [&lt;a href=&quot;http://www.tribalogic.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.tribalogic.net/&lt;/a&gt;]
&lt;br&gt;Open Source:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Mandriva Linux Contributor [&lt;a href=&quot;http://www.mandriva.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mandriva.com/&lt;/a&gt;]
&lt;br&gt;&amp;nbsp; &amp;nbsp;PulseAudio Hacker [&lt;a href=&quot;http://www.pulseaudio.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.pulseaudio.org/&lt;/a&gt;]
&lt;br&gt;&amp;nbsp; &amp;nbsp;Trac Hacker [&lt;a href=&quot;http://trac.edgewall.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://trac.edgewall.org/&lt;/a&gt;]
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-java-sound-implementation-using-pulseaudio---ports-tp19096620p19098716.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19096620</id>
	<title>&lt;Sound Dev&gt; java sound implementation using pulseaudio - ports</title>
	<published>2008-08-21T13:49:01Z</published>
	<updated>2008-08-21T13:49:01Z</updated>
	<author>
		<name>Ioana Ivan</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;We've been trying to write an implementation of 
&lt;br&gt;javax.sound.sampled.Mixer(and the associated classes: SourceDataLine, 
&lt;br&gt;TargetDataLine, Clip, and Port) that uses pulseaudio as a backend. So 
&lt;br&gt;far, SourceDataLine, TargetDataLine and Clip are working (somewhat, 
&lt;br&gt;there are still issues that need to be fixed), but we're not sure how to 
&lt;br&gt;approach Port.
&lt;br&gt;&lt;br&gt;&amp;nbsp;From the java API:
&lt;br&gt;&amp;quot;Ports are simple lines for input or output of audio to or from audio 
&lt;br&gt;devices. Common examples of ports that act as source lines (mixer 
&lt;br&gt;inputs) include the microphone, line input, and CD-ROM drive. Ports that 
&lt;br&gt;act as target lines (mixer outputs) include the speaker, headphone, and 
&lt;br&gt;line output. You can access port using a Port.Info &amp;nbsp;object.&amp;quot;
&lt;br&gt;&lt;br&gt;Ports should have an open() and close() method, and ideally they should 
&lt;br&gt;also support volume and mute controls. There currently is an 
&lt;br&gt;implementation of Port in openjdk that uses alsa to enumerate the 
&lt;br&gt;devices that could connect to the sound system, and implement the 
&lt;br&gt;required methods.
&lt;br&gt;&lt;br&gt;We were wondering whether there's anything in the pulseaudio API that 
&lt;br&gt;could be used to do something similar, and, if not, how problematic 
&lt;br&gt;using the old version of Port(that uses alsa directly) with our mixer 
&lt;br&gt;that uses pulseaudio is.
&lt;br&gt;&lt;br&gt;Thank you,
&lt;br&gt;Ioana Ivan
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-java-sound-implementation-using-pulseaudio---ports-tp19096620p19096620.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18746112</id>
	<title>Re: &lt;Sound Dev&gt; Updating Gervill for OpenJDK 6 build 12</title>
	<published>2008-07-30T18:28:44Z</published>
	<updated>2008-07-30T18:28:44Z</updated>
	<author>
		<name>Dalibor Topic-5</name>
	</author>
	<content type="html">Joseph D. Darcy wrote:
&lt;br&gt;&amp;gt; Hello.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I've synced up with Karl's regression test changes, added the changes 
&lt;br&gt;&amp;gt; for the three Wave* files, and integrated the updated version of 
&lt;br&gt;&amp;gt; Gervill into the internal OpenJDK 6 b12 code base. &amp;nbsp;All Gervill 
&lt;br&gt;&amp;gt; regression tests now pass on all platforms :-)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The source for build 12 should be posted within a week or two.
&lt;br&gt;Thanks, Joe, you rock ;)
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;dalibor topic
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;*******************************************************************
&lt;br&gt;Dalibor Topic &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Tel: (+49 40) 23 646 738
&lt;br&gt;Java F/OSS Ambassador &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AIM: robiladonaim
&lt;br&gt;Sun Microsystems GmbH &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mobile: (+49 177) 2664 192
&lt;br&gt;Nagelsweg 55 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://openjdk.java.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://openjdk.java.net&lt;/a&gt;&lt;br&gt;D-20097 Hamburg &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18746112&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Dalibor.Topic@...&lt;/a&gt;
&lt;br&gt;Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten
&lt;br&gt;Amtsgericht München: HRB 161028
&lt;br&gt;Geschäftsführer: Thomas Schröder, Wolfgang Engels, Dr. Roland Bömer
&lt;br&gt;Vorsitzender des Aufsichtsrates: Martin Häring
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Updating-Gervill-for-OpenJDK-6-build-12-tp18601267p18746112.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18726279</id>
	<title>Re: &lt;Sound Dev&gt; Updating Gervill for OpenJDK 6 build 12</title>
	<published>2008-07-29T22:22:19Z</published>
	<updated>2008-07-29T22:22:19Z</updated>
	<author>
		<name>Joe Darcy</name>
	</author>
	<content type="html">Hello.
&lt;br&gt;&lt;br&gt;I've synced up with Karl's regression test changes, added the changes 
&lt;br&gt;for the three Wave* files, and integrated the updated version of Gervill 
&lt;br&gt;into the internal OpenJDK 6 b12 code base. &amp;nbsp;All Gervill regression tests 
&lt;br&gt;now pass on all platforms :-)
&lt;br&gt;&lt;br&gt;The source for build 12 should be posted within a week or two.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;br&gt;Joseph D. Darcy wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Karl Helgason wrote:
&lt;br&gt;&amp;gt;&amp;gt; Adding PCM Float support into current WaveFileReader.java, 
&lt;br&gt;&amp;gt;&amp;gt; WaveFileWriter.java
&lt;br&gt;&amp;gt;&amp;gt; would be best. And it is just question of adding few lines.
&lt;br&gt;&amp;gt;&amp;gt; But until then I think you can use WaveFloatFileReader.java, &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; WaveFloatFileWriter.java.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Just to be clear, you recommend for now I add WaveFloatFileReader.java 
&lt;br&gt;&amp;gt; and &amp;nbsp;WaveFloatFileWriter.java. (from src.floatwav/ rather than src/) but 
&lt;br&gt;&amp;gt; &amp;nbsp;not include WaveExtensibleFileReader.java.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -Joe
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; ________________________________________
&lt;br&gt;&amp;gt;&amp;gt; Frá: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18726279&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Joe.Darcy@...&lt;/a&gt; [&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18726279&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Joe.Darcy@...&lt;/a&gt;]
&lt;br&gt;&amp;gt;&amp;gt; Sent: 29. júlí 2008 00:25
&lt;br&gt;&amp;gt;&amp;gt; Viðtakandi: Alex Menkov; Karl Helgason
&lt;br&gt;&amp;gt;&amp;gt; Afrit: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18726279&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sound-dev@...&lt;/a&gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18726279&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Alexey.Menkov@...&lt;/a&gt;; 
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18726279&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Dalibor.Topic@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; Efni: Re: &amp;lt;Sound Dev&amp;gt; Updating Gervill for OpenJDK 6 build 12
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Alex Menkov wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Karl Helgason wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; has been
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; moved to src.floatwav in the Gervill CVS. Because they aren't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; directly related with
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Gervill Synthesizer. They simply add support for float encoded Wave
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; files.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; And WaveExtensibleFileReader is also a proposal how we should store
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; channel mask in AudioFormat properties (used for multi-channel wave
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; files).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; So, should I add these files to OpenJDK 6?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It depends, Alexey thought we should rather add support for PCM Float
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; support
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to current com.sun.media.sound.WaveFileReader and WaveFileWriter 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; classes
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; than introducing new one.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; All this wave readers (current PCM/ALAW/ULAW and Float &amp; Extensible
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; from Gervill) could be combined in different ways - basing on current
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; WaveFileReader or basing on WaveFloatFileReader or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; WaveExtensibleFileReader.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Main goal is to avoid functionality duplication.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm personally agnostic toward how this functionality is implemented.
&lt;br&gt;&amp;gt;&amp;gt; Alex and Karl, how about I add these files along with the other changes
&lt;br&gt;&amp;gt;&amp;gt; I'm making?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -Joe
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; And WaveExtensibleFileReader is also a proposal how we should store
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; channel mask in AudioFormat properties (used for multi-channel
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; wave files).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Wow.. I've overlooked this :)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Regards
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Alex
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; No virus found in this incoming message.
&lt;br&gt;&amp;gt;&amp;gt; Checked by AVG.
&lt;br&gt;&amp;gt;&amp;gt; Version: 7.5.524 / Virus Database: 270.5.6/1576 - Release Date: 
&lt;br&gt;&amp;gt;&amp;gt; 27.7.2008 16:16
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Updating-Gervill-for-OpenJDK-6-build-12-tp18601267p18726279.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18703745</id>
	<title>Re: &lt;Sound Dev&gt; Updating Gervill for OpenJDK 6 build 12</title>
	<published>2008-07-28T19:24:21Z</published>
	<updated>2008-07-28T19:24:21Z</updated>
	<author>
		<name>Joe Darcy</name>
	</author>
	<content type="html">Karl Helgason wrote:
&lt;br&gt;&amp;gt; Adding PCM Float support into current WaveFileReader.java, WaveFileWriter.java
&lt;br&gt;&amp;gt; would be best. And it is just question of adding few lines.
&lt;br&gt;&amp;gt; But until then I think you can use WaveFloatFileReader.java, &amp;nbsp;WaveFloatFileWriter.java.
&lt;br&gt;&lt;br&gt;Just to be clear, you recommend for now I add WaveFloatFileReader.java 
&lt;br&gt;and &amp;nbsp;WaveFloatFileWriter.java. (from src.floatwav/ rather than src/) but 
&lt;br&gt;&amp;nbsp; not include WaveExtensibleFileReader.java.
&lt;br&gt;&lt;br&gt;-Joe
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ________________________________________
&lt;br&gt;&amp;gt; Frá: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18703745&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Joe.Darcy@...&lt;/a&gt; [&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18703745&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Joe.Darcy@...&lt;/a&gt;]
&lt;br&gt;&amp;gt; Sent: 29. júlí 2008 00:25
&lt;br&gt;&amp;gt; Viðtakandi: Alex Menkov; Karl Helgason
&lt;br&gt;&amp;gt; Afrit: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18703745&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sound-dev@...&lt;/a&gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18703745&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Alexey.Menkov@...&lt;/a&gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18703745&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Dalibor.Topic@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Efni: Re: &amp;lt;Sound Dev&amp;gt; Updating Gervill for OpenJDK 6 build 12
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Alex Menkov wrote:
&lt;br&gt;&amp;gt;&amp;gt; Karl Helgason wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; has been
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; moved to src.floatwav in the Gervill CVS. Because they aren't
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; directly related with
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Gervill Synthesizer. They simply add support for float encoded Wave
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; files.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; And WaveExtensibleFileReader is also a proposal how we should store
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; channel mask in AudioFormat properties (used for multi-channel wave
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; files).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; So, should I add these files to OpenJDK 6?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; It depends, Alexey thought we should rather add support for PCM Float
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; support
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; to current com.sun.media.sound.WaveFileReader and WaveFileWriter classes
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; than introducing new one.
&lt;br&gt;&amp;gt;&amp;gt; All this wave readers (current PCM/ALAW/ULAW and Float &amp; Extensible
&lt;br&gt;&amp;gt;&amp;gt; from Gervill) could be combined in different ways - basing on current
&lt;br&gt;&amp;gt;&amp;gt; WaveFileReader or basing on WaveFloatFileReader or
&lt;br&gt;&amp;gt;&amp;gt; WaveExtensibleFileReader.
&lt;br&gt;&amp;gt;&amp;gt; Main goal is to avoid functionality duplication.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm personally agnostic toward how this functionality is implemented.
&lt;br&gt;&amp;gt; Alex and Karl, how about I add these files along with the other changes
&lt;br&gt;&amp;gt; I'm making?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -Joe
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; And WaveExtensibleFileReader is also a proposal how we should store
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; channel mask in AudioFormat properties (used for multi-channel
&lt;br&gt;&amp;gt;&amp;gt; wave files).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Wow.. I've overlooked this :)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Regards
&lt;br&gt;&amp;gt;&amp;gt; Alex
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; No virus found in this incoming message.
&lt;br&gt;&amp;gt; Checked by AVG.
&lt;br&gt;&amp;gt; Version: 7.5.524 / Virus Database: 270.5.6/1576 - Release Date: 27.7.2008 16:16
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3CSound-Dev%3E-Updating-Gervill-for-OpenJDK-6-build-12-tp18601267p18703745.html" />
</entry>

</feed>
