English / Japanese

# MIDITrail Ver.1.2.3 for iOS

Copyright (c) 2010-2019, WADA Masashi All rights reserved.
Web: https://osdn.jp/projects/miditrail/
Mail: yknk@users.osdn.me

## 0. Contents

1. Introduction
2. System requirement
3. How to start
4. Usage
5. Setting
6. Restriction
7. Copyright and license
8. Appendix
9. History

## 1. Introduction

MIDITrail is a MIDI player which provides 3D visualization of MIDI data sets.
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.

Optional feature:
You can enjoy the VR(virtual reality) experience using cheap VR glasses for smartphones and the game controller for iPhone.

Screenshot: PianoRoll3D
Screenshot: PianoRollRain
VR experience using iPhone

## 2. System requirement

Device: iPad, iPhone, iPod touch
OS: iOS 8.0

When the MIDI data sets contains a great number of notes, MIDITrail needs more performance graphics.

## 3. How to start

### (1) Preparing MIDI files

MIDITrail supports Standard MIDI File (Format0/1).
You have to transfer MIDI files to your iOS device from Mac or PC.
Connect your iOS device to Mac or PC, and launch iTunes. Then you can transfer MIDI files using 'File Sharing'.

### (2) Preparing Sound module

You can use sound module which supports Core MIDI. And you can use internal wavetable synthesizer.
There are three ways as shown below:

The first way is to connect MIDI interface device and external sound module.
(e.g. iRig MIDI, i-MX1, etc.)

The second way is to use Synth App which supports 'Virtual MIDI Port' and 'Background Mode'.
(e.g. Sound Canvas for iOS, bs-16i, etc.)

The third way is to use the internal wavetable synthesizer.
You have to transfer the wavetable file (DLS/SF2) to your iOS device in advance.

When you finished preparing sound module, launch MIDITrail and select MIDI OUT device.

## 4. Usage

### (1) Selecting MIDI File

When you select 'MIDI Files' tab, MIDI files stored in your iOS device will be displayed.
You have to transfer MIDI files to your iOS device from Mac or PC in advance.
When you touch a MIDI file, MIDITrail will load the file and open the main screen.

### (2) Main Screen

You can start and stop music by touching buttons.

You can move the camera by swiping screen.

You can use the game controller for iOS device to operate.

Button / Stick | Action
--- | ---
Pause button | Play / Pause / Resume
A button | Play / Pause / Resume
B button | Stop
X button | Viewpoint: down
Y button | Viewpoint: up
L1/R1 shoulder button | Playback speed down/up
L2/R2 trigger button | Skip back/forward
Directional pad | Viewpoint movement: front and back, right and left
Left thumbstick | Viewpoint movement: front and back, right and left
Right thumbstick | Eye direction

When you tap 'View' button, you can select the following view menu.

Menu | Description
--- | ---
Viewpoint 1 Viewpoint 2 Viewpoint 3 | Move to a fixed viewpoint.
Standard View | Display standard view.
VR View (Single lens) | Dispaly VR view in single lens. The sight direction changes according to the direction of your device.
VR View (Dual lens) | Display VR view in dual lens. The sight direction changes according to the direction of your device.
Lock Screen Unlock Screen | Lock/Unlock the swipe operation on the screen.

### (3) MIDI IN Monitor

When you select 'MIDI IN Monitor' tab and touch 'Start Monitoring' button, MIDITrail will open the main screen.
You can see data sets received from MIDI IN device in real time on the main screen.
You have to select the MIDI IN device for monitoring in advance.
If you enable the MIDITHRU, MIDITrail will send data sets received from MIDI IN to MIDI OUT while monitoring.
NOTE: MIDITrail can not record data sets received from MIDI IN.

### (4) How to enjoy VR(virtual reality) experience

If you are using iPhone, you can enjoy the VR(virtual reality) experience using cheap VR glasses for smartphones and the game controller for iPhone.
It is recommended that anti-aliasing is enabled.
1. Connect the game controller to your iPhone.
2. Start MIDITrail on your iPhone, and select the MIDI file.
3. Tap View button on the main screen, and select "VR View (Dual Lens)" menu.
4. Set your iPhone to the VR glasses, and wear it on your head.
5. Move your viewpoint and start playback by using the game controller.

## 5. Setting

When select 'Setting' tab, setting items will be displayed.

### (1) View Mode

Select view mode.

### (2) Display Item

Select items which display in main screen.

### (3) MIDI OUT Device

Select MIDI OUT device.
At least, you must select the MIDI OUT device of "Port A". Ordinary MIDI datasets is sent to "Port A".
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 multiple MIDI sound modules.

### (4) Internal Wavetable Synthesizer

[Wavetable File] If you want to use internal synthesizer, select the wavetable(DLS/SF2) file.
You have to transfer wavetable files to your iOS device from Mac or PC, by using iTunes's 'File Sharing'.
The extension of the image file must be ".dls" or ".sf2".
NOTE: MIDITrail assigns channel No.10 for percussion.
NOTE: Depending on the wave table file, the sound may not be output correctly.

### (5) MIDI IN Device

[Port A] Select MIDI IN device for monitoring.

### (6) MIDI IN Monitor

[MIDITHRU] MIDITrail will send data sets received from MIDI IN to MIDI OUT while monitoring.

### (7) MIDI File

[Character Encoding] Select character encoding of MIDI file. That will be used when display the title of MIDI file.

### (8) Background Image

[Image File] If you want to display the background image, select the image file.
You have to transfer image files to your iOS device from Mac or PC, by using iTunes's 'File Sharing'.
The extension of the image file must be ".jpg" or ".png".
The maximum size of the image is 4096 x 4096 pixels.

### (9) Graphic

[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, rendering speed may be poor.
You have to restart MIDITrail to apply this setting.

### (10) Game Controller

[Device] You can check the connected game controller. If you want to start discovering new controller, tap this item.

## 6. Restriction

### (1) Synchronization of MIDI sound and display

If you use the sound module which delays sound, the sound and display may not synchronize.

### (2) Performance of graphics

MIDITrail renders all notes of the MIDI file in real time.
If the MIDI file has a great number of notes, the load of rendering becomes high.
In order to enjoy the MIDI file which contains tens of thousands of notes comfortably, you have to use iOS device 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.

## 7. Copyright and license

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

Copyright (c) 2010-2019, WADA Masashi <yknk@users.osdn.me> 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.

## 8. Appendix

### (1) Structure of 3D piano roll visualization

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

When MIDITrail open the MIDI data sets uses multiple ports, unused port will be not displayed.
For example, if the MIDI data sets 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 data sets uses multiple ports, only piano keyboards of port A will be displayed.
However piano roll bars of all ports will be displayed.

### (2) Pitch Bend Motion

The piano roll bar will move 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 Motion' to fix the piano roll bars.

## 9. History

Date | Version | Changelog
--- | --- | ---
2012/03/17 | Ver.0.0.0 | Development start. It based on the source code of MIDITrail Ver.1.2.0 for Mac OS X.
2012/08/05 | Ver.1.0.0 | First formal release for iOS. #29179 MIDITrail for iOS development.
2014/01/19 | Ver.1.0.1 | #32933 Merged features of MIDITrail Ver.1.2.1 for Mac OS X #32367 Added view mode "Piano Roll Rain 2D" #32427 Added note color assignment to active key #32915 Added support for iPhone5 #32916 Added ability to import files from other apps #32941 Changed Base SDK to iOS6.1 #30548 Fixed bug. (At the start of playback, MIDI data transmission is blocked)
2017/2/12 | Ver.1.1.0 | #35775 Changed URL and mail address in user's manual #36981 Added support for iOS 64bit #36982 Added support for iPhone6, iPhone6 Plus and iPad Pro #36983 Added screen lock feature #36984 Added background image customization #36985 Added support for multiple MIDI OUT ports #36986 Changed launch screen using storyboard #36987 Fixed bug (Japanese locale is not detected)
2017/2/20 | Ver.1.1.1 | #37007 Fixed bug (The numerical value of the counter is incorrect)
2018/1/15 | Ver.1.1.2 | #37881 Added function to delete files and rename files in file list #37882 Added increase of the size of active note #37883 Changed brightness the ripple color #37884 Changed counter string format on iPhone 6 or later #37885 Changed development environment to Xcode 9 #37616 Fixed bug (Piano roll bar flickers in Piano Roll 2D mode) #37860 Fixed bug (Touch screen to call up play menu not working)
2018/2/20 | Ver.1.2.0 | #37955 Added internal wavetable synthesizer #37971 Added function to delete files and rename files in background image file list
2018/9/30 | Ver.1.2.1 | #38649 Added Support for iPhone X,XS,XS Max,XR / iPad Pro 10.5 inch
2019/1/31 | Ver.1.2.2 | #38898 Added VR View mode #38899 Added viewpoint selection menu #38900 Added anti-aliasing support #38901 Added FPS counter #38902 Added support for iPad Pro 2018 (11 inch, 12.9 inch) #38903 Fixed bug (When the iPad is oriented vertically the main screen protrudes) #38904 Changed development environment to Xcode 10
2019/3/31 | Ver.1.2.3 | #39085 Added support for game controller #39086 Changed the check mark to switch control on setting screen #39087 Changed the camera up vector setting on VR view