0

ユーザー定義のテンポ (BPM) を維持する ActionScript 3 (Adobe AIR Android アプリとして) でドラム マシンを作成しようとしています。

プロジェクトを時間内に維持する方法を見つけるのに苦労しています。現時点では、5 つの異なるサウンドが 8 つの正方形の行で表され、ユーザーが各正方形をクリックしてそのサウンドをいつ再生するかを選択できるようにしました。 (これが理にかなっていることを願っています)。

現時点では、Timer を使用してプロジェクトを時間内に維持していますが、これは非常にラグがあり、一貫性がありません。

4

1 に答える 1

2

タイマーを使用することはこれには悪い考えです、そこで私はそれを言いました...

問題は、タイマーにドリフトがあり、数ミリ秒後に起動することです。500 ミリ秒ごとに実行されるタイマーがある簡単なテストを試してから、getTimer()カウントを比較します。私が実験で見つけたのは、タイマーが継続的にオフになっていて、自動修正されていないように見えることです。前回の実行からの差に基づいて発射時間を変更する自己修正タイマーを使用してみましたが、getTimer()それでも信頼できません。プロセッサの負荷が上がると、タイマーはとにかくオフになります。

これを処理する正しい方法は、サウンドのソースとして byteArray データを使用することです。サンプリング解像度の計算に基づいて、事前にストリームにデータを入力することができ、サウンドはほぼ確実に時間どおりに再生されます。私は自分でこれを行うものを作成するまでには行っていません。ただし、これに役立つライブラリがいくつかあります。

私の上位 2 つのデクリメント ライブラリは SiON と tonfall です

SiON のサンプルはhttp://wonderfl.net/c/qf4b
で、tonfall のサンプルはhttp://tonematrix.audiotool.com/で見ることができます。

私はAndroidでそれらを試していませんが、どちらもうまくいくと思います

于 2013-03-18T20:00:33.720 に答える