先に結論
MIDIファイルが記録するのは演奏そのもので、どの鍵が、いつ、どれだけ強く、どれだけの長さ押されたかです。音符には、♯・♭の書き分けも、声部も、書かれた休符も、連桁もなく、調号がないファイルも多いため、MuseScoreはそれらを推測するしかありません。その推測は、音符が拍のグリッドからずれているときに最も悪くなります。ギターの採譜12本で、私たちが最初に作った変換ツールは、調号を書かず、休符をすべて隠しました。MuseScore Studio 4.7.5の読み込みに、同じ音符を、一定のテンポの十六分音符のグリッドに載せ、すべてのトラックに調を書き込んで渡したところ、12本中10本で調が合い、休符もすべて表示されました。MuseScore Studio 4にはMIDI読み込みパネルがないので、こうした対策は、MIDIファイルそのものか、コマンドラインのオプションファイルに入れます。
MIDIファイルには、何が記録されていませんか?
読む人に必要なものの大半です。MIDIの音符は、0から127までの鍵の番号とベロシティで、音が始まるときと止まるときに1回ずつ送られます(MIDI Association)。ノート番号63はD♯でもE♭でもあり、どちらで書くかは調によって決まりますが、音符自体は何も教えてくれません。スタンダードMIDIファイルには、テンポ、拍子記号、調号をメタイベントとして加えられますが、声部、休符、連桁、連符を入れる標準の場所はありません。休符は単なる空白で、長さはティック数であり、書き表した音価は付いていません。
音声をMIDIにする変換ツールには、2つ目の問題があります。タイミングが録音から取られるので、音符が拍にぴったり乗ることはまずありません。ScoreStarlingが使っているSpotifyのBasic Pitchは、すべての音符を、指定されたテンポで1つのエレクトリックピアノ1のパートに書き込み、調号はありません(note_creation.py)。これを楽譜にするには、音符ごとに、♯・♭の書き分け、書く長さ、声部、譜表を選ばなければなりません。どの変換ツールもこの選択を行いますが、出来には差があります。
単純な変換ツールが、ギター採譜12本にしたこと
最初の記譜の段階は、music21ライブラリの上に自分たちで書いた変換ツールでした。公開データセットGuitarSetの録音12本から作ったBasic PitchのMIDIを、各録音のテンポを添えて入力し、変換ツールが書いたとおりをVerovioで浄書しました。12本の楽譜を調べると、次のことがわかりました:
- どの楽譜にも、見える休符がない:music21のMusicXMLエクスポートは、既定では隙間を非表示の休符で埋めます(m21ToXml.py)。
- どの楽譜にも調号がない。ホ長調の曲に♯が表示されておらず、ハ長調の伴奏の1曲では、書かれた431個の音符のうち153個に、不要なナチュラルが付いていました(MIDIの音符は421個で、一部はタイで分割されています)。
- ノート番号だけで書き分けていた。MIDIのノート番号63は、ホ長調でD♯が必要な場面でも、いつもE♭になりました。変ト長調の曲では、調に属する49個の音符のうち30個で、♯と♭の書き分けが調に合っていませんでした。
- 1つの譜表に最大5声部。音符の開始と終わりをそれぞれ最も近い十六分音符に揃えたため、次の音の下で鳴り続けている弦があると、別の声部が必要になり、それに合わせて付点とタイも付きました。
- ギターがピアノのように書かれていた:12本のうち10本が大譜表、残りの2本がヘ音記号で、ギター用の音部記号のものはありませんでした。Basic Pitchが、すべての音符にエレクトリックピアノの名を付けるためです。
2026年10月7日に、保存してあった同じMIDIファイルでこの変換ツールを再実行し、同じ数が出ました。
音楽フォントのせいではありません。VerovioとそのフォントLeipzigは、MusicXMLに書かれたとおりに描いていて、間違っていたのはMusicXMLでした。
前後の比較:MuseScore Studioの読み込み
最初に、オープンソースの代替を調べました。partituraは調、♯・♭の書き分け、声部を扱えますが、クオンタイザーがなく、休符も書きません。ほかに見つけた研究用ツールは、ピアノ専用、ライセンスなし、非商用、未公開のいずれかでした。そこで、この作業はMuseScore Studio 4.7.5のMIDI読み込みに任せ、別のプログラムとして動かしました。同じ12本の録音、同じBasic Pitchの音符、同じ指定テンポで、後述の準備をしたうえで、2026年10月2日にMacで実行しました:
| 指標 | music21の変換ツール | MuseScoreの読み込み |
|---|---|---|
| 調号が注釈と一致 | 0/12 | 10/12 |
| 調の音階内の音で、書き分けが調に反しているもの | 2,703個中322個 | 3,213個中0個 |
| 書かれた音符1個あたりの臨時記号 | 0.53 | 0.06 |
| 見える休符 | 1,626個中0個 | 988個中988個 |
| 1つの譜表での最大声部数 | 5 | 2 |
| すべてのMIDI音符が書かれている | 12/12 | 12/12 |
| 指定したテンポで4/4 | 12/12 | 12/12 |
書かれた音符の数が違うのは、MuseScoreのほうが、拍と小節線をまたぐ音符を別のやり方でタイにするためです。間違えた2つの調は、どちらも注釈から5度ずれていました。変ト長調の曲を変ニ長調、ホ長調の曲をロ長調としたものです。こちらの推定をファイルに入れなかった場合、MuseScore自身が推測した調が合ったのは12本中5本だけでした(2026年10月7日に再実行)。推定を書き込んだことで、10本に増えました。読み込みにかかった時間は、録音1本あたり1.2〜4.3秒、平均2.3秒でした。
前:最初に作った変換ツール
後:MuseScore Studioの読み込み
MuseScoreがテンポ、拍子、調を推測し直すのはなぜですか?
クオンタイズされていないMIDIは、MuseScoreには生の演奏のように見えます。読み込みは、拍の近くにある音符を調べ、そのうち拍ちょうどに始まるものが60%未満なら、ファイルを人間の演奏として扱います(importmidi_quant.cpp)。そのうえで、独自の拍検出を動かして拍子を選び、見つけた拍に合うように音符の時刻を伸び縮みさせます。MuseScoreの古いハンドブックは、このモードを、正確さと引き換えに読みやすさを優先するものと説明し、拍からずれたファイルでは既定でオンになると書いています。
調には、独自の規則があります。ドラム以外のトラックに調号がないものが1つでもあるか、ファイルが演奏として扱われると、読み込みは音符から調を推定します(importmidi_key.cpp)。テンポトラックにだけ調号があっても足りず、音符のあるトラックすべてに必要です。加工していないBasic PitchのMIDIでは、人間の演奏のオプションをfalseにしても、拍子、テンポ、調のすべてが推測し直されるのを確認しました。
読み込む前に、MIDIをどう準備すればいいですか?
記譜の判断のうち、できるものは、MuseScoreに渡す前にMIDIファイルの中で済ませます。私たちは、すべての採譜に次のことをしています:
- テンポは1つに固定します。ScoreStarlingは、指定されたBPM、または録音から検出したBPMを使います。DAWでは、クリックに合わせて録音するか、プロジェクトのテンポをテイクに合わせます。
- すべての音符の開始と終わりを、読みたい最短の音価のグリッドに移します。ここでの10月2日のテストでは、4/4拍子で、十六分音符のグリッドを使いました。すべての音符がグリッドに乗れば、MuseScoreはそのファイルを書かれた楽譜として読みます。
- テンポと拍子記号は最初のトラックに入れ、調号は音符のあるすべてのトラックに入れます。私たちは、music21のKrumhansl–Schmuckler法の調判定で、音符から調を推定しています。本当の調がわかっているなら、それを使ってください。
- トラックごとに、本当の楽器を指定します。MuseScoreは、General MIDIのプログラムから譜表と音部記号を選びます。ギターをエレクトリックピアノのままにすると大譜表になり、ナイロン弦ギターのプログラムなら、下に8が付いたト音記号になります。
- 連打する音に注意します。同じ音高が、グリッドの1目盛りの間に2回弾かれると、グリッドに揃える際に2つのアタックが1つにまとまります。私たちは2つ目を三十二分音符の分だけ遅らせて置きます。
MuseScoreの読み込み設定は、どれを使えばいいですか?
MuseScore Studio 4には、それらを設定する読み込みパネルがありません。ハンドブックは、MIDI読み込みパネルを「not currently implemented」(現在は実装されていません)としており、復活を求めるGitHubのissue(#11918、2022年6月に作成)は、2026年10月3日に確認した時点でも開いたままでした。アプリの中でクオンタイズに使えるのは、読み込むMIDIファイルの最短音符の設定だけで、「Preferences → Import」(環境設定 → 読み込み)にあります。
それでも読み込みは、コマンドラインで-Mを付けて渡したファイルから、主なオプションを読み取ります。ハンドブックのコマンドラインのページに、サンプルへのリンクがあります。ScoreStarlingは現在、旋律の1行を1つの声部(VoiceCountを0)で書き、最初の小節が弱起ならRecognizePickupBarをオンにします。10月2日のテストで使ったファイルは次のとおりです:
<?xml version="1.0" encoding="UTF-8"?>
<MidiOptions>
<QuantValue>2</QuantValue>
<VoiceCount>1</VoiceCount>
<Duplets>false</Duplets>
<Triplets>false</Triplets>
<Quadruplets>false</Quadruplets>
<Quintuplets>false</Quintuplets>
<Septuplets>false</Septuplets>
<Nonuplets>false</Nonuplets>
<HumanPerformance>false</HumanPerformance>
<MeasureCount2xLess>false</MeasureCount2xLess>
<SplitStaff>false</SplitStaff>
<ClefChanges>false</ClefChanges>
<SimplifyDurations>true</SimplifyDurations>
<ShowStaccato>false</ShowStaccato>
<DottedNotes>true</DottedNotes>
<RecognizePickupBar>false</RecognizePickupBar>
<Swing>0</Swing>
</MidiOptions>
そのうえで変換し、出力をMusicXMLとして指定します:
mscore -M midi-import.xml -o score.musicxml performance.mid
プログラムの名前と場所は環境によって違い、Windowsではハンドブックが「MuseScore4.exe」を使っています。主なオプションの働きは次のとおりです:
| オプション | 値 | 効果 |
|---|---|---|
| QuantValue | 2 | 書く最短の音価:十六分音符(1なら八分音符、3なら三十二分音符) |
| VoiceCount | 1 | 1つの譜表に最大2声部。声部数は、値に1を足した数 |
| 三連符などの連符 | false | 連符を探さない。私たちのグリッドには連符がないため |
| HumanPerformance | false | ファイルを生の演奏として扱わない。これが成り立つのは、音符がグリッドに乗っているときだけ |
| SplitStaff | false。ピアノではtrue | ピアノのパートを左右の手に分ける。ほかの楽器では、代わりにMuseScoreが別々のパートを作る |
| SimplifyDurations | true | 休符が減り、音価が単純になる |
| ClefChanges | false | 譜表の途中に小さな音部記号の変更を入れない |
| RecognizePickupBar | false | 最初の小節を完全な1小節として扱う |
| Swing | 0 | スウィングの検出をしない |
曲に三連符があるなら、まっすぐなグリッドに揃えず、三連符のオプションはオンのままにしてください。MuseScoreがどれだけうまく見つけるかは、測っていません。MuseScore 3では、同じ選択肢が読み込みパネルにあり、「Max. voices」(最大声部数)、「Search tuplets」(連符を探す)、「Is human performance」(人間の演奏か)といった列がありました。
あとから、Starling Refineで採譜結果を整えられますか?
はい。Starling Refineは、録音の採譜結果を校正する処理で、行った変更はどれも、元に戻せるバージョンとして保存されます。Plusなら無料で、Plusのないアカウントは月に1回、無料で試せます(料金、2026年10月24日に確認)。『エリーゼのために』の採譜の冒頭を、その前後で並べて示します。
処理前:採譜結果
Starling Refineのあと
きれいな楽譜の代償は何ですか?
正確さの一部で、おもに音符の長さです。私たちが測った、または把握しているトレードオフは次のとおりです:
- MuseScoreは、音符の26%を、クオンタイズした演奏より長く書きました。最大で十六分音符3つ分で、短くなることはありません。また、同時に鳴っていて長さの違う音符が、1つの音価にまとめられることがあります。ScoreStarlingの再生とMIDIエクスポートは、演奏されたタイミングを保ちます。ただし旋律の1行は、先に整理されます。同時に弾かれた音符のうち最も強いものが残り、かすかな余韻は取り除かれ、伸ばした音は次の音が始まる位置で終わります。
- 調は音符から推定していて、12本中2本で間違い、どちらも5度ずれていました。♯または♭が7つの調は、異名同音の、♯または♭が5つの調で書かれます。
- 10月2日のギターのテストで使った、まっすぐな十六分音符のグリッドでは、三連符もスウィングも表せませんでした。これは、ScoreStarlingが楽器ひとつまたは歌を採譜するときも変わらず、4/4から始まります。ピアノソロでは、演奏の小節に従って、4/4、3/4、6/8、12/8のいずれかが選ばれます。自分でファイルを準備するなら、本当の拍子記号を書き込んでください。
- MuseScoreはピアノの和音を、独自の規則で左右の手に分けるので、近い2音の和音でも、別々の譜表に分かれることがあります。
一部は、読み込んだあとで整えられます。「Tools → Regroup rhythms」(ツール → リズムを再グループ化)は、選択した箇所を、リズム自体は変えずに、拍ごとに音符がまとまるよう書き直します。「Tools → Respell pitches with sharps or with flats」(ツール → ♯か♭で書き直す)は表記を変えますが、ハンドブックによれば、1つの音高の音符に使うことを想定したものです。調が違う場合は、あとから音符を1つずつ直すより、読み込む前にMIDIファイルで直すほうが早く済みます。
MuseScoreはMP3を楽譜にできますか?
MuseScore Studioにはできません。開けるのはMusicXMLやMIDIなどの楽譜の形式で、音声ファイルは開けません。Muse Groupは2026年8月17日に、MuseScoreのウェブプラットフォームでAudio-to-Scoreのベータ版を発表しました。対象はピアノソロとアコースティックギター、MP3ファイルは30 MBまで(約3分)、無料で、結果はMuseScore Studio用のMSCZファイルで返されます。私たちはまだ試していません。
もうひとつの方法は、この記事で説明した流れです。音声をMIDIにするモデルを使い、そのタイミングを整えてから、MuseScoreの読み込みに通します。ScoreStarlingは、音声をMIDIに変換するときも音声をMusicXMLに変換するときも、この方法をとっています。楽器ひとつまたは歌ではBasic Pitchを使い、ピアノソロでは、音符から拍と小節線も得られるピアノ用モデルを使い、ページはVerovioが描きます。単音の旋律は、1つの譜表に1つの声部で書かれるようになり、和音を弾くパートは、和音を1つの譜表にまとめて書きます。「楽譜の設定」の「録音から楽譜を書き直す」を使うと、単一パートの録音を、もう一度1行の旋律として、1つの譜表または2つの譜表に書けます。上の測定は10月2日のものです。旋律が1つの譜表に1音ずつ書かれるようになったあとの10月4日の再測定でも、調は12本中10本で一致し、調の音階内の音3,158個のうち、調に反した書き分けは0個で、休符357個がすべて表示されました。
ScoreStarlingでは、MIDIファイルを選ぶかドロップするだけで、編集できる楽譜が得られます。ドラムのトラックはドラム用の譜表に書かれ、楽譜全体では拍子記号が1つになります。楽器ひとつまたは歌とピアノソロは6分まで(Plusでは15分)、バンドは最長30分まで(Plusなしでは6分)で、アップロードは95 MiBまで対応します。PDFはどのアカウントでも、MusicXMLは有効なPlusで利用できます。そのほかは仕様をご覧ください(2026年10月24日確認)。ワークスペースは無料で始められ、日付入りのギターとバンドの測定は精度の記事にまとめています。
出典
- Summary of MIDI 1.0 Messages、MIDI Association
- Meta Message Types、midoのドキュメント
- basic_pitch/note_creation.py、Spotify Basic Pitch、GitHub
- music21/musicxml/m21ToXml.py、music21、GitHub
- GuitarSet 1.1.0、Xiら、Zenodo(CC BY 4.0)
- MIDI import、MuseScore 4ハンドブック
- Restore MIDI import panel, issue #11918、MuseScore、GitHub
- importmidi_quant.cppとimportmidi_key.cpp、MuseScoreのソースコード、GitHub
- MIDI import、MuseScoreの旧ハンドブック(読み込みパネル)
- Command line usageと、そのsample MIDI import options file、MuseScore Studioハンドブック
- Preferences、File export、Regroup rhythms、Respell pitches、MuseScore Studioハンドブック
- Hear It, Play It: MuseScore Introduces New Smart Audio Recognition Features、Muse Group、2026年8月17日
よくある質問
MIDIをMusicXMLに変換するには、どうすればいいですか?
MuseScore StudioでMIDIファイルを開き、「File → Export」(ファイル → エクスポート)を選んで、MusicXMLを指定します。既定は圧縮した.mxlです。ターミナルからは、「mscore -o score.musicxml file.mid」でも同じことができ、「-M」を付けると、クオンタイズと声部についてのオプションファイルを渡せます。先にMIDIを整えておかないと、MusicXMLにも同じ乱れが残ります。
MIDIを読み込むと、タイや付点音符がやたらと多くなるのはなぜですか?
演奏された音符は、拍にぴったり終わることがほとんどありません。細かいグリッドに揃えると、拍や小節線をまたぐのでタイが必要になり、重なった音符は余分な声部にあふれます。読みたい最短の音価でクオンタイズし、読み込みの声部を2つまでに抑え、音価の単純化を許可してください。そうすると、MuseScoreは紙面を整えるために、一部の音符を少し長めに書きます。
E♭になると思った音を、MuseScoreがD♯と書くのはなぜですか?
MIDIはノート番号63を、♯と♭のどちらで書くかの情報なしで記録しているので、MuseScoreは調号を手がかりに書き分けます。トラックに調号がなければ、調も自分で推定します。読み込む前に、すべてのトラックに正しい調号を書き込んでください。読み込んだあとは、「Tools → Respell pitches with sharps or with flats」(ツール → ♯か♭で書き直す)で、選択した同じ音高の音符の表記を切り替えられます。
MuseScore 3のMIDI読み込みパネルを、MuseScore Studio 4で使えますか?
2026年10月3日に確認した時点では、できません。パネルは引き継がれておらず、復活を求めるGitHub issue #11918は、まだ開いたままです。MuseScore Studio 4には、読み込んだMIDIのための最短音符の設定があり、コマンドラインでは「-M」でオプションファイルを渡せば、パネルの主な選択肢をまかなえます。
ScoreStarlingの採譜結果を、MuseScoreで開けますか?
はい。MusicXML(.musicxmlまたは.mxl)をエクスポートすると、調号、♯と♭の書き分け、休符、声部が保たれます。音符だけでよければ、MIDIをエクスポートします。どちらも有効なPlusで利用できます。ScoreStarlingは無料で始められ、どの採譜結果も、耳で確認すべき最初の下書きです。



