Making「ザカリテ登場シーン」

Home PC-6001mkII Program etc

関連リンク ザカリテ登場シーン

最新の画面 更新日:2014/08/10
作成日:2014/06/07

「ザカリテ登場シーン」の作成過程を以下少しずつ書き綴っていこうと思います。

2014/05/24:高音追加
 当初行う予定ではなかったが、やはり必要だろう、音声と高音エフェクトとの合成が。

 オリジナルでは、5〜6音程度の長さの高音エフェクトを、低温の音声の音程に合わせて出力しているように聞こえる。音程をリアルタイムに合わせるのはあきらめるとして、音の出力は行うようにしよう。

 ただ、あまり処理を追加すると、今度はメインのTALK処理でエラーが出る可能性がある。という事で、ザカリテがしゃべっている時に、48/100秒に3回(12/100秒のタイミングかつ口パク処理が動かないタイミング)実行するようにする。

 音の鳴り具合は正直今一つだけど、鳴らないよりはマシだと思う。時間的にも限界なので、作成はこの辺りにしよう。

 あとは...mkII実機でも問題なく実行できるかだな。特に、音声合成のようなシビアなタイミングで実行するモノはエミュでは動いても実機では動かない事があるので、SDカードにディスクイメージファイルを入れてSD6031経由で実機実行を試みる。...うまくいっているみたいだ。

 色々荒い部分もあるが、予定していたものは概ね入ったので、この辺りでいったん終わる事にする。

2014/05/23:微調整
 さて、そろそろ本気出す!

 残り時間もわずかだが、できる範囲でプログラムの微調整を行う。

 フェードイン時のシャッフル処理だが、ランダム具合が今一つなので2回実行する事にする。これで、少しましになったような気がする。

 続いて、目や口の表示タイミングを調整する。ザカリテがしゃべっている間は、音声合成ROMへの出力タイミング(1/100秒単位)を基準として、目の点滅処理を12/100秒に1回、口パクを48/100秒に1回行う事にする。
 また、ザカリテがしゃべっていない間は、目の点滅処理の速度はタイマー割り込み(約2/975秒単位)を元に、およそ12/100秒になるように設定(116/975)する。

2014/05/22〜23:フェードアウト
 フェードインがあったらフェードアウトだ。という事で、フェードアウト処理を作成する。

 まずは、上下から2ドット単位でラインを描いて黒のラインで消す処理を作成する。ここまでは割とあっさりと作れた。

 ただ、オリジナルの動画では描かれるラインの色が1色ではないんだよな...。見た感じ、白,赤,青の3色があって、動画を一時停止させると、1ライン内で色が変わっている部分も確認できた。何度かオリジナル動画を観察するが、この色が変わり具合の法則が見えない。どうしよう。

 とりあえず白,赤,青の色が使われているようなので、これに黒色を加えた4色を順繰りに描画するようにする。

画像

 表示速度を大まかに合わせると、結構オリジナルと似た感じになった。こんなものかな。

2014/05/20:フェードイン
 メインの処理が概ね出来上がったところで、その他の部分に取り掛かる。まずはフェードイン処理だ。

 格子で仕切られたパーツを動画と同じ順序で表示すればいいや、と軽い感じで始めたが、格子の分割具合を絵で描いた時点で時間的にもモチベーション的にも無理と気づいた。とはいえフェードイン処理は入れたい、という事で、代替として4x8のパーツに分けてランダムに表示しようか。

 という事で、4x8のパーツに分けた計192のパーツを、Rレジスタを使用してトランプのシャッフルと同じ要領で順序をかき混ぜる。このかき混ぜ後の順序通りに各パーツを描画していく。

 フェードインするパーツの分布にムラが多いが、これで基本部分は出来上がった。

画像


2014/05/18〜20:口パク
 音声データ作成と並行して、口元の処理も進める事にする。

 なにはともあれ、まずグラフィックかな。という事で、動画を途中で止めつつ口のパターンを探る。ここから、概ね4パターン×2段階の口の開きパターンを抜出し、ドット打ちを行う。口を閉じたパターンも含めて、9パターン作成する。

画像

 さて、問題はこれを動かす処理だ。目標としては、やっぱりリップシンクかな。と思い、まずは母音と音声データとの関連性を探る…むう、「あ」「い」「う」「え」「お」の5音では決め手となるデータの違いはなさそうだ。「あ」「い/え」「う/お」の3通りなら、概ねそれらしい分類が出来そうだが。

 ただ、分類が可能にするには、今の相対値指定のデータを絶対値に変換しないといけない。時間をかければできない事もないだろうが、あいにくそこまでに時間は残されていない。という事で、基本ランダムな口パターンを表示する事にする。
 あ、音量だけは絶対値のデータになっているので、音量が小さい時は口をつむった状態にするか。

 こうして、口パク処理の仮作成が終わった。仮作成とは言ったが、おそらくこのままほとんど変えないだろうな…。

履歴

ページ項目
その1 2014/02/xx:はじまり
2014/02/03〜04:見た目
2014/02/19:顔完成
2014/03/04:画像データ作成
2014/05/05:顔表示
2014/05/06〜15:目
2014/05/15:ステータス画面
2014/05/17〜20:音声データ作成

PC-6001mkII