Java Sound Resources: Applications: Time Turner Radio

Time Turner Radio

From the session Time Turner Java Sound of the Java One 2005.

Abstract of the session

In this BOF session, Java Sound expert Florian Bomers presents new coding techniques and general tips and tricks for development and deployment of Java Sound applications. He also covers advanced optimization techniques, including new features in J2SE 5. The session closes with a Q&A session and a general Java Sound discussion.

The session is organized around an example application developed for this year's JavaOne conference: Time Turner Java Sound is a radio software that has a time travel function: At any moment, you can go back a couple of minutes and re-listen to that portion. The time turner is especially useful with the recording button, which records to a file: Never again miss the beginning of a song! The software plays Internet radio or external radio via Line In. Recordings are made in MP3 or ogg/vorbis formats.

After a short demonstration of the application, the presenter introduces different code examples. He addresses issues like buffering (real-time audio and reducing delays), using the MP3 and ogg/vorbis codec, and choosing a recording source and mixer levels (Direct Audio Devices, Ports). The code examples are analyzed and best practices are shown. Then, some performance tips are presented (memory usage optimization, garbage collector know how, and threading). The presentation finishes with deployment optimization techniques (applet/webstart, installation of codecs, and sound properties). This session is for programmers with intermediate to advanced skills. Knowledge of Java Sound is useful but not a requirement.

Download

9159_TimeTurner.pdf (248 kB)Presentation slides (right-click and select "save as..." to save it to disk)
radio-src-<version>.zipComplete source code with some instructions
radio-<version>.jarCompiled classes. You still need the mp3 and ogg plugins from Tritonus' plugin page.
CVSBrowse the source code online in the CVS repository.