ご挨拶! このメモは、初心者プログラマーを対象としています。 彼女はシンプルなAudiereライブラリについてです。 かつて簡単かつ迅速にサウンドを引き出したいと思っていたなら、あなたはそれを好きになるでしょう。
まず、それが何であるかについて少しお話しします。
Audiereは、LGPLライセンスに基づくオープンソースの高レベルオーディオAPIです。 Java、C ++、Python、Delphiなどを含む多くの言語で使用できます。ソースコードが影響を受けない場合、無料で商用アプリケーションで使用できます(詳細については、ライブラリのドキュメントを参照してください)。
C ++で最も単純な例を実装する準備をします。
- 公式Webサイトからライブラリをダウンロードします(私の場合、これはWin32バイナリリリースです)。
 - 従来、コンパイラの「lib」フォルダに「audiere.lib」ファイルを転送し、コンパイラの「include」フォルダにも「audiere.h」ヘッダーを転送していました
***CodeBlocks 「Program Files(x86)/ CodeBlocks / MinGW /」のコンパイラフォルダパス、Microsoft Visual Studio- 「Program Files(x86)/ Microsoft Visual Studio / VC /」
  - たとえば、コンソールプロジェクトC ++を作成します。
 - プロジェクトのリンカー設定で、「audiere.lib」を追加します
 - プロジェクトのソースコードの横、プログラムのexeファイルの横にある「bin」フォルダから「audiere.dll」を忘れないでください。
 
まったく新しい場合「cout <<」の出力方法を学んだ3日目であれば、事前に言っておくよ、友よ、下に書かれていることを繰り返して、すべてを説明しよう。
 #include <iostream> //    "cout<<" #include "conio.h" //   "getche()",   "cin>>" #include "windows.h" // audiere   #include "audiere.h" //  using namespace std; using namespace audiere; //       
 int main() { setlocale(0, "Russian");  
さて、コメントはもう少し詳細です。
 AudioDevicePtr device = OpenDevice(); 
ここでは、ライブラリの概念に従って
、デバイス
ポインター (まったく明示的ではありませんが、ポインター)を作成します。 OpenDevice()を引数なしのままにしておくと、ライブラリ自体が適切なデバイスを選択します。
次に、ストリームでファイルを開きます。
 OutputStreamPtr sound = OpenSound(device , "sound.wav" , false); 
サウンドを開くには、OpenSoundに3つの引数を渡す必要があります。
1. device-出力が発生するデバイス
2. "sound.wav"-私たちの任意の音
3. falseまたはtrue-サウンドをメモリにロードして再生する(false)か、ストリーム(たとえば、大きなファイルの場合)を介して、メモリに完全にロードせずに再生する(true)が必要です。 サウンドトラックの場合、「true」にする必要があります。そうしないと、メモリ全体がサウンドを取得します。
 sound->play(); 
サウンドを再生してください! どうやら、すべてが非常に簡単です。 サウンドの場合、音量を設定できます。
 sound->setVolume(1.0f);  
サウンドを繰り返し(ループ)することができます:
 sound->setRepeat(true); 
このストリームの再生を停止します。
 sound->stop(); 
このストリームが現在再生中かどうかを確認します。
 sound->isPlaying(); 
特定のストリームの現在のボリュームを確認します。
 sound->getVolume(); 
サウンドパノラマを設定します(左、中央、右):
 sound->setPan(-1.0); 
サウンドの再生速度を設定します(トーンも変わります)。
 sound->setPitchShift(1.0); 
 sound->getPitchShift(); 
ヘッダーファイル「audiere.h」には、「CreateTone();」、「CreatePinkNoise()」など、MIDI機能を含むその他の関数が定義されています。 「audiere」名前空間のメンバーのリストと、 
こちらのオンラインドキュメントへのリンク。
もちろん、プログラムにエラー処理を追加する必要がある場合、ソースコードは次のようになります。
 AudioDevicePtr device = OpenDevice(); if(!device) { cout<<"  AudioDevice.     .."; getche(); return 0;  
ファイルを開くエラーの処理と同様に:
 if(!sound){ cout<<"  !     .."; getche(); return 0; } 
完全なソースコード #include <iostream> //    "cout<<" #include "conio.h" //   "getche()" ,   "cin>>" #include "windows.h" // audiere   #include "audiere.h" //  using namespace std; using namespace audiere; //        int main() { setlocale(0, "Russian"); //    - cout<<"  "<<endl; AudioDevicePtr device = OpenDevice(); //    AudioDevice if(!device){ cout<<"  AudioDevice.     .."; getche(); return 0; //   } OutputStreamPtr sound = OpenSound(device , "sound.wav" , false); //   if(!sound){ cout<<"  !     .."; getche(); return 0; } sound->play(); //   getche(); //         } 
 そして最後に、このプログラムはより興味深いものです。私たちは原始的な楽器を作ります!
今回はgetch()メソッドを使用します。 違いは、「getche()」と同じように機能しますが、入力した文字は表示されないことです。 しかし、突然、あなたは面白いメロディーを手に入れ、あなたが押したものを見る必要がありますか?:「getche()」を使用するか、「getch()」で配列に書き込むことができます。 コードのシンプルさを隠さないように、私は意図的に初心者向けのテキストを複雑にしません。そのため、エラーやその他すべてのチェックを自分で追加できます。
楽器のソースコード:
 #include <iostream> #include "conio.h" #include "windows.h" #include "audiere.h" using namespace std; using namespace audiere; int main() { setlocale(0, "Russian"); cout << "  QWERTYUIO . X -  " << endl; AudioDevicePtr device = OpenDevice(); OutputStreamPtr do1 = OpenSound(device , "do.wav" , false); //         OutputStreamPtr re = OpenSound(device , "re.wav" , false); OutputStreamPtr mi = OpenSound(device , "mi.wav" , false); OutputStreamPtr fa = OpenSound(device , "fa.wav" , false); OutputStreamPtr sol = OpenSound(device , "sol.wav" , false); OutputStreamPtr la = OpenSound(device , "la.wav" , false); OutputStreamPtr si = OpenSound(device , "si.wav" , false); OutputStreamPtr do2 = OpenSound(device , "do2.wav" , false); //  -   ,     char notePlay = '1'; //      while(notePlay!='x') // ,     "x" { notePlay=getch(); if(notePlay=='q') do1->play(); else if(notePlay=='w') re->play(); else if(notePlay=='e') mi->play(); else if(notePlay=='r') fa->play(); else if(notePlay=='t') sol->play(); else if(notePlay=='y') la->play(); else if(notePlay=='u') si->play(); else if(notePlay=='i') do2->play(); } return 0; } 
*このプロジェクトの.wavファイルは
ここからダウンロードでき
ます 。 ソースフォルダーに解凍します。
そして、これは初心者向けですcin >>にはconche.hの代わりにgetche()があります。 「Getche()」は、「Enter」コマンドの入力を待機しませんが、キーを押した直後に変数に値を割り当てます。
 char inputVar; inputVar=getche(); 
しかし、ご覧のとおり、キーを押すことができるのは1回だけなので、この方法はループ内の配列に最適です。
 char inputVar[30];  
「!inputVar [i] == '\ r'」-これは「Enter」を押すとテストされ、押されるとサイクルが終了します。 '\ r'は復帰のサインです。
そして今、なぜコードでは「getche()」が単独で存在し、変数を割り当てないのか、それは必要ありません。 キーが押されるのを待つだけで、その後プログラムは終了します。
「setlocale(0、」Russian ");」の助けを借りて、コンソールにロシア語のテキストを出力するサポートがインストールされます(入力はサポートされません)。
次の2行は、C ++に詳しくなった後、たとえば本から明らかになります。
Herbert Shildt-「完全なC ++リファレンス」
私たちの国の「音」はポインタであるため、その方法はポイントではなく矢印演算子「->」を使用して実行されます。 「sound.play()」のように。 これは、前述の本では、「ポインター」の章に当てられています。
「if else」コンストラクトについてコメントし
ます。 
次のすべてのチェックでは、 
「else if」を使用しました
。これは、各値と押されたキーとの対応をチェックした後、残りのifステートメントが実行されないため、プログラムの速度を上げます。 私たちが書いた場合:
  while(notePlay!='x')  
次に、たとえば「q」キーを押しても、他のすべての条件がチェックされますが、この場合は意味がありません。
勉強に成功したい!
 この短いレビューは、設計の新規参入者の出発点として役立ててください。 最高!