サウンドクラスの音程指定について
Pyxelのリソース「サウンド」で音程をコード内で設定するときは文字列で指定しますが,リソースファイル内では数値で扱われます。文字列と数値の一覧表を掲載しますので,コード作成やファイル編集の参考にしてください。
※本記事のエディタ画面はpyxel 1.9版のものです。
※ドレミファソラシの音はCDEFGABとも表記されます。Pyxelのプログラムからset()命令で指定するときもこのアルファベット表記を使います。
音程一覧表
ソース欄:プログラムでset()命令で指定するときの文字列
リソースファイル欄:データファイルの記載値
※計算式で確認したい方は,Pyxelのコードを参照してください。
pyxel/sound.rs at main · kitao/pyxel · GitHub
set_notes()内の処理で文字列から数値変換
ソースコードでの指定
【公式サンプル サウンド API】
デモ https://kitao.github.io/pyxel/wasm/examples/04_sound_api.html
サンプルコード pyxel/04_sound_api.py at main · kitao/pyxel · GitHub
サウンドクラス
set(notes, tones, volumes, effects, speed)
文字列で音程、音色、音量、エフェクトを設定します。音色、音量、エフェクトの長さが音程より短い場合は、先頭から繰り返されます。
※公式APIリファレンス サウンドクラスの最初の「notes,tones,volumes,effects,speed」はプログラムから読み出しはできますが直接値の書き込みはできません リストの代入ができません。set()命令を使用しましょう。
04_sound_api.py のset()例
pyxel.sound(0).set( "e2e2c2g1 g1g1c2e2 d2d2d2g2 g2g2rr" "c2c2a1e1 e1e1a1c2 b1b1b1e2 e2e2rr", "p", "6", "vffn fnff vffs vfnn", 25, )
pyxel.sound(サウンド番号).set() で指定番号のサウンドに音が設定されます。
sound(snd).set(note,tone,volume,effect,speed)
・note :[CDEFGAB] + [#-] + [0-4] or [R]
「ド (低い) c0 c1 c2 c3 c4 (高い)」
「ファのシャープ f#0 f#1 f#2 f#3 f#4」「シのフラット b-0 b-1 b-2 b-3 b-4」
「休符 r」
・tone :[T]riangle [S]quare [P]ulse [N]oise
・volume:[0-7]
・effect:[N]one [S]lide [V]ibrato [F]adeOut
音色,音量,エフェクトの文字列の長さが音程より短い場合は、先頭から繰り返されます。
・speed
再生速度。1 が一番速く、数値が大きいほど再生速度は遅くなります。120 で 1 音の長さが 1 秒になります。
※speedだけ数値一つで指定。他は文字列で指定(大文字小文字どちらでも可,空白は無視)します。
リソースファイル内のファイル
※公式に推奨される操作内容ではありません
Pyxelのリソースファイルの拡張子は .pyxres ですが,構造はzipファイルのフォーマットで作成されています。リソースファイルの拡張子を .zip に変更すると展開して内容を確認できます。
例)sampl.pyxres の展開内容
pyxel_resourceフォルダ
image0
image1
music0 ← ミュージック0のデータファイル
sound00 ← サウンド0のデータファイル
sound01 ← サウンド1のデータファイル
sound02 ← サウンド2のデータファイル
sound03 ← サウンド3のデータファイル
sound04 ← サウンド4のデータファイル
tilemap0
tilemap1
version
サウンド番号とファイル名の関連が把握できれば,サウンドを複製したり,他のリソースファイルで作成したサウンドのデータファイルを取り込んでzipファイルを作成してリソースファイルに戻すこともできます。
サウンドのデータファイルの内容
sound00
1c1c18131313181c1a1a1a1f1f1fffff18181510101015181717171c1c1cffff
2
6
2330303323312300
25
2行目:音色 (0:Triangle / 1:Square / 2:Pulse / 3:Noise) のリスト
3行目:音量 (0-7) のリスト
4行目:エフェクト (0:None / 1:Slide / 2:Vibrato / 3:FadeOut) のリスト
5行名:再生速度(10進数) 1 が一番速く、数値が大きいほど再生速度は遅くなります。120 で 1 音の長さが 1 秒になります。
ミュージックのデータファイルの内容
music0
0001
0203
04
none
2行目:チャンネル1の再生リスト
3行目:チャンネル2の再生リスト
4行目:チャンネル3の再生リスト