MGL::Audio
Contents
MGL::Audio#
概要#
MGL::Audioで定義されているトップレベルのAPIです。
関数#
種類 |
名前 |
内容 |
---|---|---|
定数式 |
ボイスキーの生成 |
|
関数 |
ボイスの読み込み |
|
関数 |
ボイスの破棄 |
|
関数 |
マスター音量の設定 |
|
関数 |
マスター音量の取得 |
|
関数 |
ボイスのボリュームを設定 |
|
関数 |
ボイスのボリュームを取得 |
MakeVoiceKey#
ボイスキーの生成
宣言#
namespace MGL::Audio
{
constexpr VoiceKey MakeVoiceKey(
const char *key,
uint32_t seed = kDefaultVoiceKeySeed) noexcept;
}
引数#
- const char *key
ボイスキーの生成に使用する文字列
- uint32_t seed
ボイスキーのハッシュ生成に使用するシード値。省略時はMGL::Audio::kDefaultVoiceKeySeed
戻り値#
- MGL::Audio::VoiceKey
生成されたボイスキー
説明#
文字列からボイスキーを生成するための定数式です。
ボイスキーはオーディオボイスにアクセスするために使用する一意のキーです。オーディオボイス読み込み時に指定し、以降はそのボイスキーを経由してオーディオボイスにアクセスします。
キーの生成にはMGL::Hash::FNV1aが使用されます。引数のseed
に異なる値を指定すると生成される値も変化するため、衝突などの問題が生じた場合はこの値を指定することで解決される場合があります。引数を省略した場合はMGL::Audio::kDefaultVoiceKeySeedが指定されます。
関連#
LoadVoice#
ボイスの読み込み
宣言#
namespace MGL::Audio
{
template <class VoiceClass, class... Args>
std::weak_ptr<VoiceClass> LoadVoice(Args... args) noexcept;
}
引数#
- VoiceClass
追加するオーディオボイスのクラス名
- Args... args
オーディオボイスのコンストラクタに渡す引数リスト
戻り値#
- std::weak_ptr<VoiceClass>
正常に処理が完了した場合はそのオーディオボイスクラスの弱参照ポインタ、失敗時には空の弱参照ポインタ
説明#
オーディオボイスの生成と読み込み要求を行うためのテンプレート関数です。
テンプレート引数には生成するオーディオボイスクラスを指定します。
関数の引数はそのままコンストラクタへと渡されます。必要な引数は生成するオーディオボイスクラスに依存しますが、通常はここでボイスキーや読み込むファイルのパスなどを指定します。
処理に成功した場合は生成したオーディオボイスクラスの弱参照ポインタを返します。失敗時の戻り値は空の弱参照ポインタとなります。
この関数は生成したクラスに対して読み込み要求を行いますが、その読み込みが同期的に行われるかは生成するオーディオボイスに依存します。この関数が成功していても、読み込みに成功しているとは限らない点にご注意ください。
オーディオボイスの読み込みの詳細についてはオーディオボイスの登録を参照してください。
利用例#
// タイトル画面のBGMを読み込むと仮定して、そのボイスを表すキーを生成
constexpr const auto kTitleBGM = MGL::Audio::MakeVoiceKey("TitleBGM");
// MGL::Audio::WaveVoice で タイトル画面のBGMを読み込む
// ( WaveVoice はMGLの標準構成に含まれるWave形式の音声ファイルを読み込むオーディオボイスクラス)
auto voice = MGL::Audio::LoadVoice<MGL::Audio::WaveVoice>(kTitleBGM, "$resource/bgm_title.wav");
// 失敗している場合は空の弱参照ポインタとなる
if (voice.expired())
{
MGL_TRACE("読み込み失敗");
}
関連#
UnloadVoice#
ボイスの破棄
宣言#
namespace MGL::Audio
{
inline bool UnloadVoice(VoiceKey key) noexcept;
}
引数#
- MGL::Audio::VoiceKey key
破棄するボイスのキー
戻り値#
- bool
成功時に
true
、失敗時にfalse
説明#
読み込み済みのオーディオボイスを破棄します。
破棄したボイスは、それ以降はボイスキーによるアクセスが行えなくなります。オーディオボイスは共有ポインタで管理されているため、実際にメモリから解放されるのは全てのボイスの利用を終えた後になります。
利用例#
// タイトル画面のBGMを読み込むと仮定して、そのボイスを表すキーを生成
constexpr const auto kTitleBGM = MGL::Audio::MakeVoiceKey("TitleBGM");
// タイトル画面用BGMのボイスを破棄
if (MGL::Audio::Unload(kTitleBGM))
{
MGL_TRACE("破棄成功");
}
else
{
MGL_TRACE("破棄失敗"); // 読み込まれていないボイスキーを指定した場合などに到達
}
関連#
SetMasterVolume#
マスター音量の設定
宣言#
namespace MGL::Audio
{
inline void SetMasterVolume(float volume) noexcept;
}
引数#
- float volume
設定するマスター音量
説明#
マスター音量を設定します。
設定値は各々の音量に乗算されるスケール値であり、デフォルトでは1.0f
です。
利用例#
// マスター音量を0.5倍(50%)に設定
MGL::Audio::SetMasterVolume(0.5f);
関連#
GetMasterVolume#
マスター音量の取得
宣言#
namespace MGL::Audio
{
[[nodiscard]] inline float GetMasterVolume() noexcept;
}
戻り値#
- float
現在のマスター音量
説明#
現在のマスター音量を取得します。
マスター音量は各々の音量に乗算されるスケール値であり、デフォルトでは1.0f
です。
利用例#
auto masterVolume = MGL::Audio::GetMasterVolume();
MGL_TRACE("現在のマスター音量: %f", masterVolume);
関連#
SetVoiceVolume#
ボイスの音量を設定
宣言#
namespace MGL::Audio
{
inline void SetVoiceVolume(VoiceKey voiceKey, float volume) noexcept;
}
引数#
- MGL::Audio::VoiceKey voiceKey
音量を設定するボイスのキー
- float volume
設定する音量
説明#
指定したボイスの音量を設定します。
ここで設定した音量は、そのボイスを再生する際に乗算されるスケール値です。デフォルトの音量は1.0f
です。
利用例#
// タイトル画面のBGMを読み込むと仮定して、そのボイスを表すキーを生成
constexpr const auto kTitleBGM = MGL::Audio::MakeVoiceKey("TitleBGM");
// タイトル画面のBGMの音量を0.5倍(50%)に設定
MGL::Audio::SetVoiceVolume(kTitleBGM, 0.5f);
関連#
GetVoiceVolume#
ボイスの音量を取得
宣言#
namespace MGL::Audio
{
[[nodiscard]] inline float GetVoiceVolume(VoiceKey voiceKey) noexcept;
}
引数#
- MGL::Audio::VoiceKey voiceKey
音量を取得するボイスのキー
戻り値#
- float
ボイスの音量
説明#
指定したボイスの音量を取得します。
ボイスの音量は、そのボイスを再生する際に乗算されるスケール値です。デフォルトの音量は1.0f
です。
指定したボイスキーに対応するボイスが存在しない場合は0.0f
が返ります。
利用例#
// タイトル画面のBGMを読み込むと仮定して、そのボイスを表すキーを生成
constexpr const auto kTitleBGM = MGL::Audio::MakeVoiceKey("TitleBGM");
// タイトル画面のBGMの音量を0.5倍(50%)に設定
auto voiceVolume = MGL::Audio::GetVoiceVolume(kTitleBGM);
MGL_TRACE("ボイス音量: %f", voiceVolume);