Tulivu in its origin Swahili meaning is a synonym for peace and silence and is often used as an African forename.
Active Vibration Control (AVC) / Active Noise Control (ANC)
As a tool for research and development on Activ Noise Control and Active Vibration Control Tulivu helps to get new impression.
Its open source code stands under warranty of the GNU Licence GPL 2. Therefor Tulivu is an easy to edit script solving several configuration the way you want to. You can script Tulivu for testing different Algorithms or you can diversify experimental settings quickly.
Tulivu bands other programs and libraries together and creates a good working tool out of them.
Installation
To install Tulivu please download the ZIP-Files or TAR-Files and extract them in a directory of your choice. Don't forget to verify the system requirements. Tulivu is now ready to run.
System Requirements
Tulivu is designed for i386 architecture and Debian distribution. Otherwise please check the program paths. When using the application Tulivu interconnects with other programs and libraries. Please check the settings on your machine.
Needed Program Libaries
Xorg (xlib, tested with version 1:7.1.0-19)
XForms (libforms, tested with version 1.0-7)
GSL (libgsl, tested with version 1.8-2)
gnuplot (tested with version 4.0.0-5)
awk (tested with version 1:3.1.5.df)
convert (imagemagick, tested with version 7:6.2.4.5)
echo (coreutils, tested with version 5.97-5.3)
mv (coreutils, tested with version 5.97-5.3)
rm (coreutils, tested with version 5.97-5.3)
sox (tested with version 12.17.9-1)
text2wave (festival, tested with version 1.4.3-17.2)
jpeg2yuv (mjpegtools, tested with version 1:1.8.0-0.4)
mpeg2enc (mjpegtools, tested witht version 1:1.8.0-0.4)
yuv2lav (mjpegtools, tested with version 1:1.8.0-0.4)
mpg123 (tested with version 0.61-5)
lame (tested with version 3.97-0.0)
mplex (mjpegtools, tested with version 1:1.8.0-0.4)
lavaddwav (mjpegtools, tested with version 1:1.8.0-0.4)
Recommended Browser
To run Tulivu in its whole complexity it is recommended to have one of the following browsers installed.
konqueror (tested with version 4:3.5.5a.d)
iceweasel (tested with version 2.0.0.12-0)
epiphany (tested with version 2.14.3-7)
Compiler
When compiling Tulivu's source code please use the FreePascal compiler (2.0.4-1).
Starting the Program and Preparation
You will start Tulivu at prompt with the following line ./tulivu example.config. Your favorite output mode can be changed in the configuration file.
Configuration File
Any settings are saved in a text file and can changed easily. As an Example check this configuration:
#####################################
# #
# Configuration File for Tulivu #
# #
#####################################
#
# Version 1.0.0 (2008/02/25 11:21:17)
#
#
#
# settings saved at 25.02.2008 11:21:25
#
SampleRate = 22000 # [Hz]
Frequency = 200.0000000000 # [Hz]
FrequencyNoise = 0.0000000000 # [%], Noise of Frequency, Rel. Standard Deviation
FrequencySweep = 0.0000000000 # [Hz/Frame], Frequency Step per Frame
Amplitude = 69.9999988100 # [%]
AmplitudeNoise = 0.0000000000 # [%], Noise of Amplitude, Rel. Standard Deviation
AmplitudeOffset = 0.0000000000 # [%]
Term = 10.0000000000 # [s]
StartAdaption = 50.0000000000 # [%], Rel., Adaption Begin
DisturbPeriod = 2.0000000000 # [s], Period of Disturb Signal
x-Delay = 0.0044999998 # [s], Delay by ADC on x(n)
y-Delay = 0.0138636362 # [s], Delay by DAC on y(n)
e-Delay = 0.0051818183 # [s], Delay by ADC on e(n)
d-Delay = 0.0008636363 # [s], Delay by Geometrical Arrangement
Mu = 0.0099999998 # Step size
Leaky = 1.0000000000 # Leaky Factor
Title = Tulivu - AVC Simulation # Simulation Title
InputFile = avc-sim.wav # Input File Name
Speech = This is a simulation for an active vibration control. This is a simulation for an active vibration control.
Signal = 0 # 0:Sinus, 1:Rectangle, 2:Triangle, 3:Dirac Peak, 4:White Noise, 5:Input File, 6:Speech
Algorithm = 0 # 0: LMS, 1: Real World Genetic Algorithm
Output = 1 # 0:No, 1:X11, 2:Video, 3:Headline(stdout), 4:Stdout
Scale = 0 # Use Scale Factors, 0:No, 1:Yes
ScaleFile = scalefactors.spectrum # File Including Scale Factors as a Function of Frequency (Duct Spectrum)
Result = 0 # Put a Result into the Configuration File, 0:No, 1:Yes
DelayPlot = 1 # Plot all Delays, 0:No, 1:Yes
HumAmplitude = 0.0000000000 # Rel. Amplitude of 50Hz Power Supply System
The Syntax Tulivu uses is very simple:
#commentary
variable_1 = 33 # an other commentary
Variable_2 : 33.3
Variable_3 : 34
Variable_4 : These line is stored in variable 4! # But at this point commentary is to be continued.
By personalizing variables it makes working less complicated when using Tulivu at the same time in different configuration. But for running Tulivu serious some variables must be defined, e.g.
SampleRate: integer, number of samples in the Simulation
Frequency: real, frequency of the disturbing signal
FrequencyNoise: real, noise of frequency as standard deviation percent
FrequencySweep: real, sweep rate in Hz/Frame
Amplitude: real, amplitude in the simulation percent (100 % relates 1 a.u.)
AmplitudeNoise: real, noise of amplitude as standard deviation percent
AmplitudeOffset: real, amplitude offset in the simulation percent (100 % relates 1 a.u.)
Term: real, seconds of simulation duration
StartAdaption: real, adaption starting point relative to simulation duration percent
DisturbPeriod: real, period of a raw disturb signal in seconds
x-Delay: real, delay of the reference signal in seconds
y-Delay: real, delay of the control signal in seconds
e-Delay: real, delay of the error signal in seconds
d-Delay: real, delay of the disturb signal in seconds
Mu: real, increment by LMS, step size
Leaky: real, leaky factor by LMS
Title: string, title of simulation
InputFile: name of audio file (*.wav,*.mpeg), spoken text will be used as a disturb signal
Speech: string, text being read as a disturb signal
Signal: integer, shape of signal, 0:Sinus, 1:Rectangle, 2:Triangle, 3:Dirac Peak, 4:White Noise, 5:Input File, 6:Speech
Algorithm: integer; used algorithm, 0: LMS, 1: Real World Genetic Algorithm (without an object function)
Output: integer; 0: No Output in a Gnuplot Window, 1:X11 window, 2:video file (No Output in a Gnuplot Window)3:Stdout with headline, 4:Stdout without headline
Scale: integer; use scale factors, 0:No, 1:Yes
ScaleFile: file name; file including scale factors as a function of frequency (duct spectrum)
Result: integer, put a result into the configuration file, 0:No, 1:Yes
DelayPlot: integer; plot all delays, 0:No, 1:Yes
HumAmplitude: real, rel. amplitude of 50 Hz power supply system percent (100 % stands for 1 a.u.)
Output
As far as the avc.config is updated, Tulivu starts at the prompt or as a GUI applet. By including a control unit and a live gnuplot X11 session Tulivu provides a simple to use Simulation with all its features. By choosing a number in the output configuration you will find out what mode is your favorite.
Modus | Output |
0 | only controll unit, No Output in a Gnuplot Window |
1 | controll unit and gnuplot window |
2 | only controll unit, video file, No Output in a Gnuplot Window |
3 | stdout, data with header and no X11 output |
4 | stdout, data without header and no X11 output |
When using Tulivu in mode 2 gnuplot generates several JPEG files out of the simulated data which afterwards will be converted with an other tool into a video file (AVI, MPEG2). Parallel Tulivu is generating an audio file (WAV, MPEG3) and an opening image (PNG).
Starting Tulivu in mode 3 or 4, it is easy to work systematically step by step with several parameter range. Using Tulivu in this output option you have to generate for any parameter variation its own configuration file. A shell script runs Tulivu with the right configuration file and stores the data.
Control of the running program
After starting Tulivu there is popup a control unit including several buttons and a gnuplot X11 window as far as the configuration file is concerned.
Control Unit
The control unit includes some sub-menu which will be focused in the next step. There are although following buttons:
Several scroll bars are included in the Slider Sub-menu for adaption control:
Mu: Increment LMS algorithm used, step size
Leaky: Leaky factor LMS algorithm used
Amp.[%]: Amplitude of the disturbing signal, 100 % stands for 1 a.u.
Freq.[Hz]: Frequency of the disturbing signals in Hertz
A.-Noise: Rel. noise of the amplitude in percent
F.-Noise: Rel. noise of the frequency in percent
x: Delay of the reference signal in samples
d: Delay in the duct in samples
e: Delay of the error signal in samples
y: Delay of the control signal in samples
In the Sub-menu Input there are some shapes for the disturbing signal and some parameter to manipulate a runing Tulivu session. The disturb signal can set to:
Sinus
Rectangle
Triangle
Dirac Peak
White Noise
Input File: disturbing signal from a sound file, sox starts sound file conversion, eg. *.wav, *.mpeg …
Speech: spoken English as a disturb signal,
The value in the input field takes effect on several parameters:
Term [s]: Time the Simulation runs
Disturb Period [s]: Disturbance's period, null means that there is none
Sweep [s]: Term of one sweep between max and min frequency, zero means that there is none
Offset [%]: Disturbance amplitude per cent, 100 % stands for 1 a.u.
x-Delay [s]: Delay of the reference signal
d-Delay [s]: Delay of the disturb signal
y-Delay [s]: Delay of the control signal
e-Delay [s]: Delay of the error signal
In Sub-menu Output are information about several parameter and about characteristical settings of the simulation.
Frequency, current: current frequency including frequency noise
Amplitude, current: current amplitude including amplituden noise
Mu, corrected : corrected LMS increment (LMS with delay compensation)
Loop : number of running loops; The simulation had done, by klicking there will be an acustical beep.
Energy : energy of the error signal
Power : average energy for one sample (average power) of the error signal
Frame Calc. Time : CPU's time for one loop
Start : time the simulation starts
End : forcast time the simulation ends
Frame Size : size of a frame in sample
Sample Rate : samplerate
Sample Time : term of one samples
Frame Time : term of one frame
Frame Group : number of grouped frames
Float/Word/Int : size of used value typs (float, word, int)
The secondary path consisting of the control signal, the reference signal and the error signal shows a frequency dependent funktionalism.
Sub-menu Scale shows the second path spektrum of its transfer funktion which can be used in the configuration file for scaling the error signal.
In submenu Config it is possible to change settings in the used configuration file which updates the simulation after a restart of Tulivu.
In Sub-menu Info there is information about license and version of this applet and the authors contact data.
Graphical Output
By using Gnuplot for calculating graphical output of the data Tulivu provides any session is standardised. In the X11 window there is shown:
red line: reference signal or disturb signal without delays
magenta line: reference signal with delays
orange line: disturb signal with delays (duct)
green line:control signal without delays
brown line: control signal with delays
blue line: error signal without delays
cyano line: error signal with delays
cyano line: spectrum of the reference signal
magenta line: coefficients
To do list for next version
These listing lets you give an overview of features taken effect in the next version of simulation tool Tulivu.
Standardisation of used FIR routines
Establishment of OGG for audio and video data
Internationalising by manipulating the date
Normalisation of output audio data
Using a FIR filter to scale the error signal
Generating audio and video data from measurement data to compare them directly with the simulation
Integration of several new control algorithm (GA with objekt funktion)
Integration of spectum of the error signal into the spectrum of the reference signal
Seperation of the source code in groups with the result of modulare using and development
Installation Guide
Creating a DTD for the XML configuration files for using it as a control script into a measurement (e.g. sweep term, scattering )
Establishment of XML as markup for configuration files
Standardisation of delay order in Sub-menu Slider and Input
Desensitisation of the noise slider
Integration of dynamic variation of any parameter
Creation of a control unit for the trigger
Creation of a control unit for used algorithm
OS independence of the source code