2023-10-07に更新

Godot で BGM を付けようぜ(^~^)?

親記事から来た

📖 Godot って何だぜ(^~^)?

はじめに

kifuwarabe-futsu.png
「 お父ん、BGMを付けてくれだぜ」

ramen-tabero-futsu2.png
「 きふわらべファイター2.wav ファイルだけ 持ってるけど」

ohkina-hiyoko-futsu2.png
「 .wav は ファイル・サイズがでかいから、 .ogg にしましょう」

ramen-tabero-futsu2.png
「 無料の変換ツール 落ちてるかな?」

kifuwarabe-futsu.png
「 ネットで探すと 山ほどあるが」

ramen-tabero-futsu2.png
「 どれも 胡散臭いな…… 窓の杜で探してくれだぜ」

kifuwarabe-futsu.png
「 👇 読み方は分からないが これなんかどうだぜ?」

📖 fre:ac

ramen-tabero-futsu2.png
「 説明読んでも分からん 使ってみれば 分かるか……」

ramen-tabero-futsu2.png
「 Microsoft Apps を開いても 灰色のウィンドウが出てきただけだった。
インストールできない 終わり」

kifuwarabe-futsu.png
「 直せよ」

kifuwarabe-futsu.png
「 👇 じゃあ これは どうだぜ?」

📖 FlicFlac Audio Converter

ramen-tabero-futsu2.png
「 めっちゃ 分かりやすく 使いやすく .wav ファイルを .ogg ファイルに変換でけた」

Godot で、どうやって .ogg ファイルを鳴らすの?

ohkina-hiyoko-futsu2.png
「 Godot で、どうやって .ogg ファイルを鳴らすの?」

ramen-tabero-futsu2.png
「 さっぱり分からん」

202310__godot__06-2250--Musician.png

ramen-tabero-futsu2.png
「 👆 とりあえず Director の下に Musician を置こうぜ?
音楽のことは 全部 こいつに丸投げしよう!」

kifuwarabe-futsu.png
「 音楽ファイルは どこに置いてあるんだぜ?」

202310__godot__06-2254--Audio.png

ramen-tabero-futsu2.png
「 👆 res://audio/bgm の下に置いておいたぜ。後は任せたぜミュージシャン」

ohkina-hiyoko-futsu2.png
「 いつ鳴らすの?」

ramen-tabero-futsu2.png
「 シナリオ・ファイルで 指定したらいいんだろうけど……」

スクリプト設計

202310__godot__06-2258--Scenario.png

ramen-tabero-futsu2.png
「 👆 例えば !bgm きふわらべファイター2.ogg と書いておけば
BGM が鳴ることにしたらどうだぜ?」

202310__godot__06-2303--bgm.png

kifuwarabe-futsu.png
「 👆 鳴らないが」

ramen-tabero-futsu2.png
「 台本を読んで演技する人って 英語で何て言うんだぜ?」

ohkina-hiyoko-futsu2.png
「 パフォーマー(Performer;演者)じゃないの?」

ramen-tabero-futsu2.png
「 演者が BGMを鳴らすわけじゃないしな」

kifuwarabe-futsu.png
「 バックバンドのことかだぜ?」

ramen-tabero-futsu2.png
「 シナリオ というのが おかしいのかもしらん。
素直に プログラム(Program;進行表)という名前にした方がいいんだろうか?」

ohkina-hiyoko-futsu2.png
「 シナリオの上位概念として プログラムを置くの?」

kifuwarabe-futsu.png
「 コンピューターがいうプログラムと、
番組制作がいうプログラムは また別物なんだよな」

ramen-tabero-futsu2.png
「 分かった、 Director の下に AssistantDirector  を置こう!」

202310__godot__06-2325--AssistantDirector.png

ramen-tabero-futsu2.png
「 ScenarioPlayer とかいう造語を AssistantDirector に変更したぜ」

kifuwarabe-futsu.png
「 アシスタント・ディレクターと メッセージ・ウィンドウは どっちが偉いんだぜ?」

ramen-tabero-futsu2.png
「 アシスタント・ディレクターの方が 偉いと思いたいが……」

ohkina-hiyoko-futsu2.png
「 ユーザーの入力と、シナリオの強制力は どっちが強いの?」

ramen-tabero-futsu2.png
「 ユーザーも シナリオに従ってほしい」

ohkina-hiyoko-futsu2.png
「 メッセージ・ウィンドウが持っている メッセージ送り という働きが
かなりの強権で アシスタント・ディレクターなんか無視して
有無を言わさず メッセージ送り するわよ」

ramen-tabero-futsu2.png
「 うーん 裁量が ぐちゃぐちゃ だ……」

ohkina-hiyoko-futsu2.png
「 メッセージ・ウィンドウが持つべき権利は ウィンドウを消すから、次のメッセージくれ であって、
メッセージ送り ではないはずなのよ」

ramen-tabero-futsu2.png
「 じゃあ メッセージ・ウィンドウが シナリオを持っているのが悪くて、
アシスタント・ディレクターが セリフだけを千切って
メッセージ・ウィンドウに渡せばいいんだ」

#  状態遷移図
#  ーーーーー
#
#          +ーーーーー+
#          | はじめ |
#          +ーー+ーー+
#             |
#             |
# +ーーーーーーーーーー>+
# |           |
# |           V
# |       +ーーーーーーーー+
# |       | 0.非表示中 |
# |       +ーーー+ーーーー+
# |           |
# |           | シナリオ・データ設定
# |           |
# |   +ーーーーーー>+
# |   |       |
# |   |       V
# |   |   +ーーーーーーーーーーーーーーー+
# |   |   | 1.タイプライター風表示中 |
# |   |   +ーーー+ーーーーーーーーーーー+
# |   |       |
# |   |       | バッファーが空になった
# |   |       V
# |   |   +ーーーーーーーーー+
# |   |   | 2.完全表示中 |
# |   |   +ーーー+ーーーーー+
# |   |       ※上位のオブジェクトに指示待ちの通知を送る
# |   |       ※これにて自律を停止
# |   |
# |   |
# |   |       ※外部からの入力
# |   |       |
# |   |       |
# |   +ーーーー<ーー+ まだ続きがある。ページ・フォワード
# |        はい |
# |           |
# +ーーーーーーーーーーー+ すべての文字を吐き出した。オール・ページ・フラッシュド

ramen-tabero-futsu2.png
「 👆 完全な自律を停止して、外部からの入力を待つ状態遷移に変えなくてはダメだぜ」

ramen-tabero-futsu2.png
「 .clear_and_awaiting_order() みたいなメソッドを作るか」

ramen-tabero-futsu2.png
「 作った。そして調整して変更した」

        """
        !bgm きふわらべファイター2.ogg
        """,
        """\
        !choice 1,2
         ・6筋の7段目の駒を6段目に突く
         ・角道を止める
        """,

kifuwarabe-futsu.png
「 👆 これは セリフか? 命令か? どう区別する?」

        """
        !
        bgm きふわらべファイター2.ogg
        """,
        """\
        !
        choice 1,2
         ・6筋の7段目の駒を6段目に突く
         ・角道を止める
        """,

ramen-tabero-futsu2.png
「 👆 命令のメッセージは ! だけの行から始まるように 仕様を変更するか……?」

202310__godot__07-0208--BGM-o2o0.png

ramen-tabero-futsu2.png
「 👆 大改造して BGM の名前も検出できるようにしたぜ」

BGMを鳴らせだぜ

.kifuwarabe-futsu.png
「 👇 じゃあ BGMを鳴らせだぜ」

📖 Godot 音シュー02「BGMを鳴らす」

ramen-tabero-futsu2.png
「 👇 よし、鳴ったぜ。 デフォルトの音デカいから -20 db にしたぜ」

📺 動画

ページ送りの効果音を付けない?

ohkina-hiyoko-futsu2.png
「 効果音は付けないの? ページ送りとか、選択肢のカーソルの移動とか」

ramen-tabero-futsu2.png
「 シナリオとはまた別の理由で 鳴る音か」

.kifuwarabe-futsu.png
「 Godot では BGMと 効果音に 区別は無いのかもしれないな」

ramen-tabero-futsu2.png
「 👇 じゃあ 魔王魂で 無料の効果音探すか。10年ぐらい前から このサイト ある気がするな」

📖 魔王魂

ramen-tabero-futsu2.png
「 思ってるやつは 多分 無いだろなと思ったが 無かった。
仕方ないから それっぽいやつを 探すか」

📺 動画

ramen-tabero-futsu2.png
「 👆 効果音も付けた。 効果音も音デカいな」

ohkina-hiyoko-futsu2.png
「 選択肢を選んだときの 確定音も付けなさいよ」

📺 動画

ramen-tabero-futsu2.png
「 👆 付けた……、エンターキーの打鍵音の方が デケぇ」

親記事へ戻る

📖 Godot って何だぜ(^~^)?

.

ツイッターでシェア
みんなに共有、忘れないようにメモ

むずでょ

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント