doubledepth

ビーエム・エスパーザ(必殺技)

BMX2WAV v2の#RANDOM#ENDRANDOMは、たぶん変数のblock scopeとして理解できる。
#title flow test
#bpm 60
#wav11 01.wav
#wav22 02.wav
#wav44 04.wav
#wav66 06.wav
#wav88 08.wav
#wav99 09.wav
#wavbb 11.wav

#00111:1100000000000000

#random 2

#00112:0022000000000000

#if 1
#wav33 03.wav
#00113:0000330000000000
#endif

#00114:0000004400000000

#random 2
#if 1
#wavcc 12.wav
#00213:000000cc00000000
#endif
#if 2
#wavdd 13.wav
#00214:00000000dd000000
#endif
#endrandom

#if 2
#wav55 05.wav
#00115:0000000055000000
#endif

#00122:0000000000660000

#if 1
#wav77 07.wav
#00123:0000000000007700
#endif

#00124:0000000000000088

#endrandom

#00225:9900000000000000

#if 2
#wavaa 10.wav
#00211:00aa000000000000
#endif

#00212:0000bb0000000000
title = "flow test";
bpm = 60;
wav["11"] = "01.wav";
wav["22"] = "02.wav";
wav["44"] = "04.wav";
wav["66"] = "06.wav";
wav["88"] = "08.wav";
wav["99"] = "09.wav";
wav["BB"] = "11.wav";

data["001"]["11"] = ["11",,,,,,,];
{
    let value = getRandomInteger(1, 2);

    data["001"]["12"] = [,"22",,,,,,];

    if (value === 1) {
        wav["33"] = "03.wav";
        data["001"]["13"] = [,,"33",,,,,];
    }

    data["001"]["14"] = [,,,"44",,,,];
    {
        let value = getRandomInteger(1, 2);
        if (value === 1) {
            wav["CC"] = "12.wav";
            data["002"]["13"] = [,,,"CC",,,,];
        }
        if (value === 2) {
            wav["DD"] = "13.wav";
            data["002"]["14"] = [,,,,"DD",,,];
        }
    } // end of inner let scope

    if (value === 2) {
        wav["55"] = "05.wav";
        data["001"]["15"] = [,,,,"55",,,];
    }

    data["001"]["22"] = [,,,,,"66",,];

    if (value === 1) {
        wav["77"] = "07.wav";
        data["001"]["23"] = [,,,,,,"77",];
    }

    data["001"]["24"] = [,,,,,,,"88"];

} // end of outer let scope

data["002"]["25"] = ["99",,,,,,,];

if (value === 2) { // undefined global value
    wav["AA"] = "10.wav";
    data["002"]["11"] = [,"AA",,,,,,];
}

data["002"]["12"] = [,,"BB",,,,,];

Scopeの外のcode blockは、少なくともBMX2WAV上では(分岐指定時に明示的にcheckしない限り)演奏されない。この日記を書いているうちに書式違反に寛容になれそうな方法を思いついた! 寝る。

日記

BMS関連

拙作BMS
bubble / hitkey
二次配布BMS
ノイズの海と鯨 / moka
PARTY TIME IN MY DREAM / HAIJI
BMSE非公式ヘルプ
Lite
Lite-online
Full
Full-online
buglist
iBMSC
Web (Japanese version)
issues
BMS差分
a­nal­gam
boléro
Ketch­up
quovadis
SELF
yellows
Do not use non-ascii filenames
Brilliant Techno Square
雑多なメモ
bmsplayer data
bms benchmark
Secrets - Feeling Pomu 2nd
grid2sec
bmx2xxx
BMx Outliner
BMS command memo
BMS command memo (Japanese version)
BMS EVENT LITE
#RANDOM BMS list
BMS #OPTION command
BMS Bitmap test
Extended BPM
STOP Sequence
BMS Edge Cases
BMS extensions proposed by Sonorous (unofficial Japanese version)
BMS 2.0 (unofficial Japanese version)
BMS Editors
Do not use non-ascii filenames
BM98 Kikuchan Version 3.30 Revision #4.2
BMSON Checker
_wsh_bms2bmson.js

その他

HTML関連メモ
Dakuten on HTML
nest1000
EVS
Nervous Cascading
Source Han Sans test
User-Agent String
CSS Logical Properties