Minim

Minim is an audio library that uses the JavaSound API, a bit of Tritonus, and Javazoom’s MP3SPI to provide an easy to use audio library for people developing in the Processing environment. The philosophy behind the API is to make integrating audio into your sketches as simple as possible while still providing a reasonable amount of flexibility for more advanced users. There are no callbacks and you do not ever need to directly manipulate sample arrays, all of the dirty work is handled for you. The download comes in two flavors: (1) just the jar files needed to use Minim and (2) a full distribution that includes the javadocs, examples, and source code. Minim is licensed under the GNU Library General Public License, a copy of which is included with both distributions. Users of Minim 1.0 should check the blog post about this release for a summary of what’s changed.

Download: Minim 1.1 full distribution | Minim 1.1 library only

To install either distribution, unzip the file to the directory that you have Processing installed in. The ZIPs contain a directory structure that will place all the files in the proper subdirectories.

Here are some of the features of Minim:

  • AudioPlayer: Mono and Stereo playback of WAV, AIFF, AU, SND, and MP3 files.
  • AudioRecorder: Mono and Stereo audio recording either buffered or direct to disk.
  • AudioInput: Mono and Stereo input monitoring.
  • AudioOutput: Mono and Stereo sound synthesis.
  • AudioSignal: A simple interface for writing your own sound synthesis classes.
  • Comes with all the standard waveforms, a pink noise generator and a white noise generator. Additionally, you can extend the Oscillator class for easy implementation of your own periodic waveform.
  • AudioEffect: A simple interface for writing your own audio effects.
  • Comes with low pass, high pass, band pass, and notch filters. Additionally, you can extend the IIRFilter class for easy implementation of your own IIR filters.
  • Easy to attach signals and effects to AudioInputs and AudioOutputs. All the mixing and processing is taken care of for you.
  • Provides an FFT class for doing spectrum analysis.
  • Provides a BeatDetect class for doing beat detection.

Known issues:

  • MP3 files will not play in the browser. Fixed in 1.1
  • Oscillators and IIRFilters will not accept getFormat().getSampleRate() for the sampleRate argument (just cast it to an int for now). Fixed in 1.1
  • Untested on Linux.

Planned Features:

  • More AudioEffects like reverb, delay, phasing, ring modulation, and bit crushing.
  • Better filters using frequency domain filtering techniques.

To start using Minim, you can take a look at the Quickstart Guide or dive right into the Javadocs. I’ve begun work on a manual that bridges the gap between the Quickstart Guide and the Javadocs. If you have any questions, or find any bugs, you can contact me through my website, or through the Processing forum.

Enjoy!