Loopp/src/trackoutput.hxx

68 lines
1.4 KiB
C++
Raw Normal View History

#ifndef LUPPP_TRACK_OUTPUT_H
#define LUPPP_TRACK_OUTPUT_H
#include <iostream>
#include <stdio.h>
2013-08-15 18:17:16 +02:00
#include "buffers.hxx"
2013-08-06 22:55:57 +02:00
#include "config.hxx"
#include "audioprocessor.hxx"
2013-07-28 14:31:07 +02:00
#include "eventhandler.hxx"
#include "dsp/dsp_dbmeter.hxx"
2013-09-23 16:23:48 +02:00
/** TrackOutput
* This class is used to mix down each track, and produce output: that output
* exists in the master outputs and send buffers.
**/
class TrackOutput : public AudioProcessor
{
public:
2013-08-15 18:17:16 +02:00
TrackOutput(int t, AudioProcessor* ap);
2013-07-28 14:31:07 +02:00
/// set main mix, 0-1
2013-08-15 18:17:16 +02:00
void setMaster(float value);
float getMaster();
bool recordArm();
void recordArm(bool r);
/// set send
2013-08-15 18:17:16 +02:00
void setSend( int send, float value );
2013-09-23 16:23:48 +02:00
void setSendActive( int send, bool active );
/// copies the track output to master buffer, sidechain & post-side buffer
void process(unsigned int nframes, Buffers* buffers);
2013-08-15 18:17:16 +02:00
~TrackOutput();
private:
int track;
bool _recordArm;
float _toMaster;
float _toReverb;
float _toSidechain;
float _toPostSidechain;
bool _toPostfaderActive;
bool _toKeyActive;
bool _toXSideActive;
2013-09-23 16:23:48 +02:00
/// Pointer to "previous" processor: the graph is backwards
AudioProcessor* previousInChain;
2013-07-28 14:31:07 +02:00
// Metering variables
long uiUpdateCounter;
long uiUpdateConstant;
2013-09-17 14:11:11 +02:00
DBMeter* dbMeter;
};
#endif // LUPPP_TRACK_OUTPUT_H