shockwave for Audio |
このページでは以下のことを解説しています
[shockwave for Audio]
それはいったい何なのか?
どうやって作成するのか
サポートされた新しいコマンド一覧
Directorのネックである音データをストリーミングして提供する方法について説明します。待っている間に音が流れるので、タイムラグを感じさせません。 |
ねぇねぇ豪さん、またまた最近はshockwave Audioなんてものが出てきましたね。それっていったい何なんですか?
ほほう、なかなか情報通ですね。プラグインがバージョンアップしたことによって、この機能が加わったのですが、簡単にいうと、ネット上で音楽を流すということができるようになったんですよ。
あれ、それなら今までもRealAudioとかあったでしょ。それにMIDIの再生もできるようになったし...。今さらって感じだわ。
ううん、一見したところそう見えるかもしれないね。でも、それぞれ一長一短があるんだよ。たとえばRealAudioの場合は特別なサーバーソフトが必要だし(ちょっと高いかな?)、MIDIの場合はMIDIの再生しかできないでしょ。でもshockwave Audioはサーバーソフトを必要とせずに、今までと全く同じように作ることができるんですよ。
もっと詳しく説明して下さい。
じゃ、もう少し専門的なスペックについて述べてみましょう。
・圧縮した音声データををリアルタイムで送受信する
・8kpsや16kpsのような低い送信速度でも高音質の音声を送信する
・最高176分の1の圧縮率(元になるデータによって左右されます)
・特別なサーバーや、サーバーソフトを必要とせずに、オーディオデータの送信が可能
・他のアプリケーションなどを必要とせず、プラグインのみで音声を再生することが可能
・Directorなどと組み合わせることにより、インターフェイスの作成も容易
ってなとこですかねぇ。
ふぅん、なんだかすごそうだわ。たとえばどんなページがあるの?
じゃちょっと紹介してみましょうか。
このページは北九州市が海外へのPRのために公開しているページですが、速度も速く、とても勉強になるページですよ。
じゃどうやってつくればいいのかな?教えて下さい!
はい。必要な物はDirectorのver5とSoundEdit 16 ver2、そしてShockwave for AudioのDeveloper Tool Kitです。あ、これはプラグインと間違わないようにして下さいね。アドレスはこちらからダウンロードできますよ。
ううむ、ダウンロードして解凍すると、山ほどファイルができてしまいますね。いったい何をどこにいれればいいのですか?
じゃひとつひとつ説明していきましょう。
Director 5のXtraフォルダにいれるモノサウンドキャストの圧縮のために...
Macintoish : SWA Compression Xtra
Windows : SWACmpr.x32圧縮設定のために...
Macintosh : SWA setting (DIR) Xtra
Windows : (SWAsttng.x32)swaファイルの再生のために...
Macintosh : SWA Streaming Xtra
Windows : (SWAStrm.x32)swaファイルの解凍のために...
Macintosh : SWA Decompression Xtra
Windows : (SWADCmpr.x32)SoundEdit 16のXtraにいれるモノ
圧縮ファイルの作成のために...
Macintosh : SWA Export Xtra
Windows版はまだありません。swa形式のファイルの書き出しのために...
Macintosh : SWA Settings (SE) Xtra
Windows版はまだありません。
数多くのXtraファイルが存在するので注意して下さい。
...ふぅ、なんとかいれましたよ。これで準備はO.K.ですね。
じゃ、いよいよ公開するためにサウンドを用意してみましょうか。ネット上で公開するためにはサウンドファイルの形式を変更する必要があります。またそのデータをDirectorのムービーの中に組み込むのか、外部ファイルとして扱うのかによって方法も変わってきます。どちらがいいのかは一概に言えませんが、音質とダウンロード時間の双方を考慮して決定しましょう。
はぁい。
では、Directorムービー内に組み込む場合から話をしていきましょうか。内部キャストとしてのサウンドデータの圧縮設定をすることができます。 どんな風に行うのかを簡単に説明してみましょう。
1.Director 5の<エクストラ>メニューから<shockwave for Audio設定>を設定します。
2. bit rate (kbps) を選択します。これはサウンドのクオリティを決定します。例えば 144 Kbpsを選択すると大変高音質の音を提供できますが、ダウンロードに時間がかかります。クオリティを優先するか、送信速度を優先するかをここで決定します(注:しかし日本の回線状況を考えてみるとできるだけ低いビットレートにしておくべきです。32kbpsか24kbpsが限界でしょう)。
3.もしステレオからモノラルに変換したいならば、この時点で<モノラルに変換>のチェックボックスを選択しておきます。(もし32kps以下に設定しているならば、自動的にモノラルに変換されます)
4.もしよければO.K.を選択します。
5.Directorムービーを圧縮するには<エクストラ>メニューからAfterburnerを選択し、実行します。その際にサウンドが圧縮されます。
じゃ、内部に組み込むときには、とくに難しいコマンドとかを覚える必要がないということですか?
ううむ、そういうことになりますかねぇ。でも、外部キャストを使用するときにはちょっと難しくなりますね。ここにサンプルがありますので、これを試してみてくれますか?ボタンをクリックして5秒後から音が聞こえるはずなんですが...
これは豪さんの作った曲ですか?確かに連続して音楽が聞こえますが....
はい、これは私が作曲して、演奏したものです。256Kという巨大なファイルですが、少しずつダウンロードしながら再生しています。細い回線の方ではとぎれとぎれに聞こえたのではないでしょうか。
それにしてもすごい技術ですね。これは。私もやってみたいので、教えて下さいよ。
はいはい、じゃ説明をしていきましょう。 手順は以下の通りです
1.SoundEdit 16 Version 2を起動し、圧縮したいファイルを開きます
2.<エクストラ>メニューから<shockwave for Audio設定>を選択し、圧縮オプションの設定を行います。
3.bit rate(kps)を選択します。(注意点は先ほどと同じです)
4.ステレオからモノラルに変換したいならば、この時点で<モノラルに変換>をチェックしておきます。(もし32kps以下に設定しているならば、自動的にモノラルに変換されます)
5.もしよければO.K.を選択します。
6.<ファイル>メニューから<書き出し>を選択します。ファイル保存のダイアログボックスがでますので、<データ形式>を<SWA file>に指定します。
7.拡張子を.swaにして、名前を付け保存します。通常のWeb用データと同様に、DOS形式の命名法に従っておくと安全です。
8.できあがったSWAファイルのアイコンが真っ白になりますが、異常ではありませんので安心して下さい。
ふふん、なるほど。簡単に言うと、ソフトで形式を変換してやればいいのですね。
その時には以下の点に注意しておくといいですね。
・22.050kHzか44.100kHzのサイズで作業を行って下さい(22.050kHzがお奨めです)。8ビットや11kHzの低いビットのデータでもこのレートに変換して下さい。
・サウンドを圧縮する時にEQ(イコライザー)を使用することで、サウンドレートの圧縮の際に生じるノイズなどを削減することができます。たとえば22.050kHzの時には4kHzや8kHzの音域を操作することによりノイズが削減されます。
・swaファイルに書き出すときにはSoundEdit 16のレベルパレットを閉じておきましょう。
・ステレオソースファイルは2つのチャンネルを使用しますが、それぞれ独立して転送されますので、両チャネルの品質が一定であるとは限りません。特別な必要のないとき以外はモノラルを使用されることをお奨めします(日本の回線状況を考えると、モノラルが無難です)。
じゃ、著作権の切れたクラシックのCDとかだと使いたい放題ですね(たぶん)。CDから音楽をコンバートするにはどうしたらいいのですか?
はい、以下の手順で行って下さいね。
1.元になるCDを用意し、ドライブに入れます。
2.SoundEdit16を起動し、<ファイル>メニューから<プリファレンス>を開き、以下のように設定します。
サンプルレート 44.100kHz
サンプルサイズ 16 bit
ステレオのチェックボックスはチェックしておきます。
3.ツールボタンバーから「CDからコンバートする」ボタンをクリックします。
4.変換したいトラックをダブルクリックし、ダイアログボックスが開いたら<オプションボタン>をクリックします。
5.レート44.100 kHz、サイズ16bit、ステレオをチェックして、OKをクリックします。
6.名前をつけて保存します。
あとはこのファイルに加工を施すわけですが、以下のような流れで作業を行って下さい。
1.ステレオをモノラルに変換します。
<編集>メニューで<全てを選択>を選び、
<エフェクト>メニュー内の<ミックス>を選択します。
ミキサー画面が開きますので、<新規ドキュメント>を選び、
<モノラルモード>を選択します。
そして<ミックス>ボタンをクリックします。
2.44.100kHzから22.050kHzに変換します。
3.EQを操作して音のバランスを調整します。
<エフェクト>メニューから<イコライザー>を選択します。
作業を行った後<イコライズ>ボタンをクリックします。
4.ノーマライズを行います
<エフェクト>メニューから<ノーマライズ>を選択します。
数値が100%になっていることを確認してから
<ノーマライズ>ボタンをクリックして下さい。
5.SWAファイルに加工する前に、ファイルのバックアップを取っておきましょう。
6.<エクストラ>メニューから<shockwave for Audio設定>を選択します。
16kbpsを選択し、<高音質>をチェックしておきます。
7.<ファイル>メニューから<書き出し>を選択します。データ形式は<SWA File>を指定し、名前を付け保存します(詳細は先ほどと同様です)。
そうそう、これは前もって言っておくべきだったんですけど、ささいな注意点があります。実はこのオーディオファイルに関しては100%が再生されるわけではないのです。さる情報筋によると「約98%」しか再生されないのだそうです。つまり残り2%は音が出ないんですね。
そんなん言われたって困りますよ。あ……じゃ、全体をちょっと長くすればいいんですね。つまり、100秒のデータだと、ええと……98%が100秒になればいいんですから……全体を102.04081秒にすればいいんですね。つまりサウンドデータのお尻に2秒ほど無音部を付け足してやればいいんですね。
ほほう、稟さん冴えてますねぇ。そう、その通りです。
さて、これでSWAファイルの準備はできました。あとはそれを提供する方法ですね。
なんか新しいコマンドがでてくるんですよね?ね?イヤだなぁ。
まぁまぁ、そんなことを言わずに、ゆっくりでいいからマスターしましょうね。手順を説明していきますね。
1.Directorの<挿入>メニューの<その他>から<SWA Streaming Xtra>を選択して、ダミーのメンバーをキャストに登録します。そしてそのダミーのメンバーに名前をつけます(説明の為、仮にsampleSoundと命名しておきます)
なんでダミーにするの?
全部読み込んでしまったら、外部キャストにする意味がないですからね。わかりました?
で、続きですが、
2.ムービースクリプトに以下のようなスクリプトを記述して下さい。
on startMovie
set the URL of member "sampleSound" to "http://www..../sample.swa."
set the PreLoadTime of member "sampleSound" to 5<br> end
スクリプトのコマンドについての説明は後で記すとして、このスクリプトでは何を行っているのかというと、ダミーで読み込まれたメンバー"sampleSound"の実体の所在するアドレスを指定し、そのデータが受信されて何秒後(この場合は5秒後)に再生されるのかを設定しています。
(尚、PreLoadTime等のコマンド群はDirector上では認識されずエラーメッセージが表示されますが、shockwaveではきちんと動作します)
自分用にアレンジするときには、緑色の部分だけ変更すればいいのですね。なるほど。
じゃ、次に行きますね。
3.サウンドの再生や停止などを制御するキャストを作成し、スクリプトを記述します。
今回のボタンはこのように書いています。
再生ボタン
on mouseUp
play (member "samplesound")
end
停止ボタン
on mouseUp
stop (member "samplesound")
end
たいして難しくないスクリプトですから、ここでは説明は省きます。あとでコマンド集を掲載しておきますので、そちらを参考にして下さいね。
普通のLingoとなんら変わらないですね。よかった。
あとは普通のファイル同様に扱えば大丈夫です。
これで全ての準備は整いました。実際にサーバーに入れてチェックを重ね、問題なく動作するかを確認します。
注意しておくべき点として、オーディオの再生をユーザーが選択できるようにしておくべきです。必要もないのに一方的にオーディオが再生されるのは、極めて苦痛です。ユーザーの必要に応じて再生できるようにしたり、音量の調節も用意に行えるようなインターフェイスが望ましいでしょう。
なるほど。わかりました!
今回のshockwave for Audio用に新たにLingoが追加されました。以下にその用法を記します。なお、SWAファイルの名前を"mySound.swa"。ダミーのキャスト名を"samplesound"と統一しておきます。
このプロパティはキャストメンバーとして登録されている音声データのURLアドレスを指定します。
on startMovie
set the URL of member "sampleSound" = "http://www........./mysound.swa"
end
このスクリプトはムービー開始時にキャストメンバー"sampleSound"のアドレスを設定します。
参照されているキャストメンバーがダウンロードされてから再生されるまでの時間を設定します。5秒分のデータを読み込むと再生をはじめますが、ここの数値を多くすることによって安定して再生されるようになります。しかしユーザーにストレスを感じさせることになりますので、実際にテストを重ねて数値を検討して下さい。
on startMovie
set the preLoadTime of member "sampleSound" = 5
end
キャストメンバーsampleSoundが再生されるまでに5秒かかるように設定します。
指定されたSWAファイルをメモリ内にプレロードします。読み込まれる容量はPreLoadTimeプロパティによって決定されます。
preLoadBuffer (member "sampleSound")
指定されたSWA形式のサウンドを再生します。
on mouseDown
Play (member "sampleSound")
end
マウスがクリックされるとsampleSoundを再生します。
指定されたSWA形式のサウンドの再生を停止します。
on mouseDown
Stop (member "sampleSound")
end
マウスがクリックされるとsampleSoundの再生を停止します。
指定されたSWA形式のサウンドの再生を一時停止します。
on mouseDown
Pause (member "sampleSound")
end
マウスがクリックされるとsampleSoundの再生を一時停止します。
このプロパティはキャストメンバーとして登録されているSWA形式のデータの現在の状況を返します。
以下のコードはSWA形式のデータの状況を表しています。
0 停止中
1 メモリに読み込み中
2 メモリ読み込み完了
3 再生中
4 一時停止
5 再生終了
9 エラー
on mouseDown
if the state of member "sampleSound" = 9 then
alert "読み込み中にエラーが発生しました"
end if
end
音声データの読み込み中にエラーが発生したならば、警告メッセージを表示します。
SWA形式のデータの持続時間を秒単位で返します。演奏が開始されていないときには0を返します。
on exitFrame
if the state of member "sampleSound" = 2 then
put the duration of member "sampleSound" into field "演奏時間"
end if
end
フィールド"演奏時間"に演奏時間を表示します。
サーバーから読み込まれたデータの全体に占める割合を返します。
on exitFrame
put the percentStreamed of member "sampleSound"
into field "読み込み割合"
end sampleSoundが現在どれだけ読み込まれたかを、フィールド"読み込み割合"に表示します。
サーバーから読み込まれ、再生されたデータの全体に占める割合を返します。 on exitFrame
put the percentPlayed of member "sampleSound"
into field "再生割合"
end
sampleSoundがどれだけ再生されたかを、フィールド"再生割合"に表示します。
サーバーからのデータの読み込み速度を返します。読み込みが始まっていない時点では0を返します。
on exitFrame
if the state of member "sampleSound" = 2 then
put the bitRate of member "sampleSound" into field "読み込み速度"
end if
end
読み込み速度をフィールド"読み込み速度"に表示します。
エラーに関する情報を返します。getErrorは数値を、getErrorStringはメッセージを返します。
on exitFrame
if getError (member "sampleSound") <> 0 then
put getErrorString (member "sampleSound")
into field "エラーメッセージ"
end if
end
読み込み中にエラーが発生した場合、その内容をフィールド"エラーメッセージ"に表示します。
それぞれの値は以下の関連性を持っています。getError() ==> getErrorString()0 ==> 正常
1 ==> メモリに関する問題
2 ==> ネットワークに関する問題
3 ==> 再生に関する問題
99 ==> その他の要因