The UMP Manual

12版 (1.6向け)

2020/3/22

UMPの基本、上手に使うためのヒントやありそうな質問の答えなどを書いていきます。逆引き的ななにか強化中です。加筆・修正・翻訳提案受け付けています。

UMPとは?

UMP (Ultralight MIDIPlayer, 超軽量MIDIプレイヤー) は、MIDI動画づくりを助ける超軽量・多機能なMIDIプレイヤーです。MIDIの再生に加え、ラグなし動画の出力やノートカウントなどのたまに便利な機能と、きれいなGUIを特徴とします。

クイックスタート

1. いい感じのPCを用意

これくらいあればUMPはスムーズに動くはずです:

2. Javaをインストール

インストーラーをJavaのサイトからダウンロードし実行します。

Windows用インストーラーのリンク。
OSがWindowsでCPUが64ビットなら、64ビットのインストーラーを選びましょう。UMPがより多くのメモリを使えるようになります。

3. シンセを用意

仮想MIDIシンセを入れたことがない方は1つ入れましょう。CoolSoft VirtualMIDISynth (使いやすい) やOmniMIDI (むずい) あたりが有名です。

多くの仮想シンセはサウンドフォントを必要とします。適当に探し、シンセを設定しておきましょう。

4. UMPを起動

UMPメインページから本体をダウンロードし空のフォルダに展開します。

UMPフォルダ。config.ymlは起動時に自動で作られます。

WindowsではMIDIPlayer.batを開きます。

他のOSではコマンドを実行します:

ターミナル
$ java [JVM引数...] -jar MIDIPlayer.jar [MIDIファイルパス]

OSX/MacOSでは初回起動時にJDKのインストールを求められる場合があります。インストールしましょう。

5. MIDIを再生

[ファイル]メニューを使うか、.midファイルをドロップします。

.zipアーカイブやフォルダをドロップすることもできます。この場合、UMPはその中の最初の.midファイルを開きます。

6. 次のステップ

9. アンインストール

UMPフォルダを消すだけ。簡単だね!

UMPはシステム設定やレジストリをいじらないので、アンインストールは本当にこれだけです。

UMPランチャー

UMPランチャーはUMPを起動するシンプルなバッチファイル (MIDIPlayer.bat) です。テキストエディタで編集することで設定を変えることができます。

設定

設定項目は5行目から始まります。名前と値は= (前後にスペースなし) で区切られます。

MIDIPlayer.bat
set INITIAL_MEMORY=3G
set MAX_MEMORY=3G
set JVM_ARGS=-XX:+UseG1GC
set PAUSE_AFTER_EXIT=false
set CRASH_ON_OUT_OF_MEMORY=true

INITIAL_MEMORY

MAX_MEMORY

JVM_ARGS

PAUSE_AFTER_EXIT

CRASH_ON_OUT_OF_MEMORY

JVMオプション

よく使いそうなJVMオプション

ランチャーを使わない方向けの解説です。

-Xms<サイズ>, -Xmx<サイズ>

記述例 (初期1.5GB最大8GB): -Xms1560M -Xmx8G

それぞれ、UMPが使えるメモリの量の初期値と上限です。サイズの最後にMやGをつけるとメガバイトやギガバイトにできます。巨大MIDIを読み込むときはこの値を増やしておきましょう。

MIDI診断を使うとあるMIDIを読み込むのに必要なメモリがだいたいわかりますが、MIDIのみのサイズのため、UMP本体が使う分少し多めにメモリを割り当てましょう。

-XX:+UseG1GC

記述例: -XX:+UseG1GC

ガベージファースト・ガベージコレクター(G1GC)を使用します。多分このGCが一番速いと思います。ガベージコレクションについて詳しくはWiki先輩へ。

オプションを付けて起動

-jar引数の前にオプションを書きます:

$ java -Xms8G -Xmx8G -Xmn6G -XX:+UseG1GC -jar MIDIPlayer.jar

レンダラー

DefaultMIDIRenderer

デフォルトです…

TickBasedDefaultMIDIRenderer

デフォルトです…が、描画間隔がテンポと連動します。120BPMで描画間隔プレビューと同じ速度になります。

最後の一瞬テンポが2倍になっているのに合わせてノートが速く動いているね!

KeyMIDIRenderer

MIDIチャンネルごとに押されている鍵盤だけを単色で表示します。テクスチャは使いませんが、リソースパックのノート色情報は使います。

HorizontalMIDIRenderer

ノートが右から左に流れます。画面中央の白い線が再生位置で、押されているノートは光ります。テクスチャは使いませんが、リソースパックのノート色情報は使います。

HexMIDIRenderer

全てのノートとテンポイベントを1トラックにまとめたときのMIDIファイルの中身をシミュレートして表示します。透明背景で動画出力した場合と暗い背景で再生した場合は文字色が白くなります。文字だけなのでリソースパックは全く使いません。完全等幅フォントが必要です。

動画をつくる

動画をつくるダイアログ。

FFmpeg

動画をつくるにはFFmpeg実行ファイルが必要です。FFmpegのサイトからパッケージをダウンロードするか、自分でビルドするかしてください。

FFmpegのダウンロードページ。上のでかいボタンはソースコードのダウンロードです。今回はビルド済みのパッケージを使うので使いません。
UMPフォルダにffmpeg.exeを置いておくと自動で選択されます。

種類・コーデック

種類ごとに使えるコーデックが変わります。また、動画ソフトごとに開ける種類とコーデックが変わります。使っている動画ソフトに合わせましょう。

動画開けるプログラム
種類コーデック透明背景WindowsOSXAfter Effects CC
映画&テレビMedia PlayerAVIUtlQuickTime Player
mp4x264
x265
movpng
qtrle
avipng

プリセット

  1. ultrafast
  2. superfast
  3. veryfast
  4. faster
  5. fast
  6. medium
  7. slow
  8. slower
  9. veryslow
  10. placebo

リストの上に行くほどエンコードが速く、動画ファイルが大きくなります。placeboその遅さの割には効果が薄いらしいです。

画質を良くする

設定を何も変えずにmp4を保存した場合、動画のビットレートは自動(200kbps?)で設定されます。もしそれで画質が悪かったり、動画がおかしくなっていた場合、高度な設定からビットレートを指定してください。品質基準VBRにCRFを20以下がおすすめです。

左: わざと極端に下げたビットレート(250kbps)。 右: いい感じのビットレート(CRF18)。

MIDI診断

MIDIを診断した例

"ノートカウント&MIDI診断"を使うと、再生するときより少ないメモリでMIDIファイルのノートを数え、問題を見つけることができます。再生できないMIDIがある時はまずこれで診断しましょう。実はほとんどはUMPではなくファイル側の問題だったりします。

名前備考
ファイルサイズ2進接頭辞 (たとえば、1KiBは1000Bではなく1024B、1MiBは1024KiB)
解像度PPQN
トラック
ノート
開くのに必要なメモリ同じMIDIでもConfigmidi.loaderThreadsの設定によって変化
長さ
テンポ途中でテンポが変わるMIDIでは"最小~最大"で表示
瞬間最高NPS計算が合っている自信がない
重なったノート

YAMLのデータタイプ

UMPはConfigなどで、以下の型をYAML 1.1で読み書きします。YAMLは基本的には、キーと値をコロン(:)で区切ったものだと思っていい…と思います…。

インデントには半角スペースしか使えません。テキストエディタのインデント設定に注意してください。

String

例: "Hello, World!"

テキスト。"または'で挟むことをおすすめしますが、しなくてもほぼ問題ありません。

Integer

例: 77, 0x4d

整数。16進数使えます。

Float

例: 123.45

数。小数使えます。

Color

例: 0xffb900(黄), 0x000000(黒), "0xffffff"(白)

RGB色。0xRRGGBBのかたちで書いたテキストまたは整数。

Boolean

真理値、論理型とも。true(はい)かfalse(いいえ)のどちらかのみが使えます。

Config

UMPの設定はUMPのフォルダにあるconfig.ymlに保存されます。

Configを編集する前に必ずUMPを閉じておいてください。

サンプル

config.yml
version: 2
language: ja
midi:
  loaderThreads: 0
  usePlayThread: true
render:
  width: 1280
  height: 720
  fpsLimit: 120
  renderInterval: 5.0
  background: 0xc0c0c0
  usePFAColors: false
  resourcePack: null
  font: Monospaced
  overlay:
    opaque: false
    info:
      scale: 1.0
      type: DEFAULT
      position: TOP_RIGHT
      showDuration: false
    fps:
      type: SHOW_ALL
    desync:
      type: SHOW_NUMBERS
    loading:
      showMemoryUsage: false
ui:
  font: Yu Gothic UI
files:
  midi: null
  ffmpeg: null
  resourcePacks: null
updateChecker:
  checkOnStartup: true
  branch: development

version

language

midi.loaderThreads

midi.usePlayThread

render.width

render.height

render.fpsLimit

render.renderInterval

render.background

render.usePFAColors

render.resourcePack

render.font

render.overlay.opaque

render.overlay.info.type

render.overlay.info.position

render.overlay.info.scale

render.overlay.info.showDuration

render.overlay.fps.type

render.overlay.desync.type

ui.font

files.midi

files.ffmpeg

files.resourcePacks

updateChecker.checkOnStartup

updateChecker.branch

リソースパック

リソースパック(パック、または略してリソパ)は、PNG画像とpack.ymlファイルが入ったフォルダまたはzipファイルです。いくつかの画像はあとで着色するため、グレースケールになっているべきです。

UMPが使う画像。パックで全部変えられます。Coloredと付いているものが、グレースケールになっていたほうがいいもの。
実際のパックフォルダー。

notenoteEdgeは一番上の1pxしか使われません。パフォーマンスのため、画像はアンチエイリアス無しで拡大縮小されます。

pack.yml

サンプル

format: 0
name: "Synthesia Note Colors"
version: 1.1.0
author: "PipiraMine"
description: "No random colors."
note:
  loopColors: true
  colors:
    - 0x85f202
    - 0x71aceb
    - 0xf94b3b
    - 0xe18de6
    - 0xffec00
    - 0xffa300
signature: "44Gq44KT44Go5a2m5qCh44GM5pyd44GuOeaZguOBi+OCieOBquOBruOBoOODvCEK"

format

name

version

author

description

note.loopColors

true:
false:
note.loopColorsの効果。trueにすると、パックのノート色(このパックでは6色、デフォルトは16色)だけが使われます。

note.colors

トラックごとのノート色。マップを使った書き方の場合、最初のトラックは0番です。

colors:
  - 0xff0000
  - 0x00ff00
  - 0x0000ff
リストで色を指定した例(loopColors true)
colors:
  1: 0xffffff
  3: 0x000000
マップで色を指定。0番と2番のランダム色は、loopColors trueでも毎回違う色になることに注意してください。

signature

翻訳

UMPは標準で日本語・英語と簡体中国語をサポートしています。UMPフォルダに言語ファイルを置くことで言語を増やすことができます。

de.lang
_lang=Deutsch
welcome.synth=Wählen Sie einen Synthesizer
welcome.synth.none=(Keinen benutzen)
welcome.next=Weiter
UMPフォルダに設置した言語ファイルとそれを認識するUMP。

言語ファイルフォーマット

# 構文:
key=value
# 例:
_lang=English
converter.speedLimit=Slow down render to %s%%
converter.speedLimit.unlimited=No render speed limit
converter.done=Finished rendering to:\n%s

言語メタデータ

メタデータは、UMPの翻訳と区別するため、キーの最初に_がつきます。

_lang

その言語の名前です。[言語]ダイアログや初回起動時の言語選択で使われます。

_lang.xx

その言語の他の言語での名前です。[言語]ダイアログで、言語ファイル名がxx部分と同じ言語の横に表示されます。

ja.lang
_lang=日本語
_lang.en=Japanese
en.lang
_lang=English
zh.lang
_lang=簡体中文
_lang.en=Chinese Simplified
ファイル名がen.langの言語を選択したので、他の言語の横には_lang.enの値が表示されている

_font

その言語を表示するのに適したフォント名です。より多くのOSをサポートするため、カンマ区切りで複数指定することができます(カンマの前後にスペースは入れないでください)。この中でインストールされている一番最初のフォントが、1つもインストールされていなければデフォルトのサンセリフが使われます。

ja.lang
_font=Yu Gothic UI,Meiryo UI,メイリオ
言語ダイアログでフォントが表示されている様子。Windows 8以前ではYu Gothic UIがないので次のMeiryo UIが使われます。

_createdBy

この翻訳を作った人の名前を格納することになっています。UMP内ではまだ使われていませんが入れておいて損はありません。

チュートリアル的な

簡易もくじ

メモリの割り当て

UMPが動作するJVMには使えるメモリの量を決められるものがあり、大きなMIDIを開くためにはより多くのメモリを使っていいように設定する必要があります。

UMPがMIDIファイルを開くのに使うメモリの量は、ノート数が同じでもUMPの設定とファイルの構造によって大きく変わるため、"ある量のメモリで開けるノート数"は計算できません。"特定のMIDIファイルを開くのに必要なメモリの量"は診断で計算できます。

ランチャーの割り当てを変える Windows

  1. MIDIPlayer.batをテキストエディタで開きます。
  2. 5行目のメモリ設定を書き換えます。
    MIDIPlayer.bat (変更前)
    set INITIAL_MEMORY=2G
    set MAX_MEMORY=2G
    MIDIPlayer.bat (変更後)
    set INITIAL_MEMORY=6G
    set MAX_MEMORY=6G
    6GBのメモリを使うように変えた例
    メモ帳で開くとこんな感じ
  3. ファイルを保存し、UMPを再起動します。

コマンドライン引数を変える どのOSでも

メモリ設定ジェネレーター

  1. java-jarの間にメモリ設定を入れてUMPを起動します。
    ターミナル
    $ java -Xms6G -Xmx6G -jar MIDIPlayer.jar
    ここに入れる!(6GBのメモリを使うように変えた例)

ちなみに

WinMMパッチを当てる

Windows 10環境では、WinMMパッチを当てるとMIDIパフォーマンスが大きく改善します。UMPの描画パフォーマンスはパッチしても下がりませんが、上がりもしません。

JavaプログラムであるUMPは直接パッチできず、JVMと呼ばれる、Javaプログラムを動かすソフトウェアのようなものをパッチする必要があります。ちょっと面倒ですが頑張りましょう。

念の為、このパッチはJavaをアップデートするたびにしておくことをおすすめします。
OmniMIDI 7.1より前でパッチした方は、今すぐ最新のOmniMIDIで(UMP以外も全て)もう一度パッチすることを全力でおすすめします。脆弱性が見つかったため、古いパッチを使い続けると危険です。

JVMの場所を探す

  1. UMPを動かしておきます。
  2. タスクマネージャーを開きます。
    • Windows8以降で左下に[詳細]がある場合は、クリックして詳細表示にします。
  3. [プロセス]タブでJVMプロセス("Java(TM) Platform SE binary")を探します。展開してUMPが表示されたら、そこで右クリックし[ファイルの場所を開く]をクリックします。
    UMPを実行中のJVMプロセス
  4. エクスプローラーが出てくるので、パスをコピーしておきます。
    エクスプローラーでパス(アドレス)をコピー

OmniMIDIでパッチ

  1. OmniMIDI Configuratorを管理者として開き、[Tools]→[Windows Multimedia Wrapper Patch]に移動します。
    Windows Multimedia Wrapper Patch (OmniMIDI 7.1.0.1だと"Microsoft"が"MIcrosoft"になってて面白いよ!)
  2. [For Black MIDIs]内の[Patch an application]をクリックします。
  3. JVMフォルダのjava.exeを選択します。
    コピーしておいたパスをエクスプローラーで貼り付け。こうやってアドレスバーをクリックするとパスのコピーと貼り付けができるの知ってた?
  4. UMPを再起動します。
  5. Enjoy!

直接パッチ

このパッチファイルはちょっと古いので、可能ならOmniMIDIを使うことをおすすめします。
  1. JVMの種類に合わせて、パッチファイル内のWinMM32またはWinMM64フォルダの中身をJVMフォルダにコピーします。ここで管理者権限を求められるかもしれません。
  2. UMPを再起動します。
  3. Enjoy!

ノートの色を変える

  1. 色を変えたいノートのトラックを確認します。ノートが1つもないトラックを飛ばして0から数え何番目かを覚えておいてください。
  2. resourcepacksフォルダを(なかったら作ってから)開き、そこに好きな名前でフォルダを作り、そのさらに中にpack.ymlファイルを作ります。
    このステップのあとのフォルダ構造
  3. pack.ymlをテキストエディタで開いて書き込みます:
    format: 0
    name: (好きな名前)
    version: 1.0
    author: (あなたの名前)
    description: (短い説明文)
    note:
      colors:
        (トラック番号): (変えたい色)
    当たり前ですが本名を書く必要はありません。
    0番からたくさんのトラックの色を変えたい場合は、リスト形式で色を指定できます:
    note:
      colors:
        - (色0)
        - (色1)
        - (色2)
  4. ファイルを保存し、UMPに戻って[設定]→[リソースパック]に移動します。
  5. 作ったパックが表示されるので、選択して[完了]。
  6. Enjoy!

音ズレをなおす

  1. UMPを閉じます。
  2. config.ymlをテキストエディタで開きます。
  3. usePlayThreadを探し、falseにして保存します。
  4. UMPを再起動します。
これにより音のタイミングの改善が期待できますが、代わりにフレームレートが下がります。

AVIUtl拡張編集でAVIを開く

AVIUtlという名前の割にUMPがつくるAVIは開けないので、入力プラグインの力を使って無理やり開かせます。

  1. L-SMASH Worksをダウンロード。中のReadmeを読みつつインストール。
  2. 設定を開く([ファイル]→[環境設定]→[入力プラグインの設定]→[L-SMASH Works File Readerの設定])。
  3. 一番上の[Libav+L-SMASH]と[LW-Libav]をチェック。
  4. AVIUtlを再起動、またはプロジェクトファイルを開き直す。
  5. 透明背景のAVIを使う時は、動画ファイルの[アルファチャンネルを読み込む]を忘れずにチェック。
L-SMASH Worksは日本からしかダウンロードできません。
タイムラインに動画ファイルをドロップして追加できない場合、右クリック→[メディアオブジェクトの追加]→[動画ファイル]で空の動画オブジェクトを作り、設定ダイアログに動画ファイルをドロップするか[参照ファイル]から開いてください。
夢の透明背景が実現しテンションが上がった人。背景テキストはノートを見づらくする恐れがあるため、絶対に真似しないでください。

4月の機能

UMPには4月1日と4月3日の間にだけ使える機能があります。UMPは起動時に日本のタイムゾーンに変換したシステム時刻で日付チェックをします。

機能一覧 (ネタバレ)

1.5から 2019年

1.6 β2から 2020年

1.6 β3から 2021年

されそうな質問と答え

動かない!

Java8オンリー。その辺がわからない人はUMPを使うには早すぎます。出直しましょう。

重い!

[設定]→[FPS制限...]→[無制限]をしてみてください。だめだったら…UMPがそのPCで動けるほど強くありません…ごめんね。でも動画出力はできるよ!

音が重い!

これでだめだったら…再生しているMIDIが強すぎます。

たまに一瞬固まるんだけど?

Javaがメモリのお掃除(GC)してます。完全に取り除くのは難しそう。

GC設定分かる人はバッチファイル適当にいじってください。動画出力はこれの影響を受けません。

他のプレイヤーだと開けるのに、UMPでは対応してないファイルって言われるのは?

UMPのMIDI読み込みが厳しいからです。

個人的には他のプレイヤーがゆるゆるだと思っています。そのファイルのUMPでの再生は諦めてください…

PFAにある赤い棒つけないの?

つけない。PFAとひと目で見分けられるように。つけようともしないように。

FPS制限かけるとガクガクするんだけど?

のどれかで良くなるかもしれないしならないかもしれない。ならなかったらちょっと分からない。

クレジット書かないとだめとかある?

書いてくれると嬉しいですが必須ではありません。動画出力を使う場合、動画の最初のクレジットが映っていれば充分です。

正直これが映ってればそれだけでいい
Player: UMP
Video rendered with UMP 1.5
https://pipiraworld.web.fc2.com/ump/
書き方の例。参考程度にどうぞ。リンクを貼るならUMPトップページ(https://pipiraworld.web.fc2.com/ump/)だけにしてほしいかな…!

なぜにJava?

一番慣れてる言語。C++も気になるけど、Javaが楽すぎて…やめられない…ッ!

読み込めるノートの限界は?

計算があってれば23,455,889,992,365ノートです。

1つのMIDIファイルに入る限界は倍くらいの46,911,780,246,870ノート(当社調べ)ですが、UMPを含め対応していないプレイヤーが結構あると思うので、それだけ大きいMIDIを作ることはおすすめしません。

どちらの数値もEoT(End of Track、1トラックのデータがここで終わることを示す)メッセージを含めない場合の計算で、EoTを入れないMIDIを作ることはおすすめしません。実際に作るときは、各トラック1ノート減らして、EoTを入れてあげましょう。

第10版で計算し直しました。前より正確になったと思います。

ソースは?

自分がUMPづくりをやめたら公開するかもしれませんが、それまでは絶対非公開です。デコンパイルは許可していません。だめだよ。

モバイル移植して!

しません。俺にとって黒MIDIはモバイルでやるものじゃねぇんだよ!!!PC買えオラァァァ!!!(あとApp storeに出品するお金ない)

他のプレイヤーについてどう思う?

黒MIDIを読み込むプログラム、程度に思っています。別に競争しているわけではないですよ。

デザインだっさ!

ごめんねごめんね~!

寄付できる?

こんなのに寄付したがる人居るの?てか、お金もらう方法持ってないんだけど?どうしてくれんの?

UMP Discordサーバーに入ってるなら私にDMできるはずだから、Nitroくれてもいいんですよ(チラッ)

おまけ

1.5.1

2019/4/29

1.5

2019/4/1

1周年

2018/11/17

1.4.1

2018/9

1.4

2018/7

1.3

2018/4

いい動画作りやがれアップデート。

Discordサーバーオープン

2018/2/11

1.2.2

2017/12

1.2.1

2017/12

1.2

2017/12

The color boost update.

1.1

2017/11

1.0.1

2017/11

1

2017/11/17

最初の配布。発表動画は最初の1週間で620再生を獲得。小さいチャンネルなので、普段の3倍くらいありそうな伸び方をされてちょっと引いた。

UMP 0

2017/11/8

なんとなく動画あげたらすごい伸びて大変なことになった。

MIDIPlayerTest

??? ~ 2017/7

PFA風の動画を作る最初のプロジェクトが始まったっぽーい!

First MIDI Project

2015/12/28

MIDI関連のプロジェクトで作った、現存する最も古いファイルの作成日。

Menu
inserted by FC2 system