酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

AVAudioPlayerを使って再生する際の音量を取得/設定する

AVAudioPlayerクラスを使用して音を鳴らす方法は「AVaudioPlayerで音を鳴らす」でご紹介しています。

鳴らす処理の延長線上となる音量の取得/設定の方法についてご紹介したいと思います。

// 楽曲ファイルのパスからAudioPlayerオブジェクトを作成
NSString* path = path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
NSURL* url = [NSURL fileURLWithPath:path];
AVAudioPlayer* player= [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

// AVAudioPlayerオブジェクトのボリュームは0.0〜1.0の間で指定する
player.volume *= 0.5;

蛇足1

AudioServicesCreateSystemSoundID/AudioServicesPlaySystemSoundで音を鳴らすときの、音量調整の仕方が分かりません。非公開APIを使用すれば調整出来るとのことですが、基本的には音量調整はできないと考えた方が良さそうです。

蛇足2

使い道を把握していないので蛇足ですが、MPMusicPlayerControllerクラスの音量を取得する場合のコードをご紹介します。

MediaPlayer.frameworkをリンクするとiPodライブラリを参照するMPMusicPlayerControllerクラスが使用できるようになります。

MPMusicPlayerController *iPod = [MPMusicPlayerController iPodMusicPlayer]; 
float volumeLevel1 = iPod.volume;
    
MPMusicPlayerController *appMP = [MPMusicPlayerController applicationMusicPlayer];
float volumeLevel2 = appMP.volume;

MPMusicPlayerController#iPodMusicPlayerメソッドで取得したオブジェクトのvolumeプロパティはiPodライブラリから選択した楽曲やビデオの生成時の音量だとして、MPMusicPlayerController#applicationMusicPlayerメソッドで取得した音量は何の音量なのかよくわかりません。