AVFoundations フレームワークの AVAudioSession および AVAudioRecorder を使用して録音するときに、入力ゲインを調整しようとして問題が発生しました。float [0.0, 1.0] を受け入れるメソッド setInputGain を見つけました。これまでのところ、次のようになっています。
私のビューではDidLoad:
//Initialise the AVAudioSession, and share between different functions
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
[audioSession setInputGain:1.0 error:nil];
ただし、setInputGain メソッドは、現在録音されているものの上に追加のゲインを提供するだけなので、0.0 に設定してもミュートにはなりませんが、1.0 に設定すると入力が大きくなります。kAudioSessionProperty_InputGainScalar という AudioSession クラスで見つけたプロパティがありますが、それに値を書き込むことができないようです。少し助けが必要です、お願いします。
これは記録機能で、別のチュートリアルに従います。
//Creating a temporary place to record
tempRecFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"sound.caf"]];
recorder = [[AVAudioRecorder alloc] initWithURL:tempRecFile
settings:nil
error:nil];
[recorder setDelegate:self];
//Setting the input gain for the recording, then proceed to record
//[audioSession setInputGain:inputGainSlider.value error:nil];
[recorder prepareToRecord];
[recorder record];
[self.inputGainSlider setEnabled:NO];