LoginSignup
0
0

PC で利用できるマイクなどのオーディオ入力のリストで特定の名前のもののみ取得(p5.js Web Editor上で試す)

Last updated at Posted at 2024-05-23

以下の内容の、続きのような記事です。

●PC で利用できるマイクなどのオーディオ入力のリストを p5.js Web Editor上で見てみる(ブラウザの MediaDevices) - Qiita
 https://qiita.com/youtoy/items/8339313b561c503ffe39

上記の記事では、以下のように全てのオーディオ入力を取得していたのを、今回は特定の名称のもののみ取り出します。

image.png

それをまた、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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0