JackAudio over Network: Jack Client/Server Connection

JackAudio is a low latency audio connection software, that can transmit audio data via TCP/IP network connections. Setup is somewhat crucial for "first timers". I hope that this post can help over the standard pitfalls.

  1. Download and Install JackAudio
  2. Setup JACK Master
    • Launch Jack Control Application (as Administrator)
    • Configure Jack according to the following settings
      Jack-Setup-1
    • Start Jack using the "Start"-Button in the Jack Control GUIJack-Setup-2
    • Run an elevated command prompt  (as Administrator), change to the Program Files/Jack directory and run the following command:
      jack_load netmanager
      You can optionally bind the netmanager to an IP-Address using:
      jack_load netmanager -i "-a [IP-Address]"
  3. Setup the JACK Slave on another computer
    • From the command line enter the following:
      jackd -R -d net -a 192.168.0.1
      Note that the IP-Address must match the IP from the step before.

Using ASIO-Software, Jack publishes a "JackRouter" virtual driver that can be used to stream audio data through the network channel. Within the directory "C:\Program Files (x86)\Jack\32bits" there is a file called "Jackrouter,ini" which lets you configure input and output channels of the virtual sound driver.

Audio-Programming: Directshow Logarithmic Volume Control

[Latexpage]When programming audio user-interfaces, volume is usually calculated in form of logarithmic scales. In Windows, specifically DirectX, volume ranges from -10000 (=silence) up to 0 (=maximum volume). However, a volume slide is moved linearly between e.g. 0 (=silence) up to 1.0 (maximum volume) - so we need to convert linear values to logarithmic and vice versa.

The basic function, that takes a linear value in the range of [0;1] and converts to a exponential value can be denoted as:

exp10-volume1 
Note, that this function ranges from 0 up to 10 on the vertical axis. The inverse function can be denoted as the logarithmic function with base 10:

exp10-volume2

In order to apply the correct ranges, we need to shift the values of x in both functions. Thus, we can rewrite $f(x)$ as:

exp10-volume3For the logarithmic function, we write:

exp10-volume4
Using these formulae, we can convert volumes within the linear ranges from 0.0 to 1.0 to logarithmic values between -10000 and 0 and vice versa.