LMMS supports the Lv2 feature powerOf2BlockLength. Plugins that need to be a
power of two (32, 64, 128...) are not loaded if the buffer size setting is set
to something else. However this logic breaks down on buffer sizes larger than
256. On larger sizes, LMMS works with chunks of 256 and plugins are still
presented with a value of 256. So anything larger than 256 is a valid size as
powerOf2BlockLength is concerned. LMMS supported powerOf2BlockLength correctly
since 9c46370 but setup manager messages and comments are wrong in too strictly
demanding an actual power of two value. 768 is not a power of two, but three
chunks of 256 which are power of two values.
Co-authored-by: Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com>
* fixed cmakelists conditions
* Fixed the order messup.
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
---------
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Enable the removal of the `LedCheckBox` include by commenting out code instead of using an `if(false)` statement.
The commented out code was adjusted so that it would work with the current usage of layouts.
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.
* Mallets - Add random knob function
Implement randomness for the instrument. When Random is applied, Hardness and Position of instrument 1 - 9, or Modulator and Crossfade on instrument 10 (Tubular Bells), are nudged on every note to liven up the sound. With the modulated knobs placed at their center values, Random at max will select from the full range of possible values.
Co-authored-by: saker <sakertooth@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
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
Adjust the classic theme so that it is consistent with the changes made to the default theme.
It was only necessary to change the font-size of the check boxes in the file browser to points because the QTreeView already does not contain any font settings.
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>