diff options
author | Chris Xiong <chirs241097@gmail.com> | 2016-04-16 21:03:44 +0800 |
---|---|---|
committer | Chris Xiong <chirs241097@gmail.com> | 2016-04-16 21:03:44 +0800 |
commit | f3694385610a66215b65fafc1e05680baddeb090 (patch) | |
tree | a183da31372ce97c3e02d34d50647e565062e1f1 | |
parent | 56374529448b63cc5d94b344da14e8d90ee6e17d (diff) | |
download | QMidiPlayer-f3694385610a66215b65fafc1e05680baddeb090.tar.xz |
Fixed two bugs in initialization process.
Documentation...
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | debian/changelog | 14 | ||||
-rw-r--r-- | doc/channeldialog.html | 8 | ||||
-rw-r--r-- | doc/channeleditor.html | 8 | ||||
-rw-r--r-- | doc/cmdargs.html | 34 | ||||
-rw-r--r-- | doc/efxdialog.html | 34 | ||||
-rw-r--r-- | doc/index.html | 14 | ||||
-rw-r--r-- | doc/license.html | 8 | ||||
-rw-r--r-- | doc/mainwindow.html | 11 | ||||
-rw-r--r-- | doc/optionsdialog.html | 77 | ||||
-rw-r--r-- | doc/plistdialog.html | 34 | ||||
-rw-r--r-- | doc/troubleshooting.html | 63 | ||||
-rw-r--r-- | doc/version.html | 8 | ||||
-rw-r--r-- | qmidiplayer-desktop/main.cpp | 1 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpmainwindow.cpp | 33 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpmainwindow.hpp | 3 |
16 files changed, 318 insertions, 37 deletions
@@ -1,3 +1,8 @@ +2016-04-16 0.7.2 beta +Don't do full initialization before pharsing arguments. +Fixed load folder not working properly when a relative path is given. +Documentation... + 2016-04-15 0.7.2 beta A little documentation work... diff --git a/debian/changelog b/debian/changelog index 6d22d05..6a3e3e0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +qmidiplayer (0.7.2-2) UNRELEASED; urgency=low + + * New upstream release. + + -- chrisoft <chirs241097@gmail.com> Sat, 16 Apr 2016 19:02:22 +0800 + + +qmidiplayer (0.7.2-1) UNRELEASED; urgency=low + + * New upstream release. + + -- chrisoft <chirs241097@gmail.com> Tue, 13 Apr 2016 23:17:43 +0800 + + qmidiplayer (0.7.2-0) UNRELEASED; urgency=low * New upstream release. diff --git a/doc/channeldialog.html b/doc/channeldialog.html index ee5a577..a4e5fd2 100644 --- a/doc/channeldialog.html +++ b/doc/channeldialog.html @@ -11,9 +11,11 @@ <li><a href="mainwindow.html">Main Window</a></li> <li><a class="active" href="channeldialog.html">Channels Dialog</a></li> <li><a href="channeleditor.html">Channel Editor</a></li> - <li><a href="#">Playlist</a></li> - <li><a href="#">Effects</a></li> - <li><a href="#">Settings</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> <li><a href="version.html">Version Info.</a></li> <li><a href="license.html">License</a></li> </ul> diff --git a/doc/channeleditor.html b/doc/channeleditor.html index 34f9a19..fb50cc5 100644 --- a/doc/channeleditor.html +++ b/doc/channeleditor.html @@ -11,9 +11,11 @@ <li><a href="mainwindow.html">Main Window</a></li> <li><a href="channeldialog.html">Channels Dialog</a></li> <li><a class="active" href="channeleditor.html">Channel Editor</a></li> - <li><a href="#">Playlist</a></li> - <li><a href="#">Effects</a></li> - <li><a href="#">Settings</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> <li><a href="version.html">Version Info.</a></li> <li><a href="license.html">License</a></li> </ul> diff --git a/doc/cmdargs.html b/doc/cmdargs.html new file mode 100644 index 0000000..753ba2a --- /dev/null +++ b/doc/cmdargs.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<head> +<title>QMidiPlayer Help</title> +<link rel=stylesheet href='styles.css' type='text/css'> +</head> +<body> + <div id="panel"> + <ul> + <li><a href="index.html">Overview</a></li> + <li><a href="mainwindow.html">Main Window</a></li> + <li><a href="channeldialog.html">Channels Dialog</a></li> + <li><a href="channeleditor.html">Channel Editor</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a class="active" href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> + <li><a href="version.html">Version Info.</a></li> + <li><a href="license.html">License</a></li> + </ul> + </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. + </pre> + <br><a href="index.html">Return</a> + </div> +</body> +</html> diff --git a/doc/efxdialog.html b/doc/efxdialog.html new file mode 100644 index 0000000..4f95849 --- /dev/null +++ b/doc/efxdialog.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<head> +<title>QMidiPlayer Help</title> +<link rel=stylesheet href='styles.css' type='text/css'> +</head> +<body> + <div id="panel"> + <ul> + <li><a href="index.html">Overview</a></li> + <li><a href="mainwindow.html">Main Window</a></li> + <li><a href="channeldialog.html">Channels Dialog</a></li> + <li><a href="channeleditor.html">Channel Editor</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a class="active" href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> + <li><a href="version.html">Version Info.</a></li> + <li><a href="license.html">License</a></li> + </ul> + </div> + <div id="content"> + <h1>Effects Dialog</h1> + <img src="../img/effectw.png"><br> + Adjest effect parameters of the internal fluidsynth here. + <ul> + <li>Changes in this dialog will be applied immediately.</li> + <li>These changes will also affect rendered wave files.</li> + </ul> + <br><a href="index.html">Return</a> + </div> +</body> +</html> diff --git a/doc/index.html b/doc/index.html index 7fbfb40..ad21637 100644 --- a/doc/index.html +++ b/doc/index.html @@ -11,9 +11,11 @@ <li><a href="mainwindow.html">Main Window</a></li> <li><a href="channeldialog.html">Channels Dialog</a></li> <li><a href="channeleditor.html">Channel Editor</a></li> - <li><a href="#">Playlist</a></li> - <li><a href="#">Effects</a></li> - <li><a href="#">Settings</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> <li><a href="version.html">Version Info.</a></li> <li><a href="license.html">License</a></li> </ul> @@ -35,10 +37,10 @@ <li><a href="mainwindow.html">The main window</a></li> <li><a href="channeldialog.html">The channels dialog</a></li> <li><a href="channeleditor.html">The channels parameters editor</a></li> - <li>The playlist dialog</li> - <li>The effects dialog</li> + <li><a href="plistdialog.html">The playlist dialog</a></li> + <li><a href="efxdialog.html">The effects dialog</a></li> <li>Visualization</li> - <li>Setting up QMidiPlayer</li> + <li><a href="optionsdialog.html">Setting up QMidiPlayer</a></li> </ul> <h1>About QMidiPlayer</h1> <ul> diff --git a/doc/license.html b/doc/license.html index c01d5fb..fcba8cf 100644 --- a/doc/license.html +++ b/doc/license.html @@ -15,9 +15,11 @@ <li><a href="mainwindow.html">Main Window</a></li> <li><a href="channeldialog.html">Channels Dialog</a></li> <li><a href="channeleditor.html">Channel Editor</a></li> - <li><a href="#">Playlist</a></li> - <li><a href="#">Effects</a></li> - <li><a href="#">Settings</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> <li><a href="version.html">Version Info.</a></li> <li><a class="active" href="license.html">License</a></li> </ul> diff --git a/doc/mainwindow.html b/doc/mainwindow.html index 5fd074c..a054c58 100644 --- a/doc/mainwindow.html +++ b/doc/mainwindow.html @@ -11,9 +11,11 @@ <li><a class="active" href="mainwindow.html">Main Window</a></li> <li><a href="channeldialog.html">Channels Dialog</a></li> <li><a href="channeleditor.html">Channel Editor</a></li> - <li><a href="#">Playlist</a></li> - <li><a href="#">Effects</a></li> - <li><a href="#">Settings</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> <li><a href="version.html">Version Info.</a></li> <li><a href="license.html">License</a></li> </ul> @@ -37,7 +39,8 @@ <li>Render to Wave.<br> It's not possible to use this action unless the player is stopped.<br> The output wave file, with the name (source file name)+'.wav', <br> - is always placed in the folder that the source midi file is in.</li> + is always placed in the folder that the source midi file is in.<br> + MIDI mapping does not apply to render results.</li> </ul> <br><a href="index.html">Return</a> </div> diff --git a/doc/optionsdialog.html b/doc/optionsdialog.html new file mode 100644 index 0000000..a033261 --- /dev/null +++ b/doc/optionsdialog.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<html> +<head> +<title>QMidiPlayer Help</title> +<link rel=stylesheet href='styles.css' type='text/css'> +</head> +<body> + <div id="panel"> + <ul> + <li><a href="index.html">Overview</a></li> + <li><a href="mainwindow.html">Main Window</a></li> + <li><a href="channeldialog.html">Channels Dialog</a></li> + <li><a href="channeleditor.html">Channel Editor</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a class="active" href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> + <li><a href="version.html">Version Info.</a></li> + <li><a href="license.html">License</a></li> + </ul> + </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 two asterisks will be applied after the internal fluidsynth is restarted.<br> + Other options are applied immediately.<br> + <img src="../img/options1.png"><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> + If checked, the player will not stop until the current polyphone reaches 0.<br> + Otherwise it will stop immediately after the last event is sent. + </li> + <li>Text encoding: text encoding used in the midi file.</li> + </ul> + <img src="../img/options2.png"><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.</li> + <li>Audio Buffer Count**: Number of buffers used by the fluidsynth engine.</li> + <li>Audio Format**: audio output format of the fluidsynth engine.</li> + <li>Audio Frequency**: audio output sampling frequency of the fluidsynth engine.</li> + <li>Max Polyphony**: maximum simultaniously played voices of synthesizer.</li> + <li>CPU Cores**: threads used by the internal synthesizer.</li> + <li>Auto bank select mode:<br> + If checked, the player will choose the appropriate bank selecting mode + according to the file standard. If the file doesn't specify the standard + the player will fallback to the default bank select mode. + Otherwise the player will only use the default bank select mode. + </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> + 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> + <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> + <li>Load files in the same folder*: If checked, QMidiPlayer will add all midi files in the + same folder to the playlist when started with a file.</li> + <li>Save dialog status*: Save dialog positions and restore on start up.</li> + <li>Save parameters in effects window</li> + <li>Persistent fluidsynth instance*: If checked, the synthesizer engine will keep running + through the whole session. Otherwise it is restarted every time when a new song is played.</li> + </ul> + <br><a href="index.html">Return</a> + </div> +</body> +</html> diff --git a/doc/plistdialog.html b/doc/plistdialog.html new file mode 100644 index 0000000..ae14678 --- /dev/null +++ b/doc/plistdialog.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<head> +<title>QMidiPlayer Help</title> +<link rel=stylesheet href='styles.css' type='text/css'> +</head> +<body> + <div id="panel"> + <ul> + <li><a href="index.html">Overview</a></li> + <li><a href="mainwindow.html">Main Window</a></li> + <li><a href="channeldialog.html">Channels Dialog</a></li> + <li><a href="channeleditor.html">Channel Editor</a></li> + <li><a class="active" href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> + <li><a href="version.html">Version Info.</a></li> + <li><a href="license.html">License</a></li> + </ul> + </div> + <div id="content"> + <h1>Playlist Dialog</h1> + <img src="../img/playlistw.png"><br> + <h2>Notes</h2> + <ul> + <li>Drag & drop to sort.</li> + <li>This dialog (together with the main window) also accepts file drops.</li> + </ul> + <br><a href="index.html">Return</a> + </div> +</body> +</html> diff --git a/doc/troubleshooting.html b/doc/troubleshooting.html new file mode 100644 index 0000000..f98e768 --- /dev/null +++ b/doc/troubleshooting.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html> +<head> +<title>QMidiPlayer Help</title> +<link rel=stylesheet href='styles.css' type='text/css'> +</head> +<body> + <div id="panel"> + <ul> + <li><a href="index.html">Overview</a></li> + <li><a href="mainwindow.html">Main Window</a></li> + <li><a href="channeldialog.html">Channels Dialog</a></li> + <li><a href="channeleditor.html">Channel Editor</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a class="active" href="troubleshooting.html">Troubleshooting</a></li> + <li><a href="version.html">Version Info.</a></li> + <li><a href="license.html">License</a></li> + </ul> + </div> + <div id="content"> + If troubleshooting cannot solve your problem, please don't hesitate to report an issue. + <h3>1. I can't hear anything!</h3> + <p> + 1) Check current audio driver in the option dialog. Do not use an audio driver + that is not installed on your system.<br> + 2) If no soundfont is loaded, the synthesizer won't make any sound...<br> + 3) Check audio buffer settings in the synth section.<br> + 4) Check if your midi file is valid. + </p> + <h3>2. The playback is intermittent.</h3> + <p> + Try increasing audio buffer size and/or audio buffer count in synth options. + </p> + <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. + </p> + <h3>4. Some files cannot be played.</h3> + <h3>5. Some soundfonts cannot be loaded.</h3> + <p> + Files names with characters unsupported by the system locale + won't load correctly in Windows. This is a known issue. + </p> + <h3>6. Sound is distorted.</h3> + <p> + Try reducing the master volume. + </p> + <h3>7. Bank selecting is incorrect for the internal synth.</h3> + <p> + Change default midi mapping if necessary. + </p> + <h3>8. Bank selecting is incorrect for external devices.</h3> + <p> + Bank selecting to external devices is sent in raw format. The midi + file may be incompatible with your device. + </p> + </div> +</body> +</html>
\ No newline at end of file diff --git a/doc/version.html b/doc/version.html index fff816f..050ab09 100644 --- a/doc/version.html +++ b/doc/version.html @@ -11,9 +11,11 @@ <li><a href="mainwindow.html">Main Window</a></li> <li><a href="channeldialog.html">Channels Dialog</a></li> <li><a href="channeleditor.html">Channel Editor</a></li> - <li><a href="#">Playlist</a></li> - <li><a href="#">Effects</a></li> - <li><a href="#">Settings</a></li> + <li><a href="plistdialog.html">Playlist</a></li> + <li><a href="efxdialog.html">Effects</a></li> + <li><a href="optionsdialog.html">Settings</a></li> + <li><a href="cmdargs.html">Commandline arguments</a></li> + <li><a href="troubleshooting.html">Troubleshooting</a></li> <li><a class="active" href="version.html">Version Info.</a></li> <li><a href="license.html">License</a></li> </ul> diff --git a/qmidiplayer-desktop/main.cpp b/qmidiplayer-desktop/main.cpp index 3a7e630..e763811 100644 --- a/qmidiplayer-desktop/main.cpp +++ b/qmidiplayer-desktop/main.cpp @@ -33,6 +33,7 @@ int main(int argc,char **argv) a.installTranslator(&qmpTranslator); qmpMainWindow w; if(w.pharseArgs(argc,argv)==1)return 0; + w.init(); return a.exec(); } diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp index 45ab634..b01df10 100644 --- a/qmidiplayer-desktop/qmpmainwindow.cpp +++ b/qmidiplayer-desktop/qmpmainwindow.cpp @@ -1,5 +1,6 @@ #include <cstdio> #include <QUrl> +#include <QFileInfo> #include <QMimeData> #include <QDirIterator> #include <QDesktopWidget> @@ -45,9 +46,20 @@ qmpMainWindow::qmpMainWindow(QWidget *parent) : ui->lbFileName->setText("");ref=this; playing=false;stopped=true;dragging=false; settingsw=new qmpSettingsWindow(this); + plistw=new qmpPlistWindow(this);player=NULL;timer=NULL; singleFS=qmpSettingsWindow::getSettingsIntf()->value("Behavior/SingleInstance",0).toInt(); +} + +qmpMainWindow::~qmpMainWindow() +{ + if(player)delete player; + if(timer)delete timer; + delete ui; +} + +void qmpMainWindow::init() +{ player=new CMidiPlayer(singleFS); - plistw=new qmpPlistWindow(this); chnlw=new qmpChannelsWindow(this); efxw=new qmpEfxWindow(this); infow=new qmpInfoWindow(this); @@ -81,18 +93,12 @@ qmpMainWindow::qmpMainWindow(QWidget *parent) : connect(timer,SIGNAL(timeout()),this,SLOT(updateWidgets())); connect(timer,SIGNAL(timeout()),chnlw,SLOT(channelWindowsUpdate())); connect(timer,SIGNAL(timeout()),infow,SLOT(updateInfo())); -} - -qmpMainWindow::~qmpMainWindow() -{ - delete player; - delete timer; - delete ui; + if(havemidi)on_pbPlayPause_clicked(); } int qmpMainWindow::pharseArgs(int argc,char** argv) { - bool havemidi=false,loadfolder=false; + bool loadfolder=false;havemidi=false; for(int i=1;i<argc;++i) { if(argv[i][0]=='-') @@ -101,9 +107,9 @@ int qmpMainWindow::pharseArgs(int argc,char** argv) { printf("Usage: %s [Options] [Midi Files]\n",argv[0]); printf("Possible options are: \n"); - printf("-l, --load-all-files Load all files from the same folder.\n"); - printf("--help Show this help and exit.\n"); - printf("--version Show this version information and exit.\n"); + printf(" -l, --load-all-files Load all files from the same folder.\n"); + printf(" --help Show this help and exit.\n"); + printf(" --version Show this version information and exit.\n"); return 1; } if(!strcmp(argv[i],"--version")) @@ -120,7 +126,7 @@ int qmpMainWindow::pharseArgs(int argc,char** argv) if(!havemidi){havemidi=true;plistw->emptyList();} if(loadfolder||qmpSettingsWindow::getSettingsIntf()->value("Behavior/LoadFolder",0).toInt()) { - QDirIterator di(QUrl(argv[i]).adjusted(QUrl::RemoveFilename).toString()); + QDirIterator di(QFileInfo(argv[i]).absolutePath()); while(di.hasNext()) { QString c=di.next(); @@ -132,7 +138,6 @@ int qmpMainWindow::pharseArgs(int argc,char** argv) plistw->insertItem(argv[i]); } } - if(havemidi)on_pbPlayPause_clicked(); return 0; } diff --git a/qmidiplayer-desktop/qmpmainwindow.hpp b/qmidiplayer-desktop/qmpmainwindow.hpp index a409d2e..e17a792 100644 --- a/qmidiplayer-desktop/qmpmainwindow.hpp +++ b/qmidiplayer-desktop/qmpmainwindow.hpp @@ -29,6 +29,7 @@ class qmpMainWindow:public QMainWindow public: explicit qmpMainWindow(QWidget *parent = 0); + void init(); void closeEvent(QCloseEvent *event); void moveEvent(QMoveEvent *event); void dropEvent(QDropEvent *event); @@ -66,7 +67,7 @@ class qmpMainWindow:public QMainWindow private: Ui::qmpMainWindow *ui; QTimer *timer; - bool playing,stopped,dragging,fin,singleFS; + bool playing,stopped,dragging,fin,singleFS,havemidi; std::thread *playerTh=NULL; std::thread *renderTh=NULL; std::chrono::steady_clock::time_point st; |