連載
» 2014年11月13日 19時15分 UPDATE

カウントダウン企画……あと5回:日刊!プチコン3号――懐かしさと表現力の両立「サウンド機能」

「アレ? ナニカアッタンデショーカ ワタシガチョット ミテキマショー タイヘンデス! タイヘンデス!」……なぜそれを選んだ。

[瓜生聖,ITmedia]

連載:日刊プチコン3号

懐かしさと表現力の両立「サウンド機能」

 グラフィックと並んでゲームの表現力をぐっと広げてくれるのがサウンド機能だ。プチコンのサウンド命令は大きく3つに分けられる。

・効果音

 効果音はBEEP命令で発生させることができる。プリセットの効果音はmkIIの70種から134種に増加。周波数はプチコンmkIIで1オクターブ4096段階で上下2オクターブに変更可能だったのに対し、プチコン3号では半音96段階で-32768〜32767の変更ができる(表現をプチコンmkIIに合わせると「1オクターブ1152段階で上下28.4オクターブに変更可能」ということにはなるが、もちろんこれは可聴音域を超えている)。

・音楽

 プリセット曲やMMLを鳴らすBGMPLAYなど、BGMから始める一連の命令は特に大きな変更はない。ただし、MMLの内部変数の読み出し/書き込みを行うBGMGETV/BGMSETVは、ほかの内部変数を扱う命令と統一され、BGMVARで読み出し/書き込みを行うように変更された。MMLはプチコンmkIIの仕様ほぼそのままだが、同時再生チャネルが8から16に、最大テンポが240から512に増加したほか、モジュレーションにオートパン@MLが追加されている。

 楽器を登録するBGMPRGはWAVSETに置き換えられた。書式はほぼ同じだが、波形文字列がmkIIの32/64バイトから、16/32/64/128/256/512バイトに拡張された。マイクからの入力を登録する場合には数値配列から登録できるWAVSETAが便利だ(サンプリングレート8180Hz固定、最大16384サンプルまで)。

・TALK

 音声合成のTALKはプチコンmkIIから大幅に機能が削られた。プチコンmkIIのときにあったイントネーション変更やピッチ制御、発生速度、ボリューム、話者設定、感情設定などの@コマンド、アクセントやフレーズ制御、行末処理(疑問、驚き)などはすべて削除されている。

 例えばプチコンmkIIのつもりで「アレ? ナニカアッタンデショーカ ワタシガチョット ミテキマショー タイヘンデス! タイヘンデス!」という文字列を渡すと「アレハテナ ナニカアッタンデショーカ ワタシガチョット ミテキマショー タイヘンデスビックリ タイヘンデスビックリ」と読み上げるので注意。

 そのほか、サウンド全体に効果がある機能としてエフェクター(リバーブ)が追加された。EFCSETでエフェクターのプリセットを選択、EFCON/EFCOFFでエフェクターの有効/無効、EFCWETでエフェクトの強さを指定する。

サンプル

関係する命令

BEEP [効果音番号][,周波数][,音量][,パンポット]

 説明

  単純な警告音・効果音の発生

 引数

  効果音番号

   鳴らす音の種類:プリセット音0〜133

   ※SMILEボタンを押してプリセット音一覧を確認可能です

  周波数

   周波数の変更値:-32768〜32767(96で半音)

  音量

   再生する音量:0〜127

  パンポット

   ステレオのパンポット指定:0(左)〜64(中央)〜127(右)

BGMPLAY [トラック番号,]曲番号[,音量]

 説明(1/2)

  音楽演奏(1) 登録済みBGMを再生

  ・同時に8曲演奏可能(ただし同時発音数は全体で16音まで)

 引数

  トラック番号

   再生するトラック番号:0〜7(省略時は0番)

  曲番号

   再生する曲番号:プリセット曲0〜42 ユーザー定義128〜255

   ※SMILEボタンを押してプリセット曲一覧を確認可能です

  音量

   再生する音量:0〜127

BGMPLAY "MML文字列"

 説明(2/2)

  音楽演奏(2) 入力したMMLデータを再生

  ・MMLデータによる再生はトラック0で行われる

  ・ユーザー定義曲番号255がMMLによる曲に書き換えられる

 引数

  MML文字列

   MMLコマンドを記入

BGMVAR トラック番号,変数番号,値

 説明(1/2)

  MMLの内部変数への書き込み

 引数

  トラック番号

   対象のMMLのトラック番号:0〜7

  変数番号

   値を書き込む内部変数:0〜7(MMLの$0〜$7)

  値

   変数に書き込む値

変数 = BGMVAR(トラック番号,変数番号)

 説明(2/2)

  MMLの内部変数の読み込み

 引数

  トラック番号

   対象のMMLのトラック番号:0〜7

  変数番号

   値を読み込む内部変数:0〜7(MMLの$0〜$7)

  戻り

   演奏中の指定された変数の内容(演奏停止中は-1)

WAVSET 定義番号,A,D,S,R,"波形文字列"[,基準音程]

 説明

  MMLのユーザー定義楽器音を定義

 引数

  定義番号

   ユーザー定義楽器番号:224〜255

   ※MMLの@コマンドで指定する番号

  A,D,S,R

   エンベロープ定義パラメータ

   A:アタック 0〜127

   D:ディケイ 0〜127

   S:サスティン 0〜127

   R:リリース 0〜127

  波形文字列

   16進数文字列。2文字で1サンプルの値(8bit)を表す

    〜(128)〜HFF(255)

   16,32,64,128,256,512サンプルの指定が可能(文字数はサンプル数の2倍)

  基準音程

   省略時は69(O3A)

WAVSETA 定義番号,A,D,S,R,数値配列[,基準音程][,先頭添字][,最終添字]

 説明

  MMLのユーザー定義楽器音を配列から定義

  ・MICSAVEで得た配列から定義するときに便利

  ・サンプリングレート8180Hz、8ビット固定

 引数

  定義番号

   ユーザー定義楽器番号:224〜255

   ※MMLの@コマンドで指定する番号

  A,D,S,R

   エンベロープ定義パラメータ

   A:アタック 0〜127

   D:ディケイ 0〜127

   S:サスティン 0〜127

   R:リリース 0〜127

  数値配列

   MICSAVE命令で得た配列(最大16384サンプルまで)

  基準音程

   省略時は69(03A)

  先頭添字

   数値配列の読み込み開始要素の添字(省略時は0)

  最終添字

   数値配列の読み込み終了要素の添字(省略時は最終要素)

TALK "音声文字列"

 説明

  音声合成による発生

 引数

  音声文字列

   発音させたい文字列(文字をそのまま発音する)

EFCON

 説明

  音楽のエフェクトをONにする

  ・エフェクトの種類はEFCSET命令で選択

EFCOFF

 説明

  EFCONでONにした音楽のエフェクトをOFFにする

EFCSET 種類番号

 説明(1/2)

  音楽のエフェクトの種類を選択する

 引数

  0:なし(EFCOFFと同じ)

  1:リバーブ(風呂場)

  2:リバーブ(洞窟)

  3:リバーブ(宇宙)

EFCSET 初期反射時間,残響音ディレイ時間,残響音減衰時間,残響音フィルタ係数1,残響音フィルタ係数2,初期反射音ゲイン,残響音ゲイン

 説明(2/2)

  上級者向けエフェクトパラメータの設定

 引数

  初期反射時間

   0〜2000(msec)

  残響音ディレイ時間

   0〜2000(msec)

  残響音減衰時間

   1〜10000(msec)

  残響音フィルタ係数1

   0.0〜1.0

  残響音フィルタ係数2

   0.0〜1.0

  初期反射音ゲイン

   0.0〜1.0

  残響音ゲイン

   0.0〜1.0

EFCWET BEEP効果値,BGM効果値,TALK効果値

 説明

  BEEP、BGM、TALKそれぞれのエフェクト量を設定する

 引数

  BEEP効果値

   BEEPに対するエフェクトの大きさ(0〜127)

  BGM効果値

   BGMに対するエフェクトの大きさ(0〜127)

  TALK効果値

   TALKに対するエフェクトの設定(64未満:OFF、64以上:ON)

   ※TALKに対してはON/OFFおみで、量は変化しない


 次回はSPRITEの扱い方の変更点について紹介する。

※本稿の内容は開発中のものです。製品版配信時には仕様が変更される場合があります。

 「日刊!プチコン3号」で取り上げて欲しいネタや疑問、質問、感想は、ハッシュタグ「#nikkan_petitcom3」をつけてツイート! ライターの瓜生氏がたぶん(連載の中で)答えてくれるぞ。


Copyright© 2016 ITmedia, Inc. All Rights Reserved.