The UMP Manual

12th edition for 1.6

2021 Mar 22

Basics, tips, and answers for recently asked questions. You can now find right section by purpose. Suggestions will be appreciated at UMP Discord server! My English sucks. Really. Please correct.

What is UMP?

UMP (Ultralight MIDIPlayer, 超軽量MIDIプレイヤー, [tʃoːkeirjoː.midi.pureijaː]*1) is literally ultra lightweight (or is it?) and versatile MIDI player to help making MIDI videos, featuring no-lag video rendering, note counter, clean GUI and more.

Quick Start

1. Get a Decent PC

UMP should run smoothly on a PC with:

2. Install Java

Download installer from Java download page and run it.

Links for Windows installers.

If you're using Windows and your CPU is 64bit, make sure to select 64bit installer! It allows UMP to use more memory.

3. Get MIDI Synth Working

If you haven't installed virtual MIDI synth, this is good time to install one. Famous ones are CoolSoft VirtualMIDISynth (easy to use) and OmniMIDI (hard).

Many virtual synths requires a soundfont. Grab few and configure your synth.

4. Start UMP!

Download UMP from the main page and unzip it to empty folder.

The UMP Folder. config.yml will be automatically created when starting UMP.

On Windows, open MIDIPlayer.bat and enjoy.

On other OSes, run:

Terminal
$ java [JVM arguments...] -jar MIDIPlayer.jar [MIDI file path]
On OSX/MacOS, you may need to install JDK to start UMP.

5. Play a MIDI

Use [File] menu or drop a .mid file.

You can also drop a .zip archive or a folder. In that case, UMP will load the first .mid file in it.

6. Next Steps

9. Uninstal

Delete UMP folder. Easy!

UMP doesn't alter system settings nor registry. Deleting UMP folder is really it.

The UMP Launcher

The UMP Launcher is a simple batch file (MIDIPlayer.bat) to start UMP on Windows. The UMP Launcher can be edited in text editor for customization.

Options

Options starts at line 5. Option name and value is separated by = with no spaces around.

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 Options

Frequently Used Options

This section is for people who don't use the Launcher.

-Xms<size>, -Xmx<size>

Example (1.5GB initial, 8GB max): -Xms1560M -Xmx8G

Initial and maximum amount of memory that program(UMP) can use. Size can have letter M or G at the end for megabytes or gigabytes. Increase this to load larger MIDIs.

By using MIDI diagnosis, you can estimate how much memory will be needed to load specific MIDI. Remember to allocate a bit more memory for UMP itself.

-XX:+UseG1GC

Example: -XX:+UseG1GC

Use Garbage first garbage collector (G1GC), which is probably the fastest. For more info about GC, ask Wikipedia Senpai.

Start UMP with Options

Add options before the -jar argument:

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

Renderers

DefaultMIDIRenderer

It's default...

TickBasedDefaultMIDIRenderer

It's default... but render interval changes according to tempo. 120 BPM makes 1x note speed.

Notes are moving faster according to 2x tempo at the end

KeyMIDIRenderer

Only displays keys pressed for each MIDI channel in single color. It doesn't use textures but color information from resource pack.

HorizontalMIDIRenderer

Displays notes in single color and moves from right to left. Pressed notes glows. It doesn't use textures but color information from resource pack.

HexMIDIRenderer

Simulates and displays the MIDI file content with all notes and tempo events in original MIDI merged into one track. Text color is automatically set to white in video render or if background is dark. It doesn't use resource packs at all. Monospace font required.

Render to Video

Render to Video dialog.

FFmpeg

You need FFmpeg executable to create a video. Go to FFmpeg website and download the executable from get the packages, or build your own.

FFmpeg download page. Download from "Get the packages" for executable, not the big button at the top (which is a link to source code you can build).
If you place ffmpeg.exe in the UMP folder, UMP will automatically selcet it for you.

Video Types and Codecs

VideoPrograms
TypeCodecTransparencyWindowsOSXAfter Effects CC
Movie & TVMedia PlayerAVIUtlQuickTime Player
mp4x264
x265
movpng
qtrle
avipng

Presets

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

The upper in the list, the faster the encoding and the larger the video file. placebo seems to be not so much effective.

Increase mp4 Quality

Without changing any options, bitrate of the video is set automatically (200kbps?). If the video looks strange, try setting bitrate in advanced options. My recommendation is VBR with CRF of 20 or smaller.

Left: Extremely low bitrate (CBR 250kbps). Right: Good bitrate (CRF 18).

Diagnose MIDI

Diagnosing MIDI file.

"Count notes & MIDI diagnosis" allows you to count notes and find problems of MIDI files in less memory. If UMP can't play some MIDIs, use this to diagnose the file before contacting, as 99% is problem in file, not UMP.

NameNotes
File SizeBinary prefix (1KiB is 1024B not 1000B, 1MiB is 1024KiB)
ResolutionPPQN
Tracks
Notes
Memory to OpenValue will change even on same MIDI depending on config midi.loaderThreads
Length
TempoCan show range ("minimum tempo~maximum tempo")
Moment Max NPSMay not be correct :(
Overlapped Notes

YAML Data Types

UMP uses YAML 1.1 for storing data. YAML is basically a collection of colon-separated key-value sets.

Only spaces can be used for indentation. Check your text editor settings before editing yml file for the first time.

String

Example: "Hello, World!"

A text. Recommended to surround with " or ', but not always necessary.

Integer

Example: 77, 0x4d

A number. Decimals can't be used. Hex can be used.

Float

A number. Decimals can be used.

Color

Example: 0xffb900(yellow), 0xffffff(white)

RGB Color. String or Integer in 0xRRGGBB form.

Boolean

Only true(Yes) or false(No).

Config

Some UMP settings can be changed by editing config.yml in UMP folder.

Close UMP before editing config!

Sample

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

Resourcepack

Resourcepack (or "Pack") is folder or zip file containing following PNG images and pack.yml file. Some images should be grayscale for better coloring results.

The UMP Assets. Resourcepacks can overwrite all of these.
Real resourcepack folder.

note and noteEdge should be 1 pixel high. Others can be any size. Images are resized without anti-aliasing for maximum performance.

pack.yml

Sample

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:
Looping 6 note colors. Default resourcepack has 16 colors.

note.colors

Note color for each tracks. Use map to change specific track color(Note that track number starts from 0).

colors:
  - 0xff0000
  - 0x00ff00
  - 0x0000ff
Using list(with loopColors true)
colors:
  1: 0xffffff
  3: 0x000000
Using map. Note that random color (track 0 and 2 in this case) is always different in each color loop, even if loopColors is true.

signature

Translation

UMP supports Japanese, English and Simplified Chinese by default. You can easily add translations by simply placing language files in UMP folder.

de.lang
_lang=Deutsch
welcome.synth=Wählen Sie einen Synthesizer
welcome.synth.none=(Keinen benutzen)
welcome.next=Weiter
UMP loading language file placed in UMP folder.

Language Format

Language format will change in 1.6.
# Syntax:
key=value
# Examples:
_lang=English
converter.speedLimit=Slow down render to %s%%
converter.speedLimit.unlimited=No render speed limit
converter.done=Finished rendering to:\n%s

Language Metadata

Metadata has key starting with _ to distinguish from UI translations.

_lang

Name of this language. Used in [Languages] dialog and welcome window.

_lang.xx

Name of this language in other language. Used in [Languages] dialog, next to language with file name same as xx part.

ja.lang
_lang=日本語
_lang.en=Japanese
en.lang
_lang=English
zh.lang
_lang=簡体中文
_lang.en=Chinese Simplified
Selecting language with filename of en.lang to display _lang.en in other languages.

_font

Name of suitable font to display this language. Multiple fonts can be specified using comma to support more OSes (don't put spaces around comma). First installed fonts in this list or default sans serif (if no fonts were installed) will be used.

ja.lang
_font=Yu Gothic UI,Meiryo UI,メイリオ
Font displayed in language dialog. In Windows 8 Yu Gothic UI doesn't exist, so next font in the list, Meiryo UI, will be displayed.

_createdBy

Name of translators. Not yet used in UMP, but reserved for future use.

Tutorials

Index

Change Memory Allocation

JVM has option for how much memory JVM/UMP can use. To open bigger MIDIs, you might need to change this option to allow more memory.

Because the amount of memory UMP need to load MIDI varies depending on UMP config and each MIDI file (even if note count is same), it is impossible to calculate "how many notes UMP can open with certain amount of memory". However calculating "how much memory UMP will need to open specific file" is possible in Diagnosis.

Configure the Launcher Windows

  1. Open MIDIPlayer.bat in your favorite text editor.
    Right clicking on batch file and selecting [Edit].
  2. Update memory options.
    MIDIPlayer.bat (before)
    set INITIAL_MEMORY=2G
    set MAX_MEMORY=2G
    MIDIPlayer.bat (after)
    set INITIAL_MEMORY=6G
    set MAX_MEMORY=6G
    Changing Launcher options to use 6GB memory
    How it looks in MS Notepad.
  3. Save file and restart UMP.

Use options in command line Any OS

Memory Options Generator

  1. Add options in between java and -jar and run.
    Terminal
    $ java -Xms6G -Xmx6G -jar MIDIPlayer.jar
    Starting UMP with memory allocation of 6GB.

Tips

Apply WinMM Patch

MIDI performance on Windows 10 can be improved drastically by applying WinMM patch.

Since UMP is a Java program whch can't be patched, you need to patch the JVM, a software that actually runs UMP.

It's recommended to patch JVM every time you update Java, just to be sure.
If you've patched anything using OmniMIDI 7.1 or older, you really should patch them again using latest version of OmniMIDI. It's dangerous to use old patch because vulnerability was found.

Find JVM

  1. Have UMP running.
  2. Open Task Manager.
    • On Windows 8 or later, click [More details] at bottom-left if exists.
  3. Find JVM process called "Java(TM) Platform SE binary" in [Processes] tab. Expand and check it's running UMP, right click on it, click [Open file location].
    JVM process running UMP.
  4. File explorer will open. Copy the path.
    Copying path (file address) in file explorer.

Patch with OmniMIDI

  1. Open OmniMIDI Configurator as administrator and go [Tools] -> [Windows Multimedia Wrapper Patch].
    Windows Multimedia Wrapper Patch. It's funny that there's a typo in OmniMIDI 7.1.0.1 where it says "MIcrosoft" instead of "Microsoft".
  2. Click [Patch an application] inside [For Black MIDIs].
  3. In [Select an application to patch] dialog, go to JVM folder and select java.exe.
    Pasting copied path in file explorer. Did you know that you can click on address bar and copy or paste path, just like how we did now?
  4. Restart UMP.
  5. Done!

Patch Manually

This patch file is out of date. It's recommended to use OmniMIDI if possible.
  1. Unzip the patch file, copy all files in WinMM32 or WinMM64 depending on your JVM type, into JVM folder. Administrator privilege may be required.
  2. Restart UMP.
  3. Done!

Change Note Colors

  1. Check what track has the notes you want to change color. Skip all tracks with no notes, count from 0 and remember the number of that track.
  2. Open resourcepacks folder (create if it doesn't exist) in UMP folder, create new folder with any name, create new file named pack.yml in that folder.
    Folder structure after this step
  3. Open pack.yml in text editor and write:
    format: 0
    name: (Any name)
    version: 1.0
    author: (Your name)
    description: (Short description)
    note:
      colors:
        (Track number): (Color you want)
    Not to mention you don't need to use your real name.
    You can also use list if you want to change many colors from track 0:
    note:
      colors:
      - (Color 0)
      - (Color 1)
      - (Color 2)
  4. Save the file, return to UMP and go [Options] -> [Resourcepacks].
  5. Select your pack you just made, click [Done].
  6. Done!

Sync Sound to Screen

  1. Close UMP.
  2. Open config.yml in text editor.
  3. Find usePlayThread, set value to false and save file.
  4. Restart UMP.
This may improve audio timings but also lowers framerate.

Open AVI in AVIUtl

Japanese free video editing software AVIUtl can open UMP's AVI file by installing input plugin. This section in the manual is made for Japanese people and translated with no reason.

  1. Install L-SMASH Works to AVIUtl.
  2. Open Settings([ファイル] -> [環境設定] -> [入力プラグインの設定] -> [L-SMASH Works File Readerの設定]).
  3. Check [Libav+L-SMASH] and [LW-Libav] at the top.
  4. Restart AVIUtl or reopen project file.
  5. Make sure to check [アルファチャンネルを読み込む] for videos with transparent background.
It is impossible to use L-SMASH Works outside Japan, due to region restriction of download link.
If dropping video files on timeline isn't adding that video, right click -> [メディアオブジェクトの追加] -> [動画ファイル] to create empty video object, then drop video file on options dialog or open from [参照ファイル].
Successfully opening AVI with transparent background, adding image and texts. Don't put text like this, as it may make notes hard to see.

April Features

UMP has special features that are available only in between April 1st and April 3rd. UMP checks current date when starting with system clock converted to Japan timezone.

Features (Massive Spoiler)

Since 1.5 (2019)

Since 1.6 β2 (2020)

Since 1.6 β3 (2021)

FAQ

It doesn't work!

Install Java 8.

It lags!

Try [Options] -> [FPS Limit...] -> [Unlimited]. If this doesn't help, UMP isn't good enough to run on your PC. I'm sorry. (but you can still use video render! try it out!)

Audio lags!

If this doesn't help... the MIDI you're playing is too powerful.

I see random lag spikes!

It's caused by JVM GC (Java cleaning memory), and it's really hard to get rid of it completely.

If you're used to tune GC things, you can change JVM arguments by editing batch file yourself. video render won't get affected by this.

Why it says file isn't supported even though other players can play?

Because UMP's MIDI loader is so strict.

I won't change this strictness, so give up playing that on UMP. Other player's MIDI loading is little bit lazy in my opinion.

Will you add PFA's red bar?

No. I'm leaving this difference so you can see it's not PFA in glance. I also hope you never add this.

FPS limit makes stuttering!

Few workarounds I came up with:

Do I have to write credit?

Not necessary, but it'd be appreciated! Using credit overlay in video render is also a good way to credit.

Credit overlay.
Player: UMP
Video rendered with UMP 1.5
https://pipiraworld.web.fc2.com/ump/
Examples of writing credit. Link for UMP should be https://pipiraworld.web.fc2.com/ump/.

Why Java?

Because it's my primary language. I'm interested in C++, but... Java is so easy... I can't escape...

What's the limit for notes it can load?

23,455,889,992,365 notes, if my calculations are right.

Single MIDI file can have 46,911,780,246,870 notes, but UMP and some MIDI players can't load. Note that both calculations doesn't include EoT (End of Track) message. If you want to make biggest MIDI for some reason, you should remove 1 note and add EoT to every track.

Recalculated in 10th edition. I think this one is more accurate.

Source code?

No. Code is private as long as I continue making updates (...or maybe private forever, me in future decides that). You are not allowed to decompile.

Mobile platform?

No. Just buy PC!!! Oh also I have no money to publish apps to App store.

What do you think about other players?

I don't think much of them. I'm not competing hard with other players!

Bad design!

aww im so sowwy

How can I donate?

I currently don't have any way to accept direct donation.

If you're in UMP Discord server you can throw me Nitro in DM

Extra: Some History Stuff

bruh ump is so dead

2019

1.5.1

Apr 29 2019

1.5

April 1 2019

1 Year

November 17th 2018

1.4.1

September 2018

1.4

July 2018

1.3

April 2018

The make good videos guys update.

Discord server

February 11th 2018

1.2.2

December 2017

1.2.1

December 2017

1.2

December 2017

The color boost update.

1.1

November 2017

1.0.1

November 2017

1

November 17th 2017

First public version. Release announcement video acquired 620 views in first 7 days, which was incredible for tiny YT channel like me.

UMP 0

November 8th 2017

First reveal. The beginning of my busy life.

MIDIPlayerTest

??? ~ July 2017

First project to generate PFA-like image was started.

First MIDI Project

December 28th 2015

Creation date of oldest file produced from my MIDI-related project.

Menu
inserted by FC2 system