コード例 #1
0
void
parser_cb (void *context, int category, unsigned char msg, unsigned char ch,
	   unsigned char *parms, int len)
{
  ymhusb_midic *midic = context;

  if (category == CAT_VOICE)
    {
      switch (msg)
	{
	case MIDI_NOTEON:
	  out_event (midic, 0x9, msg | ch, parms[0], parms[1]);
	  break;

	case MIDI_NOTEOFF:
	  out_event (midic, 0x8, msg | ch, parms[0], parms[1]);
	  break;

	case MIDI_KEY_PRESSURE:
	  out_event (midic, 0xa, msg | ch, parms[0], parms[1]);
	  break;
	}

      return;
    }

  if (category == CAT_CHN)
    {
      switch (msg)
	{
	case MIDI_CTL_CHANGE:
	  out_event (midic, 0xb, msg | ch, parms[0], parms[1]);
	  break;

	case MIDI_PGM_CHANGE:
	  out_event (midic, 0xc, msg | ch, parms[0], 0);
	  break;

	case MIDI_CHN_PRESSURE:
	  out_event (midic, 0xd, msg | ch, parms[0], 0);
	  break;

	case MIDI_PITCH_BEND:
	  out_event (midic, 0xe, msg | ch, parms[0], parms[1]);
	  break;
	}
      return;
    }

  if (category == CAT_REALTIME)
    {
      out_event (midic, 0xf, msg | ch, 0, 0);
      return;
    }

  if (category == CAT_MTC)
    {
      out_event (midic, 0x2, 0xf1, parms[0], 0);
      return;
    }

  if (category == CAT_SYSEX)
    {
      int l = len, n;
      unsigned char *d = parms;

      while (l > 0)
	{
	  n = l;
	  if (n > 3)
	    n = 3;

	  switch (n)
	    {
	    case 3:
	      out_event (midic, 0x4, d[0], d[1], d[2]);
	      break;
	    case 2:
	      out_event (midic, 0x6, d[0], d[1], 0);
	      break;
	    case 1:
	      out_event (midic, 0x5, d[0], 0, 0);
	      break;
	    }

	  l -= n;
	  d += n;
	}
      return;
    }
}
コード例 #2
0
ファイル: pgm_sender.cpp プロジェクト: jeffdik/zeromq2
void zmq::pgm_sender_t::revive ()
{
    set_pollout (handle);
    out_event ();
}
コード例 #3
0
ファイル: pgm_sender.cpp プロジェクト: CPlusPlusHome/libzmq
void zmq::pgm_sender_t::restart_output ()
{
    set_pollout (handle);
    out_event ();
}
コード例 #4
0
void zmq::pgm_sender_t::activate_out ()
{
    set_pollout (handle);
    out_event ();
}
コード例 #5
0
ファイル: pgm_sender.cpp プロジェクト: jianjin/libxs
void xs::pgm_sender_t::activate_out ()
{
    set_pollout (handle);
    out_event (retired_fd);
}