Remove braindead Parameter inheritance abuse.

This commit is contained in:
David Robillard 2014-11-30 23:14:03 -05:00
parent 7eb4e5d22b
commit 0ffeaa6d6a
6 changed files with 14 additions and 75 deletions

View file

@ -39,7 +39,6 @@
#include "ardour/session.h"
#include "evoral/Parameter.hpp"
#include "evoral/MIDIParameters.hpp"
#include "evoral/MIDIEvent.hpp"
#include "evoral/Control.hpp"
#include "evoral/midi_util.h"

View file

@ -26,7 +26,6 @@
#include "ardour/uri_map.h"
#include "evoral/Parameter.hpp"
#include "evoral/midi_events.h"
#include "evoral/MIDIParameters.hpp"
#include "pbd/error.h"
#include "pbd/compose.h"
@ -197,9 +196,14 @@ EventTypeMap::new_parameter(uint32_t type, uint8_t channel, uint32_t id) const
case MidiCCAutomation:
case MidiPgmChangeAutomation:
case MidiChannelPressureAutomation:
Evoral::MIDI::controller_range(min, max, normal); break;
min = 0.0;
normal = 0.0;
max = 127.0;
break;
case MidiPitchBenderAutomation:
Evoral::MIDI::bender_range(min, max, normal); break;
min = 0.0;
normal = 8192.0;
max = 16383.0;
case MidiSystemExclusiveAutomation:
return p;
case PluginPropertyAutomation:

View file

@ -499,10 +499,6 @@
RelativePath="..\evoral\MIDIEvent.hpp"
>
</File>
<File
RelativePath="..\evoral\MIDIParameters.hpp"
>
</File>
<File
RelativePath="..\evoral\Note.hpp"
>

View file

@ -1,59 +0,0 @@
/* This file is part of Evoral.
* Copyright (C) 2008 David Robillard <http://drobilla.net>
* Copyright (C) 2000-2008 Paul Davis
*
* Evoral is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* Evoral is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef EVORAL_MIDI_PARAMETERS_HPP
#define EVORAL_MIDI_PARAMETERS_HPP
#include "evoral/visibility.h"
namespace Evoral {
namespace MIDI {
struct /*LIBEVORAL_API*/ ContinuousController : public Parameter {
ContinuousController(uint32_t cc_type, uint8_t channel, uint32_t controller)
: Parameter(cc_type, channel, controller) {}
};
struct /*LIBEVORAL_API*/ ProgramChange : public Parameter {
ProgramChange(uint32_t pc_type, uint8_t channel) : Parameter(pc_type, channel, 0) {}
};
struct /*LIBEVORAL_API*/ ChannelPressure : public Parameter {
ChannelPressure(uint32_t ca_type, uint32_t channel) : Parameter(ca_type, channel, 0) {}
};
struct /*LIBEVORAL_API*/ PitchBender : public Parameter {
PitchBender(uint32_t pb_type, uint32_t channel) : Parameter(pb_type, channel, 0) {}
};
inline static void controller_range(double& min, double& max, double& normal) {
min = 0.0;
normal = 0.0;
max = 127.0;
}
inline static void bender_range(double& min, double& max, double& normal) {
min = 0.0;
normal = 8192.0;
max = 16383.0;
}
} // namespace MIDI
} // namespace Evoral
#endif // EVORAL_MIDI_PARAMETERS_HPP

View file

@ -35,7 +35,6 @@
#include "evoral/ControlList.hpp"
#include "evoral/ControlSet.hpp"
#include "evoral/EventSink.hpp"
#include "evoral/MIDIParameters.hpp"
#include "evoral/Sequence.hpp"
#include "evoral/TypeMap.hpp"
#include "evoral/midi_util.h"
@ -936,20 +935,20 @@ Sequence<Time>::append(const Event<Time>& event, event_id_t evid)
}
} else if (ev.is_cc()) {
append_control_unlocked(
Evoral::MIDI::ContinuousController(ev.event_type(), ev.channel(), ev.cc_number()),
Parameter(ev.event_type(), ev.channel(), ev.cc_number()),
ev.time(), ev.cc_value(), evid);
} else if (ev.is_pgm_change()) {
/* write a patch change with this program change and any previously set-up bank number */
append_patch_change_unlocked (PatchChange<Time> (ev.time(), ev.channel(), ev.pgm_number(), _bank[ev.channel()]), evid);
} else if (ev.is_pitch_bender()) {
append_control_unlocked(
Evoral::MIDI::PitchBender(ev.event_type(), ev.channel()),
Parameter(ev.event_type(), ev.channel()),
ev.time(), double ((0x7F & ev.pitch_bender_msb()) << 7
| (0x7F & ev.pitch_bender_lsb())),
evid);
} else if (ev.is_channel_pressure()) {
append_control_unlocked(
Evoral::MIDI::ChannelPressure(ev.event_type(), ev.channel()),
Parameter(ev.event_type(), ev.channel()),
ev.time(), ev.channel_pressure(), evid);
} else if (!_type_map.type_is_midi(ev.event_type())) {
printf("WARNING: Sequence: Unknown event type %X: ", ev.event_type());

View file

@ -1,5 +1,4 @@
#include "SequenceTest.hpp"
#include "evoral/MIDIParameters.hpp"
#include <cassert>
CPPUNIT_TEST_SUITE_REGISTRATION(SequenceTest);
@ -103,11 +102,12 @@ SequenceTest::controlInterpolationTest ()
static const uint64_t delay = 1000;
static const uint32_t cc_type = 1;
boost::shared_ptr<Control> c = seq->control(MIDI::ContinuousController(cc_type, 1, 1), true);
boost::shared_ptr<Control> c = seq->control(Parameter(cc_type, 1, 1), true);
CPPUNIT_ASSERT(c);
double min, max, normal;
MIDI::controller_range(min, max, normal);
double min = 0.0;
double max = 127.0;
double normal = 0.0;
// Make a ramp like /\ from min to max and back to min
c->set_double(min, 0, true);