Linux Audio projects at Kokkini Zita

This site in always under construction. We do apologize for the dust.



The Aeolus page
Aeolus is a high quality pipe organ emulator using additive synthesis.


Command line Jack clients to transmit full quality multichannel audio over a local IP network, with adaptive resampling by the receiver(s). Zita-njbridge can be used for a one-to-one connection (using UDP) or in a one-to-many system (using multicast). Sender and receiver(s) can each have their own sample rate and period size, and no word clock sync between them is assumed. Up 64 channels can be transmitted, receivers can select any combination of these. On a lightly loaded or dedicated network zita-njbridge can provide low latency (same as for an analog connection). Additional buffering can be specified in case there is significant network delay jitter. IPv6 is fully supported.


Zita-ajbridge provides two applications, zita-a2j and zita-j2a. They allow to use an ALSA device as a Jack client, to provide additional capture (a2j) or playback (j2a) channels. Functionally these are equivalent to the alsa_in and alsa_out clients that come with Jack, but they provide much better audio quality. The resampling ratio will typically be stable within 1 PPM and change only very smoothly. Delay will be stable as well even under worst case conditions, e.g. the Jack client running near the end of the cycle


Ebumeter provides real-time level metering according to the EBU R-128 recommendation. The current release implements all features required by the EBU document except the oversampled peak level monitoring. This will be added in a future release. A separate command-line utility to measure audio files is provided as well.


Zita-dpl1 is a look-ahead digital peak level limiter using some special algorithms to allow fast response without excessive LF distortion.


Zita-at1 is a 'autotuner' Jack application, normally used to correct the pitch of vocal tracks that are out of tune.


Zita-bls1 is a digital implementation of the 'Blumlein Shuffler', used to convert binaural signals into a form suitable for reproduction on a conventional stereo speaker pair.


Zita-rev1 is a reworked version of the reverb originally developed for Aeolus. The Jack application can be used in either stereo or ambisonic mode.


Zita-mu1 is a simple Jack app used to organise stereo monitoring. Originally written for use with Ardour2, but still useful with Ardour3 (or other DAWs) as it provides some extra functions.


Jconvolver is a Convolution Engine for JACK, based on FFT convolution and using non-uniform partition sizes: small ones at the start of the IR and building up to the most efficient size further on. It can perform zero-delay processing with moderate CPU load. Jconvolver uses the convolution engine designed for Aella, a convolution application for reverberation processing (to be announced later). This distributes the calculation over up to five threads, one for each partition size, running at priorities just below the the one of JACK's processing thread. This engine is a separate library that will be documented as soon as I can find the time.

Main features:

  • Any matrix of convolutions between up to up 64 inputs and 64 outputs, as long as your CPU(s) can handle it.
  • Allows trading off CPU load to processing delay, and remains efficient even when configured for zero delay.
  • Sparse and diagonal matrices are handled as efficiently as dense ones. No CPU cycles or memory resources are wasted on empty cells in the matrix, nor on empty partitions if IRs are of different length.



Libzita-resampler is a C++ library for resampling audio signals. It is designed to be used within a real-time processing context, to be fast, and to provide high-quality sample rate conversion.

The library operates on signals represented in single-precision floating point format. For multichannel operation both the input and output signals are assumed to be stored as interleaved samples.

The API allows a trade-off between quality and CPU load. For the latter a range of approximately 1:6 is available. Even at the highest quality setting libzita-resampler will be faster than most similar libraries, e.g. libsamplerate.

The source distribution includes the resample application. Input format is any file readable by libsndfile, output is either WAV (WAVEX for more than 2 channels) or CAF. Apart from resampling you can change the sample format to 16-bit, 24-bit or float, and for 16-bit output, add dithering. Available dithering types are rectangular, triangular, and Lipschitz' optimised error feedback filter. Some examples of dithering can be seen here.

TetraProc / TetraCal


First presented at the 2007 Linux Audio Conference.

The paper and pressentation can be found here.

TetraProc converts the A-format signals from a tetrahedral Ambisonic microphone into B-format signals ready for recording. Main features:

  • A-B conversion using a classic scalar matrix and minimum phase filters, or
  • A-B conversion using a 4 by 4 convolution matrix using measured or computed impulse responses, or a combination of both.
  • Individual microphone calibration facilities.
  • 24 dB/oct higpass filters.
  • Metering, monitoring and test facilities.
  • Virtual stereo mic for stereo monitoring or recording.
  • Unlimited number of stored configurations.
  • Jack client with graphical user interface.

TetraCal is the microphone calibration application for TetraProc. Given a number of impulse response measurements of a tetrahedral microphome (captured using Aliki, see below) it computes the matching configuration file for TetraProc. Main features:

  • Automatic determination of gain and directivity errors of the A-format microphones.
  • Automatic computation of an A-B matrix compensating for those errors.
  • Frequency and phase response display of all A and B format signals.
  • Interactive adjustment of pre- and post matrix equalisers.

Future versions of TetraCal will also exploit the convolution matrix implemented in TetraProc.

TetraProc is available now, please contact me by e-mail. Release of TetraCal awaits some required changes in Aliki, and completion of the manual that explains the complete calibration procedure.

Calibration service for Core Sound's TetraMic

As one result of a NDA signed with Core Sound, I can offer a free calibration service for anyone using their TetraMic on a Linux system. Given the serial number, I will provide a TetraProc configuration based on the impulse response measurements performed by Core Sound on your microphone. Currently this configuration does not use the convolution capabilities of TetraProc, but the results are excellent even without that. The combination of a very well designed microphone with IR-based calibration provides an affordable Ambisonic recording system of really suberb quality.


Manual (PDF) The Aliki page
Aliki is an integrated system for Impulse Response measurements, using the logaritmic sweep method developed by Prof. Angelo Farina. Release 0.0.3-beta is available on the downloads page. It's still very incomplete but it has been used for real measurement work.


Manual (PDF) Screenshots
An Ambisonic decoder for first and second order. Release 0.4.2 is available on the downloads page. Main features:
  • 1st, 2nd and 3rd order 2-D or 3-D decoding.
  • Up to 36 speakers (could be extended).
  • Optional dual frequency band decoding.
  • Optional speaker delay and gain compensation.
  • Optional Near-Field effect compensation.
  • Built-in test and Mute/Solo for each speaker.
  • Unlimited number of presets.
  • Jack client with graphical user interface.


Jaaa (JACK and ALSA Audio Analyser, is an audio signal generator and spectrum analyser designed to make accurate measurements.


Japa (JACK and ALSA Perceptual Analyser), is a 'perceptual' or 'psychoacoustic' audio spectrum analyser.
In contrast to JAAA, this is more an acoustical or musical tool than a purely technical one. Possible uses include spectrum monitoring while mixing or mastering, evaluation of ambient noise, and (using pink noise), equalisation of PA systems.


Jnoisemeter is a small app designed to measure audio test signals and in particular noise signals. It includes all common filters and detectors. It can also be used just as a filter.

Avaiable filters:

  • Flat - no filtering.
  • 20 kHz. Lowpass with a noise bandwidth of 20 kHz.
  • A and C weighting filters.
  • ITU-R468.
  • ITU-R468, Dolby variant.

Avaiable Detectors:

  • RMS. Root-mean-square (i.e. 'power') meter. The time constant is 125 ms as per IEC standard, or 1 second in slow mode.
  • Average. This measures the average of the absolute value. The one used in jnoisemeter has actually the exact ballistics of a VU meter. A 10 times slower version is also provided.
  • ITU-R468. This is a 'pseudo-peak' detector designed specifically to measure noise and S/N ratios. For a peak meter it is quite slow, as it should be for noise measurements, but at the same time it is much more sensitive to short impulsive noise than its speed would suggest.


A command line JACK app generating accurate white and pink noise with Gaussian amplitude distribution.


This is a small command line JACK app you can use to measure the latency of your sound card. It uses a phase measurements on a set of tones to measure the delay from the output to the input. Accuracy is about 1/1000 of a sample.

HOA NF filters

A set of IIR filters combining forward and inverse Near Field correction for Higher Order Ambisonics, up to 4th order. A 'textbook' implementation of such filters will not work when using single precision floating point. There is a simple solution for this explained in this note which also comes with the sources.


Yet Another Scrolling Scope. Main features: up to 32 channels, variable scrolling speed, automatic gain control, and very light on CPU usage. Beta release available.

LADSPA plugins

The LADSPA page
Various sets of plugins, both synth modules and audio processing.