Fix lost MIDI events due to broken range check.

This commit is contained in:
David Robillard 2014-12-02 03:36:33 -05:00
parent 07a381a8f5
commit cf47d71761
3 changed files with 11 additions and 6 deletions

View file

@ -49,7 +49,7 @@ public:
Evoral::Parameter from_symbol(const std::string& str) const; Evoral::Parameter from_symbol(const std::string& str) const;
std::string to_symbol(const Evoral::Parameter& param) const; std::string to_symbol(const Evoral::Parameter& param) const;
const Evoral::ParameterDescriptor& descriptor(const Evoral::Parameter& param) const; Evoral::ParameterDescriptor descriptor(const Evoral::Parameter& param) const;
void set_descriptor(const Evoral::Parameter& param, void set_descriptor(const Evoral::Parameter& param,
const Evoral::ParameterDescriptor& desc); const Evoral::ParameterDescriptor& desc);

View file

@ -22,6 +22,7 @@
#include <cstdio> #include <cstdio>
#include "ardour/types.h" #include "ardour/types.h"
#include "ardour/event_type_map.h" #include "ardour/event_type_map.h"
#include "ardour/parameter_descriptor.h"
#include "ardour/parameter_types.h" #include "ardour/parameter_types.h"
#include "ardour/uri_map.h" #include "ardour/uri_map.h"
#include "evoral/Parameter.hpp" #include "evoral/Parameter.hpp"
@ -243,13 +244,17 @@ EventTypeMap::to_symbol(const Evoral::Parameter& param) const
} }
} }
const Evoral::ParameterDescriptor& Evoral::ParameterDescriptor
EventTypeMap::descriptor(const Evoral::Parameter& param) const EventTypeMap::descriptor(const Evoral::Parameter& param) const
{ {
static const Evoral::ParameterDescriptor nil; // Found an existing (perhaps custom) descriptor
Descriptors::const_iterator d = _descriptors.find(param); Descriptors::const_iterator d = _descriptors.find(param);
return (d != _descriptors.end()) ? d->second : nil; if (d != _descriptors.end()) {
return d->second;
}
// Add default descriptor and return that
return ARDOUR::ParameterDescriptor(param);
} }
void void

View file

@ -52,7 +52,7 @@ public:
virtual uint32_t midi_event_type(uint8_t status) const = 0; virtual uint32_t midi_event_type(uint8_t status) const = 0;
/** Return the description of a parameter. */ /** Return the description of a parameter. */
virtual const ParameterDescriptor& descriptor(const Parameter& param) const = 0; virtual ParameterDescriptor descriptor(const Parameter& param) const = 0;
virtual std::string to_symbol(const Parameter& param) const = 0; virtual std::string to_symbol(const Parameter& param) const = 0;
}; };