Providing a Level Meter

Many audio applications also provide a graphical " level meter,” which is an on-screen display of the loudness or softness of certain frequencies within the audio. In QuickTime Player, this is shown as a set of bars on the right side of the control bar, as seen in Figure 7-2.

Audio level meter in QuickTime Player

Figure 7-2. Audio level meter in QuickTime Player

The intensity of lower frequencies, like bass, is shown in the leftmost columns, while higher frequencies are to the right.

How do I do that?

AudioMediaHandler provides two key methods: setSoundEqualizerBands() to set up monitoring and getSoundLevelMeterLevels() to actually get the data. setSoundEqualizerBands( ) indicates which frequencies you want to monitor for your graphics display. These are passed in the form of a MediaEqSpectrumBands object, which is built up by constructing it with the number of bands you intend to monitor, then repeatedly calling setFrequency() to indicate which frequency a given band will monitor.

Note

Unfortunately, most of the level-metering methods are officially undocumented.

As the audio plays, you can repeatedly call getSoundLevelMeterLevels( ), which returns an array of ints representing the measured levels.

Example 7-4 creates a basic audio level meter in an AWT Canvas.

Note

Run this example with ant run-ch07-levelmeterplayer.

Example 7-4. Providing an audio level meter

package com.oreilly.qtjnotebook.ch07; ...

Get QuickTime for Java: A Developer's Notebook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.