BMS Starter Pack 2009 (redistributed)

  • This package was exhibited for about 2 years from June , and it stopped by bad condition of bms.ms. This is one of the most high-quality BMS starter pack.
  • BMS charts included in this package are wonderful. In particular, about appended charts for Double-Play mode.

JavaScript vs “Surrogate Pairs and Ideographic Variation Sequence”

  • '0123456789'.length === 10;
  • '𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡'.length === 20;

Thus, wrong example:

var hexadecimalNumericCharacterReferences = [], i = 0, codePoint = 0;
while (i < String.length) {
    codePoint = String.charCodeAt(i);
    hexadecimalNumericCharacterReferences.push('&#x' + codePoint.toString(16).toUpperCase() + ';');
    i += 1;
}
The contents in this hexadecimalNumericCharacterReferences Array:
Case '01':
['&#x30;', '&#x31;']
Case '𝟘𝟙':
['&#xD835;', '&#xDFD8;', '&#xD835;', '&#xDFD9;']

This is not UTF-8 but CESU-8. In HTML5, surrogate blocks (U+D800 - U+DFFF) are replaced to . In application/xhtml+xml, XML parse error is caused by surrogate area. But we can correct this easily.

if (!String.prototype.codePointAt) {
    /* Polyfill; */
}
var hexadecimalNumericCharacterReferences = [], i = 0, codePoint = 0;
while (i < String.length) {
    /* codePoint = String.charCodeAt(i); */
    codePoint = String.codePointAt(i);
    hexadecimalNumericCharacterReferences.push('&#x' + codePoint.toString(16).toUpperCase() + ';');
    /* i += 1; */
    i += (codePoint < 0xFFFF) ? 1 : 2;
}

If text editors use WSH, IE10+ users can use polyfill. (E.g., JScript macros on EmEditor, Mery, Sakura Editor, and more.)

Case '𝟘𝟙':
['&#x1D7D8;', '&#x1D7D9;']
Case '葛󠄁飾区':
['&#x845B;', '&#xE0101;', '&#x98FE;', '&#x533A;'] // 葛󠄁
Case '葛󠄀城市':
['&#x845B;', '&#xE0100;', '&#x57CE;', '&#x5E02;'] // 葛󠄀
Case '🎹💢':
['&#x1F3B9;', '&#x1F4A2;']

My anxiety about the decimal numeric character reference

x-sjis:
Netscape Navigator 2.0 (18 September, 1995) or later
Shift_JIS:
Internet Explorer 3.0 (13 August, 1996) or later; limited to Japanese version? or "x-sjis"?
Netscape Navigator 3.0 (19 August, 1996) or later
Unicode:
Netscape Navigator 4.0 (11 June, 1997) or later
Internet Explorer 4.0 (30 September, 1997) or later
Opera 6.00 (29 November, 2001) or later
UTF-8 Test Page
Hexadecimal numeric character reference:
Internet Explorer 5.0 (18 March, 1999) or later // Windows 98SE has IE5 by default
Netscape 6.0 (14 November, 2000) or later
Opera 6.00 (29 November, 2001) or later (?)
Decimal numeric character reference:

IE4 or later, NN4 or later

ユニコード番号による数値文字参照(&#44032;の形)

Microsoft Internet Explorer 4以上や Netscape Navigator 4以上では、numeric character references(数値文字参照、例えば &#65; でASCIIコード65(10進数表記)の文字である"A"を表わす)使用時に、UNICODE番号を使用できます。さらに、Internet Explorerでは、エンコードが日本語の時でもハングルを同時表示できます。

IE4/NN4 were supporting that certainly.

IE/NN 3.x were supporting that partially?:

動作環境: IE3.0,Netscape3.0(Windows) IE4.5,Netscape4.5(Macintosh)以上で確認済み

Internet Explorer 3やNetscape Navigator 3では文字参照がShift_JISのコードポイントってことを知らないヤツってナンなの?ゆとり?

Browsers in those days probably knows only the character sets of Latin-1. Therefore when an HTML page is encoded by Shift_JIS, the character of Shift_JIS would be referred to by numbers after &#256;... maybe.

If my above-mentioned supposition is right, maybe this is dangerous.

Perhaps if Shift_JIS encoded html, IE/NN 3.x parse NCRed "日本語" (U+65E5, U+672C, U+8A9E)

not
"&#26085;&#26412;&#35486;"
but
"&#37882;&#38523;&#36074;"

In 21st century browse, "&#37882;&#38523;&#36074;" is as "鏺陻質" (U+93FA, U+967B, U+8CEA).

Backward compatibility was lost already. I think that the cord point of Unicode would rather be transmitted correctly than a document is altered by an ignorant browser dishonestly. I'd always use hexadecimal numeric character reference from now on.

StepMania was supporting BMS already

Hi! I'd like to add that StepMania also supports playing BMS. Use the theme that support "beat" mode and/or "IIDX-AC" noteskin.

Hi! I'm very thankful to your useful information. Quotation from “”:

  • [NotesLoaderBMS] Improve BMS loading: [theDtTvB]
    • Ignore time signatures before the notes for the steps to be more synchronized.
    • Load BPM changes properly. Many songs with BPM changes no longer freeze.

I didn't notice this news for a long time. I'm making an effort so that my present work may be brought to an end as soon as possible. After having brought work to an end, I'd investigate about StepMania. I'd like to execute that by .

forgetalia beyond

  • When you cannot browse Twitter: //cerebralmuddystream.nekokan.dyndns.info/soft/forgetalia_byd.zip
  • I think of this simplicity desirably. Even if fgt-byd doesn't implement “autoplay”, I'm not surprised.

BPMマイナスがあるけどクリア出来るbmsテスト

  • LR2において、すべてのvisible notesが通過した後で負数BPMが発動した場合、stage clearが可能です。
  • このchart sampleはさらに、未定義の#STOPによってscrollをskipし、「負数BPMの後方に存在するvisible note」をも「既に通過したもの」としてLR2に誤認させています。
  • この誤認が成立する理由を私は知りません。時間軸上に配置されるnotes' positionの事前計算と、clear/failed判定時の基準に、食い違いがあるのではないか、と考えられますが、確認はしていません。
  • 負数BPMや負数STOPの挙動には互換性が保証されないので、仮にLR2で“Real-Reverse”からの復帰が可能になったとしても、それはLR2専用の手法になる可能性が高いでしょう。
  • “Dstorv[ego]”の疑似逆流は、理論上は「事前計算による超高精度scrollが可能な機種」すべてで成立する手法であり、実際にLR2, Sonorous, IIDXv/HDX, uBMplayでうまくいきます。

返信

Johnnyです。Dstorv[Ego]解説してくれた方がいらっしゃった模様。BMSEって小節長の設定・表示限界ってあったのね。改めて見ると何この教材差分。http://ctconnected.blog.fc2.com/blog-entry-10.html

これは素晴らしい解説記事! 私が書くことがほとんどなくなって安堵しています。

仰るとおりBMSEやiBMSCには各種の制限があるので、譜面作成者は注意が必要ですね。簡単な確認方法は:

  1. 対象BMS fileをcopyする。
  2. copied BMS fileをBMSEやiBMSCで開き、何も変更せず上書き保存する。
  3. 対象BMSとそのcopyを、WinMergeRekisaなどで比較する。

譜面作成にText Editorを(も)用いる作家さんは現在でも案外いらっしゃるし、Chart Editorに任せられる箇所とそうでない箇所を切り分けるだけでも効率が違うので、可能なら差分作成前に確認しましょう〜

Dstorv[Ego] 感想 (諸事情で投稿できなかったので日記に掲載)

技術的な解説はctcさんが既に書いておられるので ( http://ctconnected.blog.fc2.com/blog-entry-10.html )、私は若干の蛇足を附させていただきます。

通常の譜面としては無作法な箇所がいくつかあります。「曲を知らずとも読譜を手掛かりとして正しい演奏に辿り着ける」という公平さは、オートプレイ可能なBMSにおいて必ずしも重視されませんが、その点が保証されるなら、スクロールトリックでさえも規範的な仕掛けとして通用するに違いありません。差分として居直る形になっていて、そこは勿体ないかな、とは思いました。

差分作者のカラオケショウとして眺めれば、この差分はとても刺激的です。導入部分は映像がああなのだからあの形しかありえないし、随所の仕掛けに関してもおおむね共感できる気がします。

  • 疑似逆流は暗黙のロングノート感というか、譜面が歌えています。自分がこれを思いつけなかったのが悔しいです。ctcさんの神解説では「計算が面倒」とされていますが、「小節を9/8ずつコマ送りで足していく」みたいな大雑把なところから真似してみると腑に落ちやすかったです。ルーツはtoy musical 2のヘンクかなと思っていました。BOFoon2012の#TITLEは、恥ずかしながら昨日初めて知りました。
  • #163-#172のスキップノートは、音符の強勢の感覚を視覚的に訴えてきます――この仕掛けを他の箇所で使っても、ここほどにはマッチしないでしょう。叩かせないことの意味をよくわかっておられると思いました。
  • 図と地が反転した地雷は、プレイヤーにキーアップを強制することによって、キー音のスタッカート感をまさに体感させます。#RANDOMは「音楽的な地雷」の緊張感を維持するために十全に働きます。音楽に没入するための地雷を私は初めて見たし、いまのところこれ以外の音楽的な活用法を思いつきません。
  • 停止による疑似変速は昨年末にも見かけましたが ( https://nekokan.dyndns.info/~hitkey/diary1311.php#D131227 )、改めて眺めると、これは「sleep()がない言語における疑似sleep()」とか、プログラミング言語に由来する発想なのかな、とふと思いました。

曲の表情を譜面の形に落とし込むのが抜群に巧いと思いました。単純な目新しさよりも、技術が何のために使われているかのほうがよほど重要だし、そういう意味で作家の方々を挑発する『譜面』たりえていると思います。

先日の訂正と、Dropbox Replacer 0.1.

年12月のECMA-262 3rd Editionにおいて、RegExp.$n(RegExp Objectのwritable propertyは、書き換え可能であるがゆえに――常に後方参照として使えるということが保証されないために――廃止されたのでした。String.replace()文字列値引数の中に現れる'$n'に関しては、何の問題もありません。失礼しました。

版BookmarkletをIE6に対応させてみました。IE6-11, Chrome 39, Firefox 34, Opera 12.17で動作確認済み(467文字)。動かない場合は、getAttribute()非標準の第二引数,4』を削ってください:

javascript:(function(c,p,s,l,i,h,t,a){i=l.length;while(i--){a=l[i];h=a.getAttribute('href',4).replace(p,s);t=decodeURI(a.innerHTML.replace(p,s));if(a.getAttribute('href',4)!==h||a.innerHTML!==t){a.href=h;a.innerHTML=t;a.style.cssText+=c}}}('font-weight:bolder;font-style:italic;',/^https?:\/\/(?:(?:www|dl)\.dropbox\.com|dl\.dropboxusercontent\.com)\/(u|s)\/([!-=@-~]+)(?:\?[0-9=a-z]+)?$/,'https://dl.dropboxusercontent.com/$1/$2',document.getElementsByTagName('a')))

Dropbox Replacer

Replaces Dropbox URL texts and anchors which are not hotlinks.

Fileを直接downloadできないDropbox URLsを、直接downloadできる形に整形するJavaScript。これは間違いなく有用でしょう――BMS eventなどでdownloaderを用いて一括downloadする場合は特に!

詳細は参照先に全部書いてあります。さっそく“TRIDENT”でありがたく使わせていただこうと思います!

と思いきや、BrowsersのError consoleいわく、“Syntax Error”が発生している……

ぱっと指摘できる箇所は、UserScript版の32行目あたりで括弧の数が合っていないように見えることと、

if(link[i].href.match("dropbox")) ){

↑12月8日版にて修正済み。

その前の行の繰り返し文は継続条件が永遠に真であり続ける気がするので心配なことです。

for(var i=0;link.length;++i){

↑12月8日版にて修正済み。

あとBookmarklet版の条件文の“|”はBitwise Operatorなのですが、もしかして: “||

if(link[i].href!=link[i].href.replace(pattern,string)|link[i].innerHTML!=decodeURI(link[i].innerHTML.replace(pattern,string))){

Errorなく動作するように微修正してみた版(意図通りかは不明ですが、動作は確認済みです):

/*jslint browser, this */
(function (window) {
    "use strict";
    var link = window.document.getElementsByTagName("a");
    var pattern = /https?:\/\/(?:(?:www|dl)\.dropbox\.com|dl\.dropboxusercontent\.com)\/(u|s)\/([^?]*)(.*)?$/;
    var string = "https://dl.dropboxusercontent.com/$1/$2";
    var i = link.length;
    while (i) {
        i -= 1;
//      if (link[i].href !== link[i].href.replace(pattern, string) ||
//              link[i].innerHTML !== decodeURI(link[i].innerHTML.replace(pattern, string))) {
        if (link[i].href.indexOf("dropbox") !== -1) {
            link[i].href = link[i].href.replace(pattern, string);
            link[i].innerHTML = decodeURI(link[i].innerHTML.replace(pattern, string));
            link[i].style.fontWeight = "bolder";
            link[i].style.fontStyle = "italic";
        }
    }
}(this));

以下は釈迦に説法とは思いますが、

  • IE6のような古いBrowsersの場合、配列(のようなObject)のlengthを毎周評価すると毎周DOMを走査して遅くなるようなので、最初に一回だけ見て値をcacheする方法が推奨されます。最近のJS engineはそのあたりも最適化してくれるらしいので、もはや忘れてよい方法ですが。
  • 正規表現の最後の“([^?]*)”と“(.*)”はJSLintに警告されます(JSLintが正規表現に厳しいわけ)。dropboxのURL仕様をよく知らないので何ともいえませんが、もしcapturing group #1が[0-9a-z]しか使用せず、もしcapturing group #2が必ずPercent-encodingされていることが保証されているなら、比較的簡単に修正できそうです。
  • $1-$9”による後方参照はもはや非推奨だった気がします。代わりにRegExp.exec()String.match()の戻り値の配列が使えるかもしれません。12月9日の訂正記事を参照してください。
  • というわけで、自分が使うならもう少し変えると思いますが、ひとまずはこのへんで。

Mid2BMS version

おや、ちょうどよいところに、さきほどの“Dropbox Replacer”のtest対象が。UserScript版(の私家版)はちゃんと機能しています。Bookmarklet版は試していません。

覚えていない
トラック名が半角スペースのみで構成される場合に音切りが正常に出来なくなるバグを修正
BPMが 300以上 or 50未満 の場合に警告を出すように修正。
に修正した箇所、i--i++になっていたのを修正
覚えていない、多分SignalProcessingとか
midiのベロシティの種類を減らす機能を追加
midiの音符の長さの、最大値を制限する機能を追加
BMS to BGM Converter ver1.01 に沿うように、ファイル名のリネーム規則を修正
purpleモードで、エラーが無いのに必ずエラーが出るのを修正
コンダクタートラックのトラック名が指定されていない場合にバグるバグを修正、最初の4行を消去する必要がなくなった

久々に覗いたらMid2BMS関連の文書がものすごく充実していました。

備忘録

  • いつのまにかplugout4.comが消えている……ので年末の俺はdead linksを修正すること
  • いつのまにかwiki@nothingのnazobmplay導入解説(64bit Windows7でのDLL登録など)が消えている……ので年末の俺は非公式軽量版helpも修正すること
  • 「ものすごく怪しいmail」なんて届いた記憶ないよ!
  • Dstorv_act1_ego.bme”によってSonorousが最後だけ惜しい

web.archive_bms.ms_list.txt by Nekokan the explorer

ただいま戻りました!(今頃) Internet Archiveは9月時点ではまだURL総当たり通じたようで、間一髪といったところでしょうか。最近のWayback Machineは延々待たせた挙げ句に力尽きて「寄付してくれ頼む」と表示しだすくらいで、相当に切羽詰まっているように見えます。余裕がある方は寄付しましょう。

歴史を辿りづらいBMS界隈において、Nekokanさんの仕事は常に重要です。普段のServer業務が歴史の継続のために大きな役割を果たしている一方で、このlistは参照されるべき考古学的な資料として大きな役割を果たすでしょう。たとえば、公式siteが仮復帰にとどまっているためにBMS packageがまともにdownloadできない“endless music”などが、listには列挙されています。Nekokan would express coolest URI in BMS. (何)

返信

http://www.lr2.sakura.ne.jp/index2.html

何の問題もなくLR2残ってますやん!

ああ、何事もなくてほっとしました。良い知らせをもたらしてくださったことに感謝します!

先日までは確かに消えていたし、この状態が続くとなるとiswebやbms.msの消滅に匹敵する巨大な影響があったはずなので、本当に復旧は喜ばしい出来事です。更新停止から5年を経てなお事実上の標準であり続ける状況も、それはそれで問題という気もしますが、仕方ないね。

Johnnyです。お疲れ様です。s.i.nに意欲作が投稿されたので、こちらにも回してみます。良かったらメモ帳にでもドロップして下さい。bit.ly/1wwyvR3

お疲れ様です、素晴らしい仕掛け差分でした! 年末までに感想を投稿したいと思います。

そもそも“Dstorv”という曲に関して何の事前情報も持っていなかったので、こういう暗記勝負の遊戯性は評価しようがない身なのですが、それでも#277からの仕掛けには感じ入るものがありました。Toy Musical2の某譜面にも通じる発想だと思いますが、勘が良い方はこれだけで察してしまえるので、ここで言及はしません。

復帰中

  • 現在は8月からのBMS関連情報を集める傍ら、HTMLの書き方を思い出そうと努力しています。
  • G2R2014非公式package反省会packageをdownloadしました。有志の方々に感謝いたします。
  • LR2 web (link rot): http://www.lr2.sakura.ne.jp/index2.html

    すくなくともには復旧していたことが確認されています。

  • LR2 unofficial: http://teracoya.nekokan.dyndns.info/lr2mirror.html https://nekokan.dyndns.info/~teracoya/lr2mirror.html
  • Pomu Tools (link rot): http://sakukoba.ninja-x.jp/pomu_pms/tool.html
  • Poni-lab: https://sakukoba.ninja-x.jp/ponila/
  • BMS command memoやBMSE非公式Helpにおけるdead linksは、年末にまとめて修正する予定です。
  • Typo: BGAEncAdv - change.txt: “・2013-06-10(Ver0.033)”, “・2013-06-12(Ver0.034)”
  • いったん目を離すと置いてけぼりにされてつらい:

    • : GIMP 2.8.14 Installer for Microsoft Windows
    • : VLC media player for Windows x64 2.1.5
    • : 秀丸ファイラーClassic 64bit版 Ver1.12
    • : Rust (Programming Language) 0.12.0
    • : IETester v0.5.4
    • : Java 8 Update 25 / Java 7 Update 71(72)
    • : Avast 2015
    • : VMware Player 6.0.4
    • : FFFTP Ver.1.99β 64bit
    • : PHP 5.6.3
    • : K-Lite Codec Pack Version 10.8.5
    • : LibreOffice 4.3.4.1
    • : WinRAR 5.20 beta 4
    • : Firefox 34.0
    • : Thunderbird 31.3.0

BMS to BGM Converter ver1.01 ver1.02

If you can't see Twitter:
https://www.dropbox.com/s/g3esngr4u9wku0f/B2BC101.rar
https://www.dropbox.com/s/t4cl0m3ou3gzdur/B2BC102.rar
About:

This tool is better “BGM Lane Sorter”. BGM lanes are grouped by defined-names.

Usage:
  1. Put target BMS files (*.BMS|BME|BML|PMS|BMX|TXT) in the B2BC102\BMS\ directory.
  2. Run Game.exe.
  3. See B2BC102\CBMS\ directory.
Note:

BGM lanes may increase more than 32. Authors should confirm the result using iBMSC which doesn't reduce BGM lanes.

Typo from “つかいかた.txt”:

2014/10/12 ver1.01 ・名称を「BMS to BGA Converter」に決定

Appendix iBMSC Theme files

If you can't see Twitter:
https://dl.dropboxusercontent.com/u/11910478/iBMSCtheme.ZIP
About:
BMSEmdk.Theme.xml:
BMSE modoki (BMSE style)
BMSEmdkp.Theme.xml:
BMSE style for 9buttons PMS
Forme.Theme.xml:
Theme for umt_ki
TTmdk.Theme.xml:
TexTage style (I think that this idea is fascinating.)
How to merge “Migu 1VS” font (Forme.Theme.xml uses):

See “Migu 1VS/2DSフォントを手元で合成する方法 - itouhiroメモ

Distributing merged *.ttf is prohibited by a license, so please be careful.