Yamasuke 日記

Yamasukeの日記です。コンピュータソフトウェアに関する記事を投稿します。明日から試してみたくなるような+1の記事を心がけます。

SoundJSのAPI

前回に引き続き SoundJSについて調べてみる。

SoundJSのAPIについて

http://createjs.com/Docs/SoundJS/modules/SoundJS.html

Soundクラスをメインとして使用。 このクラスでは、

  • Pluginの使用
  • サウンドファイルの登録
  • サウンドの再生、作成
    (作成?エフェクトをかけられるということ?)
  • マスタボリュームの変更、ミュート、停止などのサウンド制御

が実行可能。

サウンド制御 * サウンドの一時停止、再開、シーク、停止 * 音量制御、ミュート、パン( スピーカーの左右どちらにずらすかということの模様 )

Soundクラスの使用例

 createjs.Sound.alternateExtensions = ["mp3"];
 createjs.Sound.on("fileload", this.loadHandler, this);
 createjs.Sound.registerSound("path/to/mySound.ogg", "sound");
 function loadHandler(event) {
     // This is fired for each sound that is registered.
     var instance = createjs.Sound.play("sound");  // play using id.  Could also use full sourcepath or event.src.
     instance.on("complete", this.handleComplete, this);
     instance.volume = 0.5;
 }

使用するブラウザがサポートする機能にあわせて自動的に、プラグイン(WebAudio, HTMLAudoiElemet, Flash)を切り替えてくれる。開発者は意識せずに使用可能。

WebAudioのようにフィルタかけたりとか、複数音声のフェードは出来るのか。。。? http://www.html5rocks.com/ja/tutorials/webaudio/intro/

API一覧

Soundクラス

http://createjs.com/Docs/SoundJS/classes/Sound.html

API一覧
addEventListener createInstance dispatchEvent
getCapabilities getCapability getMute
getVolume hasEventListener initializeDefaultPlugins
isReady loadComplete off
on play registerManifest|registerPlugins
registerSound registerSounds removeAllEventListeners
removeAllSounds removeEventListener removeSound
removeSounds setMute setVolume
stop toString willTrigger

基本的な操作が含まれている。

これだけみると、フィルタとかはかけられなさそう。 基本的な機能をラッピングして、ブラウザ差分(動作させるブラウザがサポートしているサウンド制御機能)を意識せずに使えますっというのが、メリットぽい。

WebFitlerのプラグインにはフィルタとか含まれるのか?

プラグインの使い方。registerPluginsを使用。

createjs.FlashAudioPlugin.swfPath = "../src/soundjs/flashaudio/";
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin, createjs.FlashAudioPlugin]);

雰囲気的にプラグインを読み込むことで拡張が可能な感じ。

WebAudio Plugin

http://createjs.com/Docs/SoundJS/classes/WebAudioPlugin.html

API一覧
create getVolume isPreloadComplete
isPreloadStarted isSupported playEmptySound
preload register removeAllSounds
removeSound setMute setVolume

WebAudio的な機能はなし。 あくまでも再生制御がメインの模様。

サポートしている音声ファイル形式

※SoundJSでは拡張子で、ブラウザではコーデックについて言及されていて、混在しているのでわかりづらい。。。

https://github.com/CreateJS/SoundJS/blob/master/src/soundjs/Sound.js#L333

実装によると

s.SUPPORTED_EXTENSIONS = ["mp3", "ogg", "mpeg", "wav", "m4a", "mp4", "aiff", "wma", "mid"];

mp3, ogg, mpeg, wav, m4a, mp4, aiff, wma, mid らしい。 恐らくファイルの拡張子

一方、< audio >タグで再生できるのは mp3, ogg, wav, aac, WebM, ogg plus, WebM plus こちらは拡張子ではなくエンコード形式。

ライブラリ側とブラウザ側で対応がちぐはぐな感じとなっている。 ※とは言え、ブラウザでサポートしていないものが再生出来るのか?まさかライブラリ側でソフトウェアデコードしてる??

mp3, oggを使っておけば安心か。。。

引き続きサンプルコードを見てみる。