diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/APIdoc.md | 4 | ||||
-rw-r--r-- | doc/channeldialog.html | 12 | ||||
-rw-r--r-- | doc/channeleditor.html | 20 | ||||
-rw-r--r-- | doc/cmdargs.html | 16 | ||||
-rw-r--r-- | doc/efxdialog.html | 2 | ||||
-rw-r--r-- | doc/mainwindow.html | 31 | ||||
-rw-r--r-- | doc/miscellaneous.html | 32 | ||||
-rw-r--r-- | doc/optionsdialog.html | 24 | ||||
-rw-r--r-- | doc/plistdialog.html | 2 | ||||
-rw-r--r-- | doc/troubleshooting.html | 32 | ||||
-rw-r--r-- | doc/version.html | 2 | ||||
-rw-r--r-- | doc/visualization.html | 5 |
12 files changed, 105 insertions, 77 deletions
diff --git a/doc/APIdoc.md b/doc/APIdoc.md index 968aa97..8e3a181 100644 --- a/doc/APIdoc.md +++ b/doc/APIdoc.md @@ -74,7 +74,7 @@ Hooks use the universal `ICallBack` interface. Some of those also accept a point When you register a hook, you provide the core with a instance of your class that implements the `ICallBack` interface and your `userdata` to be used when the core is calling the callback. When the callback is called, it will be fed with proper `callerdata` generated by the core and the `userdata` you provided. Type of `callerdata` varies by hooks. Event -reader and handler hooks have `SEventCallBackData*` as their `callerdata`. All other callbacks at this time have `NULL` +reader and handler hooks have `SEventCallBackData*` as their `callerdata`. All other callbacks at this time have `nullptr` as their `callerdata`. **Don't try directly modifying the members of callerdata!** # 4. Functionalities @@ -152,7 +152,7 @@ type of the event together with the channel this event goes to. Contains the raw data for string-like events. - default constructor: `SEvent()` sets everything to zero or empty. -- constructor with parameters: `SEvent(uint32_t _iid,uint32_t _t,char _tp,uint32_t _p1,uint32_t _p2,const char* s=NULL)` +- constructor with parameters: `SEvent(uint32_t _iid,uint32_t _t,char _tp,uint32_t _p1,uint32_t _p2,const char* s=nullptr)` fills the event with the parameters given. - `friend bool operator <(const SEvent& a,const SEvent& b)` compares events by their timestamps. Ties are broken by comparing precedence in file. diff --git a/doc/channeldialog.html b/doc/channeldialog.html index c1674a1..6b722f6 100644 --- a/doc/channeldialog.html +++ b/doc/channeldialog.html @@ -24,22 +24,22 @@ </div> <div id="content"> <h1>Channel Dialog</h1> - <img src="../img/chanw.png"><br> + <img src="../img/chanw.png" width="560"><br> <h2>Columns in the channel table</h2> <ul> <li>A(Activity): Shows the activity of the corresponding channel.</li> <li>M(Mute): Tick this to mute the corresponding channel.</li> <li>S(Solo): Tick this to solo the corresponding channel.</li> - <li>Device: The player sends midi messages from this channel to the device selected here.</li> + <li>Device: Midi messages from this channel will be sent to the device selected here.</li> <li>Preset: Displays the current preset of the corresponding channel.<br> Preset can be changed by double clicking the cells from this column.</li> - <li>...: Brings up the channel parameter editor dialog.</li> + <li>...: Clicking a cell in this column brings up the channel parameter editor dialog for the channel.</li> </ul> <h2>Buttons</h2> <ul> - <li>Save/Load: not yet implemented.</li> - <li>Unmute All: Remove tick mark from all mute checkboxes.</li> - <li>Unsolo All: Remove tick mark from all solo checkboxes.</li> + <li>Save/Load: not yet implemented. Likely will never be implemented.</li> + <li>Unmute All: Remove tick marks from all mute checkboxes.</li> + <li>Unsolo All: Remove tick marks from all solo checkboxes.</li> </ul> <br><a href="index.html">Return</a> </div> diff --git a/doc/channeleditor.html b/doc/channeleditor.html index 0c38d54..55b5378 100644 --- a/doc/channeleditor.html +++ b/doc/channeleditor.html @@ -24,26 +24,26 @@ </div> <div id="content"> <h1>Channel Editor</h1> - <img src="../img/chparaw.png"><br> + <img src="../img/chparaw.png" width="420"><br> <h2>Controllers Explained</h2> <ul> - <li>Cut.: Cut Off (cc#74, defined in GM2). Not supported by vanilla fluidsynth.</li> - <li>Res.: Resonance (cc#71, defined in GM2). Not supported by vanilla fluidsynth</li> + <li>Cut.: Cut Off (cc#74, defined in GM2).</li> + <li>Res.: Resonance (cc#71, defined in GM2).</li> <li>Rev.: Reverb (cc#91, defined in GM1).</li> <li>Chr.: Chorus (cc#93, defined in GM1).</li> <li>Vol.: Volume (cc#07, defined in GM1).</li> <li>Pan.: Panorama (cc#10, defined in GM1).</li> - <li>Atk.: Envelope attack (cc#73, defined in GM2). Not supported by vanilla fluidsynth.</li> - <li>Dec.: Envelope decay (cc#75, defined in GM2). Not supported by vanilla fluidsynth.</li> - <li>Rel.: Envelope release (cc#72, defined in GM2). Not supported by vanilla fluidsynth.</li> - <li>Rate: Vibrato rate (cc#76, defined in GM2). Not supported by vanilla fluidsynth.</li> - <li>Dep.: Vibrato depth (cc#77, defined in GM2). Not supported by vanilla fluidsynth.</li> - <li>Del.: Vibrato delay (cc#78, defined in GM2). Not supported by vanilla fluidsynth.</li> + <li>Atk.: Envelope attack (cc#73, defined in GM2).</li> + <li>Dec.: Envelope decay (cc#75, defined in GM2).</li> + <li>Rel.: Envelope release (cc#72, defined in GM2).</li> + <li>Rate: Vibrato rate (cc#76, defined in GM2).</li> + <li>Dep.: Vibrato depth (cc#77, defined in GM2).</li> + <li>Del.: Vibrato delay (cc#78, defined in GM2).</li> </ul> <h2>Notes</h2> <ul> <li>Changes in this page are applied immediately.</li> - <li>Vanilla fluidsynth does not support GM2 controls.</li> + <li>If you are using fluidsynth, the actual effect of a control change depends on the soundfont you use.</li> </ul> <br><a href="index.html">Return</a> </div> diff --git a/doc/cmdargs.html b/doc/cmdargs.html index afc770d..dbce315 100644 --- a/doc/cmdargs.html +++ b/doc/cmdargs.html @@ -24,11 +24,17 @@ </div> <div id="content"> <pre> -Usage: qmidiplayer [Options] [Midi Files] -Possible options are: - -l, --load-all-files Load all files from the same folder. - --help Show this help and exit. - --version Show this version information and exit. +Usage: ./qmidiplayer [options] [files...] +A cross-platform MIDI player. + +Options: + -h, --help Displays this help. + -v, --version Displays version information. + --plugin <plugin library> Load a plugin from <plugin library>. + -l, --load-all-files Load all files from the same folder. + +Arguments: + file midi files to play (optional). </pre> <br><a href="index.html">Return</a> </div> diff --git a/doc/efxdialog.html b/doc/efxdialog.html index 1706fc7..e1612e4 100644 --- a/doc/efxdialog.html +++ b/doc/efxdialog.html @@ -24,7 +24,7 @@ </div> <div id="content"> <h1>Effects Dialog</h1> - <img src="../img/effectw.png"><br> + <img src="../img/effectw.png" width="600"><br> Adjest effect parameters of the internal fluidsynth here. <ul> <li>Changes in this dialog will be applied immediately.</li> diff --git a/doc/mainwindow.html b/doc/mainwindow.html index e576e7b..7928c9f 100644 --- a/doc/mainwindow.html +++ b/doc/mainwindow.html @@ -24,18 +24,22 @@ </div> <div id="content"> <h1>Main Window</h1> - <img src="../img/mainw.png"><br> - <ul> - <li>1. Now playing. Right clicking here will bring up the <a href="#fileop"> file operation menu</a>.</li> - <li>2. Playing control slider. The total playing time is estimated and isn't 100% accurate.</li> - <li>3. Playing control buttons. Self-explanatory.</li> - <li>4. Settings button. Read the Settings section for details.</li> - <li>5. Dialog toggle buttons.</li> - <li>6. Master gain slider.</li> - <li>7. Polyphone indicator.</li> - <li>8. <s>It's me!</s></li> - </ul> + <img src="../img/mainw.png" width="480"><br> + <ol> + <li>Now playing. Right clicking here will bring up the <a href="#fileop">action menu</a>.</li> + <li>Seeking slider. Song length is estimated and may not be 100% accurate.</li> + <li>Playback control buttons. Self-explanatory.</li> + <li>Open file.</li> + <li>Settings button. Refer to the <a href="optionsdialog.html">Settings section</a> for details.</li> + <li>Dialog buttons. You can configure this section in settings.</li> + <li>FluidSynth master gain slider.</li> + <li>FluidSynth polyphony indicator.</li> + <li>A dumb button.</li> + </ol> <h3><a name="fileop">File operation menu</a></h3> + <p> + Note that actual actions in this menu can be configured in settings. + </p> <ul> <li>File Information.<br> Click an item in this dialog to copy its content. @@ -48,9 +52,8 @@ <li>Panic.<br> If somehow the player messed up, use this action to turn off all the notes. <li>Restart fluidsynth.<br> - It's not possible to use this action unless the player is stopped.<br> - Applies settings and restart the internel fluidsynth engine when "single fluidsynth instance" - is enabled. + This action can only be used when no file is being played.<br> + Applies settings and restart the internel fluidsynth engine. </li> </ul> <br><a href="index.html">Return</a> diff --git a/doc/miscellaneous.html b/doc/miscellaneous.html index 7f46d33..481e1a6 100644 --- a/doc/miscellaneous.html +++ b/doc/miscellaneous.html @@ -30,14 +30,7 @@ <li><a href="#contact">Contact the author</a></li> </ul> <h3 id="build">Building QMidiPlayer from source</h3> - Building QMidiPlayer from source is as easy as any other qmake projects.<br> - 1. Get the dependencies.<br> - Currently QMidiPlayer depends on these libraries:<br> - <pre style="background-color:#eee;padding:0.2em;">qt5, libfluidsynth(FluidSynth), librtmidi(RtMidi)</pre> - If you want to build the lite version as well, you need several QML core modules.<br> - Get the libraries for your platform, open the project with Qt Creator, configure and hit Build! - (You may also use the qmake-make way).<br> - Please note that QMidiPlayer <i>requires</i> C++11 to build. + Checkout <code>INSTALL.md</code> in the project root directory. <h3 id="ms">Roadmap/Milestones</h3> <ul> <li>0.5.x Basic functionality</li> @@ -46,6 +39,7 @@ <li>0.7.8 Plugin interface, UI refactoring</li> <li>0.8.x Visualization (the default visualization plugin).</li> <li>0.8.5+ File reader plugin API, event filter/modifier API. </li> + <li>0.8.7 Better external MIDI device support. Simple visualization. </li> <li>0.9.x API Stablization. Revive lite version.</li> <li>1.x+ Translation, documentation, Maintaince only.</li> </ul> @@ -56,7 +50,7 @@ Visual Studio 2015 Runtime Library</a>. </p> <p> - Nighly builds are compiled with MSVC2017 (using Qt MSVC2015 x86, though). So you need two runtime libraries + (Older) Nighly builds are compiled with MSVC2017 (using Qt MSVC2015 x86, though). So you need two runtime libraries to run it. Damn. </p> <p> @@ -75,19 +69,23 @@ <h4>3. On what platform(s) do you develop this project?</h4> <p> Major platforms used: - <ul> - <li>Debian GNU/Linux unstable(sid) amd64 on custom machine (i7-2960XM, 16GB RAM, GTX960, X9SCV-QV4)</li> - <li>Arch Linux amd64 on a Lenovo ThinkPad X1 yoga 1st Gen. (i7-6600U, 16GB RAM, HD520)</li> - </ul> - Platforms for building the Windows version: - <ul> - <li>Windows 10 Insider Pro on the ThinkPad X1 yoga mentioned above.</li> - </ul> + <ul> + <li>Debian GNU/Linux unstable(sid) amd64 on custom machine (i7-2960XM, 16GB RAM, GTX960, X9SCV-QV4)</li> + <li>Arch Linux amd64 on a Lenovo ThinkPad X1 yoga 1st Gen. (i7-6600U, 16GB RAM, HD520)</li> + </ul> + Platforms for building the Windows version: + <ul> + <li>Windows 10 Insider Pro on the ThinkPad X1 yoga mentioned above.</li> + </ul> </p> <h4>4. The code is full of shit and has no comment at all!</h4> <p> I know. I got pissed off for that everytime. </p> + <h4>5. Do you have any plan to release binaries for macOS?</h4> + <p> + No. + </p> <h3 id="contact">Contact the author</h3> <p> E-mail: chirs241097 'at' gmail 'dot' com<br> diff --git a/doc/optionsdialog.html b/doc/optionsdialog.html index 8bbf79b..24a6ca7 100644 --- a/doc/optionsdialog.html +++ b/doc/optionsdialog.html @@ -24,15 +24,11 @@ </div> <div id="content"> <h1>Settings Dialog</h1> - Settings are stored in $HOME/.config/qmprc<br> - For Windows users, $HOME refers to X:\Users\<your user name>\.config, where X is the system drive of your - Windows installation.<br> - Options with one asterisk will be applied after restarting QMidiPlayer.<br> + Options with one asterisk will be applied after QMidiPlayer is restarted.<br> Options with two asterisks will be applied after the internal fluidsynth is restarted.<br> Other options are applied immediately.<br> - <img src="../img/options1.png"><br> + <img src="../img/options1.png" width="440"><br> <ul> - <li>Default Output Device*: specify the default midi device to use.</li> <li>Disable Midi Mapping*: only use the default output device.</li> <li>Send SysEx: whether to send system exclusive messages or not.</li> <li>Wait for remaining voices before stopping:<br> @@ -40,8 +36,13 @@ Otherwise it will stop immediately after the last event is sent. </li> <li>Text encoding: text encoding used in the midi file.</li> + <li>Select MIDI output devices*: Choose the MIDI devices to use for default device selection.<br> + When QMidiPlayer starts, selected devices will be examined from top to bottom, the first connected + one will be chosen as the default output device. + </li> + <li>External MIDI output device setup*: set initialzation file for external MIDI devices.</li> </ul> - <img src="../img/options2.png"><br> + <img src="../img/options2.png" width="440"><br> <ul> <li>Audio Driver**: specify the audio backend used by the internal synthesizer.</li> <li>Audio Buffer Size**: Size per buffer used by the fluidsynth engine. Increase if experiencing audio interruption, decrease if audio is laggy or messed up.</li> @@ -58,11 +59,12 @@ </li> <li>(Fallback) Bank Select Mode: the default bank select mode.</li> </ul> - <img src="../img/options3.png"><br> - You can manage soundfont used by the internal fluidsynth engine here.<br> + <img src="../img/options3.png" width="440"><br> + You can manage a list of soundfonts used by the internal fluidsynth engine here. Unchecked + soundfonts will not be used.<br> If multiple soundfonts provide instruments with the same bank numbers and preset numbers, the preset provided by the top most soundfont will be used.<br> - <img src="../img/options4.png"><br> + <img src="../img/options4.png" width="440"><br> <ul> <li>Restore last playlist on startup*: If checked and QMidiPlayer is started without files to open, the playlist from the last session will be used instead of an empty playlist.</li> @@ -77,7 +79,7 @@ <li>Customize toolbar: customize the functionalities shown in the main window.</li> <li>Customize actions: customize the functionalities shown in the file action menu.</li> </ul> - <img src="../img/options5.png"><br> + <img src="../img/options5.png" width="440"><br> Plugin manager. View details of plugins, enable or disable them here.<br> Enabled plugin list is applied after a restart.<br> Plugin scanning follows the order below: diff --git a/doc/plistdialog.html b/doc/plistdialog.html index 40ef542..3dafcc2 100644 --- a/doc/plistdialog.html +++ b/doc/plistdialog.html @@ -24,7 +24,7 @@ </div> <div id="content"> <h1>Playlist Dialog</h1> - <img src="../img/playlistw.png"><br> + <img src="../img/playlistw.png" width="560"><br> <h2>Notes</h2> <ul> <li>Drag & drop to sort.</li> diff --git a/doc/troubleshooting.html b/doc/troubleshooting.html index 184f702..d77e45b 100644 --- a/doc/troubleshooting.html +++ b/doc/troubleshooting.html @@ -41,7 +41,12 @@ <h3>3. MIDI timing is messed up.</h3> <p> This is a known issue under Windows. Try decreasing audio buffer size and - increasing audio buffer count. + increasing audio buffer count. Also make sure you are not using shitty cabling + if you are using external synthesizers. + </p> + <p> + Also also, if you overload your computer (fluidsynth) or synthesizer too much, + don't expect the timing would still keep up! </p> <h3>4. Some files cannot be played.</h3> <h3>5. Some soundfonts cannot be loaded.</h3> @@ -59,7 +64,7 @@ </p> <h3>8. Bank selecting is incorrect for external devices.</h3> <p> - Bank selecting to external devices is sent in raw format. The midi + Bank selecting messages are sent to external devices directly. The midi file may be incompatible with your device. </p> <h3>9. 3D visualization is upsidedown/rotated/black/blinking.</h3> @@ -73,10 +78,29 @@ Devices/drivers reported to have this issue: <ul> <li>Intel HD 5500 found in i5-5200U / official Windows driver</li> - <li>Unknown low-end AMD card / official Windows driver</li> - <li>Raspberry Pi 2 VC4 / Full KMS OpenGL (GLX)</li> + <li>Unknown low-end AMD Oland GPU / official Windows driver</li> + <li>Raspberry Pi 2 & 3 VC4 / Full KMS OpenGL (GLX)</li> </ul> </p> + <h3>10. External devices connected but does not show up.</h3> + <p> + Always connect your device <b>before</b> launching QMidiPlayer and make + sure it is not used by another application. + If it still refuses to work, make sure your device is working within + some other MIDI applications. If it doesn't, try reinstalling the driver, + checking the cables ... even turning it off and on again? + </p> + <p> + If it works in programs other than QMidiPlayer however, you're probably + facing a new bug in QMidiPlayer. + </p> + <h3>11. Tweaking the values in channel editor does nothing.</h3> + <p> + It depends. Sound modules from different vendors accept different sets + of controller messages. As for fluidsynth, it relies on the modulation + matrix of the soundfont. Sadly most of the soundfonts floating around + on the Internet do not have modulation matrix declared. + </p> </div> </body> </html> diff --git a/doc/version.html b/doc/version.html index d3b3218..790cedf 100644 --- a/doc/version.html +++ b/doc/version.html @@ -26,7 +26,7 @@ <h1>Version information</h1> <div style="text-align:center;"> <img src="../img/qmidiplyr.png"><br> - QMidiPlayer documentation for version 0.8.5<br> + QMidiPlayer documentation for version 0.8.7<br> An MIDI player based on fluidsynth and Qt.<br> Written by Chris Xiong.<br> </div><br> diff --git a/doc/visualization.html b/doc/visualization.html index f482744..3507985 100644 --- a/doc/visualization.html +++ b/doc/visualization.html @@ -42,11 +42,6 @@ left | right ← → │ │ | Seek left/right └─────┘ backward (Hold shift to seek 5% instead of 1%) </pre> - <h3>Known problems</h3> - <p> - In some systems closing and reopening the visualization results in a crash. This is - due to a dbus-related conflict in SDL and Qt. - </p> <h3>Options</h3> The options listed here are applied after closing and reopening the visualization. <ul> |