Add support for saving/loading midi-controlled models
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1042 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -12,7 +12,6 @@
|
||||
* src/core/midi/midi_controller.cpp:
|
||||
* src/core/controller.cpp:
|
||||
* Makefile.am:
|
||||
|
||||
- Add midi-controller support
|
||||
- Code clean-up
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "controller.h"
|
||||
#include "controller_dialog.h"
|
||||
#include "lfo_controller.h"
|
||||
#include "midi_controller.h"
|
||||
|
||||
|
||||
unsigned int controller::s_frames = 0;
|
||||
@@ -154,6 +155,10 @@ controller * controller::create( ControllerTypes _ct, model * _parent )
|
||||
c = new lfoController( _parent );
|
||||
break;
|
||||
|
||||
case MidiController:
|
||||
c = new midiController( _parent );
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ controllerConnection::controllerConnection( controller * _controller ) :
|
||||
|
||||
|
||||
|
||||
|
||||
controllerConnection::controllerConnection( int _controllerId ) :
|
||||
m_controller( controller::create( controller::DummyController, NULL ) ),
|
||||
m_controllerId( _controllerId ),
|
||||
@@ -67,6 +68,7 @@ controllerConnection::controllerConnection( int _controllerId ) :
|
||||
|
||||
|
||||
|
||||
|
||||
controllerConnection::~controllerConnection()
|
||||
{
|
||||
s_connections.remove( s_connections.indexOf( this ) );
|
||||
@@ -75,7 +77,8 @@ controllerConnection::~controllerConnection()
|
||||
delete m_controller;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void controllerConnection::setController( int _controllerId )
|
||||
@@ -84,6 +87,7 @@ void controllerConnection::setController( int _controllerId )
|
||||
|
||||
|
||||
|
||||
|
||||
void controllerConnection::setController( controller * _controller )
|
||||
{
|
||||
if( m_ownsController && m_controller )
|
||||
@@ -106,6 +110,7 @@ void controllerConnection::setController( controller * _controller )
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* A connection may not be finalized. This means, the connection should exist,
|
||||
* but the controller does not yet exist. This happens when loading. Even
|
||||
@@ -127,33 +132,53 @@ void controllerConnection::finalizeConnections( void )
|
||||
|
||||
|
||||
|
||||
|
||||
void controllerConnection::saveSettings( QDomDocument & _doc, QDomElement & _this )
|
||||
{
|
||||
if( engine::getSong() ) {
|
||||
int id = engine::getSong()->controllers().indexOf( m_controller );
|
||||
_this.setAttribute( "id", id );
|
||||
if( m_ownsController )
|
||||
{
|
||||
m_controller->saveState( _doc, _this );
|
||||
}
|
||||
else
|
||||
{
|
||||
int id = engine::getSong()->controllers().indexOf( m_controller );
|
||||
if(id >= 0 )
|
||||
{
|
||||
_this.setAttribute( "id", id );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void controllerConnection::loadSettings( const QDomElement & _this )
|
||||
{
|
||||
if( _this.attribute( "id" ).toInt() >= 0 )
|
||||
QDomNode node = _this.firstChild();
|
||||
if( !node.isNull() )
|
||||
{
|
||||
m_controllerId = _this.attribute( "id" ).toInt();
|
||||
setController( controller::create( node.toElement(), engine::getSong() ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( _this.attribute( "id" ).toInt() >= 0 )
|
||||
{
|
||||
m_controllerId = _this.attribute( "id" ).toInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning( "controller index invalid\n" );
|
||||
m_controllerId = -1;
|
||||
}
|
||||
m_controller = controller::create( controller::DummyController, NULL );
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning( "controller index invalid\n" );
|
||||
m_controllerId = -1;
|
||||
}
|
||||
m_controller = controller::create( controller::DummyController, NULL );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
QString controllerConnection::nodeName( void ) const
|
||||
{
|
||||
return( "connection" );
|
||||
|
||||
Reference in New Issue
Block a user