Last active
March 22, 2016 10:49
-
-
Save cat2151/d35667ee8227919165c3 to your computer and use it in GitHub Desktop.
プチコン3号 備忘録
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'[例] SPLIT("A_B_C_", "_") → 戻り値は配列 "A"と"B"と"C"と"" | |
DEF SPLIT(__I$, __D$) | |
DIM __R$[0] | |
VAR __IDX | |
WHILE INSTR(__I$, __D$) != -1 | |
__IDX = INSTR(__I$, __D$) | |
PUSH __R$, MID$(__I$, 0, __IDX) | |
__I$ = MID$(__I$, __IDX + LEN(__D$), LEN(__I$) - __IDX - 1) | |
WEND | |
PUSH __R$, __I$ | |
RETURN __R$ | |
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
プチコン3号 MMLリファレンス | |
プチコン3号MML用参考、プチコン2号のサウンド関係マニュアル | |
http://smileboom.com/special/ptcm2/co_manual/p10.php#3 | |
プチコン3号MMLメモ | |
:コマンドは、:0~:15 の16ch指定可能 | |
ポルタメントについて。 | |
・L16C_Gで、 | |
・発音時間:16分音符2個ぶん | |
・ポルタメントタイム:16分音符2個ぶん | |
・つまりポルタメントがかかるのは16分音符2個ぶんの間ずっと | |
・ポルタメントタイムを短くしたいなら、L16C32_G32 | |
・もっとポルタメントタイムを短くしたいなら、L16C64_G32. | |
・挙動が表記に比べ複雑。詳しいことはぐぐるといいのかも | |
スラーとピッチベンド(をデチューンを使って実現)について | |
・例 O5C& @D32C& @D64C& | |
プリセットPCM音色にはどんなものがあるか | |
・MMLで@で使えるPCM音色は0~511(ユーザ音色や空を含む) | |
・128~130の3つはdrum setで、ノートナンバーごとに別PCM音色 | |
・0~511とdrumそれぞれ音色旨みのわかるピッチはまちまち | |
デチューンコマンドについて | |
・HELPにある「1音」とは、「全音1つ」の意味、つまり200centの意味である。 | |
・半音(100cent)デチューンしたいなら、+64か-64を指定する。 | |
WAVSETAする波形について | |
・16384サンプルのバッファに256周期で波形を書いて、基準ノートナンバー69で登録した場合、 | |
@D-4O4C で、プリセット波形のO4Cと概ね同じピッチになる。 | |
プチコン3号MML以外のメモ(3.02以降で未確認かも) | |
SMILEボタンから起動した場合のみの仕様 | |
・LOADで他プロジェクトのファイルをLOAD可能。 | |
例:LOAD"PRG1:WORK/AAA" ※WORKというPROJECTのAAAというファイルをSLOT1にロード。"PRG1:"のようにSLOTを明示的に指定しないとエラー。 | |
・EXECで他プロジェクトのファイルをEXEC可能。 | |
・LOAD同様、"PRG1:"のようにSLOTを明示的に指定しないとエラー。 | |
・このとき、カレントプロジェクトは、他プロジェクトのものになる。 | |
・EXECしたプログラムが終了したあとは、カレントプロジェクトは、 | |
実行直前のプロジェクトに戻る。 | |
・EXECでSLOTを指定しているため、 | |
指定SLOTにプログラムがあったらそれは上書きされて消える。 | |
・備考:EXECで、SLOT指定せず、SMILEボタンに登録したツールと同じプロジェクトのファイルを実行した場合、 | |
つまり通常SMILEボタンを使う流儀の場合は、 | |
内部的にはSLOT4にプログラムがロードされるため、 | |
SLOT0~3のプログラムは上書きされない。 | |
・参考 http://d.hatena.ne.jp/eidaht/20160320/1458432429 | |
FILESの隠し仕様 | |
・FILESの第一引数にプロジェクト名を指定できる。 | |
例:FILES"WORK"で、WORKというPROJECTのファイル一覧を取得できる。 | |
配列変数に格納して利用することも可能。 | |
現SLOTを知る方法 | |
プログラム先頭でBACKTRACE実行後にCHKCHR命令で画面に表示されたスロット番号を取得 | |
BACKTRACE:SLOT=CHKCHR(CSRX,CSRY-1)-48 | |
(3.02で解決済み、備忘)ハング原因と対策 | |
・BGMPLAY 128直後にBGMSET 128実行を繰り返すとハング | |
・再現コード(実行すると保存していないプログラムは消えるので、電源落としてもいい状態にしてから実行すること)> FOR I=0 TO 99999:IF I MOD 99==0 THEN ?I:ENDIF:BGMSET 128,"CDE":BGMPLAY 128:NEXT | |
・応急対策はBGMSET直後にWAIT 1を入れること。これでハングしなくなった | |
・バージョン3.02では、上記は修正された。上記コードでハングしなくなったことを確認した。上記にWAIT 1を入れる必要はなくなった。 | |
(3.02で解決済み、備忘)VSYNCちらつきバグ対策 | |
VSYNC後にfor空ループ999回を実行 ※New3DSでVSYNCが想定より短時間で終了するバグ。3.02で修正済み | |
プチコン3号公開キー | |
ソフトシンセWAVLPF:V3EN3JK1 ※Cutoff+reso、簡易オートメーション付 | |
DEMO SOUND: https://soundcloud.com/cat2151/wavlpf-demo-20150301 | |
説明書: https://miiverse.nintendo.net/posts/AYIHAAAEAAA5VHwlAmxH8Q | |
簡易リズムシーケンサ開発中:S344FD | |
処理落ちチェックツール(関数):N3ANEDRS | |
MICオシロスコープ: QKADJ3KD ※autoGain,noiseGate付 | |
MML移調: BA5XE33J ※scale変更付 | |
SPANIMやWAVSETの10行~1画面サンプルTIPS集: PE3X3NQE | |
MENU関数: T45XA3R4 ※簡易仕様。関数 MENU$() を呼ぶだけで使えます | |
リンク | |
プチコン3号 備忘録(Github.Gist版) | |
https://gist.github.com/cat2151/d35667ee8227919165c3 | |
プチコン3号 備忘録(Qiita版) | |
http://qiita.com/cat2151/items/c289b650d28006b78f92 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
?"PUSH TO START" | |
WHILE BUTTON(0): VSYNC 1: WEND | |
WHILE !BUTTON(0): VSYNC 1: WEND | |
A=MAINCNT | |
?"PUSH TO STOP" | |
WHILE BUTTON(0): VSYNC 1: WEND | |
WHILE !BUTTON(0): VSYNC 1: WEND | |
B=MAINCNT:C=B-A | |
SEC=C DIV 60 | |
MIN=C DIV 3600 | |
MS=SEC MOD 60 | |
?MIN;" MIN ";MS;" SEC" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
INPUT BPM | |
T0$=TIME$ | |
F0=MAINCNT | |
D=3600/BPM | |
F1=F0+D | |
WHILE 1 | |
VSYNC 1 | |
IF F1 < MAINCNT THEN | |
F1=F1+D | |
BEEP | |
INC CTR | |
?CTR,F1-F0,T0$,TIME$ | |
ENDIF | |
WEND |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment