Soundを複数のChannelで鳴らす。一気に音楽っぽくなった。
成果物
コード
#!/usr/bin/env python3 # coding: utf8 import pyxel class App: def __init__(self): pyxel.init(96, 54, caption="Sound API. Multi sounds.") self.__set_music0() self.__play() pyxel.run(self.update, self.draw) def update(self): if pyxel.btnp(pyxel.KEY_SPACE): if self.is_play: self.__stop() else: self.__play() def draw(self): pyxel.cls(0) pyxel.text(0, 0, 'Please SPACE key: ' + ('PLAY' if self.is_play else 'STOP'), 7) def __play(self): pyxel.playm(self.music0, loop=True) self.is_play = True def __stop(self): pyxel.stop() self.is_play = False def __set_music0(self): self.__set_sounds() # ch1 = [pyxel.sound(0)] # ch2 = [pyxel.sound(1)] ch1 = [self.sounds[0]] ch2 = [self.sounds[1]] ch3 = [] ch4 = [] self.music0 = 0 pyxel.music(self.music0).set(ch1, ch2, ch3, ch4) def __set_sounds(self): self.sounds = [0, 1] self.__set_sound00() self.__set_sound01() def __set_sound00(self): # 主旋律(メロディ) self.__set_sound(0, "c2c2rd2e2e2e2c2 e2e2c2c2e2e2e2r d2d2re2f2f2e2d2 f2f2f2f2rrrr") def __set_sound01(self): # 伴奏 and ベース self.__set_sound(1, "c1g1c1g1c1g1c1g1 c1g1c1g1c1g1c1g1 d1a1d1a1d1a1d1a1 d1a1d1a1d1a1d1a1", tones='p', volumes='2', effects='f') def __set_sound(self, snd, notes, tones='t', volumes='6', effects='n', speed=26): pyxel.sound(snd).set( notes, tones, volumes , effects , speed, ) App()
どうやって作ったか
pyxeleditor
のサウンドエディタで作曲- ショートカットキーで音を探す
- 採譜してみて音長、スピード、休符を確認・調整
- 音色、音量、効果を調整
- 曲を完成させて保存する
- ピアノロールを見ながら脳内でテキスト置換してコーディング
いきなりc2
とか書き出すのは無理。脳内で音楽を再生させる能力はなかったので。
所感
これでゲーム音楽をつくれるぞ。あとは才能と技術と学習だけだ!
前回まで
- ラズパイ4Bにpyenvをインストールする(python 3.8.2)
- pyxelをインストールする(pyenv python3.8.2)
- pyxeleditorにおけるImageエディタの使い方
- pyxeleditorにおけるTileMapエディタの使い方
- pyxeleditorにおけるSoundエディタの使い方
- pyxeleditorにおけるMusicエディタの使い方
- pyxelのリソースにおける概念・制限まとめ
- pyxeleditorにおけるpyxresファイル形式まとめ
- pyxelのAPI調査
- pyxelで最小コード 窓を出す
- Pyxelで窓の境界線を消す
- 携帯ゲーム機の解像度
- pyxelで矩形を描画する
- pyxelで荒ぶる矩形
- pyxelでキーに応じて動く矩形
- pyxelで画像を描画する
- pyxelで画像をアニメーションする(スプライト。パラパラ漫画)
- pyxelで左右反転した画像を使ってアニメーションする
- pyxelでテキストを表示する
- pyxelで日本語を表示する1(ビットマップ・フォント)
- ビットマップフォント作成(TTF→PNG)
- pyxelでPNG画像をビットマップフォントとして読込・表示する(日本語表示)
- pyxelのAPIで音を鳴らす
- 画像、音声、動画をHTMLで再生する
- pyxelのAPIでSoundをつなげて鳴らす
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
- pyxel 1.3.1
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux