オーディオ入力を処理する
このチュートリアルでは、オーディオ入力を処理してオーディオ出力に渡す方法を説明します。
レベル初心者
プラットフォーム:Windows, macOS, Linux
クラス: Random, BigInteger, AudioBuffer
スタート
このチュートリアルのデモ・プロジェクトのダウンロードはこちらから:PIP|ZIP.プロジェクトを解凍し、最初のヘ ッダーファイルをProjucerで開く。
お使いのOSが、マイクへのアクセス許可を要求する必要がある場合(現在、iOS、Android、macOS Mojave)、Projucerの関連するエクスポーターの下に対応するオプションを設定し、プロジェクトを再保存する必要があります。
このステップにヘルプが必要な場合は、以下を参照してください。Tutorial: Projucer Part 1: Getting started with the Projucer.
デモ・プロジェクト
このデモ・プロジェクトは、入力信号をホワイト・ノイズで変調します。ホワイトノイズのレベルは変更可能で、出力全体のレベルに影響を与えます (Tutorial: Control audio levelsホワイトノイズを生成するために使用され る技術については、こちらを参照)。その結果、入力信号は非常に "ファジー "なものになる。
アプリケーションを実行する際には、フィードバックを避けるよう注意してください(効果はかなり面白いかもしれませんが!)。
マイクとヘッドフォンは別々に使うのがベストだろう。もちろん、このプロジェクトが正しく機能するためには、何らかのオーディオ入力デバイスが必要です。
音声入力
このチュートリアルではAudioAppComponentクラスをデモ・プロジェクト・アプリケーションの基礎として使用します。他のチュートリアルではgetNextAudioBlock()
関数 - 参照Tutorial: Build a white noise generator,Tutorial: Control audio levelsそしてTutorial: Build a sine wave synthesiser.このチュートリアルでは、オーディオ入力を読み取り、音声も出力します。このチュートリアルではMainContentComponent
コンストラクタで、2つのオーディオ入力と2つのオーディオ出力を要求します:
setAudioChannels (2, 2);
実際に利用可能な入力または出力の数は、私たちが要求する数よりも少ない場合があります。
バッファの再利用
重要なことは、入力と出力のバッファーは完全に分離されているわけではないということである。入力と出力には同じバッファが使われる。のすべてのコードを一時的にコメントアウトすることで、これをテストできる。getNextAudioBlock()
関数を使います。アプリケーションを実行すると、オーディオ入力が直接出力に渡されます。アプリケーションのgetNextAudioBlock()
関数のチャンネル数はAudioSampleBuffer オブジェクトをbufferToFill
構造体は、入力チャンネル数、出力チャンネル数、またはその両方よりも大きくなる可能性があります。要求した入出力チャンネル数を参照するデータのみにアクセスすることが重要である、そしてを使用できます。特に、入力チャンネル数が出力チャンネル数より多い場合は、以下のようになります。べからず読み取り専用データを含むチャンネルを変更する。