MIDI Sample and Test Files
Chris Ahlstrom
2015-09-11 to 2025-10-17

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 Seq66.  Some of these files have been
resaved with the new features.  For example, see the various versions of
the "example1" file.

Also note that not all files are described, yet.

Finally, see the many files in the "ppqn" directory. These serve to
test varying PPQN values.

   16-blank-patterns.midi:

      A sample file to copy and record into when using the record-by-channel
      option to record from an unknown device.

   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.

   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 song with 5 sets:

         0. Tempo, piano, organ, organ 2, and bass.
         1. Drums, kick drum, side stick, closed hi-hat.
         2. Empty patterns with percussion names only.
         3. All empty patterns.
         4. Two empty patterns.

   Carpet_of_the_Sun_karaoke_meta_text.mid:

      This tune had a PPQN of 120, and did not display properly in the
      pattern editor. The problem is it sets up a ticks/step of 7.5, which
      gets truncated to 7.  No easy way to fix, so just converted it
      to 192 PPQN.

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

   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.

   Dixie04.mid:

      This file, from Sequencer64, contains a large number of F0 7F SysEx
      events. SysEx messages start with F0 and end with F7.  Universal
      Real Time SysEx messages start with F0, followed by 7F, then include
      other fields before the terminating F7. More importantly, it appears
      to have an unterminated SysEx event starting at 0x53DF. Also, the
      MThd header specifies 14 tracks, but there are only 4 MTrk chunks
      according to midicvt. This is wrong; a binary edit shows 14 MTrks.
      Seq66 (and QTractor) loads only 12 tracks. Another peculiarity of this
      file is that the sequence 9D 7D (F0 7F 00) x 5 occurs 10 times, and
      there are many other F0 F7 nn sequences followed immediately by an
      F0! We can ignore these without storing them, but is that the best
      way to handle them? What do they mean?

   MIDI_sample-480.mid:

      This file was downloaded from:

      https://upload.wikimedia.org/wikipedia/commons/5/55/MIDI_sample.mid
      It has a PPQN of 480. We are using it to test playback speed.

   mutes-long.midi:

      This tune has 10 mute-groups saved in the old mute-group format,
      where each mute-group setting is represented by a long integer
      value!

   mutes-test.midi:

      This is the same tune as above, but saved in the new mute-group
      format, where only a byte is used.  Saves 3168 bytes!  This
      file is meant to be used with qseq66-lp-mini-alt.ctrl, which
      supports only 16 mute-groups.

      The mute groups for each (default) keystroke:

      !  -  Enable column 0
      Q  -  Enable column 1
      A  -  Enable column 2
      Z  -  Enable column 3

      @  -  Enable column 4
      W  -  Enable column 5
      S  -  Enable column 6
      X  -  Enable column 7

      #  -  Enable row 0
      E  -  Enable row 1
      D  -  Enable row 2
      C  -  Enable row 3

      $  -  Enable columns 0 and 1
      R  -  Enable columns 2 and 3
      F  -  Enable columns 4 and 5
      V  -  Enable columns 6 and 7

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

   NR_Route_66.midi:

      An excerpt from the Nelson Riddle version of "Route 66", which
      inspired me to name "Seq66", and give it a street-sign logo.

   route66.midi:

      A version more like the original.

   scales-and-chords.midi:

      Illustrates the showing of scales, chords, and background notes.
      Note the usage of the two active buttons at the right of the
      data pane.

   timesigs.midi:

      Shows patterns with various and multiple time-signatures.

   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

    world7.midi:

      This file is an SMF 0 file where the track number is 9 [i.e. 10],
      not 0 [i.e. 1]. To see it unconverted to SMF 1, turn off the
      option Edit / Preferences / Pattern / Automatic conversion of
      SMF 0 to SMF 1.
   
There are many other files, used for testing fixes, that are not documented
here.

Also see the "data/midi" directory which contains some MIDI/WRK files that
get installed along with Seq66. Also see the old Sequencer64 project for a
lot more sample files and test files.

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