1

私はiPhoneゲームを作っています。現在SFXにopenALを使用していますが、ゲームを10メガ未満に保ちたいと考えています。

iphone(少なくともopenALを介して)は、非圧縮PCMのみをネイティブに再生します。

ある種の優れた圧縮形式(mp3、aac、oggなど)からゲームに音楽を取り込む最も簡単な方法は何でしょうか?

ある種のデコーダーAPIはありますか?openALを使用する必要がありますか?

編集:

OK、いくつかの計算を行いました。単純な64kb / sの圧縮スキームですべてをうまく適合させることができるはずなので、圧縮ファイル(できればメモリから)を生のpcmにデコードする最も簡単な方法を探しています。 openalで使用するためのメモリ内。ストリーミングデコーダーも必要になります。メモリからストリームをデコードできる必要はありませんが、それは素晴らしいことです。トラックにループを入れたいので、デコーダーに「ランダムアクセス」があれば、トラック内を簡単に移動できるのが理想的です。

4

3 に答える 3

2

最も圧縮された方法は、トラッカーまたはMIDIです。これにより、サウンドサンプルではなく、音楽のスコアのみを保存できます。

多分これはあなたが探しているものです。

于 2010-02-02T05:06:39.593 に答える
2

もう1つのオプションは、ゲームでオープンソースのシンセ/サンプラーをコンパイルし、MIDIプレーヤーをシンセサンプル/サウンドに通信することです。これにより、非常に優れた音楽が得られます(私はソフトウェアエンジニアリングの学生であり、ほとんど音楽を勉強しています(15年間ピアノ/シンセなど)、これはもう少し複雑かもしれませんが、シンセサウンドをトリガーするための軽量のMIDIトラックを使用して、シンセで再生される素晴らしいサウンドを提供できます。

幸運を祈ります。これは実際には本当に素晴らしいことだと思います(もう少し複雑かもしれません)。

于 2010-02-05T11:20:10.487 に答える
0

わかりました。すべて設定しました。

十分に文書化されているのはiPhoneSDKの一部であるという理由だけで、音楽ストリームにオーディオキューを使用しました。

http://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AboutAudioQueues/AboutAudioQueues.html#//apple_ref/doc/uid/TP40005343-CH5-SW1

一般的な説明と

http://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQPlayback/PlayingAudio.html#//apple_ref/doc/uid/TP40005343-CH3-SW1

素晴らしい例として(少しバグがあります)

これはopenALと一緒にうまく機能するようです。また、サンプルレベルの精度でストリームをランダムにジャンプできるようになるようです。

残りの唯一のことは、メモリからロードできるように取得することです。これは、次を置き換えることによって行われます。

AudioFileOpenURL

次の場所に電話してください。

AudioFileOpenWithCallbacks

残念ながら、オーディオファイルサービスのドキュメントは...控えめに言っても...貧弱です。

自己責任で読んでください。その後、不可解に機能しなくなります。http: //developer.apple.com/iphone/library/qa/qa2009/qa1676.html

ここで、コールバックは実際にはオプションであり、書き込みを提供することで、MP4では実行できない書き込み用のファイルを開くように指示しているため、writeおよびsetSizeコールバックにはNULLを渡すだけです。

また、ここでMIDIを推奨する2つの答えは、本当に最小のサイズが必要な場合に、ほぼ確実に正しい方法であると言いたいです。

残念ながら、私たちは怠惰で、すぐに何かが欲しかったのですが、適度に圧縮されたオーディオに収まることが明らかになりました。また、パフォーマンスへの影響についても少し心配していましたが(midiの場合はどうなるかわかりません)、ここでの圧縮オーディオのこの方法では、ハードウェアデコードを使用しているようです。

従来の圧縮オーディオルートを利用したい場合、これが役立つことを願っています。オープンでデータを使用したい場合は、オーディオコンバータサービスを試すこともできます。残念ながら、このAPIは、恥ずかしいほど文書化されていないリファレンスマニュアルにも該当します。それが機能するかどうかさえわかりませんし、機能する場合は、ハードウェアデコーダーを使用しているかどうかもわかりません。

于 2010-02-08T05:09:53.683 に答える