mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 04:06:26 +01:00
Fix unused parameter warnings since GCC apparently doesn't feel like listening to -Wno-unused-parameter
git-svn-id: svn://localhost/ardour2/branches/3.0@5835 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
af8c16cfe0
commit
bc56eb8bd7
33 changed files with 172 additions and 172 deletions
|
|
@ -2228,7 +2228,7 @@ Editor::set_edit_point_preference (EditPoint ep, bool force)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Editor::set_state (const XMLNode& node, int version)
|
Editor::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
XMLNode* geometry;
|
XMLNode* geometry;
|
||||||
|
|
|
||||||
|
|
@ -157,8 +157,8 @@ Keyboard::get_state (void)
|
||||||
return *node;
|
return *node;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Keyboard::set_state (const XMLNode& node, int version)
|
Keyboard::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1001,7 +1001,7 @@ TimeAxisView::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
TimeAxisView::set_state (const XMLNode& node, int version)
|
TimeAxisView::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty *prop;
|
const XMLProperty *prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,7 @@ UIConfiguration::get_variables (std::string which_node)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
UIConfiguration::set_state (const XMLNode& root, int version)
|
UIConfiguration::set_state (const XMLNode& root, int /*version*/)
|
||||||
{
|
{
|
||||||
if (root.name() != "Ardour") {
|
if (root.name() != "Ardour") {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -1768,7 +1768,7 @@ AudioDiskstream::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
AudioDiskstream::set_state (const XMLNode& node, int version)
|
AudioDiskstream::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
XMLNodeList nlist = node.children();
|
XMLNodeList nlist = node.children();
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ AudioTrack::AudioTrack (Session& sess, string name, Route::Flag flag, TrackMode
|
||||||
use_new_diskstream ();
|
use_new_diskstream ();
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioTrack::AudioTrack (Session& sess, const XMLNode& node, int version)
|
AudioTrack::AudioTrack (Session& sess, const XMLNode& node, int /*version*/)
|
||||||
: Track (sess, node)
|
: Track (sess, node)
|
||||||
{
|
{
|
||||||
_set_state (node, Stateful::loading_state_version, false);
|
_set_state (node, Stateful::loading_state_version, false);
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ AudioSource::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
AudioSource::set_state (const XMLNode& node, int version)
|
AudioSource::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -288,7 +288,7 @@ ControlProtocolManager::cpi_by_name (string name)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
ControlProtocolManager::set_state (const XMLNode& node, int version)
|
ControlProtocolManager::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLNodeList clist;
|
XMLNodeList clist;
|
||||||
XMLNodeConstIterator citer;
|
XMLNodeConstIterator citer;
|
||||||
|
|
|
||||||
|
|
@ -720,7 +720,7 @@ Crossfade::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Crossfade::set_state (const XMLNode& node, int version)
|
Crossfade::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLNodeConstIterator i;
|
XMLNodeConstIterator i;
|
||||||
XMLNodeList children;
|
XMLNodeList children;
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ FileSource::init (const ustring& pathstr, bool must_exist)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
FileSource::set_state (const XMLNode& node, int version)
|
FileSource::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -739,7 +739,7 @@ IO::find_possible_bundle (const string &desired_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
IO::get_port_counts_2X (XMLNode const & node, int version, ChanCount& n, boost::shared_ptr<Bundle>& c)
|
IO::get_port_counts_2X (XMLNode const & node, int /*version*/, ChanCount& n, boost::shared_ptr<Bundle>& /*c*/)
|
||||||
{
|
{
|
||||||
XMLProperty const * prop;
|
XMLProperty const * prop;
|
||||||
XMLNodeList children = node.children ();
|
XMLNodeList children = node.children ();
|
||||||
|
|
@ -892,7 +892,7 @@ IO::make_connections (const XMLNode& node, int version, bool in)
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
IO::make_connections_2X (const XMLNode& node, int version, bool in)
|
IO::make_connections_2X (const XMLNode& node, int /*version*/, bool in)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -347,7 +347,7 @@ Location::get_state (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Location::set_state (const XMLNode& node, int version)
|
Location::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty *prop;
|
const XMLProperty *prop;
|
||||||
|
|
||||||
|
|
@ -674,7 +674,7 @@ Locations::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Locations::set_state (const XMLNode& node, int version)
|
Locations::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLNodeList nlist;
|
XMLNodeList nlist;
|
||||||
XMLNodeConstIterator niter;
|
XMLNodeConstIterator niter;
|
||||||
|
|
|
||||||
|
|
@ -354,7 +354,7 @@ LV2Plugin::has_editor() const
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
LV2Plugin::set_state(const XMLNode& node, int version)
|
LV2Plugin::set_state(const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLNodeList nodes;
|
XMLNodeList nodes;
|
||||||
XMLProperty *prop;
|
XMLProperty *prop;
|
||||||
|
|
|
||||||
|
|
@ -1232,7 +1232,7 @@ MidiDiskstream::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
MidiDiskstream::set_state (const XMLNode& node, int version)
|
MidiDiskstream::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
XMLNodeList nlist = node.children();
|
XMLNodeList nlist = node.children();
|
||||||
|
|
|
||||||
|
|
@ -260,7 +260,7 @@ MidiModel::DeltaCommand::unmarshal_note(XMLNode *xml_note)
|
||||||
#define DELTA_COMMAND_ELEMENT "DeltaCommand"
|
#define DELTA_COMMAND_ELEMENT "DeltaCommand"
|
||||||
|
|
||||||
int
|
int
|
||||||
MidiModel::DeltaCommand::set_state (const XMLNode& delta_command, int version)
|
MidiModel::DeltaCommand::set_state (const XMLNode& delta_command, int /*version*/)
|
||||||
{
|
{
|
||||||
if (delta_command.name() != string(DELTA_COMMAND_ELEMENT)) {
|
if (delta_command.name() != string(DELTA_COMMAND_ELEMENT)) {
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -646,7 +646,7 @@ MidiModel::DiffCommand::unmarshal_change(XMLNode *xml_change)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
MidiModel::DiffCommand::set_state(const XMLNode& diff_command, int version)
|
MidiModel::DiffCommand::set_state(const XMLNode& diff_command, int /*version*/)
|
||||||
{
|
{
|
||||||
if (diff_command.name() != string(DIFF_COMMAND_ELEMENT)) {
|
if (diff_command.name() != string(DIFF_COMMAND_ELEMENT)) {
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ MidiSource::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
MidiSource::set_state (const XMLNode& node, int version)
|
MidiSource::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ MidiTrack::MidiTrack (Session& sess, string name, Route::Flag flag, TrackMode mo
|
||||||
_mode = mode;
|
_mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
MidiTrack::MidiTrack (Session& sess, const XMLNode& node, int version)
|
MidiTrack::MidiTrack (Session& sess, const XMLNode& node, int /*version*/)
|
||||||
: Track (sess, node, DataType::MIDI)
|
: Track (sess, node, DataType::MIDI)
|
||||||
, _immediate_events(1024) // FIXME: size?
|
, _immediate_events(1024) // FIXME: size?
|
||||||
, _step_edit_ring_buffer(64) // FIXME: size?
|
, _step_edit_ring_buffer(64) // FIXME: size?
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ MuteMaster::get_value () const
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
MuteMaster::set_state (const XMLNode& node, int version)
|
MuteMaster::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ StreamPanner::set_position (float xpos, float ypos, float zpos, bool link_call)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
StreamPanner::set_state (const XMLNode& node, int version)
|
StreamPanner::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
XMLNodeConstIterator iter;
|
XMLNodeConstIterator iter;
|
||||||
|
|
@ -730,7 +730,7 @@ Multi2dPanner::state (bool /*full_state*/)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Multi2dPanner::set_state (const XMLNode& node, int version)
|
Multi2dPanner::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
float newx,newy;
|
float newx,newy;
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ Processor::state (bool full_state)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Processor::set_state_2X (const XMLNode & node, int version)
|
Processor::set_state_2X (const XMLNode & node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLProperty const * prop;
|
XMLProperty const * prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,7 @@ RCConfiguration::get_variables ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
RCConfiguration::set_state (const XMLNode& root, int version)
|
RCConfiguration::set_state (const XMLNode& root, int /*version*/)
|
||||||
{
|
{
|
||||||
if (root.name() != "Ardour") {
|
if (root.name() != "Ardour") {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -1174,7 +1174,7 @@ Region::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Region::set_live_state (const XMLNode& node, int version, Change& what_changed, bool send)
|
Region::set_live_state (const XMLNode& node, int /*version*/, Change& what_changed, bool send)
|
||||||
{
|
{
|
||||||
const XMLNodeList& nlist = node.children();
|
const XMLNodeList& nlist = node.children();
|
||||||
const XMLProperty *prop;
|
const XMLProperty *prop;
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ RouteGroup::get_state (void)
|
||||||
return *node;
|
return *node;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
RouteGroup::set_state (const XMLNode& node, int version)
|
RouteGroup::set_state (const XMLNode& node, int version)
|
||||||
{
|
{
|
||||||
if (version < 3000) {
|
if (version < 3000) {
|
||||||
|
|
@ -161,14 +161,14 @@ RouteGroup::set_state (const XMLNode& node, int version)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
RouteGroup::set_state_2X (const XMLNode& node, int version)
|
RouteGroup::set_state_2X (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLProperty const * prop;
|
XMLProperty const * prop;
|
||||||
|
|
||||||
if ((prop = node.property ("name")) != 0) {
|
if ((prop = node.property ("name")) != 0) {
|
||||||
_name = prop->value();
|
_name = prop->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((prop = node.property ("flags")) != 0) {
|
if ((prop = node.property ("flags")) != 0) {
|
||||||
_flags = Flag (string_2_enum (prop->value(), _flags));
|
_flags = Flag (string_2_enum (prop->value(), _flags));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ Session::GlobalRouteStateCommand::GlobalRouteStateCommand (Session& s, const XML
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Session::GlobalRouteStateCommand::set_state (const XMLNode& node, int version)
|
Session::GlobalRouteStateCommand::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
GlobalRouteBooleanState states;
|
GlobalRouteBooleanState states;
|
||||||
XMLNodeList nlist;
|
XMLNodeList nlist;
|
||||||
|
|
@ -483,7 +483,7 @@ Session::GlobalMeteringStateCommand::get_state()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Session::GlobalMeteringStateCommand::set_state (const XMLNode& node, int version)
|
Session::GlobalMeteringStateCommand::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
GlobalRouteBooleanState states;
|
GlobalRouteBooleanState states;
|
||||||
XMLNodeList nlist;
|
XMLNodeList nlist;
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ SessionConfiguration::get_variables ()
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
SessionConfiguration::set_state (XMLNode const& root, int version)
|
SessionConfiguration::set_state (XMLNode const& root, int /*version*/)
|
||||||
{
|
{
|
||||||
if (root.name() != "Ardour") {
|
if (root.name() != "Ardour") {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ SessionMetadata::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
SessionMetadata::set_state (const XMLNode & state, int version)
|
SessionMetadata::set_state (const XMLNode & state, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLNodeList & children = state.children();
|
const XMLNodeList & children = state.children();
|
||||||
ustring name;
|
ustring name;
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ Source::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Source::set_state (const XMLNode& node, int version)
|
Source::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1500,7 +1500,7 @@ TempoMap::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
TempoMap::set_state (const XMLNode& node, int version)
|
TempoMap::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
Glib::RWLock::WriterLock lm (lock);
|
Glib::RWLock::WriterLock lm (lock);
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ ARDOUR::UserBundle::UserBundle (XMLNode const & node, bool i)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
ARDOUR::UserBundle::set_state (XMLNode const & node, int version)
|
ARDOUR::UserBundle::set_state (XMLNode const & node, int /*version*/)
|
||||||
{
|
{
|
||||||
XMLProperty const * name;
|
XMLProperty const * name;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2008 Hans Baier
|
Copyright (C) 2008 Hans Baier
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
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
|
||||||
|
|
@ -61,7 +61,7 @@ void initialize_primary_key_from_commands (PatchPrimaryKey& id, const XMLNode* n
|
||||||
assert(control != "");
|
assert(control != "");
|
||||||
string value = node->property("Value")->value();
|
string value = node->property("Value")->value();
|
||||||
assert(value != "");
|
assert(value != "");
|
||||||
|
|
||||||
if (control == "0") {
|
if (control == "0") {
|
||||||
id.msb = PBD::atoi(value);
|
id.msb = PBD::atoi(value);
|
||||||
} else if (control == "32") {
|
} else if (control == "32") {
|
||||||
|
|
@ -77,13 +77,13 @@ void initialize_primary_key_from_commands (PatchPrimaryKey& id, const XMLNode* n
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Patch::set_state (const XMLNode& node, int version)
|
Patch::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
assert(node.name() == "Patch");
|
assert(node.name() == "Patch");
|
||||||
_number = node.property("Number")->value();
|
_number = node.property("Number")->value();
|
||||||
_name = node.property("Name")->value();
|
_name = node.property("Name")->value();
|
||||||
XMLNode* commands = node.child("PatchMIDICommands");
|
XMLNode* commands = node.child("PatchMIDICommands");
|
||||||
|
|
||||||
if (commands) {
|
if (commands) {
|
||||||
initialize_primary_key_from_commands(_id, commands);
|
initialize_primary_key_from_commands(_id, commands);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -101,7 +101,7 @@ Patch::set_state (const XMLNode& node, int version)
|
||||||
cerr << "deserialized Patch: name: " << _name << " msb: " << _id.msb << " lsb: " << _id.lsb << " program " << _id.program_number << endl;
|
cerr << "deserialized Patch: name: " << _name << " msb: " << _id.msb << " lsb: " << _id.lsb << " program " << _id.program_number << endl;
|
||||||
// TODO: handle that more gracefully
|
// TODO: handle that more gracefully
|
||||||
assert(_id.is_sane());
|
assert(_id.is_sane());
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -116,7 +116,7 @@ Note::get_state (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Note::set_state (const XMLNode& node, int version)
|
Note::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
assert(node.name() == "Note");
|
assert(node.name() == "Note");
|
||||||
_number = node.property("Number")->value();
|
_number = node.property("Number")->value();
|
||||||
|
|
@ -147,7 +147,7 @@ NoteNameList::set_state (const XMLNode& node, int version)
|
||||||
note->set_state(*(*i), version);
|
note->set_state(*(*i), version);
|
||||||
_notes.push_back(note);
|
_notes.push_back(note);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -178,7 +178,7 @@ PatchBank::set_state (const XMLNode& node, int version)
|
||||||
_id = new PatchPrimaryKey();
|
_id = new PatchPrimaryKey();
|
||||||
initialize_primary_key_from_commands(*_id, commands);
|
initialize_primary_key_from_commands(*_id, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLNode* patch_name_list = node.child("PatchNameList");
|
XMLNode* patch_name_list = node.child("PatchNameList");
|
||||||
assert(patch_name_list);
|
assert(patch_name_list);
|
||||||
const XMLNodeList patches = patch_name_list->children();
|
const XMLNodeList patches = patch_name_list->children();
|
||||||
|
|
@ -187,7 +187,7 @@ PatchBank::set_state (const XMLNode& node, int version)
|
||||||
patch->set_state(*(*i), version);
|
patch->set_state(*(*i), version);
|
||||||
_patch_name_list.push_back(patch);
|
_patch_name_list.push_back(patch);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,7 +245,7 @@ ChannelNameSet::set_state (const XMLNode& node, int version)
|
||||||
// cerr << "AvailableForChannels after insert" << endl;
|
// cerr << "AvailableForChannels after insert" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// cerr << "before PatchBank" << endl;
|
// cerr << "before PatchBank" << endl;
|
||||||
|
|
||||||
if (node->name() == "PatchBank") {
|
if (node->name() == "PatchBank") {
|
||||||
|
|
@ -263,19 +263,19 @@ ChannelNameSet::set_state (const XMLNode& node, int version)
|
||||||
// cerr << "after PatchBank pushback" << endl;
|
// cerr << "after PatchBank pushback" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// cerr << "ChannelnameSet done" << endl;
|
// cerr << "ChannelnameSet done" << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
CustomDeviceMode::set_state(const XMLNode& a_node, int version)
|
CustomDeviceMode::set_state(const XMLNode& a_node, int /*version*/)
|
||||||
{
|
{
|
||||||
assert(a_node.name() == "CustomDeviceMode");
|
assert(a_node.name() == "CustomDeviceMode");
|
||||||
|
|
||||||
_name = a_node.property("Name")->value();
|
_name = a_node.property("Name")->value();
|
||||||
|
|
||||||
boost::shared_ptr<XMLSharedNodeList> channel_name_set_assignments =
|
boost::shared_ptr<XMLSharedNodeList> channel_name_set_assignments =
|
||||||
a_node.find("//ChannelNameSetAssign");
|
a_node.find("//ChannelNameSetAssign");
|
||||||
for(XMLSharedNodeList::const_iterator i = channel_name_set_assignments->begin();
|
for(XMLSharedNodeList::const_iterator i = channel_name_set_assignments->begin();
|
||||||
|
|
@ -294,15 +294,15 @@ CustomDeviceMode::get_state(void)
|
||||||
{
|
{
|
||||||
XMLNode* custom_device_mode = new XMLNode("CustomDeviceMode");
|
XMLNode* custom_device_mode = new XMLNode("CustomDeviceMode");
|
||||||
custom_device_mode->add_property("Name", _name);
|
custom_device_mode->add_property("Name", _name);
|
||||||
XMLNode* channel_name_set_assignments =
|
XMLNode* channel_name_set_assignments =
|
||||||
custom_device_mode->add_child("ChannelNameSetAssignments");
|
custom_device_mode->add_child("ChannelNameSetAssignments");
|
||||||
for (int i = 0; i < 15 && !_channel_name_set_assignments[i].empty(); i++) {
|
for (int i = 0; i < 15 && !_channel_name_set_assignments[i].empty(); i++) {
|
||||||
XMLNode* channel_name_set_assign =
|
XMLNode* channel_name_set_assign =
|
||||||
channel_name_set_assignments->add_child("ChannelNameSetAssign");
|
channel_name_set_assignments->add_child("ChannelNameSetAssign");
|
||||||
channel_name_set_assign->add_property("Channel", i + 1);
|
channel_name_set_assign->add_property("Channel", i + 1);
|
||||||
channel_name_set_assign->add_property("NameSet", _channel_name_set_assignments[i]);
|
channel_name_set_assign->add_property("NameSet", _channel_name_set_assignments[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return *custom_device_mode;
|
return *custom_device_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -337,7 +337,7 @@ MasterDeviceNames::set_state(const XMLNode& a_node, int version)
|
||||||
++i) {
|
++i) {
|
||||||
boost::shared_ptr<CustomDeviceMode> custom_device_mode(new CustomDeviceMode());
|
boost::shared_ptr<CustomDeviceMode> custom_device_mode(new CustomDeviceMode());
|
||||||
custom_device_mode->set_state(*(*i), version);
|
custom_device_mode->set_state(*(*i), version);
|
||||||
|
|
||||||
_custom_device_modes[custom_device_mode->name()] = custom_device_mode;
|
_custom_device_modes[custom_device_mode->name()] = custom_device_mode;
|
||||||
_custom_device_mode_names.push_back(custom_device_mode->name());
|
_custom_device_mode_names.push_back(custom_device_mode->name());
|
||||||
}
|
}
|
||||||
|
|
@ -376,9 +376,9 @@ MasterDeviceNames::get_state(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
MIDINameDocument::MIDINameDocument (const string& filename)
|
MIDINameDocument::MIDINameDocument (const string& filename)
|
||||||
: _document(XMLTree(filename))
|
: _document(XMLTree(filename))
|
||||||
{
|
{
|
||||||
set_state(*_document.root(), 0);
|
set_state(*_document.root(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
@ -388,7 +388,7 @@ MIDINameDocument::set_state(const XMLNode& a_node, int version)
|
||||||
boost::shared_ptr<XMLSharedNodeList> author = a_node.find("//Author");
|
boost::shared_ptr<XMLSharedNodeList> author = a_node.find("//Author");
|
||||||
assert(author->size() == 1);
|
assert(author->size() == 1);
|
||||||
_author = author->front()->content();
|
_author = author->front()->content();
|
||||||
|
|
||||||
// cerr << "MIDINameDocument::set_state befor masterdevicenames" << endl;
|
// cerr << "MIDINameDocument::set_state befor masterdevicenames" << endl;
|
||||||
// MasterDeviceNames
|
// MasterDeviceNames
|
||||||
boost::shared_ptr<XMLSharedNodeList> master_device_names_list = a_node.find("//MasterDeviceNames");
|
boost::shared_ptr<XMLSharedNodeList> master_device_names_list = a_node.find("//MasterDeviceNames");
|
||||||
|
|
@ -399,7 +399,7 @@ MIDINameDocument::set_state(const XMLNode& a_node, int version)
|
||||||
// cerr << "MIDINameDocument::set_state before masterdevicenames->set_state" << endl;
|
// cerr << "MIDINameDocument::set_state before masterdevicenames->set_state" << endl;
|
||||||
master_device_names->set_state(*(*i), version);
|
master_device_names->set_state(*(*i), version);
|
||||||
// cerr << "MIDINameDocument::set_state after masterdevicenames->set_state" << endl;
|
// cerr << "MIDINameDocument::set_state after masterdevicenames->set_state" << endl;
|
||||||
|
|
||||||
for (MasterDeviceNames::Models::const_iterator model = master_device_names->models().begin();
|
for (MasterDeviceNames::Models::const_iterator model = master_device_names->models().begin();
|
||||||
model != master_device_names->models().end();
|
model != master_device_names->models().end();
|
||||||
++model) {
|
++model) {
|
||||||
|
|
@ -407,11 +407,11 @@ MIDINameDocument::set_state(const XMLNode& a_node, int version)
|
||||||
_master_device_names_list.insert(
|
_master_device_names_list.insert(
|
||||||
std::pair<std::string, boost::shared_ptr<MasterDeviceNames> >
|
std::pair<std::string, boost::shared_ptr<MasterDeviceNames> >
|
||||||
(*model, master_device_names));
|
(*model, master_device_names));
|
||||||
|
|
||||||
_all_models.push_back(*model);
|
_all_models.push_back(*model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ Controllable::get_state ()
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Controllable::set_state (const XMLNode& node, int version)
|
Controllable::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop = node.property (X_("id"));
|
const XMLProperty* prop = node.property (X_("id"));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 1998-2006 Paul Davis
|
Copyright (C) 1998-2006 Paul Davis
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
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
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
|
@ -42,7 +42,7 @@ MIDIControllable::MIDIControllable (Port& p, Controllable& c, bool is_bistate)
|
||||||
control_additional = (byte) -1;
|
control_additional = (byte) -1;
|
||||||
connections = 0;
|
connections = 0;
|
||||||
feedback = true; // for now
|
feedback = true; // for now
|
||||||
|
|
||||||
/* use channel 0 ("1") as the initial channel */
|
/* use channel 0 ("1") as the initial channel */
|
||||||
|
|
||||||
midi_rebind (0);
|
midi_rebind (0);
|
||||||
|
|
@ -59,18 +59,18 @@ MIDIControllable::midi_forget ()
|
||||||
/* stop listening for incoming messages, but retain
|
/* stop listening for incoming messages, but retain
|
||||||
our existing event + type information.
|
our existing event + type information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (connections > 0) {
|
if (connections > 0) {
|
||||||
midi_sense_connection[0].disconnect ();
|
midi_sense_connection[0].disconnect ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (connections > 1) {
|
if (connections > 1) {
|
||||||
midi_sense_connection[1].disconnect ();
|
midi_sense_connection[1].disconnect ();
|
||||||
}
|
}
|
||||||
|
|
||||||
connections = 0;
|
connections = 0;
|
||||||
midi_learn_connection.disconnect ();
|
midi_learn_connection.disconnect ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -101,7 +101,7 @@ MIDIControllable::drop_external_control ()
|
||||||
{
|
{
|
||||||
if (connections > 0) {
|
if (connections > 0) {
|
||||||
midi_sense_connection[0].disconnect ();
|
midi_sense_connection[0].disconnect ();
|
||||||
}
|
}
|
||||||
if (connections > 1) {
|
if (connections > 1) {
|
||||||
midi_sense_connection[1].disconnect ();
|
midi_sense_connection[1].disconnect ();
|
||||||
}
|
}
|
||||||
|
|
@ -147,14 +147,14 @@ MIDIControllable::midi_to_control(float val)
|
||||||
return val / midi_range * control_range + control_min;
|
return val / midi_range * control_range + control_min;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MIDIControllable::midi_sense_note_on (Parser &p, EventTwoBytes *tb)
|
MIDIControllable::midi_sense_note_on (Parser &p, EventTwoBytes *tb)
|
||||||
{
|
{
|
||||||
midi_sense_note (p, tb, true);
|
midi_sense_note (p, tb, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MIDIControllable::midi_sense_note_off (Parser &p, EventTwoBytes *tb)
|
MIDIControllable::midi_sense_note_off (Parser &p, EventTwoBytes *tb)
|
||||||
{
|
{
|
||||||
midi_sense_note (p, tb, false);
|
midi_sense_note (p, tb, false);
|
||||||
}
|
}
|
||||||
|
|
@ -168,7 +168,7 @@ MIDIControllable::midi_sense_note (Parser &, EventTwoBytes *msg, bool is_on)
|
||||||
|
|
||||||
/* Note: parser handles the use of zero velocity to
|
/* Note: parser handles the use of zero velocity to
|
||||||
mean note off. if we get called with is_on=true, then we
|
mean note off. if we get called with is_on=true, then we
|
||||||
got a *real* note on.
|
got a *real* note on.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (msg->note_number == control_additional) {
|
if (msg->note_number == control_additional) {
|
||||||
|
|
@ -209,7 +209,7 @@ MIDIControllable::midi_sense_program_change (Parser &, byte msg)
|
||||||
if (!bistate) {
|
if (!bistate) {
|
||||||
controllable.set_value (msg/127.0);
|
controllable.set_value (msg/127.0);
|
||||||
last_value = (MIDI::byte) (controllable.get_value() * 127.0); // to prevent feedback fights
|
last_value = (MIDI::byte) (controllable.get_value() * 127.0); // to prevent feedback fights
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -221,7 +221,7 @@ MIDIControllable::midi_sense_pitchbend (Parser &, pitchbend_t pb)
|
||||||
|
|
||||||
controllable.set_value ((pb/(float) SHRT_MAX));
|
controllable.set_value ((pb/(float) SHRT_MAX));
|
||||||
last_value = (MIDI::byte) (controllable.get_value() * 127.0); // to prevent feedback fights
|
last_value = (MIDI::byte) (controllable.get_value() * 127.0); // to prevent feedback fights
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MIDIControllable::midi_receiver (Parser &, byte *msg, size_t /*len*/)
|
MIDIControllable::midi_receiver (Parser &, byte *msg, size_t /*len*/)
|
||||||
|
|
@ -257,7 +257,7 @@ MIDIControllable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional)
|
||||||
if (_port.input() == 0) {
|
if (_port.input() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Parser& p = *_port.input();
|
Parser& p = *_port.input();
|
||||||
|
|
||||||
int chn_i = chn;
|
int chn_i = chn;
|
||||||
|
|
@ -284,7 +284,7 @@ MIDIControllable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional)
|
||||||
midi_sense_connection[0] = p.channel_note_on[chn_i].connect
|
midi_sense_connection[0] = p.channel_note_on[chn_i].connect
|
||||||
(mem_fun (*this, &MIDIControllable::midi_sense_note_on));
|
(mem_fun (*this, &MIDIControllable::midi_sense_note_on));
|
||||||
if (bistate) {
|
if (bistate) {
|
||||||
midi_sense_connection[1] = p.channel_note_off[chn_i].connect
|
midi_sense_connection[1] = p.channel_note_off[chn_i].connect
|
||||||
(mem_fun (*this, &MIDIControllable::midi_sense_note_off));
|
(mem_fun (*this, &MIDIControllable::midi_sense_note_off));
|
||||||
connections = 2;
|
connections = 2;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -294,7 +294,7 @@ MIDIControllable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MIDI::controller:
|
case MIDI::controller:
|
||||||
midi_sense_connection[0] = p.channel_controller[chn_i].connect
|
midi_sense_connection[0] = p.channel_controller[chn_i].connect
|
||||||
(mem_fun (*this, &MIDIControllable::midi_sense_controller));
|
(mem_fun (*this, &MIDIControllable::midi_sense_controller));
|
||||||
connections = 1;
|
connections = 1;
|
||||||
snprintf (buf, sizeof (buf), "MIDI control: Controller %d", control_additional);
|
snprintf (buf, sizeof (buf), "MIDI control: Controller %d", control_additional);
|
||||||
|
|
@ -304,7 +304,7 @@ MIDIControllable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional)
|
||||||
case MIDI::program:
|
case MIDI::program:
|
||||||
if (!bistate) {
|
if (!bistate) {
|
||||||
midi_sense_connection[0] = p.channel_program_change[chn_i].connect
|
midi_sense_connection[0] = p.channel_program_change[chn_i].connect
|
||||||
(mem_fun (*this,
|
(mem_fun (*this,
|
||||||
&MIDIControllable::midi_sense_program_change));
|
&MIDIControllable::midi_sense_program_change));
|
||||||
connections = 1;
|
connections = 1;
|
||||||
_control_description = "MIDI control: ProgramChange";
|
_control_description = "MIDI control: ProgramChange";
|
||||||
|
|
@ -334,7 +334,7 @@ MIDIControllable::send_feedback ()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
msg[0] = (control_type & 0xF0) | (control_channel & 0xF);
|
msg[0] = (control_type & 0xF0) | (control_channel & 0xF);
|
||||||
msg[1] = control_additional;
|
msg[1] = control_additional;
|
||||||
msg[2] = (byte) (control_to_midi(controllable.get_value()));
|
msg[2] = (byte) (control_to_midi(controllable.get_value()));
|
||||||
|
|
||||||
|
|
@ -345,9 +345,9 @@ MIDI::byte*
|
||||||
MIDIControllable::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool /*force*/)
|
MIDIControllable::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool /*force*/)
|
||||||
{
|
{
|
||||||
if (control_type != none && feedback && bufsize > 2) {
|
if (control_type != none && feedback && bufsize > 2) {
|
||||||
|
|
||||||
MIDI::byte gm = (MIDI::byte) (control_to_midi(controllable.get_value()));
|
MIDI::byte gm = (MIDI::byte) (control_to_midi(controllable.get_value()));
|
||||||
|
|
||||||
if (gm != last_value) {
|
if (gm != last_value) {
|
||||||
*buf++ = (0xF0 & control_type) | (0xF & control_channel);
|
*buf++ = (0xF0 & control_type) | (0xF & control_channel);
|
||||||
*buf++ = control_additional; /* controller number */
|
*buf++ = control_additional; /* controller number */
|
||||||
|
|
@ -356,12 +356,12 @@ MIDIControllable::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool /*forc
|
||||||
bufsize -= 3;
|
bufsize -= 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
MIDIControllable::set_state (const XMLNode& node, int version)
|
MIDIControllable::set_state (const XMLNode& node, int /*version*/)
|
||||||
{
|
{
|
||||||
const XMLProperty* prop;
|
const XMLProperty* prop;
|
||||||
int xx;
|
int xx;
|
||||||
|
|
@ -394,7 +394,7 @@ MIDIControllable::set_state (const XMLNode& node, int version)
|
||||||
}
|
}
|
||||||
|
|
||||||
bind_midi (control_channel, control_type, control_additional);
|
bind_midi (control_channel, control_type, control_additional);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ MackiePort & MackieControlProtocol::port_for_id( uint32_t index )
|
||||||
current_max += (*it)->strips();
|
current_max += (*it)->strips();
|
||||||
if ( index < current_max ) return **it;
|
if ( index < current_max ) return **it;
|
||||||
}
|
}
|
||||||
|
|
||||||
// oops - no matching port
|
// oops - no matching port
|
||||||
ostringstream os;
|
ostringstream os;
|
||||||
os << "No port for index " << index;
|
os << "No port for index " << index;
|
||||||
|
|
@ -216,15 +216,15 @@ struct RouteByRemoteId
|
||||||
MackieControlProtocol::Sorted MackieControlProtocol::get_sorted_routes()
|
MackieControlProtocol::Sorted MackieControlProtocol::get_sorted_routes()
|
||||||
{
|
{
|
||||||
Sorted sorted;
|
Sorted sorted;
|
||||||
|
|
||||||
// fetch all routes
|
// fetch all routes
|
||||||
boost::shared_ptr<RouteList> routes = session->get_routes();
|
boost::shared_ptr<RouteList> routes = session->get_routes();
|
||||||
set<uint32_t> remote_ids;
|
set<uint32_t> remote_ids;
|
||||||
|
|
||||||
// routes with remote_id 0 should never be added
|
// routes with remote_id 0 should never be added
|
||||||
// TODO verify this with ardour devs
|
// TODO verify this with ardour devs
|
||||||
// remote_ids.insert( 0 );
|
// remote_ids.insert( 0 );
|
||||||
|
|
||||||
// sort in remote_id order, and exclude master, control and hidden routes
|
// sort in remote_id order, and exclude master, control and hidden routes
|
||||||
// and any routes that are already set.
|
// and any routes that are already set.
|
||||||
for (RouteList::iterator it = routes->begin(); it != routes->end(); ++it )
|
for (RouteList::iterator it = routes->begin(); it != routes->end(); ++it )
|
||||||
|
|
@ -255,7 +255,7 @@ void MackieControlProtocol::switch_banks( int initial )
|
||||||
{
|
{
|
||||||
// DON'T prevent bank switch if initial == _current_initial_bank
|
// DON'T prevent bank switch if initial == _current_initial_bank
|
||||||
// because then this method can't be used as a refresh
|
// because then this method can't be used as a refresh
|
||||||
|
|
||||||
// sanity checking
|
// sanity checking
|
||||||
Sorted sorted = get_sorted_routes();
|
Sorted sorted = get_sorted_routes();
|
||||||
int delta = sorted.size() - route_table.size();
|
int delta = sorted.size() - route_table.size();
|
||||||
|
|
@ -267,11 +267,11 @@ void MackieControlProtocol::switch_banks( int initial )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_current_initial_bank = initial;
|
_current_initial_bank = initial;
|
||||||
|
|
||||||
// first clear the signals from old routes
|
// first clear the signals from old routes
|
||||||
// taken care of by the RouteSignal destructors
|
// taken care of by the RouteSignal destructors
|
||||||
clear_route_signals();
|
clear_route_signals();
|
||||||
|
|
||||||
// now set the signals for new routes
|
// now set the signals for new routes
|
||||||
if ( _current_initial_bank <= sorted.size() )
|
if ( _current_initial_bank <= sorted.size() )
|
||||||
{
|
{
|
||||||
|
|
@ -282,7 +282,7 @@ void MackieControlProtocol::switch_banks( int initial )
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cout << "switch to " << _current_initial_bank << ", " << end_pos << endl;
|
cout << "switch to " << _current_initial_bank << ", " << end_pos << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// link routes to strips
|
// link routes to strips
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
for ( ; it != end && it != sorted.end(); ++it, ++i )
|
for ( ; it != end && it != sorted.end(); ++it, ++i )
|
||||||
|
|
@ -298,7 +298,7 @@ void MackieControlProtocol::switch_banks( int initial )
|
||||||
// update strip from route
|
// update strip from route
|
||||||
rs->notify_all();
|
rs->notify_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
// create dead strips if there aren't enough routes to
|
// create dead strips if there aren't enough routes to
|
||||||
// fill a bank
|
// fill a bank
|
||||||
for ( ; i < route_table.size(); ++i )
|
for ( ; i < route_table.size(); ++i )
|
||||||
|
|
@ -309,7 +309,7 @@ void MackieControlProtocol::switch_banks( int initial )
|
||||||
port.write( builder.zero_strip( port, strip ) );
|
port.write( builder.zero_strip( port, strip ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// display the current start bank.
|
// display the current start bank.
|
||||||
surface().display_bank_start( mcu_port(), builder, _current_initial_bank );
|
surface().display_bank_start( mcu_port(), builder, _current_initial_bank );
|
||||||
}
|
}
|
||||||
|
|
@ -317,17 +317,17 @@ void MackieControlProtocol::switch_banks( int initial )
|
||||||
void MackieControlProtocol::zero_all()
|
void MackieControlProtocol::zero_all()
|
||||||
{
|
{
|
||||||
// TODO turn off SMPTE displays
|
// TODO turn off SMPTE displays
|
||||||
|
|
||||||
// zero all strips
|
// zero all strips
|
||||||
for ( Surface::Strips::iterator it = surface().strips.begin(); it != surface().strips.end(); ++it )
|
for ( Surface::Strips::iterator it = surface().strips.begin(); it != surface().strips.end(); ++it )
|
||||||
{
|
{
|
||||||
MackiePort & port = port_for_id( (*it)->index() );
|
MackiePort & port = port_for_id( (*it)->index() );
|
||||||
port.write( builder.zero_strip( port, **it ) );
|
port.write( builder.zero_strip( port, **it ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// and the master strip
|
// and the master strip
|
||||||
mcu_port().write( builder.zero_strip( dynamic_cast<MackiePort&>( mcu_port() ), master_strip() ) );
|
mcu_port().write( builder.zero_strip( dynamic_cast<MackiePort&>( mcu_port() ), master_strip() ) );
|
||||||
|
|
||||||
// turn off global buttons and leds
|
// turn off global buttons and leds
|
||||||
// global buttons are only ever on mcu_port, so we don't have
|
// global buttons are only ever on mcu_port, so we don't have
|
||||||
// to figure out which port.
|
// to figure out which port.
|
||||||
|
|
@ -355,29 +355,29 @@ int MackieControlProtocol::set_active( bool yn )
|
||||||
if ( yn )
|
if ( yn )
|
||||||
{
|
{
|
||||||
// TODO what happens if this fails half way?
|
// TODO what happens if this fails half way?
|
||||||
|
|
||||||
// create MackiePorts
|
// create MackiePorts
|
||||||
{
|
{
|
||||||
Glib::Mutex::Lock lock( update_mutex );
|
Glib::Mutex::Lock lock( update_mutex );
|
||||||
create_ports();
|
create_ports();
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure the ports are being listened to
|
// make sure the ports are being listened to
|
||||||
update_ports();
|
update_ports();
|
||||||
|
|
||||||
// wait until poll thread is running, with ports to poll
|
// wait until poll thread is running, with ports to poll
|
||||||
// the mutex is only there because conditions require a mutex
|
// the mutex is only there because conditions require a mutex
|
||||||
{
|
{
|
||||||
Glib::Mutex::Lock lock( update_mutex );
|
Glib::Mutex::Lock lock( update_mutex );
|
||||||
while ( nfds == 0 ) update_cond.wait( update_mutex );
|
while ( nfds == 0 ) update_cond.wait( update_mutex );
|
||||||
}
|
}
|
||||||
|
|
||||||
// now initialise MackiePorts - ie exchange sysex messages
|
// now initialise MackiePorts - ie exchange sysex messages
|
||||||
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
||||||
{
|
{
|
||||||
(*it)->open();
|
(*it)->open();
|
||||||
}
|
}
|
||||||
|
|
||||||
// wait until all ports are active
|
// wait until all ports are active
|
||||||
// TODO a more sophisticated approach would
|
// TODO a more sophisticated approach would
|
||||||
// allow things to start up with only an MCU, even if
|
// allow things to start up with only an MCU, even if
|
||||||
|
|
@ -386,15 +386,15 @@ int MackieControlProtocol::set_active( bool yn )
|
||||||
{
|
{
|
||||||
(*it)->wait_for_init();
|
(*it)->wait_for_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// create surface object. This depends on the ports being
|
// create surface object. This depends on the ports being
|
||||||
// correctly initialised
|
// correctly initialised
|
||||||
initialize_surface();
|
initialize_surface();
|
||||||
connect_session_signals();
|
connect_session_signals();
|
||||||
|
|
||||||
// yeehah!
|
// yeehah!
|
||||||
_active = true;
|
_active = true;
|
||||||
|
|
||||||
// send current control positions to surface
|
// send current control positions to surface
|
||||||
// must come after _active = true otherwise it won't run
|
// must come after _active = true otherwise it won't run
|
||||||
update_surface();
|
update_surface();
|
||||||
|
|
@ -450,13 +450,13 @@ bool MackieControlProtocol::handle_strip_button( Control & control, ButtonState
|
||||||
//state = default_button_press( dynamic_cast<Button&>( control ) );
|
//state = default_button_press( dynamic_cast<Button&>( control ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( control.name() == "fader_touch" )
|
if ( control.name() == "fader_touch" )
|
||||||
{
|
{
|
||||||
state = bs == press;
|
state = bs == press;
|
||||||
control.strip().gain().in_use( state );
|
control.strip().gain().in_use( state );
|
||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -541,7 +541,7 @@ void MackieControlProtocol::update_surface()
|
||||||
// do the initial bank switch to connect signals
|
// do the initial bank switch to connect signals
|
||||||
// _current_initial_bank is initialised by set_state
|
// _current_initial_bank is initialised by set_state
|
||||||
switch_banks( _current_initial_bank );
|
switch_banks( _current_initial_bank );
|
||||||
|
|
||||||
// create a RouteSignal for the master route
|
// create a RouteSignal for the master route
|
||||||
|
|
||||||
boost::shared_ptr<Route> mr = master_route ();
|
boost::shared_ptr<Route> mr = master_route ();
|
||||||
|
|
@ -550,10 +550,10 @@ void MackieControlProtocol::update_surface()
|
||||||
// update strip from route
|
// update strip from route
|
||||||
master_route_signal->notify_all();
|
master_route_signal->notify_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
// sometimes the jog wheel is a pot
|
// sometimes the jog wheel is a pot
|
||||||
surface().blank_jog_ring( mcu_port(), builder );
|
surface().blank_jog_ring( mcu_port(), builder );
|
||||||
|
|
||||||
// update global buttons and displays
|
// update global buttons and displays
|
||||||
notify_record_state_changed();
|
notify_record_state_changed();
|
||||||
notify_transport_state_changed();
|
notify_transport_state_changed();
|
||||||
|
|
@ -574,7 +574,7 @@ void MackieControlProtocol::connect_session_signals()
|
||||||
session->config.ParameterChanged.connect ( ( mem_fun (*this, &MackieControlProtocol::notify_parameter_changed) ) );
|
session->config.ParameterChanged.connect ( ( mem_fun (*this, &MackieControlProtocol::notify_parameter_changed) ) );
|
||||||
// receive rude solo changed
|
// receive rude solo changed
|
||||||
connections_back = session->SoloActive.connect( ( mem_fun (*this, &MackieControlProtocol::notify_solo_active_changed) ) );
|
connections_back = session->SoloActive.connect( ( mem_fun (*this, &MackieControlProtocol::notify_solo_active_changed) ) );
|
||||||
|
|
||||||
// make sure remote id changed signals reach here
|
// make sure remote id changed signals reach here
|
||||||
// see also notify_route_added
|
// see also notify_route_added
|
||||||
Sorted sorted = get_sorted_routes();
|
Sorted sorted = get_sorted_routes();
|
||||||
|
|
@ -603,7 +603,7 @@ void MackieControlProtocol::add_port( MIDI::Port & midi_port, int number )
|
||||||
{
|
{
|
||||||
MackiePort * sport = new MackiePort( *this, midi_port, number );
|
MackiePort * sport = new MackiePort( *this, midi_port, number );
|
||||||
_ports.push_back( sport );
|
_ports.push_back( sport );
|
||||||
|
|
||||||
connections_back = sport->init_event.connect(
|
connections_back = sport->init_event.connect(
|
||||||
sigc::bind (
|
sigc::bind (
|
||||||
mem_fun (*this, &MackieControlProtocol::handle_port_init)
|
mem_fun (*this, &MackieControlProtocol::handle_port_init)
|
||||||
|
|
@ -624,7 +624,7 @@ void MackieControlProtocol::add_port( MIDI::Port & midi_port, int number )
|
||||||
, sport
|
, sport
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
_ports_changed = true;
|
_ports_changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -645,7 +645,7 @@ void MackieControlProtocol::create_ports()
|
||||||
}
|
}
|
||||||
add_port( *midi_port, 0 );
|
add_port( *midi_port, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// open extender ports. Up to 9. Should be enough.
|
// open extender ports. Up to 9. Should be enough.
|
||||||
// could also use mm->get_midi_ports()
|
// could also use mm->get_midi_ports()
|
||||||
string ext_port_base = "mcu_xt_";
|
string ext_port_base = "mcu_xt_";
|
||||||
|
|
@ -676,9 +676,9 @@ void MackieControlProtocol::initialize_surface()
|
||||||
{
|
{
|
||||||
strips += (*it)->strips();
|
strips += (*it)->strips();
|
||||||
}
|
}
|
||||||
|
|
||||||
set_route_table_size( strips );
|
set_route_table_size( strips );
|
||||||
|
|
||||||
// TODO same as code in mackie_port.cc
|
// TODO same as code in mackie_port.cc
|
||||||
string emulation = ARDOUR::Config->get_mackie_emulation();
|
string emulation = ARDOUR::Config->get_mackie_emulation();
|
||||||
if ( emulation == "bcf" )
|
if ( emulation == "bcf" )
|
||||||
|
|
@ -697,7 +697,7 @@ void MackieControlProtocol::initialize_surface()
|
||||||
}
|
}
|
||||||
|
|
||||||
_surface->init();
|
_surface->init();
|
||||||
|
|
||||||
// Connect events. Must be after route table otherwise there will be trouble
|
// Connect events. Must be after route table otherwise there will be trouble
|
||||||
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
||||||
{
|
{
|
||||||
|
|
@ -712,10 +712,10 @@ void MackieControlProtocol::close()
|
||||||
// calls methods on objects that are deleted
|
// calls methods on objects that are deleted
|
||||||
_polling = false;
|
_polling = false;
|
||||||
pthread_join( thread, 0 );
|
pthread_join( thread, 0 );
|
||||||
|
|
||||||
// TODO disconnect port active/inactive signals
|
// TODO disconnect port active/inactive signals
|
||||||
// Or at least put a lock here
|
// Or at least put a lock here
|
||||||
|
|
||||||
// disconnect global signals from Session
|
// disconnect global signals from Session
|
||||||
// TODO Since *this is a sigc::trackable, this shouldn't be necessary
|
// TODO Since *this is a sigc::trackable, this shouldn't be necessary
|
||||||
// but it is for some reason
|
// but it is for some reason
|
||||||
|
|
@ -725,7 +725,7 @@ void MackieControlProtocol::close()
|
||||||
it->disconnect();
|
it->disconnect();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( _surface != 0 )
|
if ( _surface != 0 )
|
||||||
{
|
{
|
||||||
// These will fail if the port has gone away.
|
// These will fail if the port has gone away.
|
||||||
|
|
@ -742,7 +742,7 @@ void MackieControlProtocol::close()
|
||||||
cout << "MackieControlProtocol::close caught exception: " << e.what() << endl;
|
cout << "MackieControlProtocol::close caught exception: " << e.what() << endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
@ -762,21 +762,21 @@ void MackieControlProtocol::close()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// disconnect routes from strips
|
// disconnect routes from strips
|
||||||
clear_route_signals();
|
clear_route_signals();
|
||||||
|
|
||||||
delete _surface;
|
delete _surface;
|
||||||
_surface = 0;
|
_surface = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// shut down MackiePorts
|
// shut down MackiePorts
|
||||||
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
for( MackiePorts::iterator it = _ports.begin(); it != _ports.end(); ++it )
|
||||||
{
|
{
|
||||||
delete *it;
|
delete *it;
|
||||||
}
|
}
|
||||||
_ports.clear();
|
_ports.clear();
|
||||||
|
|
||||||
// this is done already in monitor_work. But it's here so we know.
|
// this is done already in monitor_work. But it's here so we know.
|
||||||
delete[] pfd;
|
delete[] pfd;
|
||||||
pfd = 0;
|
pfd = 0;
|
||||||
|
|
@ -793,26 +793,26 @@ XMLNode & MackieControlProtocol::get_state()
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cout << "MackieControlProtocol::get_state" << endl;
|
cout << "MackieControlProtocol::get_state" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// add name of protocol
|
// add name of protocol
|
||||||
XMLNode* node = new XMLNode( X_("Protocol") );
|
XMLNode* node = new XMLNode( X_("Protocol") );
|
||||||
node->add_property( X_("name"), _name );
|
node->add_property( X_("name"), _name );
|
||||||
|
|
||||||
// add current bank
|
// add current bank
|
||||||
ostringstream os;
|
ostringstream os;
|
||||||
os << _current_initial_bank;
|
os << _current_initial_bank;
|
||||||
node->add_property( X_("bank"), os.str() );
|
node->add_property( X_("bank"), os.str() );
|
||||||
|
|
||||||
return *node;
|
return *node;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MackieControlProtocol::set_state (const XMLNode & node, int version)
|
int MackieControlProtocol::set_state (const XMLNode & node, int /*version*/)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cout << "MackieControlProtocol::set_state: active " << _active << endl;
|
cout << "MackieControlProtocol::set_state: active " << _active << endl;
|
||||||
#endif
|
#endif
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
|
||||||
// fetch current bank
|
// fetch current bank
|
||||||
if ( node.property( X_("bank") ) != 0 )
|
if ( node.property( X_("bank") ) != 0 )
|
||||||
{
|
{
|
||||||
|
|
@ -831,7 +831,7 @@ int MackieControlProtocol::set_state (const XMLNode & node, int version)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -854,7 +854,7 @@ void MackieControlProtocol::handle_control_event( SurfacePort & port, Control &
|
||||||
cerr << "Warning: index is " << index << " which is not in the route table, size: " << route_table.size() << endl;
|
cerr << "Warning: index is " << index << " which is not in the route table, size: " << route_table.size() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This handles control element events from the surface
|
// This handles control element events from the surface
|
||||||
// the state of the controls on the surface is usually updated
|
// the state of the controls on the surface is usually updated
|
||||||
// from UI events.
|
// from UI events.
|
||||||
|
|
@ -867,14 +867,14 @@ void MackieControlProtocol::handle_control_event( SurfacePort & port, Control &
|
||||||
if ( route != 0 )
|
if ( route != 0 )
|
||||||
{
|
{
|
||||||
route->gain_control()->set_value( state.pos );
|
route->gain_control()->set_value( state.pos );
|
||||||
|
|
||||||
// must echo bytes back to slider now, because
|
// must echo bytes back to slider now, because
|
||||||
// the notifier only works if the fader is not being
|
// the notifier only works if the fader is not being
|
||||||
// touched. Which it is if we're getting input.
|
// touched. Which it is if we're getting input.
|
||||||
port.write( builder.build_fader( (Fader&)control, state.pos ) );
|
port.write( builder.build_fader( (Fader&)control, state.pos ) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Control::type_button:
|
case Control::type_button:
|
||||||
if ( control.group().is_strip() )
|
if ( control.group().is_strip() )
|
||||||
{
|
{
|
||||||
|
|
@ -904,7 +904,7 @@ void MackieControlProtocol::handle_control_event( SurfacePort & port, Control &
|
||||||
surface().handle_button( *this, state.button_state, dynamic_cast<Button&>( control ) );
|
surface().handle_button( *this, state.button_state, dynamic_cast<Button&>( control ) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// pot (jog wheel, external control)
|
// pot (jog wheel, external control)
|
||||||
case Control::type_pot:
|
case Control::type_pot:
|
||||||
if ( control.group().is_strip() )
|
if ( control.group().is_strip() )
|
||||||
|
|
@ -917,14 +917,14 @@ void MackieControlProtocol::handle_control_event( SurfacePort & port, Control &
|
||||||
// assume pan for now
|
// assume pan for now
|
||||||
float xpos;
|
float xpos;
|
||||||
route->panner()->streampanner (0).get_effective_position (xpos);
|
route->panner()->streampanner (0).get_effective_position (xpos);
|
||||||
|
|
||||||
// calculate new value, and trim
|
// calculate new value, and trim
|
||||||
xpos += state.delta * state.sign;
|
xpos += state.delta * state.sign;
|
||||||
if ( xpos > 1.0 )
|
if ( xpos > 1.0 )
|
||||||
xpos = 1.0;
|
xpos = 1.0;
|
||||||
else if ( xpos < 0.0 )
|
else if ( xpos < 0.0 )
|
||||||
xpos = 0.0;
|
xpos = 0.0;
|
||||||
|
|
||||||
route->panner()->streampanner (0).set_position( xpos );
|
route->panner()->streampanner (0).set_position( xpos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -946,7 +946,7 @@ void MackieControlProtocol::handle_control_event( SurfacePort & port, Control &
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
cout << "Control::type not handled: " << control.type() << endl;
|
cout << "Control::type not handled: " << control.type() << endl;
|
||||||
}
|
}
|
||||||
|
|
@ -1012,7 +1012,7 @@ void MackieControlProtocol::notify_active_changed (RouteSignal *)
|
||||||
cout << e.what() << endl;
|
cout << e.what() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MackieControlProtocol::notify_gain_changed( RouteSignal * route_signal, bool force_update )
|
void MackieControlProtocol::notify_gain_changed( RouteSignal * route_signal, bool force_update )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
@ -1044,7 +1044,7 @@ void MackieControlProtocol::notify_name_changed( RouteSignal * route_signal )
|
||||||
{
|
{
|
||||||
string line1;
|
string line1;
|
||||||
string fullname = route_signal->route()->name();
|
string fullname = route_signal->route()->name();
|
||||||
|
|
||||||
if ( fullname.length() <= 6 )
|
if ( fullname.length() <= 6 )
|
||||||
{
|
{
|
||||||
line1 = fullname;
|
line1 = fullname;
|
||||||
|
|
@ -1053,7 +1053,7 @@ void MackieControlProtocol::notify_name_changed( RouteSignal * route_signal )
|
||||||
{
|
{
|
||||||
line1 = PBD::short_version( fullname, 6 );
|
line1 = PBD::short_version( fullname, 6 );
|
||||||
}
|
}
|
||||||
|
|
||||||
SurfacePort & port = route_signal->port();
|
SurfacePort & port = route_signal->port();
|
||||||
port.write( builder.strip_display( port, strip, 0, line1 ) );
|
port.write( builder.strip_display( port, strip, 0, line1 ) );
|
||||||
port.write( builder.strip_display_blank( port, strip, 1 ) );
|
port.write( builder.strip_display_blank( port, strip, 1 ) );
|
||||||
|
|
@ -1075,7 +1075,7 @@ void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal, b
|
||||||
{
|
{
|
||||||
float pos;
|
float pos;
|
||||||
route_signal->route()->panner()->streampanner(0).get_effective_position( pos );
|
route_signal->route()->panner()->streampanner(0).get_effective_position( pos );
|
||||||
|
|
||||||
// cache the MidiByteArray here, because the mackie led control is much lower
|
// cache the MidiByteArray here, because the mackie led control is much lower
|
||||||
// resolution than the panner control. So we save lots of byte
|
// resolution than the panner control. So we save lots of byte
|
||||||
// sends in spite of more work on the comparison
|
// sends in spite of more work on the comparison
|
||||||
|
|
@ -1106,7 +1106,7 @@ void MackieControlProtocol::update_automation( RouteSignal & rs )
|
||||||
{
|
{
|
||||||
notify_gain_changed( &rs, false );
|
notify_gain_changed( &rs, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( rs.route()->panner() ) {
|
if ( rs.route()->panner() ) {
|
||||||
ARDOUR::AutoState panner_state = rs.route()->panner()->automation_state();
|
ARDOUR::AutoState panner_state = rs.route()->panner()->automation_state();
|
||||||
if ( panner_state == Touch || panner_state == Play )
|
if ( panner_state == Touch || panner_state == Play )
|
||||||
|
|
@ -1121,14 +1121,14 @@ string MackieControlProtocol::format_bbt_timecode( nframes_t now_frame )
|
||||||
{
|
{
|
||||||
BBT_Time bbt_time;
|
BBT_Time bbt_time;
|
||||||
session->bbt_time( now_frame, bbt_time );
|
session->bbt_time( now_frame, bbt_time );
|
||||||
|
|
||||||
// According to the Logic docs
|
// According to the Logic docs
|
||||||
// digits: 888/88/88/888
|
// digits: 888/88/88/888
|
||||||
// BBT mode: Bars/Beats/Subdivisions/Ticks
|
// BBT mode: Bars/Beats/Subdivisions/Ticks
|
||||||
ostringstream os;
|
ostringstream os;
|
||||||
os << setw(3) << setfill('0') << bbt_time.bars;
|
os << setw(3) << setfill('0') << bbt_time.bars;
|
||||||
os << setw(2) << setfill('0') << bbt_time.beats;
|
os << setw(2) << setfill('0') << bbt_time.beats;
|
||||||
|
|
||||||
// figure out subdivisions per beat
|
// figure out subdivisions per beat
|
||||||
const Meter & meter = session->tempo_map().meter_at( now_frame );
|
const Meter & meter = session->tempo_map().meter_at( now_frame );
|
||||||
int subdiv = 2;
|
int subdiv = 2;
|
||||||
|
|
@ -1136,13 +1136,13 @@ string MackieControlProtocol::format_bbt_timecode( nframes_t now_frame )
|
||||||
{
|
{
|
||||||
subdiv = 3;
|
subdiv = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t subdivisions = bbt_time.ticks / uint32_t( Meter::ticks_per_beat / subdiv );
|
uint32_t subdivisions = bbt_time.ticks / uint32_t( Meter::ticks_per_beat / subdiv );
|
||||||
uint32_t ticks = bbt_time.ticks % uint32_t( Meter::ticks_per_beat / subdiv );
|
uint32_t ticks = bbt_time.ticks % uint32_t( Meter::ticks_per_beat / subdiv );
|
||||||
|
|
||||||
os << setw(2) << setfill('0') << subdivisions + 1;
|
os << setw(2) << setfill('0') << subdivisions + 1;
|
||||||
os << setw(3) << setfill('0') << ticks;
|
os << setw(3) << setfill('0') << ticks;
|
||||||
|
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1159,7 +1159,7 @@ string MackieControlProtocol::format_smpte_timecode( nframes_t now_frame )
|
||||||
os << setw(2) << setfill('0') << smpte.minutes;
|
os << setw(2) << setfill('0') << smpte.minutes;
|
||||||
os << setw(2) << setfill('0') << smpte.seconds;
|
os << setw(2) << setfill('0') << smpte.seconds;
|
||||||
os << setw(3) << setfill('0') << smpte.frames;
|
os << setw(3) << setfill('0') << smpte.frames;
|
||||||
|
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1170,7 +1170,7 @@ void MackieControlProtocol::update_timecode_display()
|
||||||
// do assignment here so current_frame is fixed
|
// do assignment here so current_frame is fixed
|
||||||
nframes_t current_frame = session->transport_frame();
|
nframes_t current_frame = session->transport_frame();
|
||||||
string timecode;
|
string timecode;
|
||||||
|
|
||||||
switch ( _timecode_type )
|
switch ( _timecode_type )
|
||||||
{
|
{
|
||||||
case ARDOUR::AnyTime::BBT:
|
case ARDOUR::AnyTime::BBT:
|
||||||
|
|
@ -1183,8 +1183,8 @@ void MackieControlProtocol::update_timecode_display()
|
||||||
ostringstream os;
|
ostringstream os;
|
||||||
os << "Unknown timecode: " << _timecode_type;
|
os << "Unknown timecode: " << _timecode_type;
|
||||||
throw runtime_error( os.str() );
|
throw runtime_error( os.str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// only write the timecode string to the MCU if it's changed
|
// only write the timecode string to the MCU if it's changed
|
||||||
// since last time. This is to reduce midi bandwidth used.
|
// since last time. This is to reduce midi bandwidth used.
|
||||||
if ( timecode != _timecode_last )
|
if ( timecode != _timecode_last )
|
||||||
|
|
@ -1204,15 +1204,15 @@ void MackieControlProtocol::poll_session_data()
|
||||||
{
|
{
|
||||||
update_automation( **it );
|
update_automation( **it );
|
||||||
}
|
}
|
||||||
|
|
||||||
// and the master strip
|
// and the master strip
|
||||||
if ( master_route_signal != 0 )
|
if ( master_route_signal != 0 )
|
||||||
{
|
{
|
||||||
update_automation( *master_route_signal );
|
update_automation( *master_route_signal );
|
||||||
}
|
}
|
||||||
|
|
||||||
update_timecode_display();
|
update_timecode_display();
|
||||||
|
|
||||||
_automation_last.start();
|
_automation_last.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1225,12 +1225,12 @@ LedState MackieControlProtocol::frm_left_press (Button &)
|
||||||
{
|
{
|
||||||
// can use first_mark_before/after as well
|
// can use first_mark_before/after as well
|
||||||
unsigned long elapsed = _frm_left_last.restart();
|
unsigned long elapsed = _frm_left_last.restart();
|
||||||
|
|
||||||
Location * loc = session->locations()->first_location_before (
|
Location * loc = session->locations()->first_location_before (
|
||||||
session->transport_frame()
|
session->transport_frame()
|
||||||
);
|
);
|
||||||
|
|
||||||
// allow a quick double to go past a previous mark
|
// allow a quick double to go past a previous mark
|
||||||
if ( session->transport_rolling() && elapsed < 500 && loc != 0 )
|
if ( session->transport_rolling() && elapsed < 500 && loc != 0 )
|
||||||
{
|
{
|
||||||
Location * loc_two_back = session->locations()->first_location_before ( loc->start() );
|
Location * loc_two_back = session->locations()->first_location_before ( loc->start() );
|
||||||
|
|
@ -1239,13 +1239,13 @@ LedState MackieControlProtocol::frm_left_press (Button &)
|
||||||
loc = loc_two_back;
|
loc = loc_two_back;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// move to the location, if it's valid
|
// move to the location, if it's valid
|
||||||
if ( loc != 0 )
|
if ( loc != 0 )
|
||||||
{
|
{
|
||||||
session->request_locate( loc->start(), session->transport_rolling() );
|
session->request_locate( loc->start(), session->transport_rolling() );
|
||||||
}
|
}
|
||||||
|
|
||||||
return on;
|
return on;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1468,7 +1468,7 @@ void MackieControlProtocol::notify_route_added( ARDOUR::RouteList & rl )
|
||||||
refresh_current_bank();
|
refresh_current_bank();
|
||||||
}
|
}
|
||||||
// otherwise route added, but current bank needs no updating
|
// otherwise route added, but current bank needs no updating
|
||||||
|
|
||||||
// make sure remote id changes in the new route are handled
|
// make sure remote id changes in the new route are handled
|
||||||
typedef ARDOUR::RouteList ARS;
|
typedef ARDOUR::RouteList ARS;
|
||||||
for ( ARS::iterator it = rl.begin(); it != rl.end(); ++it )
|
for ( ARS::iterator it = rl.begin(); it != rl.end(); ++it )
|
||||||
|
|
@ -1486,7 +1486,7 @@ void MackieControlProtocol::notify_solo_active_changed( bool active )
|
||||||
void MackieControlProtocol::notify_remote_id_changed()
|
void MackieControlProtocol::notify_remote_id_changed()
|
||||||
{
|
{
|
||||||
Sorted sorted = get_sorted_routes();
|
Sorted sorted = get_sorted_routes();
|
||||||
|
|
||||||
// if a remote id has been moved off the end, we need to shift
|
// if a remote id has been moved off the end, we need to shift
|
||||||
// the current bank backwards.
|
// the current bank backwards.
|
||||||
if ( sorted.size() - _current_initial_bank < route_signals.size() )
|
if ( sorted.size() - _current_initial_bank < route_signals.size() )
|
||||||
|
|
@ -1518,9 +1518,9 @@ void MackieControlProtocol::notify_transport_state_changed()
|
||||||
update_global_button( "play", session->transport_rolling() );
|
update_global_button( "play", session->transport_rolling() );
|
||||||
update_global_button( "stop", !session->transport_rolling() );
|
update_global_button( "stop", !session->transport_rolling() );
|
||||||
update_global_button( "loop", session->get_play_loop() );
|
update_global_button( "loop", session->get_play_loop() );
|
||||||
|
|
||||||
_transport_previously_rolling = session->transport_rolling();
|
_transport_previously_rolling = session->transport_rolling();
|
||||||
|
|
||||||
// rec is special because it's tristate
|
// rec is special because it's tristate
|
||||||
Button * rec = reinterpret_cast<Button*>( surface().controls_by_name["record"] );
|
Button * rec = reinterpret_cast<Button*>( surface().controls_by_name["record"] );
|
||||||
mcu_port().write( builder.build_led( *rec, record_release( *rec ) ) );
|
mcu_port().write( builder.build_led( *rec, record_release( *rec ) ) );
|
||||||
|
|
@ -1541,7 +1541,7 @@ LedState MackieControlProtocol::left_press (Button &)
|
||||||
session->set_dirty();
|
session->set_dirty();
|
||||||
switch_banks( new_initial );
|
switch_banks( new_initial );
|
||||||
}
|
}
|
||||||
|
|
||||||
return on;
|
return on;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1567,7 +1567,7 @@ LedState MackieControlProtocol::right_press (Button &)
|
||||||
session->set_dirty();
|
session->set_dirty();
|
||||||
switch_banks( _current_initial_bank + delta );
|
switch_banks( _current_initial_bank + delta );
|
||||||
}
|
}
|
||||||
|
|
||||||
return on;
|
return on;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue