「トークと同時に通知音を鳴らす」設定を機能別に行う書き方【伺か・里々忘備録】

「トークと同時に通知音を鳴らす」設定を機能別に行う書き方【伺か・里々忘備録】里々の記述

ゴーストに通知音を設定するための書き方を紹介しています。
できるだけすっきりとした記述になるようにがんばってみました。

念のための前置きとして、ここでいう通知音とは、ゴーストが特定のトークを話す時通知音として設定した音を鳴らすという機能のことです。
ですので、例えばリマインダーやタイマーの機能などが付いているゴーストさん向けです。

もちろん、やろうと思えばゴーストさんが何かを喋るたびに通知音を鳴らすこともできます。お好みで記述をいじってみてくださいませ。

なおここで紹介している記述は、里々の栞を使って伺かを作っている人向けです。
里々以外の栞を使ってゴーストを制作している場合はご注意ください。

仕様書

通知音をつける記述を書く前に、この記述を書くことで何ができるようになるのか、何ができないのかを説明しておきます。

できるようになること

ここで紹介している記述を使うと、こんなことができるようになります。

  • 特定のトークが表示された時、設定された通知音を鳴らす
  • 「機能別」に異なる通知音の設定をする
  • 通知音を鳴らさない設定にもできる

この記述は、「通知音を鳴らして表示させたいトークがある」こと前提の記述です。
例えば、繰り返しお知らせしてくれるリマインダーのトークや、「残り3分だよ~」などのお知らせをしてくれるタイマーのトークなどなど。

この記述では、そういった「通知音を鳴らしたい機能ごと」に、個別に異なる設定をつけることができます。というかそのための記述です。
例えば、リマインダーでは通知音Bを鳴らして、タイマーでは通知音Aを鳴らす、みたいな感じです。

ちなみに「通知音設定をつけたい機能はひとつしかないよ」という場合は、必要な変数が3つほど減らせます。(例えばリマインダー機能でしか通知音鳴らす必要がないよ、みたいな場合)
なのでこの場合には、もっとシンプルな記述に削ることもできます。

なおこの記述では、通知音の初期値を「satori_conf.txt」であらかじめ設定する必要があります。
つまりdicファイル以外にもいじらなければならない箇所があるということです。

できないこと

一方で、以下のようなことは、この記述だけではできません。

  • ゴーストがしゃべる全てのトークに通知音をつけたい!
  • ゲームのように、セリフの1文字1文字が表示されるたびにポポポポポ…みたいな音を鳴らしたい

この記述は、あくまでも「特定のトークが表示された時のみ」に通知音を鳴らすためのものです。
なので通知音とは言っても、上記のような少し違うタイプのものをお探しの方はご注意!

ちなみに、ゴーストがトークを発言するそのたびに常に通知音を鳴らしたいのであれば、ちょっと記述を書きかえれば簡単にできるようになる気がします。
カスタマイズできそうな人はお好みでいじってお使いくださいませ。

とはいえ、せっかくなので上記のこの2つについてもさらっと触れておきます。

全てのトークに通知音を付けたい場合

まずはゴーストがしゃべる全てのトークに通知音を付けたい場合。

この場合は、別の場所に通知音を鳴らすスクリプトを書けば鳴るはずです。
例えば、ランダムトークに通知音をつけたいのであれば、*OnTalk周りをいじると簡単に通知音を鳴らせるようにできるはずです。

ちなみに、*OnTalkとは、「(自発的な)ランダムトークをしゃべる前に、必ず経由する場所」です。
参考までに、里々wikiのOnTalkについてかかれているページのリンクを貼っておきます。もっと詳しく知りたい人はこちらをどうぞ!

そんなわけなので、全てのトークに通知音を付けたい場合は、*OnTalk周りをいじってみるといいかもしれません。

ポポポポ音を実装したい場合

また、ゲームなんかでたまにある、「キャラの台詞の文字が表示されるたびにポポポポポ…といった音を鳴らす」といったことも、この記述ではできません。

この記述でできることは、あくまでも通知音機能です。
なので、「音を鳴らすスクリプト」が実行されたその1度しか鳴らないようになってます。

ちなみに、ポポポポ音を実装したい場合は、おそらくテキスト表示まわりのスクリプトをいじればできるようになる気もします。
なのでこれをやりたい場合は、UKADOC(伺か関連の仕様書)のサイトさんなどでテキスト表示関連の記述を探してみるのもおすすめです。

通知音設定の記述

ここからは「通知音をつける記述」の紹介をつらつらとしていきます。

dic以外にもいじる必要のあるテキストファイルなどもあるので、そこも含めて真面目に説明していきます。

通知音をつける記述の前準備

まずは下準備編。
それと、記述の仕様も一緒にざっくりと説明しておきます。

まず、編集する必要がある場所について説明しておくと、「通知音をつける記述」に加えて、satori_conf.txtで初期値の設定もする必要があります。
あとでこの.txtの書き方についても説明するのでご安心。

それと、このブログで紹介する記述ではいつものことですが、自分が10年後に見た時も分かりやすいものであれという念を込めてるのでいちいち変数名が長ったらしいです。ごめんね。
分かる人は好きにカスタマイズしてください。

必要な記述は2つ

さて、肝心の記述部分についてですが、これについて軽く説明しておきます。
説明いらんよという人は読み飛ばしても大丈夫です。

この通知音設定の記述を使うためには、「通知音設定を行う大元の記述」と「通知音設定を呼び出す記述」の2つを分けて書く必要があります。

通知音設定を行う大元の記述

まず「通知音設定を行う大元の記述」は、その名の通り、通知音の設定を行う部分の記述です。
これがどこかにないと通知音を設定できません。

ちなみにこれは、「機能ごとに選択できる通知音の選択肢を変えたい!」みたいな場合でない限り、どこか1カ所に記載しておわりです。
どういうことかというと、例えばリマインダーには通知音AとBのどちらかを選べて、タイマーには通知音CとDのどちらかを選択できる、みたいな状況のことですね。

そういったものを実装したいのでない限りは、選択できる通知音を増やしたり減らしたりする時にだけ、この記述をいじることになります。

通知音設定を呼び出す記述

そして「通知音設定を呼び出す記述」の方は、リマインダーやタイマーなど、「機能別に通知音を設定する部分」に使われている記述になります。
つまり、リマインダーには通知音Aを設定、タイマーには通知音Bを設定、とそういった「設定を保存しておく」といった部分を処理している記述です。

こちらの記述に関しては、通知音を設定したい機能ごとに書く必要があります。
通知音を設定したい機能が増えるごとに書いてください。記述的には何個でも増やして大丈夫です。

またこちらの記述は、コピペしたものの変数をちょこっと書き換えるだけで動きます。
つまり通知音設定の大元の方の記述をいじる必要はありません
増やすも減らすも、とっても簡単です。

なお、この記述は、最低でもひとつはどこかに書く必要があります
つまり、「リマインダーにしか通知音設定しないから、この記述は書かなくていいや~」みたいなことはできません!(記述をいじれる人は別ですが)
なので、とりあえずこの記述は、この2つをセットでdic内のどこかしらに記述しておいてくださいませ。

詳しい解説はあとにするとして、まずは記述をさくっと紹介していきます。

通知音設定を行うための記述

まずは「通知音設定を行うための、大元となる基本の記述」の紹介です。
「通知音」の設定の土台となる部分をつかさどっています。

以下の記述を、お好きなdicのお好きな場所に、まるっとコピペしてください。

#=====================================
#通知音設定を行う大元の記述
#通知音が設定できる場所全てで以下のメニューが呼び出されます
#=====================================
#使い方
# (「通知音テスト用へんすー」の通知音を鳴らす)
# (通知音テスト用へんすー」の通知音の名前)
#上記2つの「」の中には、以下の【タブ】以下の文字と全く同じ文字列をいれる必要があります
# $なんの機能の通知音の設定をするのか【タブ】通知音テスト用へんすー
#じゃないとうまく動かないです。よろしくね。
#=====================================
#テスト用&記述参考用
#*てすと
#$なんの機能の通知音の設定をするのか【タブ】通知音テスト用へんすー
#:【大バルーン】(「通知音テスト用へんすー」の通知音を鳴らす)通知音設定のテストをはじめるよ。
#今のテスト用通知音は(通知音テスト用へんすー」の通知音の名前)だよ。
#>通知音の設定メニュー
#=====================================

*通知音の設定メニュー
>どの機能の通知音の設定をするかの指定がされていない時【タブ】(なんの機能の通知音の設定をするのか)==0
:
\q[通知音1を聞いてみる,通知音の設定_通知音1を聞いてみる]
\q[通知音2を聞いてみる,通知音の設定_通知音2を聞いてみる]
\q[通知音3を聞いてみる,通知音の設定_通知音3を聞いてみる]

\q[通知音を鳴らさない,通知音の設定_通知音を鳴らさない]

_戻る

*どの機能の通知音の設定をするかの指定がされていない時
:エラーだよ!
何に対しての通知音を設定したらいいのか分からないよ!

#-----------------------------------------------------------------
#通知音を増やしたり減らしたりする場合、以下にある数字だけをいじればOK

*通知音の設定_通知音1を聞いてみる
$通知音の設定で選択した通知音【タブ】通知音1
$通知音の設定で選択した通知音のファイル名【タブ】se_1
>通知音の設定_通知音をきいてみたあとのセリフ

*通知音の設定_通知音2を聞いてみる
$通知音の設定で選択した通知音【タブ】通知音2
$通知音の設定で選択した通知音のファイル名【タブ】se_2
>通知音の設定_通知音をきいてみたあとのセリフ

*通知音の設定_通知音3を聞いてみる
$通知音の設定で選択した通知音【タブ】通知音3
$通知音の設定で選択した通知音のファイル名【タブ】se_3
>通知音の設定_通知音をきいてみたあとのセリフ

*通知音の設定_通知音をきいてみたあとのセリフ
:\![sound,play,sounds/(通知音の設定で選択した通知音のファイル名).mp3]φ
(通知音の設定で選択した通知音)はこんな音だよ。(通知音の設定で選択した通知音)

\q[これに設定する,通知音の設定_通知音をこれに設定する]
>通知音の設定メニュー

#-----------------------------------------------------------------
#【タブ】【タブ】はつまり「$「(なんの機能の通知音の設定をするのか)」の通知音を鳴らす【タブ】 」のことです。
#上記のように、【タブ】のうしろにTABキーによる空白を書く必要があるので注意。空白がないと関数名がそのまま表示されます。「0」という数字もだめ。
#ちなみに(「(なんの機能の通知音の設定をするのか)」の通知音を鳴らす)をセリフの前に書いても、そこに空白は挿入されないのでご安心ください。

*通知音の設定_通知音を鳴らさない
$「(なんの機能の通知音の設定をするのか)」の通知音を鳴らす【タブ】【タブ】
$現在設定されている「(なんの機能の通知音の設定をするのか)」の通知音の名前【タブ】通知オフ
:わかったよ。通知音は鳴らさずにお知らせするよ。

#-----------------------------------------------------------------

*通知音の設定_通知音をこれに設定する
$「(なんの機能の通知音の設定をするのか)」の通知音を鳴らす【タブ】\![sound,play,sounds/(通知音の設定で選択した通知音のファイル名).mp3]
$現在設定されている「(なんの機能の通知音の設定をするのか)」の通知音の名前【タブ】(通知音の設定で選択した通知音)
>通知音の設定_設定完了のセリフ

#以下の「$なんの機能の通知音の設定をするのか【タブ】0」は念のための記述。なくても全然問題なく動きます。一応ね・・・。

*通知音の設定_設定完了のセリフ
$なんの機能の通知音の設定をするのか【タブ】0
:わかったよ。これからはこの音と一緒に、お知らせするね。

これで、通知音を設定する基盤となる部分が書けました。

ちなみに、自分用の覚え書きのコメントアウトもなんかの補足になるかなと思ってまるっともってきちゃったので、邪魔な場合は、#という記号からはじまる文章を全て削除しちゃってください。

通知音の音源ファイルを用意する

次に、「通知音として鳴らす音」を用意します。

音源が用意できてないよ!という方は、とりあえずフリー効果音素材を配布してくださっているサイトさんの音源を使わせてもらっちゃいましょう。
私はいつも「効果音ラボ」とか「On-Jin ~音人~」のサイトさんを使いがちです。

ちなみに解説をしておくと、「通知音を設定する基盤となる記述」内の以下の部分が、「この通知音を鳴らしてください」と指定する部分です。

\![sound,play,sounds/(通知音の設定で選択した通知音のファイル名).mp3]

通知音の用意手順

通知音を用意していきます。
さっくりと手順を挙げるとこんな感じです。

  1. ghostフォルダ内にある「master」のフォルダを開く
  2. 「sounds」というフォルダを新規作成
  3. 通知音にしたい音源ファイルの名前を「se_1.mp3」に変更
  4. 「sounds」フォルダ内に音源ファイル「se_1.mp3」を入れる

まず、「\ghost\master」のフォルダ内に、音源ファイルを置いておくための「sounds」というフォルダを新しく作ってください。
パスをいじれる方は、パスを書き換えて、「\ghost\master」内に直に音源ファイルを置いても大丈夫です!

「sounds」フォルダを作ったら、その中に「se_1.mp3」といった名前の音源ファイルを置いてください。
この音源ファイルの名前も、記述をいじれる方はお好みでお好きなものにしてください。

音源ファイルの拡張子が.wavなんだけど!という場合は、上記の「この通知音を鳴らしてください」と指定する部分の記述を以下のように書き換えればOKです。

\![sound,play,sounds/(通知音の設定で選択した通知音のファイル名).wav]

同じように、音源ファイルの拡張子(.mp3とか.wavとか)が違うよ!って場合は、上記の太文字の部分をその拡張子に合わせて書き換えれば大丈夫です。

音源の拡張子がバラバラな場合の対処法

この記述では「全ての通知音の音源ファイルの拡張子を揃える」こと前提に書かれています。
つまり、mp3であれば全ての通知音の拡張子はmp3で統一されていること前提、といった感じです。

なので、もし「音源ファイルによって拡張子がちがうよ!」という場合には、音源ファイル自体を変換して、拡張子を揃えるのが一番確実です。

もしくは、「そんな変換なんてわからん!」という場合には、以下のように書くことでもどうにかできるかもしれません。

\![sound,play,sounds/(通知音の設定で選択した通知音のファイル名)]

(通知音の設定で選択した通知音のファイル名)という変数の中に「se_1.mp3」とか「se_2.org」という風に、拡張子ごと名前を入れるように記述をいじればいける……はずです。

なお、このように「拡張子ごと含めて指定する」方法で動かす場合は、以下の記述部分も書き換えてくださいね。

$通知音の設定で選択した通知音のファイル名【タブ】se_2

上記の「se_2」の部分を「se_2.mp3」みたいに書けばいけるはずです。

機能ごとに通知音設定を呼び出す記述

次に、「通知音設定を呼び出す記述」の紹介です。
こちらは、機能別に通知音を設定するために必要な部分になります。

お好きなdicのお好きな場所に、以下の記述をまるっとコピペしてください。
個人的なおすすめは、通知音を設定したい機能の近くや、通知音を設定の大元となる記述の近くだと後々もわかりやすくておすすめではあります。

#=================================
#通知音の設定
#=================================
#使い方
# (「残り時間お知らせタイマー」の通知音を鳴らす)
# (現在設定されている「残り時間お知らせタイマー」の通知音の名前)
#上記2つの「」の中には、以下の【タブ】以下の文字と全く同じ文字列をいれる必要があります
# $なんの機能の通知音の設定をするのか【タブ】残り時間お知らせタイマー
#じゃないとうまく動かないです。よろしくね。
#=================================

*残り時間お知らせタイマーの通知音の設定
$なんの機能の通知音の設定をするのか【タブ】残り時間お知らせタイマー
:今の設定は、(現在設定されている「残り時間お知らせタイマー」の通知音の名前)だね。(「残り時間お知らせタイマー」の通知音を鳴らす)
>通知音の設定メニュー

これだけです!

なお今一度リマインドしておきたいのですが、この記述は「通知音を設定したい機能の数だけ書く」必要があります。

例えば、リマインダーとタイマーに別々な通知音を設定したい、という場合には、上記の記述をもうひとつ分、コピペする必要があるのです。
一方で、通知音を設定したい機能はひとつしかないよ!という場合には、この記述もひとつ書くだけで問題ありません。

複数の機能に別々な通知音を設定する方法

ここからは、この記述のだいごみである、「複数の機能に別々な通知音を設定する書き方」を説明します。

ここでは例として、「りまいんだーくん」と「お知らせたいまー」という機能に通知音をつける、といった風な記述にしておきます。
このままの変数名で使ってもいいですが、お好きな変数名に書き換えて使っても大丈夫です。

下記の記述をお好きなdicにコピペしてください。

*リマインダーの通知音の設定
$なんの機能の通知音の設定をするのか【タブ】りまいんだーくん
:今の設定は、(現在設定されている「りまいんだーくん」の通知音の名前)だね。(「りまいんだーくん」の通知音を鳴らす)
>通知音の設定メニュー

*お知らせタイマーの通知音の設定
$なんの機能の通知音の設定をするのか【タブ】お知らせたいまー
:今の設定は、(現在設定されている「お知らせたいまー」の通知音の名前)だね。(「お知らせたいまー」の通知音を鳴らす)
>通知音の設定メニュー

なお、以下のこの部分は、ただ単にリマインダーやタイマー機能のメニュー項目の中から呼び出されるための文字列です。

*リマインダーの通知音の設定
*お知らせタイマーの通知音の設定

ですので、どこかとそろえる必要はありません。
お好きに書き換えてお使いください。

「通知音を鳴らす」ための関数をトーク内に書く

さて、これで通知音の設定を行う記述は書けましたが、このままでは肝心な「音を鳴らす」ことはまだできません。
なので、そのための記述を追記していきます。

まず前提として、一緒に通知音を鳴らしてしゃべらせたいトークの冒頭に、(「残り時間お知らせタイマー」の通知音を鳴らす)という関数を追加してください。
カギカッコ「」の中は、上記の説明をもとにお好みで書き換えたものと同じ文字列にしてくださいね。

これは、以下のような感じに書けていればOKです。

*残り時間お知らせタイマーのトーク
:(「残り時間お知らせタイマー」の通知音を鳴らす)あと3分だよ!

(「残り時間お知らせタイマー」の通知音を鳴らす)という関数の中には「\![sound,play,sounds/se_1.mp3]」といった文字が入れられています。
これは、音を鳴らすためのさくらスクリプト(コマンドのようなもの)です。

なので、以下のように書いた時と同じ意味になるのです。

*残り時間お知らせタイマーのトーク
:\![sound,play,sounds/se_1.mp3]あと3分だよ!

これで、トークが表示されると同時に通知音も鳴らせるようになりました!
ちなみに、里々の記述でもさくらスクリプトを使ってもどちらでも動くのでお好みでどうぞ。(前述したものが里々の記述で、後述したものがさくらスクリプトです)

ちなみに、以下のように音を鳴らすための関数を文末に書くと、トークの文章を全て表示し終わった時に音が鳴ります

*残り時間お知らせタイマーのトーク
:あと3分だよ!(「残り時間お知らせタイマー」の通知音を鳴らす)

上記の例のように、トークの内容が短い場合は文頭でも文末であってもそんなに違いは感じないかもしれません。

どんな感じになるかやってみたい方は、長文のトークのうしろに\![sound,play,sounds/se_1.mp3]を置いて試してみてくださいな。

satori_confで初期値の設定をする

最後に、satori_conf.txtで通知音の初期値を設定しておきます。

これをやらないと、いちいち関数名が表示されてしまいます……。
なお関数名とは、()で囲まれている文字のことです。

では、satori_conf.txt内の「@初期化」という文字よりも下の部分に、以下の記述をコピペしてください。

$現在設定されている「残り時間お知らせタイマー」の通知音の名前【タブ】通知音1
$「残り時間お知らせタイマー」の通知音を鳴らす【タブ】\![sound,play,sounds/se_1.mp3]

【タブ】の文字は削除して、その場所でTABキーを押して、空白を挿入してくださいね。

上記のように記述すると、「残り時間お知らせタイマー」の通知音の初期設定として通知音1が鳴るようになります。

初期設定として通知音を鳴らさない場合

もし、初期設定として通知音を鳴らないようにしたい場合は、以下のように書いてください。

$現在設定されている「残り時間お知らせタイマー」の通知音の名前【タブ】通知音オフ
$「残り時間お知らせタイマー」の通知音を鳴らす【タブ】【タブ】

【タブ】【タブ】となっている部分は、両方とも削除して、2回TABキーを押して空白を挿入してください。

TABキーで挿入する空白に関しては、サクラエディタなど、「TABキーによる空白が入力されているかどうかが目で確認できるテキストエディタ」を使うと分かりやすいですし、目視で確認できるので確実です。

上記のように書くことで、初期設定として、通知音を鳴らさないようにできます。

複数の機能に別々な通知音を設定した場合

複数の機能ごとに通知音を設定する場合も、書き方は同じです。

さきほど挙げた「りまいんだーくん」と「お知らせたいまー」という機能を例に初期設定の記述を書くと、こんな感じになります。

$現在設定されている「りまいんだーくん」の通知音の名前【タブ】通知音1
$「りまいんだーくん」の通知音を鳴らす【タブ】\![sound,play,sounds/se_1.mp3]
$現在設定されている「お知らせたいまー」の通知音の名前【タブ】通知音2
$「お知らせたいまー」の通知音を鳴らす【タブ】\![sound,play,sounds/se_2.mp3]

【タブ】の文字は削除して、その場所でTABキーを押して、空白を挿入してくださいね。

これで、「りまいんだーくん」の通知音の初期設定としては通知音1の音、「お知らせたいまー」の通知音の初期設定としては通知音2の音が設定されます。

記述をちょこっと解説

ここからは、この記述についての解説です。
どうやって動いてるのか知りたい、という人は目を通してみてください。

動けばいいんだよそれで!という人は読み飛ばしちゃって全然大丈夫です。

\q[]で囲われている部分は選択肢

この記述は、「機能別に通知音を設定する」をなるべくすっきりした記述で実現させるため、ほとんど関数と変数で動いています。
そんなわけなので、変数がうまく代入できないと、ちゃんと動きません

以下のように、\q[]で囲われている部分は選択肢です。

\q[通知音1を聞いてみる,通知音の設定_通知音1を聞いてみる]

つまり、「_通知音をきく」みたいに書いた時と全く同じ意味になります。

選択肢の前にアイコンなどを表示させたいので、\q[]で囲むこのような記述にしています。

「機能ごとの通知音の設定」の仕組み

  • (現在設定されている「残り時間お知らせタイマー」の通知音の名前)
  • (「残り時間お知らせタイマー」の通知音を鳴らす)

この2つの関数に、「機能ごとの通知音の設定」が保存されます。

$なんの機能の通知音の設定をするのか【タブ】りまいんだーくん
:今の設定は、(現在設定されている「りまいんだーくん」の通知音の名前)だね。(「りまいんだーくん」の通知音を鳴らす)

この部分の、りまいんだーくんと書かれている部分の文字は、「必ず全てそろえる」必要があります。

例えば以下のように書いてしまうと…:

$なんの機能の通知音の設定をするのか【タブ】すっごいリマインダーの通知音
:今の設定は、(現在設定されている「りまいんだーくん」の通知音の名前)だね。(「りまいんだーくん」の通知音を鳴らす)

「通知音を設定する大元の記述」を経て、新しくこんな関数が産まれてしまいます。

  • (現在設定されている「すっごいリマインダーの通知音」の通知音の名前)
  • (「すっごいリマインダーの通知音」の通知音を鳴らす)

でも、こんな関数はどこにも使われていません。

通知音の設定をしたいのは(現在設定されている「りまいんだーくん」の通知音の名前)と(「りまいんだーくん」の通知音を鳴らす)という関数なのに、これでは新しい関数を誕生させただけになってしまいます。

つまり、

$なんの機能の通知音の設定をするのか【タブ】りまいんだーくん

この1行の【タブ】のうしろに指定した文字列の通知音に関して、「通知音を設定する大元の記述」を通して変更を加えるよ、という記述なのです。

そんな仕組みで、この通知音の設定記述が動いています。

コメント

タイトルとURLをコピーしました