Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
2450485
add separate booth output with mics optionally mixed in
Be-ing Jun 8, 2017
31da484
add booth gain knob and apply talkover ducking to booth output
Be-ing Jun 8, 2017
0f7a50b
input latency compensation for microphone inputs
Be-ing Jun 9, 2017
953e67b
calculate input latency for users from measured round trip latency
Be-ing Jun 9, 2017
a3ac127
fix double processing of headphone input latency compensation delay
Be-ing Jun 20, 2017
f61908e
add talkover mix to record/broadcast signal in direct monitor mode
Be-ing Jun 20, 2017
da3702c
add a record/broadcast input
Be-ing Jun 20, 2017
db3b503
move sound I/O registration for non-EngineChannels to EngineMaster
Be-ing Jun 20, 2017
cfb7aa3
move booth output after headphone output in preferences
Be-ing Jun 20, 2017
164c6fb
consolidate RECORD_BROADCAST and SIDECHAIN AudioPath types
Be-ing Jun 20, 2017
342928b
refactor TalkoverMixMode handling for readability
Be-ing Jun 21, 2017
d0f5969
reformat dlgprefsounddlg.ui for hand editing
Be-ing Jun 21, 2017
b599827
move Master Delay above Headphone Delay in preferences dialog
Be-ing Jun 21, 2017
92b710e
add a booth delay
Be-ing Jun 21, 2017
2528f93
move input latency compensation logic from EngineMaster to DlgPrefSound
Be-ing Jun 22, 2017
9e52b65
clarify TODO comment
Be-ing Jun 22, 2017
db03c04
consistent function parameter naming in cpp & h file
Be-ing Jun 22, 2017
8bccc1d
fix failing EngineMaster PFL tests
Be-ing Jun 23, 2017
db503a3
use full round trip time for latency compensation delays
Be-ing Jun 26, 2017
571a0f2
clarify comments regarding direct monitoring talkover mix mode
Be-ing Jun 26, 2017
899f493
apply master channel effects to both master & booth outputs
Be-ing Jun 26, 2017
56e0e8f
only show latency changing warning when it is actually changing
Be-ing Jul 2, 2017
3597668
set Measured Round Trip Latency to default when resetting to defaults
Be-ing Jul 2, 2017
ad7617f
disable sample rate combobox when using JACK
Be-ing Jul 2, 2017
595fcf5
increase maximum of delay and round trip latency spinboxes
Be-ing Jul 3, 2017
d5d01ff
correct calculation of minimum round trip latency
Be-ing Jul 3, 2017
4e4de9e
do not delay outputs with software monitoring of microphones
Be-ing Jul 3, 2017
6624273
"talkover mix mode" -> "microphone monitor mode"
Be-ing Jul 3, 2017
573ba7a
factor out application of master effects to its own function
Be-ing Jul 5, 2017
d5065f2
revert channelGain name to channelVolume
Be-ing Jul 5, 2017
a62dbe8
return correct buffer from EngineMaster::getSidechainBuffer
Be-ing Jul 5, 2017
5bd87bb
add some comments to EngineMaster::process
Be-ing Jul 5, 2017
46762ec
"round trip latency" -> "microphone latency compensation"
Be-ing Jul 5, 2017
dbaca09
fix comparison of samples to frames
Be-ing Jul 5, 2017
613a409
increase size of EngineDelay buffers
Be-ing Jul 5, 2017
d26e4b2
redesign Microphone Latency Compensation preference UX
Be-ing Jul 5, 2017
053a9f7
make MicMonitorMode setting backwards compatible with Mixxx 2.0
Be-ing Jul 5, 2017
dee163a
add TODO comment
Be-ing Jul 5, 2017
b368316
only apply preferences for current page when pressing Ok button
Be-ing Jul 12, 2017
3bdd3b1
Revert "only apply preferences for current page when pressing Ok button"
Be-ing Jul 18, 2017
34c3c58
DlgPrefSound: replace popup dialogs with inline warning messages
Be-ing Jul 18, 2017
4a15303
hide latency compensation warning with external rec/broadcast input
Be-ing Jul 19, 2017
dd1dbdf
update latency compensation warning when input devices are selected
Be-ing Jul 19, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/engine/enginechannel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
#include "control/controlpushbutton.h"

EngineChannel::EngineChannel(const ChannelHandleAndGroup& handle_group,
EngineChannel::ChannelOrientation defaultOrientation)
: m_group(handle_group) {
EngineChannel::ChannelOrientation defaultOrientation,
bool isTalkoverChannel)
: m_group(handle_group),
m_bIsTalkoverChannel(isTalkoverChannel) {
m_pPFL = new ControlPushButton(ConfigKey(getGroup(), "pfl"));
m_pPFL->setButtonMode(ControlPushButton::TOGGLE);
m_pMaster = new ControlPushButton(ConfigKey(getGroup(), "master"));
Expand Down
6 changes: 5 additions & 1 deletion src/engine/enginechannel.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ class EngineChannel : public EngineObject {
};

EngineChannel(const ChannelHandleAndGroup& handle_group,
ChannelOrientation defaultOrientation = CENTER);
ChannelOrientation defaultOrientation = CENTER,
bool isTalkoverChannel = false);
virtual ~EngineChannel();

virtual ChannelOrientation getOrientation() const;
Expand All @@ -59,6 +60,7 @@ class EngineChannel : public EngineObject {
virtual bool isMasterEnabled() const;
void setTalkover(bool enabled);
virtual bool isTalkoverEnabled() const;
inline bool isTalkoverChannel() { return m_bIsTalkoverChannel; };

virtual void process(CSAMPLE* pOut, const int iBufferSize) = 0;
virtual void postProcess(const int iBuffersize) = 0;
Expand All @@ -82,6 +84,8 @@ class EngineChannel : public EngineObject {
ControlPushButton* m_pOrientationRight;
ControlPushButton* m_pOrientationCenter;
ControlPushButton* m_pTalkover;
bool m_bIsTalkoverChannel;
};

#endif

16 changes: 12 additions & 4 deletions src/engine/enginedelay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,22 @@

#include "control/controlproxy.h"
#include "control/controlpotmeter.h"
#include "util/audiosignal.h"
#include "util/assert.h"
#include "util/sample.h"

const int kiMaxDelay = 40000; // 208 ms @ 96 kb/s
const double kdMaxDelayPot = 200; // 200 ms
namespace {
constexpr double kdMaxDelayPot = 500;
constexpr int kiMaxDelay = (kdMaxDelayPot + 8) / 1000 *
mixxx::AudioSignal::kSamplingRateMax * mixxx::AudioSignal::kChannelCountStereo;
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that mixxx::AudioSignal::kSamplingRateMax is bigger than it needs to be until #1302 is merged.

} // anonymous namespace

EngineDelay::EngineDelay(const char* group, ConfigKey delayControl)
EngineDelay::EngineDelay(const char* group, ConfigKey delayControl, bool bPersist)
: m_iDelayPos(0),
m_iDelay(0) {
m_pDelayBuffer = SampleUtil::alloc(kiMaxDelay);
SampleUtil::clear(m_pDelayBuffer, kiMaxDelay);
m_pDelayPot = new ControlPotmeter(delayControl, 0, kdMaxDelayPot, false, true, false, true);
m_pDelayPot = new ControlPotmeter(delayControl, 0, kdMaxDelayPot, false, true, false, bPersist);
m_pDelayPot->setDefaultValue(0);
connect(m_pDelayPot, SIGNAL(valueChanged(double)), this,
SLOT(slotDelayChanged()), Qt::DirectConnection);
Expand Down Expand Up @@ -81,3 +85,7 @@ void EngineDelay::process(CSAMPLE* pInOut, const int iBufferSize) {
}
}
}

void EngineDelay::setDelay(double newDelay) {
m_pDelayPot->set(newDelay);
}
4 changes: 3 additions & 1 deletion src/engine/enginedelay.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ class ControlProxy;
class EngineDelay : public EngineObject {
Q_OBJECT
public:
EngineDelay(const char* group, ConfigKey delayControl);
EngineDelay(const char* group, ConfigKey delayControl, bool bPersist = true);
virtual ~EngineDelay();

void process(CSAMPLE* pInOut, const int iBufferSize);

void setDelay(double newDelay);

public slots:
void slotDelayChanged();

Expand Down
Loading