🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

Q&A

1回答

1546閲覧

QtにてUSBオーディオインターフェイスのチャンネル設定

Yamamin

総合スコア18

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

0グッド

0クリップ

投稿2021/02/15 06:52

QtにてUSBオーディオインターフェイスの音声信号を取り込むプログラムを作成しています。
オーディオインターフェイスのインプットチャンネル1番の信号を取り込むことには成功したのですが、
インプットチャンネル2番以降のチャンネルを指定して受信することが出来ません。
USBオーディオインターフェイスの2番以降のインプットチャンネルを指定して、
信号をプログラムに取り込むにはどうすれば良いのでしょうか?

チャンネルを設定できそうなところを以下のように設定してみたのですが、
2番以降に切り替えが出来ませんでした。

QAudioFormat oAudioFormat; oAudioFormat.setChannelCount(2); const QAudioDeviceInfo& oAudioDevice = QAudioDeviceInfo::availableDevices(QAudio::AudioInput).at(0); QAudioInput* pAudioInput = new QAudioInput(oAudioDevice, oAudioFormat, this); QIODivice* pAudioInputDevice = pAudioInput->start(); pAudioInputDevice->setCurrentReadChannel(2); connect(_pAudioInputDevice, SIGNAL(readyRead()), this, SLOT(onReadyRead()));

Channelと明記してある関数
QAudioFormat::setChannelCount
QIODivice::setCurrentReadChannel
の両方を設定してみたのですが、チャンネルの切り替えは出来ませんでした。
他に方法はありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

OS はなにをお使いですか?
USBオーディオインターフェイスがどう認識されているのかわかりませんが、
QAudioDeviceInfo::availableDevices(QAudio::AudioInput)
はいくつインターフェースを返していますか?
複数ある場合、.at(1).at(2) のものを利用することで別のチャンネルを利用可能かもしれません。

投稿2021/02/15 17:34

tasuku.

総合スコア347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yamamin

2021/02/17 01:36

ご回答ありがとうございます。 OSは、Mac 10.14を使用していて、オーディオインターフェイスは「RME-MADIfaceUSB」および「RME-MADIfacePro」を 使用しています。すみません、便宜上.at(0) と書いたのですが、実際は「availableDevices」で取得できるオーディオインターフェイスの 一覧をプルダウンメニューに表示して、ユーザーに選択してもらうようにしています。 プルダウンメニューにはいくつか表示されていて上記のインターフェイスに選択してでの話です。 RMEのオーディオインターフェイスは、扱えるチャンネル数が60ch以上ある物になります。このチャンネルをどこかで指定出来ないかと 探しているのですが。
tasuku.

2021/02/17 02:28

そのインターフェースに対して、 oAudioDevice.supportedChannelCounts() はいくつになっていますか? https://doc.qt.io/qt-5/qaudiodeviceinfo.html#supportedChannelCounts oAudioFormat.setChannelCount(2); としたものを、QAudioInput のコンストラクタに指定しているのですが、チャンネル数を明示的に指定しない場合の動作はどのようになりますか?
Yamamin

2021/02/22 14:08

メールの通知が来なかった為、返信遅れて申し訳ありません。 返信ありがとうございます。 supportedChannelCounts()はこれだけ返ってきます。 supportedChannelCounts : [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16] しかし、この度の値を設定しても、1番目のチャンネルのデータが1つだけ入ってきます。チャンネル数を明示的に指定しない場合も同様です。
Yamamin

2021/02/22 14:09

この度の値を ⇒ このどの値を に訂正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問