Interesting, Off the Beaten Track Information

Covers digital audio and image processing, useful classes. A bit math-heavy and basic in places.


This books is not going to appeal to a large portion of existing or budding Java developers, primarily because the topic matter is not central to most of today’s Java projects. Still, those involved in audio or imaging applications may find a few nuggets in this book that makes it all worthwhile. Readers who simply like reading about Java can find new patterns and explore an area that touches us directly or indirectly in one form or another. The classes presented in these pages will especially appeal to readers who need to manipulate images, which represents the widest group of Java developers who may want to pick this up.

The early chapters, Chapter 1 "Java and its Promise" and Chapter 2 "Java Programming: The Basics" lay some ground work that will primarily appeal to new Java developers. For experienced developers, there’s little new information here, but the reader may be coming from the realm of digital signal processing without any Java experience and, for those readers, these chapters will tend to be useful. Chapter 3 "The Graphical User Interface" starts digging into the Java AWT classes and walks through the major elements very effectively. Chapter 4 starts building code, starting with a set of utilities for manipulating files and streaming data.

Chapter 5 "Digital Audio Processing" develops a number of classes that dig into the Sun AU format files supported by basic Java code. This chapter ventures into undocumented Sun classes and provides an implementation of file format-specific processing for the AU files you can play. Chapter 6 "Digital Audio Transform Recipes" develops code for applying the Discrete Fourier Transform and the Fast Fourier Transform to audio files.

Chapters 7 to 9 cover imaging. The first of these provides a foundation for handling images in Java - the Observable/Observer model in particular - and develops a very nice ImagePlane class which lets you manipulate off screen images in novel ways. Chapter 8 covers images and image formats, including various basic file formats. Finally, Chapter 9 explores actual image processing, including Fourier Transforms, along with other more conventional transformations like scaling, rotation and translations.

If you’re particularly interested in using Java to manipulate audio or imaging data, this books is for you. The work is largely based on a set of lectures and reads as a fairly casual and practical progression of ideas. This is not the slick glossy work of a publishing house capitalizing on the latest wave, but rather a pragmatic look at the basic programming tools required to apply digital signal processing on single dimensional (streaming audio) or two dimensional (images) object. There is enough good material here to keep most Java readers interested, but this topic matter may not appeal to everybody.