音の基本

Date:

この項では、音の取り扱いの基本を押さえます。

他の「基本」の記事を踏まえた内容になっています。

利用できるファイルの種類

AIRNovelでは、音声ファイルとしてmp3、ogg、m4aの3種類を使用することができます。

mp3はライセンスの問題があります。5,000部までなら無料ですが。(参考
oggはant実行時にoggoに勝手に変更され、ファイル容量が大きくなります。あるファイルで試したところ、oggで1.4MBだったものが、oggoで26.2MBにまでふくれました。また、最初に雑音が入ります。録音開始時にブッという音が入ることがありますが、そのような音です。
m4aは現在暗号化や一部の指定に未対応です。mp3よりファイルサイズが大きくなりますが、使用料が必要ありません。(参考

参考までに、同一の音データでファイルサイズの比較を行いました。
mp3: 1.8MB
oggo: 26.2MB (oggでは1.4MB)
m4a: 3.4MB

m4a形式はmp3回避にoggoより使えるのではないでしょうか。

余談ですが、htmlレイヤを使用して、audioタグで演奏することはできません。
audioタグが未対応です。

音を鳴らす

まずは基本。
[playbgm]:BGMを演奏する。
[playse]:効果音を演奏する。
fn=:演奏するファイル名。

[playbgm]は、[playse]のBGM特化特殊版です。

属性 内容 [playse]初期値
(変更指定可)
[playbgm]
(変更指定不可)
buf= 演奏するバッファ。音版のレイヤみたいなもの、ただしレイヤと違い追加作業不要。 SE BGM
loop= ループ演奏するか。 false true(変更指定可)
canskip= キー押下スキップ中に演奏するか。 true false

次の二つは同じ動作になります。

AIRNovel:

  1. [playbgm fn=bgm1]
  2. [playse fn=bgm1 buf=BGM loop=true canskip=false]

ノックする音、クラクションの音など1回きりのものは属性を指定することなく使用すればOKです。
風の音や鳥の声など、BGMにかぶせてループ再生する場合はloop=trueを使用します。
効果音とボイスを同時に使用したいときはbuf=で異なるバッファを指定します。
驚かせるために必ず鳴らしたい場合にはcanskip=falseを使用します。
これらは一例ですので、どのようにしたいかに合わせて指定を行ってください。

音の停止

[stopbgm]:BGMの演奏を止める。
[stopse buf=]buf=で指定した(未指定時はSE)バッファの音を止める。
[stop_allse]:すべての音を止める。

[stopbgm][stopse buf=BGM]は同じ動作になります。

ここで注意を一つ。
ループさせる音の場合は、必ず停止させてから次の音を再生してください。
先に鳴らしていた音が[stop_allse]以外で停止することができなくなります。

AIRNovel:

  1. [playbgm fn=bgm1];bgm1 演奏開始。
  2. [waitclick]
  3. [playbgm fn=bgm2];bgm2 演奏開始。bgm1も演奏したまま。
  4. [waitclick]
  5. [stopbgm];bgm2を停止。bgm1は演奏したまま。
  6. [waitclick]
  7. [stopbgm];変化なし
  8. [waitclick]
  9. [stop_allse];bgm1停止。他の演奏中の物も停止。

演奏終了を待つ

[wl]:BGMの再生終了を待ちます。
[ws buf=]:buf=で指定した(未指定時はSE)バッファの再生終了を待つ。
canskip=:クリックがあった場合に待つのをやめるか。初期値false。

ループ指定の音の場合は、待ちません。(延々と待つのではなく、待ちません。)
ループしますと、終了がありませんので。

幕開けの効果音で、基本は鳴り終わったら自動で進むようにするけれども、長めの音なので途中でクリックがあった場合はさっさと進む、という場合は次のようにします。

AIRNovel:

  1. [playse fn=start canskip=false];幕開けの音なので、キー押下スキップ中も再生。
  2. [ws canskip=true];途中でクリックされれば、待つのをやめる。
  3. [stopse];クリックで待つのをやめた場合にきちんと音を止めるように。

演奏する時のcanskip=と終了待ちのcanskip=は意味が異なりますので、ご注意を。

音量の指定

音量は全体にかかる音量と、各バッファ毎の音量があります。
ユーザーが音量調節をできるようにする場合、全体もしくは各バッファのどちらかのみの指定をできるようにするのも一つの方法です。

音量決定の計算方法
演奏される音量 = 元の音ファイルの音量 × バッファ毎の音量 × 全体の音量
全体の音量、バッファ毎の音量は0から1の小数で指定します。どちらかが0の場合、音が鳴りません。
全体の音量の方は消音かどうかの0か1のみにしておくという方法もあります。

音量の指定方法
全体にかかる音量と各バッファの音量では指定方法が異なります。

全体にかかる音量は、変数「sys:flash.media.SoundMixer.soundTransform.volume」で取り扱います。
読み書き可能な変数ですので、変更を加える際は、[let]もしくは&計算を使用します。
参照する場合は、属性の指定時に&で始めて変数参照をするようにします。

AIRNovel:

  1. ;指定
  2. [let name=sys:flash.media.SoundMixer.soundTransform.volume text=1]
  3. &sys:flash.media.SoundMixer.soundTransform.volume = 1
  4. ;参照
  5. [let name=vol text=&sys:flash.media.SoundMixer.soundTransform.volume]
  6. &vol = sys:flash.media.SoundMixer.soundTransform.volume

各バッファの音量は[volume]タグを利用します。
buf=:指定するバッファ
volume=:指定する音量
参照する場合はsys:const.an.sound.[バッファ名].volumeという変数に値が入っています。
変数に入っているのなら、直接変数を操作すればいいのではないかという疑問が出てくるかと思いますが、constの変数は参照しかできない変数ですので。

AIRNovel:

  1. ;指定
  2. [volume buf=SE volume=0.5]
  3. ;参照
  4. [let name=vol text=&sys:const.an.sound.SE.volume]
  5. &vol = sys:const.an.sound.SE.volume

もう一つ、演奏時に一時的にその時のみの音量を指定することができます。
[playbgm][playse]の指定時にvolume=で指定します。
ここでの変更は、記憶されている値には変更を加えません。
素材ファイルの音量がバラバラで、自分で音量編集をしない場合、こちらを利用して演奏音量を同じくらいに見せかけることができます。ただし、元の音量より大きくすることはできません。
ユーザーの設定音量と、制作側の音量調整を両立させるためには双方をかけ算することで実現します。

m4aへの変換

QuickTime Playerがm4aで保存することに対応していますので、QuickTime Playerで読み取り可能なファイルは変換することができます。
その方法を簡単に紹介します。

まずは、変換したいファイルをQuickTime Playerで開きます。
「ファイル」→「書き出す」→「オーディオのみ」を選択します。to_m4a
この時点で、保存ファイル形式はm4aになっているかと思います。
保存場所、ファイル名を指定して、普通に保存すれば完了です。

Macの場合、Automatorを使用すると、変換がより楽になります。
Automatorを起動し、「ファイル」→「新規」と進み、「サービス」を選択します。
to_m4a_2
「"サービス"は、次の選択項目を受け取る」は「オーディオファイル」を、「検索対象」は「Finder.app」を選択します。to_m4a_3
左のアクション一覧から「ムービー」→「メディアをエンコード」をワークフローのエリアにドラッグ&ドロップします。to_m4a_4
「Setting」の項目を「Audio Only」に変更します。
to_m4a_5

「/Users/[ユーザー名]/Library/Services/」にm4a変換等、分かりやすい名前で保存します。
不可視フォルダですので、保存先を選ぶ時はcommand + shift + Gでフォルダ移動を表示させます。

これ以降開くFinderウィンドウでムービーファイル(オーディオ含むQuicktime Playerで開くことができるファイル)をcontrol + クリック(右クリック)で先ほど保存した名前のメニューが選択できるようになります。
そして、それを選択するとm4aファイルに変換してくれます。
to_m4a_6

ボイスを使う

頭からここまで読んでいただいた方は、既にどのようにすればいいのか予測が付いていることと思います。ただ、AIRNovelの開発者情報やタグリファレンスには、BGM、SE(効果音)、システム音の記載しかありませんので、検索で来られた方がたどり着きやすいようにまとめたいと思います。

戦闘時のかけ声のような効果音的ボイスではなく、台詞の読み上げを想定しています。

まず、効果音とは別に扱いたいと思いますので、buf=VOICEなど、新たにボイス用のバッファで取り扱おうと思います。
文字表示をしながら、喋る様にしたいので、音を鳴らす指示をした後に台詞を書いていきます。台詞の後ろに入れると、すべて表示した後に鳴り出します。
喋っている間は待つ、ただしクリックがあれば待つのをやめて次へ進むのを基本として、喋った後どうするかを考えましょう。1ページ分喋り終わったら、自動で次へ進むようにしたいのでしたら、[ws]を使用します。クリックされるまで待つのでしたら、[p]などクリック待ちを使用します。

以上を踏まえてスクリプトを書くと次のようになります。

AIRNovel:

  1. [playse buf=VOICE fn=line1]
  2. 台詞
  3. [ws buf=VOICE canskip=true];終了待ち。ただしクリックで進む。
  4. [stopse buf=VOICE];クリックされたら、強制終了
  5. [er];ページ切り替え

AIRNovel:

  1. [playse buf=VOICE fn=line1]
  2. 台詞
  3. [p];クリック待ち
  4. [stopse buf=VOICE];クリックされたら、強制終了
  5. [er];ページ切り替え

buf=VOICEを毎回書くのが面倒、という場合はマクロの活用を考えてみてください。

段階:

関連項目: ,