*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> midi/mdPanic (3d)              
Title
Content
Arch
Section
 

Contents


mdPanic(3dm)							  mdPanic(3dm)


NAME    [Toc]    [Back]

     mdPanic - flush MIDI output and transmit (obsolete)

SYNOPSIS    [Toc]    [Back]

     #include <dmedia/midi.h>

     int mdPanic(MDport	port)

DESCRIPTION    [Toc]    [Back]

     mdPanic is	an obsolete routine which sends	ALL NOTES OFF and RESET	ALL
     CONTROLLERS messages on all channels.

     The following program illustrates the prefered method of silencing	stuck
     notes (the	code is	also available in
     /usr/share/src/dmedia/midi/simple/panic.c if the MIDI example code	is
     installed).

     #include <stdio.h>
     #include <dmedia/midi.h>

     long long stamp = 0;

     char *usage = "Usage: panic [-f] [-a | interface name]"

     /*
      *	Transmit ALL NOTES OFF,	ALL SOUND OFF, and RESET ALL CONTROLLERS
      *	messages on all	16 channels.
      */
     void
     send_control_messages(MDport port)
     {
	  int channel, byte;
	  MDevent ev;
	  char data_byte[] = { MD_RESETALLCONTROLLERS, MD_ALLNOTESOFF,
			 MD_ALLSOUNDOFF	};

	  for (channel = 0; channel < 16; channel++) {
	       for (byte = 0; byte < 3;	byte++)	{
		    ev.stamp = stamp++;
		    ev.msg[0] =	MD_CONTROLCHANGE | channel;
		    ev.msg[1] =	data_byte[byte];
		    ev.msg[2] =	0;
		    mdSend(port, &ev, 1);
	       }
	  }
     }


     /*
      *	Transmit explicit NOTE OFF events on all channels.
      */
     void



									Page 1






mdPanic(3dm)							  mdPanic(3dm)



     send_note_off_events(MDport port)
     {
	  int channel, note;
	  MDevent ev;

	  for (channel = 0; channel < 16; channel++) {
	       for (note = 0; note < 128; note++) {
		    ev.stamp = stamp++;
		    ev.msg[0] =	MD_NOTEOFF;
		    ev.msg[1] =	note;
		    ev.msg[2] =	0;
		    mdSend(port, &ev, 1);
	       }
	  }
     }

     void
     main(int argc, char **argv)
     {
	  int  num_interfaces;
	  MDport    port;

	  /* First initialize the MIDI library */
	  num_interfaces = mdInit();
	  if (num_interfaces ==	0) {
	       fprintf(stderr, "panic: no interfaces configured0);
	       exit(1);
	  }

	  /* Open the port */
	  outport = mdOpenOutPort(name);
	  if (outport == NULL) {
	       fprintf(stderr, "panic: Could not open interface0);
	       exit(1);
	  }

	  /* Transmit 1	event every millisecond	*/
	  mdSetStampMode(outport, MD_RELATIVETICKS);
	  mdSetDivision(outport, 1);
	  mdSetTempo(outport, 1000);

	  send_note_off_events(outport);
	  send_control_messages(outport);

	  /* Wait for messages to go out */
	  while	(mdTellNow(outport) < stamp) ;
     }


									PPPPaaaaggggeeee 2222
[ Back ]
 Similar pages
Name OS Title
flush IRIX Flush buffered output for a file
flush IRIX Flush buffered output for a file
flush IRIX Flush buffered output for a file
bdflush Linux start, flush, or tune buffer-dirty-flush daemon
tcflush Tru64 Flush nontransmitted output data or nonread input data
mdSend IRIX send out MIDI data
midiplay OpenBSD play MIDI files
mdGetName IRIX return a MIDI interface name
mdGetStatus IRIX manipulate MIDI messages
startmidi IRIX start MIDI daemon
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service