English / Japanese

MIDITrail for macOS Ver.2.1.0 User Manual

Copyright (c) 2010-2026, WADA Masashi All rights reserved.
Web: https://www.yknk.org/miditrail/
Mail:

0. Contents

1. Introduction
2. System requirement
3. How to get started
4. Operation Panel
5. Opening MIDI files
6. Playback MIDI files
7. View Mode
8. Moving the viewpoint
9. MIDI IN monitor
10. Setting
11. Keyboard operations
12. Restriction
13. FAQ
14. How to customize
15. Appendix
16. Copyright and license
17. Acknowledgements
18. History

1. Introduction

"MIDITrail" is a MIDI player which provides 3D visualization of MIDI datasets.
You can enjoy not only listening but also viewing.
MIDITrail supports SMF format 0/1, and multiple MIDI ports.
MIDITrail is available for Windows, macOS and iOS.

Screenshot: PianoRoll3D


Screenshot: PianoRollRain

2. System requirement

OS: macOS 10.13(High Sierra), 10.14(Mojave), 10.15(Catalina), 11(Big Sur), 12(Monterey), 13( Ventura), 14(Sonoma), 15(Sequoia), 26(Tahoe)

It is recommended that your Mac has high performance graphics for smooth animation.
If the MIDI datasets contains a lot of notes, the software needs more performance graphics.
As long as the performance of your Mac allows, please enjoy MIDITrail with large window.

3. How to get started

(1) How to install

There are two ways to install MIDITrail.

(2) MIDI OUT port settings

Click "MIDI OUT..." in the "Option" menu to display the MIDI OUT settings dialog.
You must configure the output destination for Port A.

(3) Playback midi files

Drag and drop a MIDI file (*.mid) into the MIDITrail window to open it.
Click the button on the operation panel to start playback.

4. Operation Panel

(1) Operation Panel

You can use the operation panel to control functions such as selecting and playing MIDI files and changing the viewpoint.


You can toggle the display of the operation panel by selecting "Operation Panel" from the "Window" menu.
Some MIDITrail functions cannot be accessed via the operation panel; please use the menu instead.
(e.g., MIDI IN monitor, saving viewpoints, various settings, viewing the manual)

5. Opening MIDI files

(1) Opening MIDI files

Clicking the "Open File" button on the operation panel will displays the file selection dialog, where you can select a standard MIDI file (*.mid).
You can also open a file by dragging and dropping a standard MIDI file (*.mid) into the MIDITrail window.
You can also open a MIDI file upon launching MIDITrail by dropping the file onto the MIDITrail icon.

(2) Opening folder

MIDITrail can play MIDI files stored in a folder in sequence.
Clicking the "Open Folder" button on the operation panel will display a folder selection dialog, where you can select the folder containing the Standard MIDI files (*.mid).
You can also open a folder by dragging and dropping it into the MIDITrail window.

(3) Command line interface

You can launch MIDITrail from the command line in the Terminal by specifying a MIDI file.
Note: Command-line usage is not available for the version of MIDITrail downloaded from the App Store.

open ./MIDITrail.app --args [-p] [-q] [path/to/file]

argumentdetail
-pPlay MIDI file after startup of MIDITrail.
If you did not specify "path/to/file", this option will be ignored.
-qEnd MIDITrail after end of playback.
If option "-p" was not specified, this option will be ignored.
path/to/fileMIDI file path.
When you specify a path including a space character, please use escape code. ex."file\ name.mid"

6. Playback MIDI files

(1) Playback MIDI file

You can use the operation panel to start, pause, stop, and skip MIDI file playback, as well as change the playback speed.
When the "Repeat" button on the operation panel is selected, MIDITrail repeats the playback of the MIDI file.


You can also control playback using menus, a keyboard, or a game controller instead of the operation panel.

(2) Folder playback

Opening the folder allows you to use the folder playback function.
Clicking the "Previous File" and "Next File" buttons on the operation panel allows you to open the files in the folder sequentially.
When the "Folder Playback" button is selected, MIDITrail automatically opens and begins playing the next file after the current MIDI file finishes playing.
When the "Repeat" button is selected, MIDITrail will start playing the first MIDI file after the last one finishes, thereby repeating the folder playback.


(3) Playback Counter

The contents of the playback counter displayed during MIDI file playback are as follows.

CounterDetails
TIMEElapsed time.
BPMTempo (Beats Per Minute).
BEATTime signature.
BARNumber of bars.
NOTESNumber of notes.
SPEEDPlayback speed.

7. View Mode

(1) Selecting the View Mode

Clicking the "View Mode" button on the operation panel will displays the view mode selection dialog, where you can select the view mode.
You can also select the view mode from the "View" menu. You can not change the view mode while playing or pausing.


(2) Display/Effect switch

You can switch the display/effect at the "View" menu.


The piano roll bar will move up/down or right/left with change of pitch bend.
Some MIDI animation works are using pitch bend to shift the piano roll bars without change keys.
If the MIDI animation is not displayed correctly, please disable the pitch bend effect to fix the piano roll bars.

(3) Full screen display

When you select "Full Screen" from the "Window" menu, you can switch between window mode and full screen mode.

8. Moving the viewpoint

(1) Moving the viewpoint using the keyboard and mouse

You can move freely in 3D space, and look at MIDI datasets from all directions by operation of keyboard and mouse, like FPS (First Person Shooter) game.
Although there is sense of incongruity in the beginning, it will be very comfortable as experience is gained.


When you click the window, it will become the view control mode by the mouse, and mouse cursor will disappear.
The eye direction synchronizes movement of your mouse.
If you click once again, view control mode will be canceled.
And you can rotate piano roll using mouse wheel.


(2) Moving the viewpoint using a game controller

You can operate the viewpoint with a game controller supported by macOS.

Button / StickAction
Pause buttonPlay / Pause
A buttonPlay / Pause
B buttonStop
X buttonViewpoint: down
Y buttonViewpoint: up
L1/R1 shoulder buttonChange viewpoint
L2/R2 trigger buttonSkip back/forward
Directional padViewpoint movement: front and back, right and left
Left thumbstickViewpoint movement: front and back, right and left
Right thumbstickEye direction

(3) Switching and Saving Viewpoints

When you click "Viewpoint 1 / 2 / 3" button on the operation panel, you can switch to a standard viewpoint.
When you click "My Viewpoint 1 / 2 / 3" button, you can switch to a viewpoint saved in advance.


If you want to save the current viewpoint, select "Save My Viewpoint 1 / 2 / 3" from the "View" menu.
The viewpoint is saved for each view mode.


You can also use the keyboard to switch and save viewpoints.

9. MIDI IN monitor

You can view data sets received from MIDI IN device in realtime.
You need to select the device to be monitored in the MIDI IN settings beforehand.
When you select "Start Monitoring" from the "Playback" menu, MIDI IN monitoring will start.
NOTE: MIDITrail can not record data sets received from MIDI IN.

10. Setting

(1) Window size configuration

When you select "Window size..." from the "Window" menu, the window size configuration dialog will appear.
You can select your favorite window size.
You can not change window size while playing or pausing.


[Width] [Height]
You can specify any window size.

[Apply to the view area]
If you want to apply that size to the view area, check this option.

(2) MIDI OUT configuration

When you select "MIDI OUT..." from the "Option" menu, the MIDI OUT configuration dialog will appear.


[Port A]
At least, you must select the MIDI OUT device of "Port A". Ordinary MIDI datasets is sent to "Port A".

[Port B,C,D,E,F]
If you want to play the MIDI datasets which uses multiple ports,you must select the MIDI OUT device of port B, C, and so on.
To play the MIDI datasets which uses multiple ports, it is necessary to prepare MIDI interface and MIDI module which supports multiple ports.

(2) MIDI IN configuration

Select "MIDI IN..." from the "Option" menu, then "MIDI IN configuration" dialog will appear.


[MIDI IN]
Select the MIDI IN device to monitor.

[MIDITHRU]
If you check the MIDITHRU, MIDITrail will send data sets received from MIDI IN to MIDI OUT.

(3) Internal Wavetable Synthesizer configuration

Select "Synthesizer..." from the "Option" menu, the Internal Wavetable Synthesizer configuration dialog will appear.
You can not change Synthesizer configuration while playing or pausing.


[Wavetable File]
The default value is the wavetable file (GeneralUser-GS.sf2) included with the app.
You can select your wavetable file.
The extension of the wavetable file must be ".sf2". MIDITrail does not support ".dls" files in version 2.1.0 and later.
MIDITrail assigns channel No.10 for percussion.

[Sample Rate]
Select the sample frequency for waveform rendering. The default value is 44100Hz.

[Max Voices]
Select the maximum number of voices for waveform rendering. The default value is 512.
Selecting a smaller value can reduce the load on the waveform rendering process, but it may cause sound interruptions when playing MIDI data with a large number of notes.

[Sustain (CC#64)]
This setting allows you to choose whether or not to reflect the sustain (control change #64) contained in the MIDI data in the waveform rendering process. The default value is enabled.

[Acknowledgements]
This displays copyright notices of the library and sound bank.

(4) Graphic configuration

Select "Graphic..." from the "Option" menu, the graphic configuration dialog will appear.
You can not change graphic configuration while playing or pausing.


[Anti-aliasing]
If anti-aliasing is enabled, a notch (jaggy) will decrease and a more beautiful picture will be displayed.
However, since processing of anti-aliasing is heavy, performance may be poor when you select a upper level.
If your Mac does not support anti-aliasing, it is displayed as "Not supported".

[Background image file path]
If you want to display the background image, specify the file path of the image.
The extension of the image file must be ".jpg" or ".png".
MIDITrail supports a bitmap file that pixel format is 8bit RGB or 8bit RGBA.

[Quarter note length]
You can change a quarter note length of piano roll. You can specify a value from 0% to 1000%. The default value is 100%.

(5) Color configuration

You can customize the colors displayed on the screen.
When you select "Color..." from the "Option" menu, the color configuration dialog will appear.
You can select the color palette and change it to your favorite color scheme.
You can not change the color while playing or pausing.


When you click "Edit..." button, the color palette configuration dialog will appear.
You can customize the color palette.
You can not edit the default color palette.


Gradation Tool
[Set Gradation Colors] You can assign gradation colors for channels that you selected.

Parameter Setup Tool
[Set Default Colors] Sets the default color for all items.
[Export Color Parameters...] You can edit the exported parameters with a text editor.
[Import Color Parameters...] You can import the parameters that you edited with a text editor. It is possible to enter part of the parameters.

11. Keyboard operations

(1) Keyboard operations

You can perform operations quickly using the keyboard. The keyboard operations for playing MIDI files are shown in the following figure.


(2) List of keyboard operations

KindKeyAction
File COMMAND + B
COMMAND + P
Open previous file.
COMMAND + NOpen next file.
PlaybackSPACEPlay / Pause
ESCStop
12Skip Backward / Skip Forward
45Playback Speed Down / Up
F2Double speed playback
Moving Viewpoint
(left hand)
WSIt moves forward and backward.
ADIt moves left and right.
QEIt goes up and down.
ZCIt moves along the direction of MIDI datasets.
(In PinoRollRain, it moves along the piano keyboard.)
SHIFT + [WS]
SHIFT + [AD]
SHIFT + [QE]
SHIFT + [ZC]
Move quickly.
CTRL + [WS]
CTRL + [AD]
Control the direction of the gaze.
Moving Viewpoint
(right hand)
It moves forward and backward.
It moves left and right.
PgUpPgDnIt goes up and down.
,.It moves along the direction of MIDI datasets.
(In PinoRollRain, it moves along the piano keyboard.)
SHIFT + []
SHIFT + []
SHIFT + [PgUpPgDn]
SHIFT + [,.]
Move quickly.
CTRL + []
CTRL + []
Control the direction of the gaze.
Switching viewpoints7Move to standard viewpoint 3
8Move to standard viewpoint 2
9Move to standard viewpoint 3
COMMAND + 7Move to my viewpoint 1
COMMAND + 8Move to my viewpoint 2
COMMAND + 9Move to my viewpoint 3
OPTION + COMMAND + 7Save my viewpoint 1
OPTION + COMMAND + 8Save my viewpoint 2
OPTION + COMMAND + 9Save my viewpoint 3
ScreenCTRL + COMMAND + FSwitching full screen

12. Restriction

(1) Synchronization of MIDI sound and display

If you use the MIDI module which delays sound (such as software sound modules), the MIDI sound and display may not synchronize.

(2) Performance of graphics

MIDITrail renders all notes of the MIDI file in real time.
Therefore if MIDI file has a large number of notes, the load of rendering becomes high.
In order to enjoy MIDI file which contains tens of thousands of notes comfortably, you have to use Mac which has high performance graphics.

(3) Multiple ports

In specification of SMF (Standard MIDI File), a method to select port is not defined.
However there is the unofficial method (*1) to select port. MIDITrail supports that method, but may be unable to play the MIDI file. It depends on the MIDI file.
(*1) Meta event (FF 21 01 pp) is the command to select port.

(4) Time format of standard MIDI file

MIDITrail can't open the MIDI file whose delta time represents actual time.

13. FAQ

(1) Q. Can I create playlists?

MIDITrail does not have a playlists function now, but you can use folder play function.
For details, please refer to "(2) Folder Playback" in "6. MIDI File Playback".

(2) Q. I want to generate video of MIDITrail. Does MIDITrail have recording function?

MIDITrail does not have a recording function now.
But you can use Quick Time Player to generate video files on macOS.

(1) Open Quick Time Player app, and choose "File" -> "New Screen Recording".
(2) Set the location where you want to save your screen recording.
(3) Click Record button. To stop recording, click the Stop Recording button in the menu bar.

Record your screen in QuickTime Player on Mac
https://support.apple.com/guide/quicktime-player/record-your-screen-qtp97b08e666/10.5/mac/12.0

(3) Q. The animation is not smooth.

Please try to change window size to small, and turn off anti-aliasing. Then the load of rendering becomes low.
Check FPS value in window title. If the FPS value is under 60, the performance of graphics is insufficient.
When MIDI file has a large number of notes, the load of rendering becomes high.
To confirm the performance of your Mac, please try to open MIDI file which contains few notes. If the animation does not improve, please use Mac which has high performance graphics.

(4) Q. I want to customize the window size and position.

You can customize the window size and position. Please open following file by Property List Editor.
Property List Editor is a utility application of Xcode.
If you want to customize the window size, edit "Width" and "Height".
If you want to customize the window position, add "WindowPosition", "X" and "Y".

~/Library/Preferences/jp.sourceforge.users.yknk.MIDITrail.plist
View
    WindowSize
        Height=600 (Type:String)
        Width=800 (Type:String)
    WindowPosition
        X=100 (Type:String)
        Y=200 (Type:String)

14. How to customize

You can customize MIDITrail as your like, by editing the configuration files that were included in resources of MIDITrail.

Filecontents
MIDITrail.app/Contents/Resources/conf/Player.iniPlayer configuration
MIDITrail.app/Contents/Resources/conf/PianoRoll3D.iniView mode configuration: Piano Roll 3D
MIDITrail.app/Contents/Resources/conf/PianoRoll2D.iniView mode configuration: Piano Roll 2D
MIDITrail.app/Contents/Resources/conf/PianoRollRain.iniView mode configuration: Piano Roll Rain
MIDITrail.app/Contents/Resources/conf/PianoRollRain2D.iniView mode configuration: Piano Roll Rain 2D
MIDITrail.app/Contents/Resources/conf/PianoRollRing.iniView mode configuration: Piano Roll Ring
MIDITrail.app/Contents/Resources/conf/PianoRoll3DLive.iniView mode configuration: Piano Roll 3D (MIDI IN monitor)
MIDITrail.app/Contents/Resources/conf/PianoRoll2DLive.iniView mode configuration: Piano Roll 2D (MIDI IN monitor)
MIDITrail.app/Contents/Resources/conf/PianoRollRainLive.iniView mode configuration: Piano Roll Rain (MIDI IN monitor)
MIDITrail.app/Contents/Resources/conf/PianoRollRain2DLive.iniView mode configuration: Piano Roll Rain 2D (MIDI IN monitor)
MIDITrail.app/Contents/Resources/conf/PianoRollRingLive.iniView mode configuration: Piano Roll Ring (MIDI IN monitor)

If you want to open the resource files, right click MIDITrail icon, and select "Show Package Contents".

(1) Player Configuration

(a) Player Control

Edit [PlayerControl] section.

NameDetails
AutoPlaybackAfterOpenFilePlayback automatically after opening file (0:disable / 1:enable)

(b) View Control

Edit [ViewControl] section.

NameDetails
ShowFileNameShow the file name instead of the title (0:disable / 1:enable)

(c) Skip Control

Edit [SkipControl] section.

NameDetails
SkipBackTimeSpanInMsecSkip back time span (msec)
SkipForwardTimeSpanInMsecSkip forward time span (msec)
MovingTimeSpanInMsecSkip animation time span (msec)

(d) Playback Speed Control

Edit [PlaybackSpeedControl] section.

NameDetails
SpeedStepInPercentPlayback speed step (%)
MaxSpeedInPercentPlayback speed max ratio (%)

(e) Playback Control

Edit [Playback] section.

NameDetails
DelayBetweenSongsInMsecDelay between songs (msec) (0 - 10000)

(2) View Mode Configuration

(a) Moving speed of viewpoint

Edit [FirstPersonCam] section.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
VelocityFByesyesyesVelocity of forward and backward. (m/s)
VelocityLRyesyesyesVelocity of left and right. (m/s)
VelocityUDyesyesyesVelocity of up and down. (m/s)
VelocityPTyesyesyesAngular velocity of look. (degree/s)
AcceleRateyesyesyesThe rate of acceleration when push SHIFT key. (n times)
VelocityAutoRollyesyesyesAngular velocity of auto rotation of piano roll (degree/s)
VelocityManualRollyesyesyesAngular velocity of manual rotation of piano roll (degree/s)

(b) Display of piano roll

Edit [Scale] section.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
QuarterNoteLengthyesyesyesLength of quarter note (m)
NoteBoxHeightyesnoyesHeight of note box (m)
NoteBoxWidthyesnoyesWidth of note box (m)
NoteStepyesnonoInterval length of notes in a channel (m)
ChStepyesnoyesInterval length of channels (m)
RippleHeightyesnoyesHeight of ripple (m)
RippleWidthyesnoyesWidth of ripple (m)
PictBoardRelativePosyesnoyesThe relative position which crosses perpendicularly the board and the playback section.
0.0 - The left edge of board crosses playback section
0.5 - The center of board crosses playback section
1.0 - The right edge of board crosses playback section
LiveNoteLengthPerSecondyesyesyesNote length for 1 second in monitor (m)
LiveMonitorDisplayDurationyesyesyesDisplay duration in monitor (msec)
RingRadiusnonoyesRadius of ring (m)

If you set small value to QuarterNoteLength, you can enjoy MIDI datasets like miniature garden.

(c) Color

Edit [Color] section. "A" of "RGBA" means alpha value.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
NoteColorTypeyesyesyesNote color type
CHANNEL: Assign the channel color to the piano roll bar. (Ch-XX-NoteRGBA)
SCALE: Assign the scale color to the piano roll bar. (Scale-XX-NoteRGBA)
Ch-01-NoteRGBA
Ch-02-NoteRGBA
   :
Ch-16-NoteRGBA
yesyesyesColor of the piano roll bar at each channel.(RGBA)
Scale-01-NoteRGBA
Scale-02-NoteRGBA
   :
Scale-12-NoteRGBA
yesyesyesColor of the piano roll bar at each scale.(RGBA)
01=C,02=C#,03=D,04=D#,05=E,06=F,07=F#,08=G,F09=G#,10=A,11=A#,12=B
GridLineRGBAyesnoyesColor of the grid line and bar line. (RGBA)
If A of RGBA is 00 then the grid line will disappear.
PlaybackSectionRGBAyesnonoColor of the playback section. (RGBA)
CaptionRGBAyesyesyesColor of the caption/counter string.(RGBA)
BackGroundRGBAyesyesyesBack ground color(RGBA)

(d) Active note effect

Edit [ActiveNote] section.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
DurationyesnoyesDuration of active note flash.(msec)
WhiteRateyesnoyesWhite rate at "NOTE ON".
0.0 Same color as piano roll bar. It means no flash.
0.5 Neutral color of piano roll bar and white.
1.0 White.
EmissiveRGBAyesnonoEmissive color of active note. (RGBA)
The parameter will be ignored on PianoRoll2D.
The parameter has been deprecated since Ver.2.0.0.
SizeRatioyesnoyesSize magnification ratio of active note.
The parameter will be ignored on MIDI IN monitor.

(e) Ripple

Edit [Ripple] section.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
DurationyesnoyesDuration of a ripple.(msec)

(f) Stars

Edit [Stars] section.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
NumberOfStarsyesyesyesThe number of stars to draw.

(g) Bitmap

Edit [Bitmap] section.
Place your bitmap file to "data" folder which exists under the MIDITrail folder. And write the bitmap file name to INI file.
If the height or width of bitmap is too big, your Mac may be unable to draw the bitmap.
In Mac OS X 10.5, if you use the image which size is not (2^n)*m, the texture may be broken.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
BoardyesnoyesBitmap file name of the picture board.(ex. "data\Board.bmp")
Instead of piano keyboard, you can display your favorite wallpaper. The aspect ratio of bitmap is arbitrary.
To adjust the relative position which crosses perpendicularly the board and the playback section, please edit "[Scale] / PictBoardRelativePos".
RippleyesnoyesBitmap file name of the ripple.(ex. "data\Ripple.bmp")
You can change ripple which is displayed on "NOTE ON". The aspect ratio of bitmap is arbitrary.
To adjust ripple display size, please edit "[Scale] / RippleHeight, RippleWidth".
KeyboardnoyesnoBitmap file name of piano keyboard.(ex. "data\Keyboard.bmp")
Texture image of Piano keyboard. You can not change the aspect ratio of this bitmap.

(h) Piano keyboard

Edit [PianoKeyboard] section.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
KeyDownDurationnoyesnoDuration of key down (msec)
KeyUpDurationnoyesnoDuration of key up (msec)
KeyboardStepYnoyesnoKeyboard step interval: Horizontal direction (m)
KeyboardStepZnoyesnoKeyboard step interval: Vertical direction (m)
KeyboardMaxDispNumnoyesnoThe number of the maximum keyboards (0-16)
WhiteKeyColornoyesnoColor of white key. (RGBA)
BlackKeyColornoyesnoColor of black key. (RGBA)
ActiveKeyColorTypenoyesnoActive key color type
STANDARD: Standard color (ActiveKeyColor)
NOTE: Note color (Ch-XX-NoteRGBA or Scale-XX-NoteRGBA)
ActiveKeyColornoyesnoColor of active key. (RGBA)
ActiveKeyColorDurationnoyesnoDuration of change from the color of note ON to the last neutral color. (msec)
ActiveKeyColorTailRatenoyesnoDefinition of the last neutral color. Color ratio of the color of note ON (red) and the color of key (white/black) (0.0-1.0)
KeyDispRangeStartnoyesnoKey display range: start position (0-127)
In typical 88-key piano, start position is 21(A0).
KeyDispRangeEndnoyesnoKey display range: end position (0-127)
In typical 88-key piano, end position is 108(C8).

(i) Picture board

Edit [Board] section.
If you want to draw the part of the image that specified at "Board" of [Bitmap] section, set the rectangle parameters here.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
ClipImageyesnoyesClip image (0:no/1:yes)
ClipAreaX1yesnoyesClipping area X1
ClipAreaY1yesnoyesClipping area Y1
ClipAreaX2yesnoyesClipping area X2
ClipAreaY2yesnoyesClipping area Y2

(j) Standard viewpoint

Edit [Viewpoint-2],[Viewpoint-3] section. You can not edit viewpoint 1.

NamePR-3D/2DPR-Rain/2DPR-RingDetails
noyesyesyesX-coordinate
YyesyesyesY-coordinate
ZyesyesyesZ-coordinate
PhiyesyesyesAzimuth angle (degree)
ThetayesyesyesZenith angle (degree)
ManualRollAngleyesyesyesManual rotation angle (degree)
AutoRollVelocityyesyesyesAutomatic rotation velocity (degree/second)

15. Appendix

(1) Structure of 3D piano roll visualization

(a) The structure of "Piano roll 3D" visualization


When MIDITrail open the MIDI datasets uses multiple ports, unused port will be not displayed.
For example, if the MIDI datasets uses port A, C and E, MIDITrail displays port A, C and E side by side, and omits port B and D.

(b) The structure of "Piano Roll Rain" visualization


When MIDITrail open the MIDI datasets uses multiple ports, only piano keyboards of port A will be displayed.
However piano roll bars of all ports will be displayed.

16. Copyright and license

WADA Masashi holds the copyright of MIDITrail.
MIDITrail is released under the BSD license.

Copyright (c) 2010-2026, WADA Masashi <>
All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions 
are met:

* Redistributions of source code must retain the above copyright 
  notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright 
  notice, this list of conditions and the following disclaimer in the 
  documentation and/or other materials provided with the distribution.
* Neither the name of the author nor the names of its contributors 
  may be used to endorse or promote products derived from this 
  software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
POSSIBILITY OF SUCH DAMAGE.

17. Acknowledgements

MIDITrail uses the following library and SoundFont bank.

TinySoundFont

Copyright (C) 2017-2023 Bernhard Schelling (Based on SFZero: Copyright (C) 2012 Steve Folta)
https://github.com/schellingb/TinySoundFont
License details

GeneralUser GS

Copyright (C) 1997-2025 S. Christian Collins
https://www.schristiancollins.com/
License details

18. History

osdn#<id> ... OSDN Ticket Archive
ghmac#<id> ... GitHub MIDITrail-macOS

yyyy/mm/ddVersionChangelog
2010/10/21Ver.0.0.0Development start
It based on the source code of MIDITrail Ver.1.1.1 for Windows
2010/12/26Ver.1.1.2First formal release for Mac OS X
osdn#23973 MIDITrail for Mac OS X development
2011/12/25Ver.1.1.3 osdn#25454 Added grid line display control
osdn#26985 Added Mac OS X 10.7 (Lion) support
osdn#26987 Added playback speed control
osdn#26988 Added skip control
osdn#26989 Added stars and counter display control
osdn#27005 Added figure of player operations guide to "How to view dialog"
osdn#26990 Fixed bug (Typographical errors on the license)
2012/02/12Ver.1.2.0 osdn#27458 Added MIDI IN monitoring
osdn#27459 Added MIDI OUT auto configuration
osdn#27457 Fixed bug (Screen flickers on skip forward when repeat ON)
2014/01/02Ver.1.2.1 osdn#32544 Merged features of MIDITrail Ver.1.2.1 for Windows
osdn#30545 Added key display range control
osdn#30546 Added back ground color control
osdn#30547 Added scale color assignment to the piano roll bar
osdn#30549 Added improvement of font error message
osdn#32543 Added window position control
osdn#30550 Added support of virtual MIDI port
osdn#30551 Added support of new line character LF in INI file
osdn#32360 Added menu item "Auto save viewpoint"
osdn#32361 Added ability to save viewpoint in MIDI IN monitoring
osdn#32362 Added ability to playback automatically after opening file
osdn#32363 Added ability to open the file while playing
osdn#32366 Added ability to display the file name
osdn#32367 Added view mode "Piano Roll Rain 2D"
osdn#32427 Added note color assignment to active key
osdn#32606 Added support of app sandbox
osdn#32365 Changed title caption ("TITLE:" string was removed)
osdn#32730 Changed development environment to Xcode 4
osdn#30548 Fixed bug (At the start of playback, MIDI data transmission is blocked)
osdn#32359 Fixed bug (MIDITrail does not send some CC events at skip processing)
osdn#32542 Fixed bug (MIDITrail fails to get the offline property of MIDI device)
osdn#32779 Fixed bug (MIDI OUT device "none" does not take effect)
2015/11/23Ver.1.2.2 osdn#35749 Fixed bug. (MIDITrail does not work in El Capitan)
osdn#35750 Changed development environment to Xcode 7 (OS X Ver.)
osdn#35751 Changed display of the security message for the sandbox
osdn#35775 Changed URL and mail address in user's manual
2017/07/23Ver.1.2.3 osdn#37373 Added supports window size customization
osdn#37374 Added supports background image customization
osdn#37375 Added increase of the size of active note
osdn#37371 Changed architecture to 64bit
osdn#37372 Changed development environment to Xcode 8
osdn#37376 Changed brightness the ripple color
osdn#37377 Changed OS name to macOS on user manual
osdn#37378 Fixed bug (Erased the item "Enter Full Screen" of "View" menu)
osdn#37379 Fixed bug (Disable key input for main window while displaying setting dialog)
2019/04/14Ver.1.2.4 osdn#39113 Added viewpoint selection menu
osdn#39114 Fixed bug (Piano roll bar flickers in Piano Roll 2D mode)
osdn#39115 Fixed bug (Time indicator becomes opaque in Piano Roll 3D mode)
osdn#39116 Changed development environment to Xcode 9
2019/05/03Ver.1.2.5 osdn#39188 Added internal wavetable synthesizer
osdn#39189 Added quarter note length configuration
osdn#39190 fixed bug (memory leak of background image processing)
osdn#39191 Changed appendix of user's manual
2019/06/02Ver.1.2.6 osdn#39276 Added full screen mode
osdn#39277 Added support for game controller
osdn#39282 Fixed bug (Code analysis found some mistakes)
osdn#39284 Fixed bug (Line feed code is not LF in some source files)
2019/11/06Ver.1.3.1 osdn#39718 Added view mode "Piano Roll Ring"
osdn#39719 Added supports dark mode
osdn#39720 Changed development environment to Xcode 10
osdn#39721 Changed rendering loop to display link
osdn#39722 Fixed bug (Error dialog must be displayed by main thread)
osdn#39723 Fixed bug (Japanese is not detected)
osdn#39726 Fixed bug ("Unsupported bitmap format" error displayed on launch)
2021/04/02Ver.1.3.2 osdn#41895 Added support for macOS 11 Big Sur (Core MIDI new API)
osdn#41896 Added support for Retina display
osdn#41894 Changed development environment to Xcode 12 (Support M1 Mac)
osdn#41903 Changed MIDI device identification rule
osdn#41897 Fixed bug (The color of the ripples becomes dark in Piano Roll 3D)
osdn#41898 Fixed bug (The character encoding of some source files is Shift-JIS)
2021/05/23Ver.1.3.3 osdn#42364 Added Folder Playback feature
osdn#42365 Added support for Standard MIDI File with illegal chunk size
osdn#42366 Added support for RIFF-based MIDI File
osdn#42367 Added sending "All Sound Off" message when pause/stop/skip
osdn#42368 Fixed bug ("WARNING ITMS-90788" is displayed when uploading the app to App Store)
osdn#42369 Fixed bug (MIDITrail does not start in virtual machine environment)
2021/09/08Ver.1.3.4 osdn#42830 Added setting of delay between songs
osdn#42831 Fixed bug (Sending System Exclusive causes crash when data size is zero)
2022/02/13Ver.1.3.5 osdn#43853 Fixed bug (File Open Panel freezes)
2022/07/18Ver.1.3.6 osdn#45144 Added feature of saving my viewpoint
osdn#45145 Added display switch of grid line and time indicator
osdn#45146 Added feature of saving display switch status
osdn#45147 Added 2nd light for Piano Roll 3D
osdn#45148 Added MIDI system message parsing
2022/09/27Ver.2.0.0 osdn#45695 Added feature of color configuration
osdn#45696 Added bar ring for Piano Roll Ring
osdn#45697 Changed key color of Piano Roll Rain
osdn#45698 Changed development environment to Xcode 13
osdn#45699 Changed graphics API from OpenGL to Metal
osdn#45732 Changed app name animation in startup screen
2022/10/26Ver.2.0.1 osdn#45971 Added function to send note off when paused or stopped and note on when resumed
osdn#45972 Fixed bug (MIDITrail is not reading tempo data correctly)
2022/10/30Ver.2.0.2 osdn#46016 Fixed bug (MIDITrail crashes during the Metal initialization process due to improper anti-aliasing settings)
2026/01/15Ver.2.0.3 ghmac#1 Changed development environment to Xcode 26
ghmac#2 Changed documents due to the migration of the project website
ghmac#3 Changed application icon
ghmac#4 Fixed bug (MIDITrail crashes when loading a MIDI file with no notes)
2026/06/28Ver.2.1.0 ghmac#5 Added TinySoundFont as the internal wavetable synthesizer
ghmac#6 Added GeneralUser GS as the default wavetable file
ghmac#7 Added Operation Panel
ghmac#8 Added message incicating that files can be dropped on the startup screen
ghmac#9 Added function to save the selection state of repeat and folder playback
ghmac#10 Changed the default setting for the MIDI output device (Port A) to the internal wavetable synthesizer
ghmac#11 Changed the initial display page of the manual
ghmac#12 Changed the timing for saving color palette settings
ghmac#13 Changed the manual chapter structure
ghmac#14 Fixed bug (The display color in the color settings dialog is faint)
ghmac#15 Fixed bug (Captions and background images may not render correctly in a multi-monitor environment)
ghmac#16 Fixed bug (The device was not closed when monitoring started)
ghmac#17 Fixed bug (The app is not waiting for the sequencer thread to finish)