Used FloatModels as the backend for mixer sends

Can add new channels in the mixer, and sends are implemented.
Instruments are hardcoded at 10. FL Import is hardcoded at 64.
This commit is contained in:
Andrew Kelley
2009-09-16 09:41:57 -07:00
parent 45c4b7b824
commit 89d5be7855
13 changed files with 263 additions and 185 deletions

View File

@@ -31,7 +31,6 @@
#include "JournallingObject.h"
const int NumFxChannels = 64;
struct FxChannel
@@ -54,6 +53,7 @@ struct FxChannel
// pointers to other channels that this one sends to
QVector<fx_ch_t> m_sends;
QVector<FloatModel *> m_sendAmount;
// pointers to other channels that send to this one
QVector<fx_ch_t> m_receives;
@@ -86,26 +86,36 @@ public:
FxChannel * effectChannel( int _ch )
{
if( _ch >= 0 && _ch <= NumFxChannels )
{
return m_fxChannels[_ch];
}
return NULL;
return m_fxChannels[_ch];
}
// make the output of channel fromChannel go to the input of channel toChannel
void createChannelSend(fx_ch_t fromChannel, fx_ch_t toChannel);
// it is safe to call even if the send already exists
void createChannelSend(fx_ch_t fromChannel, fx_ch_t toChannel,
float amount = 1.0f);
// delete the connection made by createChannelSend
void deleteChannelSend(fx_ch_t fromChannel, fx_ch_t toChannel);
// does fromChannel send its output to the input of toChannel?
bool channelSendsTo(fx_ch_t fromChannel, fx_ch_t toChannel);
// return the FloatModel of fromChannel sending its output to the input of
// toChannel. NULL if there is no send.
FloatModel * channelSendModel(fx_ch_t fromChannel, fx_ch_t toChannel);
// add a new channel to the Fx Mixer.
// returns the index of the channel that was just added
int createChannel();
// reset a channel's name, fx, sends, etc
void clearChannel(fx_ch_t channelIndex);
inline fx_ch_t numChannels() const
{
return m_fxChannels.size();
}
private:
FxChannel * m_fxChannels[NumFxChannels+1]; // +1 = master
// the fx channels in the mixer. index 0 is always master.
QVector<FxChannel *> m_fxChannels;
friend class mixerWorkerThread;
friend class FxMixerView;

View File

@@ -26,6 +26,8 @@
#define _FX_MIXER_VIEW_H
#include <QtGui/QWidget>
#include <QtGui/QHBoxLayout>
#include <QtGui/QScrollArea>
#include "FxMixer.h"
#include "ModelView.h"
@@ -61,7 +63,7 @@ public:
private slots:
void updateFaders();
void addNewChannel();
private:
struct FxChannelView
@@ -72,13 +74,15 @@ private:
fader * m_fader;
} ;
FxChannelView m_fxChannelViews[NumFxChannels+1];
QVector<FxChannelView> m_fxChannelViews;
QStackedLayout * m_fxRacksLayout;
QStackedLayout * m_fxLineBanks;
QButtonGroup * m_bankButtons;
FxLine * m_currentFxLine;
QScrollArea * channelArea;
QHBoxLayout * chLayout;
void addFxLine(int i, QWidget * parent, QLayout * layout);
} ;
#endif

View File

@@ -59,7 +59,7 @@ public:
// LMMS Stuff
virtual void drawFxLine(QPainter * _painter, const QWidget *_fxLine,
const QString & _name, bool _active);
const QString & _name, bool _active, bool _sendToThis);
virtual void drawTrackContentBackground(QPainter * _painter,
const QSize & _size, const int _pixelsPerTact);

View File

@@ -66,7 +66,7 @@ public:
virtual void unpolish( QWidget * widget );
virtual void drawFxLine( QPainter * _painter, const QWidget *_fxLine,
const QString & _name, bool _active );
const QString & _name, bool _active, bool _sendToThis );
virtual void drawTrackContentBackground( QPainter * _painter,
const QSize & _size, const int _pixelsPerTact );

View File

@@ -91,7 +91,7 @@ public:
virtual void drawFxLine(QPainter * _painter, const QWidget *_fxLine,
const QString & _name, bool _active) = 0;
const QString & _name, bool _active, bool _sendToThis) = 0;
virtual void drawTrackContentBackground(QPainter * _painter,
const QSize & _size, const int _pixelsPerTact) = 0;