以下の内容の、続きのような記事です。
●PC で利用できるマイクなどのオーディオ入力のリストを p5.js Web Editor上で見てみる(ブラウザの MediaDevices) - Qiita
https://qiita.com/youtoy/items/8339313b561c503ffe39
上記の記事では、以下のように全てのオーディオ入力を取得していたのを、今回は特定の名称のもののみ取り出します。
それをまた、p5.js Web Editor上で試します。
前回のプログラムの編集版
今回の内容のベースになるものとして、前回の記事のプログラムを少し編集した内容を掲載します。
function setup() {
createCanvas(400, 400);
navigator.mediaDevices.enumerateDevices().then((devices) => {
const inputList = devices.filter((device) => device.kind === "audioinput");
console.log(inputList);
});
}
まずは、以下の「filter()」を使ってオーディオ入力のみを取り出している状態です。
●Array.prototype.filter() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
特定の名前のもののみ取得
さらに、特定の名前のもののみ取得してみます。
特定の名称に完全一致するものを取得
まずは、特定の名称に完全一致するものを取得してみます。
とりあえず、名称は 2つとして実装してみます。
let audioInputs;
function setup() {
createCanvas(400, 400);
const desiredLabels = [
"【名称の文字列1(完全一致させる)】",
"【名称の文字列2(完全一致させる)】",
];
navigator.mediaDevices.enumerateDevices().then((devices) => {
audioInputs = devices.filter(
(device) =>
device.kind === "audioinput" && desiredLabels.includes(device.label)
);
if (audioInputs.length < 2) {
throw new Error("想定した2つのデバイスが見つかりません");
}
console.log(audioInputs);
});
}
ここでは、desiredLabels として用意した名称のリストと、以下の「includes()」を組み合わせて、特定の名称のものを取り出しました。
●Array.prototype.includes() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
特定の名称に部分一致するものを取得
まずは、特定の名称に部分一致するものを取得してみます。
今度も、名称は 2つとして実装してみます。
let audioInputs;
function setup() {
createCanvas(400, 400);
const desiredLabels = ["【名称の文字列1(部分一致させる)】", "【名称の文字列2(部分一致させる)】"];
navigator.mediaDevices.enumerateDevices().then((devices) => {
audioInputs = devices.filter(
(device) =>
device.kind === "audioinput" &&
desiredLabels.some((label) => device.label.includes(label))
);
if (audioInputs.length < 2) {
console.log(audioInputs.length);
throw new Error("想定した2つのデバイスが見つかりません");
}
console.log(audioInputs);
});
}
部分一致で取得するほうは、先ほども使った「includes()」と合わせて、以下の「some()」を組み合わせました。
●Array.prototype.some() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/some