Contributed MIDI/Test Files
Chris Ahlstrom
2015-09-11 to 2019-11-24

This directory contains contributed MIDI files for examples and testing.
Also see the test files from the midicvt as described in
midicvt-test-files.txt; we found a few bugs to fix, and potential features
to add, by loading them into Sequencer64.  Some of these files have been
resaved with the new features.  For example, see the various versions of
the "example1" file.

   1Bar.midi:

        A small sample to play with.  Was also saved (accidentally)
        with a buss-override of 5, so the buss will not appear in the pattern
        editor unless it happens to exist.  Also added notes and used the LFO
        editor to set DC = 64, Mod Range = 64, Periods = 7.77, Phase Shift = 0.21,
        and Waveform = 1 (Sine wave).  Also added some extra notes after
        modulation, which shows that we do not handle two different velocities at
        the same time value.

   2Bars.midi:

        A 2-bar sample.  Also shows different values of velocity, but added
        via the mouse on the data pane.

   allofarow.mid:

        A file having a lot of empty tracks and one filled track.
        In Sequencer64, it loads as 140 BPM, but plays really slowly.
        In seq24, it loads as 120 BPM, but plays somewhat normally!

   allofarow.midi:

        The song above, saved by a recent, upgraded, version of Sequencer64.

   allofarow-unstripped.midi:

        The song above, saved by an earlier version of Sequencer64, which
        followed Seq24 in saving the mute groups information, even if
        basically unused.

   ameeting.mid:

        This file yields an error "Unexpected chunk number reading file"
        (with no offset or value information in the error message).
        The header of this file claims the file contains two tracks, but 
        there is a third track at the end that holds an end-of-sequence
        message.  Sequencer64 tries to parse this extra data as its
        "proprietary" track.  We have modified the error message to be
        more accurate.

   2rock.mid:

        This drum file we found has "Lyric" sections in it that broke
        reading of the MIDI file.  So this is a new test case.  It resulted
        in a fix to the handling of running status.

   buffalo.mid

        A tune with over four sets of tracks, many with minimal numbers of
        notes.  Some of the tracks are just labels. A few consist of
        21 bytes of data:

        00 FF 21 01 00 (obsolete MIDI message setting port number to 0)
        00 B3 07 64 00 B3 0A 40 00 B3 79 00 (3 control changes, channel 3)

        and ending with the 00 FF 2F 00 end-of-track marker, and similar
        for B4, B5, B6, B7, plus some more stuff.

   click_4_4.midi:
   
        Holds a click-track for use with the Seq24-session script.

   reset.mid:
   
        A file that resets all MIDI channels.

   b4uacuse.mid:

        The original MIDI file, created many long years ago.

   b4uacuse-seq24.midi:

        The "b4uacuse.mid" file after opening or importing into Seq24
        0.9.2, and then saving it.  If one reads this file back into
        Seq24, then saves it again, then the result is identical,
        byte-for-byte, to b4uacuse-legacy.midi.

   b4uacuse-legacy.midi:

        The "b4uacuse.mid" file after opening or importing into
        Sequencer64 0.9.9.8 in "--legacy" mode and then saving it.
        b4uacuse-seq24.midi and b4uacuse-legacy.midi are the same size.
        They should be identical, but Seq24 reverses some events every
        time it saves, due to the way it pops certain MIDI events from its
        container.  But, as noted above, saving b4uacuse-seq24.midi again
        in Seq24 removes the reversals, and then the files are identical
        byte-for byte.
        
        Found a few of our own mistakes while getting the file sizes to match!

   b4uacuse-GM-format.midi:
   
        Hopefully, a good General MIDI file; created by using the midicvt
        application on the imported MIDI file.  Export this file and
        verify that it simply adds a gap into the consolidate performance.

   b4uacuse-stress.midi:

        This is a large MIDI file to test both the speed of loading the
        file and the maximum throughput that Sequencer64 can manage.
        We still need to try this one with the new native JACK version of
        Sequencer64, seq64.

   CountryStrum.midi:

        This file is the CountryStrum.mid SMF 0 file imported into
        Sequencer64, with the SMF 0 track removed, and all the sequences
        moved over to the leftmost position in the main window.

   example1.mid:

        A simple SMF 0 MIDI file from the midicvt project.  Useful in
        testing the channel-split feature, small enough to step through
        under the debugger :-D

        Also has notes that end at the very beginning (tick 0) of the
        second  measure, instead of ending at the end (tick 191) of the
        first measure.  This should be a good test of the new Export
        functionality.

   example1-original.midi:

        A saving of example1.mid after loading into an earlier version of
        Sequencer64.  It contains SeqSpec events for MIDI clocks (0x03),
        song data (0x05), beats per minute (0x07), and mute groups (0x09)
        which are all zero (unused).  Compare it to the next file.

   example1.midi:

        A recent save of example1.mid after loading into a much newer
        version of Sequencer64.  It contains the SeqSpec events as
        example1-original.midi, except that the unused mute groups (0x09)
        have been stripped out, and the following SeqSpecs have been
        added: global music key (0x11), global music scale (0x12), and
        global background sequence (0x13).  Also added, to track 0, are
        the time signature and tempo meta events.

   example1-minimal.midi:

        A load of example1.mid with all but one track removed, for testing
        the Export functionality with a more tractable sample file.  Also,
        fixing the length of the two notes exposed a bug in the Event
        Editor, now fixed.

   example1-minimal-export.midi:

        Illustrates how export works with a simple track with two sections
        created by painting them separately onto the Song Editor.

   example1-expanded.midi:

        The example1-minimal.midi file with the track layed out four times
        in the song editor, then expanded so that the gap is due to a
        split, rather than explicit drawing.  Use for a test of expansion
        and of export.  This file shows that full repeats of a track are
        exported properly.

   example2-minimal.midi:

        The file example1-minimal.midi modified to make the track 4
        measures long, so that splitting a pattern in two can be tested
        for export.  The track is repeated 4 times in the Song Editor.
        Then we put a gap in the middle of the second repetition of the 4
        measures.  Export this file and verify that it simply adds a gap
        into the consolidate performance.

   example3.midi:

        Adds some tempo events to test the new handling of tempos.

   Hapwandr.mid

        A transcription of "The Happy Wanderer", having a BPM of 250.

   hymne.mid

        A Vangelis tune with a BPM of 80 and a PPQN of 96.   It also seems
        to have a lot more "Note On" events than "Note Off" events.
        Weird!  Probably a lot of note-offs using a note-on velocity of 0.

   Itis.mid

        A file with 27 tracks (2 empty), we want to see if it includes
        MIDI buss numbers.

   k_seq.mid

        A "tune" I "wrote", having a BPM of 103 (!), PPQN = 96 (0x60).

   longhair.mid

        "Memories of Professor Longhair", BPM = 115, PPQN = 120 (0x78).

   MIDIBadTrackHdr.mid:

        This bad file has 'mTrk' (not "MTrk") marking its first track.

   sets.midi:

        One pattern per set for 8 sets.  Useful in testing issues with the
        new varisets feature, including labelling sets and paging between
        sets.

   sets2.midi:

        A simpler version of sets.midi just for testing the
        set-playing-screen feature.

   signature-samples.midi:

        A file useful for getting the scaling of the user-interface right.

   test.mid:

        A file from Tim Deagan the exhibits the error of GitHub issue
        #161.

   wpb_yoshimi-buss-0.midi:

        Another song from long ago, configured for the Yoshimi software
        synthesizer, mapped onto bus 0.

   Beh_Firmware_Blank_Sysex.syx

        A sample SysEx-only file obtained from

            http://host.mtnsys.com:81/faq-fcb/ExampleSysexFiles.htm

# vim: sw=3 ts=3 wm=8 et ft=sh
