/[svn]/linuxsampler/trunk/src/midiin.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/midiin.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 22 by schoenebeck, Thu Dec 25 00:02:45 2003 UTC revision 23 by schoenebeck, Thu Dec 25 18:03:43 2003 UTC
# Line 23  Line 23 
23  #include "midiin.h"  #include "midiin.h"
24    
25  MidiIn::MidiIn(AudioThread* pAudioThread) : Thread(true, 1, -1) {  MidiIn::MidiIn(AudioThread* pAudioThread) : Thread(true, 1, -1) {
26        this->seq_handle   = NULL;
27      this->pAudioThread = pAudioThread;      this->pAudioThread = pAudioThread;
28      memset(MIDIControllerTable, 0x00, 128); // set all controller values to zero      memset(MIDIControllerTable, 0x00, 128); // set all controller values to zero
29  }  }
# Line 58  void MidiIn::close_alsa_midi_seq(void) { Line 59  void MidiIn::close_alsa_midi_seq(void) {
59   *                (e.g. "64:0")   *                (e.g. "64:0")
60   */   */
61  void MidiIn::SubscribeToClient(const char* Client) {  void MidiIn::SubscribeToClient(const char* Client) {
62        if (!this->seq_handle) {  // if we haven't registered our seq client yet
63            int res = open_alsa_midi_seq();
64            if (res < 0) {
65                fprintf(stderr,"Opening of MIDI in device failed, exiting.\n");
66                exit(EXIT_FAILURE);
67            }
68        }
69    
70      snd_seq_addr_t sender, dest;      snd_seq_addr_t sender, dest;
71      snd_seq_port_subscribe_t* subs;      snd_seq_port_subscribe_t* subs;
72      sscanf(Client, "%d:%d", sender.client, sender.port);      int extClientID, extPortID;
73      dest.client = this->AlsaID;  
74      dest.port   = this->AlsaPort;      sscanf(Client, "%d:%d", &extClientID, &extPortID);
75        sender.client = (char) extClientID;
76        sender.port   = (char) extPortID;
77        dest.client   = (char) this->AlsaID;
78        dest.port     = (char) this->AlsaPort;
79      snd_seq_port_subscribe_alloca(&subs);      snd_seq_port_subscribe_alloca(&subs);
80      snd_seq_port_subscribe_set_sender(subs, &sender);      snd_seq_port_subscribe_set_sender(subs, &sender);
81      snd_seq_port_subscribe_set_dest(subs, &dest);      snd_seq_port_subscribe_set_dest(subs, &dest);
82      snd_seq_port_subscribe_set_queue(subs, 1);      snd_seq_port_subscribe_set_queue(subs, 1);
83      snd_seq_port_subscribe_set_time_update(subs, 1);      snd_seq_port_subscribe_set_time_update(subs, 1);
84      snd_seq_port_subscribe_set_time_real(subs, 1);      snd_seq_port_subscribe_set_time_real(subs, 1);
85      int res = snd_seq_subscribe_port(this->seq_handle, subs);      if (snd_seq_subscribe_port(this->seq_handle, subs) < 0) {
86      if (!res) {          fprintf(stderr, "Unable to subscribe to client \'%s\' (%s)\n", Client, snd_strerror(errno));
         fprintf(stderr, "Unable to subscribe to client \'%s\'\n", Client);  
87      }      }
88  }  }
89    
90  int MidiIn::Main() {  int MidiIn::Main() {
91      int res = open_alsa_midi_seq();      if (!this->seq_handle) {  // if we haven't registered our seq client yet
92      if (res < 0) {          int res = open_alsa_midi_seq();
93          fprintf(stderr,"opening of MIDI in device failed, exiting.\n");          if (res < 0) {
94          exit(1);              fprintf(stderr,"Opening of MIDI in device failed, exiting.\n");
95                exit(EXIT_FAILURE);
96            }
97      }      }
98    
99      int npfd;      int npfd;

Legend:
Removed from v.22  
changed lines
  Added in v.23

  ViewVC Help
Powered by ViewVC