Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSoC 2020: Mixxx Macros [Moved] #2989

Closed
wants to merge 185 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
2d2eaba
MacroManager: Add SaveAndLoadMacro Test
xeruf Aug 4, 2020
0503851
Macros: Add MacroManager
xeruf Jun 15, 2020
de39da1
Clean up comments & engine sidechain headers
xeruf Jun 19, 2020
5554de8
Macros: Test control connection in MacroManager
xeruf Jun 19, 2020
32e1c2b
Macros: Use ControlProxy
xeruf Jun 20, 2020
fc63892
Macros: Implement RecordingManagerBase
xeruf Jun 20, 2020
577c151
Macros: Implement RecordingManagerBase & add Button for MacroManager …
xeruf Jun 20, 2020
efa7ff8
Clear code noise in engine
xeruf Jun 22, 2020
66a537d
Macros: Enable Macro recording & dumping
xeruf Jun 22, 2020
d70041e
CMakeLists.txt: Fix duplicate entries
xeruf Jun 22, 2020
284c751
Macros: Reduce real-time code in EngineBuffer
xeruf Jun 22, 2020
8ef1366
Macros: Clean up ControlObjects & logging
xeruf Jun 29, 2020
64c6231
Macros: Clean up MacroManager
xeruf Jun 29, 2020
d86125e
Macros: Clean up Logging
xeruf Jun 30, 2020
62d7e11
Macros: Handle deck claiming atomically
xeruf Jul 1, 2020
62c32dc
Macros: Add some todos
xeruf Jun 30, 2020
0be66b1
Macros: Set deck CO and ignore noop jumps
xeruf Jun 30, 2020
228dcf8
Macros: Replace magic values by MacroState enum
xeruf Jul 1, 2020
337e9c9
Macros: Remove unused arguments from MacroManager
xeruf Jul 1, 2020
c2ed2a6
Macros: Coding style & Cleanup
xeruf Jul 3, 2020
53ad10d
Macros: Remove unnecessary pointers
xeruf Jul 3, 2020
1303369
Macros: Do not pass EngineMaster into MacroManager constructor
xeruf Jul 3, 2020
677c894
Macros: Move recording code from EngineBuffer to MacroManager
xeruf Jul 3, 2020
d4b89b1
Macros: Add documentation, name methods more appropriately, slight r…
xeruf Jul 4, 2020
129599a
Macros: Fix coding mistakes & save frame positions
xeruf Jul 6, 2020
9003899
Macros: Add protobuf definition
xeruf Jul 6, 2020
58bb100
Macros: Reduce imports and improve debug output
xeruf Jul 6, 2020
5b9acec
Macros: Adjust proto format
xeruf Jul 6, 2020
5ec1deb
Macros: Pass ChannelHandle by reference
xeruf Jul 6, 2020
bfc4276
Macros: Delete MacroManager in MixxxMainWindow deconstructor
xeruf Jul 7, 2020
0d5b060
Macros: Create a MacroManagerTest
xeruf Jul 2, 2020
696d9c1
Macros: Add simple test
xeruf Jul 3, 2020
1993b7d
Macros: Create claimRecording Test
xeruf Jul 6, 2020
df0cbb2
Create a ControlObject toggle function
xeruf Jul 6, 2020
24b0d53
Macros: Expand MacroManager Unit tests
xeruf Jul 7, 2020
e817b3d
SignalPathTest: Clean up ordering & formatting
xeruf Aug 4, 2020
39ca8b1
SignalPathTest: Initialize fields in constructor list
xeruf Jul 7, 2020
864d30e
Macros: Create working E2ETest
xeruf Jul 7, 2020
320376b
Macros: Reduce reliance on internals in tests
xeruf Jul 8, 2020
822f56e
Macros: Update TODO's
xeruf Jul 8, 2020
bbe2a00
Macros: Add initial database schema
xeruf Jul 9, 2020
eafb413
Macros: Make stopping Thread-safe by changing State definitions
xeruf Jul 9, 2020
3c1fcc9
Macros: Simplify database schema
xeruf Jul 9, 2020
9f3a0d1
Macros: Style recording Dot
xeruf Jul 10, 2020
757fd9a
Macros: Create poll thread to update recording status CO
xeruf Jul 10, 2020
a39f69e
Macros: Emit saveMacro signal on recording stop
xeruf Jul 10, 2020
ddc14df
Macros: Move into own folder & separate Macro class
xeruf Jul 11, 2020
ac3ed8e
Macros: Rename MacroManager to MacroRecorder
xeruf Jul 11, 2020
899b11a
Macros: Rename Tests
xeruf Jul 11, 2020
d03fdf3
Macros: Use QTimer to poll for recording start
xeruf Jul 11, 2020
ea3ebfa
Macros: Test recording_status CO
xeruf Jul 11, 2020
208de88
Macros: Introduce MacroManager to wrap Macro components
xeruf Aug 4, 2020
ce6a09a
Clean up EngineBuffer & EngineSideChain
xeruf Jul 13, 2020
3781974
Macros: Clean up code style & Refactor
xeruf Jul 13, 2020
8120bdd
Macros: Rename macros QLoggingCategory
xeruf Jul 13, 2020
2e9d266
Clean up database headers
xeruf Jul 13, 2020
6350112
Macros: Connect to database & receive saveMacro signal
xeruf Jul 13, 2020
306910e
Macros: Add Macro::serialize method using proto
xeruf Jul 13, 2020
ec124ee
Macros: Test & fix Macro serialization
xeruf Jul 13, 2020
4725429
Macros: Improve documentation
xeruf Jul 14, 2020
6f6ff57
Macros: Implement & test Macro deserialization
xeruf Jul 14, 2020
9b76c58
Macros: Fix stop if recording is already stopped
xeruf Jul 14, 2020
c975ae8
Macros: Simplify recording stop polling
xeruf Jul 14, 2020
62e27a4
Macros: Clean up parameter naming
xeruf Jul 14, 2020
bf68285
Macros: Create proto namespace alias
xeruf Jul 14, 2020
d41538c
Macros: Update TODO's & Recording State enum
xeruf Jul 22, 2020
ae8e157
Macros: Add stopRecordingAsync test & fix CAS loop
xeruf Jul 24, 2020
3c87fda
Macros: Add MacroAction Type enum & update serialization
xeruf Jul 26, 2020
c38f34c
Macros: Fix schema revision
xeruf Jul 26, 2020
1781c90
Move config group definitions from header to cpp
xeruf Jul 31, 2020
aac374d
Macros: Use SPSCQueue for recording
xeruf Jul 31, 2020
3447343
Macros: Repurpose Macro class
xeruf Aug 1, 2020
53ac82c
Macros: Slightly reorder database columns
xeruf Aug 1, 2020
a02bede
MacroManager: Load Macros by TrackId
xeruf Aug 4, 2020
7e621b6
MacroManager: Properly obtain track id via PlayerManager
xeruf Jul 27, 2020
50fead8
Macros: Apply review suggestions
xeruf Aug 4, 2020
8a0ca78
MacroRecorder: Factor out fetchRecordedActions from saving and refact…
xeruf Aug 4, 2020
0f74ca7
Track: Reorder some methods and remove useless comments
xeruf Aug 4, 2020
278ba90
Macros: Create MacroDAO and use QFlags for Macro State
xeruf Aug 5, 2020
4b1abaa
Macros: Integrate MacroDAO with TrackDAO and save Macros in Track
xeruf Aug 5, 2020
86438f8
Macro: Rename StateFlags to StateFlag
xeruf Aug 5, 2020
a496b69
Macro: Reorder properties
xeruf Aug 5, 2020
574799f
Macros: Stop recording on track change
xeruf Aug 5, 2020
56080a3
Macros: Test recording stop on track ejection
xeruf Aug 5, 2020
eb5500b
Macros: Fix SEGFAULT when saving by inject PlayerManager later
xeruf Aug 7, 2020
d54c640
test: Move Macro tests into own subfolder
xeruf Aug 7, 2020
96fe0ce
Macros: Automatically play enabled Macros
xeruf Aug 7, 2020
1c4e7e5
Macros: Adjust playback tolerance range
xeruf Aug 10, 2020
97a57d1
Merge branch 'master' into macros
xeruf Aug 10, 2020
1f47150
Engine: Reduce unrelated changes
xeruf Aug 10, 2020
cd01c53
MacroDAO: Add saveMacro method for constructed method
xeruf Aug 11, 2020
bf6e3d3
Macros: Add Playback Test
xeruf Aug 11, 2020
ad1ff6f
MacroRecorder: Refactor namings & RT-safety
xeruf Aug 11, 2020
9925984
Macros: Rename & refactor MacroRecorder COs
xeruf Aug 11, 2020
6421a2d
Macros: Fix skin controls
xeruf Aug 14, 2020
11ae809
Macros: Add slot number to database
xeruf Aug 14, 2020
b086607
Merge branch 'master' into macros
xeruf Aug 17, 2020
80fc0f9
Macros: Pass TrackPointer when saving Macros
xeruf Aug 17, 2020
f86b329
Macros: Delegate Macro saving to Track
xeruf Aug 17, 2020
b0198a9
Macros: Add MacroControl
xeruf Aug 17, 2020
44edcb2
Macros: Slight cleanup
xeruf Aug 17, 2020
5a8cbf8
Macros: Handle Macro Playback in MacroControl
xeruf Aug 17, 2020
ccb1b35
MacroControl: Update Status CO
xeruf Aug 17, 2020
9d7a278
Macro: Implement accessors and dirtiness
xeruf Aug 17, 2020
8684e8b
Macros: Use shared MacroPtr & fix DAO saving
xeruf Aug 18, 2020
39c4959
Macro: Move class to track
xeruf Aug 19, 2020
a445dd6
MacroDAO: Move class to dao folder
xeruf Aug 19, 2020
cb83dce
MacroControl: Update namings & improve controls
xeruf Aug 19, 2020
8960233
MacroControl: Add simple test
xeruf Aug 19, 2020
92105a0
MacroControl: Prepare Recording
xeruf Aug 25, 2020
c1b1417
MacroRecorder: Cleanup tests
xeruf Aug 25, 2020
70f8f24
Macros: Move Recording to MacroControl
xeruf Aug 25, 2020
821fe66
Macros: Remove global Macro management
xeruf Aug 25, 2020
6e6176c
Macros: Delete MacroManager and MacroRecorder
xeruf Aug 25, 2020
8eb90ce
Macros: Update MacroDAO and fix tests
xeruf Aug 26, 2020
669cee8
MacroControl: Add status indicator CO
xeruf Aug 26, 2020
89d3743
Macros: Record extra Action for looping
xeruf Aug 27, 2020
ce90ed8
Macros: Rename number to slot everywhere
xeruf Aug 27, 2020
0963c1f
MacroControl: Create gotoAndPlay CO
xeruf Aug 27, 2020
086db70
Macros: Fill empty slots in Control rather than DAO
xeruf Aug 27, 2020
8fa7f2c
test/macros: Use proper expect statements
xeruf Aug 27, 2020
9c9e09d
Macros: Fix Track dirtiness & test dirtiness
xeruf Aug 27, 2020
6a706f9
MacroControl: Fix clear & toggle controls
xeruf Aug 27, 2020
05ef822
Merge branch 'master' into macros
xeruf Aug 27, 2020
0909e55
MacroControl: Fix recording update timer
xeruf Aug 27, 2020
302bbbc
Merge branch 'master' into macros
xeruf Aug 28, 2020
9705284
MacroControl: Fix status checks & check value in slots
xeruf Aug 28, 2020
9af21be
MacroAction: Add getters for sample positions
xeruf Aug 29, 2020
df2152d
Macro: Add type property & make const
xeruf Aug 29, 2020
fbc5ac9
test/macros: Fix MacroRecording_RecordSeekAndPlay
xeruf Aug 29, 2020
b225485
test/macros: Expand MacroControlTest_RecordSeek
xeruf Aug 29, 2020
87d8000
MacroControl: Start recording on non-seeking cue jumps
xeruf Aug 29, 2020
396ec47
Macros: Update documentation comments
xeruf Aug 29, 2020
7de5793
Macro: Rename constant to kMacrosPerChannel
xeruf Aug 29, 2020
884d308
MacroDAO: Remove obsolete slot allocation
xeruf Aug 29, 2020
664ccf2
MacroDAO: Refactor QMap loop
xeruf Aug 29, 2020
b6be1b3
MacroControl: Add slot prefixes to slots
xeruf Aug 29, 2020
f6c8f8f
Macros: Rename MacroPtr to MacroPointer
xeruf Aug 29, 2020
e9faded
MacroControl: Refactor updateRecording
xeruf Aug 29, 2020
d35c304
Macro: Add getStartSamplePos()
xeruf Aug 30, 2020
cfd828a
MacroControl: Replace "indicator" CO with "playing"
xeruf Aug 30, 2020
5995745
MacroControl: Automatically set Macro label
xeruf Aug 30, 2020
d243f58
MacroControl: Remove PlaybackStopped Status
xeruf Aug 30, 2020
ec29e2b
Macro: Ignore noop in setState()
xeruf Aug 30, 2020
bcdd32f
test/macrocontrol: Expand RecordSeek test
xeruf Aug 30, 2020
63960c3
test/macrocontrol: Expand ControlObjects test
xeruf Aug 30, 2020
0b2fdd8
test/macrocontrol: Test Loop in LoadTrackAndPlay
xeruf Aug 30, 2020
542124a
src/recording/recordingmanagerbase.cpp: Improve toggleRecording
xeruf Aug 31, 2020
df130de
MacroControl: Make Status enum class
xeruf Aug 31, 2020
d04d8d8
Macros: Use DbId constant for invalid id
xeruf Aug 31, 2020
7aeca5b
test/macrocontrol: Fix status checks
xeruf Aug 31, 2020
6bdca5d
MacroControl: Improve automatic labeling
xeruf Aug 31, 2020
1ae0cee
test/macrocontrol: Create test fixture
xeruf Aug 31, 2020
8d89195
test/macrocontrol: Refactor common code into fixture
xeruf Aug 31, 2020
5225419
Macro: Name attributes more precisely
xeruf Aug 31, 2020
bb78c68
Macro: Clean up function signatures
xeruf Aug 31, 2020
4a03821
MacroControl: Rework ControlObjects & use TOGGLE buttons
xeruf Aug 31, 2020
12306f8
Macros: Add to LateNight skin
xeruf Aug 31, 2020
ce59015
MacroControl: Make automatic label more precise
xeruf Aug 31, 2020
1af3280
test/macrorecording: Fix recording toggle
xeruf Aug 31, 2020
6f66f9d
test/macros/macro_test.h: Remove anonymous namespace
xeruf Aug 31, 2020
edd68a4
Merge branch 'main' into macros
xeruf Nov 6, 2020
0d0b66d
test/macros: expand control testing slightly
xeruf Nov 7, 2020
829acc6
Merge branch 'main' into macros
xeruf Dec 30, 2020
f1c23cb
test/macros: Move checkMacroAction into a helper object
xeruf Dec 31, 2020
99ebd32
controls/macrocontrol: Offset quantization
xeruf Dec 31, 2020
aa7e062
Macros: Use const references for parameters
xeruf Jan 2, 2021
0f79e27
track/macro: Static cast frame positions
xeruf Dec 31, 2020
3c097e7
controls/macrocontrol: Improve label suffix handling
xeruf Jan 2, 2021
5e38edb
controls/macrocontrol: Get rid of implicit downcasting of doubles to …
xeruf Jan 2, 2021
5f3e07c
track/macro: Always use setDirty to change dirtiness
xeruf Jan 2, 2021
669d498
Macros: Fix pointer naming
xeruf Jan 2, 2021
4176a65
Macros/Skin/LateNight: Refactor MacroPrefix
xeruf Jan 4, 2021
a000115
Macros/Skin/LateNight: Only show clear button when clearing is possible
xeruf Jan 4, 2021
5ce6eab
Macros/Skin: Show Label via WTrackProperty
xeruf Jan 4, 2021
43d5579
controls/macrocontrol.cpp: Make slotPlay safer
xeruf Jan 5, 2021
c0cdabf
controls/macrocontrol.cpp: Increase readability of some code
xeruf Jan 5, 2021
dd986ce
controls/macrocontrol: Handle aborted recordings more cleanly
xeruf Jan 5, 2021
0cc1fd7
controls/macrocontrol: Play single-action Macros
xeruf Jan 5, 2021
605d1ac
Macros/Skin/LateNight: Create & Style MacroActivate Button with icons
xeruf Jan 5, 2021
1eda782
controls/macrocontrol: Implement toggle CO
xeruf Jan 6, 2021
29fe8a4
track/macro: convert MacroAction to a proper class
xeruf Jan 6, 2021
e88c8a8
Merge remote-tracking branch 'upstream/main' into macros
xeruf Jan 8, 2021
cfc640a
Merge branch 'main' into macros
xeruf Nov 16, 2021
5209c0d
Macros: Migrate to FramePos
xeruf Nov 16, 2021
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
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/engine/controls/enginecontrol.cpp
src/engine/controls/keycontrol.cpp
src/engine/controls/loopingcontrol.cpp
src/engine/controls/macrocontrol.cpp
src/engine/controls/quantizecontrol.cpp
src/engine/controls/ratecontrol.cpp
src/engine/effects/engineeffect.cpp
Expand Down Expand Up @@ -659,6 +660,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/library/dao/cuedao.cpp
src/library/dao/directorydao.cpp
src/library/dao/libraryhashdao.cpp
src/library/dao/macrodao.cpp
src/library/dao/playlistdao.cpp
src/library/dao/settingsdao.cpp
src/library/dao/trackdao.cpp
Expand Down Expand Up @@ -785,6 +787,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/preferences/settingsmanager.cpp
src/preferences/upgrade.cpp
src/recording/recordingmanager.cpp
src/recording/recordingmanagerbase.cpp
src/qml/asyncimageprovider.cpp
src/qml/qmlapplication.cpp
src/qml/qmlcontrolproxy.cpp
Expand Down Expand Up @@ -832,6 +835,8 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/track/keyfactory.cpp
src/track/keys.cpp
src/track/keyutils.cpp
src/track/macro.cpp
src/track/macroaction.cpp
src/track/playcounter.cpp
src/track/replaygain.cpp
src/track/serato/beatgrid.cpp
Expand Down Expand Up @@ -1620,6 +1625,11 @@ add_executable(mixxx-test
src/test/libraryscannertest.cpp
src/test/librarytest.cpp
src/test/looping_control_test.cpp
src/test/macros/macrocontrol_test.cpp
src/test/macros/macrodao_test.cpp
src/test/macros/macrorecording_test.cpp
src/test/macros/macroplayback_test.cpp
src/test/macros/macro_test.cpp
src/test/main.cpp
src/test/mathutiltest.cpp
src/test/metadatatest.cpp
Expand Down
14 changes: 14 additions & 0 deletions res/schema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -582,4 +582,18 @@ reapplying those migrations.
UPDATE library SET filetype='aiff' WHERE filetype='aif';
</sql>
</revision>
<revision version="40" min_compatible="3">
<description>
Add Macros
</description>
<sql>
CREATE TABLE IF NOT EXISTS macros (
id INTEGER PRIMARY KEY,
track_id INTEGER NOT NULL REFERENCES library(id),
slot INTEGER,
xeruf marked this conversation as resolved.
Show resolved Hide resolved
label TEXT,
state INTEGER,
content BLOB);
</sql>
</revision>
</schema>
99 changes: 99 additions & 0 deletions res/skins/LateNight/macros/macro.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<Template>
<SetVariable name="MacroPrefix"><Variable name="Group"/>,macro_<Variable name="MacroSlot"/>_</SetVariable>

<WidgetGroup>
<ObjectName>Macro</ObjectName>
<Layout>horizontal</Layout>
<SizePolicy>me,min</SizePolicy>
<Children>
<PushButton>
<!--<TooltipId>macro_activate_toggle</TooltipId>-->
<ObjectName>MacroActivate</ObjectName>
<Size>34f,34f</Size>
<NumberStates>1</NumberStates>
<Connection>
<ConfigKey><Variable name="MacroPrefix"/>activate</ConfigKey>
<ConnectValueToWidget>false</ConnectValueToWidget>
<ButtonState>LeftButton</ButtonState>
</Connection>
<Connection>
<ConfigKey><Variable name="MacroPrefix"/>toggle</ConfigKey>
<ConnectValueToWidget>false</ConnectValueToWidget>
<ButtonState>RightButton</ButtonState>
</Connection>
<Connection>
<ConfigKey><Variable name="MacroPrefix"/>status</ConfigKey>
<ConnectValueFromWidget>false</ConnectValueFromWidget>
</Connection>
</PushButton>

<WidgetGroup>
<ObjectName></ObjectName>
<Layout>vertical</Layout>
<Size>0me,36f</Size>
<Children>

<WidgetGroup>
<ObjectName>SamplerTitleBoxMini</ObjectName>
<Layout>horizontal</Layout>
<SizePolicy>i,f</SizePolicy>
<MinimumSize>,18</MinimumSize>
<Children>
<Label>
<ObjectName>SamplerTitleMini</ObjectName>
<SizePolicy>me,me</SizePolicy>
<Elide>right</Elide>
<Text>Macro <Variable name="MacroSlot"/></Text>
<Connection>
<ConfigKey><Variable name="MacroPrefix"/>status</ConfigKey>
<BindProperty>Text</BindProperty>
</Connection>
</Label>
</Children>
</WidgetGroup>

<WidgetGroup>
<ObjectName>SamplerBPMSettingsMini</ObjectName>
<Layout>horizontal</Layout>
<Size>,18f</Size>
<Children>
<TrackProperty>
<ObjectName>SamplerBpm</ObjectName>
<SizePolicy>me,me</SizePolicy>
<Property>title</Property>
<Group><Variable name="Group"/></Group>
<Elide>right</Elide>
</TrackProperty>

<PushButton>
<!--<SetVariable name="TooltipId">macro_clear</SetVariable>-->
<ObjectName>EjectButton12</ObjectName>
<Size>21f,18f</Size>
<NumberStates>1</NumberStates>
<State>
<Number>0</Number>
<Unpressed scalemode="STRETCH">skin:/<Variable name="BtnScheme"/>/buttons/btn_<Variable name="BtnType"/>_<Variable name="BtnSize"/>.svg</Unpressed>
<Pressed scalemode="STRETCH">skin:/<Variable name="BtnScheme"/>/buttons/btn_<Variable name="BtnType"/>_<Variable name="BtnSize"/>_active.svg</Pressed>
</State>
<Connection>
<ConfigKey><Variable name="MacroPrefix"/>clear</ConfigKey>
</Connection>
<Connection>
<ConfigKey><Variable name="MacroPrefix"/>status</ConfigKey>
<Transform><IsEqual>3</IsEqual></Transform>
<BindProperty>visible</BindProperty>
</Connection>
</PushButton>
</Children>
<Connection>
<ConfigKey><Variable name="Group"/>,track_loaded</ConfigKey>
<BindProperty>visible</BindProperty>
</Connection>
</WidgetGroup><!-- SamplerBPMSettingsMini -->

</Children>
</WidgetGroup><!-- SamplerMiniControls -->

</Children>
</WidgetGroup><!-- SamplerMini -->
</Template>
20 changes: 20 additions & 0 deletions res/skins/LateNight/macros/macros_channel.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Template>
<WidgetGroup>
<Layout>horizontal</Layout>
<SizePolicy>me,max</SizePolicy>
<Children>
<Template src="skin:/macros/macro.xml">
<SetVariable name="MacroSlot">1</SetVariable>
</Template>
<Template src="skin:/macros/macro.xml">
<SetVariable name="MacroSlot">2</SetVariable>
</Template>
<Template src="skin:/macros/macro.xml">
<SetVariable name="MacroSlot">3</SetVariable>
</Template>
<Template src="skin:/macros/macro.xml">
<SetVariable name="MacroSlot">4</SetVariable>
</Template>
</Children>
</WidgetGroup>
</Template>
14 changes: 14 additions & 0 deletions res/skins/LateNight/macros_rack.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<Template>
<WidgetGroup>
<Layout>horizontal</Layout>
<SizePolicy>me,max</SizePolicy>
<Children>
<Template src="skin:/macros/macros_channel.xml">
<SetVariable name="Group">[Channel1]</SetVariable>
</Template>
<Template src="skin:/macros/macros_channel.xml">
<SetVariable name="Group">[Channel2]</SetVariable>
</Template>
</Children>
</WidgetGroup>
</Template>
1 change: 1 addition & 0 deletions res/skins/LateNight/skin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,7 @@
</Children>
</WidgetGroup>

<Template src="skin:macros_rack.xml"/>
<Template src="skin:fx_rack.xml"/>
<Template src="skin:samplers_rack.xml"/>
<Template src="skin:mic_aux_rack.xml"/>
Expand Down
4 changes: 2 additions & 2 deletions src/coreservices.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,8 +286,8 @@ void CoreServices::initialize(QApplication* pApp) {
m_pPlayerManager = std::make_shared<PlayerManager>(
pConfig,
m_pSoundManager.get(),
m_pEffectsManager.get(),
m_pEngine.get());
m_pEngine.get(),
m_pEffectsManager.get());
// TODO: connect input not configured error dialog slots
PlayerInfo::create();

Expand Down
2 changes: 1 addition & 1 deletion src/database/mixxxdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
const QString MixxxDb::kDefaultSchemaFile(":/schema.xml");

//static
const int MixxxDb::kRequiredSchemaVersion = 39;
const int MixxxDb::kRequiredSchemaVersion = 40;

namespace {

Expand Down
2 changes: 0 additions & 2 deletions src/database/mixxxdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
#include <QSqlDatabase>

#include "preferences/usersettings.h"

#include "util/db/dbconnectionpool.h"


class MixxxDb : public QObject {
Q_OBJECT

Expand Down
4 changes: 3 additions & 1 deletion src/engine/channels/enginedeck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ EngineDeck::EngineDeck(
EffectsManager* pEffectsManager,
EngineChannel::ChannelOrientation defaultOrientation,
bool primaryDeck)
: EngineChannel(handleGroup, defaultOrientation, pEffectsManager,
: EngineChannel(handleGroup,
defaultOrientation,
pEffectsManager,
/*isTalkoverChannel*/ false,
primaryDeck),
m_pConfig(pConfig),
Expand Down
2 changes: 1 addition & 1 deletion src/engine/channels/enginedeck.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@

#include "soundio/soundmanagerutil.h"

class ControlPushButton;
class EngineBuffer;
class EnginePregain;
class EngineBuffer;
class EngineMaster;
class EngineVuMeter;
class EngineEffectsManager;
class ControlPushButton;

class EngineDeck : public EngineChannel, public AudioDestination {
Q_OBJECT
Expand Down
4 changes: 4 additions & 0 deletions src/engine/controls/cuecontrol.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#include "engine/controls/cuecontrol.h"

#include <QDebug>
#include <QtCore>

#include "control/controlindicator.h"
#include "control/controlobject.h"
#include "control/controlpushbutton.h"
Expand Down Expand Up @@ -2528,6 +2531,7 @@ void HotcueControl::slotHotcueCueLoop(double v) {
}

void HotcueControl::slotHotcueActivate(double v) {
qCDebug(QLoggingCategory("macros")) << "hotcue" << m_hotcueIndex + 1 << "activated:" << v;
emit hotcueActivate(this, v, HotcueSetMode::Auto);
}

Expand Down
24 changes: 12 additions & 12 deletions src/engine/controls/enginecontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include "control/controlvalue.h"
#include "engine/cachingreader/cachingreader.h"
#include "engine/effects/groupfeaturestate.h"
#include "engine/sync/syncable.h"
#include "preferences/usersettings.h"
#include "track/beats.h"
#include "track/track_decl.h"
Expand Down Expand Up @@ -42,17 +41,17 @@ class EngineControl : public QObject {
UserSettingsPointer pConfig);
~EngineControl() override;

// Called by EngineBuffer::process every latency period. See the above
// comments for information about guarantees that hold during this call. An
// EngineControl can perform any upkeep operations that are necessary during
// this call.
/// Called by EngineBuffer::process every latency period.
/// See the above comments for information about guarantees that hold during this call.
/// An EngineControl can perform any upkeep operations necessary here.
/// @param dRate current playback rate in audio frames per second
virtual void process(const double dRate,
mixxx::audio::FramePos currentPosition,
const int iBufferSize);

// hintReader allows the EngineControl to provide hints to the reader to
// indicate that the given portion of a song is a potential imminent seek
// target.
/// hintReader allows the EngineControl to provide hints to the reader
/// to indicate that the given portion of a song
/// is a potential imminent seek target.
virtual void hintReader(HintVector* pHintList);

virtual void setEngineMaster(EngineMaster* pEngineMaster);
Expand All @@ -67,7 +66,7 @@ class EngineControl : public QObject {
mixxx::audio::FramePos endPosition,
bool enabled);

// Called to collect player features for effects processing.
/// Collect player features for effects processing.
virtual void collectFeatureState(GroupFeatureState* pGroupFeatures) const {
Q_UNUSED(pGroupFeatures);
}
Expand Down Expand Up @@ -97,9 +96,10 @@ class EngineControl : public QObject {
}
void seek(double fractionalPosition);
void seekAbs(mixxx::audio::FramePos position);
// Seek to an exact sample and don't allow quantizing adjustment.
void seekExact(mixxx::audio::FramePos position);
// Returns an EngineBuffer to target for syncing. Returns nullptr if none found
/// Seek to an exact frame, no quantizing
/// virtual only for tests!
virtual void seekExact(mixxx::audio::FramePos position);
/// Return an EngineBuffer to target for syncing. Returns nullptr if none found.
EngineBuffer* pickSyncTarget();

UserSettingsPointer getConfig();
Expand Down
Loading