Docs generation on agnesi
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
@@ -52,6 +52,8 @@ div.sphinxsidebar {
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
@@ -83,10 +85,6 @@ div.sphinxsidebar #searchbox input[type="text"] {
|
||||
width: 170px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
@@ -124,6 +122,8 @@ ul.keywordmatches li.goodmatch a {
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
@@ -151,9 +151,14 @@ table.indextable td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable dl, table.indextable dd {
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
@@ -185,8 +190,22 @@ div.genindex-jumpbox {
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
@@ -197,7 +216,10 @@ h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink {
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
@@ -209,10 +231,6 @@ div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
@@ -314,6 +332,13 @@ table.docutils {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
@@ -322,10 +347,6 @@ table.docutils td, table.docutils th {
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
table.footnote td, table.footnote th {
|
||||
border: 0 !important;
|
||||
}
|
||||
@@ -344,6 +365,39 @@ table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
@@ -393,19 +447,14 @@ dl.glossary dt {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
@@ -456,6 +505,13 @@ pre {
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
padding: 5px 0px;
|
||||
border: 0;
|
||||
@@ -471,22 +527,51 @@ table.highlighttable td {
|
||||
padding: 0 0.5em 0 0.5em;
|
||||
}
|
||||
|
||||
tt.descname {
|
||||
div.code-block-caption {
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
div.code-block-caption + div > div.highlight > pre {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
padding: 1em 1em 0;
|
||||
}
|
||||
|
||||
div.literal-block-wrapper div.highlight {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
tt.descclassname {
|
||||
code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
tt.xref, a tt {
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
@@ -518,6 +603,16 @@ span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: relative;
|
||||
left: 0px;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
|
||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 756 B |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 829 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 641 B |
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Sphinx JavaScript utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
@@ -91,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) {
|
||||
});
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
@@ -100,6 +124,7 @@ var Documentation = {
|
||||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initIndexTable();
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -152,9 +177,10 @@ var Documentation = {
|
||||
|
||||
/**
|
||||
* workaround a firefox stupidity
|
||||
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
||||
*/
|
||||
fixFirefoxAnchorBug : function() {
|
||||
if (document.location.hash && $.browser.mozilla)
|
||||
if (document.location.hash)
|
||||
window.setTimeout(function() {
|
||||
document.location.href += '';
|
||||
}, 10);
|
||||
@@ -227,6 +253,29 @@ var Documentation = {
|
||||
});
|
||||
var url = parts.join('/');
|
||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
||||
},
|
||||
|
||||
initOnKeyListeners: function() {
|
||||
$(document).keyup(function(event) {
|
||||
var activeElementType = document.activeElement.tagName;
|
||||
// don't navigate when in search box or textarea
|
||||
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
|
||||
switch (event.keyCode) {
|
||||
case 37: // left
|
||||
var prevHref = $('link[rel="prev"]').prop('href');
|
||||
if (prevHref) {
|
||||
window.location.href = prevHref;
|
||||
return false;
|
||||
}
|
||||
case 39: // right
|
||||
var nextHref = $('link[rel="next"]').prop('href');
|
||||
if (nextHref) {
|
||||
window.location.href = nextHref;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -235,4 +284,4 @@ _ = Documentation.gettext;
|
||||
|
||||
$(document).ready(function() {
|
||||
Documentation.init();
|
||||
});
|
||||
});
|
||||
|
Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 222 B |
|
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 90 B |
|
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 90 B |
@@ -2,14 +2,15 @@
|
||||
* searchtools.js_t
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilties for the full-text search.
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* Non-minified version JS is _stemmer.js if file is provided */
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
@@ -225,6 +226,106 @@ var Scorer = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var splitChars = (function() {
|
||||
var result = {};
|
||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
||||
var i, j, start, end;
|
||||
for (i = 0; i < singles.length; i++) {
|
||||
result[singles[i]] = true;
|
||||
}
|
||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
||||
for (i = 0; i < ranges.length; i++) {
|
||||
start = ranges[i][0];
|
||||
end = ranges[i][1];
|
||||
for (j = start; j <= end; j++) {
|
||||
result[j] = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
})();
|
||||
|
||||
function splitQuery(query) {
|
||||
var result = [];
|
||||
var start = -1;
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
if (splitChars[query.charCodeAt(i)]) {
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start, i));
|
||||
start = -1;
|
||||
}
|
||||
} else if (start === -1) {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
@@ -323,7 +424,7 @@ var Search = {
|
||||
var searchterms = [];
|
||||
var excluded = [];
|
||||
var hlterms = [];
|
||||
var tmp = query.split(/\s+/);
|
||||
var tmp = splitQuery(query);
|
||||
var objectterms = [];
|
||||
for (i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i] !== "") {
|
||||
@@ -337,6 +438,10 @@ var Search = {
|
||||
}
|
||||
// stem the word
|
||||
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
||||
// prevent stemmer from cutting word smaller than two chars
|
||||
if(word.length < 3 && tmp[i].length >= 3) {
|
||||
word = tmp[i];
|
||||
}
|
||||
var toAppend;
|
||||
// select the correct list
|
||||
if (word[0] == '-') {
|
||||
@@ -373,8 +478,7 @@ var Search = {
|
||||
}
|
||||
|
||||
// lookup as search terms in fulltext
|
||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
|
||||
.concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
|
||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
@@ -435,11 +539,12 @@ var Search = {
|
||||
displayNextItem();
|
||||
});
|
||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
|
||||
var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
|
||||
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
|
||||
dataType: "text",
|
||||
complete: function(jqxhr, textstatus) {
|
||||
var data = jqxhr.responseText;
|
||||
if (data !== '') {
|
||||
if (data !== '' && data !== undefined) {
|
||||
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||
}
|
||||
Search.output.append(listItem);
|
||||
@@ -474,6 +579,7 @@ var Search = {
|
||||
*/
|
||||
performObjectSearch : function(object, otherterms) {
|
||||
var filenames = this._index.filenames;
|
||||
var docnames = this._index.docnames;
|
||||
var objects = this._index.objects;
|
||||
var objnames = this._index.objnames;
|
||||
var titles = this._index.titles;
|
||||
@@ -527,7 +633,7 @@ var Search = {
|
||||
} else {
|
||||
score += Scorer.objPrioDefault;
|
||||
}
|
||||
results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
|
||||
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -538,23 +644,48 @@ var Search = {
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch : function(searchterms, excluded, terms, score) {
|
||||
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
|
||||
var docnames = this._index.docnames;
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i, j, file, files;
|
||||
var i, j, file;
|
||||
var fileMap = {};
|
||||
var scoreMap = {};
|
||||
var results = [];
|
||||
|
||||
// perform the search on the required terms
|
||||
for (i = 0; i < searchterms.length; i++) {
|
||||
var word = searchterms[i];
|
||||
var files = [];
|
||||
var _o = [
|
||||
{files: terms[word], score: Scorer.term},
|
||||
{files: titleterms[word], score: Scorer.title}
|
||||
];
|
||||
|
||||
// no match but word was a required one
|
||||
if ((files = terms[word]) === undefined)
|
||||
if ($u.every(_o, function(o){return o.files === undefined;})) {
|
||||
break;
|
||||
if (files.length === undefined) {
|
||||
files = [files];
|
||||
}
|
||||
// found search word in contents
|
||||
$u.each(_o, function(o) {
|
||||
var _files = o.files;
|
||||
if (_files === undefined)
|
||||
return
|
||||
|
||||
if (_files.length === undefined)
|
||||
_files = [_files];
|
||||
files = files.concat(_files);
|
||||
|
||||
// set score for the word in each file to Scorer.term
|
||||
for (j = 0; j < _files.length; j++) {
|
||||
file = _files[j];
|
||||
if (!(file in scoreMap))
|
||||
scoreMap[file] = {}
|
||||
scoreMap[file][word] = o.score;
|
||||
}
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
for (j = 0; j < files.length; j++) {
|
||||
file = files[j];
|
||||
@@ -576,7 +707,9 @@ var Search = {
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
for (i = 0; i < excluded.length; i++) {
|
||||
if (terms[excluded[i]] == file ||
|
||||
$u.contains(terms[excluded[i]] || [], file)) {
|
||||
titleterms[excluded[i]] == file ||
|
||||
$u.contains(terms[excluded[i]] || [], file) ||
|
||||
$u.contains(titleterms[excluded[i]] || [], file)) {
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
@@ -584,7 +717,10 @@ var Search = {
|
||||
|
||||
// if we have still a valid result we can add it to the result list
|
||||
if (valid) {
|
||||
results.push([filenames[file], titles[file], '', null, score]);
|
||||
// select one (max) score for the file.
|
||||
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
|
||||
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
|
||||
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
@@ -594,7 +730,7 @@ var Search = {
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||
* words. the first one is used to find the occurance, the
|
||||
* words. the first one is used to find the occurrence, the
|
||||
* latter for highlighting it.
|
||||
*/
|
||||
makeSearchSummary : function(text, keywords, hlwords) {
|
||||
|
||||
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 214 B |
|
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 203 B |
@@ -2,9 +2,9 @@
|
||||
* websupport.js
|
||||
* ~~~~~~~~~~~~~
|
||||
*
|
||||
* sphinx.websupport utilties for all documentation.
|
||||
* sphinx.websupport utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
@@ -50,51 +50,51 @@
|
||||
}
|
||||
|
||||
function initEvents() {
|
||||
$('a.comment-close').live("click", function(event) {
|
||||
$(document).on("click", 'a.comment-close', function(event) {
|
||||
event.preventDefault();
|
||||
hide($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.vote').live("click", function(event) {
|
||||
$(document).on("click", 'a.vote', function(event) {
|
||||
event.preventDefault();
|
||||
handleVote($(this));
|
||||
});
|
||||
$('a.reply').live("click", function(event) {
|
||||
$(document).on("click", 'a.reply', function(event) {
|
||||
event.preventDefault();
|
||||
openReply($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.close-reply').live("click", function(event) {
|
||||
$(document).on("click", 'a.close-reply', function(event) {
|
||||
event.preventDefault();
|
||||
closeReply($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.sort-option').live("click", function(event) {
|
||||
$(document).on("click", 'a.sort-option', function(event) {
|
||||
event.preventDefault();
|
||||
handleReSort($(this));
|
||||
});
|
||||
$('a.show-proposal').live("click", function(event) {
|
||||
$(document).on("click", 'a.show-proposal', function(event) {
|
||||
event.preventDefault();
|
||||
showProposal($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.hide-proposal').live("click", function(event) {
|
||||
$(document).on("click", 'a.hide-proposal', function(event) {
|
||||
event.preventDefault();
|
||||
hideProposal($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.show-propose-change').live("click", function(event) {
|
||||
$(document).on("click", 'a.show-propose-change', function(event) {
|
||||
event.preventDefault();
|
||||
showProposeChange($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.hide-propose-change').live("click", function(event) {
|
||||
$(document).on("click", 'a.hide-propose-change', function(event) {
|
||||
event.preventDefault();
|
||||
hideProposeChange($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.accept-comment').live("click", function(event) {
|
||||
$(document).on("click", 'a.accept-comment', function(event) {
|
||||
event.preventDefault();
|
||||
acceptComment($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.delete-comment').live("click", function(event) {
|
||||
$(document).on("click", 'a.delete-comment', function(event) {
|
||||
event.preventDefault();
|
||||
deleteComment($(this).attr('id').substring(2));
|
||||
});
|
||||
$('a.comment-markup').live("click", function(event) {
|
||||
$(document).on("click", 'a.comment-markup', function(event) {
|
||||
event.preventDefault();
|
||||
toggleCommentMarkupBox($(this).attr('id').substring(2));
|
||||
});
|
||||
@@ -700,8 +700,8 @@
|
||||
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
|
||||
<div class="comment-markup-box" id="mb<%id%>">\
|
||||
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
|
||||
<tt>``code``</tt>, \
|
||||
code blocks: <tt>::</tt> and an indented block after blank line</div>\
|
||||
<code>``code``</code>, \
|
||||
code blocks: <code>::</code> and an indented block after blank line</div>\
|
||||
<form method="post" id="cf<%id%>" class="comment-form" action="">\
|
||||
<textarea name="comment" cols="80"></textarea>\
|
||||
<p class="propose-button">\
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Index — alsaaudio 0.8.4 documentation</title>
|
||||
<title>Index — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -18,32 +18,29 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="index.html" />
|
||||
<link rel="index" title="Index" href="#" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="#" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
|
||||
<h1 id="index">Index</h1>
|
||||
@@ -63,204 +60,140 @@
|
||||
</div>
|
||||
<h2 id="A">A</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#module-alsaaudio">alsaaudio (module)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#module-alsaaudio">alsaaudio (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="C">C</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.cardname">cardname() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.cardname">cardname() (alsaaudio.Mixer method)</a>
|
||||
|
||||
<dd><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.cardname">(alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></dd>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.cards">cards() (in module alsaaudio)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.cardname">(alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.cards">cards() (in module alsaaudio)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="G">G</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.getenum">getenum() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.getmute">getmute() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.getrange">getrange() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.getrec">getrec() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.getvolume">getvolume() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.getenum">getenum() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.getmute">getmute() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.getrange">getrange() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.getrec">getrec() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.getvolume">getvolume() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="H">H</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.handleevents">handleevents() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.handleevents">handleevents() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="M">M</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer">Mixer (class in alsaaudio)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.mixer">mixer() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.mixerid">mixerid() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.mixers">mixers() (in module alsaaudio)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer">Mixer (class in alsaaudio)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.mixer">mixer() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.mixerid">mixerid() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.mixers">mixers() (in module alsaaudio)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="P">P</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.pause">pause() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.pause">pause() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM">PCM (class in alsaaudio)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.pcmmode">pcmmode() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.pcms">pcms() (in module alsaaudio)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.pcmtype">pcmtype() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.polldescriptors">polldescriptors() (alsaaudio.Mixer method)</a>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM">PCM (class in alsaaudio)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.pcmmode">pcmmode() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.pcms">pcms() (in module alsaaudio)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.pcmtype">pcmtype() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.polldescriptors">polldescriptors() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
<dd><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.polldescriptors">(alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></dd>
|
||||
</dl></td>
|
||||
<ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.polldescriptors">(alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="R">R</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.read">read() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.read">read() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="S">S</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.setchannels">setchannels() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.setformat">setformat() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.setmute">setmute() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.setperiodsize">setperiodsize() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.setrate">setrate() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.setrec">setrec() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.setvolume">setvolume() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.switchcap">switchcap() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.setchannels">setchannels() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.setformat">setformat() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.setmute">setmute() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.setperiodsize">setperiodsize() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.setrate">setrate() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.setrec">setrec() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.setvolume">setvolume() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.switchcap">switchcap() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="V">V</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.Mixer.volumecap">volumecap() (alsaaudio.Mixer method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.Mixer.volumecap">volumecap() (alsaaudio.Mixer method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="W">W</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="libalsaaudio.html#alsaaudio.PCM.write">write() (alsaaudio.PCM method)</a>
|
||||
</dt>
|
||||
|
||||
</dl></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="libalsaaudio.html#alsaaudio.PCM.write">write() (alsaaudio.PCM method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
|
||||
@@ -268,44 +201,42 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="searchbox" style="display: none">
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<div><input type="text" name="q" /></div>
|
||||
<div><input type="submit" value="Go" /></div>
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="#" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Mar 30, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>alsaaudio documentation — alsaaudio 0.8.4 documentation</title>
|
||||
<title>alsaaudio documentation — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -17,36 +17,30 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="#" />
|
||||
<link rel="next" title="Introduction" href="pyalsaaudio.html" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Introduction" href="pyalsaaudio.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="pyalsaaudio.html" title="Introduction"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li><a href="#">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="alsaaudio-documentation">
|
||||
<h1>alsaaudio documentation<a class="headerlink" href="#alsaaudio-documentation" title="Permalink to this headline">¶</a></h1>
|
||||
@@ -60,7 +54,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="pyalsaaudio.html#installation">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="pyalsaaudio.html#testing">Testing</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="terminology.html">PCM Terminology and Concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="libalsaaudio.html"><tt class="docutils literal"><span class="pre">alsaaudio</span></tt></a><ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="libalsaaudio.html"><code class="docutils literal"><span class="pre">alsaaudio</span></code></a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="libalsaaudio.html#pcm-objects">PCM Objects</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="libalsaaudio.html#mixer-objects">Mixer Objects</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="libalsaaudio.html#examples">Examples</a></li>
|
||||
@@ -80,9 +74,9 @@
|
||||
<div class="section" id="indices-and-tables">
|
||||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
|
||||
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
|
||||
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
|
||||
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
|
||||
<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
|
||||
<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -90,7 +84,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="#">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
@@ -98,51 +92,49 @@
|
||||
<li><a class="reference internal" href="#github-pages">Github pages</a></li>
|
||||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="pyalsaaudio.html"
|
||||
title="next chapter">Introduction</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/index.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
<div id="searchbox" style="display: none">
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="#">Documentation overview</a><ul>
|
||||
<li>Next: <a href="pyalsaaudio.html" title="next chapter">Introduction</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/index.rst.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<div><input type="text" name="q" /></div>
|
||||
<div><input type="submit" value="Go" /></div>
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="pyalsaaudio.html" title="Introduction"
|
||||
>next</a> |</li>
|
||||
<li><a href="#">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Mar 30, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
|
|
||||
<a href="_sources/index.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>alsaaudio — alsaaudio 0.8.4 documentation</title>
|
||||
<title>alsaaudio — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -17,59 +17,53 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="index.html" />
|
||||
<link rel="prev" title="PCM Terminology and Concepts" href="terminology.html" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="prev" title="PCM Terminology and Concepts" href="terminology.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="terminology.html" title="PCM Terminology and Concepts"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="module-alsaaudio">
|
||||
<span id="alsaaudio"></span><h1><a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a><a class="headerlink" href="#module-alsaaudio" title="Permalink to this headline">¶</a></h1>
|
||||
<p>The <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a> module defines functions and classes for using ALSA.</p>
|
||||
<span id="alsaaudio"></span><h1><a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a><a class="headerlink" href="#module-alsaaudio" title="Permalink to this headline">¶</a></h1>
|
||||
<p>The <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a> module defines functions and classes for using ALSA.</p>
|
||||
<dl class="function">
|
||||
<dt id="alsaaudio.pcms">
|
||||
<tt class="descclassname">alsaaudio.</tt><tt class="descname">pcms</tt><big>(</big><span class="optional">[</span><em>type=PCM_PLAYBACK</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.pcms" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">alsaaudio.</code><code class="descname">pcms</code><span class="sig-paren">(</span><span class="optional">[</span><em>type=PCM_PLAYBACK</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.pcms" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>List available PCM devices by name.</p>
|
||||
<p>Arguments are:</p>
|
||||
<ul class="simple">
|
||||
<li><em>type</em> - can be either <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt> or <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>
|
||||
<li><em>type</em> - can be either <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code> or <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>
|
||||
(default).</li>
|
||||
</ul>
|
||||
<p><strong>Note:</strong></p>
|
||||
<p>For <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>, the list of device names should be equivalent
|
||||
to the list of device names that <tt class="docutils literal"><span class="pre">aplay</span> <span class="pre">-L</span></tt> displays on the commandline:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ aplay -L
|
||||
<p>For <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>, the list of device names should be equivalent
|
||||
to the list of device names that <code class="docutils literal"><span class="pre">aplay</span> <span class="pre">-L</span></code> displays on the commandline:</p>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ aplay -L
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>, the list of device names should be equivalent
|
||||
to the list of device names that <tt class="docutils literal"><span class="pre">arecord</span> <span class="pre">-L</span></tt> displays on the
|
||||
<p>For <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>, the list of device names should be equivalent
|
||||
to the list of device names that <code class="docutils literal"><span class="pre">arecord</span> <span class="pre">-L</span></code> displays on the
|
||||
commandline:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ arecord -L
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ arecord -L
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><em>New in 0.8</em></p>
|
||||
@@ -77,37 +71,37 @@ commandline:</p>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="alsaaudio.cards">
|
||||
<tt class="descclassname">alsaaudio.</tt><tt class="descname">cards</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.cards" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">alsaaudio.</code><code class="descname">cards</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.cards" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>List the available ALSA cards by name. This function is only moderately
|
||||
useful. If you want to see a list of available PCM devices, use <a class="reference internal" href="#alsaaudio.pcms" title="alsaaudio.pcms"><tt class="xref py py-func docutils literal"><span class="pre">pcms()</span></tt></a>
|
||||
useful. If you want to see a list of available PCM devices, use <a class="reference internal" href="#alsaaudio.pcms" title="alsaaudio.pcms"><code class="xref py py-func docutils literal"><span class="pre">pcms()</span></code></a>
|
||||
instead.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="alsaaudio.mixers">
|
||||
<tt class="descclassname">alsaaudio.</tt><tt class="descname">mixers</tt><big>(</big><em>cardindex=-1</em>, <em>device='default'</em><big>)</big><a class="headerlink" href="#alsaaudio.mixers" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">alsaaudio.</code><code class="descname">mixers</code><span class="sig-paren">(</span><em>cardindex=-1</em>, <em>device='default'</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.mixers" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>List the available mixers. The arguments are:</p>
|
||||
<ul class="simple">
|
||||
<li><em>cardindex</em> - the card index. If this argument is given, the device name
|
||||
is constructed as: ‘hw:<em>cardindex</em>‘ and
|
||||
the <cite>device</cite> keyword argument is ignored. <tt class="docutils literal"><span class="pre">0</span></tt> is the first hardware sound
|
||||
the <cite>device</cite> keyword argument is ignored. <code class="docutils literal"><span class="pre">0</span></code> is the first hardware sound
|
||||
card.</li>
|
||||
<li><em>device</em> - the name of the device on which the mixer resides. The default
|
||||
is <tt class="docutils literal"><span class="pre">'default'</span></tt>.</li>
|
||||
is <code class="docutils literal"><span class="pre">'default'</span></code>.</li>
|
||||
</ul>
|
||||
<p><strong>Note:</strong> For a list of available controls, you can also use <tt class="docutils literal"><span class="pre">amixer</span></tt> on
|
||||
<p><strong>Note:</strong> For a list of available controls, you can also use <code class="docutils literal"><span class="pre">amixer</span></code> on
|
||||
the commandline:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ amixer
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ amixer
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>To elaborate the example, calling <a class="reference internal" href="#alsaaudio.mixers" title="alsaaudio.mixers"><tt class="xref py py-func docutils literal"><span class="pre">mixers()</span></tt></a> with the argument
|
||||
<tt class="docutils literal"><span class="pre">cardindex=0</span></tt> should give the same list of Mixer controls as:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ amixer -c 0
|
||||
<p>To elaborate the example, calling <a class="reference internal" href="#alsaaudio.mixers" title="alsaaudio.mixers"><code class="xref py py-func docutils literal"><span class="pre">mixers()</span></code></a> with the argument
|
||||
<code class="docutils literal"><span class="pre">cardindex=0</span></code> should give the same list of Mixer controls as:</p>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ amixer -c 0
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And calling <a class="reference internal" href="#alsaaudio.mixers" title="alsaaudio.mixers"><tt class="xref py py-func docutils literal"><span class="pre">mixers()</span></tt></a> with the argument <tt class="docutils literal"><span class="pre">device='foo'</span></tt> should give
|
||||
<p>And calling <a class="reference internal" href="#alsaaudio.mixers" title="alsaaudio.mixers"><code class="xref py py-func docutils literal"><span class="pre">mixers()</span></code></a> with the argument <code class="docutils literal"><span class="pre">device='foo'</span></code> should give
|
||||
the same list of Mixer controls as:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ amixer -D foo
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ amixer -D foo
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><em>Changed in 0.8</em>:</p>
|
||||
@@ -121,30 +115,30 @@ device, not the mixers for the first card.</li>
|
||||
|
||||
<div class="section" id="pcm-objects">
|
||||
<span id="id1"></span><h2>PCM Objects<a class="headerlink" href="#pcm-objects" title="Permalink to this headline">¶</a></h2>
|
||||
<p>PCM objects in <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a> can play or capture (record) PCM
|
||||
<p>PCM objects in <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a> can play or capture (record) PCM
|
||||
sound through speakers or a microphone. The PCM constructor takes the
|
||||
following arguments:</p>
|
||||
<dl class="class">
|
||||
<dt id="alsaaudio.PCM">
|
||||
<em class="property">class </em><tt class="descclassname">alsaaudio.</tt><tt class="descname">PCM</tt><big>(</big><em>type=PCM_PLAYBACK</em>, <em>mode=PCM_NORMAL</em>, <em>device='default'</em>, <em>cardindex=-1</em><big>)</big><a class="headerlink" href="#alsaaudio.PCM" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><code class="descclassname">alsaaudio.</code><code class="descname">PCM</code><span class="sig-paren">(</span><em>type=PCM_PLAYBACK</em>, <em>mode=PCM_NORMAL</em>, <em>device='default'</em>, <em>cardindex=-1</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>This class is used to represent a PCM device (either for playback and
|
||||
recording). The arguments are:</p>
|
||||
<ul class="simple">
|
||||
<li><em>type</em> - can be either <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt> or <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>
|
||||
<li><em>type</em> - can be either <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code> or <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>
|
||||
(default).</li>
|
||||
<li><em>mode</em> - can be either <tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt>, or <tt class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></tt>
|
||||
<li><em>mode</em> - can be either <code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code>, or <code class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></code>
|
||||
(default).</li>
|
||||
<li><em>device</em> - the name of the PCM device that should be used (for example
|
||||
a value from the output of <a class="reference internal" href="#alsaaudio.pcms" title="alsaaudio.pcms"><tt class="xref py py-func docutils literal"><span class="pre">pcms()</span></tt></a>). The default value is
|
||||
<tt class="docutils literal"><span class="pre">'default'</span></tt>.</li>
|
||||
a value from the output of <a class="reference internal" href="#alsaaudio.pcms" title="alsaaudio.pcms"><code class="xref py py-func docutils literal"><span class="pre">pcms()</span></code></a>). The default value is
|
||||
<code class="docutils literal"><span class="pre">'default'</span></code>.</li>
|
||||
<li><em>cardindex</em> - the card index. If this argument is given, the device name
|
||||
is constructed as ‘hw:<em>cardindex</em>‘ and
|
||||
the <cite>device</cite> keyword argument is ignored.
|
||||
<tt class="docutils literal"><span class="pre">0</span></tt> is the first hardware sound card.</li>
|
||||
<code class="docutils literal"><span class="pre">0</span></code> is the first hardware sound card.</li>
|
||||
</ul>
|
||||
<p>This will construct a PCM object with these default settings:</p>
|
||||
<ul class="simple">
|
||||
<li>Sample format: <tt class="xref py py-const docutils literal"><span class="pre">PCM_FORMAT_S16_LE</span></tt></li>
|
||||
<li>Sample format: <code class="xref py py-const docutils literal"><span class="pre">PCM_FORMAT_S16_LE</span></code></li>
|
||||
<li>Rate: 44100 Hz</li>
|
||||
<li>Channels: 2</li>
|
||||
<li>Period size: 32 frames</li>
|
||||
@@ -162,43 +156,43 @@ name of the card. This was always fragile and broke some legitimate usecases.</p
|
||||
<p>PCM objects have the following methods:</p>
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.pcmtype">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">pcmtype</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.PCM.pcmtype" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns the type of PCM object. Either <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt> or
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>.</p>
|
||||
<code class="descclassname">PCM.</code><code class="descname">pcmtype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.pcmtype" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns the type of PCM object. Either <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code> or
|
||||
<code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.pcmmode">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">pcmmode</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.PCM.pcmmode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the mode of the PCM object. One of <tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt>,
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">PCM_ASYNC</span></tt>, or <tt class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></tt></p>
|
||||
<code class="descclassname">PCM.</code><code class="descname">pcmmode</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.pcmmode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the mode of the PCM object. One of <code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code>,
|
||||
<code class="xref py py-const docutils literal"><span class="pre">PCM_ASYNC</span></code>, or <code class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.cardname">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">cardname</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.PCM.cardname" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">PCM.</code><code class="descname">cardname</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.cardname" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the name of the sound card used by this PCM object.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.setchannels">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">setchannels</tt><big>(</big><em>nchannels</em><big>)</big><a class="headerlink" href="#alsaaudio.PCM.setchannels" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">PCM.</code><code class="descname">setchannels</code><span class="sig-paren">(</span><em>nchannels</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.setchannels" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Used to set the number of capture or playback channels. Common
|
||||
values are: <tt class="docutils literal"><span class="pre">1</span></tt> = mono, <tt class="docutils literal"><span class="pre">2</span></tt> = stereo, and <tt class="docutils literal"><span class="pre">6</span></tt> = full 6 channel audio.
|
||||
values are: <code class="docutils literal"><span class="pre">1</span></code> = mono, <code class="docutils literal"><span class="pre">2</span></code> = stereo, and <code class="docutils literal"><span class="pre">6</span></code> = full 6 channel audio.
|
||||
Few sound cards support more than 2 channels</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.setrate">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">setrate</tt><big>(</big><em>rate</em><big>)</big><a class="headerlink" href="#alsaaudio.PCM.setrate" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Set the sample rate in Hz for the device. Typical values are <tt class="docutils literal"><span class="pre">8000</span></tt>
|
||||
(mainly used for telephony), <tt class="docutils literal"><span class="pre">16000</span></tt>, <tt class="docutils literal"><span class="pre">44100</span></tt> (CD quality),
|
||||
<tt class="docutils literal"><span class="pre">48000</span></tt> and <tt class="docutils literal"><span class="pre">96000</span></tt>.</p>
|
||||
<code class="descclassname">PCM.</code><code class="descname">setrate</code><span class="sig-paren">(</span><em>rate</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.setrate" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Set the sample rate in Hz for the device. Typical values are <code class="docutils literal"><span class="pre">8000</span></code>
|
||||
(mainly used for telephony), <code class="docutils literal"><span class="pre">16000</span></code>, <code class="docutils literal"><span class="pre">44100</span></code> (CD quality),
|
||||
<code class="docutils literal"><span class="pre">48000</span></code> and <code class="docutils literal"><span class="pre">96000</span></code>.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.setformat">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">setformat</tt><big>(</big><em>format</em><big>)</big><a class="headerlink" href="#alsaaudio.PCM.setformat" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">PCM.</code><code class="descname">setformat</code><span class="sig-paren">(</span><em>format</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.setformat" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The sound <em>format</em> of the device. Sound format controls how the PCM device
|
||||
interpret data for playback, and how data is encoded in captures.</p>
|
||||
<p>The following formats are provided by ALSA:</p>
|
||||
@@ -213,73 +207,73 @@ interpret data for playback, and how data is encoded in captures.</p>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S8</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S8</span></code></td>
|
||||
<td>Signed 8 bit samples for each channel</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U8</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U8</span></code></td>
|
||||
<td>Signed 8 bit samples for each channel</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S16_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S16_LE</span></code></td>
|
||||
<td>Signed 16 bit samples for each channel Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S16_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S16_BE</span></code></td>
|
||||
<td>Signed 16 bit samples for each channel (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U16_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U16_LE</span></code></td>
|
||||
<td>Unsigned 16 bit samples for each channel (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U16_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U16_BE</span></code></td>
|
||||
<td>Unsigned 16 bit samples for each channel (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S24_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S24_LE</span></code></td>
|
||||
<td>Signed 24 bit samples for each channel (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S24_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S24_BE</span></code></td>
|
||||
<td>Signed 24 bit samples for each channel (Big Endian byte order)}</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U24_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U24_LE</span></code></td>
|
||||
<td>Unsigned 24 bit samples for each channel (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U24_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U24_BE</span></code></td>
|
||||
<td>Unsigned 24 bit samples for each channel (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S32_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S32_LE</span></code></td>
|
||||
<td>Signed 32 bit samples for each channel (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_S32_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_S32_BE</span></code></td>
|
||||
<td>Signed 32 bit samples for each channel (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U32_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U32_LE</span></code></td>
|
||||
<td>Unsigned 32 bit samples for each channel (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_U32_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_U32_BE</span></code></td>
|
||||
<td>Unsigned 32 bit samples for each channel (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT_LE</span></code></td>
|
||||
<td>32 bit samples encoded as float (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT_BE</span></code></td>
|
||||
<td>32 bit samples encoded as float (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT64_LE</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT64_LE</span></code></td>
|
||||
<td>64 bit samples encoded as float (Little Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT64_BE</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_FLOAT64_BE</span></code></td>
|
||||
<td>64 bit samples encoded as float (Big Endian byte order)</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_MU_LAW</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_MU_LAW</span></code></td>
|
||||
<td>A logarithmic encoding (used by Sun .au files and telephony)</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_A_LAW</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_A_LAW</span></code></td>
|
||||
<td>Another logarithmic encoding</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_IMA_ADPCM</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_IMA_ADPCM</span></code></td>
|
||||
<td>A 4:1 compressed format defined by the Interactive Multimedia Association.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_MPEG</span></tt></td>
|
||||
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_MPEG</span></code></td>
|
||||
<td>MPEG encoded audio?</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">PCM_FORMAT_GSM</span></tt></td>
|
||||
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PCM_FORMAT_GSM</span></code></td>
|
||||
<td>9600 bits/s constant rate encoding for speech</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -288,59 +282,59 @@ interpret data for playback, and how data is encoded in captures.</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.setperiodsize">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">setperiodsize</tt><big>(</big><em>period</em><big>)</big><a class="headerlink" href="#alsaaudio.PCM.setperiodsize" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">PCM.</code><code class="descname">setperiodsize</code><span class="sig-paren">(</span><em>period</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.setperiodsize" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Sets the actual period size in frames. Each write should consist of
|
||||
exactly this number of frames, and each read will return this
|
||||
number of frames (unless the device is in <tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt> mode, in
|
||||
number of frames (unless the device is in <code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code> mode, in
|
||||
which case it may return nothing at all)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.read">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">read</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.PCM.read" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>In <tt class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></tt> mode, this function blocks until a full period is
|
||||
<code class="descclassname">PCM.</code><code class="descname">read</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.read" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>In <code class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></code> mode, this function blocks until a full period is
|
||||
available, and then returns a tuple (length,data) where <em>length</em> is
|
||||
the number of frames of captured data, and <em>data</em> is the captured
|
||||
sound frames as a string. The length of the returned data will be
|
||||
periodsize*framesize bytes.</p>
|
||||
<p>In <tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt> mode, the call will not block, but will return
|
||||
<tt class="docutils literal"><span class="pre">(0,'')</span></tt> if no new period has become available since the last
|
||||
<p>In <code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code> mode, the call will not block, but will return
|
||||
<code class="docutils literal"><span class="pre">(0,'')</span></code> if no new period has become available since the last
|
||||
call to read.</p>
|
||||
<p>In case of an overrun, this function will return a negative size: <tt class="xref py py-const docutils literal"><span class="pre">-EPIPE</span></tt>.
|
||||
<p>In case of an overrun, this function will return a negative size: <code class="xref py py-const docutils literal"><span class="pre">-EPIPE</span></code>.
|
||||
This indicates that data was lost, even if the operation itself succeeded.
|
||||
Try using a larger periodsize.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.write">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">write</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#alsaaudio.PCM.write" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">PCM.</code><code class="descname">write</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.write" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Writes (plays) the sound in data. The length of data <em>must</em> be a
|
||||
multiple of the frame size, and <em>should</em> be exactly the size of a
|
||||
period. If less than ‘period size’ frames are provided, the actual
|
||||
playout will not happen until more data is written.</p>
|
||||
<p>If the device is not in <tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt> mode, this call will block if
|
||||
<p>If the device is not in <code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code> mode, this call will block if
|
||||
the kernel buffer is full, and until enough sound has been played
|
||||
to allow the sound data to be buffered. The call always returns the
|
||||
size of the data provided.</p>
|
||||
<p>In <tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt> mode, the call will return immediately, with a
|
||||
<p>In <code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code> mode, the call will return immediately, with a
|
||||
return value of zero, if the buffer is full. In this case, the data
|
||||
should be written at a later time.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.pause">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">pause</tt><big>(</big><span class="optional">[</span><em>enable=True</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.PCM.pause" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>If <em>enable</em> is <tt class="xref py py-const docutils literal"><span class="pre">True</span></tt>, playback or capture is paused.
|
||||
<code class="descclassname">PCM.</code><code class="descname">pause</code><span class="sig-paren">(</span><span class="optional">[</span><em>enable=True</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.pause" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>If <em>enable</em> is <code class="xref py py-const docutils literal"><span class="pre">True</span></code>, playback or capture is paused.
|
||||
Otherwise, playback/capture is resumed.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.PCM.polldescriptors">
|
||||
<tt class="descclassname">PCM.</tt><tt class="descname">polldescriptors</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.PCM.polldescriptors" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">PCM.</code><code class="descname">polldescriptors</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.PCM.polldescriptors" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a tuple of <em>(file descriptor, eventmask)</em> that can be used to
|
||||
wait for changes on the mixer with <em>select.poll</em>.</p>
|
||||
<p>The <em>eventmask</em> value is compatible with <a class="reference external" href="http://docs.python.org/library/select.html#poll-objects">poll.register</a> in the Python
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">select</span></tt> module.</p>
|
||||
<code class="xref py py-const docutils literal"><span class="pre">select</span></code> module.</p>
|
||||
</dd></dl>
|
||||
|
||||
<p><strong>A few hints on using PCM devices for playback</strong></p>
|
||||
@@ -349,9 +343,9 @@ to PCM devices must <em>exactly</em> match the data rate of the device.</p>
|
||||
<p>If too little data is written to the device, it will underrun, and
|
||||
ugly clicking sounds will occur. Conversely, of too much data is
|
||||
written to the device, the write function will either block
|
||||
(<tt class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></tt> mode) or return zero (<tt class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></tt> mode).</p>
|
||||
(<code class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></code> mode) or return zero (<code class="xref py py-const docutils literal"><span class="pre">PCM_NONBLOCK</span></code> mode).</p>
|
||||
<p>If your program does nothing but play sound, the best strategy is to put the
|
||||
device in <tt class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></tt> mode, and just write as much data to the device as
|
||||
device in <code class="xref py py-const docutils literal"><span class="pre">PCM_NORMAL</span></code> mode, and just write as much data to the device as
|
||||
possible. This strategy can also be achieved by using a separate
|
||||
thread with the sole task of playing out sound.</p>
|
||||
<p>In GUI programs, however, it may be a better strategy to setup the device,
|
||||
@@ -370,21 +364,21 @@ to check how much time has really passed, and add extra writes as nessecary.</p>
|
||||
<p>Mixer objects provides access to the ALSA mixer API.</p>
|
||||
<dl class="class">
|
||||
<dt id="alsaaudio.Mixer">
|
||||
<em class="property">class </em><tt class="descclassname">alsaaudio.</tt><tt class="descname">Mixer</tt><big>(</big><em>control='Master'</em>, <em>id=0</em>, <em>cardindex=-1</em>, <em>device='default'</em><big>)</big><a class="headerlink" href="#alsaaudio.Mixer" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><code class="descclassname">alsaaudio.</code><code class="descname">Mixer</code><span class="sig-paren">(</span><em>control='Master'</em>, <em>id=0</em>, <em>cardindex=-1</em>, <em>device='default'</em><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Arguments are:</p>
|
||||
<ul class="simple">
|
||||
<li><em>control</em> - specifies which control to manipulate using this mixer
|
||||
object. The list of available controls can be found with the
|
||||
<a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a>.<a class="reference internal" href="#alsaaudio.mixers" title="alsaaudio.mixers"><tt class="xref py py-func docutils literal"><span class="pre">mixers()</span></tt></a> function. The default value is
|
||||
<tt class="docutils literal"><span class="pre">'Master'</span></tt> - other common controls may be <tt class="docutils literal"><span class="pre">'Master</span> <span class="pre">Mono'</span></tt>, <tt class="docutils literal"><span class="pre">'PCM'</span></tt>,
|
||||
<tt class="docutils literal"><span class="pre">'Line'</span></tt>, etc.</li>
|
||||
<li><em>id</em> - the id of the mixer control. Default is <tt class="docutils literal"><span class="pre">0</span></tt>.</li>
|
||||
<a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a>.<a class="reference internal" href="#alsaaudio.mixers" title="alsaaudio.mixers"><code class="xref py py-func docutils literal"><span class="pre">mixers()</span></code></a> function. The default value is
|
||||
<code class="docutils literal"><span class="pre">'Master'</span></code> - other common controls may be <code class="docutils literal"><span class="pre">'Master</span> <span class="pre">Mono'</span></code>, <code class="docutils literal"><span class="pre">'PCM'</span></code>,
|
||||
<code class="docutils literal"><span class="pre">'Line'</span></code>, etc.</li>
|
||||
<li><em>id</em> - the id of the mixer control. Default is <code class="docutils literal"><span class="pre">0</span></code>.</li>
|
||||
<li><em>cardindex</em> - specifies which card should be used. If this argument
|
||||
is given, the device name is constructed like this: ‘hw:<em>cardindex</em>‘ and
|
||||
the <cite>device</cite> keyword argument is ignored. <tt class="docutils literal"><span class="pre">0</span></tt> is the
|
||||
the <cite>device</cite> keyword argument is ignored. <code class="docutils literal"><span class="pre">0</span></code> is the
|
||||
first sound card.</li>
|
||||
<li><em>device</em> - the name of the device on which the mixer resides. The default
|
||||
value is <tt class="docutils literal"><span class="pre">'default'</span></tt>.</li>
|
||||
value is <code class="docutils literal"><span class="pre">'default'</span></code>.</li>
|
||||
</ul>
|
||||
<p><em>Changed in 0.8</em>:</p>
|
||||
<ul class="simple">
|
||||
@@ -396,26 +390,26 @@ devices.</li>
|
||||
<p>Mixer objects have the following methods:</p>
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.cardname">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">cardname</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.cardname" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">cardname</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.cardname" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the name of the sound card used by this Mixer object</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.mixer">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">mixer</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.mixer" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">mixer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.mixer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the name of the specific mixer controlled by this object, For example
|
||||
<tt class="docutils literal"><span class="pre">'Master'</span></tt> or <tt class="docutils literal"><span class="pre">'PCM'</span></tt></p>
|
||||
<code class="docutils literal"><span class="pre">'Master'</span></code> or <code class="docutils literal"><span class="pre">'PCM'</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.mixerid">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">mixerid</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.mixerid" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">mixerid</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.mixerid" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the ID of the ALSA mixer controlled by this object.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.switchcap">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">switchcap</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.switchcap" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">switchcap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.switchcap" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a list of the switches which are defined by this specific mixer.
|
||||
Possible values in this list are:</p>
|
||||
<table border="1" class="docutils">
|
||||
@@ -452,13 +446,13 @@ Possible values in this list are:</p>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>To manipulate these switches use the <a class="reference internal" href="#alsaaudio.Mixer.setrec" title="alsaaudio.Mixer.setrec"><tt class="xref py py-meth docutils literal"><span class="pre">setrec()</span></tt></a> or
|
||||
<a class="reference internal" href="#alsaaudio.Mixer.setmute" title="alsaaudio.Mixer.setmute"><tt class="xref py py-meth docutils literal"><span class="pre">setmute()</span></tt></a> methods</p>
|
||||
<p>To manipulate these switches use the <a class="reference internal" href="#alsaaudio.Mixer.setrec" title="alsaaudio.Mixer.setrec"><code class="xref py py-meth docutils literal"><span class="pre">setrec()</span></code></a> or
|
||||
<a class="reference internal" href="#alsaaudio.Mixer.setmute" title="alsaaudio.Mixer.setmute"><code class="xref py py-meth docutils literal"><span class="pre">setmute()</span></code></a> methods</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.volumecap">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">volumecap</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.volumecap" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">volumecap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.volumecap" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a list of the volume control capabilities of this
|
||||
mixer. Possible values in the list are:</p>
|
||||
<table border="1" class="docutils">
|
||||
@@ -496,21 +490,21 @@ mixer. Possible values in the list are:</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.getenum">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">getenum</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.getenum" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">getenum</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.getenum" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>For enumerated controls, return the currently selected item and the list of
|
||||
items available.</p>
|
||||
<p>Returns a tuple <em>(string, list of strings)</em>.</p>
|
||||
<p>For example, my soundcard has a Mixer called <em>Mono Output Select</em>. Using
|
||||
<em>amixer</em>, I get:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ amixer get "Mono Output Select"
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ amixer get "Mono Output Select"
|
||||
Simple mixer control 'Mono Output Select',0
|
||||
Capabilities: enum
|
||||
Items: 'Mix' 'Mic'
|
||||
Item0: 'Mix'
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Using <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a>, one could do:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">alsaaudio</span>
|
||||
<p>Using <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a>, one could do:</p>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">alsaaudio</span>
|
||||
<span class="gp">>>> </span><span class="n">m</span> <span class="o">=</span> <span class="n">alsaaudio</span><span class="o">.</span><span class="n">Mixer</span><span class="p">(</span><span class="s">'Mono Output Select'</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">m</span><span class="o">.</span><span class="n">getenum</span><span class="p">()</span>
|
||||
<span class="go">('Mix', ['Mix', 'Mic'])</span>
|
||||
@@ -522,7 +516,7 @@ control.</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.getmute">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">getmute</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.getmute" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">getmute</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.getmute" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return a list indicating the current mute setting for each
|
||||
channel. 0 means not muted, 1 means muted.</p>
|
||||
<p>This method will fail if the mixer has no playback switch capabilities.</p>
|
||||
@@ -530,17 +524,17 @@ channel. 0 means not muted, 1 means muted.</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.getrange">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">getrange</tt><big>(</big><span class="optional">[</span><em>direction</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.getrange" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">getrange</code><span class="sig-paren">(</span><span class="optional">[</span><em>direction</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.getrange" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return the volume range of the ALSA mixer controlled by this object.</p>
|
||||
<p>The optional <em>direction</em> argument can be either <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt> or
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>, which is relevant if the mixer can control both
|
||||
playback and capture volume. The default value is <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>
|
||||
if the mixer has playback channels, otherwise it is <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>.</p>
|
||||
<p>The optional <em>direction</em> argument can be either <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code> or
|
||||
<code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>, which is relevant if the mixer can control both
|
||||
playback and capture volume. The default value is <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>
|
||||
if the mixer has playback channels, otherwise it is <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.getrec">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">getrec</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.getrec" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">getrec</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.getrec" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return a list indicating the current record mute setting for each channel. 0
|
||||
means not recording, 1 means recording.</p>
|
||||
<p>This method will fail if the mixer has no capture switch capabilities.</p>
|
||||
@@ -548,32 +542,32 @@ means not recording, 1 means recording.</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.getvolume">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">getvolume</tt><big>(</big><span class="optional">[</span><em>direction</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.getvolume" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">getvolume</code><span class="sig-paren">(</span><span class="optional">[</span><em>direction</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.getvolume" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a list with the current volume settings for each channel. The list
|
||||
elements are integer percentages.</p>
|
||||
<p>The optional <em>direction</em> argument can be either <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt> or
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>, which is relevant if the mixer can control both
|
||||
playback and capture volume. The default value is <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>
|
||||
if the mixer has playback channels, otherwise it is <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>.</p>
|
||||
<p>The optional <em>direction</em> argument can be either <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code> or
|
||||
<code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>, which is relevant if the mixer can control both
|
||||
playback and capture volume. The default value is <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>
|
||||
if the mixer has playback channels, otherwise it is <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.setvolume">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">setvolume</tt><big>(</big><em>volume</em><span class="optional">[</span>, <em>channel</em><span class="optional">]</span><span class="optional">[</span>, <em>direction</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.setvolume" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">setvolume</code><span class="sig-paren">(</span><em>volume</em><span class="optional">[</span>, <em>channel</em><span class="optional">]</span><span class="optional">[</span>, <em>direction</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.setvolume" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Change the current volume settings for this mixer. The <em>volume</em> argument
|
||||
controls the new volume setting as an integer percentage.</p>
|
||||
<p>If the optional argument <em>channel</em> is present, the volume is set
|
||||
only for this channel. This assumes that the mixer can control the
|
||||
volume for the channels independently.</p>
|
||||
<p>The optional <em>direction</em> argument can be either <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt> or
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>, which is relevant if the mixer can control both
|
||||
playback and capture volume. The default value is <tt class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></tt>
|
||||
if the mixer has playback channels, otherwise it is <tt class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></tt>.</p>
|
||||
<p>The optional <em>direction</em> argument can be either <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code> or
|
||||
<code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>, which is relevant if the mixer can control both
|
||||
playback and capture volume. The default value is <code class="xref py py-const docutils literal"><span class="pre">PCM_PLAYBACK</span></code>
|
||||
if the mixer has playback channels, otherwise it is <code class="xref py py-const docutils literal"><span class="pre">PCM_CAPTURE</span></code>.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.setmute">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">setmute</tt><big>(</big><em>mute</em><span class="optional">[</span>, <em>channel</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.setmute" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">setmute</code><span class="sig-paren">(</span><em>mute</em><span class="optional">[</span>, <em>channel</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.setmute" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Sets the mute flag to a new value. The <em>mute</em> argument is either 0 for not
|
||||
muted, or 1 for muted.</p>
|
||||
<p>The optional <em>channel</em> argument controls which channel is
|
||||
@@ -583,7 +577,7 @@ muted. The default is to set the mute flag for all channels.</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.setrec">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">setrec</tt><big>(</big><em>capture</em><span class="optional">[</span>, <em>channel</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.setrec" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">setrec</code><span class="sig-paren">(</span><em>capture</em><span class="optional">[</span>, <em>channel</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.setrec" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Sets the capture mute flag to a new value. The <em>capture</em> argument
|
||||
is either 0 for no capture, or 1 for capture.</p>
|
||||
<p>The optional <em>channel</em> argument controls which channel is
|
||||
@@ -593,16 +587,16 @@ changed. The default is to set the capture flag for all channels.</p>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.polldescriptors">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">polldescriptors</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.polldescriptors" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">polldescriptors</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.polldescriptors" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a tuple of <em>(file descriptor, eventmask)</em> that can be used to
|
||||
wait for changes on the mixer with <em>select.poll</em>.</p>
|
||||
<p>The <em>eventmask</em> value is compatible with <a class="reference external" href="http://docs.python.org/library/select.html#poll-objects">poll.register</a> in the Python
|
||||
<tt class="xref py py-const docutils literal"><span class="pre">select</span></tt> module.</p>
|
||||
<code class="xref py py-const docutils literal"><span class="pre">select</span></code> module.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="alsaaudio.Mixer.handleevents">
|
||||
<tt class="descclassname">Mixer.</tt><tt class="descname">handleevents</tt><big>(</big><big>)</big><a class="headerlink" href="#alsaaudio.Mixer.handleevents" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="descclassname">Mixer.</code><code class="descname">handleevents</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#alsaaudio.Mixer.handleevents" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Acknowledge events on the <em>polldescriptors</em> file descriptors
|
||||
to prevent subsequent polls from returning the same events again.
|
||||
Returns the number of events that were acknowledged.</p>
|
||||
@@ -610,11 +604,11 @@ Returns the number of events that were acknowledged.</p>
|
||||
|
||||
<p><strong>A rant on the ALSA Mixer API</strong></p>
|
||||
<p>The ALSA mixer API is extremely complicated - and hardly documented at all.
|
||||
<a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a> implements a much simplified way to access this API. In
|
||||
<a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a> implements a much simplified way to access this API. In
|
||||
designing the API I’ve had to make some choices which may limit what can and
|
||||
cannot be controlled through the API. However, if I had chosen to implement the
|
||||
full API, I would have reexposed the horrible complexity/documentation ratio of
|
||||
the underlying API. At least the <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a> API is easy to
|
||||
the underlying API. At least the <a class="reference internal" href="#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a> API is easy to
|
||||
understand and use.</p>
|
||||
<p>If my design choises prevents you from doing something that the underlying API
|
||||
would have allowed, please let me know, so I can incorporate these needs into
|
||||
@@ -638,11 +632,11 @@ painful trial and error process.</p>
|
||||
<p>All examples (except <cite>mixertest.py</cite>) accept the commandline option
|
||||
<em>-c <cardname></em>.</p>
|
||||
<p>To determine a valid card name, use the commandline ALSA player:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ aplay -L
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ aplay -L
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>or:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python
|
||||
|
||||
>>> import alsaaudio
|
||||
>>> alsaaudio.pcms()
|
||||
@@ -654,7 +648,7 @@ painful trial and error process.</p>
|
||||
<h3>playwav.py<a class="headerlink" href="#playwav-py" title="Permalink to this headline">¶</a></h3>
|
||||
<p><strong>playwav.py</strong> plays a wav file.</p>
|
||||
<p>To test PCM playback (on your default soundcard), run:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python playwav.py <wav file>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python playwav.py <wav file>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -663,13 +657,13 @@ painful trial and error process.</p>
|
||||
<p><strong>recordtest.py</strong> and <strong>playbacktest.py</strong> will record and play a raw
|
||||
sound file in CD quality.</p>
|
||||
<p>To test PCM recordings (on your default soundcard), run:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python recordtest.py <filename>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python recordtest.py <filename>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Speak into the microphone, and interrupt the recording at any time
|
||||
with <tt class="docutils literal"><span class="pre">Ctl-C</span></tt>.</p>
|
||||
with <code class="docutils literal"><span class="pre">Ctl-C</span></code>.</p>
|
||||
<p>Play back the recording with:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python playbacktest.py <filename>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python playbacktest.py <filename>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -678,7 +672,7 @@ with <tt class="docutils literal"><span class="pre">Ctl-C</span></tt>.</p>
|
||||
<p>Without arguments, <strong>mixertest.py</strong> will list all available <em>controls</em> on the
|
||||
default soundcard.</p>
|
||||
<p>The output might look like this:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ ./mixertest.py
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ ./mixertest.py
|
||||
Available mixer controls:
|
||||
'Master'
|
||||
'Master Mono'
|
||||
@@ -698,7 +692,7 @@ Available mixer controls:
|
||||
</div>
|
||||
<p>With a single argument - the <em>control</em>, it will display the settings of
|
||||
that control; for example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ ./mixertest.py Master
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ ./mixertest.py Master
|
||||
Mixer name: 'Master'
|
||||
Capabilities: Playback Volume Playback Mute
|
||||
Channel 0 volume: 61%
|
||||
@@ -707,18 +701,18 @@ Channel 1 volume: 61%
|
||||
</div>
|
||||
<p>With two arguments, the <em>control</em> and a <em>parameter</em>, it will set the
|
||||
parameter on the mixer:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ ./mixertest.py Master mute
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ ./mixertest.py Master mute
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This will mute the Master mixer.</p>
|
||||
<p>Or:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ ./mixertest.py Master 40
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ ./mixertest.py Master 40
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This sets the volume to 40% on all channels.</p>
|
||||
<p>To select a different soundcard, use either the <em>device</em> or <em>cardindex</em>
|
||||
argument:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ ./mixertest.py -c 0 Master
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ ./mixertest.py -c 0 Master
|
||||
Mixer name: 'Master'
|
||||
Capabilities: Playback Volume Playback Mute
|
||||
Channel 0 volume: 61%
|
||||
@@ -729,7 +723,7 @@ Channel 1 volume: 61%
|
||||
<table class="docutils footnote" frame="void" id="f1" rules="none">
|
||||
<colgroup><col class="label" /><col /></colgroup>
|
||||
<tbody valign="top">
|
||||
<tr><td class="label">[1]</td><td>ALSA also allows <tt class="docutils literal"><span class="pre">PCM_ASYNC</span></tt>, but this is not supported yet.</td></tr>
|
||||
<tr><td class="label">[1]</td><td>ALSA also allows <code class="docutils literal"><span class="pre">PCM_ASYNC</span></code>, but this is not supported yet.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -740,11 +734,11 @@ Channel 1 volume: 61%
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">alsaaudio</span></tt></a><ul>
|
||||
<li><a class="reference internal" href="#"><code class="docutils literal"><span class="pre">alsaaudio</span></code></a><ul>
|
||||
<li><a class="reference internal" href="#pcm-objects">PCM Objects</a></li>
|
||||
<li><a class="reference internal" href="#mixer-objects">Mixer Objects</a></li>
|
||||
<li><a class="reference internal" href="#examples">Examples</a><ul>
|
||||
@@ -756,51 +750,49 @@ Channel 1 volume: 61%
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="terminology.html"
|
||||
title="previous chapter">PCM Terminology and Concepts</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/libalsaaudio.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
<div id="searchbox" style="display: none">
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="terminology.html" title="previous chapter">PCM Terminology and Concepts</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/libalsaaudio.rst.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<div><input type="text" name="q" /></div>
|
||||
<div><input type="submit" value="Go" /></div>
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="terminology.html" title="PCM Terminology and Concepts"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Mar 30, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
|
|
||||
<a href="_sources/libalsaaudio.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Python Module Index — alsaaudio 0.8.4 documentation</title>
|
||||
<title>Python Module Index — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -17,14 +17,22 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="index.html" />
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
|
||||
@@ -32,24 +40,13 @@
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
|
||||
<h1>Python Module Index</h1>
|
||||
@@ -58,14 +55,14 @@
|
||||
<a href="#cap-a"><strong>a</strong></a>
|
||||
</div>
|
||||
|
||||
<table class="indextable modindextable" cellspacing="0" cellpadding="2">
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<table class="indextable modindextable">
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-a"><td></td><td>
|
||||
<strong>a</strong></td><td></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="libalsaaudio.html#module-alsaaudio"><tt class="xref">alsaaudio</tt></a> <em>(Linux)</em></td><td>
|
||||
<a href="libalsaaudio.html#module-alsaaudio"><code class="xref">alsaaudio</code></a> <em>(Linux)</em></td><td>
|
||||
<em></em></td></tr>
|
||||
</table>
|
||||
|
||||
@@ -73,41 +70,39 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper"><div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<div><input type="text" name="q" /></div>
|
||||
<div><input type="submit" value="Go" /></div>
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Mar 30, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Introduction — alsaaudio 0.8.4 documentation</title>
|
||||
<title>Introduction — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -17,40 +17,31 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="index.html" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="PCM Terminology and Concepts" href="terminology.html" />
|
||||
<link rel="prev" title="alsaaudio documentation" href="index.html" />
|
||||
<link rel="prev" title="alsaaudio documentation" href="index.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="terminology.html" title="PCM Terminology and Concepts"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="index.html" title="alsaaudio documentation"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="introduction">
|
||||
<h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
|
||||
@@ -121,38 +112,38 @@ default in Linux kernel 2.6 and later. If you are using kernel version 2.4 you
|
||||
may need to install the ALSA patches yourself - although most distributions
|
||||
ship with ALSA kernels.</p>
|
||||
<p>To install, execute the following: —</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python setup.py build
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python setup.py build
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And then as root: —</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="c"># python setup.py install</span>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span class="c"># python setup.py install</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="testing">
|
||||
<h1>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Make sure that <tt class="code docutils literal"><span class="pre">aplay</span></tt> plays a file through the soundcard you want, then
|
||||
<p>Make sure that <code class="code docutils literal"><span class="pre">aplay</span></code> plays a file through the soundcard you want, then
|
||||
try:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python playwav.py <filename.wav>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python playwav.py <filename.wav>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>If <tt class="code docutils literal"><span class="pre">aplay</span></tt> needs a device argument, like
|
||||
<tt class="code docutils literal"><span class="pre">aplay</span> <span class="pre">-D</span> <span class="pre">hw:CARD=sndrpihifiberry,DEV=0</span></tt>, use:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python playwav.py -d hw:CARD=sndrpihifiberry,DEV=0 <filename.wav>
|
||||
<p>If <code class="code docutils literal"><span class="pre">aplay</span></code> needs a device argument, like
|
||||
<code class="code docutils literal"><span class="pre">aplay</span> <span class="pre">-D</span> <span class="pre">hw:CARD=sndrpihifiberry,DEV=0</span></code>, use:</p>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python playwav.py -d hw:CARD=sndrpihifiberry,DEV=0 <filename.wav>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>To test PCM recordings (on your default soundcard), verify your
|
||||
microphone works, then do:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python recordtest.py -d <device> <filename>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python recordtest.py -d <device> <filename>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Speak into the microphone, and interrupt the recording at any time
|
||||
with <tt class="docutils literal"><span class="pre">Ctl-C</span></tt>.</p>
|
||||
with <code class="docutils literal"><span class="pre">Ctl-C</span></code>.</p>
|
||||
<p>Play back the recording with:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre>$ python playbacktest.py-d <device> <filename>
|
||||
<div class="highlight-default"><div class="highlight"><pre>$ python playbacktest.py-d <device> <filename>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>There is a minimal test suite in <tt class="code docutils literal"><span class="pre">test.py</span></tt>, but it is
|
||||
<p>There is a minimal test suite in <code class="code docutils literal"><span class="pre">test.py</span></code>, but it is
|
||||
a bit dependent on the ALSA configuration and may fail without indicating
|
||||
a real problem.</p>
|
||||
<p>If you find bugs/problems, please file a <a class="reference external" href="https://github.com/larsimmisch/pyalsaaudio/issues">bug report</a>.</p>
|
||||
@@ -162,7 +153,7 @@ a real problem.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
@@ -174,57 +165,50 @@ a real problem.</p>
|
||||
<li><a class="reference internal" href="#installation">Installation</a></li>
|
||||
<li><a class="reference internal" href="#testing">Testing</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="index.html"
|
||||
title="previous chapter">alsaaudio documentation</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="terminology.html"
|
||||
title="next chapter">PCM Terminology and Concepts</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/pyalsaaudio.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
<div id="searchbox" style="display: none">
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="index.html" title="previous chapter">alsaaudio documentation</a></li>
|
||||
<li>Next: <a href="terminology.html" title="next chapter">PCM Terminology and Concepts</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/pyalsaaudio.rst.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<div><input type="text" name="q" /></div>
|
||||
<div><input type="submit" value="Go" /></div>
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="terminology.html" title="PCM Terminology and Concepts"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="index.html" title="alsaaudio documentation"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Feb 25, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
|
|
||||
<a href="_sources/pyalsaaudio.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Search — alsaaudio 0.8.4 documentation</title>
|
||||
<title>Search — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -17,40 +17,37 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="index.html" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="#" />
|
||||
<script type="text/javascript">
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" id="searchindexloader"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1 id="search-documentation">Search</h1>
|
||||
<div id="fallback" class="admonition warning">
|
||||
@@ -79,28 +76,29 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper"><div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Mar 30, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>PCM Terminology and Concepts — alsaaudio 0.8.4 documentation</title>
|
||||
<title>PCM Terminology and Concepts — alsaaudio 0.8.4 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -17,40 +17,31 @@
|
||||
VERSION: '0.8.4',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="alsaaudio 0.8.4 documentation" href="index.html" />
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="alsaaudio" href="libalsaaudio.html" />
|
||||
<link rel="prev" title="Introduction" href="pyalsaaudio.html" />
|
||||
<link rel="prev" title="Introduction" href="pyalsaaudio.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="libalsaaudio.html" title="alsaaudio"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="pyalsaaudio.html" title="Introduction"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<body role="document">
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="pcm-terminology-and-concepts">
|
||||
<h1>PCM Terminology and Concepts<a class="headerlink" href="#pcm-terminology-and-concepts" title="Permalink to this headline">¶</a></h1>
|
||||
@@ -113,7 +104,7 @@ memory copy, but userspace can be slower and read or write multiple
|
||||
periods at the same time.</dd>
|
||||
<dt>Period size</dt>
|
||||
<dd>This is the size of each period in Hz. <em>Not bytes, but Hz!.</em> In
|
||||
<a class="reference internal" href="libalsaaudio.html#module-alsaaudio" title="alsaaudio (Linux)"><tt class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></tt></a> the period size is set directly, and it is
|
||||
<a class="reference internal" href="libalsaaudio.html#module-alsaaudio" title="alsaaudio (Linux)"><code class="xref py py-mod docutils literal"><span class="pre">alsaaudio</span></code></a> the period size is set directly, and it is
|
||||
therefore important to understand the significance of this
|
||||
number. If the period size is configured to for example 32,
|
||||
each write should contain exactly 32 frames of sound data, and each
|
||||
@@ -127,58 +118,51 @@ on.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="pyalsaaudio.html"
|
||||
title="previous chapter">Introduction</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="libalsaaudio.html"
|
||||
title="next chapter"><tt class="docutils literal"><span class="pre">alsaaudio</span></tt></a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/terminology.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
<div id="searchbox" style="display: none">
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper"><div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="pyalsaaudio.html" title="previous chapter">Introduction</a></li>
|
||||
<li>Next: <a href="libalsaaudio.html" title="next chapter"><code class="docutils literal"><span class="pre">alsaaudio</span></code></a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/terminology.rst.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<div><input type="text" name="q" /></div>
|
||||
<div><input type="submit" value="Go" /></div>
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="libalsaaudio.html" title="alsaaudio"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="pyalsaaudio.html" title="Introduction"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">alsaaudio 0.8.4 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
Last updated on Feb 24, 2017.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
|
||||
©2008-20017, Casper Wilstrup, Lars Immisch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
||||
|
||||
|
|
||||
<a href="_sources/terminology.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||