読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



BGMを鳴らす

Pygame

無音の世界で寂しかったので今回はBGMを鳴らしてみます。現在の仕様ではBGMイベントを作り、マップをロードするときにBGMを鳴らすようにしています。音楽の再生の方法はBGMと効果音の再生(2008/5/11)で解説してるので参照してください。BGMはTAM Music FactoryさんからMP3をお借りしてます。ここの曲大好きです。

pyrpg19.zip
f:id:aidiary:20100807181533p:plain

BGMイベント

まずフィールドかお城のイベントファイルを見てください。下のようなBGMイベントが追加されています。

 BGM,field
 BGM,castle

fieldやcastleはMP3ファイルのファイル名です。この場合、フィールドマップではfield.mp3、お城のマップではcastle.mp3を再生することを意味しています。BGMはすべてbgmフォルダに入っています。このイベントファイルをロードするのはMapのload_event()でしたね。

    def load_event(self):
        """ファイルからイベントをロード"""
        file = os.path.join("data", self.name + ".evt")
        # テキスト形式のイベントを読み込む
        fp = codecs.open(file, "r", "utf-8")
        for line in fp:
            line = line.rstrip()  # 改行除去
            if line.startswith("#"): continue  # コメント行は無視
            data = line.split(",")
            event_type = data[0]
            if event_type == "BGM":  # BGMイベント
                self.play_bgm(data)
            elif event_type == "CHARA":  # キャラクターイベント
                self.create_chara(data)
            elif event_type == "MOVE":  # 移動イベント
                self.create_move(data)
        fp.close()

    def play_bgm(self, data):
        """BGMを鳴らす"""
        bgm_file = "%s.mp3" % data[1]
        bgm_file = os.path.join("bgm", bgm_file)
        pygame.mixer.music.load(bgm_file)
        pygame.mixer.music.play(-1)

BGMイベントのときplay_bgm()を呼び出しています。play_bgm()ではそのまま再生するだけです。再生の方法はBGMと効果音の再生(2008/5/11)を見てください。まあ2行で音が鳴るので簡単ですね。

BGMはマップをロードするときにメモリに読み込む点に注意してください。あらかじめロードしておかなくても速度的には問題なさそうです。