irrKlang:     About     Features    Tutorials    Download    irrKlang Pro    FAQ    License    Forum    API    API.NET    Buy now

irrKlang Change Log

A list of changes for every irrKlang version since the initial release.

irrKlang 1.6

  • irrKlang for .NET 4 now needs version 4.5 at miminum
  • there is now a new function stopAllSoundsOfSoundSource() to stop all sounds of a specific sound source
  • irrKlang.NET for .NET 4 now also has a strong name (it is now a signed assembly)
  • stopped support for .NET 1.1, please use the versions for .NET 2 or .NET 4 instead, or an older version of irrKlang if you still need .NET 1 support
  • irrklang for gcc now supports gcc 5.1
  • irrKlang 1.5 for windows was depending on the MSVC runtime dll, this is now no longer the case with irrKlang 1.6
  • fixed a bug causing duplicated DirectSound buffers to share the playbackSpeed sometimes, causing some sounds to have a wrong frequency when played.
  • fixed update() problem in single threaded mode.
    If you run irrKlang in single threaded mode, you can now call irrKlang::update as often and fast as you want. This was supposed to be called only about once every second prevousliy, and could cause irrklang to stall previously if called too often.
  • added support for Visual Studio 2017

irrKlang 1.5

  • Added 64 bit support. There is now a separate irrKlang SDK for 64 bit builds
  • Added support for unicode file names. irrKlang now uses UTF8 internally on all operating systems. If you are running it on Windows, and want to use wchar_t types, you can use the irrKlang provided function makeUTF8fromUTF16string() to convert your wchar_t* string to a char* string.
    In the .NET version of irrKlang, the API hasn't changed, but irrklang now supports unicode file names there automatically as well.
  • Added support for playing back 24 bit flac files
  • Uses less resources on linux now: PCM handles are now closed as soon as possible, freeing resources much earlier.

irrKlang 1.4.0b

  • Improved Linux compatibility: Some games using irrKlang are now released on Valves "Steam for Linux" and now also work there nicely with this update.
  • This release is fully binary compatible with irrKlang 1.4.0. Actually, it uses the same binaries on all platforms except on Linux. You only need to update if you are using irrKlang on Linux.

irrKlang 1.4.0

  • Fixed a potential crash in the windows version, when using DirectSound8
  • Improved speed of the Windows version of irrKlang by about 20%
  • irrKlang now also works with newer Linux distributions (like Ubuntu 12), which moved the ALSA lib file into a new directory.
  • Cleared up some inconsistencies in the documentation
  • Removed a very small memory leak in Linux and Mac OS X

irrKlang 1.3.0b

  • Added support for .NET framework 4.
  • Fixed a problem with audio recording: GUIDs were not correctly decoded for some devices, causing manual device selection to fail on Windows.

irrKlang 1.3.0

  • There is now the possibility to capture the mixed output audio data from irrKlang, using the ISoundMixedOutputReceiver interface. Can be used to store the sound output as .wav file or for creating an Oscillograph and similar.
  • The movement speed of 3d sound listeners has been ignored in previous releases for 3d sound doppler effects, this has been corrected now.
  • irrKlang now also runs on 64 bit linux systems. It previously looked for the alsa lib in /usr/lib/, but on 64 bit system this is located in /usr/lib32/ This is fixed now.

irrKlang 1.2.0

  • Added .flac file playback support. Implemented as plugin, ikpFlac.dll.
  • Fixed a bug causing the volume of 3D sounds not to be set correctly when using DirectSound8 and playing more than one 3D sound of the same file at the same time.
  • File formats with unknown extensions are now loaded by Plugins only if they could not be loaded by the internal decoders.
  • Several API documentation updates and improvements.
  • C++ documentation now has search functionality
  • Replaced .chm documentation files now with plain .html files

irrKlang 1.1.3c

  • [This update only changes the implementation, the interfaces all remain the same, so only the irrKlang.dll file needs to be replaced since version 1.1.3.]
  • Fixed a bug causing irrKlang to crash when playing looped, streamed sounds in 3D under special circumstances.

irrKlang 1.1.3b

  • [This update only changes the implementation, the interfaces all remain the same, so only the irrKlang.dll file needs to be replaced since version 1.1.3.]
  • Small bug fix for the DirectSound drivers: Looped streamed sounds sometimes restarted with a small pause (~10 ms) in between.
  • The ISound and ISoundSource classes in irrKlang.NET now implement the IDisposable interface, so it is now easily possible to free their resources manually.
  • The .NET version now uses less memory (earlier unmanaged resource disposal).

irrKlang 1.1.3

  • Added support for multichannel audio recording. When starting audio recording using startRecordingBufferedAudio() or startRecordingCustomHandledAudio(), set the new last parameter to the amount of channels you want to record audio data.
  • Reduced latency of the Linux version (ALSA).
  • Improved Mac OS X performance (CoreAudio), irrKlang now performs better on computers with slow hardware.
  • Added two VisualBasic.NET examples
  • ForcedStreamingThreshold property of ISound now also available in the .NET verion of irrKlang.
  • IAudioRecoder::IsRecording now returns the correct value in the .NET version of irrKlang.
  • IAudioRecorder now correctly returns a SampleFormat data with a lenght of 0 if nothing has been recorded before.
  • In irrKlang.NET, IAudioRecorder.RecordedAudioData does not throw an OutOfMemoryException anymore if nothing has been recorded yet.
  • ISoundSource::getForcedStreamingForceThreshold has been renamed to ISoundSource::getForcedStreamingThreshold

irrKlang 1.1.2b

  • Added support for (external) multichannel sound cards on Mac OS X.

irrKlang 1.1.2

  • Added support to play back 24 bit wave files.
  • The DirectSound drivers now use more aggressive sound buffer sharing, causing irrKlang to use a lot less memory and also speeding it up a lot when playing a lot of big sounds.
  • There is now a way to access the internal used audio interfaces (ALSA, DirectSound, DirectSound8, WinMM, CoreAudio) using ISoundEngine::getInternalAudioInterface().
  • There are now two .NET versions of irrKlang available, one for the .NET CLR 1.1 and one for .NET CLR 2.0 (.NET Framework 2, 3 and 3.5). Of course, you can still use every version with every project, this is mainly to reduce the size of installers. See details in readme.txt
  • It is now possible in the .NET version to access the decoded sample audio data of non-streamed sounds using ISound.SampleData
  • It is now possible in the .NET version to access the recorded audio data directly using IAudioRecorder.RecordedAudioData
  • Fixed a bug in the .NET version of the method EnableCompressorSoundEffect() which totally skrewed up its parameters.
  • Fixed a bug causing the AudioRecorder only to work for one recording session in DirectSound.
  • Fixed a bug causing the irrklang DirectSound driver to start playing the sound when it changing its 'looped' flag when the sound is paused.
  • There is now a new example for C# available which shows how to use irrKlang with Windows.Forms.
  • The forced streaming treshold has been adjusted to 2MB
  • Fixed some documentation mistakes in ISoundEngine::addSoundSourceFromPCMData

irrKlang 1.1.0

  • Several speed optimizations and memory usage improvements.
  • It is now possible to directly access the decoded PCM sample data of every loaded sound source. Use ISoundSource::getSampleData() for this.
  • Fixed a bug causing the UserData object and other resources not to be garbage collected when using ISoundStopEventReceiver in the .NET version of irrKlang.
  • Fixed a bug causing the sudden end of sound loops under very rare circumstances.
  • The 'Could not init COM' warning was senseless and has been removed.

irrKlang 1.0.4

  • irrKlang is now able to record audio. Use createIrrKlangAudioRecorder() to create an audio recorder object. It currently only works in Windows and with DirectSound (subject to change).
  • A new method ISoundEngine::addSoundSourceFromPCMData() now adds to possibility to use sound source from pure PCM data.
  • The three method overloads of addSoundSource() have now been renamed to addSoundSourceFromFile(), addSoundSourceFromMemoryFile(), and addSoundSourceAlias().

irrKlang 1.0.3

  • irrKlang now supports Power PCs (PPC). All features and file formats except Module playback (.mod, .it, .xm, .s3m) are now supported on this platform.
  • There is now a function to enumerate available audio devices. Select a device ID from this list to let irrKlang use a specific audio device. You can create this list using
    irrklang::ISoundDeviceList* list = createSoundDeviceList();
    or in .NET (C#):
    IrrKlang.ISoundDeviceList list = new IrrKlang.ISoundDeviceList();
  • The sound stop event receiver now has an additional parameter, describing the reason why the sound has been stopped. The signature of the method is now
    virtual void OnSoundStopped(ISound* sound, 
                                E_STOP_EVENT_CAUSE reason,
                                void* userData) = 0;
    or in .NET (C#):
    public void OnSoundStopped(IrrKlang.ISound sound, 
                               IrrKlang.StopEventCause reason,
                               object userData);
  • irrKlang.NET is now a signed assembly to work around some security hassle Microsoft introduced on Vista.
  • On newer linux versions (such as Ubuntu 7.10), irrKlang sometimes would play sound too fast or with a lot of noise, this is repaired now.
  • The Linux version of irrKlang shared object file is now named instead of previously
  • ALSA driver latency highly improved
  • IrrKlang.NET now supports retrieving the audio format of a sound, using ISoundSource::AudioFormat.
  • IrrKlang can now optionally be told which sound device to use for sound output. In addition using this feature, it is now possible to define an ALSA device name to be used for alsa output when calling createIrrKlangDevice().
  • irrKlang ignored the new flag ESEO_PRINT_DEBUG_INFO_TO_STDOUT on unix based operation systems, this is fixed now.

irrKlang 1.0.2

  • Breaking interface changes (C++ only):
    • All interfaces are now located in one single, new namespace named 'irrklang'.
    • vector3df is now named vec3df
    • IReadFile is now named IFileReader
    • IReferenceCounted is now named IRefCounted and IVirtualReferenceCounted now IVirtualRefCounted
    • primitive types now have the prefix ik_
    • all header files have now the prefix ik_
    • IFileFactory::createAndOpenFile() is now named createFileReader().
    These changes where necessary to simplify and clean up the interface, as well as to make irrklang independent of future changes of the Irrlicht Engine.
  • It is now possible to change the play position of a sound using ISound::setPlayPosition().
  • Software devices such as ALSA, WinMM and CoreAudio also support teh setPlaybackSpeed() functionality now.
  • Max values of 3D sound now behave differently: They won't mute the sound anymore when the max distance is reached. This should not affect if you set your 3D sound min/max values correctly before: The audible radius of a sound is only influenced by the minimum value, the maximum should be set to a extremely high value usually (such as 1mio) which is the default. If the maximum value is set to a small value, the sound won't attenuate anymore after this distance and stay audible from then on. In short: In nearly all cases, it is not necessary to change the max value of the sound if not in linear rolloff mode. Details can be found in the documentation.
  • It is now possible to retrieve the audio format of sound sources. Informations like channel count (mono/stereo), frame count, sample rate, etc are possible to be retrieved using ISoundSource::getAudioFormat()
  • The internals of irrKlang has been refactored: irrKlang.dll/.so/.dylib files are now smaller, use an improved thread locking mechanism and should run a bit faster.
  • irrKlang now supports a RollOff factor for 3D sounds. Use ISoundEngine::setRolloffFactor() for this.
  • It is now possible to get the name of the used sound driver by calling ISoundEngine::getDriverName();
  • irrKlang now only prints status messages to stdout if ESEO_PRINT_DEBUG_INFO_TO_STDOUT was set when creating the device (which is the default).
  • There is a new example application included in the SDK: A music player.
  • ISound::getPlayPosition() didn't return 100% accurate positions in all cases, this is fixed now.
  • irrKlang won't touch files anymore for preloading when streaming was specified.
  • ISoundSource::getIsSeekingSupported() now returns if the sound supports seeking using ISound::setPlayPosition().
  • Fixed a problem with 3D sounds: On some sound boards on windows operating systems older than Vista, the 3D sound would not stop at the maximum 3D distance when using DirectSound.
  • Using ISoundEngine::setDefault3DSoundMaxDistance() had a small bug, which caused the max distance not to work in all cases, this is fixed now.

irrKlang 1.0.1

  • Fixed a rarely happening bug causing irrKlang to crash when stopping streamed sounds in the software devices at disadvantageous times.
  • Fixed a rarely happening bug which could have caused a deadlock when stopping a huge amount of streamed at the same time sounds.
  • Removed the deprecated header ESoundEffects.h
  • Documentation fixes

irrKlang 1.0

  • Added ISound::setIsLooped(), to make it possible to change the loop mode of sounds during runtime.
  • It is now possible to preload sounds when using the addSoundSource() method, by setting the parameter 'preload' to true. If this flag is set to false (which is default) the sound engine will not try to load the sound file when calling this method, but only when play() is called with this sound source as parameter.
  • Plugins can now be loaded manually from a custom path using ISoundEngine::loadPlugins();
  • The listener position is now set to a default value when starting up irrKlang. Previously, when playing 3D sounds without changing or setting the listener position at all, 3D sounds would sound differently based on the chosen audio driver.
  • Fixed a bug of the Linux version of irrKlang, causing ALSA to crash on some very few systems (known as the '!snd_interval_empty(i)'-problem).
  • Resampling mono sounds in all devices except directSound (it was ok there already) now uses only half the memory as before.
  • To reduce name clashes with the windows headers for people not using namespaces, the Interface IUnknown has been renamed to IReferenceCounted.
  • IrrKlang can now be used easily together with the latest 6 versions of Irrlicht (header compatibility).
  • Fixed a small bug in the .NET version which could return 'false' instead of 'true' under special circumstances when calling isCurrentlyPlaying() (Microsoft compiler bug).
  • The documentation has been updated and extended with lots of examples.
  • Examples now also include project files for visual studio 6.0

irrKlang 1.0RC1

  • irrKlang now supports MacOSX, using CoreAudio. There is a new sound output driver enumeration literal, named ESOD_CORE_AUDIO, which will be chosen automaticly when using ESOD_AUTO_DETECT on MacOsX. Please note that irrKlang is a universal binary for both x86 and ppc, but only x86 hardware is supported yet, altough some few features might work with the ppc irrKlang version.
  • This version is release candiate 1 for version 1.0. There are now known bugs in irrKlang currently, and if no major bugs will be found, version 1.0 will be released after some time. We are already working on new user requested features which will be integrated after the 1.0 release.
  • irrKlang.NET is now able to override the file access just like the C++ version. There is a tutorial in\CSharp.04.OverrideFileAccess demonstrating this. Use IFileFactory with ISoundEngine::addFileFactory for this.
  • Added a method to irrKlang.NET, making it possible to add System::IO::Streams as sound sources. Note that the stream is totally read into memory when adding the sound source. If you want irrKlang to dynamically open and close custom file streams without loading everything into memory, use the addFileFactory with your own IFileFactory implementation.
  • Documentation improvements for the .NET version.

irrKlang 0.9.1

  • License change: All of the irrKlang Pro features (except static linking and signed assembly) are now available for non-commercial use too. Please take a closer look at the new license and the website for details. The license was changed because of lots of user requests, so that free and open source projects are now able to use irrKlang pro's features as well. To compensate this, this means that irrKlang is no more free for commercial use.
  • Mp3 files with ID3 v2 or later tags in it have not been played correctly in irrKlang, this is fixed now.
  • It is now possible to add sound source aliases for an existing sound source. This is useful if you want to play multiple sounds but each sound isn't necessarily one single file. Also useful if you want to or play the same sound using different names, volumes or min and max 3D distances. Use the now existing third overload of ISoundEngine::addSoundSource() which takes another sound source as parameter for this.
  • added ISound::PlayLength property to irrKlang.NET to retrieve the length of sounds in milliseconds.
  • irrKlang.NET now needs a lower amount of memory every time a sound is played and also frees the memory used by these sounds earlier.
  • irrKlang.NET now supports sound sources just as the irrKlang C++ version does, which means better access and possibility to influence sounds.
  • irrKlang.NET now also supports default 3D min and max distances.
  • irrKlang.NET now supports playing sounds directly from custom memory areas, byte arrays (byte[]). Use ISoundEngine.addSoundSource(yourMemoryArray, someName) for this.
  • Using irrKlang.NET, streamed sound files have not been closed on some systems. This is fixed now.
  • It is now possible to set the wanted stream mode for sound sources using ISoundSource::setStreamMode().
  • Reduced the file size of the irrKlang library again a bit.
  • There are two new tutorials for irrKlang.NET in C# available now.

irrKlang 0.9

  • irrKlang is now available in two editions:
    • irrKlang which is still free, also for commercial use
    • irrKlang Pro, for a small license fee (see details on
    Some of the new features added in this version are only available in irrKlang Pro (see website for details). The 'pro' features can be accessed and tested with the free version as well, but the audio engine will start playing additional sounds (female voice saying 'irrKlang pro') from time to time once a pro feature has been used.
  • irrKlang now supports DirectSound8 as additional sound output driver. Note that the E_SOUND_OUTPUT_DRIVER enumeration has a new member now: ESOD_DIRECT_SOUND_8. The ESOD_DIRECT_SOUND is still available.
  • Doppler effects are now supported (with the DirectSound drivers at least). Use ISound::setVelocity to set a sounds velocity, ISoundEngine::setListenerPosition() to set the listeners velocity and ISoundEngine::setDopplerEffectParameters() to adjust two parameters influencing the doppler effects intensity.
  • There are now sound stop events: Events which are called when a sound has finished playback. Use the new interface ISoundStopEventReciever for this. The interface has only one method to be implemented by the user: OnSoundStopped(). Implement this interface and set it via ISound::setSoundStopEventReciever(). The sound stop event is guaranteed to be called when a sound or sound stream is finished, either because the sound reached its playback end, its sound source was removed, ISoundEngine::stopAllSounds() has been called or the whole engine was deleted.
  • Sound effects are now usable when using the ESOD_DIRECT_SOUND_8 driver (default). Available sound effects are:
    • Chorus
    • Compressor
    • Distortion
    • Echo
    • Flanger
    • Gargle
    • 3DL2Reverb
    • ParamEq
    • WavesReverb
    Those effects can be accessed via ISound::getSoundEffectControl(), if the 'enableSoundEffects' flag was set to true when starting the sound with play2D() or play3D().
  • There is now the option to change the play back speed and the frequency of a sound. Use ISound::setPlaybackSpeed() for this.
  • It is now possible to set a default volume for every sound source via ISoundSource::setDefaultVolume().
  • There is now a statically linkable version of irrKlang available (currently windows and irrKlang pro only). Just #Define IRRKLANG_STATIC in your project settings or before including the irrKlang headers to use the static lib version of irrKlang. Note that you need to use multi threaded runtime libraries in your project when using irrKlang as static lib, other wise you will get linker errors (like "__getmbcp already defined in LIBC.lib(mbctype.obj)") or random crashes. In Visual Studio, this setting can be found in Project Settings -> C++ -> Code Generation -> Runtime Library.
  • Memory sound sources are now copied by default, so the memory block can be discarded after calling ISoundEngine::addSoundSource(). There is a new parameter 'copyMemory' which can be set to false to make the engine use the old, non memory copying behavior.
  • ISoundEngine::getSoundSource() now has a second parameter making it possible to only retrieve a already added sound source without loading it.
  • There is a new example available showing how to use sound effects.
  • Refactored a lot of internal code, reducing the file size of the irrKlang binaries.
  • Fixed a possible synchronization problem (possible crash)

irrKlang 0.8.1

  • There was a serious bug in the WAV file reader which read over the end of files, when streamed, causing a short 'click' sound. Fixed now.
  • 8 Bit sound streams don't produce a click when stopped anymore.
  • Audio stream readers which report a wrong amount of frames in the stream now don't get clipped before playing the end of the sound anymore.

irrKlang 0.8

  • There are now two ways to set default min and max distances for 3D sounds: ISoundEngine::setDefault3DSoundMinDistance(), ISoundEngine::setDefault3DSoundMaxDistance for global min/max control, as well as ISoundSource::setDefaultMinDistance(), ISoundSource::setDefaultMaxDistance(). to influence the default min/max value based on the sound source.
  • Some documentation updates
  • The short 'click'/'pop' sound which sometimes has been played on streamed, non looped sounds when using the DirectSound device is now removed.
  • The ALSA driver now also works with sound hardware not supporting power of two buffer sizes.
  • License change: file may also be redistributed.

irrKlang 0.7

  • Added possibility to remove sound sources (selective or all at once). See ISoundEngine::removeSoundSource() (two overloads) and ISoundEngine::removeAllSoundSources().
  • There is now the possibility to get the length of any sound source or playing sound. See ISound::getPlayLength() and ISoundSource::getPlayLength().
  • Resources of finished played sounds are now freed much earlier, causing smaller memory usage.
  • When stream playback is paused, the play position returned by ISound::getPlayPosition() won't advance forward anymore in DirectSound, this was a bug which is now fixed.
  • Fixed a bug which caused ISound::isFinished() to be returned incorrect values when using the DirectSound driver.
  • Fixed a bug causing a wrong value being reported using getPlayPosition() when playing very long streams using the WinMM or the ALSA driver.

irrKlang 0.6

  • There are some new supported file formats: MOD, XM, IT and S3M. Implemented using the excellent Dynamic Universal Music Bibliotheque.
  • irrKlang now is available for .NET languages (C#, VisualBasic.NET, IronPhyton, Boo, Delphi.NET etc). See /bin/dotnet for the binary, and / for some examples.
  • irrKlang now chooses sound drivers in a more intelligent way when running in driver auto detect mode (ESOD_AUTO_DETECT). For example when DirectSound is available but fails starting up (for whatever reason), irrKlang will select the winMM driver instead of not playing any sound.
  • It is now possible to influence or disable the threshold where irrKlang desides to stream a file regardless of the user specified setting. Use ISoundSource::setForcedStreamingThreshold for this.
  • irrKlang is now compatible with Irrlicht 1.3, the IReadFile interface has been updated. Meaning you can use the same IReadFile interfaces between those two engines and for example make irrKlang read files using Irrlicht's file system.
  • irrKlang now needs even less memory when playing a lot of short soundfiles at the same time, achieved through a nicer internal (de)allocation scheme.
  • When using software 3d sound (using winMM or ALSA), the left and right speaker were swapped. This is fixed now.
  • Failed COM initialization is now only a warning, and irrKlang will not abort with an error.
  • Under some circumstances (bad windows scheduling, cpu intensive applications etc) it could happen that looped, streamed sound filed played via DirectSound in irrKlang would play strange noises after the first repeat. This has been corrected now.
  • On some hardware under Linux, irrKlang wasn't able to set the wanted buffer size, this has been improved now.
  • Removed a bug causing visual studio 2005 projects not to compile when using irrKlang without a WIN32 define.

irrKlang 0.5

  • Linux is now supported as platform. irrKlang uses ALSA as output target here by default.
  • irrKlang now supports winMM as output driver next to DirectSound in Windows.
  • Added a new method to pause/unpause all sounds:
    ISoundEngine:ISoundSource* setAllSoundsPaused( 
                                    bool bPaused = true )
  • The flag ESEO_LOAD_PLUGINS now correctly prevents loading of plugins if not set. This was not working before.
  • ISoundEngine::stopAllSounds() didn't work with the DirectSound output driver correctly, this has been corrected now.
  • irrKlang can now be used as static lib. Just #Define IRRKLANG_STATIC in your project settings or before including the irrKlang headers to use the static lib version of irrKlang. Note that you need to use multi threaded runtime libraries in your project when using irrKlang as static lib, other wise you will get linker errors (like "__getmbcp already defined in LIBC.lib(mbctype.obj)") or random crashes. In Visual Studio, this setting can be found in Project Settings -> C++ -> Code Generation -> Runtime Library. (If the static library isn't released in this package it may come as separate archive)

irrKlang 0.4

  • Added support for the GCC compiler
  • Added the possibility to load sounds directly from memory. For this, two overloaded methods to the ISoundEngine interface have been added:
    ISoundSource* addSoundSource(void* memory, s32 sizeInBytes, const c8* soundName); ISoundSource* addSoundSource(const c8* fileName, E_STREAM_MODE mode=SM_AUTO_DETECT);
  • Added possibility to override file access easily.
  • Added two tutorials: MemoryPlayback and OverrideFileAccess.
  • Added support for the Code::Blocks IDE
  • Removed streamMode parameter from getSoundSource(). If you needed this, please use addSoundSource() now instead.
  • Sounds are now loaded correctly independent of their file extension.
  • irrKlang no longer crashes if more than one instance of it is created.

irrKlang 0.3

  • Added the option to play mp3 files. This functionality is available as plugin and works when the file ikpMP3.dll is available. Simply remove it if you don't want or need mp3 support for your software. Please note that if you are using mp3 files in your application, you might need to pay a license fee to Thompson for their patent (This is nothing irrKlang specific, every application needs to do this today if Thompson wants it to.)
    The ikpMP3.dll decoder is available as full source in the \plugins directory and licensed under the LGPL.
  • Added plugin support. Create a .dll which starts with ikp (for IrrKlangPlugin) including a function looking like this:
    __declspec(dllexport) void __stdcall irrKlangPluginInit( ISoundEngine* engine, const char* version) { // your code here }
    irrKlang will load the dll and invoke that function. There is an example plugin with full source doe in the \plugins directory which enhances irrKlang to decode mp3 files.
  • IrrKlang now supports 3D buffers (enabled by default). Previously, they have been emulated. By not specifying the ESEO_USE_3D_BUFFERS flag when calling createIrrKlangDevice(), irrKlang will not use 3D buffers.
  • Added the possibility to write debug info to any windows debugger supporting OutputDebugString() (like VisualStudio). This is pretty useful if your application does not capture any console output. Use ESEO_PRINT_DEBUG_INFO_TO_DEBUGGER to enable this feature when calling createIrrKlangDevice().
  • irrKlang now supports multiple rolloff models. 3D sounds are now played back with a logarithmic rolloff by default. In previous versions, irrKlang used a linear rolloff model. Use ESEO_LINEAR_ROLLOFF when calling createIrrKlangDevice() to switch to the linear rolloff model.
  • The createIrrKlangDevice() function now accepts several options as flags. Note that the C++ compiler automaticly converts bools to this flags so if you used a previous version of the engine you might want to check if your parameters are correctly set.
  • Added the method ISound::getPlayPosition() which returns the current play position of the sound in milliseconds.
  • Fixed a possible crash when stopping a streamed sound manually at the same time it also stopped automaticly.
  • Fixed playback of looped streamed sounds causing artifacts under several circumstances.

irrKlang 0.2

  • Fixed 3d positioning of sounds
  • Fixed a bug in ISound.h causing irrKlang header not to compile with some strict compiler settings
  • Added some internal performance improvements

irrKlang 0.1

Initial release. Although this is the first release, irrKlang already has some features:

  • Support for .WAV and .OGG files (MP3, FLAC, SPEEX support planned and
    coming soon)
  • Buffered and streamed audio playback - Seamless 2D and 3D audio: It is possible to play short simple stereo sounds as well multiple large streamed sound files in 3D space at the same time for example.
  • High level autodetection: The engine can do everything for you. Just tell it to play a sound file, and it will load, cache and/or stream sound data for you automaticly, depending on what is best for performance and memory usage. But if you want to specify how the engine should handle this, you can specify this as well.
  • Extendable: Possibility to write own file format readers/decoders to
    extend the engine with it.
  • Multi/Singlethreaded modes: The engine can run both multithreaded or singlethreaded in the same thread as your application, to make it possible to debug your application easier for example.
  • Low level audio output manipulation: Before starting to play a sound or even during it is already playing, it is possible of course to alter any aspect of it like panning, volume and 3d position.
  • Fast 3D audio on low end hardware: Because some low end audio hardware is not able to play 3D sounds without significant performance loss or some don't support 3d audio buffers at all, irrEdit has a high performance 3d sound buffer emulator built-in, causing a sound experience nearly as it was a real 3d sound buffer.
  • Separate music and sound control: As most applications want to separate between sound and music playback, the engine offers to control them separately, like for example via a master volume control. No need to manage alls your playing sounds just to change the volume of all sounds. (The control of the 'music' part in the API is not available in version 0.1 yet, but can be used via normal sounds already)
  • Full playback control: Play any sound and forget about it if you want. Then later, you can query at any time which sound is currently playing and influene this if you want.


Copyright© Ambiera e.U. all rights reserved.
Contact | Imprint | Products | Privacy Policy | Terms and Conditions |