Copyright (c) 2010-2019, WADA Masashi All rights reserved.
Web: https://osdn.jp/projects/miditrail/
Mail: yknk@users.osdn.me
1. Introduction
2. System requirement
3. How to start
4. Usage
5. Setting
6. Restriction
7. Appendix
8. Copyright and license
9. History
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
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.
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'.
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.
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.
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. |
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.
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.
When select 'Setting' tab, setting items will be displayed.
Select view mode.
Select items which display in main screen.
[Port A,B,C,D,E,F]
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.
[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 wavetable file must be ".dls" or ".sf2".
MIDITrail assigns channel No.10 for percussion.
Depending on the wave table file, the sound may not be output correctly.
[Port A]
Select MIDI IN device for monitoring.
[MIDI THRU]
MIDITrail will send data sets received from MIDI IN to MIDI OUT while monitoring.
[Character Encoding]
Select character encoding of MIDI file. That will be used when display the title of MIDI file.
[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.
[Background Image]
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.
[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%.
[Device]
You can check the connected game controller. If you want to start discovering new controller, tap this item.
If you use the sound module which delays sound, the sound and display may not synchronize.
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.
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.
MIDITrail can't open the MIDI file whose delta time represents actual time.
(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.
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.
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.
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/02/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/02/20 | Ver.1.1.1 |
#37007 Fixed bug (The numerical value of the counter is incorrect) |
2018/01/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/02/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/09/30 | Ver.1.2.1 |
#38649 Added Support for iPhone X,XS,XS Max,XR / iPad Pro 10.5 inch |
2019/01/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/03/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 |
2019/05/05 | Ver.1.2.4 |
#39213 Added quarter note length configuration #39214 Fixed bug (VR View is not stereoscopic on iPhone X series) #39215 Fixed bug (memory leak of background image processing) #39216 Changed section content of setting view #39217 Changed development environment to Xcode 10.2 |