home-assistant.github.io/components/switch.pulseaudio_loopback/index.html
2016-08-22 08:21:43 +00:00

300 lines
No EOL
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>PulseAudio Loopback Switch - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions how to use Pulseaudio loopback modules to build a flexible whole-home audio system.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/switch.pulseaudio_loopback/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="PulseAudio Loopback Switch">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/switch.pulseaudio_loopback/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions how to use Pulseaudio loopback modules to build a flexible whole-home audio system.">
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@home_assistant">
<meta name="twitter:title" content="PulseAudio Loopback Switch">
<meta name="twitter:description" content="Instructions how to use Pulseaudio loopback modules to build a flexible whole-home audio system.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
<link rel='shortcut icon' href='/images/favicon.ico' />
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
</head>
<body >
<header>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
<a href="/" class="site-title">
<img width='40' src='/demo/favicon-192x192.png'>
<span>Home Assistant</span>
</a>
</div>
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
<nav>
<input type="checkbox" id="toggle">
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
<ul class="menu pull-right">
<li><a href='/getting-started/'>Getting started</a></li>
<li><a href='/components/'>Components</a></li>
<li><a href='/cookbook/'>Examples</a></li>
<li><a href="/developers/">Developers</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li>
</ul>
</nav>
</div>
</div>
</div>
</header>
<div class="grid-wrapper">
<div class="grid grid-center">
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
<article class="page">
<header>
<h1 class="title indent">
PulseAudio Loopback Switch
</h1>
</header>
<hr class="divider">
<p>The goal behind this switch is to allow a very flexible whole home audio system based upon PulseAudio.</p>
<p>For example, for a system with a 7.1 surround sound card, and 3 instances of mpd running, it is possible to quickly route the output of any mpd instance to any of the 8 possible (4 stereo) channels on the sound card, by loading/unloading a loopback module. This loading/unloading functionality is provided by this component. When the switch is on, the loopback module is loaded. When the switch is off, the module is not loaded.</p>
<p>The benefit of this approach is that this audio routing can occur without modifying the design-time configuration of mpd or PulseAudio.</p>
<p>This component uses a TCP connection to control a local or remote PulseAudio server- so there are no local dependencies.</p>
<p>To enable this switch, add the following lines to your <code class="highlighter-rouge">configuration.yaml</code> file:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">switch</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">pulseaudio_loopback</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">mpd1 -&gt; bedroom</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">127.0.0.1</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">4712</span>
<span class="s">source_name</span><span class="pi">:</span> <span class="s">mpd1.monitor</span>
<span class="s">sink_name</span><span class="pi">:</span> <span class="s">bedroom</span>
</code></pre>
</div>
<p>Configuration variables:</p>
<ul>
<li><strong>sink_name</strong> (<em>Required</em>): The name of the Pulseaudio sink that will recieve the audio.</li>
<li><strong>source_name</strong> (<em>Required</em>): The name of the Pulseaudio source that will supply the audio.</li>
<li><strong>name</strong> (<em>Optional</em>): Name of the switch.</li>
<li><strong>host</strong> (<em>Optional</em>): The IP address or host name of the PulseAudio server. If not specified, 127.0.0.1 is used.</li>
<li><strong>port</strong> (<em>Optional</em>): The port that Pulseaudio is listening on. Defaults to 4712.</li>
<li><strong>buffer_size</strong> (<em>Optional</em>): How much data to load from Pulseaudio at once. Default is 1KB.</li>
<li><strong>tcp_timeout</strong> (<em>Optional</em>): How long to wait for a response from Pulseaudio before giving up. Default is 3 seconds.</li>
</ul>
<p class="note warning">
This component relies on raw TCP commands to PulseAudio. In order for PulseAudio to accept commands with
this component, module-cli-protocol must be loaded on the PulseAudio server.
</p>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
<div class="grid">
<section class="aside-module grid__item one-whole lap-one-half">
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/switch.pulseaudio_loopback.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/pulseaudio.png' />
</div>
<div class='section'>
IoT class<sup><a href='/blog/2016/02/12/classifying-the-internet-of-things/#classifiers'><i class="icon-info-sign"></i></a></sup>: Local Polling
</div>
<div class='section'>
Introduced in release: 0.16
</div>
<div class='section'>
This is a platform for
<a href='/components/switch/'>the Switches component</a>.
</div>
<div class='section'>
<h1 class="title delta">Category Switch</h1>
<ul class='divided'>
<li>
<a href='/components/switch.acer_projector/'>Acer Projector Switch</a>
</li>
<li>
<a href='/components/switch.wemo/'>Belkin WeMo Switch</a>
</li>
<li>
<a href='/components/switch.command_line/'>Command line Switch</a>
</li>
<li>
<a href='/components/switch.dlink/'>D-Link Switch</a>
</li>
<li>
<a href='/components/switch.edimax/'>Edimax Switch</a>
</li>
<li>
<a href='/components/switch.enocean/'>EnOcean Switch</a>
</li>
<li>
<a href='/components/switch.hikvision/'>Hikvision Camera Switch</a>
</li>
<li>
<a href='/components/switch.homematic/'>Homematic Switch</a>
</li>
<li>
<a href='/components/switch.mqtt/'>MQTT Switch</a>
</li>
<li>
<a href='/components/switch.modbus/'>Modbus Switch</a>
</li>
<li>
<a href='/components/switch.mysensors/'>MySensors Switch</a>
</li>
<li>
<a href='/components/switch.orvibo/'>Orvibo Switch</a>
</li>
<li>
<a href='/components/switch.pilight/'>Pilight Switch</a>
</li>
<li>
PulseAudio Loopback Switch
</li>
<li>
<a href='/components/switch.qwikswitch/'>QwikSwitch Switch</a>
</li>
<li>
<a href='/components/switch.rest/'>RESTful Switch</a>
</li>
<li>
<a href='/components/switch.rfxtrx/'>RFXtrx Switch</a>
</li>
<li>
<a href='/components/switch.rpi_gpio/'>Raspberry PI GPIO Switch</a>
</li>
<li>
<a href='/components/switch.rpi_rf/'>Raspberry Pi RF Switch</a>
</li>
<li>
<a href='/components/switch.scsgate/'>SCSGate Switch</a>
</li>
<li>
<a href='/components/switch.tplink/'>TPLink Switch</a>
</li>
<li>
<a href='/components/switch.tellstick/'>TellStick Switch</a>
</li>
<li>
<a href='/components/switch.tellduslive/'>Telldus Live Switch</a>
</li>
<li>
<a href='/components/switch.template/'>Template switch</a>
</li>
<li>
<a href='/components/switch.thinkingcleaner/'>Thinking Cleaner Switch</a>
</li>
<li>
<a href='/components/switch.vera/'>Vera Switch</a>
</li>
<li>
<a href='/components/switch.verisure/'>Verisure SmartPlug</a>
</li>
<li>
<a href='/components/switch.wake_on_lan/'>Wake on LAN Switch</a>
</li>
<li>
<a href='/components/switch.wink/'>Wink Switch</a>
</li>
<li>
<a href='/components/switch.zwave/'>Z-Wave Switch</a>
</li>
<li>
<a href='/components/switch.zigbee/'>ZigBee Switch</a>
</li>
<li>
<a href='/components/switch.arest/'>aREST Switch</a>
</li>
<li>
<a href='/components/switch.mfi/'>mFi Switch</a>
</li>
<li>
<a href='/components/switch.mystrom/'>myStrom Switch</a>
</li>
</ul>
</div>
</section>
</div>
</aside>
</div>
</div>
<footer>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item">
<div class="copyright">
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
<div class="credit">
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a>.<br>
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
</div>
</div>
</div>
</div>
</div>
</footer>
<script>
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
</body>
</html>