* If we find NaN/inf, we declare the whole buffer bad and set it to 0.0f. This
is because the noise leading up to, or coming from, an infinite or NaN value
is often very large and will create problems later in the sound chain. Especially
if it hits a delay based fx with feedback.
* We bump the clipping level to +/-10.0f.
Really short notes doesn't work well with delay based effects with the default
decay settings of the FX autoquit system where the effect can cut out. Set
autoquit as disabled by default.
Decay and Gate knobs are now also disabled when autoquit is disabled.
Switches some signal-slot connections to Qt::DirectConnection.
Now LMMS can handle loop points correctly and export samples without glitches.
Also tweaks some Mixer-related code to avoid related deadlocks on export.
Resolves the incompatibility between FluidSynth 1.x and 2.x
due to some API changes by shimming some functions.
Note that 1.x and 2.x are not binary compatible.
Previously BBTrackContainerView::dropEvent always deleted
the TCOs of dropped tracks. It made dropped tracks unusable.
As of this commit, the function checks for correct TCOs.
If incorrect TCOs exist, the function remove them and add empty ones.
Due to the wrong condition for GUI handling, empty patterns longer than 1 bar
was treated as BB patterns though they don't really look like.
This commit drops the erroneous check and fixes related GUI issues.
* Update the LMMS logo and mimetypes
* fix bmp for nsis installer
* Update window and About icons, rename icons, change the file association logic
* Fix NSIS
* Revert nsh patch
* Fix small icon
* Always write DefaultIcon in the registry
* Fix file permissions
* Fix nsis branding
* Fix nsis branding #2
* update the icon windows and linux
* Update apple icon, add windows visual manifest
* try to fix windows installation
* typo
* typo 2
* Set small logo to conform to 48x48 grid
Some plugins don't initialise it themselves, expecting it already to be
done for them, and so are liable to hang without it (e.g. TX16Wx).
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Changed according to feedback from AudioBlast. The flag used to be set most of the time, now it is only set when playback starts/stops, looping is toggled, or playback jumps around.
Ignore requests to change the I/O count from within processReplacing and print a warning instead; the shared memory is in use so it can't be reallocated. Add a special case to return immediately if the I/O count hasn't changed at all; this will prevent spurious warnings when the plugin is only updating the latency and should reduce unnecessary reallocations in general.
Some plugins ignore updates to these values if they're changed while the plugin is in a "resumed" state, resulting in incorrect tuning after a change of sample rate.
This is a workaround for rare crashes when changing the tempo
while playing notes with stacking and/or arpeggio.
When playing the master note, _working_buffer is null.
Tempo change causes false positive in the check because
NotePlayHandle::resize changes m_totalFramesPlayed.
Thanks to 6fc4577f10, we can safely drop
the memset call.
Make the oscilloscope colors available as properties so that they can be
changed via style sheets. Adjust the existing styles to use the colors
that have been hard coded previously.
Cleanup the paintEvent method of VisualizationWidget, e.g. by extracting
a method to determine the color to use for the line and by pulling
variables to the place where they are used. Fix some Clang warnings.
Writing the enable bit to `FF23` causes the noise oscillator to start outputting samples and writing the other registers (including the one for the SRW value) during the time the oscillator is active has undefined behaviour.
In order for `GB_apu` to correctly generate samples when the LSFR width is
set to `7`, the trigger write to `0xff23` must happen after all other
writes.
* Bug fix in peak_controller_effect.cpp
This change makes it so that when an LMMS project is loaded, each knob connected to a Peak Controller will be set to the Peak Controller's Base value, rather than its minimum possible value.
Fixes regression from 75077f6200 that caused
global automation tracks to have priority in processing.
Adds a test checking for the desired behaviour.
Fixes#4268
From MSDN: "In WM_SYSCOMMAND messages, the four low-order bits of the
wParam parameter are used internally by the system. To obtain the
correct result when testing the value of wParam, an application must
combine the value 0xFFF0 with the wParam value by using the bitwise AND
operator."
Also calculate the required window size using AdjustWindowRect, rather
than hard-coding some constants.
QMdiSubWindow::setSizePolicy doesn't have any effect because QMdiSubWindow
uses a layout. This patch uses QMdiSubWindow::layout()->setSizeConstraint
instead. This may cause effects that don't have a layout and don't
implement sizeHint() to now be resizable. For effects that do though, it
fixes the size constraint.
Fixes bugs where during project loading (observed with VST effects), empty
widgets and sub-windows would be left floating around. These were caused by
inconsistencies between the way VST UIs were created when loading a project
and when adding an effect in an existing project. In some situations, this
caused createUI to be called twice, leaving over multiple empty widgets.
This commit refactors some code in order to avoid creating unnecessary sub-
windows, which aren't needed with VST effects, but were still created,
usually being invisible. All sub-window related code was moved out of
VstPlugin into vestige.cpp, which is the only place where sub-window VSTs
are actually used. A new sub-class of VstPlugin, VstInstrumentPlugin, now
handles VST sub-windows and is used by vestigeInstrument.
"guivisible" attribute loading was moved out of VstPlugin as well and is
now done in VstEffectControls' and vestigeInstrument's loadSettings method
respectively. This causes some minor code duplication unfortunately.
Closes#4110
When exporting a project lmms performs extra tests for bad data.
The tests are for infs and nans. Switching these tests on for all
occasions as the extra performance hit would be in the order of
only ~2% and the problems, when it hits the end user, are hard to
debug and/or work around.
After testing for inf/nan we clamp the sound to +/-4.0f as sometimes
you will get large transients passing through (an issue that is currently
only present when exporting).
Fixes: #1048
Instead of calling MouseMoveEvent(), the TCO's "text float" text and position are updated.
This prevents left-clicking the right edge of a resizable TCO from decreasing its size.
Also, removed an unused variable: m_oldTime
This code loads a Qt5 library, which will cause problems if done from a Qt4 application. If the application is Qt4 based we don't have a bug with kde changing the menus anyway, so we can skip this code.
Build AppImage with Carla support
* Disables HiDPI support in the AppImages
* Ignores deprecated jack usage
* Fix Carla compilation warnings
* Detects carla prefix in AppRun
If a mixer channel is soloed when it's deleted the other channels are left in the
state their in which is, for the most part, muted. Solve this by clearing mixer
channels on delete.
Change the default value of ignoreSurroundingPoints in AutomationPattern::putValue to true, which was false in #3352.
Fixes automation filpping bug and some potential issues.
When you left click an existing value the automation point will only
snap to the new value if it is higher. If it is lower the mouse click
event will 'break'.
Cleanup. Remove statement that will always evaluate as 'true'.
Default project when cancelling project loading
If a user isn't aware that the loading of a project has been
cancelled, it may be in an incomplete state. Saving such a project
will overwrite the original file and result in data loss. This is
solved by loading the default project on cancelling project loading.
Add Mixer::clearNewPlayHandles() to prevent crash when cancelling
loading of a single streamed instrument.
* Fix templates and recent files on KDE.
Workaround for https://bugs.kde.org/show_bug.cgi?id=337491 , Call into KDE stuff to stop it adding accelerators.
* Fix & in recent files.
Escape & as && when building the recent file lists, and reverse that when getting the file name.
* Fix Automation Point delete radius. At lower zoom deleting would miss
automation points to delete and at higher zoom it would be too generous
and remove neighbouring points.
* Increase smallest Automation Point radius. For visibility. The smallest
Automatin Point radius was tiny.
Let InstrumentSoundShaping::releaseFrames() ignore release frames for single-streamed instruments. And make it return 0 if m_instrumentTrack->instrument() is NULL.
When in sort mode and playing over multiple base notes, in the
beginning of the notes there is a chance that the notes will play
together as an ordinary chord instead of arpeggiate.
This is a regression from 6650dd3.
Fixes#3342
Set 'master note' for silent notes on sort mode.
Prevent silent notes to play as ordinary notes in the background
when they are waiting for their turn to arpeggiate.
Remove unnecessary test (it will always return TRUE).
Slower default speed (200ms).
* Re-enable MIDI export
* Fix logic for processing BB tracks and BB notes
* Consider master pitch and base note in MIDI export.
* Cut BB notes at the end of BB pattern.
Don't auto-save while playing by default. On weaker machines (xp?) we
see glitches so better turn this on after need.
Remove the last of Limited Sessin which was removed in 290556e.
* Respect build options in ExportProjectDialog
* Use QItem user data instead of hard ordering to identify export format in ExportProjectDialog
* For compatibility with QVariant, ExportFileFormats is now explicitly an int.
* Don't break out of format identifier loop prematurely in Song export.
The spectural analysis was using a rectangle window, leading to high spectural leakage.
This pull request uses the Blackman-Harris window to give a display more representative of the audio.
With this pull request, the user is able to cancel a track rename action by pressing the Escape key.
Also renamed rename_dlg to renameDlg in TrackLabelButton::rename() so it complies to the naming conventions.
Fixes#3675.
We need to wait with calling Mixer::restoreAudioDevice() and
Mixer::changeQuality() after render until all threads have stopped.
Moving these calls to ProjectRenderer::~ProjectRenderer() ensures
all render theads are done.
Add the option 'mp3' to the format switch (-f / --format) if LMMS is
compiled with MP3 support. Add the new switch 'mode' which can be used
to set the stereo mode used for the MP3 export.
Adjust the man page for the new options.
We give the stream a unique serial number and make sure it
isn't '0' or 'UINT_32_MAX'.
Change obsolete 'Linux MultiMedia Studio' to 'LMMS' in
ogg file comment.
* Add a factory default data/projects/templates/default.mpt. Fixes#528
* On launch, if the last project was a template we create a new project (default.mpt) instead.
* If there is a recovery file present and you discard it we create a new project as the project launched could be defective or, if .lmmsrc.xml wasn't written, an earlier project.
* First version of artwork tabs for the InstrumentTrackWindow.
This version can only display & manage artwork tabs, which breaks
the InstrumentSoundShapingView as it still uses text tabs.
I'm planing to improve this implementation to let these artwork tabs fall back
to text mode when no artwork is given. This would solve the problem of the
InstrumentSoundShapingView.
* Second version of artwork tabs for the InstrumentTrackWindow.
This version will draw an artwork tab when the TabWidget::addTab function is given
a pixmapName. Otherwise, when pixmapName is NULL, it will fall back drawing a text
tab.
* Created artwork for the artwork tabs.
* 1st PoC for autosizeable artwork tabs.
* TabWidget is 20 pixels tall when it's going to display artwork tabs.
* Added tooltip support for the TabWidget class.
Atm, tooltips are simply tabs' name.
* Imported artworks from RebeccaDeField
* Reverted to 12px tall TabWidget
* Fine tuning for the positioning of artwork tabs: Take into account the caption 'space.
* New artwork for the ENV/LFO tab (has now an ADSR-based look)
* 1) Tabs in TabWidget class have now a "tooltip" attribute. So that they can now show
more meaningfull information then simply the tab's name.
2) Fixed the compilation problem with QT5
* Fine tuning the positioning of highlighted artwork tabs.
* Fixed an issue in TabWidget's artwork tabs autosize function that makes gdb crash
with SIGFPE.
* TabWidget is 17 pixels tall when it's going to display artwork tabs.
* Removed underscore prefix for function parameters as coding convention has changed.
(Request at dccf9f4119 (r61165005))
Cyrille
* Removed background gradient for TabWidget as LMMS is going to a more flat design.
Cyrille
* Increased the graphical TabWidget's height by 2 pixels for eye-candy.
The InstrumentTrackWindow's height has been increased by the same amount.
Cyrille
* Removed gradient in GrouBox widgets as LMMS is going for a more flattened design.
Cyrille
* Made the background of TabWidget themeable
Cyrille
* The highlighting color for a TabWidget'selected tab is now themeable.
* Made TabWidget's Title text and tab text themeable.
* Added a darker background to the TabWidget's tab bar.
* Further flatened the design of TabWidget
* Flatened the design of the GroupBox widget
* Fine tuning the placement of TabWidgets' highlighting background
+ some code cleaning in TabWidgets
* Made the TabWidget's title background and borders themeable
* TabWidget - Artwork tabs: Do not change the icon color when it is highlighted
* TabWidget: Made the artworks' color themeable
* Adapted format to follow LMMS coding conventions
* Some more blank spaces to tabs translation to comply with LMMS coding standards.
* Some more blank spaces to tabs translation to comply with LMMS coding standards.
* Revert "TabWidget: Made the artworks' color themeable"
This reverts commit 5b162c07e2.
Conflicts:
src/gui/widgets/TabWidget.cpp
Reason: Artwork's color themeability had the side-effect that it removed the artworks' alpha
channel, thus making them ugly.
* Made GroupBox's background color themeable
* Update background color, only use one set of images
* Use name as tooltip, more descriptive names
* Update icons and colors
* more things
* formatting fixes
* Remove update() from constructor
The LFO rate was not correctly syncronising to tempo
This has been rectifited, to utalise the TempoSyncKnob as intended, returning a period,
instead of a frequency. The knob now reports the correct values in the GUI.
Flanger LFO maximum period incressed to 60 seconds
The previous delay code was incorrectly not utalising the whole buffer, causing glitches when
incressing the delay time, due to outputting incorrect data, This was apparent when using the
lfo in the Delay and Flanger plugins.
This has been rectified. The read index is now offset from the write index. and the complete buffer is used in a circular fashon.
Flanger - resolved issue where the lfo could create negative delay lengths
* ReverbSC: Method to change samplerate (#3401)
* ReverbSC: added mutex for protected malloc
* ReverbSC: small CMake fix to remove warning message
* ReverbSC: samplerate changed to uint32_t. more CMakeFile tweaks
* Fix dc block on oversampling
If the variables bit rate is not enabled the nominal bit rate will be
used for the minimum and maximum bit rate in the encoder.
If the variable bit rate is enabled the current implementation will
compute the minimum bitrate by subtracting 64 kBit/s from the nominal
bit rate. The maximum bit rate is computed by adding 64 kBit/s to it.
Example: The nominal bit rate is set to 160 kBit/s and variable bit rate
is enabled in the export dialog. The minimum bit rate is then set to 96
kBit/s and the maximum bit rate to 224 kBit/s.
Only show widgets on the export dialog that are relevant to the selected
file format (Wave/Ogg):
* Sample rate is always shown.
* Bit depth settings are only shown when Wave is selected.
* Bit rate settings are only shown when Ogg is selected.
Remove the label that informs the user that not all settings apply to
all export formats as it is not needed anymore. The english text of that
label was: "Please note that not all of the parameters above apply for
all file formats."
Pull the class OutputSettings out of the class ProjectRenderer so that
it can be used in other contexts as well. Also move the enum
ProjectRenderer::Depth into the new class OutputSettings and rename it
to BitDepth. Adjust all places that referenced
ProjectRenderer::OutputSettings accordingly.
Adjust the two places where an instance of OutputSettings is created:
the main function and ExportProjectDialog::startExport.
Store an instance of OutputSettings in AudioFileDevice and remove
several members and methods which are now replaced by this instance. Add
a getter for the OutputSettings to AudioFileDevice. Storing an instance
of OutputSettings in the base class AudioFileDevice enables the
simplification of the following constructors and general code in the
following classes:
* AudioFileDevice
* AudioFileOgg
* AudioFileWave
Because OutputSettings contains everything related to sample rate, bit
rate settings and bit depth these parameters could be removed from the
parameter list of the aforementioned constructors.
Simplify the signature of the factory method AudioFileDeviceInstantiaton
(defined in AudioFileDevice.h) and reorder the parameters by significance.
Move the logic of how the minimum and maximum bitrate is calculated
using the nominal bitrate into AudioFileOgg::minBitrate() and
AudioFileOgg::maxBitrate(). Previously this was defined in the
constructor of ProjectRenderer where it does not belong as it an
implementation detail of the OGG export.
Remove the code that converted the bit depth enum to an integer from
ProjectRenderer as it is now solely represented as an enum.
Remove class members for the minimum and maximum bit rate from
AudioFileOgg and adjust the code in the implementation to use the values
stored in OutputSettings.
Add a new value of "24 Bit Float" to the "Depth" combo box in the
project export dialog.
Add a new enum value to ProjectRenderer::Depth and extend the evaluation
of the different enum values in ProjectRenderer.
Add the new case of a depth of 24 to AudioFileWave and remove some
repetition with regards to SF_FORMAT_WAV in the code. It's only set once
now and then the depth is "added" in a switch statement.
The Delay plugin had an issue with the delay knob having the incorrect max value,
this was resulting in incorrectly scaled times
This has been corrected.
* Duration of the beat is defined by the denominator of the time signature
and it does not depend on whether or not you use triplets.
* Fortmatting fixed.
- Double-click mmpz file in finder will now open properly on macOS
- Adds new MainApplication class for listening to QEvent::FileOpenEvent
- Queues open events until the application is ready to recieve them
- Closes#665
* Right Mouse Button To Erase Nodes In Automation Editor Cursor Icon Does Not Change #3310
* Remove unused member m_mouseDownLeft from PianoRoll
* Add move cursor for automation points drag
* Ailiasing in AutomationPatternView; ERROR: Doesn't draw unreferanced tracks
* Draws one polygon instead of 'poly'-polygons
* Changed QPoints to QPointF
* Added int MidiTpT constant
* Added ppTact for reduced computation
* Added spaces in parentheses to be consistent
* Variable name change and spacing
* S P A C E S
* Anti-Aliasing of Automation Editor
* Commented out all referances to unused is_selected
* Changed css to non-gradient graphs
* Added Brackets
* Removed no-pixel line at bottom of graph
* Revert "Added Brackets"
This reverts commit ff801868b7.
* Revert "Revert "Added Brackets""
This reverts commit 4e127a78df.
* Revert "Removed no-pixel line at bottom of graph"
This reverts commit 940c766b61.
Do not clear the filter histories when the crossover control has changed,
e.g. via automation.
Add a new method CrossoverEQEffect::clearFilterHistories that's called
whenever the filter histories need to be cleared, e.g. after loading a
crossover EQ. It would be beneficial to also call this method when the
effect is enabled again after being disabled but it seems there is no
was to find out that this event has happened. One could implement it in
the process method by storing the current state in a member and
comparing it to the state at the time of the last process call but this
is something that should be provided by the framework.
* Move implementation to a new cpp file
* Use std::vector as base class instead of doing our own memory management
* Remove unused dangerous functions
* Make more use of std algorithms
* Some cleanups in code using ValueBuffer
* Made fltk install to the write path
* Supress downloading packages that are either installed with pacman or
built from source
* Build libogg from source
* Cleanup after installing libogg
* Build libvorbis from source
* Build flac from source
* Build libgig from source
* Build STK from source
* Fixed "already run" check on STK
* Took credit for calling somoene at Stanford a yutz so they don't think
it was the project lead
* Fixed symlink to pkg-config for 32 bit systems
* Enabled shared library production with fltk
* Hopefully fixed install of STK
* Backed off last change regarding STK. It broke things
* Put the cross toolchins in front of path. It needs to be there so the
cross tools override the native tools
* Move libgig dlls into the bin directory so they can be found
* let libjpeg and fltk be installed from the repository as they are needed
at that version for make package
* Fix deleting automation points out of quantization
* Triplets in Automation Editor + better remove action
* Let a quantized Automation point wipe clean the space it covers
* Improve sensitivity on erase with zoom < 100%
* Eigth note default quantization
* Tooltip and whatsthis text
* Make dem grid ndasd
* grid BG
* fix bug in scroll behavior
* debugging scrolling
* Add CSS property, port to automation editor
* Fix a fail
* Spaces to tabs
* Use fillRect rather than drawRect
* Implement @vlad1777d's idea
* Seperate loops and stuff
* Finish up Piano Roll Grid
* Cleanup
* Redesign the grid for the Automation Editor
* Update colors
* Formatting changes
* formatting changes II
* redesign of EQ plugin
* correct some symbols
* set pixelPerUnitHeight to float
* change textcolor of inactive handles to white
* revert changes in styles.css
* change grid color/adjust Fontsize of info box / change analizing color
* range changed (20 - 20000 Hz) / display width increased
* Update the EQ faders and remove unused files
* Increase transparency of the graph
* corrects the filter fader peak
* makes fader peak display more useful
* Implement @zapashcanon's suggestions
* SideBarButton set text below the icon
* change color of checked sidebarbutton
* adds a space to the sideBarButton title
* add gradient to checked side bar button
* whitespaces
In PianoView.cpp fixed the focus policy so that if one would like to use
a QPlainTextEdit in his plugin, he'd be able to do so.
In TrackContainerView.cpp and AutomationEditor.cpp there's a problem
that if you use a Right To Left locale, all the GUI turn RTL, but in
those specific editors, things get very messy, because they were made up
with the assumption of LTR.
This reverts commit e3e14bb730 in an
attempt to fix issue #3292.
The problem that's addressed is very elusive:
* It cannot be reproduced reliably.
* It seems to be more prone to appear in release builds.
* It only seems to appear when two or more instruments are mixed into
one channel.
* If you solo a problematic Triple Osc it goes away.
The observations above seem to indicate that there's rather a problem
with the mixing (due to multithreading?) and that the changes made to
Triple Osc seem to trigger this deeper problem more quickly.
Change all phase related variables in Oscillator from float to double.
The parameters for the getSample methods have not been changed to double
as it should suffice to only update the phase variables with double
precision.
* fixes precision on knob dragging
* fixes precision on fader dragging
* diaplay a rounded float on knobs
* enter rounded value on fader
* add getRoundedValue() and getDigitCount() to floatmodel
* whitespace
d="m 10,-30 c -1.108,0 -2,0.892 -2,2 l 0,56 c 0,1.108 0.892,2 2,2 l 44,0 c 1.108,0 2,-0.892 2,-2 l 0,-43 c 0,-1 -1,-2 -1,-2 L 43,-29 c 0,0 -1,-1 -2,-1 z"
MESSAGE(STATUS"Bash completion script for ${SCRIPT_NAME} will be installed to ${BASHCOMP_PKG_PATH} or fallback to ${BASHCOMP_USER_PATH} if unwritable.")
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.