Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-8]: src/usr.bin/midiplay Pull up following revision(...



details:   https://anonhg.NetBSD.org/src/rev/6467d437792a
branches:  netbsd-8
changeset: 318998:6467d437792a
user:      martin <martin%NetBSD.org@localhost>
date:      Sat May 12 10:40:25 2018 +0000
description:
Pull up following revision(s) (requested by mrg in ticket #820):

        usr.bin/midiplay/midiplay.1: revision 1.20
        usr.bin/midiplay/midiplay.1: revision 1.21
        usr.bin/midiplay/midiplay.c: revision 1.31
        usr.bin/midiplay/midiplay.c: revision 1.32

if just parsing don't try to read the uninitialised device name,
or display the unit number.

add a "-s" option that sends an ALL_SOUNDS_OFF midi event.  very
useful after an interrupted midiplay leaves notes on.

Merge options without arguments in synopsis.

Sync usage with manpage.

diffstat:

 usr.bin/midiplay/midiplay.1 |  21 ++++++++++++++-------
 usr.bin/midiplay/midiplay.c |  34 ++++++++++++++++++++++++++--------
 2 files changed, 40 insertions(+), 15 deletions(-)

diffs (154 lines):

diff -r a9f4f218f20d -r 6467d437792a usr.bin/midiplay/midiplay.1
--- a/usr.bin/midiplay/midiplay.1       Sat May 12 10:35:45 2018 +0000
+++ b/usr.bin/midiplay/midiplay.1       Sat May 12 10:40:25 2018 +0000
@@ -1,4 +1,5 @@
-.\" $NetBSD: midiplay.1,v 1.19 2010/01/16 08:50:29 mbalmer Exp $
+.\" $NetBSD: midiplay.1,v 1.19.38.1 2018/05/12 10:40:25 martin Exp $
+.\"
 .\" Copyright (c) 1998 The NetBSD Foundation, Inc.
 .\" All rights reserved.
 .\"
@@ -25,7 +26,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd January 16, 2010
+.Dd May 2, 2018
 .Dt MIDIPLAY 1
 .Os
 .Sh NAME
@@ -33,15 +34,11 @@
 .Nd play MIDI and RMID files
 .Sh SYNOPSIS
 .Nm
+.Op Fl lmqsvx
 .Op Fl d Ar devno
 .Op Fl f Ar file
-.Op Fl l
-.Op Fl m
 .Op Fl p Ar pgm
-.Op Fl q
 .Op Fl t Ar tempo
-.Op Fl v
-.Op Fl x
 .Op Ar file ...
 .Sh DESCRIPTION
 The
@@ -86,6 +83,11 @@
 selectively map channels or instruments.
 .It Fl q
 specifies that the MIDI file should not be played, just parsed.
+.It Fl s
+send an
+.Dq ALL SOUNDS OFF
+MIDI event.
+Useful if an interrupted MIDI file left notes playing.
 .It Fl t Ar tempo-adjust
 specifies an adjustment (in percent) to the tempi recorded in the file.
 The default of 100 plays as specified in the file, 50 halves every tempo,
@@ -123,3 +125,8 @@
 .Nm
 is interrupted, as the data already buffered in the sequencer will contain
 timing events.
+Use
+.Nm
+with the
+.Fl s
+option to silence any sounds left after an interrupted call.
diff -r a9f4f218f20d -r 6467d437792a usr.bin/midiplay/midiplay.c
--- a/usr.bin/midiplay/midiplay.c       Sat May 12 10:35:45 2018 +0000
+++ b/usr.bin/midiplay/midiplay.c       Sat May 12 10:40:25 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: midiplay.c,v 1.30 2015/03/22 22:47:43 mrg Exp $        */
+/*     $NetBSD: midiplay.c,v 1.30.8.1 2018/05/12 10:40:25 martin Exp $ */
 
 /*
  * Copyright (c) 1998, 2002 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 #include <sys/cdefs.h>
 
 #ifndef lint
-__RCSID("$NetBSD: midiplay.c,v 1.30 2015/03/22 22:47:43 mrg Exp $");
+__RCSID("$NetBSD: midiplay.c,v 1.30.8.1 2018/05/12 10:40:25 martin Exp $");
 #endif
 
 
@@ -128,6 +128,13 @@
 #undef E
 #undef F
 
+static u_char silence_sample[] = {
+       'M', 'T', 'h', 'd',  0, 0, 0, 6,  0, 1,  0, 1,  0, 8,
+       'M', 'T', 'r', 'k',  0, 0, 0, 8,
+       0, 0xb0, 0x78, 0x00, 
+       0, 0xff, 0x2f, 0
+};
+
 #define MARK_HEADER "MThd"
 #define MARK_TRACK "MTrk"
 #define MARK_LEN 4
@@ -148,8 +155,8 @@
 static void __attribute__((__noreturn__))
 usage(void)
 {
-       fprintf(stderr, "usage: %s [-d unit] [-f file] [-l] [-m] [-p pgm] [-q] "
-              "[-t %%tempo] [-v] [-x] [file ...]\n",
+       fprintf(stderr, "usage: %s [-lmqsvx] [-d devno] [-f file] "
+               "[-p pgm] [-t tempo] [file ...]\n",
                getprogname());
        exit(1);
 }
@@ -408,9 +415,12 @@
                err(1, "ioctl(SEQUENCER_INFO) failed");
 
        end = buf + tot;
-       if (verbose)
-               printf("Playing %s (%d bytes) on %s (unit %d)... \n",
-                   name, tot, info.name, info.device);
+       if (verbose) {
+               printf("Playing %s (%d bytes)", name, tot);
+               if (play)
+                       printf(" on %s (unit %d)...", info.name, info.device);
+               puts("\n");
+       }
 
        if (tot < MARK_LEN + 4) {
                warnx("Not a MIDI file, too short");
@@ -716,6 +726,7 @@
        int ch;
        int listdevs = 0;
        int example = 0;
+       int silence = 0;
        int nmidi;
        const char *file = DEVMUSIC;
        const char *sunit;
@@ -725,7 +736,7 @@
        if ((sunit = getenv("MIDIUNIT")))
                unit = parse_unit(sunit);
 
-       while ((ch = getopt(argc, argv, "?d:f:lmp:qt:vx")) != -1) {
+       while ((ch = getopt(argc, argv, "?d:f:lmp:qst:vx")) != -1) {
                switch(ch) {
                case 'd':
                        unit = parse_unit(optarg);
@@ -745,6 +756,9 @@
                case 'q':
                        play = 0;
                        break;
+               case 's':
+                       silence++;
+                       break;
                case 't':
                        ttempo = atoi(optarg);
                        break;
@@ -785,6 +799,10 @@
        if (example)
                while (example--)
                        playdata(sample, sizeof sample, "<Gubben Noa>");
+       else if (silence)
+               while (silence--)
+                       playdata(silence_sample, sizeof silence_sample,
+                                "<Silence>");
        else if (argc == 0)
                playfile(stdin, "<stdin>");
        else



Home | Main Index | Thread Index | Old Index