#include <sys/time.h>
#include "audio_mixer.h"
+#include "midi_mapper.h"
#include "mixer.h"
namespace Ui {
class QSpinBox;
class QTreeWidgetItem;
-class MIDIMappingDialog : public QDialog
+class MIDIMappingDialog : public QDialog, public ControllerReceiver
{
Q_OBJECT
int bank_field_number; // In MIDIMappingProto.
};
+ // ControllerReceiver interface. We only implement the raw events.
+ // All values are [0.0, 1.0].
+ void set_locut(float value) override {}
+ void set_limiter_threshold(float value) override {}
+ void set_makeup_gain(float value) override {}
+
+ void set_treble(unsigned bus_idx, float value) override {}
+ void set_mid(unsigned bus_idx, float value) override {}
+ void set_bass(unsigned bus_idx, float value) override {}
+ void set_gain(unsigned bus_idx, float value) override {}
+ void set_compressor_threshold(unsigned bus_idx, float value) override {}
+ void set_fader(unsigned bus_idx, float value) override {}
+
+ void toggle_locut(unsigned bus_idx) override {}
+ void toggle_auto_gain_staging(unsigned bus_idx) override {}
+ void toggle_compressor(unsigned bus_idx) override {}
+ void clear_peak(unsigned bus_idx) override {}
+
+ // Raw events; used for the editor dialog only.
+ void controller_changed(unsigned controller) override;
+ void note_on(unsigned note) override;
+
public slots:
void ok_clicked();
void cancel_clicked();
+ void save_clicked();
+ void load_clicked();
private:
static constexpr unsigned num_buses = 8;
enum class ControlType { CONTROLLER, BUTTON };
void add_controls(const std::string &heading, ControlType control_type,
const MIDIMappingProto &mapping_proto, const std::vector<Control> &controls);
+ void fill_controls_from_mapping(const MIDIMappingProto &mapping_proto);
std::unique_ptr<MIDIMappingProto> construct_mapping_proto_from_ui();
-
Ui::MIDIMappingDialog *ui;
MIDIMapper *mapper;
+ ControllerReceiver *old_receiver;
// All controllers actually laid out on the grid (we need to store them
- // so that we can read its values back into the new protobuf).
+ // so that we can move values back and forth between the controls and
+ // the protobuf on save/load).
struct InstantiatedSpinner {
QSpinBox *spinner;
unsigned bus_idx;