私のゲームのニーズには、2Dサウンドが必要です。つまり、エミッターは2D平面のどこかに配置する必要があります。どのように私はこの効果をJavascriptで達成するのですか?特別なサウンドフォーマットを使用する必要がありますか、またはスピーカーの音量を調節できますか?Javascriptの空間(2D)サウンド
私はスピーカーごとに2つの音量を持っていると思いますが、Javascriptで同じ音色に異なる音量を適用する方法はわかりません。
私のゲームのニーズには、2Dサウンドが必要です。つまり、エミッターは2D平面のどこかに配置する必要があります。どのように私はこの効果をJavascriptで達成するのですか?特別なサウンドフォーマットを使用する必要がありますか、またはスピーカーの音量を調節できますか?Javascriptの空間(2D)サウンド
私はスピーカーごとに2つの音量を持っていると思いますが、Javascriptで同じ音色に異なる音量を適用する方法はわかりません。
記事はhereを見つけることができます。私は幸いにも
以下、最も関連する部分を引用されるリンク切れを防止するために
、ウェブオーディオAPIが使用する非常に単純です内蔵のハードウェアアクセラレーションの位置オーディオ機能が付属しています。
核となるアイデアは、以下のコードで示されている:
PositionSample.prototype.changePosition = function(position) {
// Position coordinates are in normalized canvas coordinates
// with -0.5 < x, y < 0.5
if (position) {
if (!this.isPlaying) {
this.play();
}
var mul = 2;
var x = position.x/this.size.width;
var y = -position.y/this.size.height;
this.panner.setPosition(x * mul, y * mul, -0.5);
} else {
this.stop();
}
};
上記第一リンクにおける作業デモの完全なソースコードがhereを見出すことができます。
はOfftopic:私はここでカスタム答えとして手で引用された論文を書き換えると考えられ、それは記事が十分に明確でやって、二重の仕事よりも、すでに多くのであるように、比較的無意味に思えた無意味なようだ
互換性を保つために、フラッシュと上記のコードの組み合わせのみが、(Flashは特定のモバイルデバイスでは使用できないため)真のクロスブラウザ位置/パンニングオーディオソリューションを提供します。理想的には、仕様が変更される可能性は低いので、これを避けることができればオーディオAPIを使用しないようにアドバイスしてください。これにより、コードを壊す可能性があります(モバイルデバイスでも動作しない可能性は低いです)。より高度なWebオーディオAPIを使用する唯一のシナリオは、あなたのゲームで少なくとも6〜18ヶ月も働くことを期待している場合です(実装が使用可能なポイントにしっかりと収まるようになる可能性が高い時期です) 。
私たちはSoundManager2を職場で使用しましたが、これは本当に簡単なターンキーソリューションであり、十分に文書化されたAPIでした。
http://www.schillmania.com/projects/soundmanager2/
例:
soundManager.createSound({
id:'mySound1',
url:'../mpc/audio/CHINA_1.mp3'
});
soundManager.play('mySound1');
BSDライセンス:デモ含めて、まさにこの記述http://www.schillmania.com/projects/soundmanager2/license.txt
「
これを読む:[Web Audio API](http://www.w3.org/TR/webaudio/) –
@ imeVidas、確かに。 – corazza