技術情報
BMSプレイヤーを開発するにあたって、役立つ情報などが載っているサイトをまとめていきます。
BMS command memo (JP)
BMSファイルの仕様について。
LR2beta3 スキンcsv仕様書 - .REDのファイル倉庫
BMSプレイヤー「LR2」のスキンファイルの仕様について。
おとゲマZ - CharatSoft.com
音ゲーの作り方の紹介。初級者向け。
キー音制限の廃止
BMSプレイヤーで天下を取ったあかつきにはBMSの次世代拡張を広めてやろうなどと妄想しております。
まずはキー音制限の問題をどのように解決するかについて考えていましたが、よい案が提案されていたのでそれを発展させた形式にしたいと思います。
Sonorousによって提案されたBMS拡張
提案されている案は、このページの括弧英数字キーの章です。
これは簡単に言えば、キー音の番号を丸括弧()で囲って字数制限をなくすというものです。
自分は単純に数値の桁数を増やすことしか考えていなかったのでいいなと思いました。
ただ、思想的に異なる点も多いのでこれを参考に新しい仕様を考える方向で進めています。
まず、丸括弧()で囲うのは冗長なので、キー音はスラッシュ/で区切って記述するようにします。
先頭と終端のスラッシュ/をどうするかは未定です。
必須にすれば従来のBMSとの違いが明確になりますが見た目が美しくありません。
今回は先頭と終端のスラッシュ/を必須にしたと仮定して進めます。
#00111:01000000
は
#00111:/01/00/00/00/
となります。
また、前ゼロや数値0は省略可能です。
#00111:01000000
は
#00111:/1////
となります。
数値の一致比較は、前ゼロの有無を区別しない、大文字・小文字を区別しない、という風にします。
8a 008a 8A
これらは全て同一のものとみなします。
#WAVxxなどのヘッダ部分についてはスラッシュ/は不要(むしろ付けてはいけない)で、数値0の省略を禁止します。
量子化BMS
BMSデータに関する面白い試みが行われていました。
ここで公開されている「tonkatsu」は「L9999999999999^99999999999」や「Sofa $15 -> $1」に並ぶ新たなベンチマーク譜面になる予感がします。
思ったけど8bit - Stereoのデータでも2^8^2=65536個の音が必要になるな
— よーすく (@Yoskex) 2015年9月6日
8bitステレオの場合は256段階のサンプル音を左右それぞれ用意すればいいのでは?
— rokina (@lokina) 2015年9月6日
@lokina それめちゃめちゃ頭いい
— よーすく (@Yoskex) 2015年9月6日
9ビットステレオまでならいけるんじゃね
— rokina (@lokina) 2015年9月6日
16ビットステレオから桁落としすることになるが
— rokina (@lokina) 2015年9月6日
前者はともかく後者は間違いなくLR2吹っ飛びそう
— よーすく (@Yoskex) 2015年9月6日
BMSEで編集可能な前提で考えると、まず44.1kHzを192分音符で再現する場合テンポは13781.25BPMとなる。小数点以下がちょうど1/4なので浮動小数点数で正確に表現できる。
— rokina (@lokina) 2015年9月6日
1小節を1秒にするなら小節長は71.77734375 これはBMSEでは編集できない単位なので1小節1秒にはできない。
— rokina (@lokina) 2015年9月6日
16bitステレオだと1サンプルあたり32bitで表すことになるが、これをBGMレーンと直接対応させるなら、WAV定義数は32種類となる。同時発音数が多すぎると不安定になるため、ユニットをもっと大きくして8ビット(256個)x2とする。この場合専有するBGMレーンは最大4本となる
— rokina (@lokina) 2015年9月6日
定義数は256x4=1024個。ZZの範囲内に余裕で収まる。
— rokina (@lokina) 2015年9月6日
(正確にいうと1個目は"0"なので定義する必要がないので埋まるのは1020個)
— rokina (@lokina) 2015年9月6日
2個のWAVを同時再生すると単純に波形が加算されるという前提の議論なので実際の再生時にうまくいくとは思えないが、とりあえずこのまま進める。
— rokina (@lokina) 2015年9月6日
符号なし整数なら単純に上位8ビットと下位8ビットに分ければいいだけだが、符号付きとなるとちょっと考え方が面倒に……
— rokina (@lokina) 2015年9月6日
下位ビットの255個は2進表現で
— rokina (@lokina) 2015年9月6日
0000 0000 0000 0001 (+1)から
0000 0000 0111 1111 (+127)までと
1111 1111 1111 1111 (-1)から
1111 1111 0000 0000 (-127)までになるのか?
で上位ビットの255個は
— rokina (@lokina) 2015年9月6日
0000 0000 1000 0000 (+128)から
0111 1111 1000 0000 (+32640)までと
1111 1111 0111 1111 (-129)から
1000 0000 1000 0000 (-32640)まで
どうでもいいけどこれって、著作権的にまずい曲でつくったら法に触れる?
— よーすく (@Yoskex) 2015年9月6日
計算上はこう分けられるってだけで実際にはちゃんと鳴らないだろうし素直にプラスとマイナスで別扱いにしたほうがいいなこれ
— rokina (@lokina) 2015年9月6日
とんでもなく細かい定義はnazoやLR2だとFPSぶんしか処理されず、bmx2wavは意外とうまくいってくれるって感じがある
— よーすく (@Yoskex) 2015年9月6日
bmx2wavは単純なWAV連結でやってるっぽいから理論上の音になるんだよね
— rokina (@lokina) 2015年9月6日
LR2とかはリアルタイムで再生する都合上最小単位に限界がある
— rokina (@lokina) 2015年9月6日
なぜかわからないけど、とんでもなく細かい定義してるbmsをbmx2wavで変換すると、最初の2秒位は音が変に潰れるんだよな
— よーすく (@Yoskex) 2015年9月6日
1と0並べてたらわけわからなくなってきたから考えるのやめる
— rokina (@lokina) 2015年9月6日
+1~+127 と (+1~+127)*256 でプラス側は254個
— rokina (@lokina) 2015年9月6日
-1~-128 と (-1~-128)*256 でマイナス側は256個
合わせて510個
LRで2倍になるので1020個
なんか面倒になってきたから片側647段階(約1/102)に桁落としして再現するやつにするか…
— rokina (@lokina) 2015年9月6日
ロキナさんがほんとに作る方向で考えてると思わなかった。。。(失礼
— よーすく (@Yoskex) 2015年9月6日
戯言に付き合ってもらっちゃって申し訳ないというかありがたいありがたい
— よーすく (@Yoskex) 2015年9月7日
クソプログラムが出来たので試しにBOFU用の147秒の曲を変換してみたら、RGSS3だと変換自体に10分ほどかかって出てきたのが25.5MBのBMSファイル
— rokina (@lokina) 2015年9月6日
BMSEで開こうとしたが4分たっても読み込み終わらない
— rokina (@lokina) 2015年9月6日
@lokina BMSファイルだけでで25MBとか何がどうなってるのか非常に気になります
— ctc (@cure_to_coma) 2015年9月6日
@cure_to_coma 簡潔にいうと、波形自体をBMSのノートとして置いたものです。1秒間に44100サンプルが2ちゃんねるあるので、秒間密度は約88.2kノーツとなります。
— rokina (@lokina) 2015年9月6日
56万ノーツのplanZのBMSが1.2MBほどであったことを参考にすると25.5MBのこれはおよそ1200万ノーツある計算になる
— rokina (@lokina) 2015年9月6日
bmx2wavで変換を試みたら分解能が限界以上といわれて変換すらできなかった
— rokina (@lokina) 2015年9月6日
ちなみに10分前に起動したBMSEはまだ開かない
— rokina (@lokina) 2015年9月6日
>BMX2WAV の分解能の限界は 13440 です
— rokina (@lokina) 2015年9月6日
マジか…
— rokina (@lokina) 2015年9月6日
うーん
— rokina (@lokina) 2015年9月6日
テンポが狂ってる代わりに分解能自体は最短192分音符でやってるからいけるはずなんだが、小節長が長すぎたかな
— rokina (@lokina) 2015年9月6日
1秒のWAVでの実験は成功してるので大丈夫です
— rokina (@lokina) 2015年9月6日
大丈夫とは
— rokina (@lokina) 2015年9月6日
30秒くらいのいい感じの音ネタないですかね
— rokina (@lokina) 2015年9月6日
とんかつボイス使うか
— rokina (@lokina) 2015年9月6日
小節長短くしてみたら変換くっそ速くなった なんで
— rokina (@lokina) 2015年9月6日
とんかつボイス6秒だけどサンプルとしてはまあ十分だな
— rokina (@lokina) 2015年9月6日
https://t.co/6Dhcj8VhbV
— rokina (@lokina) 2015年9月6日
風呂のとんかつボイスをBMSにしました。多分LR2で再生してもなんのことか分からないと思いますが、bmx2wavで変換すると全てが理解できます。
さっきの148秒の曲は分解能の問題は解決できたけど結局メモリが足りなくてWAVにできなくて断念した
— rokina (@lokina) 2015年9月6日
とんかつボイス、545833ノーツです
— rokina (@lokina) 2015年9月6日
WAV1個あたりが1サンプルしかないからLR2だと始めた瞬間に終了扱いにされるのかあ
— rokina (@lokina) 2015年9月6日
対策を講じてみたがどっちにしろLR2じゃ再生できないのでやめます
— rokina (@lokina) 2015年9月6日
ちなみに全く参考にならないと思いますが、さきほどのBMSを「bmx2wav」でWAVに変換するとこうなります。(これはさらにMP3に変換してあります)https://t.co/LG3deJrqnI
— rokina (@lokina) 2015年9月6日
さすがにサンプリング周波数を1/4まで落とすとクッソ痛え高音ノイズが入るな
— rokina (@lokina) 2015年9月6日
今回の実験でわかったのは量子化ビット数が9程度でも案外いい感じに聞こえるということ
— rokina (@lokina) 2015年9月6日
重要なのはサンプリングレートだってはっきりわかんだね
— rokina (@lokina) 2015年9月6日
LR2やuBMPlayだとどうあがいてもプチプチいって終わりなのほんとカス
— rokina (@lokina) 2015年9月6日
さっきのBMS、本当は何がしたかったかというとですね
— rokina (@lokina) 2015年9月6日
「あの方式で特定の音声を再現した場合、著作権的にどうなのか」という思考実験なんですね
— rokina (@lokina) 2015年9月6日
あのBMSには波形どころか振幅の情報すら入ってないんですよ。普通に考えればBMS本体だけを以ってどの曲であるかはほとんど絶対に特定できない。
— rokina (@lokina) 2015年9月6日
たとえばあれを使って何かしらの曲をBMSに変換、そのデータを公開することは、不正アップロード足りうるか
— rokina (@lokina) 2015年9月6日
まあ著作権の概念はどうでもいいんですけどちょっとした暗号通信に使えそうな
— rokina (@lokina) 2015年9月6日
内部FPSが44100で動作するBMSプレイヤーとか誰か開発しませんかね?
— rokina (@lokina) 2015年9月6日
半分の22100FPSあれば十分ですよ。
— rokina (@lokina) 2015年9月6日
さっきのBMSをリアルタイムで正常に演奏できる本体が開発されたら開発者に5万円くらいあげそう
— rokina (@lokina) 2015年9月6日
突っ込むだけで勝手に音切りしてくれる夢のようなツール(ただし実際にプレイすると終始ベベベベベベベベって鳴ってる
— よーすく (@Yoskex) 2015年9月6日
XBMSプロジェクト
XBMSプロジェクト
BMSの仕様を網羅することを前提としたXML形式のBMS規格。使われていません。
難波 拓哉(@kju_8)/2013年10月10日 - Twilog
XBMSプロジェクトが開始された頃のツイートログです。
L.SMKさんのBMSプレイヤー開発プロジェクト
ブログ情報land3939.info | 新BMS開発関連 (削除されています)
フォーラム新BMSプレイヤー開発・新BMS規格定義フォーラム (削除されています)
企画書新BMSプレイヤー企画書 (削除されています)
ネットで呼びかけを行って開発参加者を集めていましたが、実作業が本格化する前にプロジェクトが凍結となりました。
フォーラムにはプログラマー8名、スキンデザイナー2名、その他約40名が集まっていました(2016/3/18)。
2017/9/24
L.SMK さんよりプロジェクト凍結の報告があり、記事を更新しました。
@founfain 突然のご連絡失礼します。該当記事の削除をお願いしたいです。現在でのプレイヤー開発は完全凍結しております関係となります。よろしくお願いします。https://t.co/h5OiwiFeA1
— L.SMK (@land3939) 2017年9月21日
以下はプロジェクトが活発だった頃のL.SMKさんのツイートです。
BMSプレイヤー作り手ェ
? L.SMKー帽子Style (@land3939) 2014年7月30日
俺もDirectXをガチで勉強して、新しいBMSプレイヤー開発をしたいんだけどさ、、、仕事があるから無理があるんだよね
? L.SMKー帽子Style (@land3939) 2014年8月14日
遠からず次世代のBMS規格について既存の計画を昇華させたい事と、新しいBMSプレイヤーの開発をコネと自分の知識を活かして開発をしたいと声小申上
? L.SMKー帽子Style (@land3939) 2014年8月28日
BMS環境調査アンケート作った https://t.co/1D1PBYpuG9
? L.SMKー帽子Style (@land3939) 2014年8月29日
新しいBMSプレイヤー開発とか新BMS規格とかアンケートとか:http://t.co/xYYoIOZBIZ
? L.SMKー帽子Style (@land3939) 2014年8月29日
・BMSプレイヤーとかBMS新規格制定に向けたフロー http://t.co/hbqVRjQpGv とりあえずまだ妄想段階なのでご留意を
? L.SMKー帽子Style (@land3939) 2014年8月30日
新規格については、元々難波くんが前プロジェクトで用意していたアレ(https://t.co/tiSDzNXutB)があるので、これを引き継いで考えたいです。あと身内のBMS作家を巻き込みます
? L.SMKー帽子Style (@land3939) 2014年8月30日
機能云々よりも、現在は「BMSを譜面視覚化させて演奏できる」「新規格をソースコード変換できるようにする」が現状の課題だからまだ先ですよ?
? L.SMKー帽子Style (@land3939) 2014年8月30日
新BMSプレイヤー開発(予定)メンバーの一人がMac版開発に意欲を示しています。つまり、Mac対応にも希望が見えている。その前に開発自体の希望を見いだせという話だが
? L.SMKー帽子Style (@land3939) 2014年9月3日
【BMS規格アンケート】https://t.co/QZlC3v9ICY … BMS制作に関わる方を調査対象にしたアンケートです。ご協力お願いします。
? L.SMKー帽子Style (@land3939) 2014年9月3日
10月からはまず「BMSの再生部分」の開発に取り組もう
? L.SMKー帽子Style (@land3939) 2014年9月3日
来月の新BMSプレイヤー開発に向けて、プログラム方面に興味ある方、BMS規格制作に興味ある方はお声かけください。
? L.SMKー帽子Style (@land3939) 2014年9月20日
再掲 改めてBMS規格に関するアンケート。一応ですが、BMSプレイヤーに対するアンケートではないよ! https://t.co/QZlC3v9ICY
? L.SMKー帽子Style (@land3939) 2014年9月21日
新BMSプレイヤー開発のお話、とりあえず近日にフォーラム作ろうと思います。
? L.SMKー帽子Style (@land3939) 2014年9月27日
明日は新BMSプレイヤー開発フォーラムを立ち上げるぞい!
? L.SMKー帽子Style (@land3939) 2014年10月3日
今日の夜、新BMSプレイヤー開発フォーラム解説予定です
? L.SMKー帽子Style (@land3939) 2014年10月4日
【告知】新BMSプレイヤー開発・新BMS規格定義フォーラム完成しました。開発に関わる予定の方、興味のある方はご登録お願いします。http://t.co/kDlhSE2X7K また、参加希望の方は別途申請があり、「開発参加・権限申請」フォーラムにて受付しております。
? L.SMKー帽子Style (@land3939) 2014年10月5日
そろそろBMSプレイヤー開発の一歩踏まないとな!
? L.SMKー帽子Style (@land3939) 2014年11月3日
「LR2」
? L.SMKー帽子Style (@land3939) 2014年11月17日
皆伝を取れるようになったのはこのプレイヤーのお陰。現状あるプレイヤーの中では最高傑作。しかしよく落ちる。私はこれを超えるプレイヤーを開発したい。
来年の目標?BMSプレイヤー公開ですよ(白目)
? L.SMKー帽子Style (@land3939) 2014年12月30日
頑張ってプログラミン言語を覚えて、昔のプログラマー脳を取り戻して、開発進捗を進めたい(願望)
? L.SMKー帽子Style (@land3939) 2015年1月4日
明日からBMSプレイヤー開発着手するからな
? L.SMKー帽子Style (@land3939) 2015年1月13日
ごめんなさい、一万年ぶりに新BMSプレイヤー開発・新BMS規格定義フォーラム見ました
? L.SMKー帽子Style (@land3939) 2015年1月26日
新BMSプレイヤーの開発はメインのプログラマー来る2月中旬まで辞めて、企画書と企画発表用pdfとか作って、今日の夕方以降にアウトプットすることに決めた。
? L.SMKー帽子Style (@land3939) 2015年1月29日
【お知らせ】BMS新規格用にどなたでも書き込める雑談トピックを作りました。何卒。 http://t.co/kDlhSEkyfO
? L.SMKー帽子Style (@land3939) 2015年2月1日
新BMSプレイヤーフォーラムの登録認証を変更。メール認証方式へ。ものすごくSPAMがうざかったので仕方なく。。。 http://t.co/kDlhSEkyfO
? L.SMKー帽子Style (@land3939) 2015年2月3日
@DJ_MIMA BMSプレイヤー開発するも、ゲーミングプログラムセンス皆無だったので、机上作業をメインに頑張ります。(実装は全部投げる)
? L.SMKー帽子Style (@land3939) 2015年2月9日
いま!!!!!!新BMSプレイヤーの!!!!企画書書いてる!!!!!!!!
? L.SMKー帽子Style (@land3939) 2015年3月11日
とりあえず新BMSプレイヤー企画書うp http://t.co/QeqsRhn0aa
? L.SMKー帽子Style (@land3939) 2015年3月11日
フォーラムにもいずれ書くけど、新BMSフォーラムここ最近SPAMが酷くて、メールを私が認証する形になってます。認証されたい方は私にリプ投げてくれれば対応します。
? L.SMKー帽子Style (@land3939) 2015年3月12日
一部の拡張は、BMS規格側というより、プレイヤー側が上手い具合に解釈するプログラムを作る必要があるしなぁ
? L.SMKー帽子Style (@land3939) 2015年5月8日
言語的な意味で、WindowsとMacに両対応したBMSプレイヤーになる方向性に変わりました。終わり。
? L.SMKー帽子Style (@land3939) 2015年5月8日
とりあえずBMSを再生させるプログラムを作らせるところからやってもらいます。超地道です。
? L.SMKー帽子Style (@land3939) 2015年5月8日
BMS command memoの地雷にある説明の
? L.SMKー帽子Style (@land3939) 2015年5月8日
>聴き取りづらいですが、赤いとげとげのオブジェクトに触れたとき、「dosukoi」 が鳴らされます。
>Dosukoi は相撲絶叫です。 【doθkoi】
がじわじわくる
@HY_RORRE 一緒に新規格の方向性と、エディターの開発方面メインでやってもらおうかと
? L.SMKー帽子Style (@land3939) 2015年5月10日
@HY_RORRE プレイヤー開発と並行してやろうかなと考えている
? L.SMKー帽子Style (@land3939) 2015年5月10日
新BMSプレイヤー開発・新BMS規格定義フォーラムhttp://t.co/6YevM7hyqX
? L.SMKー帽子Style (@land3939) 2015年5月11日
SPAM対策を更に加えました。ゲストの方がフリーのところに書き込めますが、承認制です。
新しいBMSプレイヤーでは、その辺りの特殊な遊び方時のランプやスコアを残せるようにしたい(DB量増加)
? L.SMKー帽子Style (@land3939) 2015年5月14日
@HY_RORRE ちょっと前辺りからBMS規格のスレッドに走り書きしてるから、なんか規格関連で自分用メモあったら書き込んでー
? L.SMKー帽子Style (@land3939) 2015年5月14日
あと、エディターと一緒に、新しい企画用の翻訳プログラムも一緒に作ってもらうかもしれない。
BMSプレイヤー製作、六月中旬ごろにリアル打ち合わせします,,,,
? L.SMKー帽子Style (@land3939) 2015年5月21日
@HY_RORRE BMS規格の研究とかして、ある程度理解出来る様にはしていてー
? L.SMKー帽子Style (@land3939) 2015年5月22日
@HY_RORRE 追加
? L.SMKー帽子Style (@land3939) 2015年5月23日
とりあえずLR2で再生できるレベルのBMSを再生可能なuBMplay的なのを作れたら...
@HY_RORRE 再生出来るやつをうまくプレイヤー側の実装参考にしたり、新規格用の簡易再生プレイヤー開発に使えるような形にしたいかなあ。
? L.SMKー帽子Style (@land3939) 2015年5月23日
REDさんのスキン関連意見は開発進めたら色々と聞き出さないとなぁ
? L.SMKー帽子Style (@land3939) 2015年5月23日
昨日からちょびちょび呟いてましたが、新BMSプレイヤー要望やら、開発に役立ちそうなtipsのある方、こちらのフリーフォーラムにてどしどし書いてください。開発時参考にします。http://t.co/6YevM7hyqX
? L.SMKー帽子Style (@land3939) 2015年5月25日
ひで部さんのツイート見直してわかったことは、「今回の開発は、色々なメディアや再生方法を実現させるための”ライブラリ”を”自作”しなければならない」ということだ。
? L.SMKー帽子Style (@land3939) 2015年5月27日
これによりflv再生できるプラグインを開発しなければならくなった。完。
? L.SMKー帽子Style (@land3939) 2015年5月27日
音ゲー板のBMSスレをなんとなく見てるんだけど、なんも生産性も無い奴らが書き込んでいるだけだった
? L.SMKー帽子Style (@land3939) 2015年5月28日
新しいBMSプレイヤーの要望やら新しいBMS規格の要望や意見はこちらへどうぞhttp://t.co/6YevM7hyqX
? L.SMKー帽子Style (@land3939) 2015年6月8日
@OaSoMoSaO とりあえずプレイヤーを作るにあたって、αやβとして楽しんでもらう為の前身ソフトを作って、ソレを元に開発したい所。本当は六月中で話して開発スピード上げたかったけど、仕方なし
? L.SMKー帽子Style (@land3939) 2015年6月15日
@K0ZiR0 そんな話ありましたなぁ。ちなみにSDL開発なんで一応両対応予定ですよ。Win開発優先ですが。
? L.SMKー帽子Style (@land3939) 2015年6月22日
? L.SMKー帽子Style (@land3939) 2015年6月29日
BMS新プレイヤーや新規格の要望草案あったらこっちへ http://t.co/kDlhSE2X7K
? L.SMKー帽子Style (@land3939) 2015年6月30日
金曜日は新BMSプレイヤーのメインプログラマーとの会合があるわけだが、それに伴い、前身として制作をトレモプレイヤー予定する。そんでもって、希望するモノかなんか募集。リプライかなんかで投げてください。
? L.SMKー帽子Style (@land3939) 2015年6月30日
来週は開発関連やら、BGA関連に手を付けることにしよう
? L.SMKー帽子Style (@land3939) 2015年7月13日
早く開発進めたい
? L.SMKー帽子Style (@land3939) 2015年7月23日
LR2IRがこんな状況に陥ってしまったとは。本当に開発スピード早めないとシャレにならなんな...
? L.SMKー帽子Style (@land3939) 2015年7月23日
@HY_RORRE そうそう、相方のプログラマーが中間発表デスマで二週間動けないらしい。
? L.SMKー帽子Style (@land3939) 2015年7月25日
あと、手隙で良いからプログラムのソース部分ある程度俺に解説してもらえると助かるかもしれない(開発支援的な意味で
開発もそうだけど、BGAも頑張らなければ
? L.SMKー帽子Style (@land3939) 2015年8月1日
新BMSプレイヤー云々はまったりやってるので、期待はせずに、出来たらすごいなー的な生暖かい目で見ていてください。
? L.SMKー帽子Style (@land3939) 2015年9月2日