diff --git a/README.md b/README.md index 3f22b8e0..c7ea727d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# README for Seq66 0.99.7 2023-07-14 +# README for Seq66 0.99.7 2023-07-17 __Seq66__: MIDI sequencer/live-looper with a hardware-sampler grid interface; pattern banks, triggers, and playlists for song management; scale and chord @@ -94,6 +94,7 @@ Windows, and using a conventional source tarball. * Recent Files is disabled if there are none. * Revamped the Playlist tab, as it was confusing and very buggy. * Added auto-play and auto-advance to play-lists. + * Fixed a bug in rcsettings::make_config_filespec(). * Version 0.99.6: * Issue #3 follow-ons: * Added a qscrollslave to allow QScrollArea to allow the pattern diff --git a/TODO b/TODO index 2bf2dfbe..d10b0a29 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,6 @@ TO DO for Seq66 0.99.7 Chris Ahlstrom -2019-04-13 to 2023-07-15 +2019-04-13 to 2023-07-17 UI: @@ -37,8 +37,15 @@ Mutes: Playlists: - - When opening play-list, also open next song. + - When opening play-list, also open next song. Make the play-list + active. - Still need to work out playlist naming and replacement. + - Specifying a playlist on the command-line should activate it. + It does, but there was a bug in rcsettings::make_config_filespec(). + - Set all contrib/midi and data/midi MIDI files to use port 0 + - Consider adding a configurable play-list auto-advance delay value. + - Why is the first play-list file double loaded? + - How to force ports to 0 when errors happen, and save the file. From Testing: diff --git a/contrib/midi/1Bar-1920.midi b/contrib/midi/1Bar-1920.midi index f6cdb441..5daeebe4 100644 Binary files a/contrib/midi/1Bar-1920.midi and b/contrib/midi/1Bar-1920.midi differ diff --git a/contrib/midi/1Note.midi b/contrib/midi/1Note.midi index 34211928..b6d55c9b 100644 Binary files a/contrib/midi/1Note.midi and b/contrib/midi/1Note.midi differ diff --git a/data/midi/b4uacufm.mid b/data/midi/b4uacufm.mid index 45155d3f..2e7d4d58 100644 Binary files a/data/midi/b4uacufm.mid and b/data/midi/b4uacufm.mid differ diff --git a/libseq66/src/cfg/rcsettings.cpp b/libseq66/src/cfg/rcsettings.cpp index 77974999..61c341cf 100644 --- a/libseq66/src/cfg/rcsettings.cpp +++ b/libseq66/src/cfg/rcsettings.cpp @@ -25,7 +25,7 @@ * \library seq66 application * \author Seq24 team; modifications by Chris Ahlstrom * \date 2015-09-22 - * \updates 2023-05-12 + * \updates 2023-07-17 * \license GNU GPLv2 or above * * Note that this module also sets the legacy global variables, so that @@ -563,7 +563,7 @@ rcsettings::make_config_filespec const std::string & ext ) const { - std::string result; + std::string result = base; /* bugfix 23-07-17 */ auto pos = base.find_last_of("."); if (pos != std::string::npos) /* base.extension */ { @@ -571,18 +571,10 @@ rcsettings::make_config_filespec if (pos != std::string::npos) /* slash in base */ { if (pos > 0) /* not at start */ - { - result = home_config_directory(); /* relative path */ - result += base; - } - else - result = base; /* a full path */ + result = filename_concatenate(home_config_directory(), base); } else - { - result = home_config_directory(); /* HOME/base.exten */ - result += base; - } + result = filename_concatenate(home_config_directory(), base); } else { diff --git a/libseq66/src/play/performer.cpp b/libseq66/src/play/performer.cpp index fbb4e734..db400c64 100644 --- a/libseq66/src/play/performer.cpp +++ b/libseq66/src/play/performer.cpp @@ -24,7 +24,7 @@ * \library seq66 application * \author Chris Ahlstrom and others * \date 2018-11-12 - * \updates 2023-07-16 + * \updates 2023-07-17 * \license GNU GPLv2 or above * * Also read the comments in the Seq64 version of this module, perform. @@ -289,11 +289,13 @@ static const int c_thread_priority = 1; * tune would really jack up JACK, crashing the app (corrupted double-linked * list, double frees in destructors, etc.) and sometimes leaving a loud tone * buzzing. So after we stop the current tune, we delay a little bit to - * allow JACK playback to exit. See the delay_stop() member function and its - * usages herein. + * allow JACK playback to exit. + * + * 1. TEST WITH JACK. + * 2. MAKE A CONFIGURATION ITEM? */ -static const int c_delay_start = 10; /* delay_start() */ +static const int c_delay_start = 1000; /** * Indicates how much of a long file-path we will show using the @@ -966,7 +968,7 @@ performer::true_input_bus (bussbyte nominalbuss) const msg += busname; msg += "\""; } - msg += ". Check ports in the 'rc'/'ctrl' files."; + msg += ". Check ports in the rc/ctrl files."; m_port_map_error = true; /* mutable boolean */ append_error_message(msg); } diff --git a/seq_qt5/src/qsmainwnd.cpp b/seq_qt5/src/qsmainwnd.cpp index cd52865e..05612761 100644 --- a/seq_qt5/src/qsmainwnd.cpp +++ b/seq_qt5/src/qsmainwnd.cpp @@ -24,7 +24,7 @@ * \library seq66 application * \author Chris Ahlstrom * \date 2018-01-01 - * \updates 2023-07-15 + * \updates 2023-07-17 * \license GNU GPLv2 or above * * The main window is known as the "Patterns window" or "Patterns panel". It @@ -452,7 +452,6 @@ qsmainwnd::qsmainwnd Qt::WindowFlags c = Qt::WindowCloseButtonHint; f = f & (~c); setWindowFlags(f); - connect_nsm_slots(); } else @@ -1422,6 +1421,9 @@ qsmainwnd::open_list_dialog () result = not_nullptr(m_playlist_frame); if (result) { + cb_perf().playlist_activate(true); /* ca 2023-07-17 */ + rc().playlist_active(true); /* ditto */ + refresh_captions(); /* ditto */ result = m_playlist_frame->load_playlist(fname); if (! result) show_error_box(cb_perf().playlist_error_message()); @@ -1667,9 +1669,10 @@ qsmainwnd::open_file (const std::string & fn) if (cb_perf().port_map_error()) /* ca 2023-06-01 */ { std::string msg = - "Unavailable port(s) specified in MIDI file. Check ports " - "and perhaps modify MIDI file to specify available ports." + "Unavailable port(s) specified in MIDI file. " + "Perhaps modify MIDI file to specify available ports. " ; + msg += cb_perf().error_messages(); bool yes = show_error_box_ex(msg, false); if (yes)