diff --git a/TODO b/TODO index 81112928..d2c13ac6 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,6 @@ TO DO for Seq66 0.99.11 Chris Ahlstrom -2019-04-13 to 2023-12-06 +2019-04-13 to 2023-12-07 Misc: @@ -27,6 +27,16 @@ Misc: into a pattern when recording is set. [Turns out to be quite tricky!] - The Carpet song has PPQN = 120 and displays weirdly in pattern editor. Too difficult to fix at this time; converted it to 192. + - trilogy.mid errors: + [seq66] Offset ~0xae18 of 0x16872 bytes (44568/92274): + Unsupported MIDI event. Bad value 0x56. + [seq66] Unexpected meta type 0x2f offset ~0xaee7 + [seq66] Unexpected meta type 0x2f offset ~0xaf82 + [seq66] Unexpected meta type 0x2f offset ~0xca35 + [seq66] Unexpected meta type 0x2f offset ~0x149e4 + [seq66] Unexpected meta type 0x2f offset ~0x167df + [seq66] Unexpected meta type 0x2f offset ~0x16822 + [seq66] Read: '/home/ahlstrom/Downloads/Trilogy.mid' Mutes: diff --git a/bootstrap b/bootstrap index 594105ed..add15ce6 100755 --- a/bootstrap +++ b/bootstrap @@ -8,7 +8,7 @@ # \library Seq66 # \author Chris Ahlstrom # \date 2018-11-09 -# \update 2022-05-23 +# \update 2023-12-06 # \version $Revision$ # \license $XPC_SUITE_GPL_LICENSE$ # @@ -36,7 +36,7 @@ LANG=C export LANG CYGWIN=binmode export CYGWIN -export SEQ66_SCRIPT_EDIT_DATE="2022-05-23" +export SEQ66_SCRIPT_EDIT_DATE="2022-12-06" export SEQ66_LIBRARY_API_VERSION="0.99" export SEQ66_LIBRARY_VERSION="$SEQ66_LIBRARY_API_VERSION.9" @@ -66,6 +66,7 @@ checkdir libseq66 # Option settings #------------------------------------------------------------------------------ +DOAUTOCONF_ONLY="no" DOBOOTSTRAP="yes" DOCONFIGURE="no" DONSM="yes" @@ -106,6 +107,7 @@ and creates the 'configure' script. It can super-clean the project, removing all generated files and directories. It provides options to save trouble passing long options to the configure script for some canned setups. + --autoconf Just create the autoconf/automake setup and exit. --clean Delete the usual derived files from the project. --full-clean Delete all derived and configure-related files. The bootstrap script will need to be run again. @@ -152,6 +154,12 @@ if [ $# -ge 1 ] ; then case "$1" in + --autoconf) + + DOAUTOCONF_ONLY="yes" + DOCONFIGURE="no" + ;; + --no-bootstrap | -nb) DOBOOTSTRAP="no" DOCONFIGURE="no" @@ -492,6 +500,11 @@ E_O_F cp contrib/mkinstalldirs-1.10 aux-files/mkinstalldirs + if [ $DOAUTOCONF_ONLY == "yes" ] ; then + echo "Autoconf is set up, exiting..." + exit 0 + fi + # At this point, remove files which always need to be regenerated. # Right now, this is done with the --clean option. diff --git a/contrib/midi/README b/contrib/midi/README index dcfa8d3d..96f05637 100644 --- a/contrib/midi/README +++ b/contrib/midi/README @@ -1,6 +1,6 @@ MIDI Sample and Test Files Chris Ahlstrom -2015-09-11 to 2023-11-25 +2015-09-11 to 2023-12-07 This directory contains contributed MIDI files for examples and testing. Also see the test files from the midicvt as described in @@ -110,6 +110,19 @@ the "example1" file. A version more like the original. + trilogy.mid: + + A file found that yields unexpected data: + + Offset ~0xae18 of 0x16872 bytes (44568/92274): + Unsupported MIDI event. Bad value 0x56. + Unexpected meta type 0x2f offset ~0xaee7 + Unexpected meta type 0x2f offset ~0xaf82 + Unexpected meta type 0x2f offset ~0xca35 + Unexpected meta type 0x2f offset ~0x149e4 + Unexpected meta type 0x2f offset ~0x167df + Unexpected meta type 0x2f offset ~0x16822 + There are many other files, used for testing fixes, that are not documented here. diff --git a/contrib/midi/trilogy.mid b/contrib/midi/trilogy.mid new file mode 100644 index 00000000..795733d6 Binary files /dev/null and b/contrib/midi/trilogy.mid differ diff --git a/contrib/scripts/configure-clang b/contrib/scripts/configure-clang new file mode 100755 index 00000000..a88eac41 --- /dev/null +++ b/contrib/scripts/configure-clang @@ -0,0 +1,29 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +## +# \file configure-clang +# \library bin +# \author Chris Ahlstrom +# \date 2023-12-06 to 2023-12-06 +# \version $Revision$ +# \license GNU GPLv2 or above +# +# This script tries to set up got building Seq66 with clang. +# +#------------------------------------------------------------------------------ + +export CC=clang +export CXX=clang++ +export RANLIB=llvm-ranlib +export CFLAGS=" -flto -std=gnu99 " +export LDFLAGS=" -flto -fuse-ld=gold " +# export QMAKESPEC="linux-clang" +export QMAKESPEC="linux-llvm" +./configure + +#****************************************************************************** +# qbuild (Seq66) +#------------------------------------------------------------------------------ +# vim: ts=3 sw=3 wm=4 et ft=sh +#------------------------------------------------------------------------------ + diff --git a/libseq66/src/ctrl/opcontainer.cpp b/libseq66/src/ctrl/opcontainer.cpp index 2fe8ea51..2db4b9a7 100644 --- a/libseq66/src/ctrl/opcontainer.cpp +++ b/libseq66/src/ctrl/opcontainer.cpp @@ -25,7 +25,7 @@ * \library seq66 application * \author Chris Ahlstrom * \date 2018-11-18 - * \updates 2022-05-16 + * \updates 2023-12-07 * \license GNU GPLv2 or above * */ @@ -85,7 +85,7 @@ opcontainer::add (const midioperation & op) automation::slot opnumber = op.number(); if ( - opnumber != automation::slot::max || + opnumber != automation::slot::max && // || re issue #124 opnumber != automation::slot::automation ) { diff --git a/libseq66/src/midi/event.cpp b/libseq66/src/midi/event.cpp index e860e88a..64eb67bc 100644 --- a/libseq66/src/midi/event.cpp +++ b/libseq66/src/midi/event.cpp @@ -24,7 +24,7 @@ * \library seq66 application * \author Chris Ahlstrom * \date 2015-07-24 - * \updates 2023-09-16 + * \updates 2023-12-07 * \license GNU GPLv2 or above * * A MIDI event (i.e. "track event") is encapsulated by the seq66::event @@ -98,13 +98,13 @@ namespace seq66 */ event::event () : - m_input_buss (null_buss()), /* 0xFF */ + m_input_buss (null_buss()), /* 0xFF */ m_timestamp (0), - m_status (EVENT_NOTE_OFF), /* note-off, channel 0 */ - m_channel (null_channel()), /* 0x80 */ - m_data (), /* a two-element array */ - m_sysex (), /* an std::vector */ - m_linked (nullptr), + m_status (EVENT_NOTE_OFF), /* note-off, channel 0 */ + m_channel (null_channel()), /* 0x80 */ + m_data (), /* a two-element array */ + m_sysex (), /* an std::vector */ + m_linked (), /* uninit'd iterator #124 */ m_has_link (false), m_selected (false), m_marked (false), @@ -139,7 +139,7 @@ event::event (midipulse tstamp, midibyte status, midibyte d0, midibyte d1) : m_channel (mask_channel(status)), m_data (), /* two-element array, midibytes */ m_sysex (), /* an std::vector of midibytes */ - m_linked (nullptr), + m_linked (), /* removed nullptr issue #124 */ m_has_link (false), m_selected (false), m_marked (false), @@ -159,7 +159,7 @@ event::event (midipulse tstamp, midibpm tempo) : m_channel (EVENT_META_SET_TEMPO), m_data (), /* two-element array, midibytes */ m_sysex (), /* an std::vector of midibytes */ - m_linked (nullptr), + m_linked (), /* removed nullptr issue #124 */ m_has_link (false), m_selected (false), m_marked (false), @@ -186,7 +186,7 @@ event::event m_channel (channel), m_data (), /* two-element array, midibytes */ m_sysex (), /* an std::vector of midibytes */ - m_linked (nullptr), + m_linked (), /* removed nullptr issue #124 */ m_has_link (false), m_selected (false), m_marked (false), diff --git a/libseq66/src/midi/midifile.cpp b/libseq66/src/midi/midifile.cpp index b2232eca..6b8e758e 100644 --- a/libseq66/src/midi/midifile.cpp +++ b/libseq66/src/midi/midifile.cpp @@ -24,7 +24,7 @@ * \library seq66 application * \author Chris Ahlstrom * \date 2015-07-24 - * \updates 2023-11-30 + * \updates 2023-12-06 * \license GNU GPLv2 or above * * For a quick guide to the MIDI format, see, for example: @@ -1542,11 +1542,9 @@ midifile::parse_smf_1 (performer & p, int screenset, bool is_smf0) --m_pos; /* put byte back */ len = read_varinum(); /* sysex */ #if defined SEQ66_USE_SYSEX_PROCESSING - int bcount = 0; - while (len--) + while (len-- > 0) { midibyte b = read_byte(); - ++bcount; if (! e.append_sysex_byte(b)) /* end byte? */ break; } diff --git a/seq_portmidi/include/midibus_pm.hpp b/seq_portmidi/include/midibus_pm.hpp index c213495c..5a31b9af 100644 --- a/seq_portmidi/include/midibus_pm.hpp +++ b/seq_portmidi/include/midibus_pm.hpp @@ -27,7 +27,7 @@ * \library seq66 application * \author Seq24 team; modifications by Chris Ahlstrom * \date 2015-07-24 - * \updates 2023-06-28 + * \updates 2023-12-05 * \license GNU GPLv2 or above * * This midibus module is the Windows (PortMidi) version of the midibus @@ -107,7 +107,7 @@ class midibus : public midibase virtual int api_poll_for_midi () override; virtual bool api_init_in () override; virtual bool api_init_out () override; - virtual void api_continue_from (midipulse tick, midipulse beats); + virtual void api_continue_from (midipulse tick, midipulse beats) override; virtual void api_start () override; virtual void api_stop () override; virtual void api_clock (midipulse tick) override;