These are free tools made by Naoki Shibata.

- Sep 22, 2013 : SLEEF is now used on a Blue Gene/Q supercomputer at Argonne National Laboratory. Patches for llvm are available.
- May 18, 2013 : SLEEF 2.80 is released
- Aug 27, 2012 : Added links to GPUMarkerTracker
- Mar 26, 2012 : SLEEF is adopted in MenuetOS.
- Jul 1, 2010 : Some part of SLEEF algorithm is adopted in Go math library.

This program converts the sampling rate of a PCM wav file. 44.1kHz sampling rate is used for a CD, and 48kHz is used for a DVD. However, converting between these frequencies is hard, because the ratio beteen these two frequencies is 147:160, which are not small numbers. Accordingly, we need a very long FIR filter in order not to degrade the sound quality during conversion. This program utilizes FFTs to apply the FIR filter in order to reduce the amount of computation.

This program also has a function to apply dither to extend the perceived dynamic range. It is optimized for human's ear characteristics.

You can download the program here. Some experimental results are shown here.

An accurate equalizer for winamp 2(yes, it's old). It uses FIR filter with 16383 taps, which is substantially longer than other equalizers. Although it has many knobs to change frequency characteristics, it does not degrade audio quality.

You can download the program here. Here is an article explaining how to compensate for suboptimal frequency response of your speakers using an EQ.

Now, Elio Blanca is maintaining his versions of mp3guessenc at mp3guessenc.sourceforge.net. This is a utility to guess which encoder is used to encode a given mp3 file(or another kind of file).

Probably you can find what you are looking for in this directory.

Note: The mpg123 plugin does not improve mp3 decoding quality. It used to be effective because of a bug in the mp3 decoder in very old versions of winamp. There is no such bug anymore.

Most of today's processors have capabilities to execute SIMD instructions, and we can expect significant speed-ups in various kinds of computation if these instructions are properly used. But, this is technically hard because many popular programming techniques like table look-ups, conditional branches, scattering/gathering operations can easily slow down the computation. With this library, the trigonometric functions(sin, cos, tan, sincos), inverse trigonometric functions(asin, acos, atan, atan2), exponential and logarithmic functions(exp, log, pow, exp2, exp10, expm1, log10, log1p), hyperbolic/inverse hyperbolic functions(sinh, cosh, tanh, asinh, acosh, atanh), and some other functions(cbrt, ilogb, ldexp) can be evaluated in both double precision and single precision without table look-ups, scattering from, or gathering into SIMD registers, or conditional branches using SSE2, AVX, AVX2, FMA4, or ARM NEON instruction sets.

You can download the library here.

You can see the javadoc here.

You can read the paper about the previous version of the library here. Here you can see presentation slides.

Many of the techniques used in SLEEF 2 are described in Elementary Functions: Algorithms And Implementation written by Jean-Michel Muller.

NSFFT is yet another FFT library for performing 1-dimensional discrete Fourier transforms. NSFFT is a simple, small and portable library, and it is efficient since it can utilize SIMD instruction sets (SSE, SSE2, AVX for x86, NEON for ARM, and AltiVec for PowerPC) in modern processors. It performs multiple transforms simultaneously, and thus it is especially suitable for digital signal processing. It does not need so much computation to make a good execution plan. This library is in public domain, so that you can incorporate this library into your product without any obligation.

You can download the library here. You can read the reference manual here.

Motion blur can be a problem in detecting markers when the camera or the object is moving. BAUM is a software library for drawing and recognizing circular barcodes that are designed to be relatively tolerant of linear motion blur. With this library, those circular barcodes can be recognized from video in real time from Full HD videos utilizing a desktop GPU. Read more

GPUMarkerTracker is a tracking software library for AR (augmented reality) markers. It utilizes GPGPU for fast and accurate tracking. It is intended for detecting markers from an HD resolution video so that small markers placed far from the camera can be detected. Read more

Connected Component Labeling(CCL) is a well known technique for assigning a unique label to each of connected components in a given binary image. In this article, I explain a CCL algorithm suitable for GPGPU execution. Here.

Bad freqency response could be the reason that your speaker is sounding badly. In this article, I explain how to compensate for suboptimal frequency response, using the Super EQ plugin. Here.

Contact :