スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 表示の次は音声出力 | トップページ | 後は、真面目に作るだけ »

音声出力は、ほぼ同じ

今は、iOS版Nostalgic UFO Battlerの開発中で、表示系は何とかなりそうなので、次に、音声出力系を確認していたのだが、OS X版で使用したAPIが、ほぼ、そのまま使える感じだったので、今日の時点で、音声出力も可能になった。ただし、実機確認は、まだしていない。

iOS用の音声再生系APIは色々とあるのだが、作者的に必要な機能は、メモリ上にあるPCMデータを、リアルタイムに補充しつつ再生する機能だ。

で、OS X用のネイティブ版Mirror-DTCクライアント開発時に、初めて音声出力機能を実装した時には、上記を実現する為に、少し苦労した訳なのだが、iOSでも、ほぼ同じAPIが使えたので、今回は、苦労する事は無かった。

と、いうか、同じAPIが使えそうだったので、OS X版のソースコードから音声用のクラスファイルをコピーしてきて、テスト用にMMLを記述して鳴らしてみた所、普通に鳴った訳だ。

つまり、音声再生用には、最下層以外にも、データのキューイング機能なんかも必要になるし、それらは別スレッドで動作させるので、マルチスレッド関連の処理機能も必要になるのだが、OS X用に記述してあったそれらの機能は、ほんの少しの修正で、そのまま動作した。

なので、今日の時点で、既に、MMLを使ってメロディーを奏でさせる事も出来る様になっているのだが、前述の様に、若干の変更は必要になった。

その一つ目は、OS Xでは、AudioUnit.frameworkというのを追加していたのだが、iOSでは、AudioToolbox.frameworkというのを追加する必要があった、という事だ。

二つ目として、音声出力デバイス検索時に、kAudioUnitSubType_RemoteIOというのを指定する必要があった、という事だ。

三つ目としては、OS X版では、音声データが1ch、つまりモノラル再生時にも、左右のスピーカーの両方から同じ音声が出力されたので、再生は1chで行っていたのだが、iOSシミュレータでは、左側のスピーカーからしか音が出なかった。

なので、iOS版では、モノラルデータ時にも、自前でステレオデータに変換して、API的にはステレオ音声として再生させる格好に変更した。

と、いう事で、音声出力用のAPIに関しては、OS XとiOSで上記程度の違いしか無かったので、作者的には楽が出来た訳なのだが、OS X用に音声出力処理を初めて記述した時には苦労した訳なので、初めてiOSで音声出力を行う場合には、苦労するかもしれない。

ちなみに、音声出力の確認は比較的簡単に出来たので、今日はタッチイベントの受け取りだとか、設定保存処理に必要になるAPIについても調べたのだが、問題なく使えそうだ。

もっとも、今日の時点では、確認はiOSシミュレータ上で行っているので、明日は、作者的には唯一のiOSデバイスである所のiPad Airを使って実機確認を行ってみようと思っている。

実機確認は、昔は色々と大変だった様なのだが、その後、楽になって、Appleの有料デベロッパー登録を行っていなくても、出来る様になった筈だ。

なので、そんなに面倒ではないことを祈りたいところではあるのだが、相手はAppleなので、Androidほど、楽に実機確認はさせてくれない様な気がしている今日この頃だ。

= この記事に関連する公開中ソフト =

ノスタルジックUFOバトラー

UfoBattler.jpg

(2016/10/25追記)

« 表示の次は音声出力 | トップページ | 後は、真面目に作るだけ »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63684357

この記事へのトラックバック一覧です: 音声出力は、ほぼ同じ:

« 表示の次は音声出力 | トップページ | 後は、真面目に作るだけ »

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google