Mise au point de l'interrop avec la lib midi
This commit is contained in:
parent
767a47d33a
commit
55b06fe771
2 changed files with 49 additions and 25 deletions
|
|
@ -5,7 +5,7 @@ namespace DMX2
|
|||
{
|
||||
public partial class MidiEventProvider
|
||||
{
|
||||
const string ASOUND_LIB_NAME = "libasound.so.2";
|
||||
const string ASOUND_LIB_NAME = "libasound.so";
|
||||
const int SND_SEQ_NONBLOCK = 1;
|
||||
const int SND_SEQ_OPEN_INPUT = 1;
|
||||
const int SND_SEQ_OPEN_OUTPUT = 2;
|
||||
|
|
@ -160,6 +160,37 @@ namespace DMX2
|
|||
public byte port;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct snd_seq_ev_ctrl_t {
|
||||
public byte channel;
|
||||
public byte unused1;
|
||||
public byte unused2;
|
||||
public byte unused3;
|
||||
public uint param;
|
||||
public int value;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct snd_seq_ev_note_t {
|
||||
public byte channel;
|
||||
public byte note;
|
||||
public byte velocity;
|
||||
public byte off_velocity;
|
||||
public uint duration;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct snd_seq_connect_t {
|
||||
public snd_seq_addr_t sender;
|
||||
public snd_seq_addr_t dest;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct snd_seq_result_t {
|
||||
public int eventt;
|
||||
public int result;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
struct snd_seq_event_t {
|
||||
[FieldOffset(0)]
|
||||
|
|
@ -172,18 +203,18 @@ namespace DMX2
|
|||
public byte queue;
|
||||
[FieldOffset(4)]
|
||||
public uint time;
|
||||
[FieldOffset(8)]
|
||||
public snd_seq_addr_t source;
|
||||
[FieldOffset(10)]
|
||||
public snd_seq_addr_t dest;
|
||||
[FieldOffset(12)]
|
||||
public byte data_control_channel;
|
||||
[FieldOffset(13)]
|
||||
public byte data_control_unused;
|
||||
public snd_seq_addr_t source;
|
||||
[FieldOffset(14)]
|
||||
public uint data_control_param;
|
||||
[FieldOffset(18)]
|
||||
public int data_control_value;
|
||||
public snd_seq_addr_t dest;
|
||||
[FieldOffset(16)]
|
||||
public snd_seq_ev_ctrl_t data_ev_ctrl;
|
||||
[FieldOffset(16)]
|
||||
public snd_seq_ev_note_t data_ev_note;
|
||||
[FieldOffset(16)]
|
||||
public snd_seq_connect_t data_connect;
|
||||
[FieldOffset(16)]
|
||||
public snd_seq_result_t data_result;
|
||||
}
|
||||
|
||||
[DllImport(ASOUND_LIB_NAME, CallingConvention = CallingConvention.Cdecl)]
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace DMX2
|
|||
|
||||
public MidiEventProvider ()
|
||||
{
|
||||
snd_seq_open(out midi_seq_handle, "default",SND_SEQ_OPEN_INPUT,0);
|
||||
snd_seq_open(out midi_seq_handle, "default",SND_SEQ_OPEN_DUPLEX,0);
|
||||
snd_seq_set_client_name(midi_seq_handle,"DMX2");
|
||||
midiport = snd_seq_create_simple_port(midi_seq_handle,"dmx_ctrl",
|
||||
SND_SEQ_PORT_CAP_WRITE + SND_SEQ_PORT_CAP_SUBS_WRITE,
|
||||
|
|
@ -22,21 +22,14 @@ namespace DMX2
|
|||
|
||||
public void Process ()
|
||||
{
|
||||
int i= snd_seq_event_input_pending(midi_seq_handle,1);
|
||||
if( i!=0)Info.Publish(string.Format("i={0}",i));
|
||||
IntPtr ev;
|
||||
|
||||
/*
|
||||
while (snd_seq_event_input_pending(midi_seq_handle,1)>0) {
|
||||
|
||||
|
||||
int i; IntPtr ev;
|
||||
while ((i = snd_seq_event_input_pending(midi_seq_handle,1))>0) {
|
||||
//Console.WriteLine(i);
|
||||
i=snd_seq_event_input(midi_seq_handle, out ev);
|
||||
snd_seq_event_t evS =(snd_seq_event_t) Marshal.PtrToStructure(ev,typeof(snd_seq_event_t));
|
||||
|
||||
Info.Publish(evS.data_control_value.ToString());
|
||||
|
||||
Info.Publish(string.Format ("event {0} {1}", evS.type, evS.data_ev_ctrl.value) );
|
||||
snd_seq_free_event(ev);
|
||||
}*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#region IDisposable implementation
|
||||
|
|
|
|||
Loading…
Reference in a new issue