Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
247 commits
Select commit Hold shift + click to select a range
fad0011
Analyze and improve search in the file browser (again) (#6985)
sakertooth Nov 19, 2023
aa050ae
Fix memory leaks (#6879)
sakertooth Nov 19, 2023
dc8c49a
Use `std::optional` for colour interfaces and storage (#6991)
DomClark Nov 19, 2023
ced1f18
Rewrite Amplifier plugin code (#6989)
LostRobotMusic Nov 23, 2023
3a928d8
Enforce lazy loading for `FileBrowser` (#6996)
sakertooth Nov 24, 2023
c2811ae
Ghost notes for the automation editor (#6940)
DanielKauss Nov 25, 2023
67ce167
Fix AudioFileProcessor reverse bug (#6958)
szeli1 Nov 25, 2023
8136b70
Fix floating point exception in Spectrum Analyzer (#7018)
michaelgregorius Dec 10, 2023
f3d3a14
Split `TimeLineWidget` into core and GUI parts (#7004)
DomClark Dec 16, 2023
3aefe7b
Fix LOMM crossovers (#7026)
LostRobotMusic Dec 22, 2023
ce722dd
Refactor ``SampleBuffer`` (#6610)
sakertooth Dec 25, 2023
4eba656
New loop marker shortcuts, attempt 2 (#6382)
Spekular Dec 25, 2023
4e63f60
Add missing copyright in SampleDecoder.cpp (#7030)
sakertooth Dec 25, 2023
6b21dc7
Use Qt layouts for mixer channels (#6591)
sakertooth Dec 30, 2023
bf4e57d
Fix minimum size of LADSPA dialogs (#6982) (#7019)
michaelgregorius Dec 31, 2023
36cb0ed
Extend TabWidget's style sheet options
michaelgregorius Dec 31, 2023
1868fa1
Fix equalizer peak updates (#7038)
michaelgregorius Dec 31, 2023
f79695e
Fix regressions from #6610 (#7040)
sakertooth Dec 31, 2023
4049cc2
Fix `Fader` pixmaps (#7041)
sakertooth Jan 1, 2024
8eba258
Accept Editor close event (#7035)
LostRobotMusic Jan 1, 2024
c2f2b7e
Handle divisions by 0 in Lb302 and Monstro (#7021)
michaelgregorius Jan 3, 2024
56e7f7d
Add setSampleRate to BasicFilters and update LOMM allpass sample rate…
LostRobotMusic Jan 4, 2024
1eff322
Fix crash on subsequent song loads (#7051)
michaelgregorius Jan 7, 2024
18d3443
Run without terminal for non-debug Windows builds (#7022)
Rossmaxx Jan 8, 2024
d945ac1
Fix scaling of PixmapButton in layouts (#7053)
michaelgregorius Jan 8, 2024
85399c1
Abstraction in MixerChannelView (#7057)
michaelgregorius Jan 13, 2024
b67c53a
Fix sliding of waveform when drawing sample in reverse (#7063)
sakertooth Jan 14, 2024
af90aff
Some minor UI fixes (#7044)
zynskeywolf Jan 14, 2024
b53f2b4
Fix AFP playback indicator not shown when dragging and dropping sampl…
sakertooth Jan 14, 2024
abe2c92
Resizable mixer window (#7037)
michaelgregorius Jan 14, 2024
5fdf611
Fix memory leaks within tests (#7001)
sakertooth Jan 15, 2024
629ba03
Fix mixer channel updates on solo/mute (#7055)
michaelgregorius Jan 15, 2024
6c4d458
Migrate to CTest (#7062)
sakertooth Jan 15, 2024
3343496
Compressor plugin hideable controls (#7008)
szeli1 Jan 15, 2024
1e6a902
Fix most of the track cloning for MIDI ports (#7066)
michaelgregorius Jan 17, 2024
8e8f685
Disentangle and clean the classes of the Audio File Processor (#7069)
michaelgregorius Jan 21, 2024
ffcf8c2
Add private setters for "from" and "to" (#7071)
michaelgregorius Jan 24, 2024
339644a
Sf2Player missing nullptr initialization (#7084)
Veratil Jan 30, 2024
a8e427f
Update URL of tap-plugins submodule (#7087)
DomClark Jan 31, 2024
b444113
Fix vcpkg dependencies (#7088)
DomClark Feb 2, 2024
c205215
Center effects W/D knob at 0 (#7077)
Monospace-V Feb 3, 2024
dd53bec
Hide the LED button for "Custom Base Velocity" (#7067)
michaelgregorius Feb 10, 2024
2d185df
Fix deletion of mixer channels when calling MixerView::clear (#7081)
Veratil Feb 11, 2024
074dd0b
Add `WANT_OSS` as a compile time option (#7099)
Rossmaxx Feb 11, 2024
c87ff41
Use GitHub mirror of tap-plugins (#7110)
DomClark Feb 16, 2024
a81ad74
Fix playback within `Sample` (#7100)
sakertooth Feb 16, 2024
99120f5
Prevent out of bound read in `Sample::playRaw` (#7113)
khoidauminh Feb 17, 2024
34ab5ff
Fixes #6626: Throw if Lv2 object CTORs fail (#6951)
JohannesLorenz Feb 18, 2024
a81666a
Track resizing behavior (#7114)
michaelgregorius Feb 18, 2024
876a36c
Remove message location check from check-strings test (#7112)
DomClark Feb 18, 2024
360254f
Rewrite EffectSelectDialog to add effect groups and delete Qt Designe…
LostRobotMusic Feb 19, 2024
cbaf2f0
Update src/common/ to coding conventions (#7082)
Monospace-V Feb 23, 2024
7318af0
Fix invalidated iterator when removing notes in Piano Roll (#7080)
Veratil Feb 23, 2024
d4ae822
Reenable song editor zooming (#7118)
michaelgregorius Feb 24, 2024
03d067b
Fix crash in Audio File Processor (#7124)
michaelgregorius Feb 24, 2024
c991a85
Remove `MemoryManager` (#7128)
TechnoPorg Feb 25, 2024
3ae13ae
Apply master gain outside audio devices (#7135)
sakertooth Mar 11, 2024
1be2a20
Fix a NaN in EqSpectrumView (#7140)
michaelgregorius Mar 11, 2024
227fc47
Fix NaNs in basic filters and Equalizer (#7141)
michaelgregorius Mar 11, 2024
2389742
Update game-music-emu submodule
messmerd Mar 12, 2024
37073af
Update to latest commit
messmerd Mar 12, 2024
04ecf73
Fix missing icons for some instruments (#7132)
michaelgregorius Mar 13, 2024
b9ebc24
Check if `m_peakSum` is less than or equal to 0 again (#7146)
sakertooth Mar 16, 2024
4120a04
Replace QRegExp with QRegularExpression (#7133)
Rossmaxx Mar 16, 2024
af7431b
Add GitHub issue forms for bug reports and feature requests (#7102)
TechnoPorg Mar 16, 2024
3f5ac80
Update jack2 (#7147)
Snowiiii Mar 16, 2024
3e19d13
Update carla (#7149)
Snowiiii Mar 20, 2024
9ff63a5
Set mixer channel LCD when its index changes (#7160)
sakertooth Mar 24, 2024
c2fdb8c
Move confirmation to remove mixer channels outside `MixerView::delete…
Veratil Mar 25, 2024
0e1eb71
Bump project year (#7167)
87x Mar 26, 2024
66081ba
CMake: Replace EXEC_PROGRAM with execute_process (#7166)
Snowiiii Mar 26, 2024
45fd326
Make Compressor background themeable (#7157)
LostRobotMusic Mar 26, 2024
a41da81
Enable different colors for oscilloscope channels (#7155)
michaelgregorius Mar 26, 2024
286d157
Refactor `gui_templates.h` (#7159)
Rossmaxx Mar 27, 2024
682be4e
Fix DynamicsProcessor bugs (#7168)
LostRobotMusic Mar 27, 2024
6f5f2c2
Fix glitch in SlicerT (#7174)
zonkmachine Mar 28, 2024
b2f2fc4
Revisit the initialization for local variables (#7143)
sakertooth Mar 28, 2024
bad5735
Fix infinite loop in `InstrumentPlayHandle::play` (#7176)
sakertooth Mar 29, 2024
03f885a
Fix B/B Track Label Button (#7177)
LostRobotMusic Mar 29, 2024
9c591b1
PianoRoll::paintEvent: don't shadow member variable (#7181)
Veratil Mar 30, 2024
a98c700
Optimize map accesses in LadspaManager (#7173)
michaelgregorius Mar 30, 2024
b622fa2
Conditionally remove use of QApplication::desktop in ComboBox.cpp (#7…
michaelgregorius Mar 30, 2024
c271d28
Ensure that build and target are directories in .gitignore (#6884)
michaelgregorius Mar 30, 2024
5d5d8f8
Only repaint LcdWidget if necessary (#7187)
michaelgregorius Apr 1, 2024
9dd7f4d
Remove "GENERAL SETTINGS" tab (#7188)
michaelgregorius Apr 1, 2024
b14f8ab
Refactor ArpDirection::Down and ArpDirection::DownAndUp (#7007)
zonkmachine Apr 3, 2024
20fec28
Font size adjustments (#7185)
michaelgregorius Apr 4, 2024
d447cb0
Use layouts for the instrument sound shaping tab / Extract classes fo…
michaelgregorius Apr 5, 2024
ba4fda7
Scalable consistent faders with themeable gradients, marker at unity,…
michaelgregorius Apr 5, 2024
922eb7f
Fix NaNs for some dbFS value displays (-∞ dbFS) (#7142)
michaelgregorius Apr 5, 2024
2472e9e
GUI adjustments around base velocity (#7196)
michaelgregorius Apr 5, 2024
1f5f28f
Don't auto-quantize notes when recording MIDI input (#6714)
irrenhaus3 Apr 8, 2024
8e40038
Scalable envelope graph (#7194)
michaelgregorius Apr 11, 2024
815f88d
Scalable LFO graph (#7203)
michaelgregorius Apr 14, 2024
d3ab315
Support VSTs on Linux even if Wine is unavailable (#7205)
DomClark Apr 14, 2024
d2c2a80
Update CMT submodule / Upgrade code for CMT delays (#7206)
michaelgregorius Apr 14, 2024
d5e1d9e
Move icon determination into TrackLabelButton again (#7209)
michaelgregorius Apr 17, 2024
df11a98
Bump Qt minimum version to 5.9 (#7204)
Rossmaxx Apr 18, 2024
bda042e
Add native system semaphore and Windows shared memory (#7212)
DomClark Apr 20, 2024
62e2a39
SlicerT::findSlices - check if lower_bound did not find anything
Veratil Apr 21, 2024
71dd300
Instrument release time in milliseconds (#7217)
michaelgregorius Apr 24, 2024
a53e5ba
Remove high quality mode from codebase (#7219)
sakertooth Apr 27, 2024
6c84668
Replace call `QT5_WRAP_UI` with `CMAKE_AUTOUIC` (#7200)
Rossmaxx Apr 27, 2024
5c0db46
Streamline instrument flags (#7227)
michaelgregorius Apr 27, 2024
8636381
Fix Kicker's release stage (#7226)
michaelgregorius Apr 27, 2024
c0a4df4
Lb302: Consistent decay in time (#7230)
michaelgregorius Apr 29, 2024
bb6a77a
Only set sample clips for valid files (#7224)
michaelgregorius Apr 29, 2024
9ca9143
Fix upgrade routine for BPM renamings (#7235)
michaelgregorius May 1, 2024
d5f5d00
Fix shifting of sample waveform during zoom (#7222)
khoidauminh May 2, 2024
9bdc8ad
Inform effects about changes in enabled model (#7237)
michaelgregorius May 5, 2024
9b6e33a
Remove global oversampling (#7228)
sakertooth May 5, 2024
20102c4
Replace processingSampleRate with outputSampleRate in Lb302 (#7239)
sakertooth May 5, 2024
acefd06
Bump veal submodule (#6771)
tresf May 8, 2024
d71116b
Update Linux CI to Ubuntu 20.04 (#7015)
messmerd May 8, 2024
b71d4f2
Remove demo project Greshz-CoolSnip.mmpz (#7248)
zonkmachine May 9, 2024
acdf05f
Update zynaddsubfx (#7250)
Snowiiii May 11, 2024
6d100d1
Remove support for msys2 (#7251)
tresf May 12, 2024
95e5f97
Revamp resource embedding (#7241)
DomClark May 12, 2024
36786dd
Enable LADSPA plugins on MSVC (#6973)
Rossmaxx May 13, 2024
a66d212
Fix native linux VST on ARM64 (#7257)
tresf May 16, 2024
321b2b4
Remove the missing `spoken.flac` file in unfa - Spoken (#7208)
Rossmaxx May 16, 2024
7859f1c
Fix macOS CI builds (#7261)
tresf May 16, 2024
f891bb3
Update widths of combo boxes (#7262)
anytizer May 18, 2024
0ee05f5
Fix crash in AFP when playing with loop while no sample is loaded (#7…
khoidauminh May 18, 2024
ca109f9
Migrate to new LV2 header paths (#6990)
MaciejMalczyk May 19, 2024
0071cb6
Fix UI freeze when zooming in on long samples (#7253)
khoidauminh May 19, 2024
76d8f65
Fix lost connections when restoring automation clip (#7002)
szeli1 May 19, 2024
d60fd0d
Fix glitch with automation points (#7269)
zonkmachine May 19, 2024
a527427
Changed bar lines to follow snap size (#7034)
BoredGuy1 May 20, 2024
75d6be2
Fix missing initialization (#7271)
michaelgregorius May 20, 2024
32fe3e5
Add "natural" scrolling support for trackpads (#5510)
tresf May 21, 2024
fa5f2aa
Lv2Proc: Fix all code-style issues with {}
JohannesLorenz May 22, 2024
c66af60
Fix fftw linking when cross-compiling (#7276)
tresf May 23, 2024
bd2362a
FindWine improvements (#7268)
tresf May 23, 2024
b803e92
Add menu option and hotkeys to move controllers/effects (#7139)
Rossmaxx May 23, 2024
e9848db
A few accessibility changes in default theme (#7202)
Rossmaxx May 23, 2024
2e65453
Update MinGW CI to Ubuntu 20.04 (#7259)
messmerd May 23, 2024
0a93e17
Bump SWH submodule to fix a crash with Reverse Delay (#7277)
zonkmachine May 24, 2024
4033406
Automation Editor - Fix automation point forced snapping to integer v…
zonkmachine May 28, 2024
d1a15e5
Fix for Werror=self-move in test for GCC >= 13 (#7288)
FyiurAmron May 28, 2024
948bb4a
Fix to allow NSIS packaging to work for non-MSVC Windows builds (#7287)
FyiurAmron May 28, 2024
a262956
Update CPU to Pentium 4 for win32 builds (#6155)
softrabbit May 29, 2024
7197f1d
Update upload-artifacts actions (#7263)
messmerd May 29, 2024
e82e3f5
update veal submodule
FyiurAmron May 29, 2024
bfeb781
Redesign file browser searching (#7130)
sakertooth May 30, 2024
6ec1ced
Don't recalculate the song length for every added TCO while loading (…
softrabbit May 30, 2024
a85c986
Add macOS arm64 builds (#7285)
tresf May 31, 2024
94b1a38
fixed position line disappearing when zoomed out (#7296)
BoredGuy1 May 31, 2024
37795ae
Resizable mixer channels/strips (#7293)
michaelgregorius May 31, 2024
4e93f51
Adjust rendering of BarModelEditor (#7299)
michaelgregorius May 31, 2024
042f8ac
Add peak indicators (#7295)
michaelgregorius Jun 1, 2024
969943b
Change the wording of Instrument Plugin Dialogue (#7301)
AW1534 Jun 1, 2024
43fbcca
Modernize compiler and linker flags (#7255)
Rossmaxx Jun 2, 2024
b1ee626
Fix noise generator (#7318)
LostRobotMusic Jun 13, 2024
beedbc1
Add support for "factorysample:" prefix / Fix "bassloopes" typo (#7236)
michaelgregorius Jun 14, 2024
68ea3f5
Remove `debian` folder (#7311)
Rossmaxx Jun 15, 2024
01ffa95
Use `src_set_ratio` to fix artifacts within `Sample` playback (#7321)
sakertooth Jun 15, 2024
2adbb16
arpeggiator sorted mode fixed (#7025)
szeli1 Jun 17, 2024
e76a99e
Suppress warnings in third-party code (#7319)
DomClark Jun 17, 2024
e400d81
set "child subreaper" process attribute on Linux (#7315)
notaz Jun 18, 2024
39b7d16
Fix caching for macOS CI jobs (#7326)
DomClark Jun 18, 2024
26646c6
Style format `DrumSynth` (#7189)
Monospace-V Jun 22, 2024
a1f7753
Fix MSVC warnings up to level 2 (#7329)
DomClark Jun 22, 2024
aaca5fb
Remove `MemoryHelper` (#7335)
Rossmaxx Jun 24, 2024
1036144
Fix uninitialized compressor values (#7343)
LostRobotMusic Jun 24, 2024
6634cec
Add Granular Pitch Shifter effect (#7328)
LostRobotMusic Jun 26, 2024
9a0db6a
Fix pitch shifter glide 0 division (#7348)
LostRobotMusic Jun 26, 2024
f2fbcec
Fix bad Granular Pitch Shifter init values (#7354)
LostRobotMusic Jun 27, 2024
7c74fbc
Capitalise root sidebar widget (#7350)
AW1534 Jun 27, 2024
118ca4e
Cleanup of MinGW-related scripts (#7327)
FyiurAmron Jun 28, 2024
a0fbd7e
Initialize LOMM arrays (#7355)
LostRobotMusic Jun 30, 2024
286e62a
Simplify sample frame operations (make it a class) (#7156)
michaelgregorius Jun 30, 2024
13a05b9
Use recursive mutex for `requestChangeInModel`/`doneChangeInModel` (#…
sakertooth Jun 30, 2024
edf6bf8
Remove mingw-std-threads from 3rd party deps and use native libs/head…
FyiurAmron Jun 30, 2024
fb5268e
Adds "Show Hidden Content" checkbox (#7309)
AW1534 Jun 30, 2024
0bc911e
Reduce Memory Leaks (#7345)
AW1534 Jul 1, 2024
449e669
Revert "Reduce Memory Leaks (#7345)" (#7360)
sakertooth Jul 1, 2024
538572a
Change `fpp_t` usage in `SampleFrame` to use `size_t` instead (#7362)
sakertooth Jul 2, 2024
0384813
Fix buzz in Monstro's 2nd oscillator (#7334) (#7368)
michaelgregorius Jul 5, 2024
bdd94ec
Run CMake with -Werror=dev in CI (#7322)
DomClark Jul 6, 2024
f2c815b
Remove term "blacklist" (#7365)
JohannesLorenz Jul 8, 2024
1420a1f
Define `fpp_t` and `f_cnt_t` to be of `size_t` (#7363)
sakertooth Jul 9, 2024
12632e6
Remove `BufferManager::clear` (#7378)
Rossmaxx Jul 13, 2024
9c0fc8f
Made it so ZynAddSubFx isn't lowpassed by default (#7381)
bratpeki Jul 20, 2024
851c884
Re-enable disabled GCC warnings where possible (#7379)
DomClark Jul 21, 2024
2f5f12a
Switch to libsamplerate's callback API in `Sample` (#7361)
sakertooth Jul 24, 2024
99c30ea
Fixed alt + left or right causing a crash in PianoRoll (#7390)
szeli1 Jul 24, 2024
592da1c
Fix include of array in BasicFilters.h (#7398)
michaelgregorius Jul 27, 2024
627209a
Apply warning flags to RemoteVstPlugin too (#7389)
DomClark Jul 27, 2024
0d3c43d
Fixup of #7381 (#7401)
JohannesLorenz Jul 28, 2024
1c86584
Lv2: Improve plugin description (#7357)
JohannesLorenz Jul 28, 2024
ce17c95
Add Continuous Auto-Scrolling (#7396)
regulus79 Aug 4, 2024
b7548b7
Warn about LADSPA problems (#7267)
michaelgregorius Aug 4, 2024
1f224ad
Add yamllint checks (#7424)
JohannesLorenz Aug 4, 2024
735e483
Fix memleaks in help/version (#7423)
JohannesLorenz Aug 4, 2024
5b366cf
Revert "Switch to libsamplerate's callback API in `Sample` (#7361)" (…
sakertooth Aug 4, 2024
c16616c
Fix duplication of solo state when cloning tracks (#7391)
szeli1 Aug 5, 2024
828cefb
Remove `typeInfo` struct from `lmms_basics.h` (#7380)
Rossmaxx Aug 7, 2024
6c7fecd
Fix build regression from #7380 (#7437)
Rossmaxx Aug 7, 2024
632966c
Do not put the main thread in realtime or high priority (#7436)
sakertooth Aug 7, 2024
44a8b03
Fix #5851: Implement `EffectRackView::sizeHint()` (#7428)
JohannesLorenz Aug 10, 2024
74c73e5
SDL driver's input and output device configuration via combo box (#7421)
michaelgregorius Aug 10, 2024
0e96c26
Fix bug with continuous autoscrolling when smooth scrolling is enable…
regulus79 Aug 11, 2024
d8e4d8c
Remove support for SDL1 (#7443)
michaelgregorius Aug 11, 2024
bda1a9c
Add input dialog to the mixer channel LCD spin box (#7399)
szeli1 Aug 11, 2024
58ce9b4
Fix track handles dissapearing (#6338)
allejok96 Aug 16, 2024
5e697f0
Fix zooming and sliding of the waveform view in AudioFileProcessor (#…
szeli1 Aug 19, 2024
88ee83b
Do not save MIDI connections in presets (#7445)
michaelgregorius Aug 20, 2024
ff8c470
Continue processing `Song` even when no tracks are found (#7458)
sakertooth Aug 20, 2024
a992019
Cleanup `lmms_math.h` (#7382)
Rossmaxx Aug 28, 2024
35f350e
Remove Noise class from flanger (#7473)
Rossmaxx Aug 28, 2024
9a76d31
Fix typo in DataFile.cpp (#7478)
Pruchniakowski Sep 2, 2024
b81f806
Fix: unnecessary space in Update EqControlsDialog.cpp (#7485)
Pruchniakowski Sep 3, 2024
d703f39
Process metronome every MIDI tick (#7483)
sakertooth Sep 4, 2024
4831495
Fix sample clip position when reversing (#7446)
regulus79 Sep 13, 2024
588aab3
Replace Compressor infinite ratio icons (#7501)
LostRobotMusic Sep 15, 2024
7d35d42
SlicerT UI update (#7453)
DanielKauss Sep 17, 2024
4803bbb
Shrink mixer channel strip (#7502)
sakertooth Sep 18, 2024
0129419
Fix Lb302 silence (#7504)
sakertooth Sep 18, 2024
c952d56
Restore some whitespace to the mixer channel layout (#7507)
sakertooth Sep 19, 2024
1d7ed16
Make the send button and receive arrow occupy the same space in mixer…
sakertooth Sep 19, 2024
1825208
Refactor Effect processing (#7484)
messmerd Sep 21, 2024
6a7b23b
Partially revert #7453 (#7519)
sakertooth Sep 26, 2024
729593c
Fix hardcoded fonts scaling issues (#7493)
Rossmaxx Sep 28, 2024
860749a
Reformat `MixerChannelView` classes (#7431)
sakertooth Sep 30, 2024
121d608
Reintroduce fast math functions (#7495)
messmerd Oct 1, 2024
a83130f
.tx/config: migrate the configuration to v2 format
liushuyu Oct 2, 2024
e0ae8a1
locale: Update translations
lmmsservice Oct 2, 2024
0363ee6
fix various AudioFileProcessor bugs (#7533)
RiedleroD Oct 6, 2024
7dbc809
Adding proportional scrolling (#7476)
regulus79 Oct 6, 2024
639e122
Fix empty editor windows (#7515)
firewall1110 Oct 7, 2024
79eac41
Removed dead code using #if 0 (#7521)
Rossmaxx Oct 7, 2024
066f6b5
Align the rename line edit for tracks (#7414)
BaraMGB Oct 7, 2024
378ff8b
Fix the maximization of sub windows (#7530)
michaelgregorius Oct 10, 2024
fb5516c
Track operations widget with layout (#7537)
michaelgregorius Oct 12, 2024
97b61bb
Make `PluginView::isResizable` a virtual (#7541)
JohannesLorenz Oct 12, 2024
b8b1dae
Optimize dBFS/amplitude conversion functions (#7535)
LostRobotMusic Oct 15, 2024
e6776bc
Remove usage of `QTextCodec` in Hydrogen Import plugin (#7562)
messmerd Oct 23, 2024
1f37c9b
Inline `TimePos` and `TimeSig` functions to improve performance (#7549)
sakertooth Oct 26, 2024
b5de1d5
Fix PeakController attack/decay, use linear interpolation between sam…
cyberrumor Oct 28, 2024
9912fd8
Add member variable for base sample rate and inline sample rate gette…
Rossmaxx Oct 30, 2024
07baf9e
Tidy up `MixerChannelView` (#7527)
sakertooth Nov 3, 2024
e36463c
Update macOS CI (#7572)
messmerd Nov 6, 2024
ada836c
Fix crash on Xpressive when using `integrate` function (#7499)
gnudles Nov 8, 2024
8bbb61d
fix detached windows being shown after toggleVisibility() is called
sqrvrt Nov 17, 2024
c5347b3
Merge branch 'master' into feature/detach-window
messmerd Nov 17, 2024
8fab5ee
Merge branch 'feature/detach-window' of https://github.com/LMMS/lmms …
messmerd Nov 17, 2024
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
Prev Previous commit
Next Next commit
Add peak indicators (#7295)
Add peak indicators to the mixer strips. They show the maximum peak value
that was observed and can be reset by clicking on them.

## Implementation details
The implementation works via a signal/slot mechanism. The `Fader` class
has a new signal `peakChanged` which reports peak values as
amplifications. A new class `PeakIndicator` is added which has a slot
`updatePeak` which is connected to the new signal in `Fader`.

The `PeakIndicator` inherits from `QLabel` and mainly deals with updating
the label text from the current peak value.

Add a `PeakIndicator` instance to `MixerChannelView`. Add a `reset`
method to `MixerChannelView` so that the mixer channel can be reset on
the loading of new projects, etc. The current implementation resets the
peak indicator back to -inf dbFS. The `reset` method is called in
`MixerView::clear`.

Remove the clamping in `Fader::setPeak` so that all peaks are reported.
Emit the new signal if the peak changes.
  • Loading branch information
michaelgregorius authored Jun 1, 2024
commit 042f8ac32539fec6eb90bbaacfac0db2be896e4e
5 changes: 5 additions & 0 deletions data/themes/classic/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -661,6 +661,11 @@ lmms--gui--MixerChannelView QGraphicsView {
border-style: none;
}

lmms--gui--PeakIndicator {
background-color: #111811;
font-size: 7pt;
}

/* persistent peak markers for fx peak meters */
lmms--gui--Fader {
qproperty-peakOk: rgb( 74, 253, 133);
Expand Down
5 changes: 5 additions & 0 deletions data/themes/default/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,11 @@ lmms--gui--MixerChannelView QGraphicsView {
border-style: none;
}

lmms--gui--PeakIndicator {
background-color: #111811;
font-size: 7pt;
}

/* persistent peak markers for fx peak meters */
lmms--gui--Fader {
qproperty-peakOk: #0ad45c;
Expand Down
3 changes: 3 additions & 0 deletions include/Fader.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ class LMMS_EXPORT Fader : public QWidget, public FloatModelView
setUnit(txt_after);
}

signals:
void peakChanged(float peak);

private:
void contextMenuEvent(QContextMenuEvent* me) override;
void mousePressEvent(QMouseEvent* ev) override;
Expand Down
5 changes: 5 additions & 0 deletions include/MixerChannelView.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ namespace lmms

namespace lmms::gui
{
class PeakIndicator;

constexpr int MIXER_CHANNEL_INNER_BORDER_SIZE = 3;
constexpr int MIXER_CHANNEL_OUTER_BORDER_SIZE = 1;

Expand Down Expand Up @@ -90,6 +92,8 @@ namespace lmms::gui
QColor strokeInnerInactive() const;
void setStrokeInnerInactive(const QColor& c);

void reset();

public slots:
void renameChannel();
void resetColor();
Expand Down Expand Up @@ -119,6 +123,7 @@ namespace lmms::gui
QLabel* m_receiveArrow;
PixmapButton* m_muteButton;
PixmapButton* m_soloButton;
PeakIndicator* m_peakIndicator = nullptr;
Fader* m_fader;
EffectRackView* m_effectRackView;
MixerView* m_mixerView;
Expand Down
60 changes: 60 additions & 0 deletions include/PeakIndicator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* PeakIndicator.h - Peak indicator widget
*
* Copyright (c) 2024- Michael Gregorius
*
* This file is part of LMMS - https://lmms.io
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/


#ifndef LMMS_GUI_PEAKINDICATOR_H
#define LMMS_GUI_PEAKINDICATOR_H

#include "lmms_export.h"

#include <QLabel>


namespace lmms::gui
{

class LMMS_EXPORT PeakIndicator : public QLabel
{
Q_OBJECT
public:
PeakIndicator(QWidget* parent);

void resetPeakToMinusInf();

public slots:
void updatePeak(float peak);

protected:
void mousePressEvent(QMouseEvent* e) override;

private:
void updatePeakDisplay();

private:
float m_peak;
} ;

} // namespace lmms::gui

#endif // LMMS_GUI_PEAKINDICATOR_H
1 change: 1 addition & 0 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ SET(LMMS_SRCS
gui/widgets/MixerChannelLcdSpinBox.cpp
gui/widgets/NStateButton.cpp
gui/widgets/Oscilloscope.cpp
gui/widgets/PeakIndicator.cpp
gui/widgets/PixmapButton.cpp
gui/widgets/SimpleTextFloat.cpp
gui/widgets/TabBar.cpp
Expand Down
10 changes: 10 additions & 0 deletions src/gui/MixerChannelView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "Mixer.h"
#include "MixerChannelView.h"
#include "MixerView.h"
#include "PeakIndicator.h"
#include "Song.h"
#include "ConfigManager.h"

Expand Down Expand Up @@ -121,6 +122,9 @@ namespace lmms::gui

m_fader = new Fader{&mixerChannel->m_volumeModel, tr("Fader %1").arg(channelIndex), this};

m_peakIndicator = new PeakIndicator(this);
connect(m_fader, &Fader::peakChanged, m_peakIndicator, &PeakIndicator::updatePeak);

m_effectRackView = new EffectRackView{&mixerChannel->m_fxChain, mixerView->m_racksWidget};
m_effectRackView->setFixedWidth(EffectRackView::DEFAULT_WIDTH);

Expand All @@ -133,6 +137,7 @@ namespace lmms::gui
mainLayout->addWidget(m_channelNumberLcd, 0, Qt::AlignHCenter);
mainLayout->addWidget(m_renameLineEditView, 0, Qt::AlignHCenter);
mainLayout->addLayout(soloMuteLayout, 0);
mainLayout->addWidget(m_peakIndicator);
mainLayout->addWidget(m_fader, 1, Qt::AlignHCenter);

connect(m_renameLineEdit, &QLineEdit::editingFinished, this, &MixerChannelView::renameFinished);
Expand Down Expand Up @@ -340,6 +345,11 @@ namespace lmms::gui
m_strokeInnerInactive = c;
}

void MixerChannelView::reset()
{
m_peakIndicator->resetPeakToMinusInf();
}

void MixerChannelView::renameChannel()
{
m_inRename = true;
Expand Down
2 changes: 2 additions & 0 deletions src/gui/MixerView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,8 @@ void MixerView::clear()
for (auto i = m_mixerChannelViews.size() - 1; i > 0; --i) { deleteChannel(i); }
getMixer()->clearChannel(0);

m_mixerChannelViews[0]->reset();

refreshDisplay();
}

Expand Down
4 changes: 2 additions & 2 deletions src/gui/widgets/Fader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -207,22 +207,22 @@ void Fader::wheelEvent (QWheelEvent* ev)
///
void Fader::setPeak(float fPeak, float& targetPeak, float& persistentPeak, QElapsedTimer& lastPeakTimer)
{
fPeak = std::clamp(fPeak, m_fMinPeak, m_fMaxPeak);

if (targetPeak != fPeak)
{
targetPeak = fPeak;
if (targetPeak >= persistentPeak)
{
persistentPeak = targetPeak;
lastPeakTimer.restart();
emit peakChanged(persistentPeak);
}
update();
}

if (persistentPeak > 0 && lastPeakTimer.elapsed() > 1500)
{
persistentPeak = qMax<float>(0, persistentPeak-0.05);
emit peakChanged(persistentPeak);
update();
}
}
Expand Down
84 changes: 84 additions & 0 deletions src/gui/widgets/PeakIndicator.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
* PeakIndicator.cpp - Peak indicator widget
*
* Copyright (c) 2024- Michael Gregorius
*
* This file is part of LMMS - https://lmms.io
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/

#include "PeakIndicator.h"

#include "lmms_math.h"

#include <QBoxLayout>
#include <QMouseEvent>


namespace lmms::gui
{

PeakIndicator::PeakIndicator(QWidget* parent) :
QLabel(parent),
m_peak(0.f)
{
setAlignment(Qt::AlignCenter);

updatePeakDisplay();
}

void PeakIndicator::resetPeakToMinusInf()
{
m_peak = 0;
updatePeakDisplay();
}

void PeakIndicator::updatePeak(float peak)
{
if (peak > m_peak)
{
m_peak = peak;
updatePeakDisplay();
}
}

void PeakIndicator::mousePressEvent(QMouseEvent* e)
{
if (e->buttons() & Qt::LeftButton)
{
resetPeakToMinusInf();
}
}

void PeakIndicator::updatePeakDisplay()
{
// Treat everything below -144 dbFS as -inf. Otherwise some residual signals show up
// in the form of very small dbFS values, e.g. -857.1 dbFS.
// TODO Make the threshold configurable in the settings?
if (m_peak <= dbfsToAmp(-144.))
{
setText(tr("-inf"));
}
else
{
auto dbfs = ampToDbfs(m_peak);
setText(QString::number(dbfs, 'f', 1));
}
}

} // namespace lmms::gui