BGMのフレーズを作る。
獣を玉にいれて戦わせる人たちが道端でなにかを拾ったときの音。「テテテテーン♪」
仕様
- 1 pyxres = 64 sound
- 1 sound = 6 小節 (最大。4等でも可)
- 1 小節 = 8 note
- 同時発音数 = 1
- 音高 = 5 octave
SPEED
:1
〜99
TON
:t
,s
,p
,n
VOL
:0
〜7
EFX
:n
,s
,v
,f
TON
(音色)
値 | 英 | 和 |
---|---|---|
t |
Triangle |
三角波 |
s |
Square |
矩形波 |
p |
Pulse |
パルス波 |
n |
Noise |
ノイズ |
EFX
(効果)
値 | 英 | 和 |
---|---|---|
n |
None |
なし |
s |
Slide |
スライド(なめらかに変化する) |
v |
Vibrato |
ビブラート(音高が揺れる) |
f |
FadeOut |
フェードアウト(音量が減衰する) |
VOL
(音量)
0
〜7
。
画面構成
ショートカットキー一覧
キー | 意味 |
---|---|
← ,→ |
タイムラインの移動 |
↑ ,↓ |
フォーカス遷移:ピアノロール、効果ロール、TON 、VOL 、EFX |
Space |
再生/停止 |
L |
ループ ON/OFF |
ピアノロール
音の確認。キーボードをピアノ鍵盤に見立てた配置になっている。ピアノロール横にあるスクロールバーの範囲がキーボードに対応している。
key | 対応鍵盤 |
---|---|
1 行 |
黒鍵盤。音高+1 |
Q 行 |
白鍵盤。音高+1 |
A 行 |
黒鍵盤。音高+0 |
Z 行 |
白鍵盤。音高+0 |
PgUp |
音高(octave)を+1する: 0 〜3 |
PgDn |
音高(octave)を-1する: 0 〜3 |
1
キーは鍵盤で出す音色TONE
の変更Z
キーがド
(C
)の音である。そこからピアノ鍵盤の位置と連動している。(1オクターブ分)A
キーは休符- これらのキーを押下中に
Enter
キーを押下すると音符(ノート)を置ける - リアルタイム演奏はできなかった。反応が遅いため
詳細はソースコードをみて調査した。
キー操作だけで作曲する
- ピアノロール画面
-
←
,→
でタイムラインを移動させる -
PgUp
,PgDn
で音高pitch
を移動する(スクロール) -
Z
等で音を鳴らす - 2の最中に
Enter
キー押下してノートを置く -
↓
で効果ロールへ遷移
-
- 効果ロール画面
-
←
,→
でタイムラインを移動させる -
↑
,↓
でTON
,VOL
,EFX
間を移動する -
TON
にt
,s
,p
,n
、VOL
に0
〜7
、EFX
にn
,s
,v
,f
-
- 共通
Space
キーで再生・停止L
キーでループON/OFF切替Ctrl
+S
で保存ESC
で終了
以下ができない……。
SOUND
選択SPEED
選択- 指定位置にある音高の変更(追加でなく変更)
特に音高の変更ができないのは辛い。
不満
- ノートの範囲選択ができない
- 一括コピー・カット・ペースト(挿入・上書き)・削除(休符)できない
sound
間コピペできない
Q&A
音がつながってしまう。切りたい。スタッカートしたい
EFX
でF
を指定する
1ノートごとに指定する。元に戻す(つなげる)ときはEFX
でn
。
pyxresファイル
以下のように作曲したとする。soundがどう保存されているか解析してみた。
my_resource.pyxres
ファイルをコピーするmy_resource.pyxre.zip
とリネームする- 2を
unzip
コマンドで展開する pyxel_resource
というディレクトリができるsound00
ファイルを閲覧する- 以下のようなファイル内容だった
2626262d2d2dffff none none 333003 16
- 最終行の
16
はSPEED
である - 最終行より上の3行は効果である
TON
: なし(none
)VOL
: なし(none
)EFX
:FFFnnF
(333003
)* `FadeOut`=`3`, `None`=`0`と思われる
- 最初行は音高である(最後の2音は休符。
ff
となっていることから16進数と思われる)26
,26
,26
,2d
,2d
,2d
,ff
,ff
- MIDIと同じなら
0
〜127
までの128
音高ある。これを16進数にした?* pyxelのsoundは5オクターブしかないっぽい。1オクターブ=12音高。5オクターブ=60音高。
- 休符は
ff
(10進数(signed byte:-1
, unsigned byte:255
))。
この辺をちゃんと明らかにすればテキストエディタで作曲できそう。
というわけで調査用pyxresファイルを以下のように作った。
先述の手順にてsound00
ファイルの内容を見ると以下。
003b 0123 01234567 0123 30
以下のように判明した。
項目 | 値 |
---|---|
音高 | 16進数(00 〜3b )。休符=ff |
TON Triangle |
0 |
TON Square |
1 |
TON Pulse |
2 |
TON Noise |
3 |
VOL |
0 〜7 |
EFX None |
0 |
EFX Slide |
1 |
EFX Vibrato |
2 |
EFX FadeOut |
3 |
SPEED |
0 〜99 |
これでもうテキストエディタで作曲できる。
ショートカットキーの探し方
ソースコードを見るしかなかった。公式ドキュメントに書いてくれよ……。
std::map<char, int> NOTE_TABLE = { {'c', 0}, {'d', 2}, {'e', 4}, {'f', 5}, {'g', 7}, {'a', 9}, {'b', 11}, }; std::map<char, int> TONE_TABLE = { {'t', TONE_TRIANGLE}, {'s', TONE_SQUARE}, {'p', TONE_PULSE}, {'n', TONE_NOISE}, }; std::map<char, int> EFFECT_TABLE = { {'n', EFFECT_NONE}, {'s', EFFECT_SLIDE}, {'v', EFFECT_VIBRATO}, {'f', EFFECT_FADEOUT}, };
参考
- http://blawat2015.no-ip.com/~mieki256/diary/201902102.html#201902102
- https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%AB%E3%82%B9%E6%B3%A2
前回まで
- ラズパイ4Bにpyenvをインストールする(python 3.8.2)
- pyxelをインストールする(pyenv python3.8.2)
- pyxeleditorにおけるImageエディタの使い方
- pyxeleditorにおけるTileMapエディタの使い方
対象環境
- 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