ドレミファソラシド。
成果物
スペースキーで再生/停止を切替できる。
コード
import pyxel class App: def __init__(self): pyxel.init(96, 54, caption="Sound API") self.__set_sound() 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.play(self.ch1, [self.sound00], loop=True) self.is_play = True def __stop(self): pyxel.stop() self.is_play = False def __set_sound(self): self.ch1 = 0 self.sound00 = 0 self.notes = "c2d2e2f2g2a2b2c3" self.tones = "p" self.volumes = "6" self.effects = "n" self.speed = 30 pyxel.sound(self.sound00).set( self.notes, self.tones, self.volumes , self.effects , self.speed, ) App()
c2d2e2f2g2a2b2c3
がドレミファソラシド。
要点
play
/stop
ch
:0
〜3
sound
:0
〜63
note
tone
volume
effect
speed
上記のような構造になっている。
あとはAPIを把握すればOK。
オーディオAPI
sound(snd, [system])
サウンドsnd(0-63) を操作する (サウンドクラスを参照のこと)。systemにTrueを指定すると、システム用のサウンド64にアクセスできる
play(ch, snd, loop=False)
チャンネルch(0-3) でサウンドsnd(0-63) を再生する。sndがリストの場合順に再生する
stop([ch])
全チャンネルのサウンドの再生を停止する。ch(0-3) を指定すると該当チャンネルのみを停止する
サウンド class
set
set(note, tone, volume, effect, speed)
文字列で音程、音色、音量、エフェクトを設定する。音色、音量、エフェクトの長さが音程より短い場合は、先頭から繰り返される
set_note
set_note(note)
'CDEFGAB'+'#-'+'0123'または'R'の文字列で音程を設定する。大文字と小文字を区別せず、空白は無視される
- 音階:
CDEFGAB
=ドレミファソラシ
,#
=♯
(半音↑),-
=♭
(半音↓) - オクターブ:
0
〜3
- 休符:
R
pyxel.sound(0).set_note("G2B-2D3R RF3F3F3")
最大48 note。
1 小節 = 8 note 1 sound = 6 小節 = 6 * 8 = 48 note
set_tone
set_tone(tone)
'TSPN'の文字列で音色を設定する。大文字と小文字を区別せず、空白は無視される
pyxel.sound(0).set_tone("TTSS PPPN")
set_volume
set_volume(volume)
'01234567'の文字列で音量を設定する。大文字と小文字を区別せず、空白は無視される
pyxel.sound(0).set_volume("7777 7531")
set_effect
set_effect(effect)
'NSVF'の文字列でエフェクトを設定する。大文字と小文字を区別せず、空白は無視される
pyxel.sound(0).set_effect("NFNF NVVS")
所感
音が出た。ゲームでは音って大事。これでクオリティに雲泥の差が出る。
前回まで
- ラズパイ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画像をビットマップフォントとして読込・表示する(日本語表示)
対象環境
- 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