BMS（ビーエムエス、Be-Music Source file）とは、1998年、やねうらおとNBKによって考案されたMOD感覚で音楽製作、演奏が可能なファイルフォーマットである。初期は「BM98曲データ（Be-Music Data Format '98）」という別称も存在した。

元々は、KONAMIの音楽ゲーム『beatmania』を模したシミュレータにあたる『BM98』用の譜面データフォーマットとして開発されたため、現在では同様のシミュレータ（BMSプレイヤー）に用いる譜面データ（曲データ）、あるいはゲームシステム全体を指す場合が多い。

2000年代中盤頃までは、BM98をベースとして様々なプレイヤーが開発された経緯があり「ネットユーザーのPCには何かしらのBMSプレイヤーが入っている」と言われるほどの一大ムーブメントを巻き起こしていた。それに肖り、企業運営のコミュニティサイトでも同様のサービスが人気を博した（DJMAXなど）。人気が高かったが配布終了となった楽曲などは、2ちゃんねるやWinmxなどのP2Pを用いて第三者により拡散されることも多かった。現在はブームが沈静化しているものの、未だに新作BMS楽曲が作られるなどの根強い人気を保っている。かつてのBMS作曲家の中には、プロに転向した者や著名なボーカロイドプロデューサーも多い。

概要 
広義のBMSは基本的に「BMSファイル」、「WAVEファイル」または「MIDIファイル」、「ビットマップ画像ファイル」で構成される。BMSファイルは譜面を定義するファイルで、曲データの核を成すものである。WAVEやMIDIはBGMやキーを押した時の効果音 (SE) に、ビットマップファイルは演奏中に流れるムービー (映像、BGA) に使われる。

基本フォーマット 
ここでは基本となる、やねうらおが作成した初代『BM98』におけるファイルフォーマットについて解説する。その他のBMSプレイヤーでも同様の形式が使用されている。

 BMSファイルはヘッダ記述とオブジェクト記述からなる。ヘッダにはプレイ人数・曲名・初期BPM等や使用するWAVファイル、BMPファイルを定義する。
 オブジェクトには、譜面に関する記述で、どの音をどこに配置して、どの鍵盤で鳴らすかなどを定義する。
 書式は#aaabb:cccccccc (aaa:小節番号(000-999),bb:チャンネル,cc:オブジェクト配置)となる。

以下に簡単な記述の例を示す。

 *---------------------- HEADER FIELD
 #PLAYER 1
 #GENRE Sample
 #TITLE Sample
 #ARTIST Sample
 #BPM 120
 #PLAYLEVEL 5
 #TOTAL 100
 #RANK 2
 #bmp00 miss.bmp
 #bmp01 1.bmp
 #wav01 1.wav
 *---------------------- MAIN DATA FIELD
 #00111:01010101  // 第1小節の1キーに#WAV01を四分音符単位で配置
 #00211:0101010001010100  // 第2小節の1キーに#WAV01を8分3連+8分休符×2を配置

ヘッダ 
 #PLAYER x
 プレイヤ数を定義する。x= 1でSingle Play, 2でCouple Play, 3でDouble Play(省略時x=1)
 #GENRE
 曲のジャンルを定義する。
 #TITLE
 曲のタイトルを定義する。
 #ARTIST
 作曲者を定義する。
 #BPM
 BPMを定義する。指定なしの場合130
 #MIDIFILE
 MIDIファイルをBGMとして使用することができる。
 #PLAYLEVEL x
 レベルを指定。指定なしの場合3
 #RANK x
 判定ランクを指定。x=0でvery hard,1でhard,2でnormal,3でeasy(省略時x=3)
 #VOLWAV xxx
 元の音量を100としたときの全体の音量を定義する.省略時100
 #WAVxx yyyyyyyy.wav
 音声ファイル(WAVEファイル)を指定する.(xxは01-FF)
 #BMPxx yyyyyyyy.bmp
 画像ファイルを指定する(256×256,65536色のビットマップファイル).(xxは00-FF、00はPoor時の画像)
 #TOTAL xxx
 ゲージの増量設定(浮動小数点表記).省略時200+オブジェ数
 #RANDOM x
 分岐命令.1からxで指定した自然数の間まで乱数を生成.
 #if , #ENDIF
 分岐の開始、終了.
 #ExtChr
 Extended Object機能とを併用して使う.詳しくはを参照.

チャンネル 
 01 - BGMとして再生するWAVEファイルを指定する。
 02 - 小節の短縮化(10進/浮動小数)
 03 - BPM変更(16進数)
 04 - BGAの画像ファイル切り替え
 05 - Extended Object
 06 - Poor時のBGAを指定
 11-17 - 1P側の演奏オブジェクト(11-15は鍵盤、16がスクラッチで、17がフリーゾーン)
 21-27 - 2P側の演奏オブジェクト(1P側と同様)
 31-36 - 1P側の不可視オブジェクト
 41-46 - 2P側の不可視オブジェクト

きくちゃんバージョンで追加された拡張 
Ver.3.28からVer.3.29bまで
 #PLAYER 4(Battle Play)
Ver.3.29G8からVer.3.30R4.2まで
 #STAGEFILE aaa.bmp
 曲開始時に表示する画像ファイルを指定する。
 #RANK 4(?????)
 #BMP
 JPEGに対応。
 #ExtChr(仕様変更)
 チャンネルナンバーの追加
 07 - BGAレイヤー
Ver.3.31からVer.3.32まで
 #BGAn1 n2 x1 y1 x2 y2 dx dy
 拡張BGA領域を設定
 #WAVxx(xxを01 - FZまで追加)
 Materials
 #WAV、#BMPのファイル指定でMaterialsフォルダからwav、bmpファイルの指定が可能
 その他、下記のBMSの拡張の7Key化(BME読み込み対応)、拡張BPM変更、#BMPにPNG、GIF等の全てのSusieプラグインに対応。

BMSの拡張 
BMSファイルの拡張として「BME (Be-Music Extend format) ファイル」や「BMLファイル」、「PMSファイル」があり、BMEは『beatmania IIDX』のような7鍵盤とターンテーブル用の譜面データのために作られたファイル形式、BMLは『KEYBOARDMANIA』などで見られるような一定時間押し続けるロングノートに対応した形式、PMSは『pop'n music』のような9ボタン用譜面データのために作られたファイル形式である。

BMSは本体やツールの作者などにより様々な拡張が行われている。ここでは、よく使われている主な拡張を示す。

可視・不可視キーの拡張
7Key(8Line)化(ch18,19,28,29,38,39,48,49) - FlashTerminalより
可視・不可視キーの16進数化(ch.x1-xF) - mgqより
可視・不可視キーの36進数化(ch.x1-xZ) - ふぃーりんぐぽみゅせかんどより
ロングノート
(#LNOBJ xx) - rhythm-itより
(#LNTYPE 1,2 , ch5x,6x) - rhythm-it,mgqより
ストップシーケンス(#STOPxx yyy,ch09) - Delight Delight Reduplicationより
定義数の36進数化(ZZまで) - WAVはbemaniaDX,その他は名無しBMSプレイヤーより
拡張BPM変更(#BPMxx yy,ch08) - bemaniaDXより
BGAに動画を指定(#BMP aaa.mpg) - Lunatic Raveより
サブタイトル
(#TITLE aaa -bbb-) - bemaniaDXより
#SUBTITLE bbb - ナナシグルーヴより
譜面タイプ(#DIFFICULTY x) - ナナシグルーヴより
地雷オブジェクト(#WAV00 xx,chD1-D9,E1-E9) - ナナシグルーヴより

派生フォーマット 
BMSの書式を元にして改変・独立した派生フォーマットも複数存在する。これらも各種シミュレータ用のデータフォーマットとして利用される事が多い。

MBM (MacBeat) (独自拡張のヘッダ「#WAVCMD」を追加したもの)

フットペダル、ダブルスクラッチ 
beatmania IIIやEZ2DJのような5鍵盤とターンテーブル、フットペダルやO2JamやDJMAX Onlineの7Keyを再現した形式として、LOAが考案したMixWaver1.0betaまで搭載されていたEFFECTモード用の形式(ch.x1～x6とx8を使用)があり、Virtual Orchestra StudioやMGQのEZ2DJモード、O2Maniaに採用された。他のフットペダルを使用する方式として、ナナシグルーヴ方式のフットペダル(ch.x7を使用、Angolmois等が採用)やFoot Pedal Party用の方式(uonazobmplayでフットペダルを再現するためにch.11～16、18～19、26を使用、Lunatic Lave2のGothic Dollsスキン等が採用)がある。

ギタドラシミュレーター向け 
かわうそがBM98の#ExtChrを用いたギタドラスキンを公開。また、このBM98と連携できるDMLK V2(DrumMIDIの前身)が公開された。その後、本格的なギタドラシミュレーターが登場した。DrumMIDI(独自拡張BMS)、DTXMania(DTX)、BandJAM(GDA)、SESSION STREAM(G2D)とプレイヤーごとに仕様が乱立したが、DTXMania以外はプレイヤーの更新が早々に終了し、これらの形式に対応したプレイヤーの登場もほぼ無かったことから事実上DTX形式が主流となっている。

DTX(DTXMania)(BMSを拡張したもの)
DrumMIDI用BMS(DTXに近い形でBMSを拡張したもの) 
GDA (BandJAM)(チャンネルナンバーの変わりにコマンドを使用)
G2D (SESSION STREAM)(GDAにベースパートを追加。)
GFS (Guitar Friends 98)(BMSの書式を使ったフォーマット。チャンネルが全く異なる。

KEYBOARDMANIAシミュレーター向け 
これらの形式が登場した時には既にドレミマニア(BMSとは無関係のPMS形式を使用)が普及しており、これらの形式に対応したプレイヤーの完成度も低く更新もすぐに停止してしまったことからゲームとしてはあまり利用されなかった。しかし、譜面作成環境が整備されていたことと、kmsconvの登場により、ドレミマニアのPMSファイル出力の中間ファイルとして利用されている。

MGQ用BMS (MGQ)(可視オブジェクトの16進数化(ch.x1-xF)、不可視オブジェクトを廃止し可視オブジェクトに置き換え。ロングノート初搭載(現在のLN TYPE2でch.5x-8x使用))
KMS (KeyMani)(MGQ用BMSのホイールに割り当てられているチャンネルを変更(ch.xFからxDへ)、独自のヘッダを追加)
EMS (AngelicPianizm)(MGQ用とは全く異なる独自仕様)

次世代フォーマット 
BMS書式の拡張性の乏しさを唱える者も多く、BMS CREATORの作者であるTIXらが策定した「BMX (Be-Music eXtend format)」や、ナナシグルーヴの作者である激辛党らが策定した「BM3」、「XBMS」、「BMS 2.0」などの次世代規格が案出されたが、実現することなくプロジェクト自体が終了していった。一方実現した物として、2000年に登場した「BMS-2」があり、対応したプレイヤーとしてBM-A4が登場した。その後、同形式に対応したbeat arrangerが登場。BMS-2に準拠したBAS(beat arranger script)に対応したが、本体が未完成のまま開発が終了した。また、Lunatic Raveの作者であるlavalseが策定した「LRX」があり、plugout -ARCADE EDITION-で採用された。

2015年8月13日にwosdergeが次世代BMSフォーマットであるBMSONを公開した。BMSONフォーマットはJavaScript Object Notationをベースとしたフォーマットであるため、BMSフォーマットとは記述方式が異なる。また、音声ファイルの分割が不要となった。対応プレイヤーやエディタ、BMSからのコンバータも幾つかリリースされており、2016年にリリースされた『beatoraja』ではLunaticRave2のスキンデータが利用できるなどBMSONに移行しやすい環境が整備されている。

関連するソフトウェア

主なBMSプレイヤー本体 
BM98 Kikuchan Version Drink Edition(旧:BM98、BM98 Kikuchan Version)
MixWaver][ (旧:MixWaver)
unofficial nazobmplay (旧:nazobmplay)
Delight Delight Reduplication
bemaniaDX
Ruv-it! (旧:Rhythm-it、rub-y!)
LunaticRave 2 (旧:LunaticRave、LunaticRave NEXTWAVE -endless music-)
beatoraja
ふぃーりんぐぽみゅ せかんど(旧:ふぃーりんぐぽみゅ)
ナナシグルーヴ (旧:名無しBMSプレイヤ)
おたま
StepMania
DTXMania

譜面作成ソフト 
BMS Creator
GDA Creator Professional Edition
BMx Sequence Editor 
μbmsc(旧:ibmsc)

ビュアー 
BMS Viewer
BMEV
nBMplay
WAview
uBMplay
PMSee-V

キー音無しBMS 
BGMに1曲丸々入った音楽ファイルのみを指定して、BGMに合うように無音のオブジェのみを配置したようなBMSファイルはキー音無しBMSと呼ばれ、以下に示すような問題点がある。

市販のCDをそのままリッピングした物をBGM化など、違法性の高い物がある。
キーを押すタイミングの成否に関わらず初めから完成したBGMが流れるため演奏感がない。
BMSというフォーマット自体、本来は演奏することを前提に作られている。

よって、これらのBMSは評価イベントへの投稿が禁止されていたり、BMSプレイヤーのひとつ『LunaticRave』では使用禁止となっておりIR（インターネットランキング）に登録できなくなっているなど、使用が自粛される傾向が見られる。

また、ダンスシミュレーションゲームなど演奏を前提としていない物（キーを押しても演奏音がないもの）については、ひろさんがBM98で4パネルのダンスシミュレーションを再現するDDEを公開し、これに使用されたBMS形式が、Delight Delight Reduplication等にも採用された。また、Delight Delight Reduplicationでは6パネルの形式が追加された。BMS形式はある程度普及したが、その後、BMSとは全く異なるフォーマットであるDance With Intensityで用いられるDWI形式やステップマニアで用いられるsm形式の普及に伴いほとんど利用されなくなった。

歴史 
黎明期
1998年6月、後にコンピューター将棋で知られるやねうらおによってBM98の配布が開始される。当時はJ-Pop、ゲーム音楽、Midi音源のコピーやアレンジなどの楽曲が中心であったが、DAIのRainy Heartなどオリジナル楽曲も制作されていた。楽曲の情報等は掲示板やリンク集等で交換されていた。8月にはBM98の開発者であるやねうらおがBM98の開発及び配布を中止するが、きくちゃんが後を引き継ぎ、開発、配布を継続した。

また、1999年に7鍵盤に対応したFlash Terminalが登場。2000年1月にリリースされたDelight Delight Reduplication Ver.0.3で.bmeの拡張子が使われるようになった。

全盛期
1999年になるとBMSのレビューサイトが登場し、6月にオリジナル楽曲のみを扱うClub Stubborn(通称:クラスタ)(2002年7月閉鎖)と11月にコピー・アレンジ楽曲を扱うRe-Rise(2003年6月閉鎖)が開設され、楽曲の制作が活性化された。これらのサイトで活動していた作曲者は後に同人CDの制作、本家音楽ゲームや他のゲームに楽曲の提供を行うなどの活動を行うようになった者もいる。

また、BM98のスコア保存機能を用いてスコアアタックを開催するサイトも登場した。2000年1月にThe envoy from darkness(2001年4月終了)が開設されたり、2001年12月にBMSのニュースサイトであったDigital Emergency Exitが2001to2002 Score Attack EXPERT+を開催したりした。

BMSフォーマットの拡張としては、2000年にリリースされたbemaniaDX Ver.0.72で拡張BPM変更に対応、2001年12月にリリースされたDelight Delight Reduplication Ver.5.0beta2よりストップシーケンスに対応、12月に公開されたbemaniaDX Ver.0.95では#WAVの定義数がZZ(1296)まで引き上げられ、2002年2月にリリースされたrhythm-it Ver.1.61からロングノートに対応、9月に公開されたふぃーりんぐぽみゅせかんど Ver.0.6ではPMS(BMEタイプ)とダブルプレイ(18ボタン)に対応した。

停滞期と復活
2002年8月にBM98の開発が終了。また、BMS楽曲については、Club Stubborn閉鎖後BMSレビューサイトがいくつか開設されたが、かつて程の盛り上がりには至らなかった。そんな中、2004年8月にいちごびびえすで提案されたBMS OF FIGHTERS 2004(通称:BOF)が開催された。その後、イベントサイトが続々と登場し、再び盛り上がりを見せることとなった。

また、糞譜面、発狂BMSという高難易度譜面も登場する。2003年8月にはクソ譜面パーティーというイベントが、同年11月にはThe Kusofumen Towerが開設。2003年2月にはnazobmplayのインターネットランキングが試験的に開始され、インターネットランキングの盛り上がりに伴い高難易度譜面の人気も増加した。その後に2006年から公開が始まったLunatic Raveや2008年から公開が始まったRuv-it!もインターネットランキング機能を追加した。

BMSフォーマットの拡張としては、2004年4月1日に公開されたDelight Delight Reduplication Ver0.50 beta5でOgg Vorbisに対応。同年8月21日に公開されたナナシグルーヴver.0.999dで定義数36進数に対応。2005年9月に公開されたナナシグルーヴver.1.150で地雷の追加、2006年8月に公開されたLunatic Rave初版で#BMPに動画ファイルの指定が可能となった。

2016年開発のbeatoraja本体はフルHD・120fps対応など現代の環境にあった多数の機能が搭載されており、事実上開発停止されているLR2本体に替わる存在の一つと捉えられている。
2021年現在はBOFなど定例のイベントは継続して一定の人気があり、多数の新曲と共に開催されている。一方かつて高難易度BMSの練習曲群として定番だった「発狂難易度表」（発狂BMS)は事実上更新が停止されており、代替・および次世代版としてStella/Satellite難易度表といった新たな形式での高難度譜面の充実も行われてきている。