Qtのマルチメディア機能に喜びを感じたときのことを思い出します。フォノンは良いですね。 しかし、私は失望の時を覚えています。このフォノンはあまりにも少なすぎます。 少なくとも、2つのサウンドを同時に再生することはできません。 はい、彼のインターフェースは不完全です...
それはそうかもしれませんが、私はより良いもの、さらにクロスプラットフォームを探し始めました。 いくつかの失敗した発見の後、
FMOD Libraryに出会いました。 ソースコードがないにもかかわらず、これは無料の(非営利目的の)クロスプラットフォームライブラリです。
可能性のリストは膨大です。これは、ミキサー、低レイテンシDSP(ピッチシフターも含む)、および多数の形式(mp3、wav、ogg、aiff、MIDIなど)、サウンド生成、および録音を読み取るためのものです。マルチチャネルサウンド(たとえば、5.1)のサポート、そしてこれ、そして5番目、10番目...一般的な機能。 また、CとC ++の両方のインターフェースがあります。
さらに、大きなプラスはライブラリ自体の重量が軽いことです(Windowsの場合は約370キロです)。
それでは始めましょう。 私はWindowsでそれをしましたが、他のシステムでもほぼ同じでしょう。 開発者向けにAPIをダウンロードし、fmodex.dllとincおよびlibフォルダーをプロジェクトのFMODフォルダーにドロップしました。 #include <fmod.hpp>に接続されたC ++インターフェイスを使用することを選択し、次の操作を行います。
1.私のウィンドウのクラスで変数FMODを宣言します:: System * system;
2.クラスコンストラクターで、以下を初期化します。
FMOD::System_Create(&system); system->init(32 /*maximum number of channels*/ , FMOD_INIT_NORMAL, 0); * This source code was highlighted with Source Code Highlighter .
-
FMOD::System_Create(&system); system->init(32 /*maximum number of channels*/ , FMOD_INIT_NORMAL, 0); * This source code was highlighted with Source Code Highlighter .
-
FMOD::System_Create(&system); system->init(32 /*maximum number of channels*/ , FMOD_INIT_NORMAL, 0); * This source code was highlighted with Source Code Highlighter .
FMOD::System_Create(&system); system->init(32 /*maximum number of channels*/ , FMOD_INIT_NORMAL, 0); * This source code was highlighted with Source Code Highlighter .
3.音を立てる:
- //音
- FMOD ::サウンド*サウンド;
- //サウンドチャンネル
- FMOD ::チャンネル*チャンネル;
- //サウンドを作成する
- system-> system-> createSound( "mysound.mp3" 、FMOD_SOFTWARE | FMOD_LOOP_OFF、0、&sound);
- //サウンドを再生します(チャンネルに割り当てます)
- system-> playSound(1 / *チャネル#1 * / 、サウンド、 true / *一時停止の開始* / 、およびチャネル);
- //実際にサウンドを再生します
- channel-> setPaused( false );
*このソースコードは、 ソースコードハイライターで強調表示されました。
同時に、多くのサウンドを1つのシステムに接続でき(それぞれが独自のチャネル上にあります)、サウンドをループできます(フラグFMOD_LOOP_NORMAL)。
次にプロジェクトをビルドします。 残念ながら、WindowsのC ++インターフェイスはMicrosoft Visual Studioコンパイラでのみ使用でき、MinGWではCインターフェイスのみが使用可能です。 したがって、VS2008のQtを使用してプロジェクトを構築しました。 原則として、CインターフェースはC ++とそれほど違いはありません。たとえば、FMOD :: Systemの代わりにFMOD_Systemを作成し、system-> init()の代わりにFMOD_System_init()を作成するため、1つから別のものに移動するのは非常に簡単です。
プロジェクトをまとめるには、.proファイルに書き込みます。
- INCLUDEPATH + = FMOD / inc
- LIBS + = -LFMOD / lib -lfmodex_vc
*このソースコードは、 ソースコードハイライターで強調表示されました。
基本的な機能セットから、FMOD :: Channel :: setVolume()およびsetPan()-チャンネル間の音量とバランスの設定(左-右)に注目する価値があります。
FMODのもう1つの利点:ドキュメントは非常に適切であり、ほとんどすべての場合の例があります。
根拠のないように、Qt + FMOD:
DamnSamplerの助けを借りてプログラムを作成しました。 これは非常に独特の楽器です-キーボードの各キーに音(または複数)がかかっているため、音は単純な場合もループする場合もあります。 ソースが添付されます。