280 lines
26 KiB
HTML
280 lines
26 KiB
HTML
|
|||
|
|
|
||
|
|
<!DOCTYPE html>
|
||
|
|
<html class="writer-html5" lang="en" data-content_root="../">
|
||
|
|
<head>
|
||
|
|
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
|
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
|
|
<title>FAQ — TeamSpeak SDK documentation</title>
|
||
|
|
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||
|
|
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
|
||
|
|
|
||
|
|
|
||
|
|
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||
|
|
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||
|
|
<script src="../_static/documentation_options.js?v=7f41d439"></script>
|
||
|
|
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
||
|
|
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
|
|
<script src="../_static/js/theme.js"></script>
|
||
|
|
<link rel="index" title="Index" href="../genindex.html" />
|
||
|
|
<link rel="search" title="Search" href="../search.html" />
|
||
|
|
<link rel="prev" title="Custom passwords" href="passwords.html" />
|
||
|
|
</head>
|
||
|
|
|
||
|
|
<body class="wy-body-for-nav">
|
||
|
|
<div class="wy-grid-for-nav">
|
||
|
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
|
|
<div class="wy-side-scroll">
|
||
|
|
<div class="wy-side-nav-search" >
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<a href="../index.html" class="icon icon-home">
|
||
|
|
TeamSpeak SDK
|
||
|
|
<img src="../_static/logo.png" class="logo" alt="Logo"/>
|
||
|
|
</a>
|
||
|
|
<div role="search">
|
||
|
|
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||
|
|
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
||
|
|
<input type="hidden" name="area" value="default" />
|
||
|
|
</form>
|
||
|
|
</div>
|
||
|
|
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
|
|
<p class="caption" role="heading"><span class="caption-text">API</span></p>
|
||
|
|
<ul>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../errors.html">TeamSpeak Error Codes</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../properties.html">Property Enums</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../enumerations.html">Structures & Enumerations</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../client_api.html">TeamSpeak Client Functions</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server_api.html">TeamSpeak Server Functions</a></li>
|
||
|
|
</ul>
|
||
|
|
<p class="caption" role="heading"><span class="caption-text">Server</span></p>
|
||
|
|
<ul>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/intro.html">Introduction</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/basic.html">Getting started</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/list-items.html">List available clients, channels, servers</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/vserver-manage.html">Create and stop virtual servers</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/advanced-create.html">Advanced virtual server creation</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/info.html">Retrieve and store information</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/channels.html">Managing channels</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/clients.html">Managing clients</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/whisper.html">Whisper lists</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/encryption.html">Custom encryption</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/passwords.html">Custom passwords</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/permissions.html">Permission checks</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/security-salt.html">Security salts and hashes</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/disable-commands.html">Disabling protocol commands</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/filetransfer.html">Filetransfer</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="../server/faq.html">FAQ</a></li>
|
||
|
|
</ul>
|
||
|
|
<p class="caption" role="heading"><span class="caption-text">Client</span></p>
|
||
|
|
<ul class="current">
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="basic.html">Getting started</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="connections.html">Managing server connections</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="logging.html">Logging</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="audio.html">Client Audio</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="wave-files.html">Playing wave files</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="3dsound.html">3D Sound</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="whisper.html">Whisper lists</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="voice-encryption.html">Channel voice data encryption</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="info.html">Retrieve and store information</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="channels.html">Channel Management</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="client-list.html">List clients</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="client-kick.html">Kicking clients</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="local-mute.html">Muting other clients</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="textmessages.html">Text chat</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="filetransfer.html">Filetransfer</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="encryption.html">Custom encryption</a></li>
|
||
|
|
<li class="toctree-l1"><a class="reference internal" href="passwords.html">Custom passwords</a></li>
|
||
|
|
<li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ</a><ul>
|
||
|
|
<li class="toctree-l2"><a class="reference internal" href="#implementing-push-to-talk">Implementing Push-To-Talk</a><ul>
|
||
|
|
<li class="toctree-l3"><a class="reference internal" href="#example">Example</a></li>
|
||
|
|
</ul>
|
||
|
|
</li>
|
||
|
|
<li class="toctree-l2"><a class="reference internal" href="#adjusting-the-volume">Adjusting the volume</a><ul>
|
||
|
|
<li class="toctree-l3"><a class="reference internal" href="#output-volume">Output volume</a></li>
|
||
|
|
<li class="toctree-l3"><a class="reference internal" href="#input-volume">Input volume</a></li>
|
||
|
|
</ul>
|
||
|
|
</li>
|
||
|
|
<li class="toctree-l2"><a class="reference internal" href="#talk-across-channels">Talk across channels</a></li>
|
||
|
|
</ul>
|
||
|
|
</li>
|
||
|
|
</ul>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</nav>
|
||
|
|
|
||
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
|
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
|
|
<a href="../index.html">TeamSpeak SDK</a>
|
||
|
|
</nav>
|
||
|
|
|
||
|
|
<div class="wy-nav-content">
|
||
|
|
<div class="rst-content">
|
||
|
|
<div role="navigation" aria-label="Page navigation">
|
||
|
|
<ul class="wy-breadcrumbs">
|
||
|
|
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
|
|
<li class="breadcrumb-item active">FAQ</li>
|
||
|
|
<li class="wy-breadcrumbs-aside">
|
||
|
|
</li>
|
||
|
|
</ul>
|
||
|
|
<hr/>
|
||
|
|
</div>
|
||
|
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
|
|
<div itemprop="articleBody">
|
||
|
|
|
||
|
|
<section id="faq">
|
||
|
|
<h1>FAQ<a class="headerlink" href="#faq" title="Link to this heading"></a></h1>
|
||
|
|
<section id="implementing-push-to-talk">
|
||
|
|
<span id="c-faq"></span><h2>Implementing Push-To-Talk<a class="headerlink" href="#implementing-push-to-talk" title="Link to this heading"></a></h2>
|
||
|
|
<p>Push-To-Talk should be implemented by toggling the client variable
|
||
|
|
<a class="reference internal" href="../properties.html#c.ClientProperties.CLIENT_INPUT_DEACTIVATED" title="ClientProperties.CLIENT_INPUT_DEACTIVATED"><code class="xref c c-enumerator docutils literal notranslate"><span class="pre">CLIENT_INPUT_DEACTIVATED</span></code></a> using the function
|
||
|
|
<a class="reference internal" href="info-client.html#c.ts3client_setClientSelfVariableAsInt" title="ts3client_setClientSelfVariableAsInt"><code class="xref c c-func docutils literal notranslate"><span class="pre">ts3client_setClientSelfVariableAsInt()</span></code></a>.
|
||
|
|
Valid variables are defined in <a class="reference internal" href="../enumerations.html#c.InputDeactivationStatus" title="InputDeactivationStatus"><code class="xref c c-enum docutils literal notranslate"><span class="pre">InputDeactivationStatus</span></code></a>.</p>
|
||
|
|
<p>For Push-To-Talk toggle between <a class="reference internal" href="../enumerations.html#c.InputDeactivationStatus.INPUT_ACTIVE" title="InputDeactivationStatus.INPUT_ACTIVE"><code class="xref c c-enumerator docutils literal notranslate"><span class="pre">INPUT_ACTIVE</span></code></a> (talking) and
|
||
|
|
<a class="reference internal" href="../enumerations.html#c.InputDeactivationStatus.INPUT_DEACTIVATED" title="InputDeactivationStatus.INPUT_DEACTIVATED"><code class="xref c c-enumerator docutils literal notranslate"><span class="pre">INPUT_DEACTIVATED</span></code></a> (not talking).</p>
|
||
|
|
<section id="example">
|
||
|
|
<h3>Example<a class="headerlink" href="#example" title="Link to this heading"></a></h3>
|
||
|
|
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">;</span>
|
||
|
|
<span class="linenos"> 2</span><span class="kt">bool</span><span class="w"> </span><span class="n">shouldTalk</span><span class="p">;</span>
|
||
|
|
<span class="linenos"> 3</span>
|
||
|
|
<span class="linenos"> 4</span><span class="n">shouldTalk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">isPushToTalkButtonPressed</span><span class="p">();</span><span class="w"> </span><span class="c1">// Your key detection implementation</span>
|
||
|
|
<span class="linenos"> 5</span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ts3client_setClientSelfVariableAsInt</span><span class="p">(</span><span class="n">scHandlerID</span><span class="p">,</span><span class="w"> </span><span class="n">CLIENT_INPUT_DEACTIVATED</span><span class="p">,</span><span class="w"> </span><span class="n">shouldTalk</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">INPUT_ACTIVE</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">INPUT_DEACTIVATED</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos"> 6</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">errorMsg</span><span class="p">;</span>
|
||
|
|
<span class="linenos"> 7</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ts3client_getErrorMessage</span><span class="p">(</span><span class="n">error</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">errorMsg</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos"> 8</span><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"Error toggling push-to-talk: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">errorMsg</span><span class="p">);</span>
|
||
|
|
<span class="linenos"> 9</span><span class="w"> </span><span class="n">ts3client_freeMemory</span><span class="p">(</span><span class="n">errorMsg</span><span class="p">);</span>
|
||
|
|
<span class="linenos">10</span><span class="w"> </span><span class="p">}</span>
|
||
|
|
<span class="linenos">11</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
|
||
|
|
<span class="linenos">12</span><span class="p">}</span>
|
||
|
|
<span class="linenos">13</span>
|
||
|
|
<span class="linenos">14</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ts3client_flushClientSelfUpdates</span><span class="p">(</span><span class="n">scHandlerID</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos">15</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">errorMsg</span><span class="p">;</span>
|
||
|
|
<span class="linenos">16</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ts3client_getErrorMessage</span><span class="p">(</span><span class="n">error</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">errorMsg</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos">17</span><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"Error flushing after toggling push-to-talk: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">errorMsg</span><span class="p">);</span>
|
||
|
|
<span class="linenos">18</span><span class="w"> </span><span class="n">ts3client_freeMemory</span><span class="p">(</span><span class="n">errorMsg</span><span class="p">);</span>
|
||
|
|
<span class="linenos">19</span><span class="w"> </span><span class="p">}</span>
|
||
|
|
<span class="linenos">20</span><span class="p">}</span>
|
||
|
|
</pre></div>
|
||
|
|
</div>
|
||
|
|
<p>It is not necessary to close and reopen the capture device to implement
|
||
|
|
Push-To-Talk.</p>
|
||
|
|
<p>Basically it would be possible to toggle <a class="reference internal" href="../properties.html#c.ClientProperties.CLIENT_INPUT_MUTED" title="ClientProperties.CLIENT_INPUT_MUTED"><code class="xref c c-enumerator docutils literal notranslate"><span class="pre">CLIENT_INPUT_MUTED</span></code></a> as well, but
|
||
|
|
the advantage of <a class="reference internal" href="../properties.html#c.ClientProperties.CLIENT_INPUT_DEACTIVATED" title="ClientProperties.CLIENT_INPUT_DEACTIVATED"><code class="xref c c-enumerator docutils literal notranslate"><span class="pre">CLIENT_INPUT_DEACTIVATED</span></code></a> is that the change is not
|
||
|
|
propagated to the server and other connected clients, thus saving
|
||
|
|
network traffic. <a class="reference internal" href="../properties.html#c.ClientProperties.CLIENT_INPUT_MUTED" title="ClientProperties.CLIENT_INPUT_MUTED"><code class="xref c c-enumerator docutils literal notranslate"><span class="pre">CLIENT_INPUT_MUTED</span></code></a> should instead be used for manually
|
||
|
|
muting the microphone when using Voice Activity Detection instead of
|
||
|
|
Push-To-Talk.</p>
|
||
|
|
<p>If you need to query the current muted state, use
|
||
|
|
<a class="reference internal" href="info-client.html#c.ts3client_getClientSelfVariableAsInt" title="ts3client_getClientSelfVariableAsInt"><code class="xref c c-func docutils literal notranslate"><span class="pre">ts3client_getClientSelfVariableAsInt()</span></code></a></p>
|
||
|
|
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="kt">int</span><span class="w"> </span><span class="n">hardwareStatus</span><span class="p">,</span><span class="w"> </span><span class="n">deactivated</span><span class="p">,</span><span class="w"> </span><span class="n">muted</span><span class="p">;</span>
|
||
|
|
<span class="linenos"> 2</span>
|
||
|
|
<span class="linenos"> 3</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ts3client_getClientSelfVariableAsInt</span><span class="p">(</span><span class="n">scHandlerID</span><span class="p">,</span><span class="w"> </span><span class="n">CLIENT_INPUT_HARDWARE</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">hardwareStatus</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos"> 4</span><span class="w"> </span><span class="cm">/* Handle error */</span>
|
||
|
|
<span class="linenos"> 5</span><span class="p">}</span>
|
||
|
|
<span class="linenos"> 6</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ts3client_getClientSelfVariableAsInt</span><span class="p">(</span><span class="n">scHandlerID</span><span class="p">,</span><span class="w"> </span><span class="n">CLIENT_INPUT_DEACTIVATED</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">deactivated</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos"> 7</span><span class="w"> </span><span class="cm">/* Handle error */</span>
|
||
|
|
<span class="linenos"> 8</span><span class="p">}</span>
|
||
|
|
<span class="linenos"> 9</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ts3client_getClientSelfVariableAsInt</span><span class="p">(</span><span class="n">scHandlerID</span><span class="p">,</span><span class="w"> </span><span class="n">CLIENT_INPUT_MUTED</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">muted</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ERROR_ok</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos">10</span><span class="w"> </span><span class="cm">/* Handle error */</span>
|
||
|
|
<span class="linenos">11</span><span class="p">}</span>
|
||
|
|
<span class="linenos">12</span>
|
||
|
|
<span class="linenos">13</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">hardwareStatus</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">HARDWAREINPUT_DISABLED</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos">14</span><span class="w"> </span><span class="cm">/* No capture device available */</span>
|
||
|
|
<span class="linenos">15</span><span class="p">}</span>
|
||
|
|
<span class="linenos">16</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">deactivated</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">INPUT_DEACTIVATED</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos">17</span><span class="w"> </span><span class="cm">/* Input was deactivated for Push-To-Talk (not propagated to server) */</span>
|
||
|
|
<span class="linenos">18</span><span class="p">}</span>
|
||
|
|
<span class="linenos">19</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">muted</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">MUTEINPUT_MUTED</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
|
|
<span class="linenos">20</span><span class="w"> </span><span class="cm">/* Input was muted (propagated to server) */</span>
|
||
|
|
<span class="linenos">21</span><span class="p">}</span>
|
||
|
|
</pre></div>
|
||
|
|
</div>
|
||
|
|
<p>When using Push-To-Talk, you should deactivate Voice Activity Detection
|
||
|
|
in the <a class="reference internal" href="preprocessor.html#preproc"><span class="std std-ref">preprocessor</span></a> or keep the VAD level very low. To
|
||
|
|
deactivate VAD, use:</p>
|
||
|
|
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos">1</span><span class="n">ts3client_setPreProcessorConfigValue</span><span class="p">(</span><span class="n">serverConnectionHandlerID</span><span class="p">,</span><span class="w"> </span><span class="s">"vad"</span><span class="p">,</span><span class="w"> </span><span class="s">"false"</span><span class="p">);</span>
|
||
|
|
</pre></div>
|
||
|
|
</div>
|
||
|
|
</section>
|
||
|
|
</section>
|
||
|
|
<section id="adjusting-the-volume">
|
||
|
|
<h2>Adjusting the volume<a class="headerlink" href="#adjusting-the-volume" title="Link to this heading"></a></h2>
|
||
|
|
<section id="output-volume">
|
||
|
|
<h3>Output volume<a class="headerlink" href="#output-volume" title="Link to this heading"></a></h3>
|
||
|
|
<p>The global voice output volume can be adjusted by changing the
|
||
|
|
“volume_modifier” playback option using <a class="reference internal" href="playback-options.html#c.ts3client_setPlaybackConfigValue" title="ts3client_setPlaybackConfigValue"><code class="xref c c-func docutils literal notranslate"><span class="pre">ts3client_setPlaybackConfigValue()</span></code></a>.
|
||
|
|
The value is in decibel, so 0 means no modification, negative values make the
|
||
|
|
signal quieter and positive values louder.</p>
|
||
|
|
<p>Example to increase the output volume by 10 decibel:</p>
|
||
|
|
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos">1</span><span class="n">ts3client_setPlaybackConfigValue</span><span class="p">(</span><span class="n">scHandlerID</span><span class="p">,</span><span class="w"> </span><span class="s">"volume_modifier"</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
|
||
|
|
</pre></div>
|
||
|
|
</div>
|
||
|
|
<p>In addition to modifying the global output volue, the volume of
|
||
|
|
individual clients can be changed with
|
||
|
|
<a class="reference internal" href="playback-options.html#c.ts3client_setClientVolumeModifier" title="ts3client_setClientVolumeModifier"><code class="xref c c-func docutils literal notranslate"><span class="pre">ts3client_setClientVolumeModifier()</span></code></a>.</p>
|
||
|
|
</section>
|
||
|
|
<section id="input-volume">
|
||
|
|
<h3>Input volume<a class="headerlink" href="#input-volume" title="Link to this heading"></a></h3>
|
||
|
|
<p><a class="reference internal" href="preprocessor.html#preproc"><span class="std std-ref">Automatic Gain Control</span></a> (AGC) takes care of the input
|
||
|
|
volume during preprocessing automatically. Instead of modifying the
|
||
|
|
input volume directly, you modify the AGC preprocessor settings with
|
||
|
|
<a class="reference internal" href="preprocessor.html#c.ts3client_setPreProcessorConfigValue" title="ts3client_setPreProcessorConfigValue"><code class="xref c c-func docutils literal notranslate"><span class="pre">ts3client_setPreProcessorConfigValue()</span></code></a>.</p>
|
||
|
|
</section>
|
||
|
|
</section>
|
||
|
|
<section id="talk-across-channels">
|
||
|
|
<h2>Talk across channels<a class="headerlink" href="#talk-across-channels" title="Link to this heading"></a></h2>
|
||
|
|
<p>Generally clients can only talk to other clients in the same channel.
|
||
|
|
However, for specific scenarios this can be overruled using <a class="reference internal" href="whisper.html#c-whisper"><span class="std std-ref">whisper
|
||
|
|
lists</span></a>. This feature allows specific clients to
|
||
|
|
temporarily talk to other clients or channels outside of their own
|
||
|
|
channel. While whispering, talking to the own channel is disabled.</p>
|
||
|
|
<p>An example for a scenario where whisper may be useful would be a team
|
||
|
|
consisting of a number of squads. Each squad is assigned to one channel,
|
||
|
|
so squad members can only talk to other members of the same squad. In
|
||
|
|
addition, there is a team leader and squad leaders, who want to
|
||
|
|
communicate accross the squad channels. This can be implemented with
|
||
|
|
whispering, so the team leader could broadcast to all squad leaders, or
|
||
|
|
a squad leader could briefly report to the team leader temporarily
|
||
|
|
sending his voice data to him instead of the squad leaders channel.</p>
|
||
|
|
<p>This mechanism is powerful and flexible allowing the SDK developer to
|
||
|
|
handle more complex scenarios overruling the standard behavior where
|
||
|
|
clients can only talk to other clients within the same channel.</p>
|
||
|
|
</section>
|
||
|
|
</section>
|
||
|
|
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
|
|
<a href="passwords.html" class="btn btn-neutral float-left" title="Custom passwords" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<hr/>
|
||
|
|
|
||
|
|
<div role="contentinfo">
|
||
|
|
<p>© Copyright 2020, TeamSpeak Systems GmbH.</p>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
|
|
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
|
|
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
|
|
||
|
|
|
||
|
|
</footer>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</section>
|
||
|
|
</div>
|
||
|
|
<script>
|
||
|
|
jQuery(function () {
|
||
|
|
SphinxRtdTheme.Navigation.enable(true);
|
||
|
|
});
|
||
|
|
</script>
|
||
|
|
|
||
|
|
</body>
|
||
|
|
</html>
|