* Create PathUtils
* Replace old SampleBuffer calls
* Fix automatic track names
* Fix things
* Remove accidental duplicate file
* Add includes
* More incldues
* PhysSong's code review + style
* Fix vestige loading?
Seems more reasonable to convert from relative on load and to relative on save than vice versa.
* Typo fix
* More Bases
* Enable more bases
* Add missing semicolons in prefixes
* Nicer sample track tooltip
* Use correct directories
"userXDir" gives the default dir for ladspa, sf2, and gig. "xDir" gives the user dir.
* Make relative to both default and custom locations
Part 1
* Make relative to both default and custom locations
Part 2
* Typofix
* Typofix
* Fix upgrade function after base renaming
* Fix Tests
* Update tests/src/core/RelativePathsTest.cpp
Co-Authored-By: Hyunjin Song <tteu.ingog@gmail.com>
* Choose UserXBase over DefaultXBase if identical
toShortestRelative sticks with the first base found if two bases give the same path length. By placing UserXBase Bases before DefaultXBase Bases in the relativeBases vector, toShortestRelative will prioritize them.
* Ensure baseLocation always has trailing slash
Otherwise, a user configuring a path without one will break things.
* Move loc declaration out of switch
* Semicolon
* Apply suggestions from code review...
* Include PathUtil and sort includes
* More granular includes
* Apply suggestions from code review
Co-Authored-By: Hyunjin Song <tteu.ingog@gmail.com>
* Update include/PathUtil.h
* Leave empty paths alone
* Fix stupid merge
* Really fix merge. Hopefully
* Switch Base from enum to class enum
* Don't pass Base by reference
* Use QStringLiteral for static QString allocation in basePrefix method
* Make VST loading more similar to previous implementation
* Fix tests after enum change
* Attempt to fix VST loading, nicer name for sample clips
* Fix last review comment
Don't append a "/" that will be removed by cleanPath later
* Apply suggestions from code review
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
* Set default behaviour, correct spelling
* Set default behaviour, correct spelling
* Store stop behaviour in project
* Change how state is saved & loaded
* Change to use enum
Fixes a small bug where projects that are saved with a soloed track can't restore the muted state of other tracks, because it doesn't store the m_mutedBeforeSolo variable on the project file.
With this fix, a new attribute is added to the Track DOM element, containing the muted state of tracks before the solo. When loading older projects that don't contain this attribute m_mutedBeforeSolo will be set to false.
On the PR #5470 (Allows intruments to keep the midi channel information when forwarding), merged on Jun 1st 2020 commit 97680e0, there's a line removed on the src/gui/widgets/InstrumentMidiIOView.cpp file ( m_outputChannelSpinBox->setEnabled( false ); ), because since the output channel is now relevant even when MIDI forwarding is disabled, we need that spinbox always enabled. It was also disconnected from the LedButton to keep it from disabling/enabling it.
On the PR #5171 (Removed the excessive margin in instruments' GUI (#5129)), merged on Jul 9th 2020 commit 9895472, the line was reintroduced, possibly because it was an older PR that wasn't rebased to the latest changes. This broke the output channel spinbox because now it was disabled on the constructor, but it was still disconnected from the LedButton, as a result always disabled.
This hotfix removes the line again to fix the issue.
FxMixerView.cpp and FxMixer.cpp were inconsistent in their use of TrackContainer::TrackList vs QVector<Track *>. The former is a typedef of the latter, so this PR replaces all instances of QVector<Track *> with TrackContainer::TrackList.
Also, we were not including "TrackContainer.h" directly (the typedef was likely being included indirectly through one of the other include files), so we also include this header on both source codes.
The code on FxMixerView.cpp and FxMixer.cpp were using the types TrackContainer::TrackList and QVector<Track *> unconsistently. TrackContainer::TrackList is just a typedef for QVector<Track *> so it makes sense that we use it, specially in terms of readability.
Places where QVector<Track *> were used are now replaced with TrackContainer::TrackList.
Also, we were not including "TrackContainer.h" directly (the typedef was likely being included indirectly through one of the other include files), so we also include this header on both source codes.
* Enable fullscreen with hotkey & hotkey to toggle maximise in internal window
* Fix an obvious blunder
* Add fullscreen menu entry
* Change Alt+F11 to Shift+F11 (fix Windows bug)
* Move F5-F10 to Ctrl+F*, fullscreen by F11 and fix Linux bug
* Remove wrongly placed "fullscreen" attribute
* Remove temporary fixes for redundant bug
* Rename maximise to maximize
* Rename maximise to maximize
* Use fullscreen icon instead of maximise icon
* Actually include the icon in the commit
* Replace .svg icon with .png 16x16 icon
* Migrate editor hotkeys to Ctrl+1-7
* Removed the excessive margin in instruments' GUI (#5129)
* Reduced the font size for "master pitch" label.
* Reduced the layout spacing for MIDI Input and MIDI Output groups
* Shortened labels, so that the LcdSpinBoxes are spaced evenly
* Added translator's comments
* Whitespace fix
* Limit note length to quantization value
Draging a note to it's minimum value of 1 will add this new length to
the note if you later choose to stretch it which will not be clearly
visible in the Piano Roll unless you zoom in a bit. Limit the note
length to the quantization value and use <Alt> key to override and set
a smaller value.
* Update src/gui/editors/PianoRoll.cpp
Co-authored-by: Spekular <Spekular@users.noreply.github.com>
* Remember min note length if shorter than quantization()
* Find note length modulo quantization, pick smallest from selected notes
* Comment on and improve m_minResizeLen calculation
Co-authored-by: Oskar Wallgren <oskar.wallgren13@gmail.com>
* Refactor deleteUnusedChannels in FxMixerView
* Comments + style fix
Co-authored-by: Veratil <veratil@gmail.com>, formatting, suggestions on which lines to comment.
Co-authored-by: Kevin Zander <veratil@gmail.com>
* Update weird deleteChannel loop
* Use vector instead of array
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
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