dポイントプレゼントキャンペーン実施中!

いつも勉強させていただいております。

iPhoneアプリを作成する学習をすすめていますが、悩むところがでてきたので相談させて下さい。

悩んでいるのは0.1sec毎に音を鳴らす処理です。
フリーの音源を拾って来てm4aで組み込み、音を鳴らす事には成功しているのですが、一回音を鳴らす処理の負荷が高いのか、再生時間が0.1secより短くても、0.1sec毎にその音を鳴らすことに失敗してしまいます。音を短くカットするのにはitunesを使いました。

処理としては、0.1秒毎にコールする関数の中でその音を鳴らしていますが、3回連続で慣らそうとしても、1回しか鳴りません…。音源が利用できれば一番よいのですが、なんとかして「ピ」という音を出すのを実現したいです。

音を鳴らす以下関数の前後にNSLogを出力して、そのログが3回(0.3sec)全てで出ているにもかかわらず、音がならないということも確認済みです。

AudioServicesPlaySystemSound

こういう場合はどのように対処すればよいのか、アドバイスいただける方いらっしゃれば、お願いします。

A 回答 (2件)

>ただ、どうしてSystemSoundIDでは連続再生ができないのかが不明です…。


結論は、単純にそういう機能を付けなかったから。
背景には「一般的なアプリに、連続再生機能は不要」という思想があるからでしょう。

SystemSoundやAVAudioPlayerは、
とにかく簡単に使えるように機能を削り、複雑な動きを隠蔽しているので、
それぞれできないことはたくさんあります。
https://developer.apple.com/jp/devcenter/ios/lib …
    • good
    • 0
この回答へのお礼

onosuke様

ご回答ありがとうございます。背景があるのであろうということで了解しました。
そこらへんも分からないと、今回のように戸惑ってしまいそうですね。教えていただいた資料など、アップルのものを参考にしてこれから開発したいと思います。

ありがとうございました!

お礼日時:2013/10/15 22:09

iPhoneに限った話ではありませんが…



一番簡単なのは、
例えば5秒間処理を続ける場合、
0.1秒毎に音が鳴る5秒の曲を無音状態も含めて作成してください。

さらにiOSでループが必要なら、
AVAudioPlayer Classを使うのが簡単だと
Appleの中の人が言っています。
https://www.google.co.jp/search?q=ios+AVAudioPla …

iOSで、もっと楽器を鳴らすように自由な制御を行う場合
OpenALやAudioQueue Classが必要です。
ただし、プログラミングの難易度は格段に上昇します。
https://www.google.co.jp/search?q=ios+audio+queue
    • good
    • 0
この回答へのお礼

onosuke様

ご回答ありがとうございます。AVAudioPlayerを使う事で実現することができました。
音を再生する方法は一つだけだと思っていたので盲点でした。

ただ、どうしてSystemSoundIDでは連続再生ができないのかが不明です…。あんまり深く考えても仕方が無いのですが、もしかしたらご存知の方がいらっしゃるかもしれないので、もう少し質問を開かせていただきます。

お礼日時:2013/09/28 19:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!