あー、そうなんだ!
Adobe Edge AnimateとWeb Audio APIを使って、いくつかのプロトタイププロジェクトを作っていたんですが、そのとき偶然発見しました。
Web Audio APIを使ってメトロノームを鳴らすプロジェクトを作っていた時に、1から作るのはめんどくさかったので、前に作ったフェードアウトさせるプロジェクトからロード部分だけ拝借したんですが、そのとき、タイムライン上にバッファを再生するコードが残っていたんです。
それに気づかないで、普通にタップからsource.start(0)させたんですが、途中で音が二重になって聞こえたんです。
それでよく調べたら、タップなしでタイムライン上、つまりタイマーイベントで発火する関数内に記述したstart()が鳴っていたんです!
要するに、一回タップありでstart()させたら、その後はタップなしでもstart()させられるみたいなんですよ!
…Web Audio APIに興味ない人には「なにいってんだこいつ」って感じですよねw
ずっとWeb Audio APIでも、タッチが無いと音が鳴らせないと思い込んでいたんですが、実は最初の一回だけだったんですw
テストのために書いたコードでは最初のタッチが無かったので、当然、タイムライン上のstart()が鳴らず「あ、ダメなのか…」と思い込んでいました。
ごめんなさい、以前書いたまとめ記事は間違いだったようです。(訂正しときました)
でも、二回目以降が自由に鳴らせるなら、これもうWeb Audio API最強かも。
ずっと、別の方法で実装を考えていたドラムマシンアプリも簡単に実現可能ですよ!
だってスタートボタン押す時に一回鳴らせば、あとは自由にスケジュールできるんですから。
(長いサンプルをループさせる方法とか考えていたんです)
なんだか、目の前が一気に開けた感じです。
iOSでも本格的な音楽アプリ作れるかも。
というのも、実はHTML5でTRシリーズっぽいドラムマシンを再現したアプリはすでにあるんです。
http://html5drummachine.com/
でもこれ、iOSで開こうとすると、アラートがでて表示できないんですよね。
だから「あー、iOSじゃ無理なのかなぁ?」と思っていたんですが、普通に作れそうですよ。