Index

Introduction
kX Project Mission
kX Audio Driver Overview
kX Menu

kX Mixer
kX Mixer Overview
Basic Functions
Master Controls
Inputs & Outputs
Recording
AC97 Codec
Effects Levels
SoundFonts
Analyser

kX DSP
kX DSP Guide
kX Explained

kX Router
kX Router Guide
Routings Guide

kX Editor
kX Dane Assembler Guide

kX Automation
kX Automation Guide

kX Remote
kX Remote Controller

kX Setup
kX Setup Instructions

kX ASIO
ASIO Control
ASIO Recording
kX Explained

kX Speaker Test and Surround Setup
Speaker Test
Surrounder

Troubleshooting
Troubleshooting & Known Issues

Frequently Asked Questions
FAQ

Appendix A: Technical Reference
kX Signal Flow Diagram
Hardware Reference
IO Assignments
MIDI Implementation

Appendix B: Glossary
Glossary

Appendix C: Command Line Reference
Command Line Reference

Copyright & Credits
Legal Notice and Copyright
Credits
License Agreement
SDK License Agreement


Mission

Our mission is to allow end-users unfettered access to all features of the kX-compatible* soundcards, to promote the development of supporting applications and to encourage a free exchange of information useful towards furthering software development for all kX-compatible soundcards. Our motto is: "Expanding the Potential Exponentially".

Historical background

The kX Project was born out of a perceived need to expand the possiblities for use by musicians of the kX-compatible soundcards, under new and emerging operating systems which no longer support the old VxD device driver model.

Until now, musicians interested in exploring the detailed operational aspects of their Emu10k1 and 10k2-based soundcards have been limited to either working with the drivers that came with their cards, or installing superior VxD drivers originally intended for the E-mu Systems APS (Audio Production Studio) card, but being unable to upgrade to newer operating systems. In some cases, demanding users have decided to change operating systems altogether, i.e. to linux, or to limit the use of their 10kx soundcards to tasks such as gameplaying and SoundFont playback.

An independent developer set out in the spring of 2001 to write the WDM drivers that would put the power back into the hands of the end-user, and throw open the door to practically unlimited software development for the 10kx cards. This intrepid and unrelentless developer was Eugene Gavrilov, who continues to spearhead the kX Driver programming effort.

A small team of independent testers and developers has now joined Eugene to continue kX Project development. Working together we can and will Expand the Potential and allow end-users unprecedented control over their soundcards and develop tools for musicians by musicians.

- Hanz Petrov, Eugene Gavrilov
December, 2001


kX Audio Driver Overview

The kX Audio Driver is a WDM (Windows Driver Model) driver, designed to be used with any kX-compatible PCI sound-card (notably the Creative Labs SoundBlaster Live! and Audigy series of cards, and E-mu Systems' Audio Production Studio sound-card).

The following features are either fully or partially supported by the kX Audio Driver:

  • Wave Playback & Recording
  • MIDI Synthesizer (Synth Engine)
  • MIDI UART In/Out
  • DirectSound 2D
  • DirectSound 3D (software emulation)
  • SoundFonts
  • ASIO Playback & Recording
  • DSP Microcode Loading/Unloading/Editing
  • Full AC97 I/O control
  • Software AC-3 Decoding

Note that the kX Audio Driver conforms to the WDM specification and so it is only compatible with the following Microsoft Windows operating systems: Windows 98 (Second Edition), Windows Me, Windows 2000 and Windows XP.

kX Control Applets

The following kX control applets can be accessed from the kX Menu (via the system tray icon or from within the kX Mixer window):

kX Mixer | The main application used for controlling the kX Audio Driver. Includes Master levels and switches, Inputs and Outputs, Recording Levels, AC97 Codec, Effects Levels, SoundFonts and Analyser, as well as providing access to the other kX control applets.
kX DSP | DSP Control applet for effect loading, unloading and patching. This applet also provides access to the kX Editor and to the DSP plug-in interfaces (for tweaking effects settings).
kX Router | Control applet providing access to the routing of the software input channels, including PCM Wave, AC3, and MIDI Synth (16 channels) and 16 kX ASIO channels (it is merged with previously known kX ASIO).
kX Editor | DSP microcode editor. Accessible from within the kX DSP control applet or directly from the the kX Menu.
kX Automation | Control applet in which MIDI controls can be assigned to parameters.
kX Remote | Remote Controller for kX. It has no buttons at the moment, but they are coming in the future.
kX SoundFont | kX SoundFont loader. Provides loading of SoundFonts for MIDI Synth playback.
kX Speaker Test | Utility for testing and trouble-shooting speaker setup.


kX System Tray Menu

kX Menu

The kX Menu provides access to the kX driver functions, both directly and through the kX Control Applets.

The kX Menu can be displayed by right-clicking the kX system tray icon, , which is found in the Windows System Tray (typically found at the lower right corner of the desktop), or by right-clicking within the display area of the kX Mixer or any of the kX control applets.

The kX Menu will appear as follows:

Menu Options:

kX Control Applets:
kX Mixer | Opens the main kX Mixer applet.
kX DSP | Opens the kX DSP control applet.
kX Router | Opens the kX Router applet.
kX Editor | Opens the kX Editor applet.
kX Automation | Opens the kX Automation control applet.
kX Remote | Opens the kX Remote control applet.
kX SoundFont | Opens the kX SoundFont control applet.

Device Opens the device selection sub-menu:

For systems with multiple kX-compatible cards, this menu allows the user to change the currently selected card.
Changes made in any kX control applet will affect currently selected card only.

Settings Opens the Settings sub-menu:

Save Settings
Save settings for all kX applets as a file with the extension .kx. Default filename is kxdefault.kx, however, any filename may be used.

Load Settings
Load previously saved kX settings for all kX applets. The file extension for kX settings is .kx

Reset Settings
Resets all the kX Audio Driver and kX Mixer settings to their default values. Be sure to save your current settings before resetting.

Setup Buffers

Setup the kX buffers. In normal usage no adjustments will be required to the default buffer setup, however, facility is provided for adjusting the following settings:

  • Set Tank Memory (TRAM) Size. Range is from None to 2048kB. Adjusts the amount of host memory available for use by certain DSP effects (TRAM is typically used for delay lines). Default setting is 256kB. Note that this setting does not affect the total amount of memory available for DSP microcode (value fixed in hardware).
  • Set Playback Buffer Size. Ranges from 16384 bytes (estimated 17.07ms latency) to 256 bytes (estimated latency 0.26 ms). Smaller is faster, but may not be usable depending on system hardware and software configuration.
  • Set Recording Buffer Size. Range is from 384 to 65536. Default value is 16384 bytes. Normally no adjustment to this setting is required.
  • Set Number of AC3 Buffers. Range is from 2 to 8.

Generate GUID
GUID (Globally Unique IDentifier) generation utility. Generates and copies a GUID to the clipboard, ready to be pasted. GUIDs are used in skin editing and also to identify DSP plug-ins. Typical users will not need to access this function.

Effects Opens the Effects Plug-ins sub-menu:

This menu allows new DSP objects and plugins to be registered for use in the kX DSP applet.
Also, currently registered DSP objects having User Interfaces can be accessed directly from this menu (for tweaking effects settings).

Skin Open the Skins sub-menu:

This menu allows new skins to be registered for use with the kX Mixer and other kX control applets. Default extension for kX skins is kxs (note that kxs files are in fact zip or rar files, and can be opened for inspection or modification by renaming to zip or rar, depending on file).
Also, currently registered skins can be selected from this menu and will be displayed the next time the kX Mixer (or other kX applet) is opened.

Internet Opens the Internet link sub-menu:

This menu provides a link to the kxproject website, and allows automatic checking for driver updates, as well as facilitating DSP effect and skin downloads via direct links (note that this feature is under development).

Language Opens the language selection sub-menu.

Currently supported languages are English, Russian, Deutsch, Polish, Espanol, Romanian, French, Italian, Swedish, Norwegian, Dutch, Brasilian, Bulgarian, Croatian and Hungarian. Note that additional language support can be added by editing the file kxskin.ini. This file can be found within the file kxskin.kxs, which is in a fact a zip file (right-click and select "open with...", then choose winzip (or equivalent) to open, or simply rename to .zip - and don't forget to rename back to .kxs when you're done).

About... Opens the kX Information applet:

Scroll down for a detailed information listing,including kX Control Version Number, Skin Info, Copyright, PCI Card Info and Credits.
Any bug reports should include the entire contents of this window. Copy to the clipboard by right-clicking within the text window, then choosing "select all" and then "copy". Paste into bug report.

Help Opens this Help window.

Speaker Test Opens the kX Speaker Test applet

Quit Closes and Quits the kX Mixer.

After selecting Quit from the kX menu, both the kX Driver and the Windows mixer will still remain active, although the kX mixer and all kX applets will be closed. Run kxmixer again to re-activate - double-click [image] kxmixer.exe in the windows/system32 directory, or from the Windows Start menu select Run, then type kxmixer.exe in the text box and click OK. Newer versions also can be run from a folder 'kX Audio Driver' in Start Menu\Programs.


kX Mixer Overview

kX Mixer is an application which controls the kX Audio Driver. Access to Input and Output controls, and to the kX control applets, is provided through the kX Mixer user interface. Basic mixer control functions (common to most mixer applications) are explained here.

The icons found at the left of the mixer provide access to the different mixer control sets.
(Note that the following descriptions reference the default kX skin graphics. The default kX skin is "Aqua"). More on skins.

Master level controls and buttons

Input and Output level controls

Recording level controls

AC97 Codec controls

Effects amount controls

SoundFont controls

Analyser

The icons at the bottom of the mixer open the following new kX applets:

Open the kX DSP applet

Open the kX Router applet

Open the kX Automation applet

Open this help file

Open the Speaker Test applet

Device Selection Drop-down Menu

The icons at the right of the mixer have the following functions:

Close the kX Mixer window (the mixer will remain active in the Windows System Tray).

Minimize the kX Mixer to the Windows Taskbar

Open the kX Information applet


Basic

Basic Control Functions

kX Mixer uses single or double sliders to set levels, depending on the nature of the control item (mono or stereo).

Single (mono) slider

Double (stereo) slider

Slider levels can be set by clicking and dragging with the mouse, by using the page-up and page-down keys (for large increments) or by using the arrow-up and arrow-down keys (for small increments). The mouse-wheel can also be used for fine-tuning slider settings.

Double sliders may be linked so that they move together. Linked sliders display the Linked icon

To unlink, click the icon; unlinked sliders display the Unlinked icon

Most controls can be muted by clicking on the Mute icon

Muted controls display the Muted icon; click to un-mute

Numbers above show the amount of the slider currently set.


Master Controls

Master level controls and buttons

The kX Mixer Master control page provides access to the following level controls and buttons:

Master Volume
This stereo slider pair controls the overall playback level.

PCM Wave Volume
This stereo slider pair controls the PCI Wave source playback level.

MIDI Synth Volume
This stereo slider pair controls the MIDI Synth source playback level.

Speaker Setup
This button opens 'Surrounder' effect settings (Surrounder is uploaded by default). Refer to Surrounder guide for details.

Digital Output Only
This button toggles Digital Output Only (DOO) mode for EMU10k1-based cards, and allows simultaneous recording of multiple analog sources, such as Line In, CD Audio, Auxiliary In and TAD In. With Digital Output Only active, a digital output device is required for monitoring (except for Audigy cards, which are considered as always being in DOO mode thus allowing multiple analog sources to be recorded).

Swap Front and Rear
The Swap Front and Rear Output toggle button is used to improve analog sound quality by taking advantage of the superior DAC used for the rear speaker (note that speakers are swapped by default). Not available to APS cards because they don't have AC97 Codec.

SPDIF Bypass
The SPDIF Bypass toggle button silences SPDIF digital output (for both 10k1 and 10k2 cards - not tested, but it should work).

Route Headphones to Center/SubWoofer
The Route Headphones to Center/SubWoofer toggle button can be used to divert headphone output to the center/subwoofer channel.

SPDIF Frequency
This sample rate pull-down sets the frequency for SPDIF digital output (10k2 cards only). Choices are 44100, 48000 (default) and 96000, measured in samples per second. This setting will not affect internal sample frequency which is always locked by hardware at 48000.


Inputs & Outputs

Inputs and Outputs

The kX Mixer Inputs and Outputs page allows control of the following discreet inputs and outputs (note that depending on the model of your soundcard, some of these inputs may not be displayed):

Outputs:

Analog Front
This slider controls the level of the front speakers in analog mode (stereo).

Analog Rear
This slider controls the level of the rear speakers in analog mode (stereo).

Analog Center
This slider controls the level of the center speaker in analog mode (5.1 and Audigy cards only).

Analog Subwoofer
This slider controls the level of the subwoofer speaker in analog mode (5.1 and Audigy cards only).

SPDIF
This slider controls the playback level of the SPDIF output (stereo digital)

Phones
This slider controls the playback level of the Headphones output (stereo analog - LiveDrive only).

A1/A2 Out
This slider controls the level of the Analog-1 and Analog-2 outputs (stereo analog - APS only)

A3/A4 Out
This slider controls the level of the Analog-3 and Analog-4 outputs (stereo analog pair - APS with MOC card only)

A5/A6 Out
This slider controls the level of the Analog-5 and Analog-6 outputs (stereo analog pair - APS with MOC card only)

A7/A8 Out
This slider controls the level of the Analog-7 and Analog-8 outputs (stereo analog pair - APS with MOC card only)

Inputs:

AC97 In
This slider controls the level of the input from the AC97 Codec (analog mono & stereo sources).

CD Digital In
This slider controls the level of the CD Digital input (stereo digital SPDIF).

Unknown 1 In
This slider controls the level of the Unknown 1 input (stereo digital).

Unknown 2 In
This slider controls the level of the Unknown 2 input (stereo digital).

Mic2 In
This slider controls the level of the Mic2 input (mono analog - LiveDrive only).

Coaxial In
This slider controls the level of the Coaxial/Optical input (stereo digital - LiveDrive only).

Aux2 In
This slider controls the level of the Auxiliary-2 input (stereo analog - LiveDrive only).

A1/A2 In
This slider controls the level of the Analog-1 and Analog-2 inputs (stereo analog pair - APS only).

A3/A4 In
This slider controls the level of the Analog-3 and Analog-4 inputs (stereo analog pair - APS with Edrive only).

D1 In
This slider controls the level of the Digital-1 input (stereo digital - APS only)

D2 In
This slider controls the level of the Digital-2 input (stereo digital - APS with Edrive only)


Recording

Recording level controls

kX Audio Drivers support 'Direct SPDIF Recording'. Read Direct Recording guide for details.

The kX Mixer Recording control page provides access to the following record level controls:

Software Sources:

Master Recording Level
This stereo pair controls the overall recording level for all sources.

Wave Recording Level
This mono slider controls the recording level for the PCM Wave source.

Synth Recording Level
This mono slider controls the recording level for the MIDI synth source.

FX1 (Reverb) Recording Level
This mono slider controls the amount of FX1 (Reverb by default) applied to playback sources while recording.

FX2 (Chorus) Recording Level
This mono slider controls the amount of FX2 (Chorus by default) applied to playback sources while recording.

Hardware Sources:

AC97 Recording Level
This stereo pair controls the recording level for the AC97 source(s)

CD Digital Recording Level
This stereo pair controls the recording level for the CD Digital (CD_SPDIF) source.

'Unknown 1' Recording Level
This stereo pair controls the recording level for the Unknown 1 source.

'Unknown 2' Recording Level
This stereo pair controls the recording level for the Unknown 2 source.

Mic-2 / Line-2 Recording Level
This stereo pair controls the recording level for the Mic-2 / Line-2 source (for systems with LiveDrive only).

Coaxial Recording Level
This stereo pair controls the recording level for the Coaxial source (for systems with LiveDrive only).

Aux2 Recording Level
This stereo pair controls the recording level for the Aux2 source (for systems with LiveDrive only).

Analog-1/Analog-2 Recording Level (APS card only)
This stereo pair controls the recording level for the analog A1/A2 sources.

Analog-3/Analog-4 Recording Level (APS with Edrive only)
This stereo pair controls the recording level for the analog A3/A4 sources.

Digital D1 Recording Level (APS card only)
This stereo pair controls the recording level for the digital D1 source.

Digital D2 Recording Level (APS with Edrive only)
This stereo pair controls the recording level for the digital D2 source.


AC97 Codec

The kX Mixer AC97 page allows control over the AC97 Inputs and Outputs (note that all kX-compatible cards have an AC97 codec, with the exception of the E-mu APS and Audigy2 Platinum eX).

Outputs:

TAD Out
Telephone Answering Device output level (mono). Typically accessed via an on-board 4-pin input and output connector labeled "TAD".

PC Speaker
PC Speaker output level (mono). Typically accessed via an on-board 2-pin connector labeled "PC_SPK".

Inputs:

TAD In
Telephone Answering Device input level (mono). Typically accessed via an on-board 4-pin input and output connector labeled "TAD".

Mic
Microphone input level (mono). Typically accessed through a 1/8" stereo jack at the rear of the card. Note that in general it is preferable to use the Line Input with an external preamp (pre-amplifier) if possible, since the Mic input tends to be noisy due to low-cost/performance built-in amplifier components.

Line
Line-In input level (stereo). Typically accessed through a 1/8" stereo jack at the rear of the card.

CD
CD Analog-In level (stereo). Typically accessed via an on-board 4-pin connector labeled "CD_IN" (not to be confused with the digital CD_SPDIF input).

Video
Video-In level (stereo). Note that on most kX-compatible cards, this input is not implemented by manufacturer (no hardware connection point available).

Aux
Auxiliary-In level (stereo). Typically accessed via an on-board 4-pin connector labeled "AUX_IN"

Other functions:

AC97 Recording Source
AC97 recording source is selected via the AC97 drop-down menu Choices are Mic, CD, Video, Aux, Line-In, Stereo Mix, Mono Mix or Phone. Note that only one analog AC97 source can be recorded at a time, unless StereoMix (or MonoMix) is selected, in which case multiple AC97 sources will be recorded together with PCM (system audio) output. Refer to the Signal Flow Diagram for further details.

The AC97 Codec may be reset to default settings by clicking on the AC97 Reset button.

Microphone 20dB Boost option is enabled by clicking on the x2 Boost button.


FX Levels

FX Amounts

The kX Mixer FX (DSP effects) amounts page permits control of the overall FX levels.

Wave Stereo Reverb
This slider controls the Reverb amount for Wave playback.

Wave Stereo Chorus
This slider controls the Chorus amount for Wave playback.

Refer to the kX DSP guide and to the kX Router guide for more details on FXBus usage and default mappings.


SoundFonts

kX Mixer provides the ability to load SoundFonts for MIDI Synth playback.

Load SoundFonts by clicking the Upload icon on the SoundFont page. This will open a browse dialog; select a SoundFont file to upload (extension .SF2).

Currently loaded SoundFonts are listed in the upper pane. Selecting a listed SoundFont will cause SoundFont information to be displayed in the lower pane, including Name, Engine, Copyright, Engineer and Statistics.

Memory Usage is displayed in the Memory Usage Bar at the bottom of the SoundFont page.

To unload a SoundFont, select it in the upper pane, then click on the Unload icon.

The kX driver supports the loading of SoundFont 2.0 and 2.1 files only; the SoundFont 1.0 format (.SBK) is not supported. Note that there is currently no support for SF2.1 Modulator properties.

There is also an option of saving and loading SoundFont collection.

The kX WDM driver assigns SoundFont cache memory on-demand; there is no user-adjustable cache control. In theory, the maximum loadable SoundFont filesize is limited only by system resources, however this maximum will vary between 30% and 70% of physical RAM, due kernel memory limitations and depending on many factors. In any event, only 32MB of samples can be played back at any one time, due to hardware limitations.


Analyzer

Analyser

kX Mixer includes an Analyser - a graphic representation of the Wave and Synth voices, displayed according to their volume.

Synth voices are displayed in blue, Wave voices are displayed in red and ASIO voices are displayed in green.

Volume is displayed lighter (blue - light blue, green - light green, red - orange).

To acess the Peak Meter(s), use kX DSP applet or Effects submenu.


A guide to the kX DSP window

kX DSP Guide

Overview
The kX DSP applet represents the internal connections of the kX driver graphically, and is one of the most powerful features of the kX Audio Driver. Signal routing is done by connecting virtual inputs and outputs with virtual cables in which the digital sound streams are being transmitted, in the same fashion as you would use patch cords to connect different units in a sound studio or in a home stereo setup.

The DSP window consists of four main objects:

FXBus
Prolog
XRouting
Epilog

Other objects (DSP effects such as, EQs, etc.) can be added or removed as required.

Connections
With the exception of the FXBus object, it is possible to display the current input and output connector assignments by placing the mouse over the connector box (inputs are red and outputs are blue). This activates a small popup window, which shows the label of the connector. Many of the default connections may not be needed for your personal setup, but are enabled by default to ensure that as many of your soundcards functions as possible are activated. This includes both analog and digital input connectors as well as analog and digital output connectors.

Connecting and Disconnecting
Connections are made by clicking/holding on a connector and dragging with the mouse to the desired destination. Inputs are always located on the left side of the objects while outputs are on the right side. Outputs can be connected to multiple inputs, however inputs can only be connected to a single output, and you cannot connect inputs to inputs or outputs to outputs. Note that connections to FXBus are always done from the destination and to the bus. To disconnect any input or output, simply right-click on its connection point and select Disconnect.

Resetting the DSP
The DSP window can be cleared and reinitialized by right-clicking on the background canvas and selecting the appropriate function from the pop-up menu. Clear DSP removes all effects and objects (except FXBusses). Reinitialize DSP restores default settings. Re-align plugins restores default positions of DSP objects.

Adding Objects and Effects
New DSP objects and effects can be added into the DSP window by right-clicking on the window background and selecting 'Add Effect / Plugin' from the pop-up menu. You may choose from the objects and effects listed, download additional effects from the kX Project website, or create your own. Note that effects must be registered before they can be used in the DSP window. Choose 'Register Plugin (Dane/RIFX/DLL...)' from the pop-up menu and select the desired effect file or plug-in. Upon successful registration, any new effects will be displayed in the list of available objects.

When a new object is added into the DSP window it appears in a red frame. Objects must be translated before they can be patched-in and used (translation is required to allocate physical resources; microcode memory, TRAM and registers). Right-click, select 'Translate' and press the 'ok' check mark. Note that the default microcode position of "Don't Care" is normally used, however, in the future it will be possible to select the physical location of the effect/plug-in in the microcode memory - this may be important for correct routing under certain circumstances. If sufficient resources are available, the object will be translated - the frame color will change to light blue (note that the availability of resources such as TRAM, microcode memory, registers, etc., depend both on the model of your soundcard and on the size and quantity of loaded objects and effects). Connect source and destination to the object. Activate the object by right-clicking and choosing 'Enable'.

Tweaking DSP Settings
If the DSP object has adjustable settings, you can tweak these by selecting 'Tweak' from the object menu (right-click). The settings can also be accessed from the kX Menu (displayed by right-clicking on either the main kX Mixer or the system tray icon). The settings are found in the 'Effects' submenu. To reset the object settings, select 'Reset Settings' from the object menu in the DSP window.

Example: Effect settings for the Stereo Chorus effect in version 3531

Unloading and removing DSP objects
DSP objects can be disabled and unloaded by selecting the appropriate commands from the object menu in the DSP window (right-click). Disabling an object simply disables its output; objects must be untranslated or unloadedin order to be cleared from DSP memory. The Untranslate command will free hardware resources associated with an object without unloading the object from system memory. An object can be unloaded completely, freeing up all driver allocated resources, by selecting the Unload command.

Aditional options
DSP objects can be muted or bypassed by selecting mute or bypass command in the effect settings.
Effect settings can be reset with the reset button.

Device selection in the DSP window
DSP settings are unique to each installed kX-compatible soundcard. This current soundcard is displayed (and selectable) in the lower right corner of the DSP window.

Basic Object Blocks

When the kX DSP window is first opened, the DSP objects that are loaded by default will be displayed. These include the FxBus, Prolog, Routing, and Epilog objects. These are the basic objects used to represent and connect hardware and software inputs and outputs.

FXBus

The FXBusses are virtual 'streams' from the inside of the soundcard to the DSP window. All sound that is generated inside the computer by players and sequencer programs comes out of one or more of these (mostly 2 in stereo pairs).

Default settings:

WaveOut Left and Right are at FXBus0 and FXBus1.
MIDI Synth Out Left and Right are at FXBus02 and FXBus03.
Surround (AC3) and DirectSound 3-D streams are located at FXBusses04 to 09.

Reverb and Chorus effects are connected to Wave, MIDI synth and FXBus13/14. The direct stereo connections to Wave/MIDI synth makes it possible to adjust stereo reverb and chorus directly from the FX window in the kX Mixer.
The connections to FXBus 13 and 14 are general mono send return connections to the effects. Be aware that it is possible to route twice to the effects thus adding effects twice to the signals.

The default routings can be changed for every source. This is described in the kX Routing and kX ASIO sections.

Prolog

The inputs on the soundcard are located in the prolog object. The outputs on the prolog represent the physical inputs on your soundcard (and on the front bay drives, daughter cards or external input drives connected to the card). These connectors are stereo pairs and correspond to the lower row of faders located on the Inputs and Outputs page of the kX Mixer.

Note that these faders do not affect the normal recording mix, but do affect the ASIO levels.

On a 10k1 card the prolog represents the following input signals (7 stereo pairs):

In0/1:AC97 in L/R
In2/3: CD Digital in L/R
In4/5: Unknown 1
In6/7: Coaxial / Optical in L/R (LiveDrive/Daughter Card)
In8/9: Line 2/mic 2 in L/R (LiveDrive)
In10/11: Unknown 2
In12/13: AUX 2 in L/R (LiveDrive)

XRouting

(X)Routing is the object that takes care of mixing the signals together and sending them to the correct outputs. It mixes the prolog inputs with the FXBus signals and routes these to different outputs depending on your mixer settings, including front, rear, center, sub, headphones and last but not least recording (but not ASIO recording).

More information can be found here.

Epilog

The epilog represents the physical outputs on the soundcard, the recording input, and the 16 ASIO recording inputs.

Normally all outputs are connected, but in some cases (e.g. two speaker setups) you actually only need one pair of cables that connects to the output on which you have connected your speakers.

The recording mix is done according to the settings in the Recording page of the kX Mixer. Note that these settings only affect actual recording and not what you hear. Also, they do not affect ASIO recording.

The last 16 channels are the ASIO recording inputs. They are bundled in stereo pairs (even/odd equals left/right) when the ASIO recording host is set up for stereo recording.

You can connect any output from any object to these inputs.

Tips and tricks

You should get familiar with DSP window by moving (and removing) some cables and objects and observe the influence on the kX Mixer. Deleting any of the basic DSP objects will result in decreased mixer functionality and will remove the associated faders in the kX Mixer.

The routing object can be bypassed by connecting an FXBus directly to an output (epilog). This can be useful for setting up surround mixing in an ASIO host, such as Emagic Logic Platinum or Steinberg Nuendo.

When (or if) your DSP routing gets out of hand, or you loose control, you can either clear and reinitialize the DSP or load a previously saved setup (from the main mixer menu or system tray menu).

An example of kX DSP configuration


The kX Router

kX Router

Overview

The kX Router applet is activated from the kX Mixer or from the kX Menu. This applet displays and lets you change how and where the audio streams from within the system are mapped to the 16 FXBusses in the kX DSP applet.

Audio Streams and the kX Router

Software outputs include:

  • Wave Left and Right (Windows MultiMedia (WinMM) subsystem)
  • DirectSound2D voices (hardware-accelerated)
  • DirectSound3D voices (hardware-accelerated)
  • AC3 voices (5+1)
  • 16 MIDI channels
  • 16 ASIO output channels

These software outputs are grouped as follows:

  • Group 1. Wave Left/Right and DirectSound 2D voices (stereo or mono)
  • Group 2. DirectSound3D and AC3 voices (they use only one mono output that is split by the driver to 2,4 or 6 channels);
  • Group 3. 16 MIDI channels
  • Group 4. 16 ASIO channels

These groups can have different routings, including 16 different routings for MIDI channels and 16 for ASIO channels (all controllable separately).

Each software voice is hardware-routed to 4 different FXBuses. These routings are called 'A', 'B', 'C', 'D', and each send amount can be individually adjusted. Send amounts are called 'send_a', 'send_b', 'send_c' and 'send_d'. Four additional FXBuses are added in the case of 10k2 cards ('E', 'F', 'G' and 'H'), for a total of 8. These amounts can be controlled by the sliders on in kX Router.

Note that Wave, DirectSound and MIDI routings require send_a and send_b to be reserved by the kX driver to perform stereo panning. Therefore, the user can control only the send_c and send_d amounts (although all 'routings' are controllable). For ASIO voices, all 4 amounts are controllable (8 for 10k2 cards) via the sliders in the kX Router - more info here.

The default configuration allows panning of stereo sources using standard Windows / DirectX / MIDI methods (handled internally by send_a and send_b), and to use send_c and send_d as 'FX Send Amounts'. Sends c and d are mapped to Reverb and Chorus by default, and controllable via MIDI Controllers as well as kX Mixer and kX Router sliders.

Once a signal is modified by the send amounts and is routed to its target FX bus, it can then be controlled via kX DSP applet.

Using kX Router

The kX Router functions are very similar to the previously known kX ASIO routing window, that's why they are merged.

The streams in here are either mono or stereo.

Wave and SoundFont Synth route to FXbus pairs 0/1 and 2/3 while the ac3 streams use single busses 4-8.

All streams route to bus 13/14 by default, which acts like send/return for reverb and chorus effects in the default setup.

Tips and tricks

Router settings are unique for each installed soundcard. The currently selected soundcard is displayed in the lower right corner of the window. Card selection may be changed by clicking on the device name display box.


Routings

Routings Guide

Introduction

kX Audio driver exposes 4 different Wave devices: Wave 0/1, Wave 4/5, Wave 6/7 and Wave 8/9. Each device has its own capabilities and default routings.

Wave 0/1

This device can be used for multichannel playback (such as Sonar, DirectSound 3-D and DVD applications). However, due to multichannel support, it requires slightly more processor power and, thus, it is not recommended for latency-critical applications, such as Sonar (but 10ms latency can be easily achieved). Note that most applications that open the 'Wave 0/1' device in 'stereo' or 'mono' mode are not affected by software processing because it is automatically turned off.
The output of this device is routed to 'Generic Stereo' signal path and it gets mixed with Synthesizer output as well as 'front' outputs of the Surround Effects (Reverb and Chorus). It is up to the 'Surrounder' effect to choose, where the 'Generic Stereo' signal gets routed to. That is, it can be panned* between 'front' and 'rear' speakers (* this feature is not supported at the moment).

Wave 4/5, Wave 6/7, Wave 8/9

These devices route directly to your hardware outputs. Wave 4/5 is routed to 'front', Wave 6/7 - to 'rear', Wave 8/9 - to 'center+subwoofer'.
The Wave 6/7 output additionally gets mixed with 'rear' outputs of the Surround Effects (Reverb and Chorus). If you wish to use kX Audio Driver for '5.1' playback (DVD, Games), use the default connections (don't forget to swap 'front' and 'rear' speakers). Otherwise, you get 3 independent stereo outputs that can be used separately. Also note, that 'Wave 4/5', 'Wave 6/7' and 'Wave 8/9' do not require additional software processing (compared to 'Wave 0/1') and can result better latency under Sonar and similar applications which use 'Kernel Streaming'.

E-mu APS users

E-mu APS has similar routing scheme. The Wave 0/1 device has the same functionality as for the other kX Audio cards, and gets routed to A1/A2 by default (this can be changed via 'Surrounder' effect and the kX DSP applet). The Wave 4/5 gets routed to 'A1/A2', too. The Wave 6/7 gets routed to 'D1' and Wave 8/9 gets routed to 'D2' (A3/A4) physical outputs. So, if you wish to get '5.1' sound, simply connect your D2 to 'center/subwoofer' and D1 to 'rear' speakers. Otherwise, you get 3 independent stereo outputs.

ASIO

ASIO channels correspond directly to the 'Wave X/Y' devices. That is, ASIO 4/5 are routed to FXBUS 4,5 and to the 'Front' speaker, ASIO 6/7 - to the 'Rear' and so on. ASIO 2/3 are routed to 'Synth' sound path.

Headphones

Headphones receive 'Front' audio path by default. You can change that either by tweaking the 'Surrounder' effect or by re-connecting the Epilog's inputs ('Headphones') to the desired 'Surrounder' outputs. E-mu APS Headphones cannot be controlled via kX DSP.


kX DSP Editor

kX Dane (Diassembler, Assembler 'n' Editor) is editor for kX DSP effects. When an object is loaded in kX DSP window, it can be edited in kX Editor by right clicking on it and selecting Edit in the menu.

; This documentation might be outdated
; written by Max Mikhailov

Before reading this topic it's recomended to take a quick look at some
E-mu/Creative papers/patents considering Emu10kx DSP,
And highly recommended to read "As10k1 Manual" written by Daniel Bertrand
for his As10k1 Assembler.
(all above documents can be found at <kxproject.com>)

Dane Syntax Tips.
-----------------

Dane Language is use a mix of classic asm and classic C-like syntax
(maybe too mad mix).

Dane DSP Program is a set of instructions and registers to be used in
that instructions. (doh..)

You may treat DSP Program like function which dsp calls every sample
cycle feeding it with samples of sound data.

More comments later, let's jump into syntax right now...
-----------------

;registers declaration

Each program must have atleast one input and one output register to
be able to process sound data.

Input is a register where you read sound sample from and output is a
register you should write processed sample to.

Dane register declaration is C-like:

; declare input register:
input a;
; will allocate one register from dsp memory and says to
; the driver that it is input of the program

; output
output b;

You just must to keep in mind the important difference from C,
semicolon ';' -
is not the end of expression like in C, but the start of ;comments.
Anything after ';' until next line will be ignored by dane:
output x; output y
; this will produce only one output register

However you can declare more then one register of the same type in one line
using comma ',':
input k, l, m, n; declares four inputs.

Also you may not use ';' at all, dividing declarations just with newline
; followed lines produce one input and one output
input i1
output o1

Of coarse you will need some other register where you can store
intermediate values and some constants needed for effect's algorithm
calculation.
The main basic types of such registers are static and temp:

; example
static s;
temp t

Use static when you want register to store its value for next sample cycle
(in other words value of static register is preserved for next sample cycle).

Use temp when you need value only for current sample cycle, the value of this
type of registers is preserved only during one sample cycle and it is
unpredictable for the next sample cycle.

Another important type of the register you may need is constant.
Constant registers are defined with const keyword:
;defines constant with 0.5 value
const c = 0.5

Also you may avoid declaration of constant and use numeric values right in code
(see later). Using numeric value in code causes Dane to automatically allocate
constant register in DSP memory.

As well as you can assign numeric value to constant, you can initialize
static register with value (as always).
; static intitialized to 0.25
static quarter = 0.25;

Next type: Control.
This type implemented mostly for future compability, when it will
say to Dane export some header file for kX DSP Plugin.
For now it is the same as static except two things:
It is read-only for dsp code (like const) and its value can be changed
from the host only.
And control register must be initialized with some value
; control register
control level = 1
control nolevel; error!

-----------------

Tip: If you are not sure which register type from above ones to use,
use static and you'll naver make a mistake.

-----------------

As you can see Dane is not case sensitive language, so foolowed
declarations do the same job:
static s;
STATIC s;
static S;
sTaTic S;

-----------------

Using Delays.

I will not get into details of using fx8010's 'tank memory',
you can get much deeper guide from 'As10k1 Manual' (thanks to
Daniel for the great work) and Patents.

Just some details on declaring and using delays/tankmemory access registers
in Dane.

It's not so user friendly to use delays in Dane, but i tryed to keep
Dane syntax simple, and we have what we got.

At first you should declare/request the whole amount of Tank memory (aka TRAM)
you want to use in program:

; allocate 834 samples in internal tank memory:
itramsize 834;

; allocate the number of samples in external tram:
xtramsize 834;
; or
xtramsize 0x342;

Then you don't need to declare delayline, it's automatically allocated
when you are creating tram write access register.
; declare external tram write access register
xdelay write delayinput at 0x888;
; above statement allocates tram write registers pair
; with address of tram to write with offset 0x888 (2184 samples)
; + offset of tram allocated for program (doh..)

Did you remember that tram access requires two registers actually?
Since TRAM Access Data Register and TRAM Access Data Register always
go together let's use the term "TRAM Access Pair".

;In code you access Data register using symbol you declared access with,
;and access Address register with same symbol after '&' operator:
idelay write idw at 0x00; in most cases first tram of the programm write will have offset 0
; and later in code
"idw" will represent DATA register and
"&idw" will represnt ADDRESS register.

(compare with as10k1 syntax where "idw" will be DATA too, but ADDRESS will be
represented with "idw.a" symbol)

Also don't mess Dane '&' operator with  C/C++ '&' operator:
In C - "&symbol" means address of memory where value of "symbol" located,
but in Dane "&symbol" means address of tram memory where "symbol" points
to!

;Let's declare Tank Memory Read Access Pair:
xdelay read delayout at 0x1000;

So to get an 0x2000 samples delay line we should:
;declare write register
idelay write d at 0x0000;
;declare read register
idelay read dr at 0x2000;
; Later in code writing to d and reading from dr
; we will get desired 0x2000 samples delay line

You can convert samples into seconds using equation
'seconds = samples / 48000' - since emu10kx DSP has 48kHz fixed sample rate.
(Dane does not support values in seconds yet, -> todo)

Two important difficulties of using Delays/TankMemory with Dane.

1. Tram access pairs are declared with address offset within whole TRAM
requested for program.
So to get two delay lines with size of (for example) 2 seconds
we should do something like:

xtramsize 0x2EE01; 0x2EE01 = 2 * 2 * 48000 + 1
xdelay write delayline1write at 0x00000;
xdelay read delayline1write at 0x17700; 0x17700 = 2 * 48000
xdelay write delayline2write at 0x17701; 0x17701 = 2 * 48000 + 1
xdelay read delayline1write at 0x2EE01; 0x2EDF7 = 0x17701 + 2 * 48000

Looks very weird, but see echo1 and chorus, it's a bit simplier that it seems.

2. Tram access pairs are declared with address offset within whole TRAM
requested for program, but when we'll try to access ADDRESS register
from fx8010 code (at runtime) it will have other value:

addressvalue = offset_of_reg_within_pgm + offset_of_tram_allocated_for_pgm

This cannot be simply avoided (at least with asm - compiler maybe),
but good example trick is shown in chorus program source (pgms\chorus1\chor14ti.da).

Tip: Don't forget to declare delays with 'at' instead of '='!

Future: Of coarse i think of making usage of delay lines with Dane simplier.

-----------------

Other register declaration keywords.

wscl, iscl, oscl, intr, coarse.
They are implemented for RIFX compability and will be removed (or changed)
in future, don't use them!

-----------------

Reserved keywords and operators:

"rsaw".

-----------------

DSP and Numeric Values.

As you know fx8010 is a 32 bit fixed-point DSP,
so we need some tips on using numeric values.

At first read fixed-point math relaited stuff in 'As10k1 Manual',
then read followed stuff considering Dane:

1. Dane is kind of typeless language, since in most cases values
are stored in 32 bit register.

2. Default number format is fractional (fixed-point),
i.e. 1, 1.0, 1., 0.5, 0.2 etc. stored as 32 bit fractionals.

3. Fractional numbers have range from -1.0 to 1.0

4. Numbers having value more then 1 or less then -1 are truncated
to and stored as 32 bit integers.

5. To assign an integer to a register used C-like hex digit format
starting with '0x' (e.g. 0x3fff5555)

6. Fractional 0 and integer 0 are the same values.

Some examples:

static fone = 1; stored as 0x7fffffff
static ione = 0x1; stored as 0x00000001
control half = 0.5; stored as 0x3fffffff
control minfract = -1; stored as 0x80000000
const int = 1024; stored as 0x00000400
const notfract = 5.2; truncated and stored as 0x00000005

Also see some numbers tips in next section.

-----------------

Code Syntax.

Code represented with set of instructions in followed format

OPCODE R, A, X, Y

where OPCODE is DSP instruction mnemonic (e.g MACS ;),
and R, A, X, Y operands representing registers.

What can be used as operand:

1. Symbol representing register you declared before.
2. Any numeric value (with convenions described in 'DSP and Numeric Values' above).

Examples:

;----------
input in;
output out;

;code
macs out, in, 0, 0
; writes value of 'in' register to 'out' register
; i.e. out = in + 0 * 0 or just out = in

;----------
static S
const half = 0.5

MACW	s, 0xcccccccc, s, HALF;
; in fractional tirms: s = -0.40 + s * 0.5
; in integer: s = 0xcccccccc + s * 0x3fffffff

-----------

Note: '1' (as well as '1.' and '1.0') are not always undestantood by Dane as
fractional 1 in code, for example using 1 as Y operand in MACINTS instruction
cause Dane to use value 0x1 instead of 0x7fffffff.
Example:

static a;
const c = 1.0;

MACS	a, 0, c, 1.0;		a = c * 0x7fffffff
MACINTS a, 0, c, 1.0;		a = c * 0x00000001

(Guide to follow / Subject to change)

-----------

END Keyword.

Dane DSP Programm must be ended with end keyword,
and all after end will be ignored.

-----------

Critical notes on Beta verion of Dane.

1. (absolute) Use all of input/output registers you've declared in code,
living unused may cause unexpected execution of program.
Comment out or remove unused register of such type.

2. Do not use input registers in code more then once,
this limitation relaited to current format of binary dsp program
(atleast rfx one) and may cause unexpected execution.

3. Do not use input/output registers in single instruction
more then once, in future it may cause unpredictable DSP behaviour
due to nature of Emu10kx architecture.
(For now it's ok to do this).

4. Dane does not check if your program resources will fit
into available target dsp resources. So check it yourself
if program is built successful but cannot be loaded.

-----------

OK, more information to follow, and now
Dane / As10k1 / FxAsm conventions.

+----------------------------------------------------------+
|                       Instructions                       |
|----------------------------------------------------------|
|       Dane          |    As10k1         |    FxAsm       |
+----------------------------------------------------------+
        macs                macs              n/a
        macsn               macs1             n/a
        macw                macw              n/a
        macwn               macw1             n/a
        macints 	    macints           n/a
        macintw             macintw           n/a
        acc3                acc3              n/a
        macmv               macmv             n/a
        andxor         	    andxor            n/a
        tstneg         	    tstneg            n/a
        limit         	    limit             n/a
        limitl        	    limit1            n/a
        log            	    log               n/a
        exp                 exp               n/a
        interp              interp            n/a
        skip                skip              n/a
+----------------------------------------------------------+

+----------------------------------------------------------+
|                       Register Types                     |
|----------------------------------------------------------|
|       Dane          |    As10k1         |    FxAsm       |
+----------------------------------------------------------+
    input                                      ??
    output                                     ??
    static                static               GPR
    control               control              ??
    static coarse         n/a                BUF GPR
    const                 constant             ??
    n/a	       	      n/a		 DELAY
    idelay read           tread                n/a
    idelay write          twrite               n/a
    temp                  dynamic            TEMP GPR
+----------------------------------------------------------+

------------
Stuff.

Yep, Dane is pretty simple (so i prefer to call it Translator instead
of Assembler).

------------
Anyway.

Don't fear to expirement with it because:
1. You don't burn you card (well, speakers maybe ;)
2. Dane can determine and notify you of about 300 errors
you could have made in *.da program


The kX Automation

kX Automation

Overview

When a plugin is loaded in the kX DSP window a number is assingned to it and it will appear in the kX Automation setup. Available control parameters will appear in the top right window when a plugin is selected.

Here you can assign different MIDI controls to a parameter. Available MIDI controls are Controllers, Pitch Bend and Note on/off messages on 16 MIDI channels.

The range of Note and Controller messages are from 0-127. The range of Pitch Bend is 16384 steps which makes it suitable for controlling large scales like frequency ranges.

The parameters are then controlable from any MIDI capable program through the kX Control MIDI port or via kXi VST instrument.


Remote Controller

kX Remote

The kX Remote Controller window has no buttons at the moment, so better guide will be available as soon as the remote is fully supported.


Setup & Installation

kX Setup

Before starting kX Setup you must extract debug libs (MFC42D.DLL and MSVCRTD.DLL) into system directory (Windows\System - Win98SE/WinMe; WINNT\System32 - Win2000; Windows\System32 - WinXP). Otherwise, kX Setup will refuse to run.

kX Mixer installation begins with running setup.exe:

1. When you click on 'Install', License agreement is shown and if you want to install you must accept it.
2. kX Setup removes original drivers (if older version is present, it tries to update).
3. kX Driver is not WHQL certified, so you need to click 'Continue Anyway' if it asks.
4. If there are no gameport drivers, kX Setup installs them too (if there are, kX Setup doesn't touch them).
5. After installation is done, you need to point to your VST Hosts folder (or click 'Cancel' if you don't have something like Cubase VST installed).
6. Reboot and when you are back to Windows, you can start working.

Minimum installation requirements are Microsoft Windows 98 Second Edition, Windows Millenium Edition, Windows 2000 or Windows XP. At least one Creative Labs Audigy or EMU10k1-based soundcard, or E-mu Systems APS soundcard, is also required. DirectX 8 or newer should be downloaded and installed prior to installing the kX Driver. A minimum of 32 MB of RAM and a video adapter capable of displaying HiColor (16 bit) or TrueColor (24bit) are also highly recommended (actually - required).

Multiple card installation notes:

For systems with more than one kX-compatible card; All cards will be automatically installed, so you will see more popups with WHQL certification warning. If you want to use one card with kX drivers, and another with original manafacturer, you will need to do manual installation (it is a rare and special case).

Manual Install Method:

First try installing using setup.exe, if it fails, install using manual installation method.

1. Extract all files from RAR or ZIP to a tempoary folder.
2. Click on your device in Device Manager under Control Panel/System.
3. On 'Driver' tab, click on 'Update Driver' and point to kx.inf in temporary dir.
4. It will automatically select appropriate drivers for your particular device (by detecting the PCI ID) and will install them.
5. After installation is done, reboot.

So, in Windows Control Panel you need to go to applet Sounds and Audio Devices (Sounds and Multimedia, or something similar) and under 'audio' tab you need to select kX Wave 0/1 as default device if it isn't and unded 'Advanced' there are two things that must be set so kX Driver can work:

Speakers:
'Speaker Setup' --> '5.1 Surround Sound Speakers' or 'Surround Sound Speakers'

Preformance:
'Hardware acceleration' --> 'FULL'
'Sample rate conversion quality' --> 'BEST'

Removing the kX audio driver:

1. Close kX Mixer.
2. In 'Start Menu/Programs/kX Audio Driver' select 'Uninstall kX Software'.
3. Wait until it finishes, and if there are devices left, uninstall them manually in Device Manager.

Notes:

A second re-boot after installation may be required under Windows 98SE due to the multimedia device name changes (they are dinamically changed, depending on device name).

Under the kX Audio Driver, the Windows Mixer will display basic functions (Master, Wave, CD, LineIn, Synth). Use kX Mixer for additional functionality.

Note that under Windows 98SE "phantom" controls may appear (phantom control doesn't control any audio source, it doesn't affect anything and kX Driver doesn't ask Windows to draw that slider -- it's a Windows bug).


kX ASIO Routing and Playback

Overview

The ASIO playback section consists of 16 mono busses appearing at the FXBus 0-15 outputs in the kX DSP applet. By default the busses are shared with other soundstreams like wave, synth and effect sends. You can always make your own ASIO routing setups, and customize them for personal use. This could include use of internal DSP effects and/or surround mixing.

kX ASIO Router

The kX ASIO Router functions are done in the kX Router window. Previously known kX ASIO Router is "moved" to kX Router (because of their similarity). However, some of the sliders are not yet available. Routing of the ASIO channels is done similar way as normal routing in kX Router.

The ASIO router window is opened by selecting the kX ASIO button in the kX Mixer. Each mono bus has its own routing settings and can be routed simultaneously to a total of four busses. (A stereo output in your ASIO host consists of two FXBusses paired with even/odd consecutive numbers.)

A single bus can not be routed to the same bus more than once.

In the example to the left kX Out 0 is routed to bus 0, 15, 13 and 14, and only 0 and 14 are turned up. In this case bus 0 is the dry signal, while bus 14 is connected to the stereo chorus which acts like a send/return effect.

Note: This will depend on your current DSP window settings.

To use different busses in your ASIO host you must:

  • Make sure that the outputs are enabled in the ASIO host program(s)
  • Select the corresponding output (mono or stereo) in your program.

kX ASIO Control Panel

The ASIO setup is opened from within your ASIO host program. Use this window to adjust the ASIO latency.

The kX ASIO button opens the kX Automation window.

Increasing the latency can be useful if you are experiencing clicks and glitches in your wave recordings or when using software synths. The lowest usable latency depends on your hardware, system resources and current system load.

The ASIO driver supports latencies ranging from an 'almost realtime' 2.66ms to 341.33ms.

Note that due to hardware limitations the kX ASIO driver is locked at a sample rate of 48kHz (both 10k1 and 10k2 have fixed samplerate).

Tips and tricks

Cubase VST only enables one stereo output by default (the 'Master'). New outputs are enabled in the Cubase Master mixer. Expand the window to reveal a total of 8 stereo outputs. These are enabled by pressing 'Active' for each bus you want to activate. The actual kX FXBus pair is selectable below each fader. The new outputs are then accessible from the VST mixer for each channel.

Logic Audio automatically enables all ASIO inputs and outputs when this driver type is selected. Inputs and outputs are selectable from the Audio mixer. You can decrease the number of ASIO I/Os in the 'Audio Hardware and Drivers setup' in Logic.

Logic Audio Platinum automatically sets up four speaker surround mixing through output 1-4 (FXBus 0-3) - but can actually be set up to mix to a total of 9 speakers (8 channels + LFE).

For more information on using and setting up ASIO in general, please consult the documentation for your particular software.

Cubase and VST are registered trademarks and ASIO is a trademark of Steinberg Media Technologies AG.


Getting started with ASIO recording

ASIO Recording Guide

Enabling ASIO Recording requires some patching within the kX DSP applet. The kX DSP applet is opened by selecting the kX DSP button in the mixer window, or by right-clicking on the mixer icon in the system tray and selecting 'kX DSP' from the kX Menu.

The ASIO recording inputs are located in the epilog object (refer to the kX DSP guide for further information on this and other basic objects). The last 16 inputs of this object correspond to the ASIO inputs. These inputs make it possible to simultaneously record 8 stereo inputs or 16 mono inputs (or any combination of these).

By default no sources are connected to these inputs, so you will need to patch the source you wish to record to an ASIO input.

The inputs on the soundcard are located in the prolog object. The outputs on the prolog represents the physical inputs on your soundcard (and on the front bay drives, daughter cards or external input drives connected to the card). These connectors are stereo pairs and correspond to the lower row of faders located on the Inputs and Outputs page of the kX Mixer.

On a 10k1 card the prolog represents the following input signals (7 stereo pairs):

In0/1: AC97 in
In2/3: CD Digital in
In4/5: Unknown 1 in
In6/7: Coaxial / Optical in (LiveDrive/Daughter Card)
In8/9: Line 2/mic 2 in (LiveDrive)
In10/11: Unknown 2 in
In12/13: AUX 2 in (LiveDrive)

Example - recording Line-in

The analog inputs located on the soundcard itself (Line/Mic/Aux/CD/TAD/Video) are selectable from the AC97 page of the kX Mixer, and they can be recorded either singly or as a stereo or mono mix (but not in any combination - refer to the kX Signal Flow Diagram for more information). To record Line, from the AC97 page of the kX Mixer select LineIn as your source. Leave all faders muted and go to the Inputs and Outputs page of the mixer. Here you can use the AC97 fader to adjust the level. In the kX DSP applet you should connect prolog in0 and in1 with epilog asio0 and asio1 as shown below (refer to the kX DSP Guide for details on making connections):

The ASIO driver is set for recording AC97 input (which is selected in kX Mixer). Note that the default connectors on the prolog do not need to be removed.

Now you should enable the ASIO input in your favorite ASIO recording application (such as Cubase, Logic, etc.). It may be wise to disable software monitoring in your software to avoid hearing two signals. If you want to record from another input simultaneously, simply connect the signal outputs from prolog to another ASIO pair and enable this input in your recording host.

Other tips

You can connect virtually any output connector in the kX DSP applet to the ASIO inputs and record whatever is present at that output. This means that you can record things like the wet signal from a reverb, a final mix or a single midi synth channel.

ASIO Tips

In Cubase, you should enable Play In Background to allow Cubase to play while you are inside other programs (or adjusting DSP settings).

Cubase and VST are registered trademarks and ASIO is a trademark of Steinberg Media Technologies AG.


Speaker Test

kX Speaker Test

kX Mixer provides a Speaker Test utility, for testing various speaker configurations.

For 2-speaker or headphone set-ups, only the front speaker pair will be accessible.

For 4-speaker set-ups, the rear speaker pair is also accessible.

For 5.1 surround setups, the center and subwoofer speakers are accessible in addition to the front and rear speakers.

To test speakers, click the Test icon. A wave sound will be played through each of the speakers successively to test that the speakers are functioning properly.

Notes
That no matter what configuration of speakers you use, it is recommended to put to 5.1 surround sound speakers or Surround sound speakers (depending on available choice) in Windows Control Panel. Speaker setup you have is not important - kX Speaker Test will always show all the available speakers [depending on your hardware: 4 or 5.1], but you can use 'Surrounder', 'downmix', 'surround' or 'cnv51to20' effects in the kX DSP to make mixing match your speaker setup.
You can access the 'Surrounder' effect (which is uploaded by default) using button in kX Mixer.


Surrounder

kX Surrounder

Surrounder is used to set speaker configuration.

UNDER CONSTRUCTION


Known Issues

General

  • Front and Rear speakers are swapped by default (this is intentional) - explanation why here.
  • The default speaker configuration is 'Stereo' (2.0) -- you can change this setting by tweaking the 'Surrounder' options.
  • EAX/EAX2.0/EAX3.0 not fully supported.
  • MIDI synth volume control may not function in realtime.
  • If you have ACPI-aware system you may need to disable it. Refer to ACPI guide for details.

DSP

  • Setting of TRAM size to 0 (although not recommended) may cause BSODs.

SoundFonts

  • Maximum single sample size for SoundFonts may be limited by OS memory settings.

Hardware-Dependent

  • Settings for phases, levels, etc. may not be optimized for uncommon AC97 codec versions.
  • SB006x / SB010x cards have an issue with ASIO input and output mappings that can't be fixed (a hardware problem).
  • SB020x cards (Dell OEM SB Live!) contain different EMU10k1 chips and they aren't supported at the moment.

OS-Dependent

  • Special adjustment of control panel settings may be required for Win2k (refer to installation guide).
  • There might be phantom CD-Audio and Wave controls in the Windows Mixer.

Other Software

  • Use of optional third-party skins may cause resource leakage.
  • Some TV-Tuner software (e.g. from ATI) may conflict with the kX Audio Driver. See ATI support site for details.
  • You may experience shutdown problems. See Microsoft support site for details.


FAQ

General

  • What is the kX Project?
  • Is the kX Driver FREE?
  • Which soundcards can I use with the kX driver?
  • Why should I use the kX driver and not the drivers that came with my soundcard? What are the advantages of the kX Audio driver?
  • Are the kX drivers aimed at musicians or gamers or both?
  • Under which Operating Systems can I use the kX driver?
  • Does the kX driver incorporate DirectX support?
  • Does the kX driver have ASIO support? ASIOv2?
  • Will I get low latency with Cakewalk's Sonar?
  • Does the kX driver support multiple soundcards? How many?
  • Can I use the standard Windows Mixer with the kX driver?
  • Is there a dedicated mixer included with the kX driver set?
  • What are the mixer features? Can I save and restore my mixer settings?
  • Will there be GSIF support?
  • Will there be support for the Extigy?
  • Why am I experiencing serious CPU load when I use kX ASIO driver under Logic?
  • Why are the Front and Rear outputs swapped by default?
  • Where can I get support for the kX Audio Driver?
  • Why is there no 'Wave 2/3' device?
  • Why is my CT4830/SB0090/SB0220 recognized as CT4832/SB0092/SB0222? Does it affect sound quality?

Installation / Uninstallation

  • Why does Windows tell me that I am missing required DLLs when I try to install the kX driver?
  • How do I install the kX driver under Windows 2000 or Windows XP?
  • How can I uninstall kX drivers?
  • What are the minimum system requirements for running the kX driver?
  • Why does Windows tell me that I am missing required DLLs when I try to install the kX driver?
  • Why do I get the following message: 'The ordinal 11 could not be located in the dynamic link library DSOUND.DLL'?
  • Why do I get the message that kxsetup.exe is linked to missing export SHELL32.DLL:SHGetSpecialFolderPathA?

ASIO

  • Does the kX driver have ASIO support? ASIOv2?
  • Why do I get the following message: "Error creating input buffer: -2147467263 (#0) [size=4096] ret=-2147467263"?
  • What kind of latency can I expect to see?
  • Does kX support ASIO 2 Direct Monitoring?

DSP

  • Are DSP effects supported by the kX driver?
  • Is there an effects control panel included with the kX driver set?
  • Are there new effects included with the kX driver set?
  • Can I write my own DSP effects for use with the kX driver set?

SoundFonts

  • Can I use SoundFonts with the kX driver?
  • Is there a SoundFont control panel included with the kX driver set?
  • Can I use the Vienna SoundFont editor with the kX drivers?
  • Can I use the Alive SoundFont editor with the kX drivers?
  • Is there a 32MB limit on sample playback? Does this apply to the Audigy as well?
  • Why cann't I load large SoundFonts?

Troubleshooting

  • After installing kX Driver I cannot hear anything. Why?
  • Why do I hear audio feedback when using NetMeeting?
  • How do I turn off the recording feedback?
  • Why cannot kX Mixer find kxskin.kxs file, although it is in the same folder?
  • Why do I experience clicks and data corruption while copying / burning CDs? I have a VIA 686B Southbridge chipset.
  • Why does Windows tell me that I am missing required DLLs when I try to install the kX driver?
  • Why do I get the following message: 'The ordinal 11 could not be located in the dynamic link library DSOUND.DLL'?
  • Why do I get the following message: "Error creating input buffer: -2147467263 (#0) [size=4096] ret=-2147467263"?
  • Why does Cubase cause Unrecoverable Application Error (Blue Screens) in the file emuaps.vxd?
  • Why do I get the message that kxsetup.exe is linked to missing export SHELL32.DLL:SHGetSpecialFolderPathA?
  • Why do I experience shutdown problems with the kX Mixer?
  • Why do I get 'Debug assertion failed' error?
  • How do I tweak my computer for optimum performance?
  • My MIDI playback is crackling no matter what SoundFont I use - what should I do? I have VIA chipset and AMD processor.

Q. What is the kX Project?

A. The kX Project is a totally independent development project whose aim is to provide WDM Audio Drivers for newer operating systems for kX-Compatible audio cards. The kX Project is led by Eugene Gavrilov, Max Mikhailov and Hanz Petrov (full list of contributors here).

Top

Q. Is the kX Driver FREE?

A. Yes, the kX Driver is FREE and will remain FREE. However, you can support the development effort by donating to the kX Fund.

Top

Q. How do I install the kX driver under Windows 2000 or Windows XP?

A. Windows 2000 and Windows XP provide their own certified drivers for some EMU10kX-based audio cards. Our kX Audio Driver has not been certified by Microsoft (WHQL-ed) and thus a special installation procedure is required. It is recommended that you first try running kXSetup, and if that fails, follow our Windows XP installation guide.

Top

Q. Will there be GSIF support?

A. GSIF is supported since 3533 release.

 Top

Q. Why am I experiencing serious CPU load when I use kX ASIO driver under Logic?

A. You should try disabling unused kX ASIO inputs and outputs. Logic opens all 16 inputs and 16 outputs by default.

 Top

Q. Why are the Front and Rear outputs swapped by default?

A. Refer to the Front and Rear outputs explanation for details.

Top

Q. Why do I experience clicks and data corruption while copying / burning CDs? I have a VIA 686B Southbridge chipset.

Please read our article Via 686B Southbridge and SBLive / Audigy issues.

Top

Q. Why does Windows tell me that I am missing required DLLs when I try to install the kX driver?

A. The kX Mixer and kX Setup are statically linked to certain Windows DLLs, which may or may not be found on every system. You can download the required files from the kX Download page if they are not present on your system.

Top

Q. How can I uninstall kX drivers?

A. Run 'kxsetup --clean' from the command line or execute Start Menu - Programs - kX Audio Driver - Uninstall kX Software.

 Top

Q. What are the minimum system requirements for running the kX driver?

A. The kX driver will only install on systems running Microsoft Windows 98 Second Edition, Windows Millenium Edition, Windows 2000 or Windows XP. At least one Creative Labs Audigy or EMU10k1-based soundcard, or E-mu Systems APS soundcard, is also required. DirectX 8 or newer should be downloaded and installed prior to installing the kX driver. A minimum of 32 MB of RAM and a video adapter capable of displaying HiColor (16 bit) or TrueColor (24bit) are also highly recommended (actually - required).

 Top

Q. Why do I get the following message: 'The ordinal 11 could not be located in the dynamic link library DSOUND.DLL'?

A. You have not installed DirectX 8 or newer.

 Top

Q. Why do I get the following message: "Error creating input buffer: -2147467263 (#0) [size=4096] ret=-2147467263"?

A. You have not set 'Hardware Acceleration' to 'Full' in the Control Panel.

 Top

Q. Why do I get the message that kxsetup.exe is linked to missing export SHELL32.DLL:SHGetSpecialFolderPathA?

A. Your Operating System is Windows 98 Lite - this OS is partially supported by the latest kX Driver releases.

 Top

Q. Why does Cubase cause Unrecoverable Application Error (Blue Screens) in the file emuaps.vxd

A. You haven't completely uninstalled E-mu APS drivers and removed all APS-related files from your Windows\System directory.

 Top

Q. Which soundcards can I use with the kX driver?

A. Currently, kX-compatible soundcards include all EMU10k1 and EMU10k2-based PC soundcards manufactured by Creative Technology Ltd. and/or E-mu Systems Inc., including:

  • The E-mu Audio Production Studio (APS) card
  • The motherboard models of 10k1 cards (M002, M003 and others)
  • PCI256 (CT4890, CT4891 and CT4893) and PCI512 (CT4820 and SB0150) including OEM model (CT4790)
  • The original Live! (CT4620) and Live! Value cards (CT4670)
  • The Live! X-Gamer, Live! MP3+, Live! Player 1024, Live! Platinum cards (CT4760) and value cards (CT4780)
  • The Live! X-Gamer 5.1, Live! MP3+ 5.1, Live! Player 5.1, Live! Platinum 5.1, Live! Digital Entertainment 5.1 cards (SB0060, SB0100, SB0102, SB0220, SB0222, SB0103 and SB0105) and Value 5.1 (SB0101)
  • The generic and custom OEM Live cards (CT4830, CT4831, CT4832, CT4850, CT4870, CT4871 and CT4872)
  • The Audigy series, including the Audigy MP3+, X-Gamer, Platinum and OEM cards (CT0070, CT0072, SB0090 and SB0092).

    • Audigy2 series support is experimental at the moment, due to the fact that we do not have an Audigy2 card for testing. However, as soon as we have enough money to buy one, support will be implemented. If you'd like to help, please make a donation to the kX Fund.

    The Dell OEM SB Live! (SB020x) is not yet supported since it uses a custom version of the EMU10k1, whose details are unknown. Experimental support may be provided when more information about it becomes available.

    Top

    Q. Will there be support for the Creative Labs Extigy?

    A. Not at the moment. The Extigy is NOT 10k1/10k2-based card (most of it's functionallity is software-based), and since it is a USB audio device it is not currently kX-compatible.

     Top

    Q. Under which Operating Systems can I use the kX driver?

    A. The kX driver conforms to the WDM (Windows Driver Model) specification and is therefore compatible with the following Microsoft Windows operating systems: Windows XP, Windows 2000, Windows 98 (Second Edition only), and Windows Me. Windows .NET Server 2003 may also be supported, however, this has not been tested. Windows 98 (First Edition) will not be supported since it has no built-in support for WDM drivers (v1.1 or later).

    Top

    Q. Why should I use the kX driver and not the drivers that came with my soundcard? What are the advantages of the kX Audio Driver?

    A. The kX driver may or may not suit your own particular needs, although you have little to lose by giving it a try. The kX driver is part of an independent development project, and already offers most if not all of the same features included in the original manufacturers' drivers. In fact, the kX driver set is continually being updated and improved, with frequent driver and supporting application releases.

    general advantages

    • smaller download / software takes up less space on disk
    • mixer is skinnable
    • API is open -- SDK, documentation and sample code available for download
    • skilled users can write their own effects and plugins
    • open API allows development of custom mixers and other software applications
    better functionality
    • better DSP support [hardware-accelerated custom sound effects]
    • virtually unlimited signal routing possibilities
    • complete and flexible control over hardware (without artificially imposed limitations)
    • direct uninterpolated SPDIF recording from Optical, Coaxial and CDSPDIF sources
    better ASIO support
    • ASIO is supported for all the 10k1 & 10k2-based boards
    • ASIO v2 based hosts are fully supported
    better MIDI support
    • kX VSTi and kX Control provide MIDI-based control of DSP effects
    • extended MIDI CC support
    • both SoundFont 2.01 & AWE NRPN support

     Top

    Q. Are the kX drivers aimed at musicians or gamers or both?

    A. At present the kX driver is aimed primarily at musicians, and especially those who wish to get the most out of their soundcards (and who have traditionally been left behind by the big soundcard manufacturers, who prefer to concentrate their efforts on the more lucrative gamers market). Features designed specifically for gamers will however be added as development of the drivers continues.

     Top

    Q. Does the kX driver have ASIO support? ASIOv2?

    A. ASIO v2.0 - based hosts are fully supported, however, some ASIO2 features are not implemented due to hardware limitations. 24-bit ASIO support is planned for both 10k1 and 10k2 as soon as possible (for the 10k2 initially, to be followed by the 10k1).

     Top

    Q. What kind of latency can I expect to see?

    A. The minimum expected ASIO latency is expected to be 5.33 ms (and possibly as low as 2.66 ms, depending on your hardware/software setup).

     Top

    Q. Will I get low latency with Cakewalk's Sonar?

    A. The kX driver is a kernel-streaming WDM driver, and a latency as low as 10 ms can be expected under Sonar (depending on your hardware/software setup).

     Top

    Q. Does the kX driver incorporate DirectX support?

    A. Currently, DirectSound2D is fully supported and DirectSound3D is supported in software only. Note that any offers to help with implementing support for DirectSound3D would be gladly accepted (skilled programmers only please!).

     Top

    Q. Does the kX driver support multiple soundcards? How many?

    A. Multiple soundcards are indeed supported by the kX driver. In theory, an unlimited number of soundcards could be used at once, but in reality you're likely to be limited by the number of PCI slots in your machine. Any combination of EMU10k1 and/or EMU10k2-based cards can be used with the kX driver (together with soundcards by other manufacturers, running their own drivers).

     Top

    Q. Can I use SoundFonts with the kX driver?

    A. Yes, your soundcard will continue to function as a SoundFont-compatible device under the kX driver. SoundFonts can be loaded and unloaded via SoundFont-aware applications, or via the kX Mixer's SoundFont control page. Currently only SF2 files are supported, however SF1 (SBK) files can be converted to SF2 files using a freely available utility.

     Top

    Q. Is there a SoundFont control panel included with the kX driver set?

    A. Yes, the kX Mixer includes a SoundFont control panel, which allows loading and unloading of SoundFonts to compatible soundcards running under the kX drivers.

     Top

    Q. Can I use the Vienna SoundFont editor with the kX drivers?

    A. The current kX driver version provides support for the Vienna SoundFont editor (with the exception of 'wave playback' feature).

     Top

    Q. Can I use the Alive SoundFont editor with the kX drivers?

    A. The Alive editor is currently not fully compatible with the kX driver (improved support is under investigation).

     Top

    Q. Is there a 32MB limit on sample playback? Does this apply to the Audigy as well?

    A. SoundFont sample playback is limited to 32MB of wave data at one time, although SoundFonts larger than 32MB can be loaded.

     Top

    Q. Can I use the standard Windows Mixer with the kX driver?

    A. Basic Windows Mixer functionality is provided, although the audio mixer (kX Mixer) included with the driver package allows access to many more features. The Windows mixer allows Master, Wave and Synth Playback and Record levels to be controlled. A Line-in slider has also been added for compatibilty with TV-card software.

     Top

    Q. Is there a dedicated mixer included with the kX driver set?

    A. Yes, the kX driver package includes a feature-rich audio mixer, the kX Mixer.

     Top

    Q. What are the mixer features? Can I save and restore my mixer settings?

    A. The kX mixer includes level controls for all inputs and outputs, full control over the AC97 Codec, separate record level controls, selectable digital output mode, etc., etc. The kX Mixer supports save, load and restore of all mixer settings.

     Top

    Q. Are DSP effects supported by the kX driver?

    A. Yes, the kX driver supports DSP effects, with Reverb and Chorus loaded by default for MIDI Synth compatibility.

     Top

    Q. Is there an effects control panel included with the kX driver set?

    A. The kX mixer includes a DSP control panel, allowing editing, loading, patching and unloading of custom DSP effects. A command-line utility is also included with the kX driver package, allowing direct access to many functions.

     Top

    Q. Are there new effects included with the kX driver set?

    A. Yes, in fact all effects included with the kX driver package are new, custom-programmed DSP effects. Currently, Reverb Lite, Stereo Chorus, Delay, Overdrive, M4Tube (TubeSound), Chorus, AutoWah, CL Reverb, ProLogica, RingMod, Eq10a, APS Flanger, APS AutoWah, Stereo/Mono Vocoders, Overdrive2, Encode4, APS Fuzz, Stereo Mix, Mono Mix, Pan, Pan x2, EQ Bandpass, EQ Highpass, EQ Highshelf, EQ Lowpass, EQ Lowshelf, EQ Notch, EQ Peaking, Frequency Splitter and Timbre effects are included with the kX driver package; other effects will be available in the near future.

     Top

    Q. Can I write my own DSP effects for use with the kX driver set?

    A. Yes, the kX driver package includes a DSP compiler and loader, allowing skilled users to program their own DSP effects.

     Top

    Q. Where can I get support for the kX Audio Driver?

    A. The kX Forums have been set up to allow users to ask questions and exchange helpful tips and information with each other. kX developers and collaborators will sometimes drop in to answer questions, but on a limited basis (mainly due to time constraints :-P). Note that the kX Project email address should be used for Bug Reports and suggestions only - support questions will be referred to the kX Forums.

    Top

    Q. Why do I experience shutdown problems with the kX Mixer?

    A. This is a known issue with Windows 2000 / Windows XP. See Microsoft support site for details. Windows 2000 users are advised to install the latest Service Pack - this has reportedly solved the shut-down problem for many kX users.

    Top

    Q. Why do I get 'Debug assertion failed' message (Expression 'SUCCEEDED(hr)&&gpPicture')?

    A. This error indicates that your Internet Explorer installation is corrupted. In order to solve this, re-install Internet Explorer 5.0 or higher.

     Top

    Q. Why can't I load large SoundFonts?

    A. This is caused by Windows memory management restrictions. Try tweaking the following register keys (for Windows 2000 and Windows XP only):

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\
PagedPoolSize
NonPagedPoolSize
NonPagedPoolQuota
PagedPoolQuota
    Please search our forum and Microsoft Knowledge Base for details.

     Top

    Q. How do I tweak my computer for optimum performance?

    A. Start by reading the following explanatory documents: pdf and pdf.

    Top

    Q: My MIDI playback is crackling no matter what SoundFont I use - what should I do? I have VIA chipset and AMD processor.

    A: If you are using any cooling software like VCool, CPUCool, CPUIdle, etc you need to disable it(in VCool you need to disable NB Cool Bit, in CPUIdle disable 'AMD hardware-specific' options).

    Top

    Q: Why is there no 'Wave 2/3' device?

    A: 'Wave 0/1', 'Wave 4/5', 'Wave 6/7', 'Wave 8/9' are the only wave devices available for WinMM / DirectSound applications. They are routed to the corresponding FxBusses, that is, 'Wave 0/1' is routed to 'stereo' mix which goes to 'front' output by default, 'Wave 4/5' is routed to front only, 'Wave 6/7' is routed to rear only, 'Wave 8/9' is routed to center and subwoofer.
    Read our Routing guide     for details.

    Top

    Q: Why is my CT4830/SB0090/SB0220 recognized as CT4832/SB0092/SB0222?? Does this affect sound quality?

    A: The CT4830 and CT4832 are almost identical cards with different PCI IDs (as programmed into the onboard EEPROM). A CT4832 card is generally an OEM version of the CT4830, although both cards might be marked as 'CT4830'. Neither kX Audio driver performance nor sound quality are affected by the way in which these cards are recognized by kX (the same applies to SB0090/SB0092 and SB0220/SB0222 cards).

    Top

    Q: Does kX support ASIO 2 Direct Monitoring?

    A: When this option in the Audio System Setup dialog is activated, monitoring is handled by the actual audio hardware, that is, the monitored signal does not pass through Cubase VST. Instead, the ASIO driver for the audio hardware is instructed to send the audio from the monitored input directly back to a specified output, thus providing monitoring with practically no latency, i.e. ASIO2 Direct Monitoring simply provides zero latency monitoring of inputs. However, zero latency monitoring is already provided by kX ("direct monitoring" is enabled when you unmute an input on the kX Mixer's "Ins'n'Outs" page), so there is no reason to tax your CPU with ASIO2 direct Monitoring. Contrary to what many people believe, ASIO direct monitoring does not allow monitoring of the incoming signal with VST effects; it only provides monitoring of the dry input signal. In other words, this means that the only thing missing without ASIO2 "direct monitoring" in kX is the lack of direct control from Cubase (or other ASIO host) over hardware pan/level/peakmeter for unprocessed dry signal, although even these can be controlled via the kX Mixer. And of course you can always apply VST/DirectX plug-ins to as many input channels as you want using the kX ASIO driver.

    Top

    Q:Why cannot kX Mixer find kxskin.kxs file, although it is in the same folder?

    A: You should not try executing kX Mixer from the folder you have manually copied it to. kX Mixer should be installed into your Windows/System32 folder by the setup application. Do not try to install it manually - simply re-run the installation program.

     Top

    Q:After installing kX Driver I cannot hear anything. Why?

    A: Before you can enjoy the sound quality offered by the kX Audio driver you need to make sure it is configured correctly. For example, Front and Rear outputs are swapped by default -- make sure you have your speakers plugged into the 'Rear' jack, or disable the swap on the 'Master' page of the kX Mixer. If you have more than 2 speakers (4.0/4.1 or 5.0/5.1 speaker set) - set the desired configuration in the 'Surrounder' window (you can access it via 'Effects' submenu or by clicking the 'Surrounder' button on the main page of the kX Mixer).

     Top

    Q:Why do I hear audio feedback when using NetMeeting? How do I turn off the recording feedback?

    A: kX Audio driver enables 'What you hear' recording mode by default. In order to turn it off, open the kX Mixer, and set Wave and Synth recording levels to the appropriate values on the 'Recording' page.

     Top


kX I/O Signal Flow Diagram

kX Input/Output Signal Flow Diagram

In Analogue mode (default for non-10k2 cards):

PCM Volume is const (=0 – no attenuation); Master Volume is const (=0); Surround Volume is const (=0); it is possible to record / monitor one analoguesource only via 'Rec Source'; all ac97 input volumes are set to 'mute'; if unmuted they go directly to Front Speakers. Using 'StereoMix' mode or unmuting ac97 outputs is not recommended. Volume is controlled via DSP ac97in (in0/in1).

In “Digital Output Only” mode

AC97 PCM, Surround and Master Volumes are muted; “Rec Source' is 'StereoMix'; this allows multiple analogue sources to be recorded / monitored (with or without PCM – depending on kX DSP settings); input volumes can be controlled separately. One should unmute desired AC97 analogue inputs. Volume is controlled by ac97 source volume and DSP's ac97in (in0/in1).

The 10k2 is capable of recording multiple analogue sources when its PCM volume is set to 'muted' and front output goes to I2S codec directly; AC97 output is muted by default; input volumes can be controlled separately; DigitalOutputOnly does not influence AC97 codec; there is no AC97 'surround' output – I2S is used instead.


Hardware Reference

Hardware reference information for Live!, Live! Value, Live! 1024, Live! 5.1, E-mu APS, Audigy and Audigy2 cards.

EMU10k1 pins: [1]

Pin | Name | AUD_EXT | SPDIF_EXT
127 | spdifo0 | 17 | 1
126 | spdifo1 | 19 | 9
124 | spdifo2 | 22 | 11
109 | spdifo3 | 9 | 12
122 | cdromi / gpspdifin2 [2] | 6 | 6
123 | gpspdifin1 | 15 |
106 | in0 | 35 |
107 | in1 | 33 |
108 | in2 | 31 |
8,9,10,11,12 | AC97 a1,a2 in; a1,a2 out |  |
112 | gpinput0 | 23 |
110 | gpinput1 | 24 |
 | gpoutput0 | 13 |
 | gpoutput1 | 10 |
 | gpoutput2 | 11 |
128 | outmidi | 25 |
130 | inmidi | 27 |
134,132,131 | ZVideo / i2s |  |

Live!, Live! 1024, Live! 5.1, Audigy onboard connections:

 | TAD | CD | AUX In | PC Speaker | I2S [3] | CD SPDIF [4]
Yellow/Orange[5] |  |  |  |  |  |
LineIn | modem connector [6] |  |  |  |  |
MicIn | condenser microphone [7] |  |  |  |  |
LineOut |  |  |  |  | AUD_EXT | SPDIF_EXT [8]
RearOut |  |  |  |  |  |
Joystick/MIDI [9] |  |  |  |  |  |
SB1394 [10] |  |  |  |  |  |

Orange connector:

  • analog mode: (5.1, Audigy) Center (left), Subwoofer (right)

  • digital mode:
    A) left signal: (1024, 5.1, Audigy): spdifo0 (digital front)
    B) right signal:
    I. (1024): spdifo3 (digital rear) or spdifo1 [11] (front&rear mix) [12]
    II. (5.1, Audigy); spdifo3 (digital rear)

  • third signal: (5.1, Audigy): digital center/subwoofer (spdifo2 [13])

Note: SPDIF#1 is SPDIFO0; SPDIF#2 is SPDIFO3; third signal not shown (should be before 'GND' for 5.1 and Audigy cards)

Unofficial Inout/Output Information:

Input/Output | Live! | APS [14]
ac97out (front) | ac97 front out | (i2s) a1, a2
spdifo0 | digital front; generic SPDIF output | e-card (d1) or a5, a6
spdifo1 | front&rear mix (headphones?) or digital center/sub(?) | a3, a4 (d2) or a7, a8
spdifo2 | digital center/subwoofer or front\rear mix/phones (?) | a5, a6 or (d1)
spdifo3 | digital rear | a7, a8 or a3, a4 (d2)
ac97out (rear) | ac97 analog center/subwoofer (5.1, audigy) |
ac97in | ac97 in (l,r) | a1, a2
cdromi | CDSPDIF | e-card, CDSPDIF
zvideo/i2s | on-board i2s(?) / ZVideo? |
gpspdif | Optical In (?),generic SPDIF In | e-drive
in0 | Line2In / Mic2In (?) and on-board i2s (?) | a3, a4
in1 | Coaxial In (?) |
in2 | AUX2 In (?) |
gpinput0 |  | e-drive present(?)
gpinput1 |  | moc present(?)
Please note that an updated information can be found in our 'IO Assignment guide'

Input/Output limitations (according to official PDFs):

  • Line2/Mic2 cannot be used simultaneously with onboard i2s.
  • AUX2 cannot be used simultaneously with Optical/Coaxial SPDIF in (except in Bypass mode).

Daughterboards:

Digital I/O Card (original, model CT4660):

  • midi in
  • midi out
  • coaxial RCA in
  • coaxial RCA out
  • digital DIN

Optical Digital I/O Card (model CT4770):

  • LineIn2 (*)
  • Digital I/O (for Digital I/O module)
  • digital DIN
  • midi in
  • midi out

(*) – available only if connected via AUD_EXT

Digital I/O Module (model CT4800): -- connected to “Digital I/O”

  • optical in
  • optical out
  • coaxial in
  • coaxial out

Digital Output Module (model CT4801): -- connected to 'Orange Jack'

  • coaxial output (spdifo 0) -- front
  • optical output (spdifo 0) -- front
  • coaxial output (spdifo 2(?)) – rear
  • optical output (spdifo 2(?)) – rear

LiveDrive (CT4860), LiveDrive II (CT4861), LiveDrive IR (SB0010), AudigyDrive (?):

  • coaxial input
  • coaxial output
  • optical input (*)
  • optical output (*)
  • AUX2 input (*)
  • headphones
  • mic2/line2
  • midi in
  • midi out
  • sb1394 (Audigy only)
  • IR (LiveDrive IR, Audigy Drive)

(*) – available on LiveDrive II and later models

Digital DIN description:

Pin | Signal
1 | GND
2 | GND
3 | MIDI_IN
4 | S/PDIFO#2
5 | S/PDIFO#1
6 | S/PDIF_IN
7 | MIDI_OUT
8 | S/PDIFO#0
9 | S/PDIFO#3

[1] Official information: based on patents and hwinfo.hlp.
[2] It is unclear whether gpspdif1/2 are gpspdif0/1 or 1/0 (hwinfo.hlp): i.e. pin123=gpspdif0=audext#15 and pin122=cdromi=audext#6 or visa versa.
[3] On original Live! only.
[4] Missing on some 1024 cards.
[5] Live! 1024, 5.1 and Audigy only.
[6] On original Live! only (non-OEM) – MB_PRO connector.
[7] On original Live! only (non-OEM).
[8] Original OEM cards.
[9] Not present on Audigy except on 'bulk OEM cards'.
[10] Audigy only.
[11] Not verified; unofficial.
[12] Depends on jumper JP1.
[13] Not verified; unofficial.
[14] APS connections are based on the unofficial EMU10k1 pin-out ('Figure 4').


kX IO Assignments

IO / DSP Assignments

Outputs

kX Number | Epilog name | Meaning | 10k1 DSP # | 10k1 mne | 10k2 DSP # | 10k2 mne
KX_OUT(0) | out0 | Analog Front Left / A1 | 0x20 | ac97 L | 0x68 | i2s 0 L
KX_OUT(1) | out1 | Analog Front Right / A2 | 0x21 | ac97 R | 0x69 | i2s 0 R
KX_OUT(2) | out2 | Generic SPDIF Left / Digital Front L / D1 L | 0x22 | spdif 0 L | 0x60 | spdif 0 L
KX_OUT(3) | out3 | Generic SPDIF Right / Digital Front R / D1 R | 0x23 | spdif 0 R | 0x61 | spdif 0 R
KX_OUT(4) | out4 | Digital Center / A3 / D2 L | 0x24 | spdif 1 L | 0x62 | spdif 1 L
KX_OUT(5) | out5 | Digital LFE / A4 / D2 R | 0x25 | spdif 1 R | 0x63 | spdif 1 R
KX_OUT(6) | out6 | Headphones L / A5 | 0x26 | spdif 2 L | 0x64 | spdif 2 L
KX_OUT(7) | out7 | Headphones R / A6 | 0x27 | spdif 2 R | 0x65 | spdif 2 R
KX_OUT(8) | out8 | Rear L / A7 | 0x28 | spdif 3 L analog & digital rear | 0x6e | i2s 3 L analog only rear
KX_OUT(9) | out9 | Rear R / A8 | 0x29 | spdif 3 R analog & digital rear | 0x6f | i2s 3 R analog only rear
KX_OUT(0x11) | out17 | Analog Center | 0x31 | ac97 S L | 0x6a | i2s 1 L
KX_OUT(0x12) | out18 | Analog LFE | 0x32 | ac97 S R | 0x6b | i2s 1 R
KX_OUT(0x20) | (not present) not controllable | AC97 pseudo L | - | - | 0x70 | ac97 L
KX_OUT(0x21) | (not present) not controllable | AC97 pseudo R | - | - | 0x71 | ac97 R
KX_OUT(0x28) | (not present) controlled by out8 | Digital Rear | - | - | 0x66 | spdif 3 L digital only
KX_OUT(0x29) | (not present) controlled by out9 | Digital Rear | - | - | 0x67 | spdif 3 R digital only
KX_OUT(0x30) | out30 | Unknown L | - | - | 0x6c | i2s 2 L
KX_OUT(0x31) | out31 | Unknown R | - | - | 0x6d | i2s 2 R
KX_OUT(0xa) | RecL | ADC Rec L | 0x2a | ADC Rec L | 0x76 | ADC Rec L
KX_OUT(0xb) | RecR | ADC Rec R | 0x2b | ADC Rec R | 0x77 | ADC Rec R
KX_OUT(0xc) | (not present) | Mic Rec | 0x2c | Mic Rec | 0x78 | Mic Rec

Inputs

kX Number | Prolog name | 10k2 mne | 10k2 DSP # | 10k1 mne | 10k1 DSP # | Meaning
KX_IN(0x0) | in0 | AC97 ADC Left | 0x40 | -""- | 0x10 | AC97 line-in/mic-in L / A1
KX_IN(0x1) | in1 | AC97 ADC Right | 0x41 | -""- | 0x11 | AC97 line-in/mic/in R / A2
KX_IN(0x2) | in2 | SPDIF A Left | 0x42 | -""- | 0x12 | CD SPDIF L / D1 L
KX_IN(0x3) | in3 | SPDIF A Right | 0x43 | -""- | 0x13 | CD SPDIF R / D1 R
KX_IN(0x4) | in4 | SPDIF C Left | 0x46 | (?) | 0x14 | Unknown 1 In L (ZVideo I2S)
KX_IN(0x5) | in5 | SPDIF C Right | 0x47 | (?) | 0x15 | Unknown 1 In R (ZVideo I2S)
KX_IN(0x6) | in6 | SPDIF B Left | 0x44 | -""- | 0x16 | Coaxial+Optical In L / D2 L
KX_IN(0x7) | in7 | SPDIF B Right | 0x45 | -""- | 0x17 | Coaxial+Optical In R / D2 R
KX_IN(0x8) | in8 | I2S 0 Left | 0x48 | -""- | 0x18 | Line2/Mic2 / Line1(A2Ex) L / A3
KX_IN(0x9) | in9 | I2S 0 Right | 0x49 | -""- | 0x19 | Line2/Mic2 / Line1(A2Ex) R / A4
KX_IN(0xa) | in10 | I2S 1 Left | 0x4a | -""- | 0x1a | 10k2 AC97.2 L / Line2(A2Ex) L
KX_IN(0xb) | in11 | I2S 1 Right | 0x4b | -""- | 0x1b | 10k2 AC97.2 R / Line2(A2Ex) R
KX_IN(0xc) | in12 | I2S 2 Left | 0x4c | -""- | 0x1c | Aux2 L / Line3(A2Ex) L
KX_IN(0xd) | in13 | I2S 2 Right | 0x4d | -""- | 0x1d | Aux2 R / Line3(A2Ex) R
KX_IN(0xe) | in14 | AC97 Mic ADC | 0x4e | -""- | 0x1e | unused
KX_IN(0xf) | (not present) | Unused | 0x4f | -""- | 0x1f | unused


kX MIDI Implementation

Present kX Audio Driver MIDI implementation:

 0x80 note off
 0x90 note on / off
       Velocity affects Filter Cutoff according to SoundFont 2.01 specification:
       (8.4.2 MIDI Note-On Velocity to Filter Cutoff (-2400 cents))
       for velocities less than 64: Filter Cutoff -= (64-velocity)*2400/64 (0..2400 cents)
 0xa0 key pressure (realtime velocity change)
 0xb0 controller
 0xc0 program change
 0xd0 channel pressure (realtime modulation change)
       MIDI Channel Pressure affects Vibrato LFO Pitch Depth [50 cents / max excursion]
       (according to SoundFont 2.01 specification, 8.4.3)
 0xe0 pitchbend
 0xf0, 0xf7 sysex

 MIDI Controllers:

  0 - bank LSB
       see #32
  1 - modulation
       MIDI Continuous Controller 1 affects Vibrato LFO Pitch Depth [50 cents / max excursion]
       (according to SoundFont 2.01 specification, 8.4.4)
       in 'Legacy mode' affects Modulation LFO Pitch Depth (18 * Modulation CC) / 1200
  2 - breath [under development]
  4 - foot [under development]
  5 - portamento time [under development]
  6 - data entry
  7 - volume
  8 - balance
       stereo balance
       doesn't change instrument positions
  10 - pan
        affects stereo samples in generic way
  11 - expression
  16 - General Purpose 1 [10k2 SendE Amount]
  17 - General Purpose 2 [10k2 SendF Amount]
  18 - General Purpose 3 [10k2 SendG Amount]
  19 - General Purpose 4 [10k2 SendH Amount]
  32 - bank MSB
        supports 'mixed' programming model
        resulting bank number is: LSB+MSB,
        thus, 254 banks are accessible and both 'LSB only' & 'MSB only' modes are supported
        kX Mixer supports 251 (0..250) banks
        this behaviour might change in the future...
  38 - data entry
  64 - sustain
  65 - portamento on/off [under development]
  66 - sostenuto
  67 - soft pedal
       implemented via Filter Cutoff:
       if active, Filter Cutoff is increased by 0x9e (158) - that is, gives 9000 cents
       (that is, Filter Cutoff frequency is decreased)
  68 - legato
       if active, sets Attack time to 0
  69 - hold2
        implemented via Modulation / Volume Envelope Release Time
        if active, Modulation / Volume Envelope Release Time is increased by 1900 timecents
  71 - sound resonance
        implemented via Filter Q (0..15 units)
        0 - resonance is decreased by 15 units
        64 - default
        127 - resonance is increased by 15 units
  72 - sound release
        implemented via Volume Envelope Release Time
        0 - release time is decreased by 2400 timecents
        64 - default
        127 - release time is increased by 2400 timecents
  73 - sound attack
        implemented via Volume Envelope Attack time (0..127 units)
        0 - attack time is decreased by 64 units
        64 - default
        127 - attack time is increased by 64 units
        (log-encoded)
  74 - sound brightness
        implemented via Filter Cutoff
        0 - Filter Cutoff frequency increases (minimum effect depth)
        64 - default;
        127 - Filter Cutoff frequency decreases (maximum effect depth)
  84 - portamento control [under development]
  91 - reverb level
        implemented according to SoundFont 2.01 specification:
        8.4.8 MIDI Continuous Controller 91 to Reverb Effects Send
        Amount equals to 200 tenths of a percent
        that is, 127 gives 20% reverb increase
  92 - tremulo level [under development]
  93 - chorus level
        implemented according to SoundFont 2.01 specification:
        8.4.9 MIDI Continuous Controller 93 to Chorus Effects Send
        Amount equals to 200 tenths of a percent
        that is, 127 gives 20% chorus increase
  94 - celeste level [under development]
  95 - phaser level [under development]
  96 - data increment
  97 - data decrement
  98 - NRPN lsb fine
  99 - NRPN msb coarse
  100 - RPN lsb fine
  101 - RPN msb coarse
  120 - all sounds off [terminate all notes]
  121 - reset all controllers
         the following controlles aren't reset (according to MIDI specification):
         7 (Volume),
         10 (Pan),
         8 (Balance),
         91 (Reverb),
         93 (Chorus),
         92, 94, 95 (Tremulo, Celeste, Phaser)
         0, 32 (Bank selection)
  123 - all notes off [release all notes]

 supported RPNs:
  00 - pitchbend sensivity
  01 - master fine tuning
  02 - master coarse tuning
  7f - RPN reset

 supported NRPNs:
  SoundFont 2.01 NRPNs
  AWE NRPNs

 SysEx:
  f0 7f 7f 04 01 LL MM f7 - synth volume


Glossary

AC97 | Audio Codec 97 (Codec is from Coder-Decoder). Commonly used to refer to the ADC/DAC found on SoundBlaster Live! and Audigy cards.
ADC | Analog to Digital Converter. A device that converts analog signals into digital form.
APS | Audio Production Studio. EMU10k1-based sound-card by E-mu Systems Inc.
ASIO | Audio Stream Input Output. A multi-channel audio transfer protocol developed by Steinberg.
DAC | Digital to Analog Converter. A device that converts digital signals into analog form.
DOO | Digital Output Only. AC97 Codec setting permitting the recording of multiple analog sources.
DSP | Digital Signal Processing.
E-Drive | E-mu APS Input/Output module designed to fit standard 5-1/4" drive bay.
FXBus | Effects Bus. A common path that routes a digital effects signal from one or more sources to one or more destinations.
GPR | General Purpose Register.
I2S | Inter-IC Sound, a digital sound format.
LiveDrive | Input/Output module designed to fit standard 5-1/4" drive bay, for use with Live! and Audigy cards.
MIDI | Musical Instrument Digital Interface. Protocol for interconnection and control of musical instruments.
PCM | Pulse Code Modulation. Uncompressed encoding scheme for storing digital data, typically associated with wave data.
SoundFont | Data format containing samples and instructions for wavetable synthesis.
SPDIF | Sony-Philips Digital Interface Format, a digital audio interconnection standard.
TAD | Telephone Answering Device (or voice modem).
kX-compatible Soundcards compatible with the kX Audio Driver. Currently supported models include all EMU10k1 and EMU10k2-based PCI soundcards manufactured by Creative Technology Ltd. and/or E-mu Systems Inc., including:
  • The E-mu Audio Production Studio (APS) card
  • The motherboard models of 10k1 cards (M002, M003 and others)
  • PCI256 (CT4890, CT4891 and CT4893) and PCI512 (CT4820 and SB0150) including OEM model (CT4790)
  • The original Live! (CT4620) and Live! Value cards (CT4670)
  • The Live! X-Gamer, Live! MP3+, Live! Player 1024, Live! Platinum cards (CT4760) and value cards (CT4780)
  • The Live! X-Gamer 5.1, Live! MP3+ 5.1, Live! Player 5.1, Live! Platinum 5.1, Live! Digital Entertainment 5.1 cards (SB0060, SB0100, SB0102, SB0220, SB0222, SB0103 and SB0105) and Value 5.1 (SB0101)
  • The generic and custom OEM Live cards (CT4830, CT4831, CT4832, CT4850, CT4870, CT4871 and CT4872)
  • The Audigy series, including the Audigy MP3+, X-Gamer, Platinum and OEM cards (CT0070, CT0072, SB0090 and SB0092).

Audigy2 series support is incomplete, because we don't have test samples. But, as soon as we get enough money to buy one, the full support will be implemented. If you want to help, make a donation to the kX Fund.


Command Line Reference

kX Command Line Reference

kxsetup.exe options Performs standard kX Audio driver and kX Mixer setup
--clean
 Performs pre-install cleanup procedure which is done automatically when the kX drivers are installed. Disables some Creative software components and any previously installed instance of the kX Mixer and the kX Audio Driver
--noreboot
 Cancels reboot after driver installation
kxmixer.exe options:
--quit
 Closes all active instances of the kX mixer
--startup
Performs startup sequence: restores kX settings from the kxdefault.kx file
--shell
Shell integration option: for internal use only
--no10k2
Disables 10k2 support
--10k2
Forces 10k2 support
--no51
Disables 5.1 support
--51
Forces 5.1 support
--aps
Forces E-mu APS support
--noaps
Disables E-mu APS support
--noa2
Disables Audigy2 support
--a2
Forces Audigy2 support
--nok2ex
Disables Audigy2 Platinum Ex support
--k2ex
Forces Audigy2 Platinum Ex support
--no2k
Disables Windows 2000/XP Extended GUI support


Copyright

Legal Trademarks and Copyright

  • kX Audio Driver, kX Mixer (including kX DSP, kX DSP Editor, kX ASIO, kX Router, kX Remote, kX Automation), and Aqua Skin are Copyright © Eugene Gavrilov, 2001-2003. All rights reserved.
  • kX DSP effects library Copyright © Eugene Gavrilov, Hanz Petrov and Max Mikhailov, 2001-2003. All rights reserved.
  • Portions of code Copyright © Sergey Komarinsky, 2002.
  • DAnE Assembler Copyright © Max Mikhailov and Eugene Gavrilov, 2001-2003. All rights reserved.
  • kX Help file Copyright © Hanz Petrov, Eugene Gavrilov, Soeren Bovbjerg and Vedran Miletic, 2002-2003. All rights reserved.
  • CodeMax2.0 Copyright 1997-2000 Barry Allyn.
  • inflate 1.1.3 Copyright 1995-1998 Mark Adler
  • sfArk SoundFont Compression is Copyright © melodymachine.com. All Rights Reserved
  • Sound Blaster and EAX are registered trademarks and EMU10k1, Audigy, Environmental Audio, Environmental Audio eXtensions, and Live! are trademarks of Creative Technology Ltd.
  • E-MU, E-MU SYSTEMS, APS, Audio Production Studio, ENSONIQ and SoundFont are registered trademarks owned or licensed by E-MU / ENSONIQ.
  • Cubase and VST are registered trademarks and ASIO is a trademark of Steinberg Media Technologies AG.
  • Microsoft, Windows and DirectX are registered trademarks of Microsoft Corporation.

    All other brand and product names are trademarks or registered trademarks of their respective holders and are hereby recognized as such.

kX Project is in no way affiliated, associated or connected with E-mu Systems Ltd. or Creative Technology Inc.


Credits

kX Audio Driver and kX mixer were written by me, Eugene Gavrilov.
The kX Audio Driver is Freeware, but since I have spent many hours working on this program, I would appreciate any donations which you can offer/spare.

I would like to thank Hanz Petrov from the Independent EMU10K1 Programmers Site for his support; Soeren Bovbjerg for driver testing and feedback; Friedemann Wolpert for Web Hosting, Dennis Samuelsson and Luki Goldschmidt for the kX Site mirrors.

I also appreciate all of the feedback, messages and e-mails that people have sent.

I would like to thank the people at opensource.creative.com, especially Daniel Bertrand and Rui Sousa. Thanks to Fabio Bizzetti for his work on how to fix the inter-channel and inter-converter delays on AC97 / I2S CODECs. Also, thanks to Sergey Komarinsky for C++ code optimizations.

I would like to thank Vedran "RIV@NVX" Miletic for BETA testing, bug reports, Croatian translation, help and screenshots updating and some ideas.

My greetings also go to the Creative/EMU engineers for their hardware.

The following people contributed DSP effects to the kX Project: Cybercurve, eYagos, Robert Mazur, Martijn van Eeten, Remy TROTIN, WORM, Soeren Bovbjerg, Hanz, Mathias Wagner, moudi, David Descheneau, Max M.

The following people worked on translating the kX Audio Driver into different languages: alino [Italian] _a_l_e_ AT mail.com, Guayabo [Spanish], Valentin RUSU [Romanian] kx AT valentinrusu.net, Treasure [Deutsch], stachooo AT poczta.fm, Yves Prigent / Kapifree [French versions] yves.prigent AT numericable.fr / kapi AT free.fr, Petri Jokinen petri.jokinen AT telia.com, Bedeox [Second Polish version] bedeox AT emil.teleton.pl, poprawki polskiego tiumaczenia Siawomir Siodelski s.siodelski AT kujawy.ruch.com.pl, Marko P. / Michael Lilja [Swedish] axiomis AT hotmail.com / michael.lilja AT telia.com, Vedran "RIV@NVX" Miletic [Croatian] riva_station AT yahoo.com, Pal A. Lind [Norwegian] palind AT online.no, Tim Mertens [Dutch] tim AT dimed.be, Svetlin Staikov [Bulgarian] sjs AT abv.bg, Daniel Marinho Drummond [Brasilian] daniel AT ufla.br, Sümegi Tamás [Hungarian] sumegit AT enternet.hu, Shyguy [Korean] freebits AT hanafos.com, Vasilis Platanias [Greek] azathoth AT otenet.gr, Benny Wen [Chinese] itwinner AT cmmail.com.

Also, I'd like to thank Matt Young, DK, DM and Tom Weber for their incredibly generous investment into the kX Project.

And last, but certainly not least - thanks to Max Mikhailov for the RIFX Info, DSP Effects, Dane Assembler, bug reports, BETA testing and his source code.

- Eugene Gavrilov


PLEASE READ THIS DOCUMENT
CAREFULLY BEFORE INSTALLING
THE SOFTWARE.

EUGENE GAVRILOV
SOFTWARE LICENSE AGREEMENT:

This is a legal agreement  between you (individual
or entity) and Eugene Gavrilov  ('the Author').
This Agreement states  the terms and conditions upon
which Eugene Gavrilov offers to license the software,
including, but not limited to, the executable programs,
drivers, libraries, DSP microcode both in source and
in binary form and data files associated with such
programs (collectively, the 'Software').
The Software is licensed, not sold, ownership remains
with the Author. By installing, copying, or making any
use of this Software you agree to be bound by the terms
of this agreement. If you do not agree, do not use or
install the Software -- immediately remove any and all
downloaded or installed versions from your computer
system and/or storage archives.

LICENSE:
The Author grants you a conditional license to use the
Software, subject to the terms included herein.

ASSIGN OR TRANSFER OF LICENSE:
License may not be assigned or transferred to another
person or entity, without prior written permission from
the Author.

COPYRIGHT:
This Software is the proprietary property of the Author
and is protected by Copyright Law. You do not acquire
any rights of ownership whatsoever.

DESCRIPTION OF RIGHTS AND LIMITATIONS:
You agree to not permit or cause any removal or
modification of copyright or proprietary notices,
file name changes, or any modification or additions
to the Software files of any kind. You agree the
Software may not be sold or included in any product
or package without specific written permission of
the Author -- and that only sites designated by the
Author are allowed to distribute this Software,

NO OTHER DISTRIBUTION IS ALLOWED.

DECOMPILING, DISASSEMBLING,
OR REVERSE ENGINEERING:
Except to the extent expressly permitted by this
Agreement or by the laws of the jurisdiction where
you are located, you may not decompile, disassemble
or otherwise reverse engineer the Software, or
engage in any other activities to obtain underlying
information that is not visible to the user in
connection with normal use of the Software.

TERMINATION:
The Author may terminate this agreement should you
fail to comply with any of these terms and/or
conditions. In such event, you agree to immediately
remove this Software from your computer system and
destroy any copies on hand.

DISCLAIMER OF WARRANTY -- NO WARRANTY:
The Author expressly disclaims any warranty for this
product, including all descriptions, documentation,
and on-line documentation. This Software is provided
'AS IS' without warranty of any kind, including
without limitation, any implied warranties of fitness
for a particular purpose or result.
Eugene Gavrilov does not warrant that the functions
contained in the Software will meet your requirements
or that the operation of the Software will be
uninterrupted or error-free or free from malicious code.
For purposes of this paragraph, 'malicious code'
means any program code designed to contaminate
other computer programs or computer data, consume
computer resources, modify, destroy, record, or
transmit data,or in some other fashion usurp the
normal operation of the computer, computer system,
or computer network.

LIMITATION OF LIABILITY -- NO LIABILITY:
The Software is provided 'AS IS'. You agree to assume
the entire risk for any damage or result arising from
its download, installation and use, including the license
process. In no event will the Author (or his agents
and/or associates) be liable to you for any incidental
or consequential damages or losses whatsoever,
including without limitation, damage to data,
property or profits, arising from any use, or
from any inability to use said Software.

FINAL PROVISIONS:
This agreement and the interpretation thereof shall be
exclusively subject to the laws of Russian Federation.
If any one stipulation of this License contract should
be or become invalid, completely or in part, this shall
not affect the validity of the remaining stipulations.
The parties undertake instead to replace the invalid
stipulations with a valid regulation which comes as
closely as possible to the purpose originally intended.
Amendments, supplements and notices of termination
of this agreement must be made in writing. The
rescission of this agreement or an alteration to the
requirement of the written form must also be made
in writing.
Subsidiary agreements have not been concluded.
Place of jurisdiction for all disputes is Moscow.

(c) 2001,2002,2003 Eugene Gavrilov.  All rights reserved.
Contact information: www.kxproject.com


EUGENE GAVRILOV KX AUDIO DRIVER SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT:

This is a legal agreement between you (individual or entity) and
Eugene Gavrilov ("the Author"). This Agreement states the terms and
conditions upon which Eugene Gavrilov offers to license the software,
including, but not limited to, the executable programs, binary files,
custom microcode for digital signal processors (DSPs) both in source
and in binary form as well as host-based control code, header files,
source code, libraries and data files associated with kX Audio Driver
Software Development Kit (SDK), kX Audio Driver Effects Library
(kXFXLIB), kX Graphics User Interface (kX GUI), kX Audio Driver and
kX Audio Driver Application Programming Interface (API)
(collectively, the "Software").

§ 1	OBJECT OF THE AGREEMENT

1.	The object of this agreement consists of the kX Audio Driver
    Software Development Kit (SDK), comprising of (but not limited to)
    documentation, header and library files, kX Application Programming Interface (API),
    kX Graphics User Interface (kX GUI), kX Audio Driver Effects Library (kXFXLIB),
    kX Audio Driver Application Programming Interface (API),
    custom microcode for digital signal processors (DSPs) both in source and binary
    form and several examples.
    These are described hereinafter as the "Software".

2.	Eugene Gavrilov is the holder of all copyrights, rights of ownership, and other
    rights concerning the Software. Some parts of the "Software" may be written by
    third-parties.

3.	The Software contains information about
    - how to extend an application so that it can use kX Driver extensions,
    - how to program custom digital signal processors for audio processing,
    - how to provide host-based control code,
    - how to organize user interaction and custom microcode control,
    and also contains custom microcode for digital signal processors.

§ 2	GRANTING OF RIGHTS

1.	Eugene Gavrilov grants to the Licensee a non-exclusive, worldwide, nontransferable
    license during the term of this agreement to use the Software  solely:
    (i) for the development of an application that uses kX Audio Driver extensions,
    (ii) to publish a product under his own name that is using parts or all of
    the Software (excluding custom microcode for digital signal processors both in
    source and / or binary form).

2.	The Licensee has no permission to sell, licence, give-away and/or distribute
    the Software or parts of it in anyway, on any medium, including the Internet,
    to any other person, including sub-licensors of the Licensee or companies
    where the Licensee has any involvement. This includes re-working this
    specification, or reverse-engineering any products based upon this specification.
        THE LICENSEE HAS NO PERMISSION TO USE CUSTOM MICROCODE FOR DIGITAL SIGNAL PROCESSORS
        BUNDLED WITH THE "Software" NEITHER IN SOURCE, NOR IN BINARY FORM FOR ANY COMMERCIAL USE.

3.	If the Licensee is developing a product, that is using parts or all of the
    Software, and this product is not published under his own name but will be
    published by another company, the Licensee is under the obligation to inform
    the publisher of the resulting product, that he too must be a party to this
    Licensing Agreement. The publisher has to completely agree with the Software License
    Agreement. If the publisher is not in agreement with these conditions,
    the publisher is not allowed to distribute this product which is using
    parts or all of the Software.

4.	If the Licensee is planning to publish a product, that is using parts or all
    of the Software, the Licensee is under the obligation to inform Eugene Gavrilov
    about it by sending a e-mail request to Eugene Gavrilov. (See contact address below).

§ 3	USE OF TRADEMARKS

    If the Licensee is publishing a product under his own name that is using
    parts or all of the Software, the Licensee  shall be under an obligation
    to refer to Eugene Gavrilov's copyrights and trademarks in the following way:

    a) Eugene Gavrilov's copyright notice should be included in the documentation,
    regardless of the media used to supply the documentation.
    Copyright notice: "kX Audio Driver Interface by Eugene Gavrilov; www.kxproject.com"

    b) In the 'about box' of the product in the following format:
    - kX Audio Driver Interface by Eugene Gavrilov; www.kxproject.com.

§ 4	FEES AND ROYALTIES

    The Licensee shall not obligated to pay to Eugene Gavrilov any fees or
    royalties with respect to the Software.

§ 5	LIABILITY FOR CONSEQUENTIAL DAMAGES

    Eugene Gavrilov will not be liable for any consequential, special,
    incidental, direct or indirect damages of any kind, including the
    loss of data, damage of data-storage-devices, or any loss or damage
    to other programs being used, arising out of the use of the Software
    or any software developed by the Licensee, including any future up-dates.

§ 6	PRODUCT WARRANTY

    1. Eugene Gavrilov licences the Software on an "AS IS" basis.
    Eugene Gavrilov makes no warranties, express or implied, including
    without limitation the implied warranties of merchantability and
    fitness for a particular purpose, regarding the Software or operation
    and use in combination with the Licensee's program. Neither the
    Licensee, its employees, agents, or Distributors have any right
    to make any other representation, warranty or promise with respect
    to the Software.

    2. In no event shall Eugene Gavrilov be liable for incidental or
    consequential damages arising from the use, or distribution of
    the Software by the Licensee, whether theory of contract, product
    liability or otherwise. All  claims for indemnification for losses
    by the Licensee itself or by third parties shall be excluded.

    3. Eugene Gavrilov may release improved versions of the Software
    but offers no commitment whatsoever that such releases will occur
    at anytime or for anybody.

§ 7	INFRINGEMENT

    Eugene Gavrilov represents and warrants that, as of the date of
    this Agreement, it is not aware of any claim or action alleging that
    the content of the Software infringes any third party intellectual
    property right. Eugene Gavrilov, however, disclaims any obligation
    of defense or indemnify of the Licensee or its customer  with respect
    to any such claim or action, or otherwise arising out of this agreement.
    Eugene Gavrilov shall have no liability arising out of any such actual
    or alleged intellectual property infringement. The Licensee, however,
    shall promptly notify Eugene Gavrilov, in writing, of each such
    infringement claim of which the Licensee becomes aware.

§ 8	RELATIONSHIP BETWEEN THE TWO PARTIES

    Nothing stated in this Agreement will be construed as creating the
    relationships of joint ventures, partners, principal, agent or whatsoever.
    The Licensee shall not be entitled to represent Eugene Gavrilov or to make
    statements on its behalf.

§ 9	TERM OF THE AGREEMENT

    1. The Agreement shall run for a unlimited period.

    2. If the Licensee is in breach of any of its obligations set out in
    this agreement, Eugene Gavrilov shall be entitled to terminate this
    agreement immediately in writing and inform the Licensee verbally or by
    e-mail about it. In such a case, this license and all the rights granted
    to the Licensee herein shall immediately cease.

§ 10	FINAL PROVISIONS

    1. This agreement and the interpretation thereof shall be exclusively
    subject to the laws of Russian Federation.

    2. If any one stipulation of this License contract should be or become
    invalid, completely or in part, this shall not affect the validity of
    the remaining stipulations. The parties undertake instead to replace
    the invalid stipulations with a valid regulation which comes as closely
    as possible to the purpose originally intended.

    3. Amendments, supplements and notices of termination of this agreement
    must be made in writing. The rescission of this agreement or an alteration
    to the requirement of the written form must also be made in writing.
    Subsidiary agreements have not been concluded.

    5. Place of jurisdiction for all disputes is Moscow.

    6. This agreement does not require a specific form (e.g. recording by a notary).

Copyright (c) 2001,2002,2003 Eugene Gavrilov.  All rights reserved.
Contact information: www.kxproject.com

You may need to accept Steinberg ASIO SDK Licensing Agreement in order to use
kX Driver ASIO extensions

ASIO Technology by Steinberg


Direct Recording Guide

Introduction

The 10k1 and 10k2-based audio cards support SPDIF digital inputs and outputs. It is widely known that the 10k1 and 10k2 chips operate at a fixed sampling rate, 48000 Hz. So, in order to synchronize internal clocks with SPDIF In signals, the input stream is resampled to 48000 frequency (regardless of its original frequency). Moreover, if the input stream frequency is already 48000, it is still resampled in order to avoid possible synchronization issues. That is why it is theoretically impossible to record SPDIF input bit-to-bit (make an 'exact' copy of the digital signal). The problem cannot be fixed for 10k1-based boards, however, the 10k2 chip (used in Audigy and Audigy2 series of cards) has a special feature - Direct SPDIF recording.

Detailed description

The 'Direct SPDIF Recording' is activated via kX Mixer (on the main page). Due to the nature of this recording method, the signal completely bypasses the DSP, which is why it is not affected by any uploaded effects or by the kX Mixer sliders and recording levels. After enabling 'Direct SPDIF Recording' no other recording sources are unavailable.
It is possible to choose which SPDIF input to record: Coaxial/Optical SPDIF, CD SPDIF etc. In the present implementation it is possible to record analog I2S sources (Line2/Mic2, AUX2) in 'direct' mode, too. This feature is currently being tested since this aspect of hardware functionality has not been clearly defined.
Note that SPDIF inputs can transmit the signal at any sampling rate (44100, 48000, 96000 etc...), so, it is up to user to choose the correct sampling rate in his/her audio application. The kX driver won't try to autodetect the sampling rate. The sampling rate is, however, limited by the actual hardware capabilities. It should be possible to record at 96000 frequency on practically every 10k2-based board (such as Audigy1 and Audigy2). Also note that it might require up to 10 seconds for the SPDIF Input to synchronize to the incoming signal, if its sampling rate is more than 48000. If the signal is distorted or audio is muted, try unplugging and re-plugging the SPDIF cable.

Conclusion

Direct SPDIF recording drammatically improves the recording quality of digital sources when the main goal is to make an 'exact' copy of the digital signal. The improvements include better frequency response and intermodulation. In the present implementation Direct SPDIF Recording is not supported for ASIO.


Front & Rear Issues

Front / Rear DAC Issues

These issues pertain to all Creative cards, but not to the E-mu APS and Audigy2 Platinum Ex. Creative audio cards based on the EMU10kX audio DSP require a DAC (Digital to Analog Converter) in order to produce analog output. In general, this task is typically performed by either AC97 Codecs or I2S Codecs.

As a rule, Creative audio cards use the AC97 Codec for Front and Center/Subwoofer outputs, and I2S Codec for Rear output. The AC97 Codec is also used as an ADC (Analog to Digital Converter) and, thus, is responsible for all on-board analog inputs. (Note that LiveDrives and other DaughterBoard cards use different schemes).

The AC97 Codecs used in SBLive! cards are rather noisy devices (when compared to I2S Codecs), and this leads to some quality problems. As a rule, SBLive Rear outputs have much better Signal To Noise Ratio (SNR), Total Harmonic Distortion (THD) and Channel Separation (acs) since they use the I2S Codec. So, if you want to get better sound quality for music playback it is recommended that you plug your speakers into the 'Rear Out' and enable the 'Swap Front and Rear' kX Mixer option (the swap is enabled by default).

The Audigy and Audigy2 cards use both AC97 and I2S Codecs for Front output and this theoretically gives you rather good Front quality. But nevertheless, the AC97 Codec causes some distortion and thus the same procedure is recommended for use with Audigy / Audigy2 cards as well.

The Audigy2 Platinum Ex card lacks AC97 codec and thus doesn't require Front and Rear outputs to be swapped.

Of course, the above should be considered as a recommendation only.


kX Guide for Beginners

The kX Audio driver was developed for soundcards based on the Emu10k1 and Emu10k2 chips, such as the SBLive, Audigy and other cards. These Emu10kx chips are actually Digital Sound Processors (DSP). If you look at the DSP part of the kX Audio Driver, you can in fact edit the properties and behaviour of the chip on your sound card, by modifying routings, loading and tweaking effects and so on.

To explain this in a bit more detail, let's first look at the main parts of the kX DSP window. The best way to describe this is to imagine it as a kind of rack, with different input and output devices and effect devices, all connected by (very high grade) audio cables. The "devices" you see in the kX DSP window all have inputs (on the left) or outputs (on the right), or both, and are connected to each other with virtual audio cables (the blue lines).

Apart from the various plugin effects, there are 4 distinct "I/O" devices in the DSP window. These are the FXbus (2 if you have an 10k2-based card), the Prolog, the Epilog and the (x)Routing device. Let's explore these four in more detail, then we'll have a look at ASIO routing and wrap-up with a review of the kX Routing Window.

1. The FXBus

The FXbus has 16 outputs (or 32 for 10k2-based boards, and 64 if an additional 'FXBus2' effect is uploaded) for audio streams generated by software running on your PC ( such as an mp3 player, sound from a MIDI WaveTable synthesizer, or from one of the ASIO outputs). All audio data you generate, will be found on this device.

2. The Prolog

The prolog outputs any audio data originating from OUTSIDE your PC, such as the Digital Optical In on the LiveDrive, or the Digital CD (CDSPDIF) Connector on the card itself. One special output of the prolog device, which is the cause of much confusion among new kX driver users, is the AC97 output.

The 10k1 and 10k2 chips are digital chips (yes purists, not all chips are digital :-), and so they cannot accept analog input directly . On the Live! (Audigy) card, there is another chip responsible for this - the AC97 codec. This chip connects all of the analog inputs on the Live! board itself (with the exception of the LiveDrive inputs), mixes them, and feeds them into the Emu10kX. This codec is responsible for the LineIn and MicIn of the card itself, and the CD Analog In (but not CD Digital), among others. You can control this codec with the AC97 part of the kX mixer, remembering that the AC97 line on the Prolog is where the audio data emerges (the Prolog is also the place to find all of the other inputs on the card and on the LiveDrive). Note that the LiveDrive uses high-quality ADC (analog to digital converters) which are generally superior to AC-97 codecs (the E-mu APS and Audigy2 Platinum Ex don't have AC97 codecs at all).

3. The Epilog

The Epilog device is where all data eventually output. It consists out of 2 parts; the "real" ('physical') outputs, and the "sampler" (e.g. ASIO) outputs. The real outputs simply reflect all of the physical outputs (both analog and digital) on the Emu10kX chip. Note that the Emu10kX is capable of 4 stereo digital outputs (yes, the original Live!, and even the 512 PCI, are all 7.1 cards). In order to take advantage of this fact without using a LiveDrive one can use the "AUD_EXT" connectors found on most 10kx cards (although some special knowledge and experience is generally required) .

On most 10kX boards, the "front" channel analog output is generated by the AC97 codec whereas the rear channel is done by an I2S codec. For this reason (I2S output is generally superior to AC97 output), kX Audio Driver swaps the 'Front' and 'Rear' connections by default. Note that in the case of Audigy and Audigy2 boards, an I2S codec is used for front output, and the AC97 codec is used for recording from onboard analog connectors only. However, it is still recommended to swap the Front and Rear connections because the output signals from the AC97 codec (even muted) are still connected to the 'Front' output of the card (and this impacts sound quality).

The best way to understand all of this, and to take advantage of it, is to not see the 10k1 and 10k2-based cards as audio cards with front and rear outputs and all, but simply as a 4 stereo channel output chips (which they actually are). Nobody tells you that you MUST use the "green" connector for your front speakers; you can just as well use it for your headphone output, and use the "black" (rear) connector as the feed to an audio system (in a club, use the green connector for headphone, black for the house audio feed, and start DJ-ing with 2 separate audio channels). Why use the black for the house audio system? Simple - the black (rear) channel uses the I2S codec, and thus produces better sound... and the audience deserves the best :-).

The second part of the Epilog is the part with the recording/sampler outputs. These outputs (RecL/R and the 16 ASIO recording channels) are used to feed your PC with audio streams. If you output to, for instance, the RecL/R ports, you can record/sample the audio to hard disk by using the standard windows recorder. You can use the 16 ASIO channels, to sample data to, for instance, Cubase, OR use them to feed data into SpinAudio/SoundDT's effect processors. These ports are basically your input connections to your applications (as opposed to the FXbus, which is the output of your applications)

4. Routing

Thinking back to the imagined "rack" setup, it should already be clear what the Routing device is. It's the central mixer part. The Routing device mixes the standard outputs of the FXBus and Prolog to the standard inputs of the Epilog, using the settings in the kX mixer control panel (i.e. the sliders). It also has two groups of special FX inputs, which are used to add special effects to the sound. Typically however, the router sends these 2 special FX mixes only to the real output channels, and not to the recording channels. Note that you can tweak the recording level of inserted effects via kX Mixer's 'Rec' page.

BUT (and this is the power of kX), you don't have to use any of this! You can make your very own DSP setup, or different setups for different needs, which you can save and restore. For instance, plug your guitar into your LiveDrive's LineIn2. Clear the whole DSP window, and load only the pProlog and Epilog (found with the "default" effects on the effects insert menu). Connect the LineIn2 to the front speakers, and that's it - directly routed. Add another 'line' from the same LineIn2 to the RecL/R, and you can record it just as well. Maybe add a nice EQ or Compressor effect in between somewhere - you get the idea!

5. ASIO Routing

ASIO is the name of a driver "API" made by Steinberg, for the purpose allowing drivers to achieve lower latency. This means that you can have your computer process audio data (coming, for instance, from some software on your PC, or an input on your sound card, and outputting to your sound system), all with latencies as low as near realtime. So when striking notes on a guitar, effects can be added to the signal in almost realtime, and sent to your audio set.

The kX driver's ASIO support allows audio to stream through 16 input and output channels with latency as low as 2.66 ms on a fast and well-tuned system, for both recording and playback.

ASIO Inputs

We've already explained where the ASIO inputs are found - 16 channels on the Epilog), route anything to there, and you can use the ASIO inputs in any application, to monitor, add effects, sample to hard drive, or output on the same ASIO drivers - or to any other output for that matter, but then you won't have the advantage of low latency which is the whole point of ASIO).

ASIO Outputs

You have 16 ASIO outputs. By default, these 16 channels are mapped 1-on-1 on the FX bus, so the 1st ASIO channel outputs on the 1st channel of the FX bus (actually, FXBus #0). So, going back to our guitar setup, connect the LineIn2 on the Prolog to a set of ASIO recording channels, say the last two (these are suggested only because there is a small problem with SB006x cards not being able to use the 2nd and 3rd ASIO recording lines - see our FAQ for more details). You now have your guitar on the last 2 ASIO channels. Fire up SpinAudio to add some effects - your input will be the last 2 ASIO channels. Thinking back of the rack, you now have to get the output of SpinAudio back into the DSP in order to connect to some sort of real output (as in for example , our "front + recorder setup"). In Spin Audio, output to the first 2 ASIO channels, to get the signal on the first 2 outputs on the FX bus. Now, draw some virtual cables to the front speakers in the kX DSP window (and to the recorder again maybe, or to another ASIO recorder. You can have as many connections you like, but keep in mind that every "connection" to and from the DSP, using the ASIO In and Out channels, adds latency (note that the connections in the kX DSP do not affect the latency at all - you can have as many asyou wish). Add and enable the effects in SpinAudio; start playing, and you've just completed your first ASIO routing with custom effects! :-)

6. The kX Routing Window

New users sometimes find the kX Routing Window to be confusing, in part because it has nothing to do with the DSP Routing device and everything to do with the FXBus. If you look at the routing window, you will see all of the software generated outputs, in a tree list on the left. You have Wave 0/1, 4/5, 6/7 and 8/9 - these correspond to the 4 wave out devices and their names refer to the "standard" FX routing bus setup 4/5, 6/7 and 8/9 are essentially copies of the DirectSound/AC3, Front/Rear and Center/Sub channels with 0/1 being the "standard" wave out. You will also find the AC-3 (and DirectSound, as mentioned above) outputs, the 2 synths, and the ASIO outputs.

How does this relate to the FXBus?

Well, the FXbus has its own internal routing/mixing and all of the software outputs are mapped to one of the FXbus outputs. Normally, stereo wave pair 0/1 is routed to channels 0 and 1 (and also to 13 and 14 for effects). The ASIO Outputs are normally mapped 1-on-1 to the FXbus (channel 1 to FXbus 1), the synths to FX 2 and 3, etc., etc. (check the kX help file for a complete routing table). You may change any of these settings, but the defaults are typically fine for most purposes An example of a special setup would be the addition of multiple mixed effects to specific outputs (similar to the standard Reverb/Chorus on channels 13/14).

So: that concludes our overview of the workings of kX and ASIO - good luck with the drivers and the DSP, and experiment a lot :-) that's the best way to learn!

-- written by Mata Hari
-- (minor corrections by kX Team)


Skins

Skins can be used with the kX Mixer

The kX Skin architecture was created in order to facilitate the creation of skins for kX mixer. The basic procedure for creating skins is as follows:

  • If you do not intend to add or relocate any controls, then you can simply create your own .zip file with modified .jpg and/or .gif images, and create a custom kxskin.ini file with only one section, called '[skin]', which describes your new skin. Don't forget to add kxskin.ini to your zip archive. Your new zip file can be placed anywhere on your hard disk. It's name should not be kxskin.zip and you should replace 'GUID' by a new one, generated by kX Mixer (Settings->Generate GUID). (GUID means Globally Unique IDentifier).
  • If your skin requires changes to window sizes or placement, you will have to create a more sophisticated kxskin.ini file. Refer to the included kxskin.ini example for details. However, if any settings are omitted from your custom kxskin.ini, they will be automatically retrieved from the default kxskin.ini that comes bundled with the kX mixer. Therefore, you are only required to provide your custom settings in your kxskin.ini file (including at a minimum the '[skin]' section). Note that images (.jpg/.gif files) and wave files (.wav) are now automatically retrieved from the default kxskin.zip when using a custom mixer skin (since version 3514).
  • In general, the image and wave filenames referenced by kxskin.ini should not be changed, nor should you modify the text strings (in fact you may ommit them from your custom kxskin.ini). However, if you plan to localize kX mixer, please drop us an e-mail.
  • Once you have created your custom skin images, they should be zipped together with your custom kxskin.ini file, into a zip file with a unique filename and with unique GUID. To use the skin, simply click 'Skin'->'Add Skin'.
  • Note also that the skin name should be unique.
  • In order to use these skins you should have at least version 3509 of the kX Software.
  • Since 3521 you can use RAR archives instead of ZIP. However, avoid using solid archives, because this may reduce the overall performance.
  • Since 3523 locale-dependent information is stored in lang.ini file. Do not include this file with your custom skin.
  • Note that all the files not found in your custom skin are automatically retrieved from the default skin. For instance, you may successfully omit .wav files in your custom skin.
If you are interested in creating your own skins - or have already created one - drop us an e-mail at .