audio type

This commit is contained in:
Sebastian Hildebrandt 2021-01-25 21:39:25 +01:00
parent b3630ad717
commit 67f5e6cc53
3 changed files with 48 additions and 1 deletions

View File

@ -497,6 +497,8 @@ I also created a nice little command line tool called [mmon][mmon-github-url] (m
| | [0].revision | X | | | | | revision | | | [0].revision | X | | | | | revision |
| | [0].driver | X | | | | | driver | | | [0].driver | X | | | | | driver |
| | [0].default | | | X | X | | is default | | | [0].default | | | X | X | | is default |
| | [0].channel | X | | X | | | channel e.g. USB, HDMI, ... |
| | [0].type | X | | X | X | | type e.g. Speaker |
| | [0].in | | | X | X | | is input channel | | | [0].in | | | X | X | | is input channel |
| | [0].out | | | X | X | | is output channel | | | [0].out | | | X | X | | is output channel |
| | [0].interfaceType | X | | X | X | | interface type (PCIe, USB, HDMI, ...) | | | [0].interfaceType | X | | X | X | | interface type (PCIe, USB, HDMI, ...) |

View File

@ -136,6 +136,26 @@
<td></td> <td></td>
<td>is default</td> <td>is default</td>
</tr> </tr>
<tr>
<td></td>
<td>[0].channel</td>
<td>X</td>
<td></td>
<td>X</td>
<td></td>
<td></td>
<td>channel e.g. HDMI, USB, ...</td>
</tr>
<tr>
<td></td>
<td>[0].type</td>
<td>X</td>
<td></td>
<td>X</td>
<td>X</td>
<td></td>
<td>type e.g. Speaker</td>
</tr>
<tr> <tr>
<td></td> <td></td>
<td>[0].in</td> <td>[0].in</td>
@ -263,4 +283,4 @@ si.audio().then(data => console.log(data));</code></pre class="example">
</script> </script>
</body> </body>
</html> </html>

View File

@ -28,6 +28,27 @@ const _openbsd = (_platform === 'openbsd');
const _netbsd = (_platform === 'netbsd'); const _netbsd = (_platform === 'netbsd');
const _sunos = (_platform === 'sunos'); const _sunos = (_platform === 'sunos');
function parseAudioType(str, input, output) {
let result = '';
if (str.indexOf('speak') >= 0) { result = 'Speaker'; }
if (str.indexOf('laut') >= 0) { result = 'Speaker'; }
if (str.indexOf('loud') >= 0) { result = 'Speaker'; }
if (str.indexOf('head') >= 0) { result = 'Headset'; }
if (str.indexOf('mic') >= 0) { result = 'Microphone'; }
if (str.indexOf('mikr') >= 0) { result = 'Microphone'; }
if (str.indexOf('phone') >= 0) { result = 'Phone'; }
if (str.indexOf('controll') >= 0) { result = 'Controller'; }
if (!result && output) {
result = 'Speaker';
} else if (!result && input) {
result = 'Microphone';
}
return result;
}
function getLinuxAudioPci() { function getLinuxAudioPci() {
let cmd = 'lspci -v 2>/dev/null'; let cmd = 'lspci -v 2>/dev/null';
let result = []; let result = [];
@ -62,6 +83,7 @@ function parseLinuxAudioPciMM(lines, audioPCI) {
result.driver = pciMatch && pciMatch.length === 1 && pciMatch[0].driver ? pciMatch[0].driver : ''; result.driver = pciMatch && pciMatch.length === 1 && pciMatch[0].driver ? pciMatch[0].driver : '';
result.default = null; result.default = null;
result.channel = 'PCIe'; result.channel = 'PCIe';
result.type = parseAudioType(result.name, null, null);
result.in = null; result.in = null;
result.out = null; result.out = null;
result.status = 'online'; result.status = 'online';
@ -93,6 +115,7 @@ function parseDarwinAudio(audioObject, id) {
result.driver = null; result.driver = null;
result.default = !!(audioObject.coreaudio_default_audio_input_device || '') || !!(audioObject.coreaudio_default_audio_output_device || ''); result.default = !!(audioObject.coreaudio_default_audio_input_device || '') || !!(audioObject.coreaudio_default_audio_output_device || '');
result.channel = parseDarwinChannel(channelStr); result.channel = parseDarwinChannel(channelStr);
result.type = parseAudioType(result.name, !!(audioObject.coreaudio_device_input || ''), !!(audioObject.coreaudio_device_output || ''));
result.in = !!(audioObject.coreaudio_device_input || ''); result.in = !!(audioObject.coreaudio_device_input || '');
result.out = !!(audioObject.coreaudio_device_output || ''); result.out = !!(audioObject.coreaudio_device_output || '');
result.status = 'online'; result.status = 'online';
@ -111,6 +134,8 @@ function parseWindowsAudio(lines) {
result.revision = null; result.revision = null;
result.driver = null; result.driver = null;
result.default = null; result.default = null;
result.channel = null;
result.type = parseAudioType(result.name, null, null);
result.in = null; result.in = null;
result.out = null; result.out = null;
result.status = status; result.status = status;