Skip to content

sjoerdvankreel/xt-audio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<html>
  <head>
    <title>XT-Audio</title>
    <style>
      body { width: 1024; }
    </style>
  </head>
  <body>
    <h1>Runtime requirements</h1>
    <table border="1" cellspacing="0" cellpadding="2">
      <tr>
        <td/>
        <td>Windows x64</td>
        <td>Linux x64</td>
      </tr>
      <tr>
        <td>Java (library and samples)</td>
        <td>JRE 17+</td>
        <td>JRE 17+</td>
      </tr>
      <tr>
        <td>Native (library and samples)</td>
        <td>Windows 7+</td>
        <td>Something recent</td>
      </tr>
      <tr>
        <td>.NET Framework (library)</td>
        <td>netstandard2.0</td>
        <td>netstandard2.0</td>
      </tr>
      <tr>
        <td>.NET Framework (samples and gui)</td>
        <td>.NET 4.8</td>
        <td>Mono 6.8</td>
      </tr>
      <tr>
        <td>.NET Core (library)</td>
        <td>netstandard2.0</td>
        <td>netstandard2.0</td>
      </tr>
      <tr>
        <td>.NET Core (samples)</td>
        <td>.NET Runtime 6.0</td>
        <td>.NET Runtime 6.0</td>
      </tr>
      <tr>
        <td>.NET Core (gui)</td>
        <td>.NET Runtime 6.0</td>
        <td>Not supported (1)</td>
      </tr>
    </table>
    <ul>
      <li>(1): .NET Core on Linux does not support Winforms.</li>
    </ul>
    <h1>Build-time requirements</h1>
    <h2>Dependencies</h2>
    <table border="1" cellspacing="0" cellpadding="2">
      <tr>
        <td>PulseAudio (1,6)</td>
        <td>libpulse-dev</td>
      </tr>
      <tr>
        <td>ALSA (1,5)</td>
        <td>libasound-dev</td>
      </tr>
      <tr>
        <td>Jack (1,4)</td>
        <td>libjack-jackd2-dev</td>
      </tr>
      <tr>
        <td>DirectSound (2)</td>
        <td>None (built-in)</td>
      </tr>
      <tr>
        <td>WASAPI (2)</td>
        <td>None (built-in)</td>
      </tr>
      <tr>
        <td>ASIO (2,3)</td>
        <td>ASIO SDK 2.3.3 (source), asmjit (source, commit 2a706fd2ba355808cada31ac1eed8ce28caa6b37)
      </tr>
    </table>
    <ul>
      <li>(1) Linux only.</li>
      <li>(2) Windows only.</li>
      <li>(3) Only required when building with ASIO support.</li>
      <li>(4) Only required when building with JACK support.</li>
      <li>(5) Only required when building with ALSA support.</li>
      <li>(6) Only required when building with PulseAudio support.</li>
    </ul>
    <h2>Build tools</h2>
    <table border="1" cellspacing="0" cellpadding="2">
      <tr>
        <td>Linux x64 (1)</td>
        <td>GCC 9.3+<br/>CMake 3.21+</td>
      </tr>
      <tr>
        <td>Windows x64 (2)</td>
        <td>Visual Studio 2022+<br/>Java SDK 17+<br/>.NET Framework SDK 4.8+<br/>.NET 6.0+ SDK<br/>CMake 3.21+<br/>Maven 3.8.4+<br/>Doxygen 1.8.10+<br/>Sandcastle (SHFB) 2021.11.7.0+</td>
      </tr>
    </table>
    <ul>
      <li>(1): Builds Linux x64 core library and c++ samples only.</li>
      <li>(2): Builds x64 Windows core library and c++ samples, Java, .NET Framework and .NET Core bindings and samples, and .NET GUI demo program.</li>
    </ul>
    <h1>Building XT-Audio</h1>
    <h2>Selective backend compilation</h2>
    XT-Audio may be compiled with built-in support for any/all of DirectSound, WASAPI and ASIO on Windows,
    and PulseAudio, ALSA and JACK on Linux. The core library (C) API does not change regardless of
    which backends are compiled-in, so bindings to other languages stay the same. If support for a specific
    backend is not selected at build-time (either through the build scripts, CMake, or by directly invoking
    the C++ compiler with the appropriate flags), XT-Audio will build without dependencies on that backend.
    Pre-built binaries are compiled with all supported backends enabled.
    <h2>Build instructions</h2>
    <ul>
      <li>On X64 Linux: cd build && ./build.sh [ENABLE_PULSE] [ENABLE_ALSA] [ENABLE_JACK]</li>
      <li>On X64 Windows: cd build && build.bat [ENABLE_DSOUND] [ENABLE_WASAPI] [ENABLE_ASIO] path/to/asiosdk path/to/asmjit/src (2,3)</li>
    </ul>
    <ul>
      <li>(1) For example ./build.sh ON OFF OFF builds with PulseAudio support only.</li>
      <li>(2) For example build.bat OFF ON OFF builds with WASAPI support only.</li>
      <li>(3) Paths to ASIO SDK and asmjit are required for builds with ASIO support.</li>
    </ul>
    <h2>Build outputs</h2>
    <table border="1" cellspacing="0" cellpadding="2">
      <tr>
        <td>Core library</td>
        <td>x64, Linux/Windows, dynamic library and header files</td>
      </tr>
      <tr>
        <td>C++ bindings</td>
        <td>x64, Linux/Windows, header only</td>
      </tr>
      <tr>
        <td>C++ samples</td>
        <td>x64, Linux/Windows, native executable</td>
      </tr>
      <tr>
        <td>.NET bindings</td>
        <td>netstandard2.0</td>
      </tr>
      <tr>
        <td>.NET samples and demo GUI</td>
        <td>.NET Framework 4.8 / .NET Core 6.0 / Mono 6.8</td>
      </tr>
      <tr>
        <td>Java bindings and samples</td>
        <td>JRE 17+</td>
      </tr>
    </table>
  </body>
</html>