From kalli at midverk.is Tue Oct 2 04:56:28 2007 From: kalli at midverk.is (Karl Helgason) Date: Tue, 2 Oct 2007 11:56:28 +0000 Subject: [Audio-engine-dev] Gervill 0.2 Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> Hi, I have updated the midi synthesizer: http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 - Large format support. - Fix SoundFont modulator mapping. - Fix handling of unsigned 16 bit streams - Improved GUS patch support - Add support for ping-pong/bi-directional and reverse loops regards Karl Helgason From javasound-dev at bome.com Tue Oct 2 05:44:06 2007 From: javasound-dev at bome.com (Florian Bomers) Date: Tue, 02 Oct 2007 14:44:06 +0200 Subject: [Audio-engine-dev] Gervill 0.2 In-Reply-To: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> References: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> Message-ID: <47023D16.2020006@bome.com> Hi Karl, that sounds fantastic. DLS and SF2 support for Java Sound is great. Some questions: 1) under which license do you intend to make it available for OpenJDK? 2) for Linux and Solaris, do you know a GM compatible soundbank that could be included? 3) how large (in KB) is the engine (.class + .dll/.so)? The smaller the better, because download size of the JRE should be kept to a minimum... 4) Does/Can it use Java Sound output devices? 5) one important feature is to select the sound device used for output, are there any provisions? I'm not sure how that can be solved, but one solution would be to provide one Synthesizer object per audio device. The default Synthesizer would use Java Sound's default audio device, as determined by AudioSystem.getMixer(). Regards, Florian On 10/2/2007 1:56 PM, Karl Helgason wrote: > Hi, > > I have updated the midi synthesizer: > http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 > > - Large format support. > - Fix SoundFont modulator mapping. > - Fix handling of unsigned 16 bit streams > - Improved GUS patch support > - Add support for ping-pong/bi-directional and reverse loops > > regards > Karl Helgason > _______________________________________________ > audio-engine-dev mailing list > audio-engine-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev > > -- Florian Bomers Bome Software ------------------------------------------------------- Music Software, Development Tools: http://www.bome.com Java Sound extensions, plugins: http://www.tritonus.org The Java Sound Resources: http://www.jsresources.org ------------------------------------------------------- Please quote this email in your reply. Thanks! From kalli at midverk.is Tue Oct 2 08:03:19 2007 From: kalli at midverk.is (Karl Helgason) Date: Tue, 2 Oct 2007 15:03:19 +0000 Subject: [Audio-engine-dev] FW: Gervill 0.2 Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4FD9B8@mail.midverk.is> Hi Florian, Here are to answer your questions. 1. The synthesizer is licensed in GPL with Classpath exception. I have also signed the Sun Contributor Agreement. 2. With the GUS patch format support we can use freepats: see: http://freepats.opensrc.org/ But they are probably to large. 3. There is no dll file involved only .class files. And the current .jar file is 170 kb, which can be compressed further by dropping debugging information and using pack200 compression. 4. Yeb it uses javasound default mixer by default. 5. Curently is done by caling the method setMixer(Mixer) in the SoftSynthesizer class. There are problaby many other ways this can be done. regards, Karl Helgason ________________________________________ Fr?: Florian Bomers [javasound-dev at bome.com] Sent: 2. okt?ber 2007 12:44 Vi?takandi: Karl Helgason Samrit: audio-engine-dev at openjdk.java.net Efni: Re: [Audio-engine-dev] Gervill 0.2 Hi Karl, that sounds fantastic. DLS and SF2 support for Java Sound is great. Some questions: 1) under which license do you intend to make it available for OpenJDK? 2) for Linux and Solaris, do you know a GM compatible soundbank that could be included? 3) how large (in KB) is the engine (.class + .dll/.so)? The smaller the better, because download size of the JRE should be kept to a minimum... 4) Does/Can it use Java Sound output devices? 5) one important feature is to select the sound device used for output, are there any provisions? I'm not sure how that can be solved, but one solution would be to provide one Synthesizer object per audio device. The default Synthesizer would use Java Sound's default audio device, as determined by AudioSystem.getMixer(). Regards, Florian On 10/2/2007 1:56 PM, Karl Helgason wrote: > Hi, > > I have updated the midi synthesizer: > http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 > > - Large format support. > - Fix SoundFont modulator mapping. > - Fix handling of unsigned 16 bit streams > - Improved GUS patch support > - Add support for ping-pong/bi-directional and reverse loops > > regards > Karl Helgason > _______________________________________________ > audio-engine-dev mailing list > audio-engine-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev > > -- Florian Bomers Bome Software ------------------------------------------------------- Music Software, Development Tools: http://www.bome.com Java Sound extensions, plugins: http://www.tritonus.org The Java Sound Resources: http://www.jsresources.org ------------------------------------------------------- Please quote this email in your reply. Thanks! No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.488 / Virus Database: 269.13.37/1042 - Release Date: 1.10.2007 18:59 From ngompa13 at gmail.com Wed Oct 3 17:35:05 2007 From: ngompa13 at gmail.com (King InuYasha) Date: Wed, 3 Oct 2007 19:35:05 -0500 Subject: [Audio-engine-dev] Suggestions to completely Free the JavaSound implementation Message-ID: <8278b1b0710031735n1083f9aavd96aa53690eb6b48@mail.gmail.com> Hello, I read in the mailing list web-based aggregator the following snippet: >> To make JavaSound completely open (and drop closed part) we need alternative >> implementations for: >> 1) Software synthesizer. There is separate openjdk project for the task - >> audio-engine-dev; >> 2) OSS mixer (for linux/solaris, both sampled and midi). As for a software synthesizer, I think that TiMidity++ ( http://timidity.sourceforge.net/) would be the best choice for the job. The OSS Mixer should be PulseAudio, which supports working through ESD interfaces as well as native ones. It is a drop-in replacement for ESD and TiMidity++ supports channeling the output of the MIDI through EsounD, which can be picked up by PulseAudio. I hope this is useful for starting the work needed to complete the Free JavaSound implementation. Both PulseAudio and TiMidity++ are cross-platform, so I don't think there should be any issues with it... I am not a programmer unfortunately, so I cannot help, but my stake in this has to do with distributing java-based multimedia software that is FOSS. I hope JavaSound issues get resolved soon! -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/audio-engine-dev/attachments/20071003/72f92698/attachment.html From contact at petersalomonsen.com Thu Oct 4 22:50:49 2007 From: contact at petersalomonsen.com (Peter Salomonsen) Date: Fri, 5 Oct 2007 07:50:49 +0200 Subject: [Audio-engine-dev] Suggestions to completely Free the JavaSound implementation In-Reply-To: <8278b1b0710041703k635b2c28o9156b39509da1368@mail.gmail.com> References: <8278b1b0710031735n1083f9aavd96aa53690eb6b48@mail.gmail.com> <8278b1b0710041703k635b2c28o9156b39509da1368@mail.gmail.com> Message-ID: Hi, I consider audio output mixing more like a job for the Javasound Mixer implementation than a software synthesizer impl. There are many implementations for javasound mixers. For example - I've been working on a Javasound mixer implementation supporting jack (jjack.berlios.de). A similar implementation supporting the Audio interfaces you suggest should be possible (maybe they even exist already) regards, Peter On 10/5/07, King InuYasha wrote: > > Yes, but does Gervill support mixing the audio output? Gervill seems like > a great choice, but being able to mix into PulseAudio would be important, > and afaik, the site does not say anything about its ability to work through > PulseAudio. Noting that I did not mention ESD, ESD has been out of > development for a few years now, and PulseAudio being a better replacement > for it, Fedora is switching and GNOME is considering getting rid of the ESD > requirement for GNOME, and perhaps they will put PulseAudio as the > requirement instead... > > On 10/4/07, Peter Salomonsen wrote: > > > > Hi, > > > > > > On 10/4/07, King InuYasha < ngompa13 at gmail.com> wrote: > > > > > > As for a software synthesizer, I think that TiMidity++ ( > > > http://timidity.sourceforge.net/) would be the best choice for the > > > job. > > > > > > > > > > Gervill does the job perfect. It's also more interesting I think, since > > it's pure java. The performance of Gervill is great - I'm already using it > > for music production. Low latency, great soundbank support - great sound. > > > > It's available in Frinika which is a pure java sequencer/studio/synth > > software. I vote for Gervill to replace the current javasound synthesizer. > > > > regards, > > > > Peter Salomonsen > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/audio-engine-dev/attachments/20071005/60c900a6/attachment.html From kalli at midverk.is Sun Oct 7 19:33:33 2007 From: kalli at midverk.is (Karl Helgason) Date: Mon, 8 Oct 2007 02:33:33 +0000 Subject: [Audio-engine-dev] Gervill, create SoundFont 2 soundbank example Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B7708@mail.midverk.is> I created simple example on how to create SoundFont 2 files (*.sf2) using Gervill library. The example creates a soundbank using included wave audio file. It can be downloaded here: https://sourceforge.net/project/showfiles.php?group_id=175084&package_id=248179&release_id=545019 regards, Karl Helgason From contact at petersalomonsen.com Thu Oct 11 03:51:05 2007 From: contact at petersalomonsen.com (Peter Salomonsen) Date: Thu, 11 Oct 2007 12:51:05 +0200 Subject: [Audio-engine-dev] Suggestions to completely Free the JavaSound implementation In-Reply-To: <8278b1b0710051505q7b5a14acl31bb8fe88ab607ee@mail.gmail.com> References: <8278b1b0710031735n1083f9aavd96aa53690eb6b48@mail.gmail.com> <8278b1b0710041703k635b2c28o9156b39509da1368@mail.gmail.com> <8278b1b0710051505q7b5a14acl31bb8fe88ab607ee@mail.gmail.com> Message-ID: Hi, As for hickups - this again relies of the audio driver - where Frinika provides a realtime priority driver on Linux - making Gervill run entirely without hickups on my 2 year old amd64 single core computer (800 MHz in powersave mode). Latency about 11 ms. My experience with softsynths in java is very good in fact - first versions of Frinika, used to run on 700 MHz Pentium III - and no glitches or problems whatsoever. Could be used for live performance. Benchmarks also show that number crunching in Java is very fast. For the future - Just In Time (JIT) compiled code will be better since there are a variety of configurations. Precompiled C code for i.e. i386 will not run optimal on todays dual core processors, while code in Java or .Net will (since optimization is done on the fly). And the fact that it is the Java language - we're talking about a soft synth for java - why shouldn't it be written in Java.. See Gervill in action using the latest version of Frinika: http://sourceforge.net/project/downloading.php?group_id=131823&use_mirror=osdn&filename=frinika-gervill.ogg&89944680 This is a live recording ... cheers, Peter On 10/6/07, King InuYasha wrote: > > As far as I can tell, PulseAudio mixing for JavaSound has not been ever > implemented. I don't think that Gervill would be the right choice for the > required JavaSound MIDI server, but I do think it is a good project. I think > Timidity is better because most distros already integrate it, it is > lightweight, supports a variety of outputs, and is very fast, and Java > unfortunately has a rather bad reputation of being really slow... I am not > saying that Gervill is bad, on the contrary, it is a nice MIDI sound > synthesizer. I just think TiMidity++ would be a better choice... Though if > Gervill can run as MIDI sound synth on standard MIDI port efficiently > without hiccups, then I think it would work. It should be able to work on > computers 5 years old without any hiccups. And my test of Gervill on my 4 > year old laptop proved otherwise. It was worse than FluidSynth and > TiMidity++. TiMidity was the fastest and most fluid, while FluidSynth was > rather hiccupy, but it didnt eat up too much CPU power. > > On 10/5/07, Peter Salomonsen wrote: > > > > Hi, > > > > I consider audio output mixing more like a job for the Javasound Mixer > > implementation than a software synthesizer impl. There are many > > implementations for javasound mixers. For example - I've been working on a > > Javasound mixer implementation supporting jack ( jjack.berlios.de). A > > similar implementation supporting the Audio interfaces you suggest should be > > possible (maybe they even exist already) > > > > regards, > > > > Peter > > > > On 10/5/07, King InuYasha wrote: > > > > > > Yes, but does Gervill support mixing the audio output? Gervill seems > > > like a great choice, but being able to mix into PulseAudio would be > > > important, and afaik, the site does not say anything about its ability to > > > work through PulseAudio. Noting that I did not mention ESD, ESD has been out > > > of development for a few years now, and PulseAudio being a better > > > replacement for it, Fedora is switching and GNOME is considering getting rid > > > of the ESD requirement for GNOME, and perhaps they will put PulseAudio as > > > the requirement instead... > > > > > > On 10/4/07, Peter Salomonsen < contact at petersalomonsen.com> wrote: > > > > > > > > Hi, > > > > > > > > > > > > On 10/4/07, King InuYasha < ngompa13 at gmail.com> wrote: > > > > > > > > > > As for a software synthesizer, I think that TiMidity++ ( > > > > > http://timidity.sourceforge.net/) would be the best choice for the > > > > > job. > > > > > > > > > > > > > > > > > > Gervill does the job perfect. It's also more interesting I think, > > > > since it's pure java. The performance of Gervill is great - I'm already > > > > using it for music production. Low latency, great soundbank support - great > > > > sound. > > > > > > > > It's available in Frinika which is a pure java > > > > sequencer/studio/synth software. I vote for Gervill to replace the current > > > > javasound synthesizer. > > > > > > > > regards, > > > > > > > > Peter Salomonsen > > > > > > > > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/audio-engine-dev/attachments/20071011/44f38739/attachment.html From javasound-dev at bome.com Thu Oct 11 02:31:57 2007 From: javasound-dev at bome.com (Florian Bomers) Date: Thu, 11 Oct 2007 11:31:57 +0200 Subject: [Audio-engine-dev] FW: Gervill 0.2 In-Reply-To: <36EC82E93EB0AD40A4301DAD6543238677CA4FD9B8@mail.midverk.is> References: <36EC82E93EB0AD40A4301DAD6543238677CA4FD9B8@mail.midverk.is> Message-ID: <470DED8D.7000300@bome.com> Hi Karl, sounds great! I support inclusion of Gervill into the openjdk (pending functional tests...). Things to solve: - soundbank: 1) I expect Sun to not want to keep a soundbank in the JRE/JDK because of size. I think we should extend MidiSystem with methods to initialize and, if necessary, download a default soundbank from a hardcoded location. This should also work from applets. 2) For that, we should provide a soundbank that is free to be used with Java. This soundbank should be freely accessible on a reliable server "for ever" so that it can be downloaded on demand by Java. - a standardized way of setting the mixer and audio format of the synth. Also, should we add properties to select the default audio device used for the synthesizer, similar to the properties in AudioSystem? And, the equivalent format to choose the default Synthesizer at all. Below I propose a new interface to be implemented by Software Synthesizers. Thanks, Florian package javax.sound.midi; import javax.sound.sampled.*; interface SoftwareSynthesizer extends Synthesizer { /** * Return the rendering format of this synthesizer. * * @return the rendering format */ public AudioFormat getFormat(); /** * Set the rendering format of this synthesizer. * * @param format the new audio format * @throws IllegalArgumentException if this synthesizer * cannot render in this format. * @throws IllegalStateException when this * SoftwareSynthesizer is already open and the * implementation does not support setting the * format when open. */ public void setFormat(AudioFormat format); /** * Query the software synthesizer if the output * mixer can be chosen with the setMixer() or * the setLine() methods. If it is not supported, * the synthesizer will play on a default device. * * @return true if assigning an arbitrary mixer * and/or line is possible, false otherwise. */ public boolean canSelectMixer(); /** * Get the currently selected mixer type. If the default * mixer is used, this method returns null. * * @return the mixer descriptor that this synthesizer * writes its audio data to, or null if using * the default mixer. */ public Mixer.Info getOutputMixer(); /** * Get the currently selected SourceDataLine type. * If the default line of the selected mixer is * used, this method returns null. * * @return the line descriptor for a SourceDataLine that * this synthesizer writes its audio data to, or * null if using the default mixer. */ public DataLine.Info getOutputLine(); /** * Set the mixer descriptor used for rendering the * Synthesizer's audio output, and use the default * SourceDataLine from it. The mixer should provide * at least one SourceDataLine that supports the * synthesizer's audio format. *

* Use null to let the implementation * choose a default output device, usually the default * mixer as returned by AudioSystem.getMixer(null). * * @param mixerInfo the mixer descriptor to use * for rendering, or null to use * a default mixer. * @throws IllegalStateException when this * SoftwareSynthesizer is already open * @throws IllegalArgumentException if the specified * Mixer does not provide a SourceDataLine of * the required format, or if setting the mixer * is not possible at all (see canSelectMixer()). */ public void setMixer(Mixer.Info mixerInfo); /** * Set the mixer descriptor and its Line descriptor * used for rendering the Synthesizer's audio output. * The Line descriptor should be an instance returned * by that mixer's getSourceLineInfo() method, cast * to DataLine.Info, and its line class must be * assignment compatible with the SourceDataLine * interface. The specified SourceDataLine should * support this synthesizer's audio format. *

* Use null for both parameters to let * the implementation choose a default output device, * usually the default mixer as returned by * AudioSystem.getMixer(null). * * @param mixerInfo the mixer descriptor to use * for rendering, or null to use * a default mixer. * @param sourceLineInfo the line descriptor of * a SourceDataLine as returned by the * specified mixer. * @throws IllegalStateException when this * SoftwareSynthesizer is already open * @throws IllegalArgumentException if the specified * SourceDataLine does not provide * the required format, or if setting the mixer * is not possible at all (see canSelectMixer()). * @throws NullPointerException if sourceLineInfo * is non-null and mixerInfo is null. */ public void setMixer(Mixer.Info mixerInfo, DataLine.Info sourceLineInfo); /** * [same description of MidiDevice.open()] *

* If the Mixer or SourceDataLine where this synthesizer * writes its data to, cannot be found, or is not * available, or the line does not support the * requested format, and no output stream is set, * a MidiUnavailableException is thrown, * where its cause is set to the respective Exception * thrown by the audio system. */ @Override public void open() throws MidiUnavailableException; /** * Set an OutputStream where the rendered audio is * written to. * After setting a valid OutputStream, this synthesizer * will not render its audio to a SourceDataLine, but * to the specified stream. To revert the default * behavior, set the stream to null. * * @throws IllegalStateException when this * SoftwareSynthesizer is already open and the * implementation does not support setting the * mixer when open. * @param stream the output stream receiving the * the rendered audio stream in the format * returned by getFormat(). */ public void setOutputStream(OutputStream stream); } On 10/2/2007 5:03 PM, Karl Helgason wrote: > Hi Florian, > > Here are to answer your questions. > > 1. > The synthesizer is licensed in GPL with Classpath exception. > I have also signed the Sun Contributor Agreement. > > 2. > With the GUS patch format support we can use freepats: > see: http://freepats.opensrc.org/ > But they are probably to large. > > 3. > There is no dll file involved only .class files. And the current .jar > file is 170 kb, which can be compressed further > by dropping debugging information and using pack200 compression. > > 4. > Yeb it uses javasound default mixer by default. > > 5. > Curently is done by caling the method setMixer(Mixer) in the SoftSynthesizer class. > There are problaby many other ways this can be done. > > regards, > Karl Helgason > > ________________________________________ > Fr?: Florian Bomers [javasound-dev at bome.com] > Sent: 2. okt?ber 2007 12:44 > Vi?takandi: Karl Helgason > Samrit: audio-engine-dev at openjdk.java.net > Efni: Re: [Audio-engine-dev] Gervill 0.2 > > Hi Karl, > > that sounds fantastic. DLS and SF2 support for Java Sound is > great. Some questions: > > 1) under which license do you intend to make it available for > OpenJDK? > > 2) for Linux and Solaris, do you know a GM compatible soundbank > that could be included? > > 3) how large (in KB) is the engine (.class + .dll/.so)? The > smaller the better, because download size of the JRE should be > kept to a minimum... > > 4) Does/Can it use Java Sound output devices? > > 5) one important feature is to select the sound device used for > output, are there any provisions? I'm not sure how that can be > solved, but one solution would be to provide one Synthesizer > object per audio device. The default Synthesizer would use Java > Sound's default audio device, as determined by > AudioSystem.getMixer(). > > Regards, > Florian > > > On 10/2/2007 1:56 PM, Karl Helgason wrote: >> Hi, >> >> I have updated the midi synthesizer: >> http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 >> >> - Large format support. >> - Fix SoundFont modulator mapping. >> - Fix handling of unsigned 16 bit streams >> - Improved GUS patch support >> - Add support for ping-pong/bi-directional and reverse loops >> >> regards >> Karl Helgason >> _______________________________________________ >> audio-engine-dev mailing list >> audio-engine-dev at openjdk.java.net >> http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev >> >> > > -- > Florian Bomers > Bome Software > > ------------------------------------------------------- > Music Software, Development Tools: http://www.bome.com > Java Sound extensions, plugins: http://www.tritonus.org > The Java Sound Resources: http://www.jsresources.org > ------------------------------------------------------- > Please quote this email in your reply. Thanks! > > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.488 / Virus Database: 269.13.37/1042 - Release Date: 1.10.2007 18:59 > > _______________________________________________ > audio-engine-dev mailing list > audio-engine-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev > > > -- Florian Bomers Bome Software ------------------------------------------------------- Music Software, Development Tools: http://www.bome.com Java Sound extensions, plugins: http://www.tritonus.org The Java Sound Resources: http://www.jsresources.org ------------------------------------------------------- Please quote this email in your reply. Thanks! From javasound-dev at bome.com Thu Oct 11 02:44:27 2007 From: javasound-dev at bome.com (Florian Bomers) Date: Thu, 11 Oct 2007 11:44:27 +0200 Subject: [Audio-engine-dev] Suggestions to completely Free the JavaSound implementation In-Reply-To: References: <8278b1b0710031735n1083f9aavd96aa53690eb6b48@mail.gmail.com> <8278b1b0710041703k635b2c28o9156b39509da1368@mail.gmail.com> Message-ID: <470DF07B.9080303@bome.com> I agree, it's not of benefit to use aggregated audio engines, or underlying porting layers, because Java Sound /is/ already a porting layer. Rather, I'd use - a software synth that can be freely assigned to a SourceDataLine (see my other post) - plus any number of different mixers giving access to the different native audio architectures, e.g. mixers for - ALSA - Jack - Windows DirectSound - ASIO - MacOS CoreAudio - OSS - Solaris Mixer I also propose a software mixing mixer that mixes all its SourceDataLines together and writes the sum to a selectable Mixer. This mixer can then be the default, so that applets, games, and the like can just play without worrying about mixing. And last but not least, since there seems to be demand, we can easily add seperate mixers for - ESD - PortAudio - PulseAudio (haven't heard of it before) - [k]artsd - gstreamer - and mixers for the hundreds of other audio porting layers and audio daemons. The openJDK can easily integrate all the bindings and they'll just work if the underlying architecture is available/installed. Later, Florian On 10/5/2007 7:50 AM, Peter Salomonsen wrote: > Hi, > > I consider audio output mixing more like a job for the Javasound Mixer > implementation than a software synthesizer impl. There are many > implementations for javasound mixers. For example - I've been working on a > Javasound mixer implementation supporting jack (jjack.berlios.de). A similar > implementation supporting the Audio interfaces you suggest should be > possible (maybe they even exist already) > > regards, > > Peter > > On 10/5/07, King InuYasha wrote: >> Yes, but does Gervill support mixing the audio output? Gervill seems like >> a great choice, but being able to mix into PulseAudio would be important, >> and afaik, the site does not say anything about its ability to work through >> PulseAudio. Noting that I did not mention ESD, ESD has been out of >> development for a few years now, and PulseAudio being a better replacement >> for it, Fedora is switching and GNOME is considering getting rid of the ESD >> requirement for GNOME, and perhaps they will put PulseAudio as the >> requirement instead... >> >> On 10/4/07, Peter Salomonsen wrote: >>> Hi, >>> >>> >>> On 10/4/07, King InuYasha < ngompa13 at gmail.com> wrote: >>>> As for a software synthesizer, I think that TiMidity++ ( >>>> http://timidity.sourceforge.net/) would be the best choice for the >>>> job. >>>> >>>> >>> Gervill does the job perfect. It's also more interesting I think, since >>> it's pure java. The performance of Gervill is great - I'm already using it >>> for music production. Low latency, great soundbank support - great sound. >>> >>> It's available in Frinika which is a pure java sequencer/studio/synth >>> software. I vote for Gervill to replace the current javasound synthesizer. >>> >>> regards, >>> >>> Peter Salomonsen >>> >> > > > ------------------------------------------------------------------------ > > _______________________________________________ > audio-engine-dev mailing list > audio-engine-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev -- Florian Bomers Bome Software ------------------------------------------------------- Music Software, Development Tools: http://www.bome.com Java Sound extensions, plugins: http://www.tritonus.org The Java Sound Resources: http://www.jsresources.org ------------------------------------------------------- Please quote this email in your reply. Thanks! From Alexey.Menkov at Sun.COM Thu Oct 11 17:04:24 2007 From: Alexey.Menkov at Sun.COM (Alex Menkov) Date: Thu, 11 Oct 2007 17:04:24 -0700 Subject: [Audio-engine-dev] Gervill 0.2 In-Reply-To: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> References: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> Message-ID: <470EBA08.7080402@sun.com> Hi Karl, This are my notes about the implementation. 1. SoftSynthesizer has a number of methods for customizing (get/set for Mixer, SourceDataLine, AudioFormat, Latency, Polyphony, ControlRate, Resampler). All the functionality is unavailable for standard use (to use it developers have to test if the synthesizer is instance of com.sun.media.SoftSynthesizer, and that is not good way). To make new functionality available we should add new interface to javax.sound.midi (Synthesizer2 or something like this) which will extends standard Synthesizer so developers could use new functionality via _standard_ interface. As a 1st step I suggest to create such interface in com.sun.media.sound package, and them move it to javax.sound.midi. So we need to determine which methods should be included in the extended interface. As for me the main method is setMixer(javax.sound.sampled.Mixer) (I'm not sure about SourceDataLine - other implementations can require several lines). Ability to specify preferred AudioFormat, Latency & Polyphony is a good feature, but most likely it should be optional. BTW do you think selecting from several resamplers is useful feature? mabby 1 resampler is enough? 2. I don't think it's a good idea to implement sound.sampled.Mixer by the synthesizer. It's not very intuitive way. If somebody wants to capture synthesizer outputs, he will implement simplest Mixer and set it as output mixer for the synthesizer. 3. Why the synth support only single receiver? (look at com.sun.media.sound.AbstractMidiDevice for example of multi-recevers implementation). 4. WaveFloatFileReader: it seems to me that the class is not used anywhere. 5. LargeSoundbankReader: what use cases you see for it? (as far as I see from the code, currently its feature is not used anywhere) Regards Alex Karl Helgason wrote: > Hi, > > I have updated the midi synthesizer: > http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 > > - Large format support. > - Fix SoundFont modulator mapping. > - Fix handling of unsigned 16 bit streams > - Improved GUS patch support > - Add support for ping-pong/bi-directional and reverse loops > > regards > Karl Helgason > _______________________________________________ > audio-engine-dev mailing list > audio-engine-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev From kalli at midverk.is Thu Oct 11 19:03:17 2007 From: kalli at midverk.is (Karl Helgason) Date: Fri, 12 Oct 2007 02:03:17 +0000 Subject: [Audio-engine-dev] Gervill, Midi Player demo Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B770B@mail.midverk.is> I have created more examples for using Gervill library. I present: Gervill - Midi Player. It can be downloaded here: https://sourceforge.net/project/showfiles.php?group_id=175084&package_id=248179&release_id=545019 midiplayer.jar midiplayer_src.zip The jar file is executable and includes version 0.2 of the library. Here is a list of features the demo presents: * Configuration (audio output, format, latency, polyphony, interpolation mode) * Real time information for: Sequence, Soundbank, midi channels (MidiChannel), active voices (VoiceStatus). regards, Karl Helgason From javasound-dev at bome.com Fri Oct 12 02:06:21 2007 From: javasound-dev at bome.com (Florian Bomers) Date: Fri, 12 Oct 2007 11:06:21 +0200 Subject: [Audio-engine-dev] Gervill 0.2 In-Reply-To: <470EBA08.7080402@sun.com> References: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> <470EBA08.7080402@sun.com> Message-ID: <470F390D.4080702@bome.com> Hi Alex, good points. some notes: > To make new functionality available we should add new interface to > javax.sound.midi (Synthesizer2 or something like this) which will > extends standard Synthesizer so developers could use new functionality > via _standard_ interface. yes, I propose "SoftwareSynthesizer" as presented in my previous email in this thread. > As a 1st step I suggest to create such interface in com.sun.media.sound > package, and them move it to javax.sound.midi. I don't see an advantage for going in 2 steps, I'd prefer to put it in javax.sound.midi directly. > So we need to determine which methods should be included in the extended > interface. > As for me the main method is setMixer(javax.sound.sampled.Mixer) (I'm > not sure about SourceDataLine - other implementations can require > several lines). yes, see my proposal for that. > Ability to specify preferred AudioFormat, Latency & Polyphony is a good > feature, but most likely it should be optional. I'd suggest to add "properties" for advanced functionality, similar to AudioFormat's properties, except that they can be set after instanciation. > BTW do you think selecting from several resamplers is useful feature? yes, very useful. E.g. for realtime playback, a linear interpolator will be enough (for the sake of compatiblity, CPU usage, etc.). But for a software that renders MIDI files to disk (e.g. by using the setOutputStream() method of my proposal), quality matters more than realtime performance. > If somebody wants to capture synthesizer outputs, he will implement > simplest Mixer and set it as output mixer for the synthesizer. I think a way of directly grabbing the synth output by way of OutputStream (or AudioInputStream, maybe better) will be more versatile and more Java like. > 3. Why the synth support only single receiver? (look at > com.sun.media.sound.AbstractMidiDevice for example of multi-recevers > implementation). yes, should support multiple receivers. Florian > 4. WaveFloatFileReader: it seems to me that the class is not used anywhere. > > 5. LargeSoundbankReader: what use cases you see for it? (as far as I see > from the code, currently its feature is not used anywhere) > > Regards > Alex > > > Karl Helgason wrote: >> Hi, >> >> I have updated the midi synthesizer: >> http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 >> >> - Large format support. >> - Fix SoundFont modulator mapping. >> - Fix handling of unsigned 16 bit streams >> - Improved GUS patch support >> - Add support for ping-pong/bi-directional and reverse loops >> >> regards >> Karl Helgason >> _______________________________________________ >> audio-engine-dev mailing list >> audio-engine-dev at openjdk.java.net >> http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev > _______________________________________________ > audio-engine-dev mailing list > audio-engine-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev > > -- Florian Bomers Bome Software ------------------------------------------------------- Music Software, Development Tools: http://www.bome.com Java Sound extensions, plugins: http://www.tritonus.org The Java Sound Resources: http://www.jsresources.org ------------------------------------------------------- Please quote this email in your reply. Thanks! From Alexey.Menkov at Sun.COM Fri Oct 12 11:25:24 2007 From: Alexey.Menkov at Sun.COM (Alex Menkov) Date: Fri, 12 Oct 2007 11:25:24 -0700 Subject: [Audio-engine-dev] Gervill 0.2 In-Reply-To: <470F390D.4080702@bome.com> References: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> <470EBA08.7080402@sun.com> <470F390D.4080702@bome.com> Message-ID: <470FBC14.2090702@sun.com> Florian, see my notes inline Florian Bomers wrote: >> As a 1st step I suggest to create such interface in com.sun.media.sound >> package, and them move it to javax.sound.midi. > > I don't see an advantage for going in 2 steps, I'd prefer to put > it in javax.sound.midi directly. As you know I have to get CCC approval for API changes and getting of the approval may take a long time (and the approval is not required to make any changes in internal com.sun.media.sound package). So the interface may be created in com.sun.media.sound and when approved just be moved into javax.media.sound.midi But may be we don't need the intermediate stage due SoftSynthesizer project will survive as separate part before integration into JDK, so we will have enough time to get all approvals. >> So we need to determine which methods should be included in the extended >> interface. >> As for me the main method is setMixer(javax.sound.sampled.Mixer) (I'm >> not sure about SourceDataLine - other implementations can require >> several lines). > > yes, see my proposal for that. > >> Ability to specify preferred AudioFormat, Latency & Polyphony is a good >> feature, but most likely it should be optional. > > I'd suggest to add "properties" for advanced functionality, > similar to AudioFormat's properties, except that they can be set > after instanciation. I thought about something like this, the main difficulty I see is how to make restrictions (available values) for the specific properties like "resamplerType" (the interface will be public, so other interface implementations should have ability to add its own supported "resamplerType" values as well as its own properties). Do you have an idea how it can look? >> BTW do you think selecting from several resamplers is useful feature? > > yes, very useful. E.g. for realtime playback, a linear > interpolator will be enough (for the sake of compatiblity, CPU > usage, etc.). But for a software that renders MIDI files to disk > (e.g. by using the setOutputStream() method of my proposal), > quality matters more than realtime performance. Okay, I've got it. Just one note - if some resampler is not fast enough for realtime playback, it most likely produce bad results for software rendering (sequencer anyway works in realtime and will not wait while synthesizer complete processing of previous messages before sending new one). > >> If somebody wants to capture synthesizer outputs, he will implement >> simplest Mixer and set it as output mixer for the synthesizer. > > I think a way of directly grabbing the synth output by way of > OutputStream (or AudioInputStream, maybe better) will be more > versatile and more Java like. yes, agreed. With such approach we also haven't to implement fully spec-compliant Mixer. Regards Alex > >> 3. Why the synth support only single receiver? (look at >> com.sun.media.sound.AbstractMidiDevice for example of multi-recevers >> implementation). > > yes, should support multiple receivers. > > Florian > > >> 4. WaveFloatFileReader: it seems to me that the class is not used anywhere. >> >> 5. LargeSoundbankReader: what use cases you see for it? (as far as I see >> from the code, currently its feature is not used anywhere) >> >> Regards >> Alex >> >> >> Karl Helgason wrote: >>> Hi, >>> >>> I have updated the midi synthesizer: >>> http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500 >>> >>> - Large format support. >>> - Fix SoundFont modulator mapping. >>> - Fix handling of unsigned 16 bit streams >>> - Improved GUS patch support >>> - Add support for ping-pong/bi-directional and reverse loops >>> >>> regards >>> Karl Helgason >>> _______________________________________________ >>> audio-engine-dev mailing list >>> audio-engine-dev at openjdk.java.net >>> http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev >> _______________________________________________ >> audio-engine-dev mailing list >> audio-engine-dev at openjdk.java.net >> http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev >> >> > From kalli at midverk.is Sun Oct 14 17:28:13 2007 From: kalli at midverk.is (Karl Helgason) Date: Mon, 15 Oct 2007 00:28:13 +0000 Subject: [Audio-engine-dev] Gervill 0.2 In-Reply-To: <470FBC14.2090702@sun.com> References: <36EC82E93EB0AD40A4301DAD6543238677CA4B7706@mail.midverk.is> <470EBA08.7080402@sun.com> <470F390D.4080702@bome.com>,<470FBC14.2090702@sun.com> Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B770D@mail.midverk.is> Hi Alex, Here are my answer to your notes. 3. (multi-recevers implementation). You are correct about his one, I'll fix it. 4. WaveFloatFileReader is used to provide support for Wave file in FLOAT format. It was supposed to be register as AudioFileReader in /META-INF/services (Which i forgot to do in current release of Gervill). 5. LargeSoundbankReader is used to provide support for loading SoundBanks in large mode e.g. where sample data is not loaded into memory. I use it to load large piano soundfont (about 500mb) and Sonivox 250 Meg GM Wavetable soundfont (from http://www.sonivoxmi.com). You can see similar idea in javax.swing.JTree where they have the method: setLargeModel(boolean newValue). This is probably not the best way to do it. Ideally we would have getSoundbank(File file, boolean largeModel) In javax.sound.midi.MidiSystem. Having LargeModel support is also useful when we want to use big audio files as soundbank. For example If we have any pre-recorded audio file which we want to play along some midi sequence file. 2. I don't think providing simple Mixer is good enough. The reason for the Mixer interface was to provide support for reading audio from synthesizer in pull mode (where user pulls data from the synthesizer instead of it being pushed thru Mixer/SourceDataLine). In example below I suggest we add this method instead: public AudioInputStream openStream(AudioFormat targetFormat) Which is much simpler and more intuitive way than using Mixer interface. And it can also be writed directly to Wave file using: AudioSystem.write(AudioInputStream stream, AudioFileFormat.Type fileType, File out) 1. I propose a AudioSynthesizer interface. A synthesizer that push audio into SourceDataLine or provides audio where user pulls it from AudioInputStream. When the synthesizer is in push mode, a special audio feeder thread is created which push data into specified SourceDataLine or system default Mixer. The reason I choose to use SourceDataLine is because it includes information about audio format and buffer size to use. Therefore user don't have to specify format and latency (already provided with line.getFormat() and line.getBufferSize() methods.) No audio feeder thread is needed when synthesizer is in pull mode. This is suitable when rendering audio in non-real time mode. Sequencer object can't used with synthesizer in this mode. I also suggest to add "properties" for advanced functionality. Similar like we do in java.sql.Driver, where we have getPropertyInfo method which provide information about possible properties. With that method we can make restriction to properties like "resamplerType". Here is a brief example how the synthesizer is used in pull mode: ----------------------------------------------------------------- /* * Open synthesizer in pull mode in the format 96000hz 24 bit stereo * using Sinc interpolation for highest quality. * With 1024 in max polyphony. */ AudioFormat format = new AudioFormat(96000, 24, 2, true, false); AudioSynthesizer synthesizer = MidiSyster.getSynthesizer(); Map info = new HashMap(); info.put("resampletType", "sinc"); info.put("maxPolyphony", "1024"); AudioInputStream stream = synthesizer.openStream(format, info); /* * Play midi note 60 on channel 1 for 1 sec. */ Receiver recv = synthesize.getReceiver(); msg.setMessage(msg.NOTE_ON, 0, 60, 80); recv.send(msg, 0); msg.setMessage(msg.NOTE_ON, 0, 60, 80); recv.send(msg, 1000000); /* * Calculate how many bytes 10 seconds are. */ long len = (long)(format.getFrameSize() * format.getFrameRate() * 10); /* * Write 10 second into output file. */ stream = new AudioInputStream(stream, format, len); AudioSystem.write(stream, AudioFileFormat.Type.WAVE, new File("output.wav")); /* * Close all resources. */ recv.close(); stream.close(); synthesizer.close(); ------------------------------------------------------------ classe SynthesizerPropertyInfo { /* * Array of possible values for the field * SynthesizerPropertyInfo.value. * */ Object[] choices; /* * A brief description of the property, which may be null. * */ String description; /* * The name of the property. * */ String name; /* * Default value used by synthesizer if not specified. * */ Object value; /* * Obtains the class used in the value field. * */ Class valueClass; } interface AudioSynthesizer extends Synthesizer { /* * Gets information about the possible * properties for this synthesizer. * */ SynthesizerPropertyInfo[] getPropertyInfo(); /* * Open device in push mode (e.g. AudioSynthesize * is responsible to render and write it's data * to SourceDataLine). * If line is not specified then system default mixer and line * is used. * * Additional parameters can be set through info parameter. * To query what parameter are available use getPropertyInfo method. * */ public void open(SourceDataLine line, Map info); /* * Open device in push mode (e.g. AudioSynthesize * is responsible to render and write it's data * to SourceDataLine). * If line is not specified then system default mixer and line * is used. * */ public void open(SourceDataLine line); /* * Opens device in pull mode, e.g. audio data is rendered * user calls read in AudioInputStream. * This is suitable when user wants to render midi data * non-realtime. * * Additional parameters can be set through info parameter. * To query what parameter are available use getPropertyInfo method. * */ public AudioInputStream openStream(AudioFormat targetFormat, Map info); /* * Opens device in pull mode, e.g. audio data is rendered * user calls read in AudioInputStream. * This is suitable when user wants to render midi data * in non-real time. * */ public AudioInputStream openStream(AudioFormat targetFormat) ; } From kalli at midverk.is Mon Oct 15 22:43:25 2007 From: kalli at midverk.is (Karl Helgason) Date: Tue, 16 Oct 2007 05:43:25 +0000 Subject: [Audio-engine-dev] Gervill 0.3 In-Reply-To: <36EC82E93EB0AD40A4301DAD6543238677CA4B7711@mail.midverk.is> References: <36EC82E93EB0AD40A4301DAD6543238677CA4B7711@mail.midverk.is> Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B7712@mail.midverk.is> Hi, I have updated the midi synthesizer: http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500&release_id=547286 I included proposal for AudioSynthesizer interface. - SoftSynthesizer doesn't implement mixer interface anymore, instead the method "openStream" has been added. - New AudioSynthesizer interface. - SoftSynthesizer.getVoiceStatus() is now thread-safe. - SoftAudioFeeder renamed to SoftAudioPusher and made more generic. - Support for multi-receiver in SoftSynthesizer. - More cleanup in SoftSynthesizer. - Fixed loops in large soundbanks. - AudioFileSoundbankReader added to META-INF/services. regards Karl Helgason From kalli at midverk.is Thu Oct 18 14:24:54 2007 From: kalli at midverk.is (Karl Helgason) Date: Thu, 18 Oct 2007 21:24:54 +0000 Subject: [Audio-engine-dev] Benchmark for Gervill 0.3 Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B7713@mail.midverk.is> Hi, I have created benchmark program for Gervill. You can download it here: http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=248179&release_id=545019 benchmark.jar To run benchmark, type in: java -jar benchmark.jar To hear what benchmark is computing/synthesing, type: java -jar benchmark.jar benchmarksong.wav The SCORE is computed as (Rendered seconds per computed second). For example SCORE 4 means that you can render 4 sec on 1 sec. We will need at least 1 to get real time playback. I was able to get real time playback on computer with score as low as 1.77 although at 70% CPU usages at default settings, but at 35% CPU with the parameters 22050,16 bit, 1ch, max polyphony=16. What can be seen from the report below, is that: * Java 1.6 is about 1.5x times faster than Java 1.5. * Cubic interpolation is almost as fast as linear interpolation. * Sinc interpolation is about 3.5x times slower than linear. * Mono is about 1.3 times faster then stereo. * The samplerate 22050 Hz is about 1.5 times faster than 44100 Hz. Please submit your SCORE if you run the benchmark :) Here are result of benchmarks I have done on several computers. Windows Vista 32-bit Intel(R) Core(TM)2 CPU 6600 @2.40GHz 2.40 GHz, 2048 MB SCORE: 16.28 - Java 1.6.0-b105 SCORE: 10.48 - Java 1.5.0_05-b05 Ubuntu Linux, 2.6.20-16-generic Intel(R) Xeon(R) CPU 5140 @ 2.33GHz 2.33GHz, 512 MB SCORE: 15.12 - Java 1.6.0-b105 SCORE: 9.60 - Java 1.5.0_11-b03 Windows Vista 32-bit Intel(R) Core(TM)2 CPU 4300 @1.80GHz 2.40 GHz, 2030 MB SCORE: 11.95 - Java 1.6.0_03-b05 SCORE: 7.77 - Java 1.5.0_12-b04 Mac OS X, 10.4.9, i386, 32-bit Intel Core Duo 1.66 GHz, 1.245 GB SCORE: 6.54 - Java 1.5.0_07-164 Windows Vista 32-bit Intel(R) Pentium(R) 4 CPU 2.80 GHz 2.79 GHz, 1024 MB SCORE: 8.74 - Java 1.6.0_02-b06 Windows XP 32-bit (laptop) Intel(R) Pentium(R) M 1600MHz 1.59 GHz, 1024 MB SCORE: 7.83 - Java 1.6.0_02-b06 SCORE: 5.02 - Java 1.5.0_08-b03 Windows XP 32-bit (laptop) Intel(R) Pentium(R) III Mobile CPU 1133MHz 1.13 GHz, 1024 MB SCORE: 4.28 - Java 1.6.0_03-b05 Windows XP 32-bit (laptop) Intel Celeron processor 634 MHz, 184 MB SCORE: 1.77 - Java 1.6.0_02-b06 Here is a list how different settings affects speed: (higher number means higher speed, less CPU usages) 11025 Hz 16 bit 2 ch: x1.9 22050 Hz 16 bit 2 ch: x1.5 44100 Hz 16 bit 2 ch: x1.0 88200 Hz 16 bit 2 ch: x0.6 44100 Hz 8 bit 2 ch: x1.0 44100 Hz 16 bit 2 ch: x1.0 44100 Hz 24 bit 2 ch: x1.0 44100 Hz 32 bit 2 ch: x1.0 44100 Hz 16 bit 1 ch: x1.3 44100 Hz 16 bit 2 ch: x1.0 control rate = 50 Hz: x1.2 control rate = 100 Hz: x1.1 control rate = 147 Hz: x1.0 control rate = 200 Hz: x0.9 control rate = 250 Hz: x0.9 interpolation = point: x1.1 interpolation = linear: x1.0 interpolation = cubic: x1.0 interpolation = lanczos: x0.7 interpolation = sinc: x0.3 max polyphony = 4: x2.5 max polyphony = 8: x2.0 max polyphony = 16: x1.6 max polyphony = 32: x1.3 max polyphony = 64: x1.0 max polyphony = 128: x0.8 From ngompa13 at gmail.com Sun Oct 28 14:51:00 2007 From: ngompa13 at gmail.com (King InuYasha) Date: Sun, 28 Oct 2007 16:51:00 -0500 Subject: [Audio-engine-dev] Suggestions to completely Free the JavaSound implementation In-Reply-To: <470DF07B.9080303@bome.com> References: <8278b1b0710031735n1083f9aavd96aa53690eb6b48@mail.gmail.com> <8278b1b0710041703k635b2c28o9156b39509da1368@mail.gmail.com> <470DF07B.9080303@bome.com> Message-ID: <8278b1b0710281451l373b4602wad2f0f496742634d@mail.gmail.com> Well, PulseAudio supports OSS, ALSA, Win32 DirectSound, and JACK. AFAIK, Solaris uses OSS. Linux can use OSS or ALSA. Windows has only the WMM DirectSound subsystem. However, PulseAudio also completely replaces ESD. aRts is on the way to the dumpster, but it can go through PulseAudio through ESD compatibility. PortAudio is supposed to eventually have PulseAudio support. GStreamer has native support for PulseAudio, and GStreamer works on Windows and Linux. GStreamer supports all the sources, video and audio, though currently GStreamer accesses video through VfW on Windows, hopefully that will change. Initially, I would like to see two of them supported, PulseAudio and GStreamer. GStreamer works on all platforms, and if someone ever wanted to do the work, PulseAudio COULD be made to be supported on Mac OS X by adding in a CoreAudio module. Your all-in-one solution would be GStreamer, since it supports audio, video, codecs, and all the major mixing systems. On 10/11/07, Florian Bomers wrote: > > I agree, it's not of benefit to use aggregated audio engines, or > underlying porting layers, because Java Sound /is/ already a > porting layer. > > Rather, I'd use > - a software synth that can be freely assigned to a > SourceDataLine (see my other post) > > - plus any number of different mixers giving access to the > different native audio architectures, e.g. mixers for > - ALSA > - Jack > - Windows DirectSound > - ASIO > - MacOS CoreAudio > - OSS > - Solaris Mixer > > I also propose a software mixing mixer that mixes all its > SourceDataLines together and writes the sum to a selectable > Mixer. This mixer can then be the default, so that applets, > games, and the like can just play without worrying about mixing. > > And last but not least, since there seems to be demand, we can > easily add seperate mixers for > - ESD > - PortAudio > - PulseAudio (haven't heard of it before) > - [k]artsd > - gstreamer > - and mixers for the hundreds of other audio porting layers and > audio daemons. > > The openJDK can easily integrate all the bindings and they'll > just work if the underlying architecture is available/installed. > > Later, > Florian > > > On 10/5/2007 7:50 AM, Peter Salomonsen wrote: > > Hi, > > > > I consider audio output mixing more like a job for the Javasound Mixer > > implementation than a software synthesizer impl. There are many > > implementations for javasound mixers. For example - I've been working on > a > > Javasound mixer implementation supporting jack (jjack.berlios.de). A > similar > > implementation supporting the Audio interfaces you suggest should be > > possible (maybe they even exist already) > > > > regards, > > > > Peter > > > > On 10/5/07, King InuYasha wrote: > >> Yes, but does Gervill support mixing the audio output? Gervill seems > like > >> a great choice, but being able to mix into PulseAudio would be > important, > >> and afaik, the site does not say anything about its ability to work > through > >> PulseAudio. Noting that I did not mention ESD, ESD has been out of > >> development for a few years now, and PulseAudio being a better > replacement > >> for it, Fedora is switching and GNOME is considering getting rid of the > ESD > >> requirement for GNOME, and perhaps they will put PulseAudio as the > >> requirement instead... > >> > >> On 10/4/07, Peter Salomonsen wrote: > >>> Hi, > >>> > >>> > >>> On 10/4/07, King InuYasha < ngompa13 at gmail.com> wrote: > >>>> As for a software synthesizer, I think that TiMidity++ ( > >>>> http://timidity.sourceforge.net/) would be the best choice for the > >>>> job. > >>>> > >>>> > >>> Gervill does the job perfect. It's also more interesting I think, > since > >>> it's pure java. The performance of Gervill is great - I'm already > using it > >>> for music production. Low latency, great soundbank support - great > sound. > >>> > >>> It's available in Frinika which is a pure java sequencer/studio/synth > >>> software. I vote for Gervill to replace the current javasound > synthesizer. > >>> > >>> regards, > >>> > >>> Peter Salomonsen > >>> > >> > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > audio-engine-dev mailing list > > audio-engine-dev at openjdk.java.net > > http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev > > -- > Florian Bomers > Bome Software > > ------------------------------------------------------- > Music Software, Development Tools: http://www.bome.com > Java Sound extensions, plugins: http://www.tritonus.org > The Java Sound Resources: http://www.jsresources.org > ------------------------------------------------------- > Please quote this email in your reply. Thanks! > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/audio-engine-dev/attachments/20071028/f2a756c7/attachment.html From kalli at midverk.is Sun Oct 28 23:47:13 2007 From: kalli at midverk.is (Karl Helgason) Date: Mon, 29 Oct 2007 06:47:13 +0000 Subject: [Audio-engine-dev] Gervill 0.4 - emergency soundbank included Message-ID: <36EC82E93EB0AD40A4301DAD6543238677CA4B7716@mail.midverk.is> Hi, I have updated the midi synthesizer, it is now up to 50% faster and includes emergency soundbank. The emergency soundbank is generated when no default soundbank can be found. Also included is "javax.sound.sampled.spi.AudioFileReader" which support reading MIDI files as if they where audio files. Audio player like http://www.javazoom.net/jlgui/jlgui.html can now play back midi files using this synthesizer. The synthesizer can be downloaded here: http://sourceforge.net/project/showfiles.php?group_id=175084&package_id=246500&release_id=550308 New features: - MIDI files can be opened as audio streams thru javax.sound.sampled.spi.AudioFileReader. - Emergency SoundBank included. - Optimizations, rendering is up to 50 percent faster. - Loading soundbank in large mode supported using MidiSystem.getSoundBank(URL) Where url is on the form: file:/C:/soundbank.sf2?largemode=true - Reverb,Chorus,AGC can be turned on/off. Bug fixes: - Fixed ArrayOutOfBoundsException in SoftAbstractResmpler. - Fixed NullPointerException in SoundFont.save(File). Saving global zone for layers resulted in NullPointerException. - Fixed PATSoundbankReader.getInputStream so it doesn't throw InvalidFormatException. This prevented use of MidiSystem.getSoundBank(InputStream). - Fix: Delay wasn't implemented in AHDSR envelopes. regards Karl Helgason _______________________________________________ audio-engine-dev mailing list audio-engine-dev at openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.488 / Virus Database: 269.14.11/1071 - Release Date: 15.10.2007 06:48