4

AudioKitを使用してマイク入力を収集し、同時にMIKMIDIを使用してステレオ スピーカーを介して MIDI ファイルからノートを再生することは可能ですか?

それぞれを単独でうまく実行できることがわかりました。AudioKit からマイク周波数を収集し、MIKMIDI を使用して MIDI ファイルからノートを再生できますが、それらを一緒に使用すると、MIDI ノートは「内部ハードウェア スピーカー」で再生されます (実際の名前はよくわかりません? DOS ゲーム)、ステレオ スピーカーではなく、音の振幅が極端に小さい。

AudioKitの使い方

これは文字通り、マイクの周波数を取得するために使用する唯一のコードです。その頻度データを使用する他のコードがありますが、それは無関係です。ポイントは、このコードをコメントアウトすると、MIKMIDI 部分が期待どおりに機能し、ステレオ スピーカーから再生されることです。

- (void)setupAudio
{
    AKSettings.audioInputEnabled = true;

    self.microphone = [[AKMicrophone alloc] init];
    self.tracker = [[AKFrequencyTracker alloc] init:self.microphone hopSize:0 peakCount:0];
    self.silence = [[AKBooster alloc] init:self.tracker gain:0];

    [AudioKit setOutput:self.silence];
    [AudioKit start];
}

MIKMIDIの使い方

- (void)playMidi:(NSUInteger)note withDuration:(float)duration
{
    if ( [DEFAULTS boolForKey:kPreferenceMIDIPlaybackEnabled] )
    {
        NSDate * startDate = [NSDate date];
        NSDate * endDate = [startDate dateByAddingTimeInterval:duration];

        MIKMIDINoteOnCommand * noteOn = [MIKMIDINoteOnCommand noteOnCommandWithNote:note velocity:127 channel:0 timestamp:startDate];
        MIKMIDINoteOffCommand * noteOff = [MIKMIDINoteOffCommand noteOffCommandWithNote:note velocity:0 channel:0 timestamp:endDate];

        [self.synthesizer handleMIDIMessages:@[noteOn, noteOff]];
    }
}
4

0 に答える 0