Give the reset buttons for auto save and buffer size a rectangular shape. The size is fixed but the button and the pixmap scale with different scaling factors so that should be ok.
lilv can return the scale points in randomized order, and so the linked
models (of stereo effects wit 2 `Lv2Proc`) may have different scale
points. This would mean that the same combo enumeration value would have
different float values in linked models. This problem is fixed by
sorting the scale values.
Also, it is more natural for users if scale points are enumerated in a
numerical order.
This displays a warning dialog if the users requests unusual
buffersizes:
- buffersizes less than 32
- buffersizes which are not a (natural number) power of 2
This commit also replaces some `setGeometry` stuff by `QBoxLayout`.
This improves the way digits are calculated for display in
`Lv2ViewProc`:
- More than 2 digits are now recognized
- Minus signs are now recognized
- Tests have been added
Replace the check for a `nullptr` buffer with a check that checks if the NotePlayHandle uses a buffer. This is effectively the same condition that's used by `PlayHandle::doProcessing` to decide if it should call play with a `nullptr` in the first place. Hence it should be the most fitting check.
Remove whitespace in methods and add it to the parenthesis of some statements. Remove underscores from parameter names. Remove usage of `this` pointer.
Add `auto` keyword to shorten line length in `InstrumentPlayHandle::play`.
Move `const_cast` of `NotePlayHandle` closer to the `process` method as this method is the reason that the cast is needed in the first place. One might also add a version of `nphsOfInstrumentTrack` that returns a non-const result but it seems to be a general problem of a missing clear responsibility so I keep it as is.
Remove identical calls to `InstrumentTrack::processAudioBuffer` which appear in the overridden implementations of `Instrument::play` and `Instrument::playNotes`. Instead the call to `processAudioBuffer` has been moved into `InstrumentPlayHandle::play` and `InstrumentTrack::playNote`. These two methods call the aforementioned methods of `Instrument`. Especially in the case of `InstrumentTrack::playNote` the previous implementation resulted in some unncessary "ping pong" where `InstrumentTrack` called a method on an `Instrument` which then in turn called a method on `InstrumentTrack`. And this was done in almost every instrument.
In `InstrumentTrack::playNote` an additional check was added which only calls `processAudioBuffer` if the buffer is not `nullptr`. The reason is that under certain circumstances `PlayHandle::doProcessing` calls the `play` method by explicitly passing a `nullptr` as the buffer. This behavior was added with commit 7bc97f5d5b. Because it is unknown if this was done for some side effects the code was adjusted so that it behaves identical in this case.
Move the complex implementation for `InstrumentPlayHandle::play` and `InstrumentPlayHandle::isFromTrack` into the cpp file and optimize the includes.
* FileDialog : Adding mounted volumes on Linux
* Adding some file systems types and collapsing 2 'if' statements in one
* Removing the foreach
* Correcting PREPROCESSOR directive
* fixes#6354: Sample and Hold for LFO Controller
LFO controller's "white noise" wave shape didn't respect the frequency knob at all, so
Sample-and-Hold was added to extend the functionality of the LFO Controller with this
random waveshape. The original functionallity can still be accessed by setting the
FREQ knob to minimum (0.01)
---------
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: saker <sakertooth@gmail.com>
* Change the title for SideBarWidgets to be vertically centered related to icon and with no underlining
* Update src/gui/SideBarWidget.cpp
Co-authored-by: saker <sakertooth@gmail.com>
* Updating FileBrowser display when searching : showing matching files
* Correcting increment and removing duplicated calls
* Correcting reload tree when filter is activated
---------
Co-authored-by: saker <sakertooth@gmail.com>
The quantPos arg of AutomationClip::setDragValue causes the node time
to be quantized before its looked up in the timeMap iterator.
This results in the node not being found and a new one being created
inside the setDragValue function even though we had found one.
Simply setting it to true causes this bug, simply setting it to false
causes a new node to be created off grid/not snapped. So the fix
is to quantize the position for the lookup only if we haven't found an
existing node under the cursor.
* Profiler rework
* Workaround for GCC bug
* Rollback QFile removal
* Use enum instead of a plain index to describe detailed stats
* Use the GCC workaround code for all compilers to avoid redundancy
* Update and fix comments
* Implement suggestions from review
* Split AudioEngine::renderNextBuffer() into separate functions, fix old formatting
* Remove QFile include
* Revert formatting changes
* Apply suggestion from review (remove unnecessary template parameter)
* Revert more formatting changes
* Convert DetailType to enum class
* DetailType enum class improvements suggested in review
* Use std::atomic for m_detailLoad
* RAII-style profiler probes
* Apply suggestions from code review
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
* Fix namespace comment
* Improve CPU load widget precision and use floats for load computations
* Atomic m_cpuLoad
* Add custom step size support for CPULoadWidget
* Apply suggestions from review (convert the profiler probe into a nested class, other small changes)
* Do not limit stored load averages to 100%
---------
Co-authored-by: sakertooth <sakertooth@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
* Fix LADSPA effects memory leak
* Fix buffer overflow in PianoView
* Avoid using invalid iterators in AutomationClip
* Fix memory leaks in SimpleTextFloat
* Handle potential case where QMap::lowerBound(...) returns end iterator
* Implement suggestions from review
* Replace deprecated sprintf() function
* Update microtuner-related UI (add more clues explaining how to use it)
* Simpler wording in the tooltips for "apply" buttons
* Post-merge fix of a forward declaration
* Rename Misc tab to Tuning and transposition; move Microtuner config dialog to Edit menu and make it also available from instrument tab
* Enable word wrap on "MIDI unsupported" label
* Remove forgotten new unnecessary includes
* Rename InstrumentMiscView to InstrumentTuningView in locales
* Showing Knob value on mouse over
* Correcting minors source code issues
* Correcting double QTimer include
* Removing blank lines
* Removing space and add one
* Update src/gui/widgets/SimpleTextFloat.cpp
Co-authored-by: saker <sakertooth@gmail.com>
* Correcting QTimer
* Remove a parameter that has the default value
---------
Co-authored-by: saker <sakertooth@gmail.com>
* Add mixer channel LCD to SampleTrackView
* Increase sizes to compensate for LCD box
The DEFAULT_SETTINGS_WIDGET_WIDTH and
DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT
were both increased by +32 pixels. TRACK_OP_WIDTH
and TRACK_OP_WIDTH_COMPACT were then changed
relative to that increase.
* Use Qt layout in SampleTrackView
* Add mixer channel LCD to InstrumentTrackView
* Move LCD box to the right of the track label
* Revert changes to TRACK_OP_WIDTH and TRACK_OP_WIDTH_COMPACT
* Change the title for SideBarWidgets to be vertically centered related to icon and with no underlining
* Update src/gui/SideBarWidget.cpp
Co-authored-by: saker <sakertooth@gmail.com>
---------
Co-authored-by: saker <sakertooth@gmail.com>
Towards the end of the development for the fix of #6548 (via #6725) the upgrade code was refactored into its own class. While doing so it was forgotten to actually call the `upgrade` method on the `UpgradeExtendedNoteRange` instance. As a result almost all files should currently open in a wrong state with many instruments transposed. This commit fixes this.
Also explicitly check the assertion that BB tracks do not contain other BB tracks.
* Modifier keys for mouse wheel adjustments (#6769)
Give the users the option to use modifier keys (Shift, Ctrl, Alt) to
switch between different scales of adjustment when changing knob values
using the mouse wheel.
The commit implements the following behaviour:
* Using the mouse wheel without any modifier keys makes coarser
adjustments than the current default, i.e. the range of the
parameter can be swept with 100 mouse wheel events instead of 2000.
* Pressing the "Shift" key while using the mouse wheel allows making
coarser adjustments than the default. The range can be swept with
10 mouse wheel events.
* Pressing the "Ctrl" key allows making finer adjustments than the
default. The range is swept with 1000 events.
* Pressing the "Alt" key allows even finer adjustments. The range is
swept with 2000 events (the current default).
Most of these scales are organized in magnitudes (10, 100, 1000) which
should give a very natural feeling to "zone in" on a value.
* Fix indentation of comments
Fix the indention of comments as Qt Creator seems to be incapable of
copy-pasting code in a sensible way.
* Fix comments
Fix the comments by describing better the ideas instead of referencing values.
* Fix format in src/gui/widgets/Knob.cpp
---------
Co-authored-by: saker <sakertooth@gmail.com>
* fixed#6759: Context menu string doesn't update
The TempoSyncKnobModel didn't emit any signal when the a
SyncMode::Custom was recaclulated.
Also it looks like someone broke the TempoSyncKnowModel
bc SyncMode had been renamed to TempoSyncMode and the
build was screaming.
* fixed#6759: Knob custom tempo
The TempoSyncKnobModel didn't emit any signal when the a SyncMode::Custom was recalculated.
Also it looks like someone broke the TempoSyncKnowModel
because SyncMode had been renamed to TempoSyncMode and the
build was screaming.
Recommit, fixed silly mistake where the signal would be emitted twice
on mode change to Custom.
* Update src/core/TempoSyncKnobModel.cpp
Co-authored-by: saker <sakertooth@gmail.com>
* Update src/core/TempoSyncKnobModel.cpp
Co-authored-by: saker <sakertooth@gmail.com>
* Use function pointers for connect TempoSyncKnob.cpp
* Silly fp mistake fixed in TempoSyncKnob.cpp
* Unfixed second macro call for now: TempoSyncKnob.cpp
---------
Co-authored-by: saker <sakertooth@gmail.com>
* Fix if statement in ClipView
* Move controllers.begin() to be the first argument
It was the second argument, which means it could've
returned negatives for random access iterators.