0

私はCocos2dを使用しています。このCocosDentionには、必要なプロパティがありません。たぶん誰もがiOSの現在の段階で使用しているすべてのサウンドを録音してファイルに保存する方法を知っています。DJアプリはどうですか?彼らは異なる曲からの音楽を保持し、それらを互いに配置します。

たとえば、ゲームではバックグラウンドミュージックを再生します。プレイヤーがジャンプするとき、cocosdenchionはジャンプ音を再生できます。バックグラウンドミュージックと他の音楽エフェクトをリアルタイムで組み合わせた新しいトラックを作成して保存できますか?

マイクデバイスの録音についてのみAVAudioRecorderを理解する方法。これに使用できるもの– AudioToolbox?OpenAL?CoreAudio?他のフレームワーク?

FMODを使うと思う前に、ライセンスは500ドルで、私のプロジェクトが私にいくらかのマッチマネーを与えるかどうかはわかりません。これで私は無料のメソッドまたはフレームワークを見つけます。ありがとう。

4

1 に答える 1

1

私はいくつかの解決策を見つけました。BASSiOSライブラリを使用しています。1マイナス–それは支払われます。そして2番目のマイナス–それはC++で書かれています。そして、iOSの例ではありません。しかし、フォーラムで良い助けを持ってください。

    //BASS initialisation. use BASS_free for free resources
    BASS_Init(-1,44100,0,NULL,NULL);

    //create mixer
    BASS_GetInfo(&info); // get output device info. needet to get freq
    mixer=BASS_Mixer_StreamCreate(info.freq, 2, 0); // create a stereo mixer with the same sample rate
NSString *shortSound = [[NSBundle mainBundle] pathForResource:@"piano2" ofType:@"wav"];
    //create channel
    chan2 = BASS_StreamCreateFile(FALSE, [shortSound cStringUsingEncoding:NSUTF8StringEncoding], 0, 0, BASS_STREAM_DECODE);

    //create channel from file use absolute path url
    NSString *soundFileName = [[NSBundle mainBundle] pathForResource:@"ff13" ofType:@"mp3"];
    chan = BASS_StreamCreateFile(FALSE, [soundFileName cStringUsingEncoding:NSUTF8StringEncoding], 0, 0, BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT|BASS_SAMPLE_LOOP);

    //add channel into mixer
    BASS_Mixer_StreamAddChannel(mixer, chan, 0);

    //point the dirrectory and file name for our new file saved mixer data
    NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filename = [documentDir stringByAppendingString:@"/file.mp3"];

    //start encode mixer to file when view did load. With parameters for encode.
    BASS_Encode_StartCAFile(mixer, 'm4af', 'alac', 0, 0, [filename cStringUsingEncoding:NSUTF8StringEncoding]);

    //mixer add any delay for play added channel. Fix it using this option
    BASS_ChannelSetAttribute(mixer, BASS_ATTRIB_NOBUFFER, 1);

    BASS_ChannelPlay(mixer, 0); // start mixer

ここでは、すべてのサウンドとマイクの音声を録音するためにミキサーを使用しました。

于 2012-09-15T16:43:24.467 に答える