/[svn]/linuxsampler/trunk/src/drivers/midi/MidiInputDeviceAlsa.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/midi/MidiInputDeviceAlsa.cpp

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

revision 1992 by persson, Wed Jul 29 15:31:09 2009 UTC revision 1993 by schoenebeck, Sun Aug 30 11:27:35 2009 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6   *   Copyright (C) 2005 - 2008 Christian Schoenebeck                       *   *   Copyright (C) 2005 - 2009 Christian Schoenebeck                       *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 28  Line 28 
28    
29  namespace LinuxSampler {  namespace LinuxSampler {
30    
31        /// number of currently existing ALSA midi input devices in LinuxSampler
32        static int existingAlsaDevices = 0;
33    
34  // *************** ParameterName ***************  // *************** ParameterName ***************
35  // *  // *
36    
# Line 119  namespace LinuxSampler { Line 122  namespace LinuxSampler {
122    
123    
124    
125    // *************** MidiInputDeviceAlsa::ParameterName ***************
126    // *
127    
128        MidiInputDeviceAlsa::ParameterName::ParameterName() : DeviceCreationParameterString() {
129            InitWithDefault(); // use default name
130        }
131    
132        MidiInputDeviceAlsa::ParameterName::ParameterName(String s) : DeviceCreationParameterString(s) {
133        }
134    
135        String MidiInputDeviceAlsa::ParameterName::Description() {
136            return "Arbitrary ALSA client name";
137        }
138    
139        bool MidiInputDeviceAlsa::ParameterName::Fix() {
140            return true;
141        }
142    
143        bool MidiInputDeviceAlsa::ParameterName::Mandatory() {
144            return false;
145        }
146    
147        std::map<String,DeviceCreationParameter*> MidiInputDeviceAlsa::ParameterName::DependsAsParameters() {
148            return std::map<String,DeviceCreationParameter*>(); // no dependencies
149        }
150    
151        std::vector<String> MidiInputDeviceAlsa::ParameterName::PossibilitiesAsString(std::map<String,String> Parameters) {
152            return std::vector<String>();
153        }
154    
155        optional<String> MidiInputDeviceAlsa::ParameterName::DefaultAsString(std::map<String,String> Parameters) {
156            return (existingAlsaDevices) ? "LinuxSampler" + ToString(existingAlsaDevices) : "LinuxSampler";
157        }
158    
159        void MidiInputDeviceAlsa::ParameterName::OnSetValue(String s) throw (Exception) {
160            // not possible, as parameter is fix
161        }
162    
163        String MidiInputDeviceAlsa::ParameterName::Name() {
164            return "NAME";
165        }
166    
167    
168    
169  // *************** MidiInputPortAlsa ***************  // *************** MidiInputPortAlsa ***************
170  // *  // *
171    
# Line 192  namespace LinuxSampler { Line 239  namespace LinuxSampler {
239          if (snd_seq_open(&hAlsaSeq, "default", SND_SEQ_OPEN_INPUT, 0) < 0) {          if (snd_seq_open(&hAlsaSeq, "default", SND_SEQ_OPEN_INPUT, 0) < 0) {
240              throw MidiInputException("Error opening ALSA sequencer");              throw MidiInputException("Error opening ALSA sequencer");
241          }          }
242            existingAlsaDevices++;
243          this->hAlsaSeqClient = snd_seq_client_id(hAlsaSeq);          this->hAlsaSeqClient = snd_seq_client_id(hAlsaSeq);
244          snd_seq_set_client_name(hAlsaSeq, "LinuxSampler");          snd_seq_set_client_name(hAlsaSeq, ((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString().c_str());
245          AcquirePorts(((DeviceCreationParameterInt*)Parameters["PORTS"])->ValueAsInt());          AcquirePorts(((DeviceCreationParameterInt*)Parameters["PORTS"])->ValueAsInt());
246          if (((DeviceCreationParameterBool*)Parameters["ACTIVE"])->ValueAsBool()) {          if (((DeviceCreationParameterBool*)Parameters["ACTIVE"])->ValueAsBool()) {
247                  Listen();              Listen();
248          }          }
249      }      }
250    
251      MidiInputDeviceAlsa::~MidiInputDeviceAlsa() {      MidiInputDeviceAlsa::~MidiInputDeviceAlsa() {
# Line 210  namespace LinuxSampler { Line 258  namespace LinuxSampler {
258          Ports.clear();          Ports.clear();
259    
260          snd_seq_close(hAlsaSeq);          snd_seq_close(hAlsaSeq);
261            existingAlsaDevices--; //FIXME: this is too simple, can lead to multiple clients with the same name
262      }      }
263    
264      MidiInputDeviceAlsa::MidiInputPortAlsa* MidiInputDeviceAlsa::CreateMidiPort() {      MidiInputDeviceAlsa::MidiInputPortAlsa* MidiInputDeviceAlsa::CreateMidiPort() {
# Line 237  namespace LinuxSampler { Line 286  namespace LinuxSampler {
286      }      }
287    
288      String MidiInputDeviceAlsa::Version() {      String MidiInputDeviceAlsa::Version() {
289              String s = "$Revision: 1.23 $";              String s = "$Revision: 1.24 $";
290              return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword              return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword
291      }      }
292    

Legend:
Removed from v.1992  
changed lines
  Added in v.1993

  ViewVC Help
Powered by ViewVC