Commit Graph

7771 Commits

Author SHA1 Message Date
Michael Gregorius
dac1f77347 Code review changes (#6548)
Add a space after some while loops. Fix a typo in a comment.
2023-08-11 17:55:26 +02:00
Michael Gregorius
4f01094d98 Fix base notes of B+B tracks (#6548)
Fix the base notes and automations of B+B tracks.

This fixes for example the problem that when a TripleOscillator had been
put into a B+B track, e.g. with version 1.2 that it sounded too high
when being loaded with a current master version. The cause seems to be
that the notes of the instrument pattern are corrected/transposed too
often (likely due to the collection of all tracks starting from the
song/document root).

The multiple correction of notes is fixed by traversing the song
structure in a more consise way. First all track containers of the song
are collected and for each of them the tracks are collected. These
tracks are then fixed one by one. B+B tracks are getting a special
handling while doing so. It is assumed that a B+B track cannot have
other B+B tracks inside and therefore all sub tracks of the B+B track
are searched for so that they can be fixed recursively.

Refactor some more functionality into static helper methods:
* Everything beneath a track is now fixed by the helper method
`fixTrack`.
* The fix of the base notes of the instruments themselves and the
extraction of the ids of automated base notes has been moved into
`fixInstrumentBaseNoteAndCollectIds`.
* The lambda `affected` has been converted into a static method because
it is must be accessible by one of the static helper methods.
* The code for fixing the automation tracks of a song has been moved
into the helper function `fixAutomationTracks`.
2023-06-08 14:25:20 +02:00
Michael Gregorius
cf83b52783 Fix nested for loops with identical variables (#6548)
Fix the problem with the nested for loops that all had variables called
"i" by extracting a helper method with a corrected nesting. Due the
extraction we do not have to care anymore if the correction is running
beneath another for loop with potentially the same variable names.
2023-06-08 11:27:04 +02:00
Michael Gregorius
502e95d5b4 Try to fix GitHub builds
The GitHub builds seem to need the explicit include which for some
reason is not needed on my developer machine.
2023-06-08 11:09:38 +02:00
Michael Gregorius
02fef122ae Extend fix for mixed automation tracks/patterns (#6548)
Move the fix for the automated base notes to the code that fixes the
non-automated base notes.

Improve the fix for automation tracks and patterns by potentially
splitting them into two tracks:
* The original track which is adjusted to only contain patterns with
targets that are not base notes.
* A cloned track that only contains patterns with base note targets.

This is done by iterating over all automation tracks and checking which
types of automations they contain:
* Base note automations
* Automations of other targets

The result for each automation track are then evaluated as follows.
* If an automation track does not contain any base note automations it
is kept as it is, i.e. nothing is done.
* If an automation track only contains patterns with base note
automations its patterns are corrected in place.
* If an automation track contains patterns with base note automations
and other targets then the track is duplicated so that we can split it
as described above. This split and correction is done on a per pattern
level. Patterns that would become empty are removed.

Cloned tracks will keep the same names and attributes as their original
tracks.

TODOs
------
* Base notes are read as integers, corrected by an integer value of 12
and then stored back as an integer. In some files base notes have float
values, i.e. if the file was stored after the base notes have been
automated linearly.
* B&B tracks are not corrected although they can contain instruments
with (automated) base notes!
* Nested for-loops with "i" as their running variables. (Fix in a
separate commit)
2023-06-08 10:48:02 +02:00
Michael Gregorius
9f34c5cfa3 Remove debug code from DataFile::upgrade
Remove debug code from DataFile::upgrade which was accidentally
committed.
2023-06-05 20:20:34 +02:00
Michael Gregorius
20c83e5021 Fix automated base notes and their automations (#6548)
Fix all base notes that are used in automations and their corresponding
automation values. Base notes that are automated are stored as elements
in the save file whereas non-automated base notes are stored as
attributes. So far the method `upgrade_extendedNoteRange` only upgraded
the non-automated base notes that are stored in attributes. This commit
fixes the automated ones which are stored in elements.

The fix works as follows:
* Collect all base note elements.
* Store their ids in a set so that we can later identify automations
  that reference them.
* Collect all automation pattern and check if they reference a base
  note.
* Adjust the values and out values of all automations that reference
  base notes.

Note: for many older files the out values will be introduced by the
upgrade `method upgrade_automationNodes` and do not appear in the files
themselves!
2023-06-05 20:09:30 +02:00
Michael Gregorius
bd5f1b9ea1 Fix uninitialized variable "pCurPreset" (#6639) (#6723)
Fix the uninitialized variable pCurPreset by setting it to nullptr.

Please note that it looks as if the nullptr is now being passed to the
function fluid_sfont_iteration_next_wrapper. However, the function does
not use the parameter anyway and then the variable is set to the result
of that function.
2023-06-04 22:44:48 -05:00
Michael Gregorius
3ab8eeeacd Merge pull request #6718 from michaelgregorius/6711-AutomationCrash
Fix automation crash (#6711)
2023-06-02 22:49:34 +02:00
Michael Gregorius
0ebc18941b More whitespace adjustments (#6711)
More whitespace adjustments as proposed in the code review.
2023-06-02 22:17:03 +02:00
Michael Gregorius
9fe7fbd69e Simplify logic of Model::fullDisplayName (#6711)
Simplify the logic of the method Model::fullDisplayName.

Please note that this shows that with the current logic if the parent
model has a non-empty name like "parentmodel" and the name of the child
model is empty the result is the name "parentmodel >" which might not be
what's wanted.
2023-06-02 20:51:28 +02:00
Michael Gregorius
fda938fcca Code review changes (#6711)
Remove underscores and whitespace in the Model files.
2023-06-02 20:51:07 +02:00
Lost Robot
8a07328a93 Remove non-directory expansion 2023-06-02 09:10:18 -05:00
Michael Gregorius
43319a8d79 Move implementations of Model into cpp file (#6711)
Move the implementation of the Model methods into Model.cpp so that
recompiles after changes are much quicker. Make Model::
isDefaultConstructed const.
2023-05-26 11:11:45 +02:00
Michael Gregorius
75627a15f9 Fix automation crash (#6711)
Fix a crash that occurs if the zooming or snapping model of the Song
Editor is used for automation.

The crash is caused by a failed static_cast to a Model* in
Model::parentModel(). The cast fails because in the constructor of
SongEditor the SongEditor is set as the parent of the zooming and
snapping model:
m_zoomingModel->setParent(this);
m_snappingModel->setParent(this);

This commit is rather a "band aid" fix because it only fixes the crash
by changing the static_cast to a dynamic_cast. However this means that
the name of the automation clip is initially empty.

A better solution would be to not use the Qt parent/child relationships
to implement the model hierarchies.
2023-05-26 10:52:35 +02:00
Tres Finocchiaro
b322f8022e Add .DirIcon to AppImage (#6715)
* Add .DirIcon to AppImage
* Add X-AppImage-Version to .desktop file
* Closes #6695
2023-05-23 03:14:28 -04:00
superpaik
d551938cbd Add confirm removal on mixer channels (#6691)
* Add confirm removal on mixer channels

Add confirm removal popup when the user calls the action "remove channel" on a mixer channel that is in use (receives audio from other channel or track). Set a config variable to keep track if the user don't want to be asked again. Adding a scroll on settings-general tab because there weren't enough space on the area.

* Core Mixer function channel in use

New core Mixer function to check if a given channel is in use (receives audio)

---------

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: saker <sakertooth@Gmail.com>
2023-05-10 20:14:24 +09:00
Lost Robot
87a57db593 Add instrument plugins to Song Editor via right click (#6698) 2023-05-06 13:16:07 +09:00
Bimal Poudel
3440d49aa8 Fix comparing int with bool (#6637)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-04-30 13:07:13 +09:00
Michael Gregorius
ffe3bb4399 Merge pull request #6607 from michaelgregorius/ImproveReadabilityOfTextFloat
Improve readability of text floats
2023-04-29 16:53:58 +02:00
Lost Robot
f13e95932d Include cstdint (#6697) 2023-04-25 11:06:15 -07:00
Lost Robot
1f93dbc124 EQ default shelf reso (#6694) 2023-04-21 11:17:53 -07:00
Dalton Messmer
64003fb004 Fix FreeBoy CPU time bug (#6680) 2023-04-18 14:39:02 -05:00
Gregaras
95cd028e5d Update InstrumentTrackView.cpp (#6687) 2023-04-18 11:39:15 +09:00
Michael Gregorius
b90156bedd Coding conventions
Adjust the code style of the adjusted and created classes according to
the coding conventions.
2023-04-09 17:02:26 +02:00
Lost Robot
2e572caa58 Add Dispersion effect (#6683) 2023-04-05 21:08:24 -07:00
Lost Robot
fb529a19c5 Make note octave highlight in piano roll obey microtonality (#6663) 2023-03-26 12:30:12 -07:00
Arash Partow
2baa23ee1a Update ExprTk package 2023-02-26 15:51:24 +01:00
JGHFunRun
ac080513fd Fixed typo (#6652) 2023-02-23 23:31:07 +01:00
Johannes Lorenz
5b84b65236 Lv2: Update copyright 2023-02-21 21:03:00 +01:00
Johannes Lorenz
49a6abb343 Lv2: Add/improve some comments 2023-02-21 21:03:00 +01:00
Johannes Lorenz
f48dd0fb1f Fixes #6401: Reload Lv2 plugin on SR change
This also includes banning blop's wavedata plugins, because they crash
on reloading. Reference: https://gitlab.com/drobilla/blop-lv2/-/issues/3
2023-02-21 21:03:00 +01:00
Johannes Lorenz
7649f5ed24 Lv2ControlBase: Remove unused virtuals
They were never used. Possibly they were just in the code because the
code originated from #4662 (where the virtuals would also be
omittable...).
2023-02-21 21:03:00 +01:00
madisonsilver
9bcf63c5da Fix issues #6383 and #4410 (pause issues). (#6590)
Fixes #6383 and fixes #4410.

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-02-19 11:01:11 +09:00
dev
192119621f Save Piano Roll behaviour at stop state 2023-02-18 10:23:06 -06:00
dj-pixus
1ddd204250 workize output note setting 2023-02-18 10:10:06 -06:00
Proud Electrics Studios
1a68aee149 PatternClips now use startTimeOffset, too, and can be resized on their start [FIX 7] 2023-02-18 09:39:46 -06:00
Kevin Zander
534e7edf0f Merge pull request #6603 from messmerd/include-guard-fix
Fix include guards and copyright statements
2023-02-18 09:32:27 -06:00
Lost Robot
8ba6a5f89e Draggable effects (#6648)
Reorder effects in Mixer with the mouse via click and drag
2023-02-18 09:22:16 -06:00
Bimal Poudel
507fa239dd Update BashCompletion.cmake (#6634) 2023-02-08 16:16:10 +09:00
Hyunjin Song
9d5d86d863 Update Docker image version for ShellCheck 2023-01-27 21:55:43 +09:00
Lost Robot
cf13cfa57a Update HIIR submodule to latest (#6622) 2023-01-26 12:28:37 -08:00
Lost Robot
4d1d8871cd Add HIIR library to LMMS (#6553) 2023-01-26 11:29:41 -08:00
Hyunjin Song
c8a9d45ef0 [ci skip] Remove the reorganization disclaimer 2023-01-24 10:46:11 +09:00
Johannes Lorenz
50a4297c97 [ci skip] Update .clang-format
This adds previously applied checks to the `.clang-format` file and also
reorders the checks alphabetically.
2023-01-21 18:07:07 +01:00
Johannes Lorenz
22eb7a1364 clang-tidy: Apply readability-const-return-type 2023-01-21 17:44:48 +01:00
Hyunjin Song
f89d52fa21 Fix more Qt deprecation warnings (#6615)
* Add <QHash> to PluginFactory.h

* Handle one more deprecated QTextStream::endl

* Replace QLayout::setMargin with setContentsMargins

* Replace Qt::MidButton with Qt::MiddleButton

* Replace QPalette::Background with QPalette::Window

* Fix deprecation warnings in LcdFloatSpinBox
2023-01-18 10:16:28 +09:00
Hyunjin Song
158bb50816 Fix recent files menu on old KDE in a different way (#6612) 2023-01-17 21:56:31 +09:00
Hyunjin Song
e8e54a7ba8 Remove more global automation from MidiImport (#6605) 2023-01-17 21:17:38 +09:00
Michael Gregorius
17295a4f86 Introduce SimpleTextFloat
Introduce the new class SimpleTextFloat which simply shows a text and
that works like a pseudo tool tip with a narrow margin. It was extracted
from TextFloat to adhere to the single responsibility principle.

The new class is used by:
* Fader: display the current volume when moving the fader
* Knob: display the current value when the knob is moved
* PianoRoll: display the current value when setting the note volume and
  panning

Add stylings for the new widget in style.css.
2023-01-10 19:20:26 +01:00