Urban Terror Forums: iKALiZER : New audio engine (Surround sound UrbanTerror) - v0.22.00b - NewPatch - Urban Terror Forums

Jump to content

 Login | Register 
  • (63 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • This topic is locked

iKALiZER : New audio engine (Surround sound UrbanTerror) - v0.22.00b - NewPatch Rate Topic: ***** 2 Votes

#1 User is offline   christophe_d13 (old) Icon

  • Joined: 22-February 08
  • Posts: 188
  • LocationEurope

Posted 23 February 2008 - 10:59 AM

iKALiZER en fran�ais, c'est ici : http://www.urbanterr...pic.php?id=1591

Posted Image
[glow=#206090,3,300]iKALiZER Audio Engine[/glow]

UrbanTerror iKALiZER is a special version of UrbanTerror 4.1 / ioQuake3 1.35urt powered with my iKALiZER Audio Engine.

Key features
- Provide "6" 2-channel modes : Stereo, Headphones(1), Holographic-Headphones(5), Virtual-Holographic Headphones(6), 360 Virtual Sound(1), Dolby Pro Logic I(2) and II(3)
- Provide "3" multi-channel modes : 4.0, 5.0 and 5.1(4)
- High speed / high quality 32-bit mixer
- Low latency mixing
- Audio limiter (up to +20dB)
- Buffer underrun protection
- Allow dynamic distance and underwater effect
- Cinema AGC (disabled from iKALiZER 0.21.5)
- Support Microsoft Windows 2000 or more (Linux version is planned)

(1) These 2 modes use a hybrid HRTF : Bauer delay / ITD / IIT-ILD / Surround spatialisation.
(2) Provide Front-Left, Front-Center, Front-Right and Surround voices over 2-channels using DPL I matrix encoding and 128-tap Hilbert transform.
(3) Provide Front-Left, Front-Center, Front-Right, Surround-Left and Surround-Right voices over 2-channels using DPL II matrix encoding and 128-tap Hilbert transform.
(4) The .1 LFE voice is created by using the level of the sound source without low-pass filter. This could produces strange effects on some system. You could use 5.0 mode instead 5.1.

(5) This mode uses holographic synthetic sound (available from 0.20.5 SAM version)
(6) This mode uses a new holographic synthetic sound (available from 0.21.8 iKALiZER version)

Advanced features
- Only one memory allocation
- 16 point Lanczos window interpolation
- Dedicated thread (very good for dual core)
- Highly optimized voice mixer for SSE
- Preemptive dynamic voice allocation (from 0.21.8)

Hybrid HRTF
The two modes "Headphones" and "360 VirtualSound" has been developped for localization of virtual sound source using only 2 channels (through headphones and 2-speaker configuration).
"Headphones" seems to works fine for lots of users with low-end or high-end headset.
"360 VirtualSound" has been built for 2 speakers mode not headset ! The effeciency of this mode is very depend of lots of params like speakers type, distance between speakers, angle, distance between user and speakers...
Hybrid HRTF try to provide realistic surround effect without reducing performance drastically.

Holographic sound
The "Holographic headphones" mode uses many pre-process long term convolution tables. These tables are made before game loading for fast in-game processing (but slower than hybrid-HRTF). The expected result depends of your headphones/earplugs device and could be more realistic than hybrid-HRTF (specially for side and rear sounds).
Require SAM 0.20.5 or iKALiZER (mode 0x25) or iKALiZER 0.21.8 (mode 0x26).

Cinema AGC
The "Cinema AGC" processing try to provide a more intensive sound immersion. The process dynamically changes the level of all sounds (-10dB to +3dB) depending on their own distance from player. Some far sounds could be decrease up to 10dB instead of near sounds increased by 3dB.
The Cinema AGC is always ON.
Require SAM version 0.20.5 or more. Disabled with iKALiZER.
The subjective tests show very little in-game improvement versus high processing needs... That's why it has been disabled.

- Only support DirectX and Windows
- Doppler is not supported
- SSE processor needed

Windows / Linux / MacOS Support
Up to 0.22 of iKALiZER is written for Windows only.
Linux has been planned to released in June 2009, but I've got too much work (job) to provide it. I don't know if this generation will have Linux support, because I've started to work on iKALiZER gen 2 and I can't provide quality support to iKALiZER gen 1.
Next generation of iKALiZER (gen 2) will be release for Windows AND Linux natively. I hope to provide a MacOS version if I could get an Apple computer.

[glow=#000000,2,300]Latest available binary[/glow]

BETA : iKALiZER 0.22.00b (766KiB) - (musics/sounds level bug fix)

BETA : iKALiZER 0.22.00b & IQS (21MiB) - (musics/sounds level bug fix)

iKALiZER 0.22.00 (766KiB)

iKALiZER 0.22.00 & IQS (21MiB)

[glow=#000000,2,300]Latest available source code[/glow]
Download link : iKALiZER Manager source code Version 0.22 with iKALiZER library

How to install
Unzip the two files (ioUrbanTerror.exe and samlib.sae) in your UrbanTerror 4.1 path located at C:Program FilesUrbanTerror
The provided ioUrbanTerror version (compiled in SSE mode) seems to be stable, and replaces efficiently the original ioUrbanTerror executable.

[glow=#000000,2,300][size=14pt]Command line help


/s_useIkalizer 1
This command line enable iKALiZER with ioQuake. Now you need to restart ioQuake to use iKALiZER with ioQuake.
By default, ioQuake uses it's own internal stereo audio engine.

Give some information about iKALiZER actual parameters.

/ikalizer_Help or "ika_H"
Give help directly into the console !

Full restart of iKALiZER without restarting ioQuake
This command is currently disabled.

/ikalizer_LimiterLevel  0 or "ika_LL"
Set the limiter gain/level. Typical= 0
0 = 0dB
1 = +6dB
2 = +12dB
3 = +20dB
The limiter is a live feature. You could change it without restarting iKALiZER.

/ikalizer_DeviceEnum or "ika_DE"
List all available output devices.

/ikalizer_DeviceSelect  0 or "ika_DS"
Select an output device. Typical= 0
The passed value depends of "s_ikalizerDeviceEnum", but "0" value is always the default output device.

/ikalizer_DynamicDelayLines  -1 or "ika_DDL"
Set the Dynamic delay lines. Typical= -1
-1 = Auto
0 = Disable/Off
1...100 = Quality level (1=min...100=max)
DDL is a usefull features only available in 0x21(Headphones Hybrid-HRTF), 0x25(Headphones Holographic) and 0x22(360 VirtualSound) channel mode.
It reduces the surround quality rendering of very far sounds instead of near sounds and greatly enhance speed.
The DDL is a live feature. You could change it without restarting iKALiZER.

/ikalizer_ChannelMode  0x20 or ika_CM
Set output channel and rendering mode. Typical=0x20 (Stereo)
0x20 2.0 Simple stereo
0x21 2.0 Headphone (Hybrid HRTF)
0x22 2.0 360 Virtual Sound (Hybrid HRTF)
0x23 2.0 Dolby Pro Logic I compatible material
0x24 2.0 Dolby Pro Logic II compatible material
0x25 2.0 Holographic Headphone (Holographic sound)
0x26 2.0 Virtual holographic Headphone (Holographic sound)
0x40 4.0 Quadriphonic
0x60 5.0 Standard home-theatre sound without LFE
0x61 5.1 Standard home theatre sound with LFE
*(0x22 doesn't work correctly on some system.)

/ikalizer_ReplaceSamples 1 or ika_RS
Set replace samples mode (IQS). Typical=1 (enabled)
0  Disable replace samples (no IQS)
1  Enable replace samples (IQS activated)
This feature needs to restart the software

Here is the advanced commands :


/ikalizer_VoiceCount  24 or ika_VC
Set the total mixing voice. Typical= 24
20-40 seems to be a good value.
48-64 is good for powerfull computer.
Try lower value (like 12 or 16) if the sound is choppy.
Nota : Since iKALiZER version 0.15, internal iKALiZER process 256 voices. A psycho-acoustic realtime process reduces this number to the user value. A very low value could be fully playable like 8 voices ! Try it !

/ikalizer_MaxUsage of ika_MU
Set the max amount of cpu power allowed to iKALiZER. Default = 7 (7%)
0 = Off
1...30 = 1 to 30%
31 and more = 30%
-1 = Auto (set 70% if dual core mode is detected)
You could force 7 or less on single core.
You could force 30 or -1 on dual core.

/ikalizer_SamplingRate  48000 or ika_SR
Set sampling rate. Typical= 48000
48000Hz is the best value for HRTF and Hologrphic rendering (mode 0x21, 0x22 and 0x25). But lowest value is possible if the sound is choppy.
All available sampling rates : 48000, 44100, 32000, 24000, 22050.

/ikalizer_MemoryAlloc  64 or ika_MA
Set the total memory available for iKALiZER. Typical=64 (64 megabytes)
64MiB seems to be a good value for all Urban Terror maps.

/ikalizer_EnableSMP  0 or ika_ES
Enable Multi-Processor / Multi-Core only for iKALiZER ! not for UrbanTerror. Typical= 0
If you have a SMP computer, enable this value (" 1 ") for great performance boost !
To force single core on multi-core computer, use "2" value (from iKALiZER 0.21.5)
Note: I've noticed better results under a dual-core CPU with "0" and nVidia Video Card... Try it on your own system !

Here is the experts commands : (Not necessary ! Only for information !)


/ikalizer_LatencyDuration  20 ika_LD
Set the maximum latency (in milliseconds) of mixing output data. Typical= 20
You don't need to change this value.

/ikalizer_BufferDuration  500 or ika_BD
Set the total output buffer length (in milliseconds). Typical= 500
You don't need to change this value.

/ikalizer_SFXCount  4096 or ika_SC
Set the total SFX could be allocated. Typical= 4096
You don't need to change this value.

Channel mode matrix configurations

0x40 - FL/FR/RL/RR - 4 channels
Front Left : -30�
Front Right : 30�
Rear Left : -135�
Rear right : 135�

0x60 - FL/FC/FR/RL/RR/LFE off - 6 channels
Front Left : -30�
Front Center : 0�
Front Right : 30�
Rear Left : -110�
Rear right : 110�
LFE : Off

0x61 - FL/FC/FR/RL/RR/LFE on - 6 channels
Front Left : -30�
Front Center : 0�
Front Right : 30�
Rear Left : -110�
Rear right : 110�
LFE : On


v0.22.00b (beta)
- Fix : Restore delta audio level between music (looped sound) and sound fx in iKALiZER Manager in ioUrbanTerror.exe (no change in iKALiZER library)

- Add : New mixing functions allow dynamic interpolation shut-down (only if FreqMix == FreqSamplingRate)
- Add : Allow Audio/Video recording (support all channel modes... Like 5.1 audio recording)
- Fix : Allow ultra-low mixing latency with auto-adaptative buffer underrun management
- Fix : Correct on-the-fly audio params changes
- Fix : Better idle management

v0.21.8 (beta)
- Fixed : Max usage measurement and management
- Added : Preemptive dynamic voice allocation
- Added : New 0x26 mode for headphones
- Added : Faster compressor/limiter for 0x26 mode
- Updated : Distance level management is a mix between original ioQuake3 and reality : done in ioUrbanTerror source code.

- Fix : Desynchronisation between play and write pointers
- Removed buffer under-run BEEP from 0.21.4 (for testing only)

- Re-organized DirectSound initialisation (prefer extensible before extended wave format)
- Buffer manager improved : Use write AND play pointers instead of write pointer only.
- PostProcessCopy : Moved initialization routine
- WARNING : Added (for testing only) a buffer under-run BEEP (could be loud !!!)
- Update sound information

- Bug fix : Incorrect 0x40, 0x60 and 0x61 matrix (tested under X-Fi Xtreme Audio and 5.1 speakers)
- DirectSound improvement : Add WAVEFORMATEXTENSIBLE support (allow better multi-channel support)
- Buffer manager improved : Adaptative sleeping (up to 1/2 latency instead of fixed 1ms)
- Buffer manager removed : "twice-latency" in case of buffer underrun

- Bug fix : Correct sound problems when change to a new device or a new channel mode.
- Bug fix : Correct management of Buffer Underrun

- Bug fix : Sometimes, some sounds couldn't be heard without any reason. (add "bIsPlayedState=1" in VOICE_SetPlay)
- Improvement : Synchronisation is more faster

- Add a new limiter
- Support on-the-fly params changes

- Add a full new little ASM optimisation (6-10% faster) to DDL mixer

- CinemaAGC disabled (not enough interresting)

- Add the "smooth rendering"

- Disable "snd_restart" (this produce a SAM crash)
- Fix 0x25 render mode : only 48KHz side ear convolution is present.
- New interpolation ; 16 points Lanczos window

- Fix an error in dualcore mode with s_samMaxUsage wich set a wrong value

- Fix a crash while closing SAM (and ioUrbanTerror). I've forgot to re-enable the thread closing process.
- Add angle-rendering-interpolation (reduce artefact sound while fast turning)
- Add on-the-fly rendering change (B) for the same channel (A) mode (0xAB)
- Add new data to holographic headphones rendering (0x25 mode)
- Faster CinemaAGC
- Faster Psycho-acoustic
- Update use of "s_samEnableSMP " : 0 = keep system, 1 = force dual core, 2 = force single core
- Add processor usage
- Add dynamic voice count linked to max cpu usage "s_samMaxUsage" 0=off, 1=1%...30% (automatic set to 70% if dual core mode detected)
- Fix a sound stop bug

- Restored old sound buffer management

- Add a new FIR filter designer less aggressive (using FFT instead of "RIESZ to GOSSA modified KAISER-BESSEL derived")
- Removed single SMP/single process/thread (choppy sound !)
- Added 0x25 mode for headphones holographic sound
- Restored 0x21 mode (hybrid-HRTF for headphones)
- Added DDL for faster processing with holograpic sound
- Change FIR-16 to FIR-32 (better aliasing rejection) speed reduction (around -11,2cps, from 1 to 7%)
- Change Sine oversampling to Modified sine oversampling (less distorsion)

- Correction of a bug fully described by Marcel951

- Corrected all convolution data for rear holographic sound (near linear bandwidth)
- Added convolution data for 22050, 24000, 32000 and 44100 Hz
- Added Cinema-AGC (enhance in-game sound localisation)
- Added enhanced dynamic buffer underrun
- Replaced single SMP with a new single SMP processing on only one process/thread
- Modified sound/music management in ioUrbanTerror SAM's routines like original Quake
- Added a "flush" proc on audio output data
- Slight update of synchronous communication

- Add Cinema-AGC envirronement effect (enhance in-game sound localisation)
- Add new single thread processing (SAM is called by ioUrbanTerror instead of dedicated thread)

- Add new holographic sound instead of hybrid HRTF for rear sounds
- Use ILD/ITD with dynamic low pass filter for side sounds
- Use ILD/ITD with simple convolution for front sounds
- ioUrbanTerror : Corrected distance/level processing

- 256 virtual voices realtime linked to physical voices by a psycho-acoustic processing

v0.14 2008-04-06
- Added dynamic delay lines (DDL) for 0x21 and 0x22 modes

- Very little speed improvement for 0x20, 0x40, 0x23, 0x24, 0x40, 0x60 and 0x61
- Correct angle to axis sound source in ioUrbanTerror abstraction layer for SAM

- Fix to 32 the delay lines count of Hybrid HRTF (mode 0x21 and 0x22) instead of 64

- Fix crash if sample rate is below than 44100

- Add output device selection
- Great performance improvement in all sound modes

Work in progress


iKALiZER 0.21.5 with ioUrbanTerror 4.1

iKALiZER settings
- 32 physical voices
- Memory set to 64MB
- Mixing to 48000Hz
- MaxUsage at 7% in single-core and 70% in multi-core
- DDL = Auto

System config
- Asus P45 Deluxe
- 2x1Go G.Skill 4-4-3-5 800MHz
- Intel E8400 3GHz
- GeForce 9600GT 512Mo
- Adaptec RAID 3805

Software config (up to date)
- Windows XP Pro SP3
- nVidia default mode with single screen set
- Abbey Demo CTF with 15921 frames

Normal view
Posted Image

Zoom view
Posted Image

Old benchmark
Posted Image

Old binary and source

- iKALiZER Version 0.21.5 with ioUrbanTerror.exe
- iKALiZER Version 0.21.8 with ioUrbanTerror.exe
More info : http://forums.urbant....html#msg194613

- SAM Version 0.20.5 2008-07-16 with ioUrbanTerror.exe in normal mode
- SAM Version 0.14 dvlp beta 2008-04-06 with ioUrbanTerror.exe in normal mode
- Binary Version 0.14 dvlp beta 2008-04-06 with ioUrbanTerror.exe in SSE optimized mode
- Binary Version 0.13.2 dvlp beta 2008-04-04
- Binary Version dvlp beta 2008-03-15 (special SSE)
- Binary Version dvlp beta 2007-02-26
- Binary Version dvlp beta 2007-02-27
- Binary Version dvlp beta 2007-02-26
- Binary Version dvlp beta 2007-02-22
- Source Version dvlp beta 2007-02-26
- Source Version dvlp beta 2007-02-22

Current work
- iKALiZER for Linux
- New 0x26 headphone mode

Improvement / Todo list / Future ideas
- Windows GUI to configure iKALiZER
- On-the-fly high frequency recreation/restauration of sounds (during loading process)
- On-the-fly denoising of 8-bit sounds (during loading process)
- Speed optimization of transport layer (mixer output audio data to direct sound)
- Speed optimization of sound loading
- Better spatialization of front sound in Heaphones mode (0x21)
- Add a more realistic surround processing for faster dualcore processor in headphones mode (0x21)
- SDL support
- Linux support (works in progress under Kubuntu !)
- On-the-fly SFX exchange !
- Output audio stream recording (for video recording caps)
- Restore "ikalizer_Restart" command line
- ...
- And your ideas !!!

Current Research
- 3D sound positionning with headphone
- High quality HRTF
- Holophonic sound
- Binaural hearing

[glow=red,2,300]Add these lines to your q3config.cfg file without using ioQuake console commands[/glow]
Good params for a Dual Core CPU like Intel Core2Duo E6400 in 5.1 surround sound without LFE redirection


seta s_useIkalizer 1
seta ikalizer_LimiterLevel 0
seta ikalizer_ChannelMode 0x60
seta ikalizer_VoiceCount 32
seta ikalizer_MemoryAlloc 64
seta ikalizer_EnableSMP 1

Good params for a Dual Core CPU like Intel Core2Duo E6850 in 2.0 Headphones


seta s_useIkalizer 1
seta ikalizer_LimiterLevel 0
seta ikalizer_ChannelMode 0x21
seta ikalizer_VoiceCount 32
seta ikalizer_MemoryAlloc 64
seta ikalizer_EnableSMP 1

Good params for a medium power CPU like AthlonXP 2600+ in 2.0 Headphones


seta s_useIkalizer 1
seta ikalizer_LimiterLevel 0
seta ikalizer_ChannelMode 0x21
seta ikalizer_VoiceCount 18
seta ikalizer_MemoryAlloc 32

Warning using all Pentium 4 with HyperThreading
A Pentium 4 HT IS NOT a dual core processor.
If you want to slightly enhance performance on this processor, you could enable SMP, but you need to fix the ikalizer_MaxUsage to a very low value. Add this line to your configuration :


seta ikalizer_MaxUsage 7

My current computers available :


Programming and testing
Motherboard : ASUS P5Q Deluxe
Processor : Intel E8400 @ 3GHz
RAM : G.Skill DDR2 2x1GB 4/4/3/5 @ 800MHz
Video : XFX GeForce 9600GT
Audio #1 : Creative Audigy SE (PCI)
Audio #2 : Creative X-FI (PCIe)
Audio #3 : M-Audio Delta 1010LT (PCI)
Audio #4 : Integrated motherboard sound chip ADI2000B

Testing only
Motherboard : ASUS A8N-SLI Premium
Processor : AMD AthlonX2 3800+ (at standard 2GHz or 1,2GHz)
RAM : G.Skill DDR 2x512MB 2/2/2/5 @ 200MHz
Video : Radeon X550
Audio #1 : Creative SB128 (PCI)
Audio #2 : Integrated motherboard sound chip

Available Speakers
Logitech Z-2300
Elipson H60 (with A/AB class amplifier)
Creative 2.1 (low cost with new subwoofer : P17RCY)

Available earplugs and headphones
Sennheiser HD500
Sennheiser HD650
Philips earplugs from MP3 player (low cost and poor quality)
Low cost headphones (less than $10)

#2 User is offline   Nexu Icon

  •   clan leader   
  • Account: nexu
  • Main tag: |it|
  • Country:
  • Joined: 26-June 07
  • Posts: 4,264

Posted 23 February 2008 - 01:01 PM

Already have 5.1 sound with ioUrbanTerror in Windows when using enabling OpenAL and set the speakers setup in Windows to 5.1.
But the audio samples are plain stereo...

#3 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 23 February 2008 - 01:32 PM

You don't want to hear the individual sounds in 5.1, but to have directional sound in the gameworld.

#4 User is offline   christophe_d13 (old) Icon

  • Joined: 22-February 08
  • Posts: 188
  • LocationEurope

Posted 23 February 2008 - 07:07 PM


Already have 5.1 sound with ioUrbanTerror in Windows when using enabling OpenAL and set the speakers setup in Windows to 5.1.
But the audio samples are plain stereo...

- OpenAL doesn't support HRTF, Dolby Prologic / Prologic II.
- I've done lot of work with resampling engine for providing high output quality (listen the birds in the abey map).
- I've add a output level limiter with a user define pre-gain (up to +20dB).
- I've add other envirronnement processing (distance and underwater)
But I can't create a full 3D audio listening experience because ioQuake/id Tech 3 hasn't been created for supporting a real 3D audio environment processing.

I've used OpenAL but i wasn't fully satisfied with audio quality (I always play with headphones). I decided to work on my own audio engine and use it with ioQuake/UrbanTerror.

#5 User is offline   Hunt@.se (old) Icon

  • Joined: 29-April 04
  • Posts: 86
  • LocationSweden

Posted 23 February 2008 - 10:30 PM

good job christophe_d13 :)

nice sound

#6 User is offline   thYp Icon

  • Account: thyp
  • Joined: 01-March 10
  • Posts: 143

Posted 23 February 2008 - 11:20 PM

You're awesome christophe_d13 !
keep up the good work.

#7 User is offline   mitsubishi Icon

  • Account: mitsubishi
  • Country:
  • Joined: 28-February 10
  • Posts: 13,481

Posted 24 February 2008 - 12:08 AM

If anyone hasn't figured it out yet, this is not about a fast hack. It's a skilled programmer offering something rare.

#8 User is offline   CRIMENY Icon

  •   verified donor   
  • Account: crimeny
  • Main tag: /eVo/
  • Country:
  • Joined: 30-April 09
  • Posts: 550

Posted 25 February 2008 - 07:59 AM

Wow.  I've been wanting this for all games, for a very long time...and now it's available for my favorite game.  Thanks for your work!

#9 User is offline   Seven of Nine Icon

  •   former FS member   
  • Account: sevenofnine
  • Main tag: |it|
  • Country:
  • Joined: 30-April 09
  • Posts: 1,638

Posted 25 February 2008 - 10:01 AM

I would like to try this too, I downloaded and unpacked the files but when I execute it it says "This application has failed to start because OpenAL32.dll was not found. Re-installing the application may fix the problem.".
If someone knows the solution, please help me :)
Can't wait to try urbanterror with my new soundsystem

#10 User is offline   flinkaflenkaflrsk (old) Icon

  • Joined: 09-May 04
  • Posts: 324
  • LocationNL

Posted 25 February 2008 - 02:30 PM

This looks like a nice feature :)

  • (63 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • This topic is locked

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users


Copyright © 1999-2022 Frozensand Games Limited  |  All rights reserved  |  Urban Terror™ and FrozenSand™ are trademarks of Frozensand Games Limited

Frozensand Games is a Limited company registered in England and Wales. Company Reg No: 10343942