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 / fconvolver

Jconvolver is a command line JACK application using the zita-convolver library. Complex convolution matrices can be defined in a configuration file. The same configuration file can also be used by fconvolver which performs the same operation on files rather than real-time.

jmatconvol / fmatconvol

Jmatconvol is a command line JACK application similar to jconvolver, but optimised for dense convolution matrices with relatively short impulse responses, e.g. for processing microphone array signals. Fmatconvol provides the same for processing files rather than real-time signals.

Main features:

  • Any dense matrix of convolutions of up to up 64 inputs to 64 outputs, as long as your CPU(s) can handle it.
  • Zero-delay processing, the partition size is Jack's period size.
  • The entire matrix can be defined by a single audio file.
  • Processing can be multithreaded to reduce the processing time of the Jack client.


Libzita-convolver is a real-time C++ convolution library using FFT based convolution with non-uniform partition sizes: small ones at the start of the impulse response and building up to the most efficient size further on. It can perform zero-delay processing of very long IRs (e.g. reverbs) with moderate CPU load. The calculations are distributed over up to five threads, one for each partition size, running at priorities equal to or just below that of the calling thread. This ensures that even when multiple instances are active at the same time, CPU resources will be allocated in the optimum way.

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.


Libzita-alsa-pcmi is a C++ library for using ALSA audio devices with minimal latency and using ALSA's memory-mapped mode (as used by Jack). It hides most of the complexity of configuring and using ALSA devices in this way.

Input and output audio streams are converted to / from 32-bit floating point format, regardless of the hardware sample format. By calling the read and write functions from a real-time thread, it is easy to provide a callback interface, and to write applications that work with both ALSA and Jack using the same processing code. See jaaa or japa for examples.



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:

  • Jack client with graphical user interface.
  • 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.

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, up to third order.

Main features:

  • Jack client with graphical user interface.
  • 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.


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.


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.