On the FX mixer, the "Remove unused channels" action only checked for InstrumentTracks on every channel but ignored SampleTracks that could be linked to the particular FX channel. Because of that, if there was a channel where only SampleTracks are forwarded to and we clicked on "Remove unused channels", it was going to be removed. This commit fixes it.
* src/gui/editors/SongEditor.cpp
* Gradient can be toggled and color can be changed.
* Made playback line (and tail) transparent to mouse clicks
* Gradient disappears when paused/stopped; tail length depends on zoom
* Fixes bug where gradient appears when a pattern is played; style corrections
* Cleaned up code
* Rename m_zoomLevels to s_zoomLevels
* Finalising code
* Make positionLine class independent of parent zooming model
* Edit a bug fix to make it more efficient
* Rename m_x and finalise positionLine code
* Rename m_x and finalise positionLine changes
* Rename X to playHeadPos
* Make better use of getSelectedNotes() in PianoRoll.cpp
* Save and reuse selected note vector more often
* Apply review suggestions
Thanks to @Veratil
* Comment, style, consistency
- Changes method name from cloneBBTrackPattern to clonePattern
- Small fix on the comments
- Adds a TODO comment regarding reusing the code from TrackOperationsWidget as a reference, so we can later figure out a way to not repeat the code
Adds a button on the BBEditor that clones the current BB track pattern, but without also cloning the song editor TCOs. That can be useful when an user is editing drumlines and wants to make a section with a slight variation for example.
Now it's possible to forward received MIDI events with their original channel, either to another track or to the instrument plugin itself. To do that, the user must select the channel "--" on the MIDI output widget. In that case, all MIDI events will be forwarded with their original channel, and the MIDI events produced by the track itself will be sent with the default channel.
* Compensate beat note length when stretching
We allow stretching beat notes to normal notes but the length starts
from -192 so there is a lag for one whole note before any change is
seen. Compensate by setting the oldNote value to 1 when stretching
if the note is 0 or below in length.
Co-authored-by: Spekular <Spekular@users.noreply.github.com>
This PR fixes issues on systems where `QCursor::setPos()` has no effect
or is not reliable. These issues included knobs moving to fast on some
operating systems. Affected widgets are `Knob` and `LcdSpinBox`.
With this PR, on all operating systems, the `setPos` calls are removed and
the cursor is not hidden anymore, so the mouse keeps moving normally
when changing values of one of the widgets.
As now the previous pointer position keeps moving (instead of being reset
to the original position using `QCursor::setPos`), the mathematics that
translate pointer pixel distance to `Knob`/`LcdSpinBox` value increase
have to be changed:
* The `Knob` transition function is now linear and uses a new factor.
* `LcdSpinBox` now uses float values and saves the current float remainder
(this is actually a separate issue revealed by this fix), leading to a fluent,
non hanging movement.
Implementation of the Lv2 core, except for CV ports. No features or
extensions are supported yet.
You can now generate sound using Lv2 instruments (restricted to non-piano)
or effects.
For an explenation about the new classes, see Lv2Manager.h
* Fix wrong lengths of exported tracks, when tracks have different lengths.
Song::updateLength() was called in ProjectRenderer::run() after Song::startExport(),
updating m_length too late, resulting in it being used as the length of the wrong track.
* Fix "Export as loop" resetting after rendering the first track
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
This atomically unsets the MidiJack reference in AudioJack right before
MidiJack is destroyed. This avoids AudioJack using a destroyed MidiJack
object.
This patch
* makes `m_stopped` atomic
* initializes `m_stopped` correctly to `true`
* moves the initialization of `m_stopped` to the point where jack ports
are already connected