Compare commits

..

4325 Commits

Author SHA1 Message Date
Hyunjin Song
013aef5513 Remove connections to a nonexistent signal 2024-04-16 10:04:53 +09:00
Hyunjin Song
cbcde94d61 Merge branch 'master' into groove 2024-04-16 09:55:07 +09:00
Michael Gregorius
d2c2a80506 Update CMT submodule / Upgrade code for CMT delays (#7206)
## Bump CMT to d8bf8084aa3
Bump the CMT submodule to commit d8bf8084aa3 which contains the underlying fixes for issue #5167.

The CMT delay uses `sprintf` calls to generate the technical names and display names of the delays. These calls are locale dependent. As a consequence for example the feedback delay might have been saved either as "fbdelay_0.1s" (point) or "fbdelay_0,1s" (comma) in a save file.

The CMT fix makes sure that all delays use points in their names and thus that they now always report the same name strings.

## Add upgrade routine for CMT delays
Add an upgrade routine for CMT delays which works in conjunction with the upgraded CMT submodule. Because the delays will now always report their name with points old save files which might contain versions with the comma must be upgraded to a name with a point.
2024-04-14 18:03:39 +02:00
Dominic Clark
d3ab31558c Support VSTs on Linux even if Wine is unavailable (#7205) 2024-04-14 12:54:10 +01:00
Michael Gregorius
815f88dd09 Scalable LFO graph (#7203)
## Scalable LFO graph
Make the rendering of the LFO graph scalable. Change the fixed size to a minimum size. Adjust the rendering code such that it uses the width and height of the widget instead of the background pixmap.

Only draw only poly line once instead of many line segments. Collect the points in the for-loop to be able to do so. This makes the code a bit more understandable because we now compute exacly one point per iteration in the for-loop.

Use the same interpolation for the line color like in the envelope graph.

Rename some variables to make them consistent with the other code.

Remove the member `m_params` which is not used anyway. This also allows for the removal of the overridden `modelChanged` method.

## Use "Hz" instead of "ms/LFO"
Use the more common unit "Hz" to display the frequency of the LFO instead of "ms/LFO". The frequency is always displayed with three digits after the decimal separator to prevent "jumps".

## Take "Freq * 100" into account
This commit fixes a bug where the "Freq * 100" option was not taken into account when computing and displaying the frequency of the LFO.

## Keep info text legible
Draw a slightly transparent black rectangle underneath the text to keep it legible, e.g. for high frequencies with an LFO amount of 1 which results in a very bright and dense graph.

## Extract drawing of info text into method
Extract the drawing of the info text into its own private method `drawInfoText`.
2024-04-14 10:31:27 +02:00
Michael Gregorius
8e40038a2d Scalable envelope graph (#7194)
Make the graph scalable by adjusting the painting code of the envelope so that it does not assume fixed widths and heights anymore. Remove the setting of a fixed size from the envelope graph and only set a minimum size.

Make three scaling modes available which can be selected via a context menu in the graph:
* "Dynamic": This modes corresponds to the rendering strategy of the previous implementation. Initially 80/182 of the available width is used as the maximum width per segment. This can be interpreted like a "zoomed" version of the absolute mode. If the needed space becomes larger than the full width though then it falls back to relative rendering.
* "Absolute": Each of the five segments is assigned 1/5 of the available width. The envelopes will always fit but might appear small depending of the current settings. This is a good mode to compare envelopes though.
* "Relative": If there is at least one non-zero segment then the whole width is always used to present the envelope.

The default scaling mode is "Dynamic".

## Technical details

The new painting code is more or less divided into two parts. The first part calculates `QPointF` instances for the different points. In the second part these points are then used to draw the lines and markers. This makes the actual rendering code much more straight forward, readable and maintainable.

The interpolation between the line color of an inactive and an active envelope has also been restructured so that it is much more obvious that we are doing an interpolation in the first place. The colors at both ends of the interpolation are explicit now and can therefore be adjusted much easier. The actual color interpolation is done in the helper function `interpolateInRgb` which is provided by the new class `ColorHelper`. This class will later also be needed when the LFO graph is made scalable.

The line is rendered as a polyline instead of single line segments.

The drawing of the markers has been abstracted into a lambda (with some outside captures though) so that it can be easily adjusted if necessary. The markers are rendered as circles instead of rectangles because that looks much nicer especially when the widget is rendered at a larger size.

The width of the lines and marker outlines is determined using the size of the widget so that it scales with the size.

A `lerp` function has been added to `lmms_math.h`.
2024-04-11 17:49:00 +02:00
Levin Oehlmann
1f5f28fd8a Don't auto-quantize notes when recording MIDI input (#6714)
* Don't auto-quantize notes when recording MIDI input.

* Add midi:autoquantize to config file and a widget to set it in the MIDI settings.

* Quantize notes during recording if midi:autoquantize is enabled.

* Apply suggestions from code review: Formatting

Style formatting

Co-authored-by: saker <sakertooth@gmail.com>

* Cache the auto quantization setting in a PianoRoll member variable, and update it on ConfigManager::valueChanged()

* Apply suggestions from code review: Formatting & temp variable

One formatting change, and reusing an existing variable instead of introducting a new local one.

Co-authored-by: saker <sakertooth@gmail.com>
Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Update src/gui/modals/SetupDialog.cpp

Good catch.

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Fix logic bug in PianoRoll's midi/autoquantize value observer.

* Use '!' instead of 'not' to please MSVC.

* autoquantize: Add an explicit check for consistency with the rest of the PR, and give the setting a default value in SetupDialog constructor.

* Integrate MIDI auto-quantize checkbox into the resizable layout, and add a tool tip.

---------

Co-authored-by: saker <sakertooth@gmail.com>
Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2024-04-08 19:17:26 -04:00
Michael Gregorius
2472e9ee4e GUI adjustments around base velocity (#7196)
Change the label of the group box from "CUSTOM BASE VELOCITY" to "VELOCITY MAPPING".

Remove the long explanation text from the group box and add the following tool tip for the LcdSpinBox: "MIDI notes at this velocity correspond to 100% note velocity."

Change the label of the spin box from "BASE VELOCITY" to "MIDI VELOCITY" because that's what the value actually represents.
2024-04-05 17:24:28 +02:00
Michael Gregorius
922eb7f2ba Fix NaNs for some dbFS value displays (-∞ dbFS) (#7142)
Fix some NaNs in the context of the display of dbFS values when "View > Volume as dbFS" is checked. They occur during the display of the current value when a mixer fader or the volume knob of an instrument is pulled down completely.

The fix is to detect these cases and to display "-∞ dbFS".

Also fix a problem with the editor where dbFS values can be entered for volume knobs. When the knob is turned completely to the left and the amplification is 0 then the initially displayed value is set to -96 dBFS, i.e. the lower limit that is shown in the dialog. This is done because the dialog likely cannot handle displaying or entering "-∞".
2024-04-05 13:15:48 +02:00
Michael Gregorius
ba4fda7c97 Scalable consistent faders with themeable gradients, marker at unity, dbFS by default (#7045)
* Render fader levels in code with a gradient

Render the fader level in code using a gradient instead of using pixmaps. The problem with the pixmaps is that they don't "know" how a fader instance is configured with regards to the minimum and maximum value. This means that the display can give quite a wrong impression.

The rendering of levels has been unified in the method `paintLevels`. It can render using dbFS and linear scale. The method `paintLinearLevels` has been removed completely, i.e. there's no more code that renders using pixmaps.

Much of the previous code relied on the size of the background image `fader_background.png`, e.g. the initialization of the size. For now the `Fader` widget is initially resized to the size of that background image as it is present in the default and classic theme (see `Fader::init`). All rendering uses the size of the widget itself to determine where to draw what. This means that the widget is prepared to be resizable.

The method `paintLevels` first renders the background of the level indicators and uses these as clipping paths for all other rendering operations, e.g. for the rendering of the levels themselves. Levels are rendered using a gradient which is defined with the following stops:
* Two stops for the ok levels.
* One stop for warning levels.
* One stop for clipping levels.

Peak indicators do not use the three distinct colors anymore but instead use the color of the gradient at that position of the peak. This makes everything look "smooth".

The code now also renders a marker at unity position, i.e. at position 1.0 in linear levels and 0 dbFS in dbFS scale.

The painting code makes lots of use of the class `PaintHelper`. This class is configured with a minimum and maximum value and can then return linear factors for given values. There are two supported modes:
* Map min to 0 and max to 1
* Map min to 1 and max to 0

It can also compute rectangles that correspond to a given value. These methods can be given rectangles that are supposed to represent the span from min to max. The returned result is then a rectangle that fills the lower part of the source rectangle according to the given value with regards to min and max (`getMeterRect`). Another method returns a rectangle of height 1 which lies inside the given source rectangle at the corresponding level (`getPersistentPeakRect`).

The method `paintLevels` uses a mapping function to map the amplitude values (current peak value, persistent peak, etc.) to the display values. There's one mapper that keeps the original value and it is used to display everything in a linear scale. Another mapper maps everything to dbFS and uses these values as display everything in a dbFS scale. The following values must be mapped for the left and right channel to make this work:
* Min and max display values (min and max peak values)
* The current peak value
* The persistent peak value
* The value for unity, i.e. 1.0 in linear levels and 0 dbFS in dbFS scale.

Remove the method `calculateDisplayPeak` which was used in the old method to render linear levels.

`Fader::setPeak` now uses `std::clamp` instead of doing "manual" comparisons.

The LMMS plugins Compressor, EQ and Delay are still configured to use linear displays. It should be considered to switch them to dbFS/logarithmic displays as well and to remove the code that renders linearly.

* Remove unused pixmaps from `Fader`

Remove the now unused pixmaps for the background and the LEDs from the `Fader` class and remove the files from the default and classic theme directories.

* Rename peak properties and use them to render levels

Rename the peak properties as follows:
* peakGreen -> peakOk
* peakRed -> peakClip
* peakYellow -> peakWarn

The reasoning is that a style might for example use a different color than green to indicate levels that are ok.

Use the properties to initialize the gradient that is used to render the levels.

Initialize the properties to the colors of the current default theme so that it's not mandatory to set them in a style sheet. Up until now they have all been initialized as black.

* Always render the knob in the middle of the fader

Render the knob in the middle of the fader regardless of the width. The previous implementation was dependent on the fader pixmap having a matching width because it always rendered at x=0.

* Set size policy of fader to minimum expanding

Set the size policy of the fader to minimum expanding in both directions. This will make the fader grow in layouts if there is space.

* Default dbFS levels and better peak values

Default to dbFS levels for all faders and set some better minimum and maximum peak values.

* Fix faders of Crossover EQ

Fix the faders of the Crossover EQ which were initialized and rendered much too wide and with a line at unity. The large width also resulted in the knobs being rendered outside of view.

Resize the fader to the minimum size so that it is constructed at a sane default.

Introduce a property that allows to control if the unity line is rendered. The property is available in style sheets and defaults to the unity lines being rendered. Adjust the paint code to evaluate the property.

Initialize the faders of the Crossover EQ such that the unity line is not drawn.

* Remove EqFader constructor with pixmaps

Remove the constructor of `EqFader` that takes the pixmaps to the fader background, leds and knob. The background and leds pixmaps are not used by the base class `Fader` for rendering anymore to make the `Fader` resizable. A pixmap is still used to render the knob but the constructor that takes the knob as an argument does not do anything meaningful with it, i.e. all faders are rendered with the default knob anyway.

Remove the resources for the fader background, leds and knob as they are not used and the knob was the same image as the default knob anyway.

Remove the static pixmaps from the constructor of `EqControlsDialog`. Switch the instantiations of the EQ's faders to use the remaining constructor of `EqFader`. This constructor sets a different fixed size of (23, 116) compared to the removed constructor which set a size of (23, 80). Therefore all faders that used the removed constructor are now set explicitly to a fixed size of (23, 80).

The constructor that's now used also calls a different base constructor than the removed one. The difference between the two base constructors of `Fader` is that one of them sets the member `m_conversionFactor` to 100.0 whereas the other one keeps the default of 1.0. The adjusted faders in `EqControlsDialog` are thus now constructed with the conversion factor set to 100. However, all of them already call `setDisplayConversion` with `false` after construction which results in the conversion factor being reset to 1.0. So the result should be the same as before the changes.

* Remove background and LEDs pixmap from Fader constructor

Remove the parameters for the background and LEDs pixmap from the second `Fader` constructor. Make the knob pixmap parameter in the constructor a const reference. Assign the reference to the knob pixmap of the `Fader` itself. This enables clients to use their own fader knobs as is the case with the Crossover EQ. The EQ now renders using it's own knobs again.

Make the second constructor delegate to the first one. This will additionally set the conversion factor to 100 but this is not a problem with the current code because the only user of the second constructor, the Crossover EQ, already calls `setDisplayConversion` with the parameter set to `false`, hence reinstating a conversion factor of 1.

Remove the resources for the background and LEDs from the Crossover EQ as they are not used anymore. Remove the three QPixmap members from `CrossoverEQControlDialog` as they are not needed. The background and LEDs are not used anyway and the knob is passed in as a constant reference which is copied. Hence we can use a local variable in the constructor of `CrossoverEQControlDialog`.

* Remove the init method from Fader

Remove the `init` method from `Fader` as it is not needed anymore due to the constructor delegation. Tidy up the parameter lists and use of spaces in the constructor.

* Introduce range with solid warn color

Introduce a second point in the gradient for the warn colors so that we get a certain range with the full/solid warn color.

The colors are distributed as follows now. The solid ok range goes from -inf dbFS to -12 dbFS. The warn range goes from -6 dbFS to 0 dbFS. In between the colors are interpolated. Values above 0 dbFS interpolate from the warn color to the clip color.

This is now quite similar to the previous implementation.

# Analysis of the previous pixmap implementation
The pixmap implementation used pixmaps with a height of 116 pixels to map 51 dbFS (-42 dbFS to 9 dbFS) across the whole height. The pixels of the LED pixmap were distributed as follows along the Y-axis:
* Margin: 4
* Red: 18
* Yellow: 14
* Green: 76
* Margin: 4

Due to the margins the actual red, yellow and green areas only represent a range of (1 - (4+4) / 116) * 51 ~ 47,48 dbFS. This range is distributed as follows across the colors:
Red: 7.91 dbFS
Yellow: 6.16 dbFS
Green: 33.41 dbFS

The borders between the colors are located along the following dbFS values:
* Red/yellow: 9 - (4 + 18) / 116 * 51 dbFS ~ -0.67 dbFS
* Yellow/green: 9 - (4 + 18 + 14) / 116 * 51 dbFS ~ -6.83 dbFS
* The green marker is rendered for values above -40.24 dbFS.

* Remove unused method Fader::clips

* Fader: Correctly render arbitrary ranges

Adjust the `Fader` so that it can correctly render arbitrary ranges of min and max peak values, e.g. that it would render a display range of [-12 dbFS, -42 dbFS] correctly.

Until now the gradient was defined to start at the top of the levels rectangle and end at the bottom. As a result the top was always rendered in the "clip" color and the bottom in the "ok" color. However, this is wrong, e.g. if we configure the `Fader` with a max value of -12 dbFS and a min value of -42 dbFS. In that case the whole range of the fader should be rendered with the "ok" color.

The fix is to compute the correct window coordinates of the start and end point of gradient using from the "window" of values that the `Fader` displays and then to map the in-between colors accordingly. See the added comments in the code for more details.

Add the templated helper class `LinearMap` to `lmms_math.h`. The class defines a linear function/map which is initialized using two points. With the `map` function it is then possible to evaluate arbitrary X-coordinates.

* Remove unused methods in PaintHelper

Remove the now unused mapping methods from `PaintHelper`. Their functionality has been replaced with the usage of `LinearMap` in the code.

* Fix some builds

Include `cassert` for some  builds that otherwise fail.

* Opaque unity marker with styling option

Make the unity marker opaque by default and enable to style it with the style sheets. None of the two style sheets uses this option though.

* Darker default color for the unity line

* Move code

Move the computation of most mapped values at the top right after the definition of the mapper so that it is readily available in all phases of the painting code.

* Render unity lines in background

Render the unity lines before rendering the levels so that they get overdrawn and do not stick out when they are crossed.

* Don't draw transparent white lines anymore

Don't draw the transparent white lines anymore as they were mostly clipped anyway and only create "smudge".

* Full on clip color at unity

Adjust the gradient so that the full on clip color shows starting at unity. There is only a very short transition from the end of warning to clipping making it look like a solid color "standing" on top of a gradient.

* Fix discrepancy between levels and unity markers

This commit removes the helper class `PaintHelper` and now uses two lambdas to compute the rectangles for the peak indicators and levels. It uses the linear map which maps the peak values (in dbFS or linear) to window coordinates of the widget.

The change fixes a discrepancy in the following implementation for which the full on clip rectangle rendered slightly below the unity marker.

* Fix fader display for Equalizer shelves and peaks

The peak values for the shelves and peaks of the Equalizer plugin are computed in `EqEffect::peakBand`. The previous implementation evaluated the bins of the corresponding frequency spectrum and determined the "loudest" one. The value of this bin was then converted to dbFS and mapped to the interval [0, inf[ where all values less or equal to -60 dbFS were mapped to 0 and a value of 40 dbFS was mapped to 1. So effectively everything was mapped somewhere into [0, 1] yet in a quite "distorted" way because a signal of 40 dbFS resulted in being displayed as unity in the fader.

This commit directly returns the value of the maximum bin, i.e. it does not map first to dbFS and then linearize the result anymore. This should work because the `Fader` class assumes a "linear" input signal and if the value of the bin was previously mapped to dbFS it should have some "linear" character. Please note that this is still somewhat of a "proxy" value because ideally the summed amplitude of all relevant bins in the frequency range would be shown and not just the "loudest" one.

## Other changes
Rename `peakBand` to `linearPeakBand` to make more clear that a linear value is returned.

Handle a potential division by zero by checking the value of `fft->getEnergy()` before using it.

Index into `fft->m_bands` so that no parallel incrementing of the pointer is needed. This also enables the removal of the local variable `b`.

* Improve the rendering of the levels

The levels rendering now more explicitly distinguished between the rendering of the level outline/border and the level meters. The level rectangles are "inset" with regards to the borders so that there is a margin between the level borders and the meter readings. This margin is now also applied to the top and bottom of the levels. Levels are now also rendered as rounded rectangles similar to the level borders.

Only render the levels and peaks if their values are greater than the minimum level.

Make the radius of the rounded rectangles more pronounced by increasing its value from 1 to 2.

Decrease the margins so that the level readings become wider, i.e. so that they are rendered with more pixels.

Add the lambda `computeLevelMarkerRect` so that the rendering of the level markers is more decoupled from the rendering of the peak markers.

* Reduce code repetition

Reduce code repetition in `EqEffect::setBandPeaks` by introducing a lambda. Adjust code formatting.

* Code review changes

Code review changes in `Fader.cpp`. Mostly whitespace adjustments.

Split up the calculation of the meter width to make it more understandable. This also reduces the number of parentheses.

* Use MEMBER instead of READ/WRITE

Use `MEMBER` instead of `READ`/`WRITE` for some properties that are not called explicitly from outside of the class.

* Use default member initializers for Fader

Use default member initializers for the members in `Fader` that have previously been initialized in the constructor list.

* Make code clearer

Make code clearer in `Fader::FadermouseDoubleClickEvent`. Only divide if the dialog was accepted with OK.
2024-04-05 12:48:46 +02:00
Michael Gregorius
d447cb0648 Use layouts for the instrument sound shaping tab / Extract classes for Envelope and LFO graphs (#7193)
Move the envelope and LFO graphs into their own classes.

Besides the improved code organization this step had to be done to be able to use layouts in `EnvelopeAndLfoView`. The class previously had fixed layouts mixed with custom rendering in the paint event. Mouse events are now also handled in both new classes instead of in `EnvelopeAndLfoView`.

## Layouts in EnvelopeAndLfoView
Use layouts to align the elements of the `EnvelopeAndLfoView`. This removes lots of hard-coded values. Add helper lambdas for the repeated creation of `Knob` and `PixmapButton` instances.

The spacing that is explicitly introduced between the envelope and LFO should be removed once there is a more open layout.

## Layouts for InstrumentSoundShapingView
Use layouts to align the elements of the `InstrumentSoundShapingView`.

## Info text improvements in LFO graph
Draw the info text at around 20% of the LFO graph's height. This prepares the dialog to be scaled later.

Write "1000 ms/LFO" instead of "ms/LFO: 1000" with a larger gap.

## Accessors for EnvelopeAndLfoParameters
Make the enum `LfoShape` in `EnvelopeAndLfoParameters` public so that it can be used without friend declarations. Add accessor methods for the model of the LFO.

## Other improvements
* Adjust include orders
* Variable initialization in headers
* Prevention of most vexing parses
2024-04-05 11:25:39 +02:00
Michael Gregorius
20fec28bef Font size adjustments (#7185)
Adjust and rename the function `pointSize` so that it sets the font size in pixels. Rename `pointSize` to `adjustedToPixelSize` because that's what it does now. It returns a font adjusted to a given pixel size. Rename `fontPointer` to `font` because it's not a pointer but a copy. Rename `fontSize` to simply `size`.

This works if the intended model is that users use global fractional scaling. In that case pixel sized fonts are also scaled so that they should stay legible for different screen sizes and pixel densities.

## Adjust plugins with regards to adjustedToPixelSize

Adjust the plugins with regards to the use of `adjustedToPixelSize`.

Remove the explicit setting of the font size of combo boxes in the following places to make the combo boxes consistent:
* `AudioFileProcessorView.cpp`
* `DualFilterControlDialog.cpp`
* `Monstro.cpp` (does not even seem to use text)
* `Mallets.cpp`

Remove calls to `adjustedToPixelSize` in the following places because they can deal with different font sizes:
* `LadspaBrowser.cpp`

Set an explicit point sized font size for the "Show GUI" button in `ZynAddSubFx.cpp`

Increase the font size of the buttons in the Vestige plugin and reduce code repetition by introducing a single variable for the font size.

I was not able to find out where the font in `VstEffectControlDialog.cpp` is shown. So it is left as is for now.

## Adjust the font sizes in the area of GUI editors and instruments.

Increase the font size to 10 pixels in the following places:
* Effect view: "Controls" button and the display of the effect name at the bottom
* Automation editor: Min and max value display to the left of the editor
* InstrumentFunctionViews: Labels "Chord:", "Direction:" and "Mode:"
* InstrumentMidiIOView: Message display "Specify the velocity normalization base for MIDI-based instruments at 100% note velocity."
* InstrumentSoundShapingView: Message display "Envelopes, LFOs and filters are not supported by the current instrument."
* InstrumentTuningView: Message display "Enables the use of global transposition"

Increase the font size to 12 pixels in the mixer channel view, i.e. the display of the channel name.

Render messages in system font size in the following areas because there should be enough space for almost all sizes:
* Automation editor: Message display "Please open an automation clip by double-clicking on it!"
* Piano roll: Message display "Please open a clip by double-clicking on it!"

Use the application font for the line edit that can be used to change the instrument name.

Remove overrides which explicitly set the font size for LED check boxes in:
* EnvelopeAndLfoView: Labels "FREQ x 100" and "MODULATE ENV AMOUNT"

Remove overrides which explicitly set the font size for combo boxes in:
* InstrumentSoundShapingView: Filter combo box

## Adjust font sizes in widgets

Adjust the font sizes in the area of the custom GUI widgets.

Increase and unify the pixel font size to 10 pixels in the following classes:
* `ComboBox`
* `GroupBox`
* `Knob`
* `LcdFloatSpinBox`
* `LcdWidget`
* `LedCheckBox`
* `Oscilloscope`: Display of "Click to enable"
* `TabWidget`

Shorten the text in `EnvelopeAndLfoView` from "MODULATE ENV AMOUNT" to "MOD ENV AMOUNT" to make it fit with the new font size of `LedCheckBox`.

Remove the setting of the font size in pixels from `MeterDialog` because it's displayed in a layout and can accommodate all font sizes. Note: the dialog can be triggered from a LADSPA plugin with tempo sync, e.g. "Allpass delay line". Right click on the time parameter and select "Tempo Sync > Custom..." from the context menu.

Remove the setting of the font size in `TabBar` as none of the added `TabButton` instances displays text in the first place.

Remove the setting of the font size in `TabWidget::addTab` because the font size is already set in the constructor. It would be an unexpected size effect of setting a tab anyway. Remove a duplicate call to setting the font size in `TabWidget::paintEvent`.

Remove unnecessary includes of `gui_templates.h` wherever this is possible now.

## Direct use of setPixelSize

Directly use `setPixelSize` when drawing the "Note Velocity" and "Note Panning" strings as they will likely never be drawn using point sizes.
2024-04-04 21:40:31 +02:00
Oskar Wallgren
b14f8ab8fd Refactor ArpDirection::Down and ArpDirection::DownAndUp (#7007)
Fixes an issue with the arpeggiation when it is set to go downwards and the cycle is over 0.
2024-04-03 19:14:00 -04:00
Michael Gregorius
9dd7f4dde4 Remove "GENERAL SETTINGS" tab (#7188)
Remove the "GENERAL SETTINGS" tab from the instrument track and sample track window.

This removes clutter as well as dependencies to the non-scalable `TabWidget`.

Remove superfluous calls to `setSpacing` which have set the default value of 6.

Use the default content margins of (9, 9, 9, 9) instead of (8, 8, 8, 8).
2024-04-01 20:06:18 +02:00
Michael Gregorius
5d5d8f8f14 Only repaint LcdWidget if necessary (#7187)
Some analysis done with Callgrind showed that the `LcdWidget` spends quite some time repainting itself even when nothing has changed. Some widget instances are used in song update contexts where `LcdWidget::setValue` is called 60 times per second.

This commit fixes the problem by only updating the `LcdWidget` if its value really has changed.

Adjust the condition in the if-clause so that it becomes clearer what's the interval of interest.
2024-04-01 14:57:43 +02:00
Michael Gregorius
c271d28314 Ensure that build and target are directories in .gitignore (#6884)
Ensure that `build` and `target` are directories in `.gitignore`.
2024-03-30 19:04:57 +01:00
Michael Gregorius
b622fa2206 Conditionally remove use of QApplication::desktop in ComboBox.cpp (#7179)
Prepare the application for Qt6 by conditionally removing the use of `QApplication::desktop` in `ComboBox.cpp`. The method was already deprecated in Qt5 and is removed in Qt6.

Instead the method `QWidget::screen` is used now if the Qt version is equal to or newer than 5.14 (because the method was only introduced with that version). Fall back to `QApplication::desktop` if an older version is detected during the build. This is for example the case for the CI builds which are based on Ubuntu 18.04.

Generalize the check if the menu can be shown in the screen. The code now also does handles the case where the menu would go out of screen along the X axis.

Also remove the unused include `embed.h`.
2024-03-30 16:30:21 +01:00
Michael Gregorius
a98c700911 Optimize map accesses in LadspaManager (#7173)
Some methods in `LadspaManager` performed repeated searches through the map by first calling `contains` and then by actually fetching the entry. This is fixed by using `find` on the map. It returns an iterator which can directly provide the result or indicate that nothing was found. That way the map is only searched once.
2024-03-30 08:53:08 +01:00
Kevin Zander
9c591b178f PianoRoll::paintEvent: don't shadow member variable (#7181) 2024-03-30 01:15:26 -04:00
Lost Robot
03f885abc2 Fix B/B Track Label Button (#7177)
* Fix Pattern Track Label Button
2024-03-29 12:39:56 -05:00
saker
bad57356d7 Fix infinite loop in InstrumentPlayHandle::play (#7176) 2024-03-29 12:36:20 -04:00
saker
b2f2fc4ad1 Revisit the initialization for local variables (#7143)
* clang-tidy: Apply cppcoreguidelines-init-variables everywhere (treating NaNs as zeros)

* Initialize msec and tick outside switch

* Update plugins/Vestige/Vestige.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/Vestige/Vestige.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/Vestige/Vestige.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/VstEffect/VstEffectControls.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/VstEffect/VstEffectControls.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/VstEffect/VstEffectControls.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Use initialization with =

* Use tabs

* Use static_cast

* Update DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Do not use tabs for alignment in src/core/DrumSynth.cpp

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

* Move x variable inside loop

* Use ternary operator for b variable

* Revert "Use tabs"

This reverts commit 07afd8a83f58b539c3673310b2aad4b63c9198a0.

* Remove unnecessary variables in XpressiveView

* Simplify initialization in Plugin

* Combine declaration and initialization in EqCurve

* Combine declaration and initialization in Song

* Combine declaration and initialization in AudioAlsa

* Combine declaration and initialization in EqCurve (again)

* Missed some

* Undo changes made to non-LMMS files

* Undo indentation changes in SidInstrument.cpp

* Combine declaration with assignment in IoHelper

* Combine declaration with assignment using auto in Carla

* Combine declaration with assignment

* Combine declaration with assignment in BasicFilters

* Simplify assignments in AudioFileProcessorWaveView::zoom

* Simplify out sample variable in BitInvader

* Remove sampleLength variable in DelayEffect

* Move gain variable in DynamicsProcessor

* Combine peak variable declaration with assignment in EqSpectrumView

* Move left/right lfo variables in for loop in FlangerEffect

* Use ternary operator for group variable in LadspaControlDialog

* Combine declaration with assignment in Lb302

* Combine declaration with assignment in MidiExport

* Combine declaration with assignment in MidiFile

* Combine declaration with assignment in MidiImport

* Use ternary operator for vel_adjusted variable in OpulenZ

* Move tmpL and dcblkL variables in for loop in ReverbSC

* Combine declaration with initialization in SlicerT

* Combine declaration with assignment in SaSpectrumView

* Combine declaration with assignment in SaWaterfallView

* Combine declaration with assignment in StereoEnhancerEffect

* Combine declaration with assignment in VibratingString

* Combine declaration with assignment in VstEffectControls

* Combine declaration with assignment in Xpressive

* Combine declaration with assignment in AutomatableModel

* Combine declaration with assignment in AutomationClip

* Move sample variable in for loop in BandLimitedWave

* Combine declaration with assignment in DataFile

* Combine declaration with assignment in DrumSynth

* Combine declaration with assignment in Effect

* Remove redundant assignment to nphsLeft in InstrumentPlayHandle

* Combine declaration with assignment in LadspaManager

* Combine declaration with assignment in LinkedModelGroups

* Combine declaration with assignment in MemoryHelper

* Combine declaration with assignment in AudioAlsa

* Combine declaration with assignment in AudioFileOgg

* Combine declaration with assignment in AudioPortAudio

* Combine declaration with assignment in AudioSoundIo

* Combine declaration with assignment in Lv2Evbuf

* Combine declaration with assignment in Lv2Proc

* Combine declaration with assignment in main

* Combine declaration with assignment in MidiAlsaRaw

* Combine declaration with assignment in MidiAlsaSeq

* Combine declaration with assignment in MidiController

* Combine declaration with assignment in MidiJack

* Combine declaration with assignment in MidiSndio

* Combine declaration with assignment in ControlLayout

* Combine declaration with assignment in MainWindow

* Combine declaration with assignment in ProjectNotes

* Use ternary operator for nextValue variable in AutomationClipView

* Combine declaration with assignment in AutomationEditor

* Move length variable in for-loop in PianoRoll

* Combine declaration with assignment in ControllerConnectionDialog

* Combine declaration with assignment in Graph

* Combine declaration with assignment in LcdFloatSpinBox

* Combine declaration with assignment in TimeDisplayWidget

* Remove currentNote variable in InstrumentTrack

* Combine declaration with assignment in DrumSynth (again)

* Use ternary operator for factor variable in BitInvader

* Use ternary operator for highestBandwich variable in EqCurve

Bandwich?

* Move sum variable into for loop in Graph

* Fix format in MidiSndio

* Fixup a few more

* Cleanup error variables

* Use ternary operators and combine declaration with initialization

* Combine declaration with initialization

* Update plugins/LadspaEffect/LadspaControlDialog.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/OpulenZ/OpulenZ.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update plugins/SpectrumAnalyzer/SaProcessor.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/midi/MidiAlsaRaw.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/MainWindow.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/clips/AutomationClipView.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/editors/AutomationEditor.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/widgets/Fader.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Move static_cast conversion into separate variable

* Use real index when interpolating

* Remove empty line

* Make helpBtn a private member

* Move controller type into separate variable

* Fix format of DrumSynth::waveform function

* Use tabs and static_cast

* Remove redundant if branch

* Refactor using static_cast/reinterpret_cast

* Add std namespace prefix

* Store repeated conditional into boolean variable

* Cast to int before assigning to m_currentLength

* Rename note_frames to noteFrames

* Update src/core/Controller.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/core/DrumSynth.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Update src/gui/widgets/Graph.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Revert changes that initialized variables redudantly

For situations where the initialization is
more complex or passed into a function
by a pointer, we dont need to do
initialization ourselves since it is
already done for us, just in a different way.

* Remove redundant err variable

* Remove explicit check of err variable

* Clean up changes and address review

* Do not initialize to 0/nullptr when not needed

* Wrap condition in parentheses for readability

---------

Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-03-28 17:21:31 -04:00
Oskar Wallgren
6f5f2c2ddd Fix glitch in SlicerT (#7174) 2024-03-28 18:13:32 +01:00
Lost Robot
682be4e82a Fix DynamicsProcessor bugs (#7168) 2024-03-27 09:00:49 -04:00
Rossmaxx
286d15724a Refactor gui_templates.h (#7159)
* remove the gui_templates header where functions not used

* refactor and replace template with function argument

* refactor: merge pointSizeF function with pointSize

* removed template per michael's review

* use std::max for more readability

* remove the QDesktopWidget header

* cleanup arguments and remove parentheses from return
2024-03-27 08:59:27 -04:00
Michael Gregorius
a41da81554 Enable different colors for oscilloscope channels (#7155)
Enable to set different colors for the oscilloscope channels:
* Left channel color
* Right channel color
* Color of all other channels

The clipping color is now used per channel, i.e. if the left channel clips but the right does not then only the signal of the left channel is painted in the clipping color.

Enable setting the colors in the style sheets and adjust the style sheets of the default and classic theme accordingly.
2024-03-26 20:19:52 +01:00
Lost Robot
45fd326787 Make Compressor background themeable (#7157) 2024-03-26 09:10:26 -07:00
Alexander Medvedev
66081ba1b1 CMake: Replace EXEC_PROGRAM with execute_process (#7166)
* CMake: Replace EXEC_PROGRAM with execute_process

exec_program is Deprecated since version 3.0: Use the execute_process() command instead.
2024-03-26 09:49:13 -05:00
Lassi
0e1eb712d8 Bump project year (#7167) 2024-03-26 10:16:47 -04:00
Kevin Zander
c2fdb8cfd2 Move confirmation to remove mixer channels outside MixerView::deleteChannel #7154)
Moves the confirmation to remove mixer channels outside of `MixerView::deleteChannel` and into `MixerChannelView::removeChannel`. This is so that the confirmation only applies when the user uses the context menu to remove a channel, which is important since no confirmation should apply when, for example, the mixer view is cleared with calls to `MixerView::clear`.
2024-03-25 19:22:37 -04:00
saker
9ff63a5f5a Set mixer channel LCD when its index changes (#7160) 2024-03-24 18:05:15 -04:00
Alexander Medvedev
3e19d1335f Update carla (#7149) 2024-03-20 13:43:41 -04:00
Alexander Medvedev
3f5ac806e9 Update jack2 (#7147) 2024-03-16 19:53:40 -04:00
TechnoPorg
af7431be99 Add GitHub issue forms for bug reports and feature requests (#7102) 2024-03-16 21:53:22 +00:00
Rossmaxx
4120a04d0b Replace QRegExp with QRegularExpression (#7133)
* replace QRegExp with QRegularExpression (find n replace)

* follow up to fix errors

* removed rpmalloc

* Fix compilation for qt5, to be fixed when qt6 fully supported.

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Added QtGlobal header for version finding fix

* Use the other syntax to try fix compilation.

* Check for 5.12 instead.

* Fix the header

* Attempt at fixing it further.

* Use version checks properly in header file

* Use QT_VERSION_CHECK macro in sources

* Apply suggestions from messmerd's review

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

---------

Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-03-16 14:34:01 +09:00
saker
b9ebc24e13 Check if m_peakSum is less than or equal to 0 again (#7146) 2024-03-15 21:40:15 -04:00
Michael Gregorius
04ecf73395 Fix missing icons for some instruments (#7132)
Revert some of the changes made in commit 88e0e94dcd. The underlying idea was that the `InstrumentTrackView` should be responsible for assigning the icon that's shown by its `TrackLabelButton`. However, this does not work because in some cases the `InstrumentTrack` that's passed into `InstrumentTrackView::determinePixmap` does not have an `Instrument` assigned. This in turn seems to be caused due to initalizations that are running in parallel in different threads.

Here are the steps to reproduce the threading problem (line numbers refer to commit 360254f):
1. Set a break point in line 1054 of `InstrumentTrack`, i.e. the line in `InstrumentTrack::loadInstrument` where `m_instrument` is being assigned to.
2. Set a break point in `InstrumentTrackView::determinePixmap`, e.g. inside of the first if statement.
3. Drop an instance of "Sf2 Player" onto the Song Editor.
4. The first break point in `InstrumentTrack` is hit in a thread called "lmms::Instrumen" (shown like that in my debugger). Try to step over it.
5. The second break point in `InstrumentTrackView` now gets hit before the code is stepped over. This time we are in the thread called "lmms". I guess this is the GUI main thread.
6. Continue execution.

If you now switch to the application then the icon is shown. I guess the debugger is halted long enough in the main thread so that the InstrumentTrack gets an instrument assigned in another thread.

If you delete/disable the break point in `InstrumentTrack::determinePixmap` and follow the coarse steps above then the icon is not shown because the track has no instrument.

The current fix still delegates to the `InstrumentTrackView` to determine the pixmap in hopes that one day there will be a better solution where the parent component can be fully responsible for its child component.

Fixes #7116.
2024-03-13 20:00:58 +01:00
Dalton Messmer
37073af494 Update to latest commit 2024-03-12 20:11:26 -05:00
Dalton Messmer
238974253d Update game-music-emu submodule 2024-03-12 20:11:26 -05:00
Michael Gregorius
227fc47a97 Fix NaNs in basic filters and Equalizer (#7141)
Fix several NaNs in the context of the basic filters and the Equalizer.

The coefficients of the `BiQuad` were not initialized which seems to have led to NaNs down the line.

Fix a division by zero in `EqEffect::peakBand` and `EqSpectrumView::paintEvent` if the energy is zero.

The condition `m_peakSum <= 0` was removed from `EqSpectrumView::paintEvent` because the value is initialized to 0 down the line and later only potentially positive values are added.
2024-03-11 22:38:45 +01:00
Michael Gregorius
1be2a20661 Fix a NaN in EqSpectrumView (#7140)
Fix a `NaN` in `EqSpectrumView` that's caused by `m_peakSum` not being initialzed.
2024-03-11 20:38:20 +01:00
saker
3ae13ae45e Apply master gain outside audio devices (#7135) 2024-03-10 23:06:46 -04:00
TechnoPorg
c991a85eef Remove MemoryManager (#7128)
Removes `MemoryManager` and the use of rpmalloc in favor of the `new` and `delete` operators found in C++.

---------

Co-authored-by: Veratil <veratil@gmail.com>
2024-02-25 13:49:56 -05:00
Michael Gregorius
03d067b105 Fix crash in Audio File Processor (#7124)
* Fix crash in Audio File Processor

Fix a crash in the Audio File Processor that occurs when an Audio File Processor with a reversed sample is loaded from a save file and then the plugin window is opened.

The problem was caused by a call to `AudioFileProcessorWaveView::slideSampleByFrames` during the execution of constructor of `AudioFileProcessorWaveView`. In that situation the three `knob` members were all `nullptr` because for some reason there was an explicit setter for them which was only called after construction. This is fixed by passing and setting the knobs in the constructor.

Another question is if it's not a problem in the first place that the knobs are given to the `AudioFileProcessorWaveView` instead of their underlying models.
2024-02-24 11:05:54 +01:00
Michael Gregorius
d4ae82283b Reenable song editor zooming (#7118)
Reenable zooming in the song editor by
* only resizing the track if the alt modifier is pressed and
* only accepting the wheel even if we in fact resize the track.

By doing so all other wheel events bubble up so that zooming and scrolling of the song editor can be handled by parent components.

The code that handles the retrieval of the delta value had to be adjusted as well. The reason is that pressing the alt key messes with the way that deltas are reported in the wheel event. The wheel event is interpreted as a horizontal scroll when alt is pressed.
2024-02-24 11:03:38 +01:00
Kevin Zander
7318af0fe9 Fix invalidated iterator when removing notes in Piano Roll (#7080)
* Fix invalidated iterator when removing notes in Piano Roll

* fixup - typo

* Add MidiClip::removeNote(iterator) function

* Use iterator version of remoteNote

* Fix parameter name

* Change variable name again
2024-02-23 15:57:41 -05:00
Monospace-V
cbaf2f0919 Update src/common/ to coding conventions (#7082)
* basic whitespace removal on RemoteBasePlugin.cpp (src/common/RemoteBasePlugin.cpp)

* Additional RPB. (src/common/RemotePluginBase.cpp).

* Additional RemotePluginBase.cpp cleaning (src/common/SharedMemory.cpp)

* something more
2024-02-23 15:40:56 -05:00
Lost Robot
360254fd81 Rewrite EffectSelectDialog to add effect groups and delete Qt Designer UI file (#7024) 2024-02-19 17:03:25 +00:00
Dominic Clark
876a36cebf Remove message location check from check-strings test (#7112)
* Ignore message location in check-strings test

* Support running test verification script on Windows
2024-02-18 21:14:37 +00:00
Michael Gregorius
a81666a9f5 Track resizing behavior (#7114)
* Simplify TrackLabelButton

Remove the dependency to `Instrument` and `InstrumentTrack` from `TrackLabelButton`. The icon of an `InstrumentTrackView` is now determined in the class `InstrumentTrackView` itself using the new static method `determinePixmap`. This enables the removal of the overridden `paintEvent` method from `TrackLabelButton`.

It was also attempted to keep a non-static member function version and to use the `InstrumentTrackView`'s model with a cast. However, this did not work because 'setModel' is executed as the very last step in the constructor, i.e. the model is not already set when `determinePixmap` is called. Pulling it to the top is too risky right now.

* Add helper method isInCompactMode

Add the helper method `isInCompactMode` which knows how to use the `ConfigManager` to determine if the option for compact track buttons is enabled. This removes duplicate code with intricate knowledge of the keys under which compact mode is stored.

* Set song as modified when track name changes

Extend `Track::setName` to set the song as modified whenever the track name changes. This moves the update into a core class and enables the removal of the dependencies to `Engine` and `Song` from the GUI class `TrackLabelButton`.

Also add a check if the name is really changed and only perform the actions if that's the case.

To make this work the implementation of `setName` had to be moved from the header into the implementation file.

* Keep instrument and sample content at top on resize

Keep the content of the instrument and sample track at the top of the widget if the widget is resized. This is also fixes a bug where the `TrackLabelButton` does not react anymore when the size is increased.

Technically the layout with the actual widgets is put into another vertical layout with a spacer that consumes all remaining space at the bottom.

* Vertical track resizing via mouse wheel

Enable to vertically resize tracks using the mouse wheel. Scrolling the mouse wheel over the track view with the control key pressed will increase/decrease the height by one pixel per wheel event. Pressing the shift key will increase/decrease in steps of five pixels.

Extract code that can be shared between the existing and the new way to resize the track into the private helper method `resizeToHeight`.

* Render beat pattern step buttons at the top

Render the step buttons of beat patterns at the top instead of at the bottom so that they stay aligned with the other elements to the left of them (buttons, knobs, etc).

Set the y offset to 4 so that the step buttons are vertically aligned with the other elements. The previous calculation lead to a minimum offset of 6 which always made the step buttons look misaligned.

Introduce the new static variable `BeatStepButtonOffset` which ensures that the rendering and the evaluation of mouse clicks do not go out of sync.
2024-02-18 21:22:22 +01:00
Johannes Lorenz
34ab5ff730 Fixes #6626: Throw if Lv2 object CTORs fail (#6951)
On plugin instantiation failure, `Lv2Proc::m_valid` was being set to false. However, `Lv2Proc::run` did not evaluate `m_valid` and still called `lilv_instance_run`, which caused undefined behavior, including crashes.

This bug fixes this by not even create such zombie classes, and instead `throw`s right away. The throws are caught in `lmms_plugin_main`, as suggested in the PR discussion and as the VST3 approach.
2024-02-18 15:56:45 +01:00
Pascal
99120f567d Prevent out of bound read in Sample::playRaw (#7113) 2024-02-17 10:48:17 -05:00
saker
a81ad74e3a Fix playback within Sample (#7100)
This revisits two main aspects of playback from `Sample`: copying frames into a temporary playback buffer before resampling, and advancing the state's frame index.  Both operations were improperly done, causing distorted audio to be heard when resampling from within the `Sample::play` function.

To fix this, playback into the temporary playback buffer is now done using the `playRaw` function, which copies the frame one by one in a loop, moving through the buffer correctly as determined by the loop mode. In addition, advancement of the playback index is done using the `advance` function, which advances the index by the given amount and handles an out of bounds index for the loop modes as necessary using the modulo operator.
2024-02-16 16:31:44 -05:00
Dominic Clark
c87ff4194f Use GitHub mirror of tap-plugins (#7110) 2024-02-16 18:56:30 +00:00
Rossmaxx
074dd0bd13 Add WANT_OSS as a compile time option (#7099) 2024-02-11 13:30:12 -05:00
Kevin Zander
2d185dfe02 Fix deletion of mixer channels when calling MixerView::clear (#7081)
* Fix deletion of mixer channels when calling MixerView::clear

* clear channel 0 + delete from back to front
2024-02-10 22:02:58 -05:00
Michael Gregorius
dd53bec311 Hide the LED button for "Custom Base Velocity" (#7067)
Hide the LED button for "Custom Base Velocity" as it did not have any other effect besides disabling the spinbox in the GUI. It did not affect any model which could be evaluated elsewhere.

## Technical details
Add functionality to show/hide the LED button to `GroupBox`. There's also a corresponding getter called `ledButtonShown`. The latter is evaluated in the following situations:
* Mouse clicks: if the LED button is hidden then the model is not toggled.
* Paining: The X position of the caption changes depending on whether the LED button is shown or not.

At a certain point the class `GroupBox` should be replaced by something that's implemented with layouts and which is used wherever it's possible.
2024-02-10 14:27:50 +01:00
Monospace-V
c2052151ab Center effects W/D knob at 0 (#7077)
Set the center value of the W/D amount knob as zero specifically in Effect.cpp
2024-02-03 10:10:52 -06:00
Dominic Clark
b44411382c Fix vcpkg dependencies (#7088) 2024-02-02 08:56:21 +00:00
Dominic Clark
a8e427fcb8 Update URL of tap-plugins submodule (#7087) 2024-01-31 21:44:12 +00:00
Kevin Zander
339644a418 Sf2Player missing nullptr initialization (#7084) 2024-01-30 10:57:07 -05:00
Michael Gregorius
ffcf8c261d Add private setters for "from" and "to" (#7071)
* Add private setters for "from" and "to"

Add private setters for the "from" and "to" values in `AudioFileProcessorWaveView`. When being used the setters will ensure that the bounds are respected.

Also add a `range` method because this computation was done repeatedly throughout the code.

Fixes #7068 but masks some of the original problems with the code that computes out-of-bounds values for "from" and "to" like the `slide` method. Problematic code can still be found by temporarily adding the following assertions to the setters:
* `assert (to <= m_sample->sampleSize());` in `setTo`
* `assert (from >= 0);` in `setFrom`

* Remove superfluous calls to qMax and qMin
2024-01-24 18:12:42 +01:00
Michael Gregorius
8e8f68552f Disentangle and clean the classes of the Audio File Processor (#7069)
## Extract views
Extract the classes `AudioFileProcessorWaveView` and `AudioFileProcessorView` into their own files.

Reformat the new classes by removing unnecessary whitespace and underscores. Add spaces to if-statements.

Cleanup the includes.

## Remove friend relationship
Remove the friend relationship between `AudioFileProcessor` and `AudioFileProcessorView`.

Introduce getters for entities that the view is interested in.
2024-01-21 12:25:00 +01:00
Michael Gregorius
1e6a902dd3 Fix most of the track cloning for MIDI ports (#7066)
Fixes most of the problem that the MIDI port information is not cloned when a track is cloned.

The bug was caused because cloning is implemented via serialization and deserialization of the Track. The previous code only serialized the MIDI port if `Engine::getSong()->isSavingProject()` is true. However, when we are cloning the statement will be `false` because we are not saving the song. Therefore the MIDI port's state was not saved and the clone was initialized with the default values.

The fix is to serialize the MIDI port in the following cases:
* We are not in song saving mode, i.e. we are in the state that this issue is about, e.g. cloning.
* We save a song and the MIDI connections are not discarded.

Using boolean algebra these conditions can be simplified as seen in the changed statement.
2024-01-17 16:53:32 +01:00
szeli1
3343496c00 Compressor plugin hideable controls (#7008) 2024-01-15 17:20:59 -05:00
saker
6c4d458599 Migrate to CTest (#7062) 2024-01-15 17:19:33 -05:00
Michael Gregorius
629ba0362b Fix mixer channel updates on solo/mute (#7055)
* Fix mixer channel updates on solo/mute

Fix the update of the mixer channels whenever a channel is soloed or muted.

The solution is rather "brutal" as it updates all mixer channel views when one of the models changes.

Introduce private helper method `MixerView::updateAllMixerChannels`. It calls the `update` method on each `MixerChannelView` so that they can get repainted.

Call `updateAllMixerChannels` at the end of the existing method `toggledSolo`.

Introduce a new method `MixerView::toggledMute` which is called whenever the mute model of a channel changes. It also updates all mixer channels.

Fixes #7054.

* Improve mixer channel update for mute events

Improve the mixer channel update for mute events by not delegating to `MixerView` like for the solo case. Instead the `MixerChannelView` now has its own `toggledMute` slot which simply updates the widget on changes to the mute model.

Also fix `MixerChannelView::setChannelIndex` by disconnecting from the signals of the previous mixer channel and connecting to the signals for the new one.

Remove `toggledMute` from `MixerView`.

The solo implementation is kept as is because it also triggers changes to the core model. So the chain seems to be:
* Solo button clicked in mixer channel view
* Button changes solo model
* Solo model signals to mixer view which was connected via the mixer channel view
* Mixer view performs changes in the other core models
* All mixer channels are updated.

Are better chain would first update the core models and then update the GUI from the changes:
* Solo button clicked in mixer channel view
* Button changes solo model
* Solo model signals to core mixer, i.e. not a view!
* Mixer view performs changes in the other core models
* Changed models emit signal to GUI elements

* Revert "Improve mixer channel update for mute events"

This reverts commit ede65963ea.

* Add comment

After the revert done with commit the code is more consistent again but not in a good way. Hence a comment is added which indicates that an inprovement is needed.

* Abstract mixer retrieval

Abstract the retrieval of the mixer behind the new method `getMixer`. This is done in preparation for some dependency injection so that the `MixerView` does not have to ask the `Engine` for the mixer but gets it injected, a.k.a. the "Hollywood principle": "Don't call us, we'll call you."

It's called `getMixer` and not just mixer because it allows for locale variables to be called `mixer` without confusing it with the method.

* Let MixerView connect directly to models

Let the `MixerView` connect directly to the solo and mute models it is connected with.

Remove the connections that are made in `MixerChannelView` which acted as a proxy which only complicated things.

Add `connectToSoloAndMute` which connects the `MixerView` to the solo and mute models of a given channel. Call it whenever a new channel is created.

Add `disconnectFromSoloAndMute` which disconnects the `MixerView` from the solo and mute models of a given channel. Call it when a channel is deleted.

* Code cleanup

Cleanup code related to the creation of the master channel view.

* Inject the Mixer into the MixerView

Inject the `Mixer` into the `MixerView` via the constructor. This makes it more explicit that the `Mixer` is the model of the view. It also implements the "Dependency Inversion Principle" in that the `MIxerView` does not have to ask the `Engine` for the `Mixer` anymore.

The current changes should be safe in that the `Mixer` instance is static and does not change.

* Fix connections on song load

Disconnect and reconnect in `MixerView::refreshDisplay` which is called when a song is loaded.
2024-01-15 02:37:11 -05:00
saker
5fdf611357 Fix memory leaks within tests (#7001)
Caused by not calling `Engine::destroy`, as well as creating tracks/clips on the heap and not freeing the memory at the end of the test.

Instead of creating tracks/clips on the heap, they are now made on the stack, similar to how the surrounding tests create its objects.
2024-01-15 02:34:46 -05:00
Michael Gregorius
abe2c92bed Resizable mixer window (#7037)
Make the mixer window resizable and allow the effects rack to grow. This enables the users a better overview of the effects used.
2024-01-14 11:17:13 -05:00
saker
b53f2b4f54 Fix AFP playback indicator not shown when dragging and dropping samples (#7064)
The issue occurred because `AudioFileProcessorWaveView::updateSampleRange` was not being called in `AudioFileProcessorWaveView::dropEvent`.
2024-01-13 22:12:24 -05:00
zynskeywolf
af90aff84c Some minor UI fixes (#7044)
* fix ladspa browser description (unwanted line breaks), add missing labels to instruments' controls

* some more ui fixes

* translation context + style fixup
2024-01-13 21:08:41 -05:00
saker
b67c53ad29 Fix sliding of waveform when drawing sample in reverse (#7063) 2024-01-13 21:05:18 -05:00
Michael Gregorius
85399c12c2 Abstraction in MixerChannelView (#7057)
Reduce code repetition in `MixerChannelView` by introducing methods that:
* Retrieve the `MixerChannel` that's associated with the view
* Check if the associated channel is the master channel

This abstracts some functionality and also reduces direct usage of the variable `m_channelIndex`.
2024-01-13 22:03:03 +01:00
Michael Gregorius
d945ac1cbe Fix scaling of PixmapButton in layouts (#7053) 2024-01-08 09:44:58 -05:00
Rossmaxx
18d34431b3 Run without terminal for non-debug Windows builds (#7022)
* set win32 flag

* added mingw too to win32 flag + dom's suggestions

* revert unnecessary changes i made.

* simplify msys linker flag condition

* removed extra whitespace

* whitespace change 2
2024-01-08 10:20:55 +09:00
Michael Gregorius
1eff322c2a Fix crash on subsequent song loads (#7051)
Fix a crash that occurs when songs are loaded after each other. The crash only occurs if the "participating" songs have at least one other channel besides the master channel.

The crash occurred because the `MixerChannelViews` were not really deleted in `MixerView::refreshDisplay`. As a consequence the parent child relationship was still given between the `MixerView` and the `MixerChannelView`. When a song was loaded the event queue was evaluated which in turn resulted in the method `Fader::knobPosY` being called on a `Fader` which did not have a model anymore.

Fixes #7046.
2024-01-07 10:06:34 +01:00
Lost Robot
56e7f7de50 Add setSampleRate to BasicFilters and update LOMM allpass sample rate (#7048) 2024-01-04 15:31:22 -08:00
Michael Gregorius
c2f2b7e0d7 Handle divisions by 0 in Lb302 and Monstro (#7021)
* Handle divisions by 0 in Lb302

Handle potential division by 0 which in turn lead to floating point exceptions in Lb302. The division can occur in the `process` method if it is called with the member `vco_inc` still initialized to 0. This seems to happen then the Lb302 processes with no notes actually being played.

The offending call is `BandLimitedWave::pdToLen(vco_inc)` which is now prevented when the increment is 0. In the latter case a sample of 0 is produced. This works because in all other cases the Lb302 instance should process a note which in turn sets the increments to something different from 0.

* Fix FPEs in Monstro

Fix some floating point exceptions in `MonstroSynth::renderOutput` that occurred due to calling `BandLimitedWave::pdToLen` with a value of 0. This happened when one of the phase deltas was set to 0, i.e. `pd_l` or `pd_r`. These cases are now checked and produce silence in the corresponding components if the phase delta is set to 0.

* Fix uninitialized variables

Initialize the local variables `len_l` and `len_r` to 0. This fixes compiler warnings a la "error: 'len_r' may be used uninitialized in this function" which are treated as errors on the build server.

* Adjust whitespace of touched code
2024-01-03 17:01:28 +01:00
Lost Robot
8eba258bda Accept Editor close event (#7035) 2023-12-31 19:53:52 -08:00
saker
4049cc29d3 Fix Fader pixmaps (#7041) 2023-12-31 21:52:56 -05:00
saker
f79695e4f8 Fix regressions from #6610 (#7040)
Fixes crashes when using decodeSampleOggVorbis, as well as missing supported audio formats
2023-12-31 18:05:46 -05:00
Michael Gregorius
1868fa170a Fix equalizer peak updates (#7038)
Fix the peak update of the LMMS equalizer which accidentally used the same sample twice.

Simplify the `gain` method by removing repeated deferences which made the code hard to read.

Use `std::max` to update the peak values to the maximum of the buffer.
2023-12-31 15:52:24 +01:00
Michael Gregorius
36cb0ed7ca Extend TabWidget's style sheet options
# Extend TabWidget's style sheet options

Extend the `TabWidget` class so that the text color of the selected tab
can be set in the style sheet. Adjust the paint method to make use of
the new property.

Adjust the default style sheet as follows:
* Background color of the selected tab is the green of the knobs
* Text color of the selected tab is full on white

Adjust the classic style sheet in such a way that nothing changes, i.e.
the text colors of the selected tab and the other ones are the same.

# Code review style changes

Completely adjust the code style of TabWidget:
* Pointer/reference close to type
* Remove underscores from parameter names
* Remove spaces from parentheses
* Add space after if and for statements

# Remove repeated iterator dereferences

Remove repeated iterator dereferences by introducing variables with speaking names.

Fixes #6730.
2023-12-31 11:55:59 +01:00
Michael Gregorius
bf4e57da19 Fix minimum size of LADSPA dialogs (#6982) (#7019)
Remove the code which computes a minimum height for the LADSPA dialogs. It was intended to make sure that no scrollbar is shown in most cases. However, doing so came at the cost that the computed height was the minimum height as well. Therefore the dialogs took a lot of space on low-res displays and could not be made smaller.

After the removal the behavior is still sane. Small dialogs are shown in full and dialogs which are larger, e.g. "Calf Equalizer 12 Band LADSPA", seem to be sized around half the height of the workspace and show scrollbars.
2023-12-31 11:49:15 +01:00
saker
6b21dc7896 Use Qt layouts for mixer channels (#6591)
Use Qt layouts for the mixer channels. These changes will enable several other improvements, like for example making the mixer and faders resizable, adding peak indicators, etc.

This is a squash commit which consists of the following individual commits:

* Remove extra transparency in send/receive arrows
The extra transparency was conflicting with the positioning of
the arrows in the layout

* Begin reimplementing MixerChannelView

MixerChannelView is now a combination of the
MixerLine with the previous MixerChannelView

* Adjust SendButtonIndicator to use MixerChannelView

* Remove MixerLine
- Move MixerChannelView into src/gui

* Remove MixerView::MixerChannelView

* Remove header of MixerLine

* Change MixerView.h to use MixerChannelView
Change MixerView.h to use MixerChannelView rather than MixerLine
Also do some cleanup, such as removing an unused forward declaration
of QButtonGroup

* Create EffectRackView
+ Set height of sizeHint() using MIXER_CHANNEL_HEIGHT (287)

* Remove include of MixerLine
- Include MixerChannelView

* Phase 1: Adjust MixerView to use new MixerChannelView

* Move children wigets into header file

* Phase 2: Adjust MixerView to use new MixerChannelView

* Phase 3: Adjust MixerView to use new MixerChannelView

* Phase 4: Adjust MixerView to use new MixerChannelView

* Phase 5: Adjust MixerView to use new MixerChannelView

* Phase 5: Adjust MixerView to use new MixerChannelView

* Remove places where MixerChannelView is being deleted

Before, MixerChannelView was not inherited by QWidget,
meaning it could not have a parent and had to be deleted
when necessary. Since the MixerView owns the
new MixerChannelView, this is no longer necessary.

* Replace MixerLine with MixerChannelView
- Include MixerChannelView in MixerView

* Replace setCurrentMixerLine calls with setCurrentMixerChannel around codebase

* Add event handlers in MixerChannelView

* Implement MixerChannelView::eventFilter

* Update theme styles to use MixerChannelView

* Add QColor properties from style
- Set the Qt::WA_StyledBackground attribute on

* Add effect rack to rack layout when adding channel

* Set size for MixerChannelView
- Change nullptr to this for certain widgets
   - Some custom widgets may expect there to be a parent
- Add spacing in channel layout
- Increase size of mixer channel

* Retain size when widgets are hidden

* Implement paintEvent
- Rename states in SendReceiveState

* Implement send/receive arrow toggling
- Make maxTextHeight constexpr in elideName
- Remove background changing on mouse press
(is now handled in paintEvent)

* Implement renaming mixer channels

* Implement color functions

* Implement channel moving/removing functions

* Do some cleanup
Not sure if that connection with the mute model was needed, but removing
it did not seem to introduce any issues.

* Include cassert

* Replace references to MixerLine with MixerChannelView

* Reduce height
+ Make m_renameLineEdit transparent
+ Retain size when LCD is hidden
+ Remove stretch after renameLineEdit in layout

* Remove trailing whitespace

* Make m_renameLineEdit read only
+ Transpose m_renameLineEditView rectangle (with 5px offset)

* Set spacing in channel layout back to 0

* Remove sizeHint override and constant size

* Use sizeHint for mixerChannelSize
+ Leave auto fill background to false in MixerChannelView
+ Only set width for EffectRackView

* Set margins to 4 on all sides in MixerChannelView

* Move solo and mute closer to each other

Move the solo and mute buttons closer to each other in the mixer channels.

Technically this is accomplished by putting them into their own layout with minimal margins and spacing.

* Fixes for CodeFactor

* Code review changes

Mostly whitespace and formatting changes: remove tabs, remove spaces in parameter lists, remove underscores from parameter names.

Some lines have been shortened by introducing intermediate variables, e.g. in `MixerChannelView`.

`MixerView` has many changes but only related to whitespace. Spaces have been introduced for if and for statements. Whitespace at round braces has been removed everywhere in the implementation file even if a line was not touched by the intial changes.

Remove duplicate forward declaration of `MixerChannelView`.

* Adjust parameter order in MixerChannelView's constructor

Make the parent `QWidget` the first parameter as it is a Qt convention. The default parameter had to be removed due to this.

* Move styling of rename line edit into style sheets

Move the style of the `QGraphicsView` for the rename line edit from the code into the style sheets of the default and classic theme.

* More code review changes

Fix spaces between types and references/pointers, e.g. use `const QBrush& c` instead of `const QBrush & c`.
Remove underscores from parameter names.
Remove spaces near parentheses.
Replace tabs with spaces.
Introduce intermediate variable to resolve "hanging" + operator.
Replace the connection for the periodic fader updates with one that uses function pointers instead of `SIGNAL` and `SLOT`.

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
2023-12-30 17:55:28 +01:00
saker
4e63f60652 Add missing copyright in SampleDecoder.cpp (#7030) 2023-12-25 13:14:19 -05:00
Spekular
4eba656bd3 New loop marker shortcuts, attempt 2 (#6382)
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2023-12-25 16:26:35 +00:00
saker
ce722dd6b6 Refactor `SampleBuffer` (#6610)
* Add refactored SampleBuffer

* Add Sample

* Add SampleLoader

* Integrate changes into AudioSampleRecorder

* Integrate changes into Oscillator

* Integrate changes into SampleClip/SamplePlayHandle

* Integrate changes into Graph

* Remove SampleBuffer include from SampleClipView

* Integrate changes into Patman

* Reduce indirection to sample buffer from Sample

* Integrate changes into AudioFileProcessor

* Remove old SampleBuffer

* Include memory header in TripleOscillator

* Include memory header in Oscillator

* Use atomic_load within SampleClip::sample

* Include memory header in EnvelopeAndLfoParameters

* Use std::atomic_load for most calls to Oscillator::userWaveSample

* Revert accidental change on SamplePlayHandle L.111

* Check if audio file is empty before loading

* Add asserts to Sample

* Add cassert include within Sample

* Adjust assert expressions in Sample

* Remove use of shared ownership for Sample
Sample does not need to be wrapped around a std::shared_ptr.
This was to work with the audio thread, but the audio thread
can instead have their own Sample separate from the UI's Sample,
so changes to the UI's Sample would not leave the audio worker thread
using freed data if it had pointed to it.

* Use ArrayVector in Sample

* Enforce std::atomic_load for users of std::shared_ptr<const SampleBuffer>

* Use requestChangesGuard in ClipView::remove
Fixes data race when deleting SampleClip

* Revert only formatting changes

* Update ClipView::remove comment

* Revert "Remove use of shared ownership for Sample"

This reverts commit 1d452331d1.
In some cases, you can infact do away with shared ownership
on Sample if there are no writes being made to either of them,
but to make sure changes are reflected to the object in cases
where writes do happen, they should work with the same one.

* Fix heap-use-after-free in Track::loadSettings

* Remove m_buffer asserts

* Refactor play functionality (again)
The responsibility of resampling the buffer
and moving the frame index is now in Sample::play, allowing the removal
of both playSampleRangeLoop and playSampleRangePingPong.

* Change copyright

* Cast processingSampleRate to float
Fixes division by zero error

* Update include/SampleLoader.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Update include/SampleLoader.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Format SampleLoader.h

* Remove SampleBuffer.h include in SampleRecordHandle.h

* Update src/core/Oscillator.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Use typeInfo<float> for float equality comparison

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Use std::min in Sample::visualize

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Move in result to m_data

* Use if block in playSampleRange

* Pass in unique_ptr to SampleClip::setSampleBuffer

* Return const QString& from SampleBuffer::audioFile

* Do not pass in unique_ptr by r-value reference

* Use isEmpty() within SampleClipView::updateSample

* Remove use of atomic_store and atomic_load

* Remove ArrayVector comment

* Use array specialization for unique_ptr when managing DrumSynth data
Also made it so that we don't create result
before checking if we failed to decode the file,
potentially saving us an allocation.

* Don't manually delete Clip if it has a Track

* Clean up generateAntiAliasUserWaveTable function
Also, make it so that we actually call this function
when necessary in TripleOscillator.

* Set user wave, even when value is empty
If the value or file is empty, I think showing a
error popup here is ideal.

* Remove whitespace in EnvelopeAndLfoParameters.cpp L#121

* Fix error in c5f7ccba49
We still have to delete the Clip's, or else we would just be eating
up memory. But we should first make sure that the Track's no longer
see this Clip in their m_clips vector. This has to happen
as it's own operation because we have to wait for the audio thread(s)
first. This would ensure that Track's do not create
PlayHandle's that would refer to a Clip that is currently
being destroyed. After that, then we call deleteLater on the Clip.

* Convert std::shared_ptr<Sample> to Sample
This conversion does not apply to Patman as there seems to be issues
with it causing heap-use-after-free issues, such as with
PatmanInstrument::unloadCurrentPatch

* Fix segfault when closing LMMS
Song should be deleted before AudioEngine.

* Construct buffer through SampleLoader in FileBrowser's previewFileItem function
+ Remove const qualification in SamplePlayHandle(const QString&)
constructor for m_sample

* Move guard out of removeClip and deleteClips
+ Revert commit 1769ed517d since
this would fix it anyway
(we don't try to lock the engine to
delete the global automation track when closing LMMS now)

* Simplify the switch in play function for loopMode

* Add SampleDecoder

* Add LMMS_HAVE_OGGVORBIS comment

* Fix unused variable error

* Include unordered_map

* Simplify SampleDecoder
Instead of using the extension (which could be wrong) for the file,
we simply loop through all the decoders available. First sndfile because
it covers a lot of formats, then the ogg decoder for the few cases where sndfile
would not work for certain audio codecs, and then the DrumSynth decoder.

* Attempt to fix Mac builds

* Attempt to fix Mac builds take 2

* Add vector include to SampleDecoder

* Add TODO comment about shared ownership with clips

Calls to ClipView::remove may occur at any point, which can cause
a problem when the Track is using the clip about to be removed.
A suitable solution would be to use shared ownership between the Track
and ClipView for the clip. Track's can then simply remove the shared
pointer in their m_clips vector, and ClipView can call reset on the
shared pointer on calls to ClipView::remove.

* Adjust TODO comment
Disregard the shared ownership idea. Since we would be modifying
the collection of Clip's in Track when removing the Clip, the Track
could be iterating said collection while this happens,
causing a bug. In this case, we do actually
want a synchronization mechanism.

However, I didn't mention another separate issue in the TODO comment
that should've been addressed: ~Clip should not be responsible for
actually removing the itself from it's Track. With calls to removeClip,
one would expect that to already occur.

* Remove Sample::playbackSize
Inside SampleClip::sampleLength, we should be using Sample::sampleSize
instead.

* Fix issues involving length of Sample's
SampleClip::sampleLength should be passing the Sample's sample rate to
Engine::framesPerTick.

I also changed sampleDuration to return a std::chrono::milliseconds
instead of an int so that the callers know what time interval
is being used.

* Simplify if condition in src/gui/FileBrowser.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Simplify if condition in src/core/SampleBuffer.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Update style in include/Oscillator.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Format src/core/SampleDecoder.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Set the sample rate to be that of the AudioEngine by default

I also removed some checks involving the state of the SampleBuffer.
These functions should expect a valid SampleBuffer each time.
This helps to simplify things since we don't have to validate it
in each function.

* Set single-argument constructors in Sample and SampleBuffer to be explicit

* Do not make a copy when reading result from the decoder

* Add constructor to pass in vector of sampleFrame's directly

* Do a pass by value and move in SampleBuffer.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Pass vector by value in SampleBuffer.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Make Sample(std::shared_ptr) constructor explicit

* Properly draw sample waveform when reversed

* Collect sample not found errors when loading project

Also return empty buffers when trying to load
either an empty file or empty Base64 string

* Use std::make_unique<SampleBuffer> in SampleLoader

* Fix loop modes

* Limit sample duration to [start, end] and not the entire buffer

* Use structured binding to access buffer

* Check if GUI exists before displaying error

* Make Base64 constructor pass in the string instead

* Remove use of QByteArray::fromBase64Encoding

* Inline simple functions in SampleBuffer

* Dynamically include supported audio file types

* Remove redundant inline specifier

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Translate file types

* Cache calls to SampleDecoder::supportedAudioTypes

* Fix translations in SampleLoader (again)
Also ensure that all the file types are listed first.
Also simplified the generation of the list a bit.

* Store static local variable for supported audio types instead of in the header

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Clamp frame index depending on loop mode

* Inline member functions of PlaybackState

* Do not collect errors in SampleLoader when loading projects

Also fix conflicts with surrounding codebase

* Default construct shared pointers to SampleBuffer

* Simplify and optimize Sample::visulaize()

* Remove redundant gui:: prefix

* Rearrange Sample::visualize after optimizations by DanielKauss

* Apply amplification when visualizing sample waveforms

* Set default min and max values to 1 and -1

* Treat waveform as mono signal when visualizing

* Ensure visualization works when framesPerPixel < 1

* Simplify Sample::visualize a bit more

* Fix CPU lag in Sample by using atomics (with relaxed ordering)

Changing any of the frame markers originally took a writer
lock on a mutex.

The problem is that Sample::play took a reader lock first before
executing. Because Sample::play has to wait on the writer, this
created a lot of lag and raised the CPU meter. The solution
would to be to use atomics instead.

* Fix errors from merge

* Fix broken LFO controller functionality

The shared_ptr should have been taken by reference.

* Remove TODO

* Update EnvelopeAndLfoView.cpp

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

* Update src/gui/clips/SampleClipView.cpp

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

* Update plugins/SlicerT/SlicerT.cpp

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

* Update plugins/SlicerT/SlicerT.cpp

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>

* Store shortest relative path in SampleBuffer

* Tie up a few loose ends

* Use sample_rate_t when storing sample rate in SampleBuffer

* Add missing named requirement functions and aliases

* Use sampledata attribute when loading from Base64 in AFP

* Remove initializer for m_userWave in the constructor

* Do not use trailing return syntax when return is void

* Move decoder functionality into unnamed namespace

* Remove redundant gui:: prefix

* Use PathUtil::toAbsolute to simplify code in SampleLoader::openAudioFile

* Fix translations in SampleLoader::openAudioFile

Co-authored-by: DomClark <mrdomclark@gmail.com>

* Fix formatting for ternary operator

* Remove redundant inlines

* Resolve UB when decoding from Base64 data in SampleBuffer

* Fix up SampleClip constructors

* Add AudioResampler, a wrapper class around libsamplerate

The wrapper has only been applied to Sample::PlaybackState for now.
AudioResampler should be used by other classes in the future that do
resampling with libsamplerate.

* Move buffer when moving and simplify assignment functions in Sample

* Move Sample::visualize out of Sample and into the GUI namespace

* Initialize supportedAudioTypes in static lambda

* Return shared pointer from SampleLoader

* Create and use static empty SampleBuffer by default

* Fix header guard in SampleWaveform.h

* Remove use of src_clone
CI seems to have an old version of libsamplerate and does not have this method.

* Include memory header in SampleBuffer.h

* Remove mutex and shared_mutex includes in Sample.h

* Attempt to fix string operand error within AudioResampler

* Include string header in AudioResampler.cpp

* Add LMMS_EXPORT for SampleWaveform class declaration

* Add LMMS_EXPORT for AudioResampler class declaration

* Enforce returning std::shared_ptr<const SampleBuffer>

* Restrict the size of the memcpy to the destination size, not the source size

* Do not make resample const

AudioResampler::resample, while seemingly not changing the data of the resampler, still alters its internal state and therefore should not be const.
This is because libsamplerate manages state when
resampling.

* Initialize data.end_of_input

* Add trailing new lines

* Simplify AudioResampler interface

* Fix header guard prefix to LMMS_GUI instead of LMMS

* Remove Sample::resampleSampleRange

---------

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
Co-authored-by: Daniel Kauss <daniel.kauss.serna@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: DomClark <mrdomclark@gmail.com>
2023-12-25 07:07:11 -05:00
Lost Robot
3aefe7b3d3 Fix LOMM crossovers (#7026) 2023-12-22 13:58:02 -08:00
Dominic Clark
f3d3a1421e Split TimeLineWidget into core and GUI parts (#7004) 2023-12-16 14:19:36 +00:00
Michael Gregorius
8136b7002c Fix floating point exception in Spectrum Analyzer (#7018)
Fix a floating point exception in the Spectrum Analyzer which occurs if the amplitude is 0. The amplitude is used in the calculation of a logarithm which is not defined for values smaller or equal to 0.

The fix is to replace a value of 0 with the minimum positive float value. Negative values are not handled because it seems that only values greater or equal to 0 are fed into the method. This assumption is asserted in case this ever changes.
2023-12-10 11:42:02 +01:00
szeli1
67ce167775 Fix AudioFileProcessor reverse bug (#6958) 2023-11-25 17:24:05 -05:00
DanielKauss
c2811aebef Ghost notes for the automation editor (#6940)
Show ghost notes or sample track as a visual aid in the Automation Editor.

---------

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2023-11-25 12:16:56 +01:00
saker
3a928d80b2 Enforce lazy loading for FileBrowser (#6996) 2023-11-23 20:31:49 -05:00
Lost Robot
ced1f18eca Rewrite Amplifier plugin code (#6989)
* rewrite amplifier plugin style

* pomelo

* oroblanco

* grapefruit

* calamlamondin
2023-11-23 16:30:40 -05:00
Dominic Clark
dc8c49a539 Use std::optional for colour interfaces and storage (#6991) 2023-11-19 14:52:37 +00:00
saker
aa050ae0b7 Fix memory leaks (#6879)
* Replace knobFModel with std::vector

* Create QPixmap's on the stack

* Assign parent for QGraphicsScene
A call to QGraphicsView::setScene does not make
the view take ownership of the scene.

* Do not allocate QList on the heap

* Use static QPixmap's
The QPixmap's need to be created within the constructor, and not outside
where they are defined, since it can't find them otherwise.
I'm not too sure why.

* Clear m_vi2->knobFModel in destructor

* Use local static QPixmap's

* Do not allocate QPixmap with new in AudioFileProcessor

* Do not allocate QPixmap with new in Nes

* Do not allocate QPixmap with new in Organic

* Do not allocate QPixmap with new in SaControlsDialog

* Do not allocate QPixmap with new in Vestige

* Do not allocate QPixmap with new for FileBrowser

* Do not allocate QPixmap with new in MixerLine

* Do not allocate QPixmap with new in SendButtonIndicator

* Do not allocate QPixmap with new in AutomationClipView

* Do not allocate QPixmap with new in MidiClipView

* Do not allocate QPixmap with new in AutomationEditor

* Do not allocate QPixmap with new in PianoRoll

* Do not allocate QPixmap with new in TimeLineWidget

* Do not allocate QPixmap with new in EnvelopeAndLfoView

* Do not allocate QPixmap with new in PianoView

* Do not allocate QPixmap with new in ComboBox

* Do not allocate QPixmap with new in Fader

* Do not allocate QPixmap with new for LcdWidget

* Do not allocate QPixmap with new for LedCheckbox

* Use m_ as prefix for members

* Use uniform initialization
I already started using uniform initialization for the QPixmap changes
for some reason, so I'm finishing that up.

* Uniform initiaization

* And then he realized he was making copies...

* Do not call QPixmap copy constructor

* Do not call QPixmap copy constructor in SaControlsDialog

* Do not make pixmap's static for Lcd's and Led's

* Initialize pixmaps in-class

* Fix few mistakes and formatting
2023-11-19 00:44:15 -05:00
saker
fad0011508 Analyze and improve search in the file browser (again) (#6985)
Improves performance when searching in the file browser (confirmed with profiling using KCacheGrind), adds a search indicator at the bottom to let the user know a search is in progress, blacklists unnecessary system directories (speeding up both the search speed and potentially load times as well by reducing the number of filesystem entries to consider), and fixes an issue that causes not all of the search results to appear.
2023-11-18 20:47:15 -05:00
IanCaio
17c919879f Implement Note Types (#5902)
* Initial Commit

	Starts implementing Note Types. The two available types are
RegularNote and StepNote. PianoRoll now paints the color with a
different color for StepNotes. Pattern::addStep now sets the type of the
note to StepNote.
	Negative size is still used to signal a step note.

* Update Pattern.cpp to account for the Note::Type

	Updates the methods noteAtStep(), addStepNote() and checkType()
from Pattern.cpp to account for the note type and not the note length.

* Update PatternView::paintEvent to draw step notes

	PatternView::paintEvent now draws the pattern if the pattern
type is BeatPattern and TCOs aren't fixed (Song Editor). Color used is
still the BeatPattern color (grey) and the conditional doesn't look very
nice and can be improved.
	Pattern::beatPatternLength was also updated so it accounts for
the note type not note length. Review this method, as it looks a bit
weird (particularly the second conditional).

* Implements StepNotes setting a NPH with 0 frames

	Now, instead of TimePos returning 0 for negative lengths, we
create a NotePlayHandle with 0 frames when the note type is StepNote on
InstrumentTrack::play.

* Improves PatternView::paintEvent conditional

	Improves a conditional inside PatternView::paintEvent by
reversing the order in which they are executed.

* Adds upgrade method for backwards compatibility

	Adds an upgrade method that converts notes with negative length
to StepNotes, so old projects can be loaded properly.
	Explicitly set the Note::RegularNote value as 0.
	Make the default "type" value "0", so notes without a type are
loaded as RegularNotes.

* Addresses Veratil's review

	- Changes "addStepNote" so "checkType" isn't called twice in a
row.
	- Changes style on a one line conditional.

* Uses ternary expression on statement

	Reduces number of lines by using ternary expression.

* Addresses PR review (sakertooth)

	- Changes class setter to inline
	- Uses enum class instead of enum
	- Uses auto and const where appropriate

* Finished changes from review (sakertooth)

	- Used std::max instead of qMax
	- Fixed style on lines changed in the PR

* Uses std::find_if to save codelines

	As suggested by sakertooth, by using std::find_if we are able to
simplify the checkType method to two lines.

* Addresses review from sakertooth

	- Reverts m_detuning in-class initialization
	- Removes testing warning
	- Removes unnecessary comment

* Addresses DomClark's review

	- Rename the Note Types enum to avoid redundancy
	- Uses std::all_of instead of std::find_if on MidiClip checkType
	- Rewrites addStepNote so it sets the note type before adding it
to the clip, avoiding having to manually change the type of the clip
after adding the note

* Updates MidiExport to use Note Types

	- Now MidiExport is updated to use note types instead of relying
on negative length notes.
	- For that change it was necessary to find a way of letting
MidiExport know how long step notes should be. The solution found was to
add an attribute to the Instrument XML called "beatlen", which would
hold the number of frames of the instrument's beat. That would be
converted to ticks, so we could calculate how long the MIDI notes would
have to be to play the whole step note. If the attribute was not found,
the default value of 16 ticks would be used as a length of step notes,
as a fallback.

* Fixes ambiguity on enum usage

	Due to changes in the name of enum classes, there was an
ambiguity caused in NotePlayHandle.cpp. That was fixed.

* Addresses new code reviews

	- Addresses code review from PhysSong and Messmerd

* Fixes note drawing on Song Editor

	- Notes were not being draw on the song editor for BeatClips.
This commit fixes this.

* Adds cassert header to TimePos.cpp

	- Adds header to use assert() on TimePos.cpp

* Apply suggestions from code review

Fixes style on some lines

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Reverts some changes on MidiExport

	- Some changes were reverted on MidiExport and InstrumentTrack.
We were storing the beat length on the XML of Instrument Tracks, but in
reality the beat length is a per note attribute, and some instruments
could run into a segmentation fault when calling beat length without a
NotePlayHandle (i.e.: AFP). Because of that I reverted this change, so
the beat length is not stored on the XML anymore, and instead we have a
magic number on the MidiExport class that holds a default beat length
which is actually an upper limit for the MIDI notes of step notes. In
the future we can improve this by finding a way to store the beat length
on the note class to use it instead. The MidiExport logic is not
worsened at all because previously the beat length wasn't even
considered during export (it was actually improved making the exported
notes extend until the next one instead of cutting shorter).

* Fix the order of included files

---------

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
2023-11-18 17:14:27 -05:00
Lost Robot
0255704138 Disable Compressor background autofill (#6986) 2023-11-18 16:06:26 -05:00
saker
7268827624 Revamp synchronization with the audio engine (#6881)
The revamp consists of one lock. When the audio thread needs to render audio or another thread wants to run a change, acquiring the lock grants mutual exclusion to do one of the two. The intention is that this will provide stronger guarantees that changes do not run concurrently with the audio thread, as well as having the synchronization mechanism itself be free of data races (verified with TSan).
2023-11-18 15:28:01 -05:00
Hyunjin Song
1e2167d005 Fix Sf2 player freezing on project unloading with shared SoundFonts (#6950)
* Require FluidSynth >= 1.1.7

* Use `fluid_sfont_t` directly without sharing

* Adjust formatting a bit
2023-11-18 07:27:09 -05:00
Mirko Di
a64bbc7633 Add BPM tags to built-in beat loops (#5439) (#6747)
* Added floating-point vorbis BPM tags to files in lmms/data/samples/beats
* Added rounded BPM to filenames, surrounded by square brackets and separated from the rest of the filename by an underscore
2023-11-17 16:46:28 +01:00
Bernhard
609c008a71 Keep master bus color on FX Mixer when switching project
Fixes #6398
2023-11-13 12:37:28 +01:00
Johannes Lorenz
ecc5ff8ca7 Fixes #6753: Lv2 help window issues (#6957)
This fixes at least three issues:

* Help window is not synched with window manager's `X`-button
* Help window is not being closed on track destruction or on closing the plugin window
* Trims help window strings and force-adds a newline, because `QLabel::sizeHint` sometimes computes too small values. Now, together with #6956, all help windows fit their strings. Some help windows are too large by one line, but this seems better than forcing the user to resize them if they are too small by one line.
2023-11-12 02:25:26 +01:00
Johannes Lorenz
652b1fa57a SubWindow: Increase to respect child's sizeHint (#6956)
Before this commit, on creation, `SubWindow` gets resized to exactly the
children's `sizeHint`. This makes the child too small, since the
`SubWindow` already contains a title bar and borders.

With this commit, the `SubWindow` is calculated such that after
rendering, the child window gets exactly the `size` that its `sizeHint`
has previously suggested.

Most of LMMS widgets are not resizable, but the Lv2 help window is a
good example to test this out. The help windows now in most cases
contain enough space to fit the help text. In some cases, it still does
not fit, though debug prints show that the `size` matches the
`sizeHint`.
2023-11-12 02:21:51 +01:00
Johannes Lorenz
5c37aa2e2e Fixes #6786: Lv2Proc: Fix losing automation on export (#6944)
This PR is a about reloading an `Lv2Proc`, e.g. in case of a sample rate
change.

Prior to this PR, #6419 handled this by first saving the models into
XML, then destroying and re-initializing the whole `Lv2Proc` and finally
reloading the saved XML. However, #6786 shows that the automation is not
properly restored in such a case.

This PR thus attempts to not destroy the automatable models, just
everything else. This is done by moving `Lv2Proc::createPorts` into the
CTOR before calling `Lv2Proc::initPlugin`, which makes `initPlugin()`
and `shutdownPlugin()` proper inverses of each other (note that in jalv,
the ports are also created before the features are). The new class
`Lv2ProcSuspender` adds an RAII interface for reloading the `Lv2Proc`.

Note that another, possibly more clean approach would be to separate the
features and the plugin from the models ("controls"), to then only
destroy the features and the plugin. This could be done by having
`Lv2Effect` contain an `Lv2Proc` and `Lv2FxControls` contain an
`Lv2ProcControls`. Then the effect classes are the usual way round, and
you still maintain the separation between processor and controls in the
core LV2 code. (Similarly for the instrument, except we don't have a
processor/control split for instruments, so an instance of each class
would be contained within the same instrument instance.) - Thanks for
this proposal to @DomClark .
2023-11-12 02:20:53 +01:00
Johannes Lorenz
379acb970b Lv2Proc: Fix shutdown routine (#6944) 2023-11-12 02:20:53 +01:00
DanielKauss
c779521730 Add slicer plugin (#6857)
* extremly basic slicer, note playback and gui works

* very simple peak detection working

* basic phase vocoder implementation, no effects yet

* phase vocoder slight rewrite

* pitch shifting works more or less

* basic timeshift working

* PV timeshift working (no pitch shift)

* basic functions work (UI, editing, playback)

* slice editor Ui working

* fundamental  functionality done

* Everything basic works fully

* cleanup and code guidelines

* more file cleanup

* Tried fixing multi slice playback (still broken)

* remove includes, add license

* code factoring issues

* more code factoring

* fixed multinote playback and bpm check

* UI performance improvments + code style

* initial UI changes + more code style

* threadsafe(maybe) + UI finished

* preparing for dinamic timeshifting

* dynamic timeshifting start

* realtime time scaling (no stereo)

* stereo added, very slow

* playback performance improvments

* Roxas new UI start

* fixed cmake

* Waveform UI finished

* Roxas UI knobs + layout

* Spectral flux onset detection

* build + PV fixes

* clang-format formatting

* slice snap + better defaults

* windows build fixes

* windows build fixes part 2

* Fixed slice bug + Waveform code cleanup

* UI button text + reorder + file cleanup

* Added knob colors

* comments + code cleanup

* var names fit convention

* PV better windowing

* waveform zoom

* Minor style fixes.

* Initial artistic rebalancing of the plugin artwork.

* PV phase ghosting fix

* Use base note as keyboard slice start

* Good draft of Artwork, renamed bg to artwork

* Removed soft glow.

* Fixed load crashes + findSlices cleanup

* Added sync button

* added pitch shifting, sometimes crashes

* pitch fixes

* MacOs build fixes

* use linear interpolation

* copyright + div by 0 fixes

* Fixed rare crash + name changes + license

* review: memcpy, no array, LMMS header, name change

* static constexpr added

* static vars to public + LMMS guards

* remove references in classes

* remove constexpr and parent pointer in waveform

* std::array for fft

* fixed wrong name in style

* remove c style casts

* use src_process

* use note vector for return

* Moved PhaseVocoder into core

* removed PV from plugin

* remove pointers in waveform

* clang-format again

* Use std:: + review suggestions

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
Co-authored-by: saker <sakertooth@gmail.com>

* More review changes

* new signal slot + more review

* Fixed pitch shifting

* Fixed buffer overflow in PV

* Fixed mouse bug + better empty screen

* Small editor refactor + improvments

* Editor playback visual + small fixes

* Roxas UI improvments

* initial timeshift removing

* Remove timeshift + slice refactor

* Removed unused files

* Fix export bug

* Fix zoom bug

* Review changes SakerTooth#2

* Remove most comments

* Performance + click to load

* update PlaybackState + zerocross snapping

* Fix windows build issue

* Review + version

* Fixed fade out bug

* Use cosine interpolation

* Apply suggestions from code review

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* More review changes

* Renamed files

* Full sample only at base note

* Fix memory leak

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Style fixes

---------

Co-authored-by: Katherine Pratt <consolegrl@gmail.com>
Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
Co-authored-by: saker <sakertooth@gmail.com>
2023-11-11 18:09:38 -05:00
saker
8b2769bb69 Fix regression involving missed filters in #6962 (#6978) 2023-11-10 18:45:25 -05:00
saker
5596abb66a Improve search performance in FileBrowser (#6962)
Improves the search performance of the file browser by delegating the search to a worker thread. The main thread then builds the tree and displays it to the user.
2023-11-10 14:26:31 -05:00
Lost Robot
89c98a77a5 LOMM (upward/downward multiband compressor) (#6925) 2023-11-10 07:10:44 -08:00
Dalton Messmer
3b9e8c5ea1 Fix LV2 instrument instantiation crash (#6977)
Fixes LV2 instrument instantiation crash which occurs when right-clicking an LV2
instrument in the plugin browser and then clicking "Send to new instrument
track"
2023-11-09 02:10:32 -05:00
Lost Robot
8c194fc29c Improve Compressor lookahead algorithm (#6953) 2023-11-08 12:53:59 -08:00
Michael Gregorius
6d4343ca94 More prominent search (#6968)
Make the search features more prominent by adding an icon with a magnifying glass to the line edits. Because there is no specific icon for "search" the same icon as for "zoom" is used.

Make the "Search" text translatable in `PluginBrowser.cpp` and add a search icon.

Make the search in the effects selection dialog more similar to the other ones by adding a search icon and a placeholder text and by enabling the clear button.

Make some whitespace adjustments in the vicinity of the other adjustments.

Use function pointers instead of signals and slots for some connections. Use a lambda for the slot in the file browser code because GCC does not compile if the parameters differ between the connected functions. It seems that it cannot deal with default parameters.

It could be considered to create the search line edits in a factory although this would not work for the effects select dialog because its line edit is created in the UI file. In that case we'd have to add an additional method like `embellishLineEditForSearch(QLineEdit*)` or something similar to the factory.

Fixes #6966.
2023-11-06 20:24:37 +01:00
Lukas W
3342e171c0 Merge pull request #6960 from lukas-w/ci-macos-12
Run CI build on macOS 12
2023-11-05 12:51:00 +01:00
Lukas W
f6a1f25cf9 CI: Use lowest Xcode version available
For compatibility with older macOS versions, see discussion at
https://github.com/LMMS/lmms/pull/6960#discussion_r1382432764
2023-11-05 12:27:53 +01:00
Lukas W
620cd3e104 CI: Update to macOS 12
Homebrew doesn't provide bottles for macOS 11 anymore, causing
dependencies to be compiled in CI which takes approximately 173 years.
Therefore, upgrade to macOS 12 and
- remove DEVELOPER_DIR environment variable which caused problems but
  its removal doesn't appear to break anything
- upgrade npm because versions before 10.2.2 use Python's distutils
  package which was removed in Python 12. See
    - https://github.com/npm/cli/pull/6937
    - https://github.com/nodejs/node-gyp/issues/2869
2023-11-04 17:40:08 +01:00
Oskar Wallgren
7839a5760c Use QSaveFile on file write (#6107)
Updating to use the recommended method QSaveFile instead of QFile.
Hopefully fix issue where LMMS in rare occasions would produce empty
files on save. 

---------

Co-authored-by: Kevin Zander <veratil@gmail.com>
2023-11-03 22:37:19 +01:00
Lost Robot
fccbe5d517 Add MP3 import (#6750) 2023-11-01 15:37:56 -07:00
Dominic Clark
7b99c58926 Expose targets and versions for more dependencies (#6842) 2023-11-01 19:34:32 +00:00
Lukas W
2a2085c303 Fix & simplify instrument release fade-out (PR #6908) 2023-11-01 18:39:36 +01:00
Johannes Lorenz
5d60035c02 Use "jack_free" instead of "free" (#5954?)
Thanks to @messmerd for the hint.

Might fix #5954.
2023-10-31 23:45:02 +01:00
Johannes Lorenz
f6eacb31ba AudioJack: Style fixes
These were done with `clang-format`, and slight patching where
`clang-format` was a bit weird.
2023-10-31 23:45:02 +01:00
Johannes Lorenz
54cc4cf1e9 AudioJack: Fix segfault for some bufsizes
The segfault happens when you use buffersize 224: Then, in
AudioJack.cpp, L424, `done` can be greater than `_nframes`.
2023-10-31 23:45:02 +01:00
Lukas W
98ae7a6973 Refactor Instrument::applyRelease to be more readable 2023-10-31 20:28:17 +01:00
Lukas W
d277916c01 Fix instrument release ending one frame early
See discussion in https://github.com/LMMS/lmms/pull/6908#issuecomment-1784637574
and following comments.
2023-10-31 20:25:55 +01:00
Dominic Clark
cd018c04ff Improve CI cache usage (#6868)
* Update third-party actions to latest version

* Use vcpkg in manifest mode

* Only trim ccache after build

* Use ccache with MSVC

* Use Brewfile and cache Homebrew downloads

* Use --print-config for ccache 3

* Attempt to make ccache actually work with MSVC

* Zero ccache stats before building

* Use SDL2 on macOS
2023-10-31 01:19:00 -04:00
Dominic Clark
3d224cb455 Push policy stack in InstallDependencies module (#6878) 2023-10-31 12:59:29 +09:00
Lukas W
253a9f334e Fix CLI render crash
Fix unchecked access to GUI leading to a segfault in headless render,
a regression from 005ee47d43.

Fixes #6942
2023-10-30 16:53:42 +01:00
Oskar Wallgren
bf5f4a7994 Fix instrument release being applied early
As discovered by @michaelgregorious & @zonkmachine, applyRelease's
condition to determine whether the release ramp starts within the
current buffer was off by 1 frame, running the release code when the
ramp should only start in frame 0 of the next buffer. This could cause
the ramp to be miscalculated, starting at a value greater than 1.0 and
and thus actually amplifying the signal.
2023-10-30 08:19:01 +01:00
Michael Gregorius
c6ed4a274a First version of a new dynamic LADSPA control dialog (#2068)
Introduce a new version of the LADSPA control dialog which uses "bar controllers" and arranges them in a grid layout. Long parameter names are elided long if needed. The new dialog is implemented in the class `LadspaMatrixControlDialog`.

Note: it is still possible to reactivate the old dialog as it has not been removed yet. You can do so in `plugins/LadspaEffect/LadspaControls.h` by replacing the implementation of `createView()` with the following:
```
gui::EffectControlDialog* createView() override
{
	return new gui::LadspaControlDialog( this );
}
```

Introduce the new base class `FloatModelEditorBase`. It serves as the base widget for widgets that manipulate a float model and provides some base functionalities like context menus, edit dialogs, mouse handling, etc. Currently `BarModelEditor` and `Knob` inherit from `FloatModelEditorBase`. Therefore lots of code was moved from `Knob` to `FloatModelEditorBase`.

`BarModelEditor` supports style sheets. See the changes in style.css for the available options and their usage.
 
Extend `LedCheckBox` so that it adds support to render the text with the default font in the default size. The class now supports two modes:
* Legacy mode
* Non-legacy mode

Legacy mode is the default and renders the LedCheckBox as before. The font is set to 7 pixels and all the text is rendered with a shadow.

Non-legacy mode uses the current font to render the text. The text is rendered without a shadow and the pixmap is centered vertically to the left side of the text. Non-legacy mode is currently only used in the context of the matrix LADSPA dialog. Toggle options are rendered using it as well as the "Link Channels" button.

Add `TempoSyncBarModelEditor` which adds a tempo sync option to a `BarModelEditor`. Please note that the code was mostly copied and adjusted from the `TempoSyncKnob` class. It was not attempted yet to unify some of the code because with the current design it seems to be a road to "inheritance hell". A better solution might be to refactor the code so that it becomes more composable.

What follows are the individual commit messages of the 64 commits that have been squashed into a single merge commit.

* First version of a new dynamic LADSPA control dialog

The new dialog shows the LADSPA controls in a matrix layout. Each row
corresponds to a LADSPA parameter. Each parameter can have several
channels which can be linked. Each channel has its own row of controls.

The class LadspaMatrixControlView was added by copying and modifying
LadspaControlView to get rid of the link buttons which are associated
with some controls and some labels.

* Remove trailing whitespaces

* Merge fix

* Use the new connect syntax

* Remove empty destructors

* Use override keyword

* Reformat a bit

* Use nullptr

* Use range-based loops

* Add BarModelEditor and improve layouts

Add the new class `BarModelEditor` which is intended to become a new way
to adjust values of float models.

Simplify the layout in `LadspaMatrixControlDialog` by removing some
nested layouts. Remove the "Parameters" column.

Adjust `LadspaMatrixControlView` to implement the following changes:
* Show the name of the control next to toggle buttons (`LedCheckBox`).
* Use the new `BarModelEditor` for integer and float types.
* SHow the name of the control next to time based parameters that use
`TempoSyncKnob`.

The names are shown so that the "Parameters" column can be removed.

Technical details
------------------
The class `LadspaMatrixControlDialog` now creates a widget that contains
the matrix layout with the controls. This widget is then added to a
scroll area. The layout is populated in the new method
`arrangeControls`.

Add some helper methods to `LadspaMatrixControlDialog` which retrieve
the `LadspaControls` instance and the number of channels.

Add the implementation of `BarModelEditor` to `src/gui/CMakeLists.txt`.

TODOs
------
Extract common code out of the `Knob` class so that it can be reused by
`BarModelEditor`.

* Use factory to create LADSPA control widgets

Replace the class `LadspaMatrixControlView` with the factory class
`LadspaWidgetFactory`. The former was a widget that wrapped the widget
representation of a LADSPA control in yet another widget with a layout.
The factory simply returns the configured widget so that it can be
incorporated directly in layouts or other widgets.

Adjust `LadspaMatrixControlDialog` so that it uses the
`LadspaWidgetFactory` instead of the `LadspaMatrixControlView`.

* Initial version of FloatModelEditorBase

Create an initial version of `FloatModelEditorBase`. It is intended to
become the base widget for all widgets that manipulate a float model and
provides some base functionalities like context menus, edit dialogs,
mouse handling, etc.

The initial version is a copy of `Knob`. The enum and its values have
been suffixed with "Temp" as they will be removed later anyway. Same
applies for the function `convertPixmapToGrayScaleTemp`.

* Remove Knob related code from FloatModelEditorBase

First removal of Knob related code from FloatModelEditorBase.

* Remove setHtmlLabel

* Remove enum for knob types

* Remove label related code

Remove setLabel and the members m_label and m_isHtmlLabel.

* Remove several Qt properties

* Remove angle related members and methods

* Remove unused members and includes

* Clean up includes

* Make BarModelEditor inherit from FloatModelEditorBase

Make `BarModelEditor` inherit from `FloatModelEditorBase` so that it
inherits all shared functionality. Currently the class mostly implements
size related methods and overrides the paint method.

* Move LadspaWidgetFactory to LadspaEffect

Move the class `LadspaWidgetFactory` to the project LadspaEffect to make
it hopefully compile with mingw32 and mingw64.

Interestingly the code compiled and worked under Linux and MacOS.

* Code adjustments after scripted checks

Add an include guard and an additional `#pragme once`. Add comments to
closing namespace scopes.

* Export BarModelEditor

Export BarModelEditor so that for example the LadspaEffect project/
plugin can use it.

* Improve rendering of bar model editor

Increase the margin from 2 to 3 so that we have a more prominent border
around the filled area.

Fix a problem in the rendering code which led to situations where the
bar was drawn to the left of the start position for small values.

Return a more exact minimum size hint.

* Elide long parameter names

Elide long parameter names if needed.

* Enable horizontal direction of manipulation

Extend `FloatModelEditorBase` so that it also allows manipulation of the
values when the mouse is moved in horizontal directions. The default is
to use the vertical direction.

Make use of this new feature in `BarModelEditor` which now reacts to
horizontal movements when changing values.

* Represent enum parameters using the bar widget

The implementation of the current LADSPA dialog in master uses knobs to
represent enum parameters. Therefore it should also work with the new
bar widget.

This gets rid of many labels with the parameter name followed by
"(unsupported)".

* Remove TODO in LadspaWidgetFactory

* Render text of LedCheckBox with default font

Extend LedCheckBox so that it adds support to render the text with the
default font in the default size. The class now supports two modes:
* Legacy mode
* Non-legacy mode

Legacy mode is the default and renders the LedCheckBox as before. The
font is set to 7 pixels and all the text is rendered with a shadow.

Non-legacy mode uses the current font to render the text. The text is
rendered without a shadow and the pixmap is centered vertically to the
left side of the text.

The non-legacy mode is currently only used in the context of the matrix
LADSPA dialog. Toggle options are rendered using it as well as the "Link
Channels" button.

* Use "yellow" LEDs for bool parameters

Use "yellow" LEDs (which are actually blue) for dynamically added bool
parameters so that the dialog is consistent with regards to the LED
colors. The "Link Channels" button also uses a "yellow" LED.

* Fix Qt5 builds

Fix the Qt5 builds which do not know horizontalAdvance as a member of
FontMetrics.

Also refactor LedCheckBox::onTextUpdated to make it more compact.

* Style sheets for BarModelEditor

Add style sheets options for BarModelEditor. See the changes in
style.css for the available options and their usage.

The members that can be manipulated by the style sheet options are
initialized accoriding to the palette so that the BarModelEditor should
also render something useful if no style is set.

Adjust the paintEvent method to use the style sheet brushes and colors.

* Layout optimizations

Set the vertical scroll bar to always show so that the controls do not
move around if the scroll bar is hidden or shown.

Set the margin of the grid layout to 0 so that the whole dialog becomes
tighter.

* Get rid of initial scroll bars

Make sure that the widget is shown without a scrollbar whenever possible
using the following rules.

If the widget fits on the workspace we use the height of the widget as
the minimum size of the scroll area. This will ensure that the scrollbar
is not shown initially (and never will be).

If the widget is larger than the workspace then we want it to mostly
cover the workspace. In that case the minimum height is set to 90 % of
the workspace.

* Switch to a green theme

Switch to a green theme to better match the default theme.

* Adjust classic theme

Adjust the classic theme so that it renders the bars in a legible way.

* Fixes for CodeFactor

Remove virtual keyword from methods that are marked as override.

Remove whitespaces that make CodeFactor unhappy. One of these fixes
includes moving the implementation of
LadspaMatrixControlDialog::isResizable into the cpp file.

* CodeFactor is still unhappy

Remove a blank line after the constructor.

* Center align time based controls

Align time based controls, i.e. knobs, in the center.

The implementation defeats the purpose of the widget factory a bit but
it makes the design look nicer.

* Fix build

Fix the build by adjusting the enums. I added the changes while writing
the commit message for the merge commit but they did not make it.

* Attempt at CodeFactor warning

Try to make the last CodeFactor warning disappear.

* Add bar controller with tempo sync option

Add `TempoSyncBarModelEditor` which adds a tempo sync option to a `BarModelEditor`. Please note that the code was mostly copied and adjusted from the `TempoSyncKnob` class. It was not attempted yet to unify some of the code because with the current design it seems to be a road to "inheritance hell". A better solution might be to refactor the code so that it is more composable.

Another option might be to move the tempo sync functionality into a class like `FloatModelEditorBase`. Although this would not be a 100% right place either because `TempoSyncKnobModel` inherits from `FloatModel`. In that case we'd have specialized code in a generic base class.

Adjust `LadspaWidgetFactory` so that it now returns an instance of a `TempoSyncBarModelEditor` instead of a `TempoSyncKnob`.

Remove the extra layout code from `LadspaMatrixControlDialog.cpp` as most things are bar editors now.

Adjust `TempoSyncKnobModel` so we do not have to make `TempoSyncBarModelEditor` a friend of it.

* Another attempt to please CodeFactor

Have another attempt to fix CodeFactor's complaints about `LadspaMatrixControlDialog.h`.

* Coding conventions, blanks and blank lines

Remove lots of unnecessary white space. Remove blank lines. Remove leading underscores from parameters.

Remove line breaks in `TempoSyncBarModelEditor.cpp` to make the code more readable. Remove repeated method calls by introducing local variables.

* Break down complex method

Break down the complex method `TempoSyncBarModelEditor::updateDescAndIcon` by delegating to the new methods `updateTextDescription` and `updateIcon`.

* Another attempt to please CodeFactor

Another attempt to fix `LadspaMatrixControlDialog.h` to please CodeFactor.

* Work on TODOs

The TODO "Assumes that all processors are equal..." has been turned into a comment when we start iterating over the channels. If the channels are not of the same structure this would likely also have been a problem in the old implementation.

The TODO "Use a factory..." has been removed as this is already done.

The include of `FloatModelEditorBase.h` in LadspaWidgetFactory has been removed.

* Modifier keys for mouse wheel adjustments

Integrate the changes of commit 7000afb2ea into `FloatModelEditorBase`.

This commit added modifier keys for mouse wheel adjustments to the `Knob` class. The port to `FloatModelEditorBase` results in the bar control now also supporting different scales of adjustments that can be switched with the Shift, Ctrl and Alt keys.

* Show current value on mouse over

Integrate the changes of commit fcdf4c0568 into `FloatModelEditorBase`. This commit lets users show the current value of a float model when the mouse is moved over the control.

* Make Knob inherit from FloatModelEditorBase

Make `Knob` inherit from `FloatModelEditorBase`. This is mostly a continuation for the changes introduced with commit c63d86f.

The idea is that `FloatModelEditorBase` contains the underlying functionality and logic to deal with float models. `Knob` and other classes then only override the presentation aspects. This way `Knob` and `BarModelEditor` can share the same functionality but can differ in how they present the data.

Technical details
------------------
Remove all methods that are already defined in `FloatModelEditorBase` from `Knob`. These are all methods that are defined in the same way in `FloatModelEditorBase`. The method `paintEvent` is not removed because it is overridden by `Knob` as it has its own presentation.

Remove forward declaration of `QPixmap` from `FloatModelEditorBase` as it was not used. Remove unused function `convertPixmapToGrayScaleTemp` from `FloatModelEditorBase`.

* Cleanup includes in Knob class

* Code style changes in FloatModelEditorBase

`FloatModelEditorBase` is a new class/file. Therefore we can do some extensive code cleanup on the code that was initially copied from `Knob`.

Adjust whitespace for methods and some if-statements. Remove underscores from parameter names. Use only two blank lines between method definitions.

* Cleanup include for FloatModelEditorBase

* Show effect name as title of dialog

Add the effect name as the title in the content of the window. This improves the structure of the dialog as it is now clearer from the content itself to which effect the controls belong to.

This duplicates the information from the window title. However, the window title is rather small and the larger font in the content makes it easier to find an effect in a set of opened dialogs.

* Revert "Show effect name as title of dialog"

This reverts commit 8ce0d366d0.

* Fix problem with LedCheckBox in grid layout

The LedCheckBox does not play nice when being used in a grid layout as it disables the resizing behavior of every column it appears in.

The solution is to wrap it into the layout of a parent widget that knows how to behave.

* Reduce minimum width of BarModelEditor

Reduce the minimum width of `BarModelEditor` from 200 to 50.

---------

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-10-29 11:16:39 +01:00
Johannes Lorenz
d5e6ac6dc5 Lv2Proc: Delay setting worker iface (Fixes #6946) (#6947)
* Lv2Proc: Delay worker iface (Fixes #6946) (#6947)

This delays passing the `LV2_Worker_Interface` to the `Lv2Worker` class,
because prior to the patch, the instance, which provides the interface,
has not been initialized yet, which resulted in a segfault.

* Update src/core/lv2/Lv2Worker.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* setIface -> setInterface

* `if(` -> `if (`

* Update src/core/lv2/Lv2Proc.cpp

Co-authored-by: saker <sakertooth@gmail.com>

* Rework, editorial, from @sakertooth

* Fixup: `interface` is reserved on MSVC

https://stackoverflow.com/a/25234279

* Apply suggestions from code review

Co-authored-by: saker <sakertooth@gmail.com>

* Initialize handle/interface as nullptr

---------

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
Co-authored-by: saker <sakertooth@gmail.com>
2023-10-27 18:51:00 -04:00
Johannes Lorenz
63d03fa3a7 Fix Uninitialized Value Conditional Jump
Introduced in #5970 , `CPULoadWidget::m_stepSize` is uninitialized,
leading to valgrind warnings:

```
==9429== Conditional jump or move depends on uninitialised value(s)
==9429==    at 0x3715A9: int const& std::max<int>(int const&, int const&) (stl_algobase.h:262)
==9429==    by 0x59E3BB: lmms::gui::CPULoadWidget::stepSize() const (CPULoadWidget.h:59)
==9429==    by 0x59DA2E: lmms::gui::CPULoadWidget::paintEvent(QPaintEvent*) (CPULoadWidget.cpp:78)
```

Even though `grep` shows:

```
data/themes/classic/style.css:  qproperty-stepSize: 4;
data/themes/default/style.css:  qproperty-stepSize: 1;
```

It seems like the issue is caused by paint events occurring even before
the style sheet has been applied. In order to fix this, and to be future
proof with style sheets which do not set it, we initialize
`CPULoadWidget::m_stepSize` to `1`.
2023-10-21 18:21:21 +02:00
consolegrl
6bde53e4a9 Update old file filtering code (#6882)
* Updated some old file filtering code.

I was trying to add a way to show/hide the .bak and other files with some
filter buttons when I noticed the code in FileBrowser::addItems was copy
pasta that had lava flowed from the much more modern Directory::addItems.
In addition, only, FileBrowser::addItems was not respecting the filter's
at all. I brought both of them into line with Qt 5 practices which
now respects the m_filter list of extensions for both FileBrowser
and Directory. In Directory::addItems I only needed to change where
the match was being done, FileBrowser::addItems didn't try to
filter/match at all.

* Set name filters inside entryInfoList call, const

Some fixes for const iterating the file list.
Setting file name filters along with the call instead of seperately.

* Style changes src/gui/FileBrowser.cpp

Co-authored-by: saker <sakertooth@gmail.com>

* Fixed style/format FileBrowser.cpp

---------

Co-authored-by: saker <sakertooth@gmail.com>
2023-10-21 11:50:15 -04:00
Rossmaxx
259d120725 Fix invalid for loop to while (#6943) 2023-10-21 08:16:15 -04:00
Johannes Lorenz
476a56e713 Update remote of zyn's submodule instruments
This PR makes changes in the submodule `zynaddsubfx`. It affects its
submodule `instruments`:

* updates the URL to use github (since SF is less reliable)
* changes the protocl from SSH to HTTPS (see
  https://stackoverflow.com/a/50299434)
* does not change the submodule's commit ID

You must now run
```
git submodule sync --recursive
```
once to reflect this change.
2023-10-15 16:08:26 +02:00
Rossmaxx
732e5cc3c9 fixed broken 21pink LCD display (#6914) 2023-10-15 11:38:03 +02:00
Rossmaxx
5c9adeb9a6 Bump SWH and TAP LADSPA plugins (#6937) 2023-10-14 19:58:29 -04:00
Dominic Clark
21dc88c37a Set SF2 voice tuning relative to initial value (#6924) 2023-10-10 21:33:50 +01:00
Bimal Poudel
84aca0a2d2 Wrap resource urls in double quotes (#6898) 2023-10-10 20:56:46 +01:00
superpaik
382fd9f4c1 Fix EQ effect warnings (#6655)
* Fix warnings "QPainterPath::lineTo Invalid coordinates" on console when loading the effect or changing
  some paramenters, by not "drawing" the EQ curve when there is no EQ band active.
* Fix warnings on console "QPainterPath::lineTo Invalid coordinates" when EQ is processing a sound, because
  in this function log10f generates a pole error when freq is 0, returning and invalid x value pixel
* Update plugins/Eq/EqCurve.cpp

---------

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
2023-10-09 23:06:55 +02:00
Lost Robot
ca9e98959d Fix LcdFloatSpinBox mouse behavior and negative values (#6923)
* Fix LcdFloatSpinBox mouse behavior and negative values
2023-10-07 21:01:30 -07:00
IanCaio
999c10e4b3 Adds feature to edit tangents of Cubic Hermite progressions (#5924)
Enables the editing of a node's tangents of Cubic Hermite progressions.

* First commit

	This commit introduces the use of AutomationNodes instead of just floats for keeping the automation values. The AutomationNodes will give more flexibility when it comes to storing extra information about the values (and make it possible to have multiple progression types in the future). Now the tangents are stored on the node, requiring one less timeMap on the automation pattern. Some methods had to be changed for that, since before they used const_iterator, which wouldn't allow us to change the tangent values.

TODO:
	- Check TODO comments that were added in places of the code I had some doubts about.
	- Maybe change the timeMap to hold pointers to AutomationNodes and not actual instances.
	- In some pieces of the code, I check if the AutomationNode already exists before setting its value or creating another node. I think that's unnecessary since if I create another node and assign it to the current existing one it could just clone its value. (That would not be valid for pointers to AutomationNodes, so that's something to consider when deciding between the two).
	- I still didn't find a good solution for renaming QMap::iterator method from "value()" to something else, so now we have lines that look a bit odd like "it.value().getValue()", because value() is actually returning the node, and getValue() is getting the node's automation value.

* Implements inValue/outValue on Automation Nodes

	This commit is a big change in comparison to the previous one. Automation nodes now have a inValue and outValue instead of a single value. The inValue represents the core value of the node, which is used for incoming progressions. The outValue represents the value of the node for progressions starting from that node on. In practice, the true value of the node is the inValue and outValue represents a way of creating discrete jumps in a node's position.
	By default inValue and outValue are the same. The user will then be allowed to change the outValue to create those discrete jumps. Because their values might be different, we now need two tangents for a single node: One for the curve coming before the node and one for the curve coming after the node. So instead of a single tangent variable, we now have inTangent and outTangent. If inValue and outValue are the same, so are inTangent and outTangent, but if they are different both are calculated according to the curve before and after the node.
	On the Automation Editor, the inValue of the node is represented by our default blue circle, while the outValue is represented by a red circle with 80% alpha (we should add a variable to the Automation Editor class to hold the color of this second circle in the future).
	Lots of comments were added on the modified files to explain the existing methods where changes were required (not only explaining the logic of the methods but the reason behind using inValue or outValue on them). Lots of TODO comments were also added as placeholders for changes that could or should be done before the finishing of this PR (or after it).
	For now only the logic for the nodes was added, but there's still no way for the user to change outValues (on the next commit a small placeholder shortcut will be added to do that for testing purposes).
	The drawing of the notes detuning on the piano roll was updated to account for the discrete jumps.
	The drawing of the pattern TCO was updated to account for the discrete jumps.
	The drawing of the pattern on the AutomationEditor was updated to account for the discrete jumps.

	IMPORTANT:
		- There were changes to the loadSettings and saveSettings of AutomationPatterns, to account for inValues and outValues, but I didn't create an upgrade routine yet.

	Some behavior that is important to mention:
		- Most operations on nodes (drawing, moving, X/Y flipping, and even selection copy/paste, apparently not fully finished) ignore the outValue, basically reseting it to the inValue. So when an user moves a node with a discrete jump, for example, that discrete jump will be lost and the user will need to set it again. Obviously in the future we might want to keep that information, but that isn't a critical issue, just a behavior that can be improved later by upgrading the code.
		- Later on we might want to connect a signal to the AutomationNode class, so it calls generateTangents when node data is changed.
		- When an object is disconnected from an automation pattern and it has to rescale the values so they fit the new range of values (max and min) the outValue is reset, meaning all discrete jumps are lost. This behavior will be changed in the future.

	Things that I think are also important noting:
		- Mainly in the src/gui/editor/AutomationEditor.cpp file there were lots of codes that apparently are related to a feature that is not yet finished (moving/cutting/copying/pasting selections of automation values). This doesn't sound good unless it's currently being worked on. I tried my best to update the current code to comply to the use of AutomationNodes so their developing can be picked up from a unbroken state. As with other operations involving AutomationNodes, they only account for the inValue discarding any discrete jumps that were present.
		- I added comments on some logic that seemed flawed in the src/gui/editor/AutomationEditor.cpp file so it can be reviewed. It's beyond the scope of this PR, but since I had to read and change a lot on that file I thought it was pertinent to at least comment those observations.

* Fixes and refactor code on AutomationEditor.cpp

	While implementing the automation nodes, I noticed AutomatinEditor.cpp had some issues regarding flawed logic, code style convention, code that could comply to DRY paradigm, conditions that resulted in Undefined Behavior and unused legacy code. That's probably due to how old some changes are, they probably reflect a much different state of LMMS's code base. To make the transition to automation nodes a better one and avoid having to rework everything later I'm using the fact I have to get in touch with most of this code to try to fix some things.

	This commit starts refactoring AutomationEditor::mousePressEvent and AutomationEditor::mouseMoveEvent. There are still things to be improved on both but I'll slowly commit them so I can have better versioning control of the PR.

	Some changes worth noting:
		- A new action was created in the AutomationEditor class for drawing lines, since its logic was too mixed up with the logic of drawing and dragging a single node.
		- Changed most variable names to fit the current code style (just very few left to change).
		- Improved comments explaining the code.
		- Created a separate method for checking if the mouse position is sitting over an existing node (previously this code was repeated inside the event method and it had flaws on its logic, most of the times returning that the user didn't click a node even when he/she clicked one). Method is called getNodeAt(x,y,r), r being the "radius" to be considered (not actually a radius, the area is actually a square).

	Some changes that are still planned:
		- Removing legacy code for features that weren't finished (select and move selection) if it's agreed.
		- Adding some logic to the DRAW_LINE action so it can be even improved.
		- Not forgetting the main focus of the PR, adding a way for the user to edit the outValue of nodes.

* Avoids unnecessary check in putValue

	When adding a value to a particular time, instead of checking if there's a node there already and manually setting its value, we just assign it with a new AutomationNode. QMap silently removes the existing node and adds the new one.

* Adds upgrade routine for the automation nodes

	Adds an upgrade method for the change in the automation nodes settings. The "value" attribute of the <time> element is deleted and assigned to the "inValue" and "outValue" attributes.

	Now older project files can be loaded properly.

* Allows dragging outValues on the Automation Editor

	This commit introduces a way for the user to drag outValues on the Automation Editor, by Alt+clicking the outValue red node and dragging up and down.

	A new action was added for that purpose, called MOVE_OUTVALUE. When the user clicks a outValue sphere with the Alt modifier, m_action is set to MOVE_OUTVALUE, and the time position of the node being affected is stored on m_draggedOutValueKey. That is later used on the mouseMoveEvent to update the outValue of the node.

	Removed repeated code on the mouseReleaseEvent and removed excessive blank lines after a method.

	Things to keep in mind when testing through this commit's build:
		- Creating/Moving an automation node resets the outValue
		- When the outValue is changed, generateTangents isn't called automatically. So you'll notice that after adding another automation node the curves change (that's because after the new node being added the tangents are then recalculated).

	Still lots of work ahead!

* Small fix inside AutomationPattern.cpp

	Unnecessary loop was removed with call to appropriate method.

* Creates separate files for AutomationNode

	Creates a separate header and source file for the AutomationNode class.

* Adds more members to AutomationNode

	Adds 2 new members to the AutomationNode class:
		m_pattern - A pointer to the pattern this node belongs to
		m_key - The time position (timeMap key) of this node

	The constructors (and places they were used) were updated accordingly. AutomationNode was also made a friend class of AutomationPattern so it can access private/protected methods from its pointer. This will be later used to allow AutomationNode's to call generateTangents once their values are updated.

	Small fix on a code block related to moving selections inside the mouseMoveEvent from AutomationEditor.

* Removes unused code from AutomationEditor

	This commit removes code that was not currently used in the AutomationEditor. Most of it was related to a feature I believe was once functional but broke along the way, but the code was not cleaned up in an effort to fix it later. The feature allowed selecting and moving/cutting/copying/pasting/removing values from the automation pattern. It added up to lots of lines of code, which so far I was keeping up to date to the changes. However, I believe (and others devs agree) that rewritting this code later might be a better approach than trying to fix what we currently have, so I'm removing the obsolete code. The git history will allow us to reference back to it when implementing the feature again and this will make it harder for this PR to introduce bugs because a certain affected feature couldn't be tested.

	It also makes reviewing easier, for there are less affected code to cover.

For reviewing purposes:
	I used a single commit for removing the mentioned code, so its diff in relation to the previous commit should give a good idea of everything that was removed.

* Changes to the outValues now update the tangents

	The methods that change the inValue and outValue of nodes now also generate new tangents for the previous, current and next nodes (the ones affected), so now when the user drags the node outValue the curve is updated accordingly.

* Keeps discrete jumps when flipping patterns

	Adds a method to the automation node that returns the valueOffset between inValue and outValue. AutomationPattern::putValue now has an extra parameter called outValueOffset (defaults to 0), so when it adds a node to the timeMap the outValue is set according to this offset. flipY() will calculate the offset and invert it, so the discrete jumps are kept but flipped vertically as well. flipX() doesn't need to calculate this offset because it uses the outValue itself.

Obs:
	I believe cleanObjects() was meant to be called everytime AutomationPattern::flipX() is called, but it was inside a conditional that would only call it on some situations. I moved it outside of the conditional.

* Allows reseting outValues on the AutomationEditor

	User can now reset the outValue of nodes on a very analogous way to removing nodes but with the Alt key pressed. Alt + right clicking over the node (or dragging over an area), or Alt + clicking on it on Erase mode (or dragging over an area) will reset the outValues of the nodes.
	To do that, two new actions were created: ERASE_VALUES (for the regular node removing) and RESET_OUTVALUES (for the outValues reseting). Those are checked for in the moveMouseEvent, which acts accordingly. The removePoints() method was removed and two new methods were added instead: removeNodes() and resetNodes(), which will remove nodes on a tick range or reset them respectivately.

	The AutomationNode.h and AutomationNode.cpp files were fixed to fit the current code style conventions. The other files were kept as is, so they can be changed all at once at the end of the PR.

	Change requests made by Veratil were done.

* Makes so dragging nodes keep the outValue

	This commit makes a small change to setDragValue. When starting the drag (m_dragging == false), it checks if the time position being dragged already has a node. If it does, then the offset between inValue and offValue is stored on m_dragOutValueOffset so it can be used on the putValue calls, keeping the offset. If there isn't a node in the time position, m_dragOutValueOffset is set to 0.

* Fixes code style on modified code

	Fixes the modified code to comply to current code style convention.

	I tried to keep the changes exclusive to the lines modified by this PR (to keep the diff cleaner), but I might have fixed a couple of other because either they were hard to differentiate on the current diff or because they were too close in context. But still, tried to keep changes mostly to the lines actually changed by the PR.

* Adds a QProperty for the node outValue color

	Adds a CSS property for the outValue color and renames the one used for the inValue color so they are consistent.

	Colors were added to classic and default themes. The original inValue colors were kept, but to fit with the outValue node they had a little bit of transparency added.

* Adds doxygen comments on methods

	Adds doxygen comments explaining methods that were either introduced by this PR or which had parameters modified by this PR.

	Changes valueAt(timeMap::iterator, int offset) method, so it can handle offsets equal to 0 properly. This method is currently never used with an offset of 0 (because this case scenario is handled before this method is called), but it was a simply modification so I just added the conditional to make it possible to use an offset of 0.

* Refactor flipX and flipY methods

	AutomationPattern::flipX and AutomationPattern::flipY had some issues to the logic that caused UBs (from accessing an iterator past QMap::end()) and possibly misbehaviors when flipping an empty pattern.
	Both were refactored to fix those noted issues.

* Add a new edit mode to Automation Editor

	Adds another editing mode to Automation Editor (DRAW_OUTVALUES), specific to deal with node outValues. The Pixmap being used is the same as the DRAW edit mode for now.

	The way it works now:

DRAW Mode (Shortcut SHIFT+D)
	Shift + Left click = Draws lines of nodes
	Left click = Draws/Drag node
	Right click = Remove nodes

ERASE Mode (Shortcut SHIFT+E)
	Left click = Remove nodes
	Right click = Reset outValues

DRAW_OUTVALUES Mode (Shortcut SHIFT+C)
	Left click = Drags outValue
	Right click = Reset outValues

	Now using a switch statement on the events to make things more organized.

* Improves the Draw OutValue edit mode

	Now, instead of only being able to change an outValue by clicking over the sphere representing it, the user can also click on any time on the pattern: If the quantized time of the place he clicked has a node, the outValue of its node will be set to the value where the mouse click happened and the outValue will start being dragged. Very similar to the way it works for the node itself on the draw mode.

* Adds mutex to AutomationPattern

	Adds a recursive mutex to the AutomationPattern class and locks it on every method that access the member variables. Also rename the mutex from the AutomationEditor class and add locks to some methods that didn't have it before (except on methods that don't access member variables).

* Veratil's review changes

	Applies changes requested by Veratil:
		- Replaces NULL with nullptr where necessary on AutomationEditor.cpp
		- Fixes spacing on the mutex commit (plus some other places)
		- Changes some if blocks to one liners
		- Replace while with do-while on some places, since the condition was already checked for earlier on the method.
		- Moves getNodeAt call a level up on the block, since it's called on both conditionals below.
		- Fixes identation on some code inside AutomationEditor::mousePressEvent.
		- Adds explicits blocks on a switch statement. Even though this was not necessary for that particular one (because there was no variable declaration inside it) it helps keeping it consistent with another switch statement that happened earlier.

I also added a break statement to the last case of a switch (even though it was not needed, it's safer to avoid mistakes in the future with new cases being added).

* Changes the inValue sphere to be draw first

	The red sphere representing the outValue was drawed after the blue sphere representing the inValue. Because of that, if they had the same value the red sphere would be on top. For the user, it makes more sense to be able to see the blue sphere representing the input value on top instead. This commit changes the order of the drawing.

* Changes comments and variables names

	Fixes some comments pointed out on Spekular's review. Changes the AutomationNode's variable m_key to m_pos (leaving a comment on the header reminding that it matches the timeMap key). Removes comments related to removed code. Fixes code style on a pointer declaration.

* Changes QProperty variables to use MEMBER

	Instead of creating a getter and setter for each QProperty, we use MEMBER instead and access those variables directly.

* Overloads some AutomationNode's operators

	Overloads compound assignment operators +=, -=, *= and /= for AutomationNodes, making it so they affect the inValue and outValue of the node being assigned. Changes AutomationPattern::flipY() so it uses the new operators.

* Improves getNodeAt method

	Makes the AutomationEditor::getNodeAt method more efficient, by exiting if the node we are checking is already past the position we given (since the nodes are ordered in the timeMap, all subsequent nodes will also be past the position). Now instead of returning the last node that is inside the coordinates, it returns the first.
	Also improves AutomationEditor::mousePressEvent to avoid getNodeAt being called twice unnecessarily.

* Changes behavior of setDragValue

	Now, instead of keeping the offset between the inValue and outValue while dragging a node, setDragValue will either keep the current outValue intact, or move it together with the inValue if they are the same.
	The putValue method now doesn't have an offset parameter. If we want to put a node with an outValue different from the inValue we use putValues instead.

* Moves getNodeAt to an upper level, reducing lines

	Creates a boolean before the m_editMode switch, that will be true if the action being processed affects outValues and false if it affects inValues. That way we can move the statement clickedNode=getNodeAt() before the switch-case, reducing repeated lines.

* Changes icon of Draw OutValue edit mode

	Changes the icon for the Draw OutValue tool and toolbar action, so it's different from the Draw mode. Just a placeholder until a visual artist come up with something better or we change the controls.

* Removes unnecessary non-const methods

	Some getter methods had declarations for both const and
non-const object types, when just the const one were needed (no changes
to the object are made). The unnecessary ones were removed.
	Also fixes formatting on operator /= method.

* Fixes formatting and doxygen comments

	Fixes doxygen comments on AutomationPattern.cpp and
AutomationEditor.cpp (also changes one so it uses the same format as the
rest of the file).
	Fixes some formatting issues (removal of excessive tabs,
changing some statements to be one line instead of multiple lines,
fixing of spacing, use of one line ifs, removal of unnecessary else on a
method, use of ternary expressions, etc).

* Adds helper macros for AutomationNodes

	Adds 3 macros to the AutomationNode header file: INVAL, OUTVAL
and POS, which return the InValue, OutValue and Key of a node
respectively. This improved redability and made statements shorter on
the AutomationPattern.cpp code.
	Macros weren't added for InTangent and OutTangent, since those
are only used once in the code (and INTAN/OUTTAN might not have their
meaning as obvious as INVAL/OUTVAL).

* Removes tabs from ternary operator

	Removed tabs to improve formatting on a ternary operator
as requested and also removed a comment that doesn't seem necessary.

* Update files to use AutomationNode macros

	Other files besides "AutomationPattern.cpp" also included the
AutomationNode.h header and handled automation nodes, but they weren't
using the macros. Those were updated to use INVAL, OUTVAL and POS
macros.
	Two conditionals were changed to one liners for consistency.

* Addresses my own code review

	This commit addresses some fixes from a review I made from the
code on Github and also one requested change from Veratil.

	Changes:
	- Fixes code style issues.
	- Adds a helper MACRO to return the offset between the inValue
and outValue of a node and use it where getValueOffset was called.
	- Removes conditional that was not needed inside
AutomationPattern::valueAt.
	- Updates InlineAutomation.h to use the helper MACROs and
account for the outValue when deciding whether to save or discard an
inline automation.
	- Adds TODO comments on two loops present on
src/code/AutomationPattern.cpp that could be optimized.
	- Fixes some comments.
	- Uses INVAL(it) instead of valueAt(POS(it)) on the flip methods
when possible.
	- Adds a resetOutValue() method to AutomationNode and use it
where convenient.
	- Fixes a small "bug" where flipping a pattern from the TCO
context menu, when the pattern is smaller than the TCO, would use the
inValue of the last node for the node created at the end of the TCO
instead of the outValue (which is the value that the position would have
if the pattern continued).

* Addresses Veratil's review

	- Fixes some code style issues
	- Changes to improve readability at some snippets
	- Uses if one-liners when convenient
	- On a polynomial expression inside AutomationPattern::valueAt,
uses some variables to improve readability (those will be optimized out
by the compiler)
	- Removes unnecessary casting on alignedX variable inside
AutomationEditor::mousePressEvent (it was also using C-style casting
instead of static_cast)

* Adds helper MACROs for node tangents

	Adds INTAN and OUTTAN macros to retrieve a node's InTangent and
OutTangent respectively, and replace calls to getInTangent/getOutTangent
with those macros.

* Fixes header inclusion order

* Removes mutex from AutomationEditor

	Now that there's a mutex protecting the AutomationPattern on its
own methods, there's no need to have a mutex on the AutomationEditor
class. The editor's member variables don't need to be protected because
LMMS's UI runs from a single thread.
	This commit removes the m_patternEditorMutex.

* Locks mutex on AutomationPattern copy assignment

	On the copy assignment constructor of AutomationPattern, the
values were being copied from the other pattern without locking its
mutex, which could result in race conditions. Now the constructor locks
the other pattern's mutex.

	Other small changes:
	- Removes unnecessary comments and fix others.
	- Uses the OFFSET macro on the generateTangents method.
	- Uses the resetOutValue() method on
AutomationEditor::mousePressEvent, in a place where I forgot to change
it.

* Changes resetOutValue() so it generates tangents

	Changes the AutomationNode::resetOutValue() method so it calls
setOutValue() instead of directly setting the m_outValue, since the
latter will also take care of generating tangents.
	Fixes small bug where reseting outValues would not recalculate
the tangents.

* Changes some methods to use for loops

	AutomationEditor::removeNodes and AutomationEditor::resetNodes
were previously using while loops where for loops are much more well
suited. Both methods were changed to use those instead.

* Move removeNodes/resetNodes to AutomationPattern

	- Renames AutomationPattern::removeValue to
AutomationPattern::removeNode.
	- Moves AutomationEditor::removeNodes and
AutomationEditor::resetNodes to AutomationPattern, since they are more
suited there and could be reused in other areas of code that need to
remove a range of nodes.

* Optimizes loop inside putValue/putValues

	There was a TODO comment about a loop that could be optimized
inside putValue/putValues. It went through all the ticks in the
surrounding values instead of just going through the nodes that were in
that range. Now that the removeNodes/resetNodes methods are part of the
AutomationPattern we can use them to optimize the loop.

	Changes:
	- removeNodes/resetNodes will remove or reset a node if a range
with start == end is given (before it would return).
	- The loop was replaced with a call to removeNodes from
newTime + 1 to newTime + quantization() - 1 (which will cover the nodes
that are between the quantization limits). We add a conditional that
quantization() is greater than 1 to avoid a bug where the added node is
removed by that call because we get a range from [newTime + 1, newTime].

* Adds comment to mysterious calculation

	There was a calculation on the drawAutomationPoint method that
wasn't really obvious at first glance. Thanks to @PhysSong, a comment
was added explaining the reasoning behind the calculation.

* Reduces indentation on getNodeAt

	Reduces one indentation level on AutomationEditor::getNodeAt()
by reversing the conditional.
	Fixes style on switch statements.

* Applies Veratil suggestions

	Condense two code blocks in a single one by using a ternary
operator on the only variable that changed between them.

	Comment out a "else" block that currently doesn't have anything
(placeholder for future code).

	Format a for statement in multiple lines to improve readability.

* Updates comment from changed code

	Updates comment to better match the recently changed code.

* Uses lambda functions to extract code

	Uses two helper lambda functions inside
AutomationEditor::mousePressEvent to extract code and use fewer lines on
places where it's repeated.

* Fixes behavior of AutomationPattern::flipX

	To truly flip a pattern horizontally, we also needed to swap the
inValues and outValues of the nodes being flipped. This commit fixes
that behavior by including the swap when necessary.

	Also adds a TODO comment regarding the behavior of the
generateTangents method when the difference between inValue and outValue
is very small.

* Changes pattern XML for backwards compatibility

	Changes the inValue attribute name on the XML from "inValue" to
"value" to make projects created with the new automation pattern
partially backwards compatible (outValues will still not be loaded
obviously, but the inValues will be loaded as the regular pattern values
we had before).

* Fixes bug on AutomationPattern::resetNodes

	Fixes bug on AutomationPattern::resetNodes: If it was called
with tick0 == tick1, m_timeMap.find() return value was being used to
call resetOutValue. When QMap::find() doesn't find a value it returns
QMap::end() though, resulting in a SegFault.
	Fixed by checking if the return value is QMap::end() first.

* Adds drawing of automation node tangents

	This introduces a method on the AutomationEditor that draws a
line and an ellipse representing the inTangent and outTangent of
Automation Nodes, so they can be visualized on the Cubic Hermite
progression.
	The tangents are not yet editable.

* Adds mode to edit tangents

	Adds the edit mode that will be used to edit tangents. For now
there's no functionality, only the GUI elements were added.

* Adds comment about copy-assignment

	Adds a note about the default copy-assignment from
AutomationNode being used on the AutomationPattern constructor. If any
dynamic allocated resources are added to the class, an user-defined
copy-assignment constructor should be used instead.

	Also changes the position of an arithmetics operator on a
multiline statement for readability.

* Changes flipY logic and address PhysSong review

	This commit addresses PhysSong review:
	- An if-statement was replaced with a ternary operator on
AutomationEditor::paintEvent().
	- One comment was improved on PianoRow::drawDetuningInfo() to
make it clearer that drawing cubic hermit curves as straight lines is
just a temporary thing.
	- While applying the requested changes on the
AutomationPattern::flipY() method, I noticed that even though it
accepted any integer values as min and max, the current logic (both on
master and on the previous commit from this PR) would only work if the
range was [-max,+max] or [0,+max]. If min was -5 and max 10 for example,
the flipping could return us a pattern with values out of range. This
commit replaces the logic with an improved one that now relies on the
distance between the node and the edges of the range instead, thus
working for any range instead of those two mentioned earlier. The new
logic also attend to the request of using a for-loop and also using
in-place operations.

* Implements the dragging of node tangents

	Implements the action of dragging node tangents. A method called
getClosestNode returns the node that is closest to the mouse X position.
Then the action begins, with the tick of the node having its tangent
dragged stored in a local variable. It's also calculated whether we are
dragging the inTangent or outTangent.
	The new tangent is calculated as the tangent between the current
mouse position and the automation node.

* Saves tangent information from automation patterns

	Now saves the tangent values of automation pattern nodes. While
loading, for backwards compatibility, if any node doesn't have tangent
information the tangents are generated. Else, they are loaded from the
project file and kept.

	Dragging a node still resets all tangents. Moving an outValue
resets the tangents from the surrounding nodes.

* Implements the locking of tangents

	Now when the used manually edits a node's tangent, the node
locks both its tangents so they aren't recalculated by
AutomationPattern::generateTangents().
	When the used resets the tangents of a node (by right clicking
close to it on the edit tangents mode) they are unlocked again, and are
allowed to be recalculated.
	This information is saved on the project file as well.
	A macro was added to quickly return whether a node's tangents
are locked.
	AutomationEditor was made a friend class of AutomationPattern to
enable it to call generateTangents when a node's tangent is reset.

* Checks only for inTan on the LoadSettings

	When loading an automation node, when checking if we have
tangent information we only have to check for either inTan or outTan,
because if we have one we will have the other.

* Adds a convenient way to reset multiple tangents

	Now right clicking and dragging on Edit Tangents mode will reset
multiple tangents (similar to how it works for the reseting and removal
of nodes).

* Fixes small bug on generateTangents

	AutomationPattern::generateTangents() expects that a valid node
is given. While generating the amount of tangents requested, it avoids
going out of bound by checking if the node after the one being iterated
is the end of the timeMap, then setting the tangents to 0 and returning.
That worked fine before, but now we skip nodes that have their tangents
locked, so it could happen that the last tangent was locked and skipped
and we end up iterating m_timeMap.end().
	This was causing a segmentation fault if we edited the tangents
of the last node and added a new node after it. To avoid that, a second
conditional was added to the for-loop to check if the current node is
the end of the timemap.

* Fixes bug with Edit Tangents shortcut

	Bug found by @superpaik. I was setting the Edit Tangents
shortcut to the Draw OutValues mode, overriding its correct shortcut and
leaving Edit Tangents with none.

* Disables Edit Tan mode on other progressions

	The Edit tangents mode is now disabled when the user switches to
a different progression mode and reenabled when it changes back to Cubic
Hermite mode.

* Keep tangents when dragging nodes

	As requested by @superpaik after testing, logic was added to the
AutomationPattern::setDragValue method to keep a node's tangents if they
were locked.
	First, the method checks if the tangents were locked in the
first drag iteration and store its values if they were.
	Then, everytime the dragging routine puts a new value in the
timemap, it will set its tangents and lock them if needed.

* Changes tangent calculation behavior

	Changes the behavior of the tangent calculation for the Edit
Tangent mode. The new behavior will be submitted for testing to see if
it's considered better than the previous one, and reverted if it isn't.
	Also fixes a possible division by 0 bug.

* Fixes undo/redo with tangents editing

	The tangents editing logic was missing adding a journalling
checkpoint, hence the undo/redo wasn't working properly.
	This commit fixes it.

* Uses function to check if tangents can be edited

As per requested by PR review, instead of checking if the automation
clip uses Cubic Hermite progression to allow changing tangents, we now
instead use a method that will return true if the current progression
type allows tangent editing. That way it's easier to allow tangent
editing for new progression types that might be added in the future.

* Fixes bug reported by zonkmachine

	- The Edit Tangents button was not updating correctly when
the clip was changed inside the automation editor. This was fixed by
making the update routine a separate method and calling it on the places
necessary (when changing progression modes and when changing clips).
	- Some suggestions from messmerd PR review were also included.

* A couple review requests forgotten

	- Just adds 2 more review requested changes that were forgotten
in the previous commit.

* Address Sakertooth's review

* Adresses Sakertooth's review

* Address Sakertooth's review

	- Simplifies method that updates the edit tangent button on the
automation editor

---------

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-10-06 18:37:46 -04:00
Dominic Clark
d9ce7d8d4c Use remaining sample duration for AFP beat length (#6872) 2023-10-06 21:23:50 +01:00
Oskar Wallgren
42c5101803 Mallets - Some small fixes (#6913)
* Fix issue with knob range

* Randomness for BandedWG

* Implement Tubular Bells ADSR

* LFO - update values on change while playing

* coding style

* Vibrato Gain - update
2023-10-06 20:50:06 +01:00
Dominic Clark
f691afcc41 Fix loading samples unsupported by libsndfile (#6918) 2023-10-05 18:41:00 +01:00
Oskar Wallgren
579d132b8a SetupDialog - message on buffer size larger than 256 (#6906)
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>
2023-10-05 16:51:52 +02:00
Michael Gregorius
8b94bd8e65 Merge pull request #6779 from michaelgregorius/2510-SetupDialogWithLayouts
Solve the HiDPI issues of the setup dialog (#2510)
2023-10-01 21:53:50 +02:00
Rossmaxx
e1cc63bb97 Switched ladspaeffect/Cmakelists.txt to use LMMS_HAVE_* instead of WANT_* (#6903)
* fixed cmakelists conditions

* Fixed the order messup.

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>

---------

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2023-10-01 09:55:25 -04:00
Michael Gregorius
a54dc9a05f Remove LedCheckBox include
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.
2023-10-01 10:34:21 +02:00
Michael Gregorius
1399d5906f Left align "General" and "Paths"
Left align the scroll area content for "General" and "Paths" so that they look like the content on the other tabs.
2023-10-01 10:21:34 +02:00
Michael Gregorius
cc6a0e86b5 Remove border/shadows from scroll area
Remove the border/shadows from the QScrollAreas used in the context of the setup dialog via the style sheet.
2023-10-01 10:17:08 +02:00
Michael Gregorius
d12675af2f Remove unnecessary addStretch
Remove an unnecessary call to `addStretch` and with that a TODO.
2023-10-01 10:00:52 +02:00
Michael Gregorius
85310e75d3 Order of includes and forward declarations
Fix the alphabetical order of all includes and forward declarations.
2023-10-01 09:57:13 +02:00
Michael Gregorius
339ee6d1e9 Merge remote-tracking branch 'upstream/master' into 2510-SetupDialogWithLayouts-MasterMerge
Merge master to integrate the changes of:
* f10277715f: Classier enums
* 7aca8ae726: SetupDialog: Warn of unusual buffersizes
* 8fb9c3e6a2: Fix warnings in Clang build (#6893)

Solved conflicts in:
* src/gui/modals/SetupDialog.cpp
2023-10-01 09:40:42 +02:00
Michael Gregorius
4f94c3b13c Review change - Rectangular buttons
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.
2023-09-30 21:15:10 +02:00
Michael Gregorius
b29a46edf8 Ensure minimum width for setup dialog
Ensure that the dialog has a minimum width so that everything is shown.
2023-09-30 12:12:04 +02:00
Lukas W
d962070d7c Fix release fade-out not being applied
This fixes to bugs leading to clicks on instrument note-off in most
instruments.

The first bug was introduced as part of a refactoring done by Vesa [1]
and caused each note play handle's last buffer being dropped because
the play handles were deleted before being processed in AudioPort.
Thanks to @lleroy for pointing this out. [2]

The second bug / typo has always been there [3] and was a misplaced
parenthesis in Instrument::applyRelease breaking the calculation of the
note-off envelope's start frame, sometimes putting it outside of the
buffer.

Fixes #3086

[1] 857de8d2c8 and related commits
[1] https://github.com/LMMS/lmms/issues/3086#issuecomment-519087089
[2] 02433380c6
2023-09-30 00:01:10 +02:00
Oskar Wallgren
7dc00524fa Mallets - Add random knob function (#6466)
* 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>
2023-09-29 20:39:01 +02:00
Dalton Messmer
8fb9c3e6a2 Fix warnings in Clang build (#6893)
* Fix unused variable warning

* Fix implicit conversion warning

* Fix unused lambda capture in DataFile.cpp

* Fix implicit conversions in InstrumentFunctions.cpp

* Fix operator precedence bug in Flags.h

* Fix unused variable warning in Lv2UridMap.h

* Fix unused lambda capture in MixerView.cpp

* Fix unused lambda captures in SetupDialog.cpp

* Fix unused lambda capture in TrackOperationsWidget.cpp

* Fix MSVC build

* Fix style

* Remove unused member variable in Lv2UridMap.h
2023-09-28 20:23:35 -04:00
Bimal Poudel
23ef89b4a1 Update SampleBuffer.cpp (#6892)
File information corrected.
2023-09-24 21:03:29 -04:00
Bimal Poudel
f664698c80 Update copyright year (#6888) 2023-09-24 18:58:56 -04:00
Johannes Lorenz
33d1baddc0 Implement Lv2 Worker (#6484) 2023-09-24 17:36:59 +02:00
Johannes Lorenz
83777dc1f7 Lv2Proc: Set def val for ComboModel, too 2023-09-24 17:36:59 +02:00
Johannes Lorenz
94608eaad1 Lv2Proc: Sort scale point maps (#6859)
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.
2023-09-24 17:36:59 +02:00
Johannes Lorenz
7aca8ae726 SetupDialog: Warn of unusual buffersizes
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`.
2023-09-24 17:36:59 +02:00
Johannes Lorenz
61b612634d Add plugin blacklist for buffersize<=32 2023-09-24 17:36:59 +02:00
Johannes Lorenz
9c46370234 Support LV2_BUF_SIZE__powerOf2BlockLength 2023-09-24 17:36:59 +02:00
Johannes Lorenz
d97377b640 Lv2: Improve LED widget's digit calculation
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
2023-09-24 17:36:59 +02:00
Johannes Lorenz
c309d8bd11 Lv2ViewProc: Improve variable names 2023-09-24 17:36:59 +02:00
Lost Robot
006c43820b Fix Compressor zero divisions (#6887)
* Fix threshold zero division

* Fix RMS zero division
2023-09-24 13:19:19 +02:00
saker
49c713df5b Use resid submodule from libsidplayfp (#6883) 2023-09-23 19:33:20 -04:00
Artur-Twardowski-Mobica
f0aa2862d7 Updated MIDI CC handling not to count from 1 (#6774) 2023-09-22 20:07:25 +01:00
Michael Gregorius
0576f9daa6 Merge pull request #6789 from michaelgregorius/2510-HiDPI-Fix-For-QTreeViews
HiDPI fixes for elements based on QTreeView
2023-09-22 18:54:50 +02:00
Michael Gregorius
93d3e8c82c Adjust the classic theme
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.
2023-09-22 18:16:45 +02:00
Michael Gregorius
910cdf22cb Merge pull request #6788 from michaelgregorius/2510-HiDPI-Fix-for-Sample-Track-Window
Fix HiDPI issue of sample track window
2023-09-22 17:47:25 +02:00
Michael Gregorius
e5bb07a5ae Merge pull request #6787 from michaelgregorius/2510-Fix-HiDPI-Issues-For-Menus
Fix HiDPI issues for menus
2023-09-22 17:34:51 +02:00
Alexandre Almeida
07229b6404 Show error message when loading an invalid sample file (#6286) 2023-09-22 00:18:23 +01:00
Michael Gregorius
21fb430c76 Merge pull request #6867 from michaelgregorius/RemoveIdenticalCalls
(Re)move identical calls to `InstrumentTrack::processAudioBuffer`
2023-09-21 20:12:04 +02:00
Michael Gregorius
b6c80bd736 Replace check for nullptr
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.
2023-09-21 19:24:06 +02:00
Maxwell Voorhes
3df28e30b6 Changed sharps to music sharps unicode (#6873) 2023-09-20 18:32:21 -04:00
Michael Gregorius
7e8c79a191 Enable build under NixOS (#6855)
Explicitly call the perl interpreter when building the SWH LADSPA plugins
2023-09-20 13:52:59 -04:00
Dominic Clark
94d0b9111b Use UTF-8 for MSVC source and execution charset (#6876) 2023-09-19 19:56:55 -04:00
Dominic Clark
dc88040fbe Add instrument play handles unconditionally (#6875) 2023-09-18 19:18:28 -04:00
Rossmaxx
733e0a1e54 Fix invalid use of iterators in piano roll (#6869) 2023-09-18 17:44:08 +01:00
Martin Pavelek
e9125d3ad3 Fix LcdFloatSpinBox constructor and label alignment (#6686) 2023-09-17 16:55:04 +01:00
Austin
4348038b0f Added automatic dark note on light background for midi clips. (#6539) 2023-09-17 17:34:42 +02:00
Michael Gregorius
6c3ae30c89 Add comments about nullptr guard
Add some comments which describe why we need to guard agains nullptr.
2023-09-16 19:19:37 +02:00
Michael Gregorius
73f9f36c9a Code review changes
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.
2023-09-16 13:35:15 +02:00
saker
d25723cead Update display file name when opening `PatmanView` (#6870)
* Update display file name when loading Patman

* Conditionally update file name
2023-09-15 22:25:54 -04:00
Michael Gregorius
a6b6565687 Remove unused variable
Remove the unused variable `frames` in `VestigeInstrument::play` to fix the stricter GitHub build.
2023-09-14 23:35:16 +02:00
Michael Gregorius
d3d710e0ad Remove identical calls to InstrumentTrack::processAudioBuffer
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.
2023-09-14 23:12:22 +02:00
Maxwell Voorhes
9b1933e544 Added flats to array of keys (#6865) 2023-09-14 17:17:36 +02:00
consolegrl
3a0e68c0ac fixes #6736: Sample tracks lose FX Channel (#6851)
* fixes #6736: Sample tracks lose FX Channel

* Styling fixes

* Restyled remaining blocks of upgrade routine

* Fixed hang due to sleepy typo

* Update src/core/DataFile.cpp

Co-authored-by: saker <sakertooth@gmail.com>

---------

Co-authored-by: saker <sakertooth@gmail.com>
2023-09-12 18:08:06 -04:00
MrTopom
89baab6b87 FileDialog : Adding mounted volumes on Linux (#6834)
* FileDialog : Adding mounted volumes on Linux

* Adding some file systems types and collapsing 2 'if' statements in one

* Removing the foreach

* Correcting PREPROCESSOR directive
2023-09-12 23:30:31 +02:00
consolegrl
b64912cd57 fixes #6354: Sample and Hold for LFO Controller (#6850)
* 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>
2023-09-12 20:35:54 +02:00
Babakinha
296d5736c8 Remember to check for Linux VST Effects (#6751)
Remember to also check .so files and not only .dll
2023-09-11 16:57:36 +02:00
MrTopom
a8d765f8d5 Make files visible when searching in `FileBrowser` (#6845)
* 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>
2023-09-10 11:52:18 -04:00
saker
b353cbea82 Add options to enable sanitizers (#6840)
* Add options to enable sanitizers

* Specify them as debugging options

* Apply suggestions made by Dom

* Fix linking issues
There were linking issues, most likely because we were
applying the sanitizer flags to unnecessary targets that
are part of the build. Now, we only focus on adding the
compiler flags to lmmsobjs as a PUBLIC dependency,
and selectively choose what targets we need to apply
the linker flags to as PRIVATE dependencies.

* Add UBSan

* Add status messages

* Remove GNU as supported compiler for MSan

* Revert to using add_<compile|link>_options again

* Fix sanitizer linkage within veal and cmt libraries
I suspect that our sanitizer flags were removed for these two CMake
targets. Instead of setting the properties directly, we call
target_compile_options and target_link_options
instead.

* Remove TODO comment

* Revert "Fix sanitizer linkage within veal and cmt libraries"

This reverts commit b04dce8d8c.

* Use CMAKE_<LANG>_FLAGS_<CONFIG> and apply fixes

* Remove quotes

* Add support for additional flags

* Disable vptr for UBSan

* Print "Debug using" in status for clarity

* Wrap ${supported_compilers} and ${status_flag} in quotes

* Replace semicolons with spaces in additional_flags

* Remove platform check for no-undefined flag
The platform check was added as an attempt
to make this branch compile with the veal
and cmt libraries. However, it seems to work
without it, so the problem must've been something
else occuring in these files.

* Undo change to FP exceptions status message

* Use spaces instead of tabs

* Remove -no-undefined flag for cmt and veal libraries
2023-09-08 11:49:43 -04:00
consolegrl
10f1b21fb7 fixes #4049: Off-grid nodes not draggable (#6852)
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.
2023-09-07 22:19:56 -04:00
Lost Robot
b7196337a4 Fix Compressor arithmetic exception in Debug mode (#6854) 2023-09-07 11:43:23 -07:00
Martin Pavelek
de062d6c54 Show detailed CPU load information in a tool-tip (#5970)
* 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>
2023-09-04 19:33:42 -04:00
Rossmaxx
fa05ce20b8 Replace corrupted default samples with fixed ones. (#6752)
* pulled from upstream

* replaced broken sample files

* Revert "pulled from upstream"

This reverts commit 76967b5cc4.

* fixed shortened samples

* will this fix exprtk submodule?

This reverts commit 76967b5cc4.
2023-09-03 21:59:29 -04:00
Dalton Messmer
0768f5ad2f Fix a few memory issues found with ASan (#6843)
* 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
2023-09-03 17:29:31 -04:00
Martin Pavelek
e1d3ecb184 Microtuner UI update (#6206)
* 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
2023-08-31 19:21:26 +02:00
Dalton Messmer
8a94fb3681 Fix std::vector refactor mistake (#6836)
* Use std::vector const reference instead of copying

* Add assertions

* Simplification
2023-08-31 12:55:02 -04:00
Andrés
005ee47d43 pitch wheel recording in the detune pattern (#6297) 2023-08-31 17:17:00 +02:00
Dominic Clark
4804ab6785 Support per-note detuning and panning with Sf2 Player (#6602)
* Add `ArrayVector` class template and tests

* Fix counting of failed test suites

* Support detuning and panning with Sf2 Player

* Restrict panning to supported FluidSynth versions

* Fix data array cast type

* Fix tests for Qt<5.10 and correct mistaken test

* DIsplay warning for FluidSynth < 2

* Remove unnecessary clamp

* Update include guard name
2023-08-31 07:12:00 -04:00
Dominic Clark
3263bfd555 Fix generator expression in strip command (#6762)
* Fix generator expression in strip command

* Add TODO comment for CMake 3.19
2023-08-30 21:01:15 -04:00
MrTopom
fcdf4c0568 Showing Knob value on mouse over (#6835)
* 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>
2023-08-29 15:32:11 -04:00
Michael Gregorius
d2a0780a6e Adjust classic style sheet
Adjust the classic style sheet in the same way that the default style sheet was adjusted.

The change also removes the usage of a bold font weight for selected menu items to achieve a more consistent feel.
2023-08-28 20:12:09 +02:00
saker
1e6a66f4ac Add mixer LCD channels for Instrument & Sample tracks (#6831)
* 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
2023-08-28 13:14:19 -04:00
MrTopom
e2fd288ae7 Change the title for SideBarWidgets to be vertically centered related… (#6833)
* 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>
2023-08-27 14:11:41 -04:00
Michael Gregorius
0e93f1332b Merge pull request #6832 from michaelgregorius/6828-FixBaseNoteAutomationFix
Fix the base note automation fix (#6828)
2023-08-27 18:42:05 +02:00
Michael Gregorius
4cb09e2b60 Fix the base note automation fix (#6828)
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.
2023-08-27 18:21:38 +02:00
Hyunjin Song
fc2f6a0b31 Replace the CI status badge with GitHub Actions 2023-08-26 11:53:34 +09:00
Michael Gregorius
7000afb2ea Modifier keys for mouse wheel adjustments (#6769) (#6770)
* 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>
2023-08-25 22:11:03 -04:00
consolegrl
a9f0a533a0 fixes #6759: Tempo Sync Knob - Context menu string don't update on custom tempo (#6827)
* 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>
2023-08-26 10:16:34 +09:00
saker
a311eed8e8 Add Tap Tempo (#6375)
* Add Tap Tempo Feature (#6375)
Resolves #5181

* Update formatting, use namespaces, etc.

* Use Qt Designer .ui file to handle the UI
Thanks to irrenhaus for the idea
Also added a few buttons I will add functionality for

* Play metronome sound when tapped

* Improve stabilization speed by comparing differences in length between intervals
To improve the speed at which the BPM counter stabilizes at a
certain number, we now compare the differences in length between
the last two taps and the most recent two taps and reset the counter
if the threshold is passed.
I made it so that a difference of 500 ms resets the counter.

* Remove duplicate m_ui
An artifact from my battle with Git and merge conflicts..

* Format TapTempoUi header file

* Add lmms namespace in UI file

* Remove taptempo.ui XML file
Not needed

* Add LMMS_EXPORT to SamplePlayHandle

* Use std::chrono::duration<double, std::milli> for intervals
Co-authored-by: irrenhaus3 <irrenhaus3@gmail.com>

* Use alias for steady_clock
Co-authored-by: irrenhaus3 <irrenhaus3@gmail.com>

* Speed up convergence by accounting for recent intervals

This uses a combination of keeping track of a more accurate BPM,
while also using a BPM difference threshold to move towards the true BPM
more quickly.

After three taps, a "recent interval" is calculated, which is similar
to the latest interval, but less fluctuating since it accounts for
three taps instead of one. This allows for comparing between
the BPM on the display with the recent BPM more closely.

We then compare the difference in magnitude of both BPM's
with the threshold. If the threshold is passed, the counter gets reset.

* Remove semicolon from "QOBJECT;" in plugins/TapTempo/TapTempo.h

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Add newline between using alias and constructor

* Cleanup header files

* Add // namespace lmms::gui comment

* Rename header guards in plugins/TapTempo/TapTempo.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Rename header guards in plugins/TapTempo/TapTempo.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Rename header guards in plugins/TapTempo/TapTempoUi.h

Will merge this file with ``TapTempoView`` soon.

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Rename header guards in plugins/TapTempo/TapTempoUi.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Update plugins/TapTempo/TapTempo.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Replace virtual with override in plugins/TapTempo/TapTempo.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Merge UI file into TapTempoView

* Pass TapTempo* directly into constructor in plugins/TapTempo/TapTempoView.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Update style in plugins/TapTempo/TapTempoView.h

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Add parameter name for keyPressEvent function in plugins/TapTempo/TapTempoView.h

Also reorder the function declarations to match the order in the source file.

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Remove dynamic_cast to TapTempo* in plugins/TapTempo/TapTempoView.cpp

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Restrict C linkage to only lmms_plugin_main and plugin descriptor
Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Simplify algorithm

* Update labels when calling closeEvent

* Add reset button

* Adjust layout

* Format document

* Only allow the tap button to gain focus

* Use icon provided by LMMS

* Add sync button and adjust formatting

* Make the metronome downbeat the first beat

Also simplify code

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Round BPM values when syncing with project tempo

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>

* Change Plugin::Tool to Plugin::Type::Tool

---------

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
2023-08-25 14:43:09 -04:00
Dominic Clark
f10277715f Classier enums (#6760) 2023-08-24 19:16:02 +01:00
saker
3aed361b82 Core: Replace global Qt declarations with standard equivalents (#6821)
* Replace qAbs with std::abs

* Replace qBound with std::clamp

* Replace qMax with std::max

* Replace qMin with std::min

* Replace qRound with std::round

* Replace qgetenv with std::getenv

---------

Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
2023-08-24 17:28:34 +01:00
superpaik
d6cf417a4d Change zoom in SongEditor to a Slider Zoom (#6664)
Co-authored-by: Dalton Messmer <33463986+messmerd@users.noreply.github.com>
Co-authored-by: Alex <allejok96@gmail.com>
2023-08-24 17:02:26 +01:00
saker
da14de92fe Fix regressions in #6477 (#6826)
* 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.
2023-08-23 21:52:35 +01:00
saker
9a0add49fb Core Refactor: Replace `QVector with std::vector` (#6477)
* Replace QVector with std::vector in AudioEngine

* Replace QVector with std::vector in AudioEngineWorkerThread

* Replace QVector with std::vector in AudioJack

* Replace QVector with std::vector in AutomatableModel

* Replace QVector with std::vector in AutomationClip

* Replace QVector with std::vector in AutomationEditor

* Replace QVector with std::vector in ConfigManager

* Replace QVector with std::vector in Controller

* Replace QVector with std::vector in ControllerConnection

* Replace QVector with std::vector in EffectChain

* Replace QVector with std::vector in EnvelopeAndLfoParameters

* Replace QVector with std::vector in InstrumentFunctions

* Replace QVector with std::vector in MidiClient

* Replace QVector with std::vector in Mixer

* Replace QVector with std::vector in Note

* Replace QVector with std::vector in PeakController

* Replace QVector with std::vector in PianoRoll

* Replace QVector with std::vector in PluginFactory

* Replace QVector with std::vector in RenderManager

* Replace QVector with std::vector in StepRecorder

* Replace QVector with std::vector in Track

* Replace QVector with std::vector in TrackContainer

* Replace QVector with std::vector in Song

* Adapt QVector to std::vector changes in ControllerConnectionDialog

* Phase 2: Use std::abs in panning.h
Without this, the QVector changes will make the code not compile.

* Phase 2: Replace QVector with std::vector in PeakControllerEffect

* Phase 2: Replace QVector with std::vector in AutomatableModel

* Phase 2: Replace QVector with std::vector in AutomationClip

* Phase 2: Replace QVector with std::vector in ControllerConnection

* Phase 2: Replace QVector with std::vector in EffectChain

* Phase 2: Replace QVector with std::vector in Mixer

* Phase 2: Replace QVector with std::vector in PeakController

* Phase 2: Replace QVector with std::vector in RenderManager

* Phase 2: Replace QVector with std::vector in Song

* Phase 2: Replace QVector with std::vector in StepRecorder

* Phase 2: Replace QVector with std::vector in Track

* Phase 2: Replace QVector with std::vector in TrackContainer

* Phase 2: Adapt QVector changes in EffectRackView

* Phase 2: Adapt QVector changes in AutomationClipView

* Phase 2: Adapt QVector changes in ClipView

* Phase 2: Adapt QVector changes in AutomationEditor

* Phase 2: Adapt QVector changes in PianoRoll

* Phase 2: Adapt QVector changes in TrackContainerView

* Phase 2: Adapt QVector changes in TrackContentWidget

* Phase 2: Adapt QVector changes in InstrumentTrack

* Phase 2: Adapt QVector changes in MidiClip

* Phase 2: Adapt QVector changes in SampleTrack

* Fix segmentation fault in ConfigManager::value

* Fix unintended faulty std::vector insert in AutomationClip::resolveAllIDs

* Resolve trailing whitespace in src/core/StepRecorder.cpp

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Use std::next and std::prev in EffectChain::moveUp/moveDown

* Introduce static "combineAllTracks" function in AutomationClip

* Adjust variable name in Song::automatedValuesAt

* Adjust removal of long step notes in StepRecorder::removeNotesReleasedForTooLong

* Iterate over m_chords by const reference in src/core/InstrumentFunctions.cpp

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Fix StepRecorder::removeNotesReleasedForTooLong again

* Combine the ConfigManager::value overloads using std::optional

* Revise StepRecorder::removeNotesReleasedForTooLong

* Remove redundant std::optional in ConfigManager::value

* Remove trailing whitespace in ConfigManager::value

* Fix: Prevent incorrect use of std::distance when element not found

* Chore: Remove trailing whitespace in edited files

* Only set the id attribute if the controller was found

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Remove extra indents from 84b8fe8a559855ed263b74cc582eab3655250c5f

* Fix compilation issues

* Add LMMS_ prefix for header guard in Track.h

* Undo changes made to MixerView::deleteUnusedChannels

* Simplify code to handle failure of finding tracks
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Split ternary operator into separate if statement
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Undo changes to indentation in MixerRoute

* Do general clean-up
Some of the changes made:
+ Use auto where benefical
+ Fix bug in AutomatableModel::globalAutomationValueAt (for loop should be looping over clips variable, not clipsInRange)
+ Undo out of focus whitespace changes

* Always assign to m_steps regardless if clip is found or not
Even when the clip is not found (i.e., currentClip is -1), m_steps still
gets assigned to.

* Insert at the end of tracks vector in src/core/Mixer.cpp

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>

* Insert at the end of tracks vector in src/core/Mixer.cpp (2)

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>

* Remove redundant template parameter

* Use std::array for zoomLevels

---------

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2023-08-22 12:08:56 +09:00
saker
2ca05d025c Bump mingw-std-threads submodule (#6817)
* Bump submodule and generate std headers

* Commit submodule update

* Downgrade to earlier commit
Can be upgraded once a proper C++20 MinGW compiler
is available for the docker images.

* Downgrade to the correct commit

* Append mingw_stdthreads to EXTRA_LIBRARIES
Currently for this CMake version, it seems that there is no support to
link other targets to object libraries. I'll add it to EXTRA_LIBRARIES
instead.

* Add LMMS_ prefix to USE_MINGW_STD_THREADS

* Use built-in MINGW CMake variable

* Use lowercase rather than uppercase
2023-08-22 12:08:18 +09:00
Dalton Messmer
5cbf2c5287 Fix LMMS plugin issues (#6670)
* Fix Organic automated harmonic parameter loading

* Fix Kicker automated end distortion parameter loading

* Fix AudioFileProcessor automated interpolation parameter loading

* Fix Vibed automated volume parameter loading

* Improve coding style/formatting

* Fix #6671

* Fix Vibed memory leaks

* Refactor Vibed instrument

* Fix build

* Try to fix build again

* Revert previous commit

* Replace more raw pointers with smart pointers

* Remove unused files

* Minor changes

* Update plugins/Vibed/Vibed.cpp

Co-authored-by: Kevin Zander <veratil@gmail.com>

* Implement suggestions from review

* Minor changes

* Only check plugin data pointer

* Refactor NineButtonSelector

* Fix memory leaks during heavy tempo automation

* Fix build

* Use s_stringCount

* Replace some vectors with arrays

* Use array instead of switch

* Allow compiler to generate move assignment operator

* Fix loading of old automated detune values

* Fix member variable names

* Address review comments

---------

Co-authored-by: Kevin Zander <veratil@gmail.com>
2023-08-22 12:07:09 +09:00
Bimal Poudel
793f096c4f Update DummyCarla.cpp to use CARLA_PLUGIN_EXPORT (#6814) 2023-08-20 15:52:23 +09:00
Dalton Messmer
b62a272d01 Fix segfault when clicking "Auto Detect" in Connection Settings window (#6811) 2023-08-19 15:47:26 +09:00
consolegrl
98c5e6af5d fix: Issue 6807: Marked notes bleed into note... (#6812)
Issue was caused by an obiwan (off-by-one)
The 'if (y > limit)' test was broken by an incorrect inequality,
 should be >=, and a graphical adjustment made previously in the
 'y = ...' statement. I perserved the graphical adjustment and
 fixed the test to be 'if (y >= limit - 1) { break; }'
2023-08-18 16:26:06 +02:00
Michael Gregorius
4ff95072e8 Merge pull request #6725 from michaelgregorius/6548-FixBaseNoteAutomations
Fix automated base notes and their automations (#6548)
2023-08-16 21:14:33 +02:00
IanCaio
e87d44b42c Fixes bug from issue #6002 (#6803)
* Fixes bug from issue 6002

	Since the refactoring of the Copy/Paste features, it was not
possible to paste inside the BBEditor (now Pattern Editor), as reported
on issue #6002. The reason for that is better explained in the issue
discussion.
	This PR fixes this by allowing pasting inside the Pattern Editor
when the clipboard has a single Clip, which is what was allowed on the
previous workflow, while at the same time avoiding the unexpected
behavior of pasting multiple Clips that might invade the positions
reserved for different Pattern Tracks.
2023-08-12 11:54:26 -03:00
Michael Gregorius
5a6799314a Fix builds (#6548)
Add the comment "// namespace lmms" to the closing scope of the lmms
namespaces. The "scripted-checks" are quite strict. Perhaps they should
be renamed to "strict-checks". ;)

Include "cassert" in UpgradeExtendedNoteRange.cpp to hopefully fix the
mingw builds.
2023-08-11 18:44:13 +02:00
Michael Gregorius
5335f6d8c6 Separate class for extended note range upgrade (#6548)
Extract the code that upgrades the extended note range into its own
class. This hides the helper functions that are related to the upgrade
from the other upgrade methods in DataFile.cpp.

The header file is put into the src/core directory as it is not part of
the public interface and therefore should not be included in the
"global" include directory. The whole thing is just an implementation
detail of the upgrade in DataFile.cpp.
2023-08-11 18:33:35 +02:00
Michael Gregorius
dac1f77347 Code review changes (#6548)
Add a space after some while loops. Fix a typo in a comment.
2023-08-11 17:55:26 +02:00
Tres Finocchiaro
353221a02c Allow Apple install step to fail CI (#6796)
Fail CI if Apple install step fails
2023-08-05 19:29:46 -04:00
Johannes Lorenz
97c6ae1aa0 Lv2: Improve control visualization (#6799)
Previously, the Lv2 controls were checked for control types in this
order:

  integer?
  enum?
  toggle?
  generic?

This is bad because it goes from generic (integer) to specific (toggle),
and then defaults to most generic. The order should be specific (toggle)
to generic (integer, generic), which is fixed by this PR.

This solves that controls which are marked "toggle" and "integer" were
being displayed as a spinbox (#6798).

Additional improvement: Only show search bar for more than 5 controls,
previously more than 2 (#6798).
2023-08-05 22:20:23 +02:00
Tres Finocchiaro
bc99728534 Consolidate and simplify CMAKE_POLICY entries (#6780)
Simplify CMake Policies
Per https://github.com/LMMS/lmms/pull/6758#discussion_r1271346366
2023-08-02 23:06:18 -04:00
Sergey Fedorov
2ded48598f versioninfo.h: improve recognition of compiler and platforms (#6795) 2023-08-02 23:05:27 -04:00
Sergey Fedorov
57e7fdc533 MidiApple.cpp: fix getName to allow build with GCC (#6791)
Fixes: https://github.com/LMMS/lmms/issues/6785
2023-07-31 00:38:35 -04:00
Tres Finocchiaro
62a8c68736 Fix apple install script for zyn interface (#6782)
* Fix apple install script for zyn interface
* Add codesigning support to prevent crash
2023-07-30 23:42:53 -04:00
Madadog
086e86490f Fix scale highlighting during vertical zooming (#6761)
Vertically zooming the piano roll caused highlighted semitones to drift from the actual note positions. This 2-line fix ensures the marked semitones are aligned with the grid lines and notes at all allowed vertical zoom levels.
2023-07-30 20:27:05 +09:00
Michael Gregorius
48cdaddd9d HiDPI fixes for elements based on QTreeView
Fix the HiDPI problems for elements that are based on QTreeView by
removing the fixed point based font size from the style sheet. This
affects:
* The file browser
* The headings of the plugin browser
* The patch selection dialogs for GigPlayer and SoundFont player

Also make the text size of the check boxes for user content and factory
content based on a point size instead of a pixel size.
2023-07-29 16:21:05 +02:00
Michael Gregorius
67dcdf2c65 Fix HiDPI issue of sample track window
Fix one of the HiDPI issues of the sample track window by removing the
hard coded font size of the name line edit.
2023-07-29 10:19:47 +02:00
Michael Gregorius
5674bb58e2 Fix HiDPI issues for menus
Menus now use the size that users have set globally for their
applications. This is accomplished by removing the fixed font size
definition (in points) for `QMenu` in `style.css`.

In some places the menus had been set to hard coded font sizes. This
code is also removed and applies to the following menus:
* Combo box menus
* Track operation widget (gear icon on tracks)
* The MIDI port menu
2023-07-29 09:58:40 +02:00
Sergey Fedorov
a9d49d4ff7 CMakeLists: use flags for Apple correctly (#6784) 2023-07-29 00:22:32 -04:00
Michael Gregorius
4fac4c6c4a Fix a problem with some includes
Remove a trailing ">" for some includes of `QFormLayout`. My local
compiler did not complain but mingw rightfully does.
2023-07-25 19:07:57 +02:00
Michael Gregorius
0759da2776 Layout adjustments for AudioSoundIo
Use a QFormLayout in AudioSoundIo::setupWidget::setupWidget.

Note: Changes have been done "blindly" as I am not able to compile this
code.
2023-07-25 18:28:04 +02:00
Michael Gregorius
a429c2f94f Adjustment of AudioSndio
Adjust the layout that's created in AudioSndio::setupWidget::setupWidget
by using a QFormLayout.

This was done in a "blind" fashion as I am not able to compile this
code. Adjustments are very similar to the ones done in
AudioPulseAudio::setupWidget::setupWidget with commit b53290344b
though.
2023-07-25 18:16:33 +02:00
Michael Gregorius
9282e6c91b Remove temporary AudioDeviceSetupGroupWidget
Remove the temporary class `AudioDeviceSetupGroupWidget` and move its
functionality into `AudioDeviceSetupWidget`. This means to let
`AudioDeviceSetupWidget` inherit from `QGroupBox` instead of
`TabWidget`.

Adjust all inheriting classes accordingly. Adjust usages in SetupDialog.

The result should be that even the cases for `LMMS_HAVE_SOUNDIO` and
`LMMS_HAVE_SNDIO` should compile again. Although their layout might look
weird.
2023-07-25 18:03:18 +02:00
Michael Gregorius
095b206635 Remove unused include
Remove an unused include of "AudioDeviceSetupWidget.h".
2023-07-25 17:36:48 +02:00
Michael Gregorius
345886954e Adjust the MIDI setup dialog
Adjust the MIDI setup dialog:
* Show it in a QGroupBox
* Make it use a `QFormLayout` to layout the label and line edit.

Remove the hard coded height.
2023-07-22 23:03:31 +02:00
Michael Gregorius
b53290344b Adjust most audio driver settings dialogs
Adjust the dialogs of most audio driver settings dialogs by showing them
in a QGroupBox and adjusting their layouts. All dialogs now use
`QFormLayout` to layout their labels and input widgets.

Technical details
------------------
Introduce `AudioDeviceSetupGroupWidget` which is intended to
functionally replace `AudioDeviceSetupWidget` in the long run. This is
likely a temporary replacement in the sense that
`AudioDeviceSetupGroupWidget` will be renamed to
`AudioDeviceSetupWidget` once the latter has been replaced everywhere.
Both classes are very similar and the only difference is that the former
inherits from `QGroupBox` instead of `TabWidget`.

Adjust the using of AswMap so that it is now defined as a map from
`QString` to `AudioDeviceSetupGroupWidget`.

Use `QFormLayout` to layout the widgets of the setup dialogs instead of
hard coding geometries and placement.

TODOs
------
Adjust the widgets for the SoundIO and SndIo cases. These will be a bit
more effort as they are not compiled on my machine.
2023-07-22 22:55:02 +02:00
Michael Gregorius
c06d9d4883 First adjustments to MIDI page
Use group boxes and layouts for the "MIDI interface" and automatic
assignment tabs.

The configuration/information dialogs for the different drivers still
need adjustments.
2023-07-16 23:04:09 +02:00
Michael Gregorius
cbea8f30fc Make "Paths" scroll area expandable
Make the "Paths" scroll area take as much space as there is.
2023-07-16 20:04:55 +02:00
Michael Gregorius
c5c459f54f Adjust Plugins group/tab
Adjust the plugins group to also use a QGroupBox and QCheckBoxes. This
finishes the "Performance" page and also finally enables the removal of
the local variables `XDelta` and `YDelta` as well as the lambda
`addLedCheckBox`.

Other changes
--------------
Add a TODO to some unused code for some advanced setting.

Fix layout of the main widget and the buttons widget. Remove an
erroneous ",1" after a statement.
2023-07-16 20:02:11 +02:00
Michael Gregorius
4908bfe1a6 Scalable Setup Dialog
Make the setup dialog resizable and use widgets that dynamically adjust
to the font size set by the user.

Current status of the tabs:
* General: Done
* Performance: Plugins group needs adjustments
* Audio: Individual settings dialogs need adjustments
* MIDI: Not started yet
* Paths: Done

The "Autosave" and "Buffer size" tabs have been slightly redesigned so
that the revert/reset button is next to the slider.

Technical details
------------------
Setting a fixed size has been removed from the setup dialog so that it
can be resized.

The settings widget (`settings_w`) now has a layout to which the sub
dialogs are added. This is done so that the layout sizes are propagated
upwards, i.e. all widgets along the chain now have a layout so that size
hints are determined correctly.

Instances of `TabWidget` are replaced with instances of `QGroupBox`.
Each group box has a layout to which its children, e.g. check boxes, are
added. These group boxes are then added to the layouts of their parents.
Doing so also removes the need to count how many instances have been
added and calculations on where to put the children.

Instances of `LedCheckBox` are replaced with instances of `QCheckBox`.
This is done in the new helper lambda `addCheckBox`. It's very similar
to the previously used `addLedCheckBox` but creates a `QCheckBox`
instead of a `LedCheckBox`. It returns the created `QCheckBox` as a
result. If a layout is provided the created check box is also added to
the layout before it is returned.

The helper lambda `addPathEntry` has been adjusted to create a
`QGroupBox` and to put all its children in a layout.

The helper method `labelWidget` has been adjusted to not set the font
size of the label.

The method `TabBar::addTab` had to be extended with a new default
parameter which controls if the added widget is fixed to the size of
it's parent or not. In the case of the setup dialog we do not want this.
So far the method is only used by the setup dialog and the
`LadspaBrowser` class. So once the `LadspaBrowser` has been made
resizable the default parameter can be removed again and treated as
always being set to false.

Add `QCheckBox` to the `style.css` so that it does not get a green font
due to the palette magic that's done.
2023-07-16 14:11:24 +02:00
Tres Finocchiaro
c53f3d981b Bump cmt submodule (#6151)
* Bump cmt submodule
Closes #6006
2023-07-11 12:52:32 -04:00
Kevin Zander
5ccc8d952a Remove redundant nameChanged signal from InstrumentTrack (#6742) 2023-07-02 15:02:37 +09:00
Aidan Mueller
1f30ffc5e4 Fixed issue #5734 (FreeBoy Division by zero) (#6053)
* Fixed issue #5734 (FreeBoy Division by zero).

Added comments and used more descriptive variable names for noise
channel initialization block.

Also indented the nested for loop to improve code clarity.
The reasons for doing this can be found in this answer:
https://softwareengineering.stackexchange.com/a/362796

* Better initial div_ratio guess

Allows us to skip r = 0 and a conditional in the loop below.

---------

Co-authored-by: Spekular <Spekular@users.noreply.github.com>
2023-07-02 12:28:40 +09:00
Dalton Messmer
b7027fecbb Fix occasional crash when clicking Key button in piano roll with no clip (#6757) 2023-07-02 11:57:09 +09:00
chkno
7f43e3b982 Detect hiir fetch (#6755) 2023-06-30 21:51:43 +09:00
Lost Robot
4ea8a70de6 Fix Equalizer LP/HP curve display (#6748) 2023-06-26 17:23:47 -07:00
Hyunjin Song
405738f66f Fix STK rawwave installation in Windows builds (#6705)
* Fix STK rawwave path detection and installation
* Use the CMake logic for rawwave installation on Win and Mac
2023-06-24 11:58:56 +09:00
superpaik
c8546633a2 Adding new FX channel while in solo (#6717)
* Adding FX channel while in solo

New FX channel is muted when there is a soloed FX line. Fixes #6311

* Move var initialization to constructor
2023-06-24 11:57:52 +09:00
Lost Robot
989fc338fa Partially revert #6721, improve performance of Directory::addItems (#6738)
* Fix expandItems & speed up Directory addItems
2023-06-14 15:38:34 -05:00
Michael Gregorius
7c6ade5736 Merge pull request #6731 from michaelgregorius/6729-MissingFilterImage
Add SID filter image back (#6729)
2023-06-08 17:41:58 +02:00
Michael Gregorius
5debf982ef Add SID filter image back (#6729)
Add the image for the disabled SID filter back. According to a comment
in the issue it seems to have gone missing during commit c1e6b313.
2023-06-08 17:15:53 +02:00
Michael Gregorius
4f01094d98 Fix base notes of B+B tracks (#6548)
Fix the base notes and automations of B+B tracks.

This fixes for example the problem that when a TripleOscillator had been
put into a B+B track, e.g. with version 1.2 that it sounded too high
when being loaded with a current master version. The cause seems to be
that the notes of the instrument pattern are corrected/transposed too
often (likely due to the collection of all tracks starting from the
song/document root).

The multiple correction of notes is fixed by traversing the song
structure in a more consise way. First all track containers of the song
are collected and for each of them the tracks are collected. These
tracks are then fixed one by one. B+B tracks are getting a special
handling while doing so. It is assumed that a B+B track cannot have
other B+B tracks inside and therefore all sub tracks of the B+B track
are searched for so that they can be fixed recursively.

Refactor some more functionality into static helper methods:
* Everything beneath a track is now fixed by the helper method
`fixTrack`.
* The fix of the base notes of the instruments themselves and the
extraction of the ids of automated base notes has been moved into
`fixInstrumentBaseNoteAndCollectIds`.
* The lambda `affected` has been converted into a static method because
it is must be accessible by one of the static helper methods.
* The code for fixing the automation tracks of a song has been moved
into the helper function `fixAutomationTracks`.
2023-06-08 14:25:20 +02:00
Michael Gregorius
cf83b52783 Fix nested for loops with identical variables (#6548)
Fix the problem with the nested for loops that all had variables called
"i" by extracting a helper method with a corrected nesting. Due the
extraction we do not have to care anymore if the correction is running
beneath another for loop with potentially the same variable names.
2023-06-08 11:27:04 +02:00
Michael Gregorius
502e95d5b4 Try to fix GitHub builds
The GitHub builds seem to need the explicit include which for some
reason is not needed on my developer machine.
2023-06-08 11:09:38 +02:00
Michael Gregorius
02fef122ae Extend fix for mixed automation tracks/patterns (#6548)
Move the fix for the automated base notes to the code that fixes the
non-automated base notes.

Improve the fix for automation tracks and patterns by potentially
splitting them into two tracks:
* The original track which is adjusted to only contain patterns with
targets that are not base notes.
* A cloned track that only contains patterns with base note targets.

This is done by iterating over all automation tracks and checking which
types of automations they contain:
* Base note automations
* Automations of other targets

The result for each automation track are then evaluated as follows.
* If an automation track does not contain any base note automations it
is kept as it is, i.e. nothing is done.
* If an automation track only contains patterns with base note
automations its patterns are corrected in place.
* If an automation track contains patterns with base note automations
and other targets then the track is duplicated so that we can split it
as described above. This split and correction is done on a per pattern
level. Patterns that would become empty are removed.

Cloned tracks will keep the same names and attributes as their original
tracks.

TODOs
------
* Base notes are read as integers, corrected by an integer value of 12
and then stored back as an integer. In some files base notes have float
values, i.e. if the file was stored after the base notes have been
automated linearly.
* B&B tracks are not corrected although they can contain instruments
with (automated) base notes!
* Nested for-loops with "i" as their running variables. (Fix in a
separate commit)
2023-06-08 10:48:02 +02:00
Tres Finocchiaro
bceee6c427 Look for libcarla_native-plugin.dll on Windows (#6726)
Closes #5984
2023-06-05 16:22:05 -04:00
Michael Gregorius
9f34c5cfa3 Remove debug code from DataFile::upgrade
Remove debug code from DataFile::upgrade which was accidentally
committed.
2023-06-05 20:20:34 +02:00
Michael Gregorius
20c83e5021 Fix automated base notes and their automations (#6548)
Fix all base notes that are used in automations and their corresponding
automation values. Base notes that are automated are stored as elements
in the save file whereas non-automated base notes are stored as
attributes. So far the method `upgrade_extendedNoteRange` only upgraded
the non-automated base notes that are stored in attributes. This commit
fixes the automated ones which are stored in elements.

The fix works as follows:
* Collect all base note elements.
* Store their ids in a set so that we can later identify automations
  that reference them.
* Collect all automation pattern and check if they reference a base
  note.
* Adjust the values and out values of all automations that reference
  base notes.

Note: for many older files the out values will be introduced by the
upgrade `method upgrade_automationNodes` and do not appear in the files
themselves!
2023-06-05 20:09:30 +02:00
Michael Gregorius
bd5f1b9ea1 Fix uninitialized variable "pCurPreset" (#6639) (#6723)
Fix the uninitialized variable pCurPreset by setting it to nullptr.

Please note that it looks as if the nullptr is now being passed to the
function fluid_sfont_iteration_next_wrapper. However, the function does
not use the parameter anyway and then the variable is set to the result
of that function.
2023-06-04 22:44:48 -05:00
Michael Gregorius
3ab8eeeacd Merge pull request #6718 from michaelgregorius/6711-AutomationCrash
Fix automation crash (#6711)
2023-06-02 22:49:34 +02:00
Michael Gregorius
0ebc18941b More whitespace adjustments (#6711)
More whitespace adjustments as proposed in the code review.
2023-06-02 22:17:03 +02:00
Michael Gregorius
9fe7fbd69e Simplify logic of Model::fullDisplayName (#6711)
Simplify the logic of the method Model::fullDisplayName.

Please note that this shows that with the current logic if the parent
model has a non-empty name like "parentmodel" and the name of the child
model is empty the result is the name "parentmodel >" which might not be
what's wanted.
2023-06-02 20:51:28 +02:00
Michael Gregorius
fda938fcca Code review changes (#6711)
Remove underscores and whitespace in the Model files.
2023-06-02 20:51:07 +02:00
Lost Robot
8a07328a93 Remove non-directory expansion 2023-06-02 09:10:18 -05:00
Michael Gregorius
43319a8d79 Move implementations of Model into cpp file (#6711)
Move the implementation of the Model methods into Model.cpp so that
recompiles after changes are much quicker. Make Model::
isDefaultConstructed const.
2023-05-26 11:11:45 +02:00
Michael Gregorius
75627a15f9 Fix automation crash (#6711)
Fix a crash that occurs if the zooming or snapping model of the Song
Editor is used for automation.

The crash is caused by a failed static_cast to a Model* in
Model::parentModel(). The cast fails because in the constructor of
SongEditor the SongEditor is set as the parent of the zooming and
snapping model:
m_zoomingModel->setParent(this);
m_snappingModel->setParent(this);

This commit is rather a "band aid" fix because it only fixes the crash
by changing the static_cast to a dynamic_cast. However this means that
the name of the automation clip is initially empty.

A better solution would be to not use the Qt parent/child relationships
to implement the model hierarchies.
2023-05-26 10:52:35 +02:00
Tres Finocchiaro
b322f8022e Add .DirIcon to AppImage (#6715)
* Add .DirIcon to AppImage
* Add X-AppImage-Version to .desktop file
* Closes #6695
2023-05-23 03:14:28 -04:00
superpaik
d551938cbd Add confirm removal on mixer channels (#6691)
* Add confirm removal on mixer channels

Add confirm removal popup when the user calls the action "remove channel" on a mixer channel that is in use (receives audio from other channel or track). Set a config variable to keep track if the user don't want to be asked again. Adding a scroll on settings-general tab because there weren't enough space on the area.

* Core Mixer function channel in use

New core Mixer function to check if a given channel is in use (receives audio)

---------

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: saker <sakertooth@Gmail.com>
2023-05-10 20:14:24 +09:00
Lost Robot
87a57db593 Add instrument plugins to Song Editor via right click (#6698) 2023-05-06 13:16:07 +09:00
Bimal Poudel
3440d49aa8 Fix comparing int with bool (#6637)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-04-30 13:07:13 +09:00
Michael Gregorius
ffe3bb4399 Merge pull request #6607 from michaelgregorius/ImproveReadabilityOfTextFloat
Improve readability of text floats
2023-04-29 16:53:58 +02:00
Lost Robot
f13e95932d Include cstdint (#6697) 2023-04-25 11:06:15 -07:00
Lost Robot
1f93dbc124 EQ default shelf reso (#6694) 2023-04-21 11:17:53 -07:00
Dalton Messmer
64003fb004 Fix FreeBoy CPU time bug (#6680) 2023-04-18 14:39:02 -05:00
Gregaras
95cd028e5d Update InstrumentTrackView.cpp (#6687) 2023-04-18 11:39:15 +09:00
Michael Gregorius
b90156bedd Coding conventions
Adjust the code style of the adjusted and created classes according to
the coding conventions.
2023-04-09 17:02:26 +02:00
Lost Robot
2e572caa58 Add Dispersion effect (#6683) 2023-04-05 21:08:24 -07:00
Lost Robot
fb529a19c5 Make note octave highlight in piano roll obey microtonality (#6663) 2023-03-26 12:30:12 -07:00
Arash Partow
2baa23ee1a Update ExprTk package 2023-02-26 15:51:24 +01:00
JGHFunRun
ac080513fd Fixed typo (#6652) 2023-02-23 23:31:07 +01:00
Johannes Lorenz
5b84b65236 Lv2: Update copyright 2023-02-21 21:03:00 +01:00
Johannes Lorenz
49a6abb343 Lv2: Add/improve some comments 2023-02-21 21:03:00 +01:00
Johannes Lorenz
f48dd0fb1f Fixes #6401: Reload Lv2 plugin on SR change
This also includes banning blop's wavedata plugins, because they crash
on reloading. Reference: https://gitlab.com/drobilla/blop-lv2/-/issues/3
2023-02-21 21:03:00 +01:00
Johannes Lorenz
7649f5ed24 Lv2ControlBase: Remove unused virtuals
They were never used. Possibly they were just in the code because the
code originated from #4662 (where the virtuals would also be
omittable...).
2023-02-21 21:03:00 +01:00
madisonsilver
9bcf63c5da Fix issues #6383 and #4410 (pause issues). (#6590)
Fixes #6383 and fixes #4410.

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-02-19 11:01:11 +09:00
dev
192119621f Save Piano Roll behaviour at stop state 2023-02-18 10:23:06 -06:00
dj-pixus
1ddd204250 workize output note setting 2023-02-18 10:10:06 -06:00
Proud Electrics Studios
1a68aee149 PatternClips now use startTimeOffset, too, and can be resized on their start [FIX 7] 2023-02-18 09:39:46 -06:00
Kevin Zander
534e7edf0f Merge pull request #6603 from messmerd/include-guard-fix
Fix include guards and copyright statements
2023-02-18 09:32:27 -06:00
Lost Robot
8ba6a5f89e Draggable effects (#6648)
Reorder effects in Mixer with the mouse via click and drag
2023-02-18 09:22:16 -06:00
Bimal Poudel
507fa239dd Update BashCompletion.cmake (#6634) 2023-02-08 16:16:10 +09:00
Hyunjin Song
9d5d86d863 Update Docker image version for ShellCheck 2023-01-27 21:55:43 +09:00
Lost Robot
cf13cfa57a Update HIIR submodule to latest (#6622) 2023-01-26 12:28:37 -08:00
Lost Robot
4d1d8871cd Add HIIR library to LMMS (#6553) 2023-01-26 11:29:41 -08:00
Hyunjin Song
c8a9d45ef0 [ci skip] Remove the reorganization disclaimer 2023-01-24 10:46:11 +09:00
Johannes Lorenz
50a4297c97 [ci skip] Update .clang-format
This adds previously applied checks to the `.clang-format` file and also
reorders the checks alphabetically.
2023-01-21 18:07:07 +01:00
Johannes Lorenz
22eb7a1364 clang-tidy: Apply readability-const-return-type 2023-01-21 17:44:48 +01:00
Hyunjin Song
f89d52fa21 Fix more Qt deprecation warnings (#6615)
* Add <QHash> to PluginFactory.h

* Handle one more deprecated QTextStream::endl

* Replace QLayout::setMargin with setContentsMargins

* Replace Qt::MidButton with Qt::MiddleButton

* Replace QPalette::Background with QPalette::Window

* Fix deprecation warnings in LcdFloatSpinBox
2023-01-18 10:16:28 +09:00
Hyunjin Song
158bb50816 Fix recent files menu on old KDE in a different way (#6612) 2023-01-17 21:56:31 +09:00
Hyunjin Song
e8e54a7ba8 Remove more global automation from MidiImport (#6605) 2023-01-17 21:17:38 +09:00
Michael Gregorius
17295a4f86 Introduce SimpleTextFloat
Introduce the new class SimpleTextFloat which simply shows a text and
that works like a pseudo tool tip with a narrow margin. It was extracted
from TextFloat to adhere to the single responsibility principle.

The new class is used by:
* Fader: display the current volume when moving the fader
* Knob: display the current value when the knob is moved
* PianoRoll: display the current value when setting the note volume and
  panning

Add stylings for the new widget in style.css.
2023-01-10 19:20:26 +01:00
Dalton Messmer
d89f53b4b0 Fix mistakes 2023-01-07 21:12:23 -05:00
Michael Gregorius
6dfdafe1f7 Improve readability of text floats
Improve the readability of text floats by removing the hard coded pixel
font size. The widget is now composed of three QLabels which are used to
display the title, text and pixmap. Remove the methods paintEvent and
updateSize because the widget is now updated automatically whenever the
QLabels change state.

Merge both versions of TextFloat::displayMessage because one of them was
only called by the other.

The default constructor of TextFloat now delegates to the "full"
constructor. The latter is private because it is only used from within
displayMessage.

The methods setTitle, setText and setPixmap show/hide their
corresponding labels depending on whether there is text or a pixmap to
show.

Adjust the class Fader so that the text float is shown to the right of
the fader. Otherwise the new implementation would have covered the fader
while it is being moved.
2023-01-07 20:43:53 +01:00
Hyunjin Song
dfc7eabcb9 Fix namespace comments 2023-01-07 10:59:39 +09:00
Hyunjin Song
9b3fe5e2ad Reformat and modernize a bit 2023-01-06 22:03:17 +09:00
Hyunjin Song
94221651d4 Merge branch 'master' into groove 2023-01-06 21:41:51 +09:00
Dalton Messmer
2c6d88f799 Add GUARD_H closing comments 2023-01-05 17:58:49 -05:00
Dalton Messmer
92522cf3ab Add missing copyright statement to CustomTextKnob.h/cpp 2023-01-05 14:03:07 -05:00
saker
679d63224a Resample SampleBuffer only once when loading from SampleClip (#6594)
The SampleBuffer's sample rate in SampleClip was altered twice during
SampleClip::loadSettings: first when setSampleFile was called,
which set the sample rate of the SampleBuffer to the AudioEngine's
sample rate (good), and a second time when calling setSampleRate,
which set it to the sample rate specified within the project file (bad).
This led to the sample rate of the buffer being different than that of
the project, resulting in it being pitched incorrectly on playback.
2023-01-03 23:26:57 +00:00
Dalton Messmer
bbf31a2e73 Add missing copyright statement to MidiCCRackView.h 2023-01-02 22:02:12 -05:00
Dalton Messmer
fe6df8dbaf Add namespace prefix to include guards 2023-01-02 19:51:32 -05:00
Dominic Clark
d95c89760a Support ZynAddSubFx with MSVC (#6561) 2023-01-02 23:42:46 +00:00
PrestonXPitzer
79def0c3b5 Changed Whitespace
removed whitespace in Piano.cpp and Piano.h to comply with LMMS coding convetions
2023-01-01 14:57:24 +01:00
Lost Robot
2f2ba41f28 Microtonality for SF2Player (#6580)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2023-01-01 10:28:30 +00:00
Alex
6c7d2da9c4 Fix AM pitch shift compatibility with 1.2 projects (#6554)
and shorten some of the upgrade code
2023-01-01 10:09:31 +00:00
Hyunjin Song
bf00a675cc Fix broken "Display playback cursor in AudioFileProcessor" (#6601)
Adds missing `lmms` namespace for `f_cnt_t` to qRegisterMetaType.
2023-01-01 18:53:30 +09:00
Alex
19ae5280e5 Fix orphan class declarations in Flanger (#6600) 2023-01-01 10:14:09 +01:00
localhost-127
2f28c2bcc2 Fix recording not possible with MIDI keyboard in PianoRoll (#6593)
Co-authored-by: volumie <volumie@yahoo.com>
2023-01-01 15:19:40 +09:00
Alex
757146cc68 Move Flanger class declarations into namespace lmms 2022-12-31 14:40:07 +01:00
saker
a876cf9d00 clang-tidy: Apply modernize-avoid-c-arrays everywhere (#6564)
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2022-12-30 22:18:14 +00:00
Veratil
edd759b511 Fix deprecated QString.sprintf with QString.arg 2022-12-28 20:36:10 -06:00
Dominic Clark
ff5f092a63 Show pull request number in version string (#6565) 2022-12-18 18:37:53 +00:00
Dominic Clark
e92561265c Only rebuild translations when ts files change (#6566) 2022-12-18 18:04:37 +00:00
saker
17aa7dbef5 Fix unwanted scrolling when changing track name (#6583) 2022-12-10 18:48:17 +00:00
Martin Pavelek
20baf96db3 Fix several issues raised at Transifex (#6568)
Make strings independent on word order, fix capitalization and typos
2022-11-19 16:16:44 +00:00
Dalton Messmer
edb379eafd Fix pattern clip colors from pre-1.3 versions (#6563) 2022-11-07 13:33:30 +09:00
Lost Robot
ae55450155 Make shifting notes by octaves respect microtuning (#6545) 2022-11-05 15:42:56 -07:00
Lost Robot
8bf86573f6 Fix master pitch behavior to transpose instead of detune (#6544) 2022-11-05 15:42:33 -07:00
Johannes Lorenz
993c09fd4b Fix CI error: fatal: transport 'file' not allowed (#6557) 2022-11-02 23:17:57 +01:00
Alex
6088ac6102 Support building AppImage on non-ubuntu systems (#6510)
* Use uname -m instead of uname -p and arch
* Various logging improvements
Co-authored-by: Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com>
2022-10-10 02:30:46 -04:00
Alex
a0e8db37f0 Fix blank lines in language dropdown menu (#6512)
Discards invalid languages from language list and falls back to English if there is no native language name.
2022-10-10 10:02:08 +09:00
Michael Fulghum
a57265cf8d Limit height of while position line to height of all tracks (#6509)
* Position line height fits all tracks when line is moved or updated

* Refactor track height calculation; create connection to update position line height
2022-10-04 14:43:23 +09:00
Rossmaxx
6ae075edf3 Fix Visual Studio 2022 detection (#6520)
Adds Visual Studio 2022 detection to DetectMachine
2022-10-01 01:13:35 -04:00
saker
8459d6d679 Fix regression from #6481 (#6522)
Fix bug that shows only one effect in the effect chain
2022-09-30 22:28:44 -04:00
saker
2f7a6558a1 clang-tidy: Apply modernize-loop-convert everywhere (#6481)
Co-authored-by: allejok96 <allejok96@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2022-09-27 09:27:35 +01:00
Alex
e407e73e24 check-namespace: don't require comment after #else (#6513) 2022-09-19 17:45:44 +02:00
Dominic Clark
5bfd7fba4e Support Sf2 Player, Mallets, PortAudio, and Lame with MSVC (#6507) 2022-09-19 14:46:38 +01:00
saker
0b27497be2 clang-tidy: Apply modernize-use-auto everywhere (#6480)
Note: clang-tidy was run with `--format-style=file`.
2022-09-14 19:27:53 +02:00
Dominic Clark
550c7bf82e Improve use of strip command (#6505) 2022-09-06 17:25:59 +01:00
Johannes Lorenz
3cc5ec7282 Add check-namespace script (#6438)
This also fixes a lot of code files to be conforming to the script.

Co-authored-by: allejok96 <allejok96@gmail.com>
2022-08-30 02:19:07 +02:00
Craig Raslawski
17f597695b Fix wrong cursor for selected resizeable clips in song editor (#5996)
Fixes #879.
2022-08-28 12:09:52 +09:00
Oskar Wallgren
4821606465 Blacklisting Lv2 plugins depending on gui (#6486) 2022-08-20 10:28:25 +02:00
Johannes Lorenz
9faa1d90c4 Fix "check-strings" verification (#6485)
PR #6438 does 2 things:

1. Add check-namespace
2. Fix verify script

This PR contains only part 2 (and does some preparations for part 1). The goal of the PR is to make CI succeed on master.
2022-08-13 21:29:15 +02:00
Hyunjin Song
7c86331e06 Remove a workaround for broken install-qt-action (#6482)
Also uses commit hash to prevents potential issues on upstream updates
2022-08-09 17:37:44 +09:00
Dominic Clark
fe91a65f03 Migrate CI to GitHub Actions (#6476) 2022-08-03 17:29:11 +01:00
István Szabó
ee7d312ac9 Allow negative value for stereo difference in BitCrush (#6475) 2022-08-02 14:48:27 +09:00
Kevin Zander
f39b3d5022 Use automation track for MIDI program change events (#6308) 2022-07-08 13:06:25 -05:00
Chr L
1246e76a96 Fix a typo in 420769a which breaks the microtuner (#6458) 2022-07-07 17:03:14 +01:00
saker
b451e40b51 clang-tidy: Apply modernize-use-using everywhere (#6453) 2022-07-07 10:54:34 +02:00
Hussam al-Homsi
a6e6afb0ee Make AFP include the last sample frame (#6399) 2022-07-05 11:19:56 +09:00
Dominic Clark
6c3e148fbb Make VST sync always-on and non-global (#6418) 2022-07-04 17:03:17 +01:00
Alex
9705c31773 Transpose midi clips in song editor (#6409)
* Transpose midi clips in song editor

* Fix undo stupidity

* Check boundries when transposing clips

and move transpose function to NoteVector

* Avoid update if nothing has changed

* Make getNoteBounds a separate function

* Rename getNoteBounds to boundsForNotes

* bool operator instead of optional + qobject_cast

* Revert "bool operator instead of optional + qobject_cast"

This reverts commit 98c56a96cf.

* qobject_cast and nullopt
2022-07-04 10:16:22 +09:00
Johannes Lorenz
29efb5d6ba MidiRawClient: Fix setting useless param (#6431)
MidiChannelPressure and MidiProgramChange have only one param, so only
set this one param for those.
2022-07-02 10:20:46 +02:00
Levin Oehlmann
c075ba93fb clang-tidy: Run modernize-use-emplace everywhere (#6451)
... to avoid constructing and copying temp objects
2022-06-26 08:54:59 +02:00
Levin Oehlmann
28ec71f91a clang-tidy: Apply modernize-use-equals-default everywhere (#6450) 2022-06-26 08:48:24 +02:00
Johannes Lorenz
95843759cc Update .clang-tidy [ci skip] 2022-06-25 16:53:16 +02:00
Johannes Lorenz
cd7f26b36c Split lines in .clang-tidy [ci skip]
See, for example:
https://stackoverflow.com/questions/60723010/clang-tidy-file-how-to-list-the-checks-in-multiple-lines
2022-06-25 16:53:16 +02:00
Levin Oehlmann
e72d9d46b8 Add missing gui:: prefixes to types in AudioSoundIo (#6447)
Fixup of #6174 .
2022-06-25 00:53:01 +02:00
Levin Oehlmann
c5cdab2601 clang-tidy: Apply modernize-use-bool-literals (#6448)
... and remove never-executed code:

This removes a condition that was always true and two statements
guarded by conditions that were always false.
2022-06-24 19:38:44 +02:00
Johannes Lorenz
c259220472 Fix clazy warning: "Signature is not normalized." (#6445)
This only removes whitespace to fix a clazy warning
[-Wclazy-connect-not-normalized].
2022-06-23 22:17:44 +02:00
Levin Oehlmann
773310384b clang-tidy: Apply modernize-redundant-void-arg everywhere (#6446) 2022-06-23 21:27:23 +02:00
sakertooth
420769a32d Fix Qt Deprecations (#6386)
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2022-06-23 20:28:04 +02:00
Dominic Clark
96df9b006c Clean up macros a bit (#6444)
* Prefix `STRINGIFY` and `STR` macros with `LMMS_`

* Fix include guard macro names

* Remove unused macros
2022-06-23 12:20:05 +01:00
Hyunjin Song
c2fa2375dc Don't send effEditIdle on CLI rendering (#6440) 2022-06-22 10:06:34 +09:00
Levin Oehlmann
5904b249c0 clang-tidy: Apply modernize-use-override everywhere (#6439)
... to mark overriding functions `override` instead of `virtual`.
2022-06-19 23:03:55 +02:00
Levin Oehlmann
7227c89847 Namespace lmms (#6174)
This PR places all LMMS symbols into namespaces to eliminate any potential future name collisions between LMMS and third-party modules.

Also, this PR changes back `LmmsCore` to `Engine`, reverting c519921306 .

Co-authored-by: allejok96 <allejok96@gmail.com>
2022-06-19 20:08:46 +02:00
Hyunjin Song
193c30f888 Merge branch 'master' into groove 2022-06-18 15:47:07 +09:00
Shmuel H
371f7f506d AudioEngine: Introduce RequestChangesGuard: a RAII verion of
requestChangeInModel.

Deprecate direct calls to requestChangeInModel.
2022-06-18 15:41:47 +09:00
luzpaz
5879d7eaa7 Fix typo in doc/lmms.1 (#6429) 2022-06-18 12:25:53 +09:00
Alex
ce2d898da2 Correctly upgrade projects saved by LMMS forks (#6424)
* Do project file upgrades based on file version and not on LMMS version

* Do upgrade after version check
2022-06-14 12:27:20 -05:00
Monospace-V
03571ab38d Open .midi, .rmi files from sidebar (#6417) 2022-06-01 18:26:28 +01:00
Alex
d2dd7e3db2 Move widget files, add folder for track and instrument (#6374) 2022-05-29 20:48:19 +01:00
Alex
528e388820 Print AppImage log messages to stderr (fix #6384) (#6385) 2022-05-28 18:53:32 +01:00
pkubaj
ae4d1b52e2 Correctly detect architecture on powerpc* (#6415) 2022-05-28 21:18:02 +09:00
Dominic Clark
2c8ffd0f16 Refactor shared memory (#6404) 2022-05-28 13:10:45 +01:00
Hyunjin Song
3518d307f4 Fix Carla version detction in CarlaBase (#6403) 2022-05-24 09:57:09 +09:00
Johannes Lorenz
230aece217 Add check-strings (#6379)
This adds a script `check-strings` that checks whether strings, such as file paths or class names, are valid in files outside of the source code, e.g. in translations or themes. This also adds a verify script to verify `check-strings` on a constant git commit. Both scripts are under CI.
2022-05-23 20:35:06 +02:00
Johannes Lorenz
3964c53a0b Add .clang-format and .clang-tidy
This adds `.clang-format` and `.clang-tidy` files to check the code
(partially) against the
[LMMS coding conventions](https://github.com/LMMS/lmms/wiki/Coding-conventions).
2022-04-30 18:03:48 +02:00
Dominic Clark
0dcf909129 Kill orphaned subprocesses on crash (#6366)
Co-authored-by: Lukas W <lukaswhl@gmail.com>
2022-04-20 17:15:33 +01:00
Spekular
b4317edd43 Make loop markers snap to same increments as clips (#6313)
* Make loop markers snap to same increments as clips

* Fix snap size when loop points meet

* Switch to signal-slot based communication for proportional snap changes

* Move end if user clicks at exact center of loop

* Changes from reviews

* More detailed comment

* Properly handle zero length loop when ctrl is held

* More compact selection of action, m_loopPos ordering

* More robust sort
2022-04-18 17:25:15 +02:00
Alex
33b44ec9c7 Disable tooltips through event filter (#6192)
* Control tooltip visibility using an event filter

...removing the need for a ToolTip helper class

* Remove whitespace
2022-04-15 14:04:52 +02:00
Alex
7c1ebd31c9 Undoable add/remove bar (#6347)
* Undoable add/remove bar

* Don't add checkpoints to empty tracks

Authored by: Spekular <Spekular@users.noreply.github.com>
2022-04-13 20:11:37 +02:00
Spekular
32caf80be1 Rename 'dialogs' folder to 'modal', add missing modals (#6367) 2022-04-10 01:14:55 +02:00
Johannes Lorenz
f6bad88ad3 Fix casing of filenames and code in plugins/ (#6350)
No functional changes! No changes to savefiles/presets!

Fixes casing of everything that is currently lowercase but should
be uppercase.

Fixes also some other plugin strings, especially:

* opl2 -> OpulenZ (see 289887f4fc)
* calf -> veal (see ae291e0709)
* ladspa_effect -> LadspaEffect (see 9c9372f0c8)
* remove flp_import (see 2d1813fb64)
2022-04-03 13:26:12 +02:00
JGHFunRun
87b2663ac1 No "tb303" only "TB-303" (#6344) 2022-04-03 13:07:58 +02:00
Dominic Clark
9628a2b512 Fix QRC dependency issues (#6349) 2022-04-02 02:36:41 +01:00
Johannes Lorenz
54bee2272e Rename LedCheckbox to LedCheckBox in filenames
Justification: The class is named `LedCheckBox`, and other files follow
the casing of the classes, too.
2022-03-26 11:37:25 +01:00
Dominic Clark
4dc04a612a Split RemotePlugin.h into separate files (#6322) 2022-03-22 21:40:16 +00:00
Hyunjin Song
80a6672da4 Fix build due to missing includes
Fixes build errors introduced in
7db3fa94a1
2022-03-09 11:53:17 +09:00
Hyunjin Song
1dbf6aabf7 Fix includes 2022-03-03 10:54:55 +09:00
Hyunjin Song
fe9c8b6bf6 Merge branch 'master' into groove 2022-03-03 10:29:20 +09:00
akimaze
a08e7f9029 Native linux VST support (#6048)
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2022-03-02 18:47:54 +00:00
Johannes Lorenz
7db3fa94a1 Improve includes (#6320)
* Update ringbuffer submodule to fix includes

* Remove cyclic includes

* Remove Qt include prefixes

* Include C++ versions of C headers

E.g.: assert.h -> cassert

* Move CLIP_BORDER_WIDTH into ClipView

This allows to remove includes to TrackView.h in ClipView cpp files.

* Elliminate useless includes

This improves the include structure by elliminating includes that are
not used. Most of this was done by using `include-what-you-use` with
`CMAKE_C_INCLUDE_WHAT_YOU_USE` and `CMAKE_CXX_INCLUDE_WHAT_YOU_USE`
set to (broken down here):

```
include-what-you-use;
    -Xiwyu;--mapping_file=/usr/share/include-what-you-use/qt5_11.imp;
    -Xiwyu;--keep=*/xmmintrin.h;
    -Xiwyu;--keep=*/lmmsconfig.h;
    -Xiwyu;--keep=*/weak_libjack.h;
    -Xiwyu;--keep=*/sys/*;
    -Xiwyu;--keep=*/debug.h;
    -Xiwyu;--keep=*/SDL/*;
    -Xiwyu;--keep=*/alsa/*;
    -Xiwyu;--keep=*/FL/x.h;
    -Xiwyu;--keep=*/MidiApple.h;
    -Xiwyu;--keep=*/MidiWinMM.h;
    -Xiwyu;--keep=*/AudioSoundIo.h
```

* Fixup: Remove empty #if-#ifdef pairs

* Remove LMMS_HAVE_STD(LIB|INT)_H
2022-03-02 13:30:43 +01:00
Alex
f56fc68b66 Rename TCO and BB to clip and pattern in save files (#6309)
... and clarify how PatternTrack cloning works

- pattern -> midiclip
- automationpattern -> automationclip
- *tco -> *clip
- bb* -> pattern*
- bbtrackcontainer -> patternstore
2022-02-14 21:12:11 +01:00
Johannes Lorenz
77fee49735 Lv2: Don't show ports with prop notOnGUI (#6310)
Additionally, this commit removes an unused variable.
2022-02-13 12:44:53 +01:00
Alex
dc73911391 Rename Beat/Bassline to Pattern (#6284)
- BB* -> Pattern*
- BBTrackContainer -> PatternStore
- BBTrackContainerView -> PatternEditor
- BBEditor -> PatternEditorWindow

Does not touch save files
2022-02-13 09:03:37 +01:00
Hyunjin Song
8a0f1dd95b Fix small memory leaks in EQ dialog (#6300) 2022-02-11 10:10:32 +09:00
Alex
40f4d51078 Do not constantly repaint all clips during selection in song editor (#6303) 2022-02-11 00:27:28 +01:00
merrickclay
912c0b76ea Add missing disconnect statements in PianoRoll (#6245) 2022-02-09 11:51:32 +09:00
Hyunjin Song
b2057aee0f Merge branch 'master' into groove 2022-02-05 14:54:42 +09:00
Hyunjin Song
877a93198f MidiOss: Fix a typo which breaks build 2022-01-29 15:48:23 +09:00
nia
31aac6265c midioss: Use unbuffered I/O to access the device node. (#6276)
This fixes problems reading from MIDI devices on NetBSD - the
input blocked until a certain number of notes have been read
rather than returning immediately when a single note is received.
2022-01-29 14:59:48 +09:00
Johannes Lorenz
17b4863a76 More LV2 buf-size features (#6254)
Implement `LV2_BUF_SIZE__boundedBlockLength` and
`LV2_BUF_SIZE__fixedBlockLength`.
2022-01-23 14:44:39 +01:00
Alex
1162856418 Rename TCO to Clip in the clipboard data (#6278) 2022-01-16 05:47:58 +01:00
Alexandre Almeida
7fe2152938 Fix broken data file upgrade (#6279)
Fixes issues introduced in previous commit (55d361fb65),
which affected loading, saving and drag-dropping of clips.
2022-01-15 22:19:34 +01:00
Alexandre Almeida
55d361fb65 Rename TCO and related to Clip (#6226)
This PR renames

    TCO -> Clip
    Pattern -> MidiClip
    *TCO and *TCOView -> *Clip and *ClipView

The savefiles are not yet modified by this PR.
2022-01-14 05:45:21 +01:00
Yashraj Shinde
bf323d2024 Rename FxMixer to Mixer (#6239)
... as decided in #6089 and #5592.

This PR replaces every occurrence of "FX" where "Mixer Channel" is meant.
2022-01-09 08:15:23 +01:00
merrickclay
54fff4ff23 Added check for empty notes vector in shiftPos (#6252) 2022-01-06 23:37:08 +01:00
Martin Pavelek
13e55101f0 Improve spectrum analyzer performance by caching most used computations (#6003) 2022-01-06 12:09:46 +09:00
merrickclay
13e17496dc Updates PianoRoll to immediately reflect note changes in BBEditor (#6242) 2021-12-28 11:12:26 +09:00
SeleDreams
7f666e8071 Fixed issue of build when fpermissive isn't enabled due to an issue of higher pointer size 2021-12-27 10:56:59 -06:00
Lior Merkel
98786dd84f Make preset saving oblivious to mute/solo/muteBeforeSolo states (#6214) 2021-12-27 11:23:19 +09:00
István Szabó
7b1cc36880 Fix spinbox offsets in MIDI tab of instruments (#6235) 2021-12-27 11:11:08 +09:00
merrickclay
f8258253d5 Fix changing LcdSpinBox value changing their init value (#6241) 2021-12-25 13:07:45 +09:00
Ray Redondo
7e2ccc13d6 Run dos2unix (#6198) 2021-12-14 23:13:13 +01:00
Raine M. Ekman
6a716fa5fd Extend denormal protection through DAZ flag to all capable CPUs (#6167) 2021-11-25 14:44:42 +09:00
Alexandre Almeida
eee1a81ff3 Rename "mixer" to "audioengine" on lmmsrc.xml (#6181) 2021-11-20 21:43:32 +01:00
Alex
445b55f0f5 Don't draw position arrow when line is out of view (#6191)
Also hides timeline numbers above the piano keys.
2021-11-20 11:15:07 +09:00
JGHFunRun
99d887610d Fix a bug where the BPM is modulo'd by 256 on MIDI export (#6215)
Also fixes code formatting of the relevant function.
2021-11-09 14:53:31 +09:00
Johannes Lorenz
1dabd75267 Fixes #6186: No segfaults with future lmmsrc.xml version (#6208) 2021-11-05 17:30:27 +01:00
Dominic Clark
3d7ef9fa4f Use modern CMake targets for SDL2 (#6132) 2021-10-05 16:38:11 +01:00
Alexandre Almeida
ca790def76 Fix clip rendering inconsistency (#6182)
* Fix clip rendering inconsistency

* Remove trailing whitespaces
2021-10-05 11:20:57 +02:00
Alex
f16ec9c054 Fix crash when zooming out during knife mode (#6184) 2021-10-05 10:41:36 +09:00
Dominic Clark
e1d5391f22 Fix MSVC architecture detection with non-VS generators (#6175) 2021-10-03 23:45:13 +01:00
Alexandre Almeida
47cddcba75 Split InstrumentTrack (#6176)
Split InstrumentTrackView and InstrumentTrackWindow off of InstrumentTrack
2021-10-02 05:40:01 +02:00
Johannes Lorenz
745dec673d Add missing cstddef include 2021-10-01 22:55:58 +02:00
Levin Oehlmann
f742710758 Macro cleanup (#6095)
Summary:

* `NULL` -> `nullptr`
* `gui` -> Function `getGUI()`
* `pluginFactory` -> Function `getPluginFactory()`
* `assert` (redefinition) -> using `NDEBUG` instead, which standard `assert` respects.
* `powf` (C stdlib symbol clash) -> removed and all expansions replaced with calls to `std::pow`.
* `exp10` (nonstandard function symbol clash) -> removed and all expansions replaced with calls to `std::pow`.
* `PATH_DEV_DSP` -> File-scope QString of identical name and value.
* `VST_SNC_SHM_KEY_FILE` -> constexpr char* with identical name and value.
* `MM_ALLOC` and `MM_FREE` -> Functions with identical name and implementation.
* `INVAL`, `OUTVAL`, etc. for automation nodes -> Functions with identical names and implementations.
* BandLimitedWave.h: All integer constant macros replaced with constexpr ints of same name and value.
* `FAST_RAND_MAX` -> constexpr int of same name and value.
* `QSTR_TO_STDSTR` -> Function with identical name and equivalent implementation.
* `CCONST` -> constexpr function template with identical name and implementation.
* `F_OPEN_UTF8` -> Function with identical name and equivalent implementation.
* `LADSPA_PATH_SEPARATOR` -> constexpr char with identical name and value.
* `UI_CTRL_KEY` -> constexpr char* with identical name and value.
* `ALIGN_SIZE` -> Renamed to `LMMS_ALIGN_SIZE` and converted from a macro to a constexpr size_t.
* `JACK_MIDI_BUFFER_MAX` -> constexpr size_t with identical name and value.
* versioninfo.h: `PLATFORM`, `MACHINE` and `COMPILER_VERSION` -> prefixed with `LMMS_BUILDCONF_` and converted from macros to constexpr char* literals.
* Header guard _OSCILLOSCOPE -> renamed to OSCILLOSCOPE_H
* Header guard _TIME_DISPLAY_WIDGET -> renamed to TIME_DISPLAY_WIDGET_H
* C-style typecasts in DrumSynth.cpp have been replaced with `static_cast`.
* constexpr numerical constants are initialized with assignment notation instead of curly brace intializers.
* In portsmf, `Alg_seq::operator[]` will throw an exception instead of returning null if the operator index is out of range.

Additionally, in many places, global constants that were declared as `const T foo = bar;` were changed from const to constexpr, leaving them const and making them potentially evaluable at compile time.

Some macros that only appeared in single source files and were unused in those files have been removed entirely.
2021-09-30 18:01:27 +02:00
Alex
32b454fbec Speed up SF2 loading (#6075)
* Speed up sf2 loading by removing redundant code

* Comment

* Skip pointless call to loadFile

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>

* Rename updateSampleRate to reloadSynth

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2021-09-25 12:18:29 +02:00
Alex
96369405b4 Color submenu, undoable colors, renaming signals (#6165)
* TCO coloring: submenu, randomize, undoable, renaming signals/slots

* Track coloring: submenu, undoable, renaming signals/slots

* FX color submenu

* Set modified on color change

* Use lambda to update TCOView after track color change

* More renaming, fix memory leak

Co-authored by DomClark
2021-09-24 21:53:25 +02:00
Johannes Lorenz
e0298891e4 clang-format: Prepare plugin descriptor init'ers 2021-09-22 22:46:12 +02:00
Tres Finocchiaro
131b273894 Fix compilation on macOS aarch64 (#6152)
* Fix compilation on macOS aarch64
- Bumps rpmalloc submodule to fix assembly compilation, fix `rpmalloc_thread_finalize()` API change
- Adds aarch64 "/opt" Homebrew prefix (reuse `APPLE_PREFIX`)
* Add detection for non-Intel architectures
2021-09-22 09:28:16 -04:00
Johannes Lorenz
8a9a2fae62 Compile LMMS using C++17
This replaces `set(CMAKE_CXX_STANDARD 14)` by `set(CMAKE_CXX_STANDARD 17)`
wherever it is required.

Additionally:

* raise `CMAKE_MINIMUM_REQUIRED(VERSION ...)` to `3.8` (the minimum
  that supports C++17)
* `stdshims.h` is now unused and thus removed
2021-09-17 18:23:01 +02:00
Dominic Clark
fd18305fba Pull vcpkg quietly on AppVeyor 2021-09-16 13:24:33 +01:00
Hussam al-Homsi
e3044575bc Default to FLAC compression level 5 (#6052) 2021-09-15 17:50:49 +01:00
Alexandre Almeida
770d2498b5 Rename Mixer to AudioEngine (#6127) 2021-09-12 01:00:21 +02:00
Johannes Lorenz
fa407d2530 README: Use CircleCI build passed badge
We do not have build for Travis anymore, but almost all builds are on CircleCI now.
2021-09-11 18:06:57 +02:00
Johannes Lorenz
1ecf0c99d9 Let CircleCI use linux.gcc:18:04 2021-09-11 17:48:07 +02:00
Martin Pavelek
e07861ced3 Support for alternative tunings and keyboard mappings (#5522)
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Martin <martin@sigma.he29.net>
2021-09-09 18:49:24 +01:00
Dominic Clark
ace502f1a5 Eliminate deprecated register keyword (#6133) 2021-08-18 14:42:30 +01:00
Hyunjin Song
46c246a5b0 CreateTempFile: fix wrong variable name
Fix CMake errors with MSVC + CMake < 3.14
2021-08-16 10:21:22 +09:00
Levin Oehlmann
da54109995 Update exprtk submodule to 93a9f44 2021-08-15 15:03:23 +02:00
Hussam al-Homsi
3a39008d0c Fix CMake check for SFC_SET_COMPRESSION_LEVEL (#6054) 2021-07-27 11:10:01 +09:00
Hyunjin Song
5d7692f437 Fix wrong VST pitch after starting LMMS with non-default sampling rate (#6068) 2021-07-27 11:09:26 +09:00
Levin Oehlmann
0abbd6cb79 Remove 'using namespace std;' from some headers (#6076) 2021-07-23 19:16:51 +02:00
István Szabó
660056045c Fix cloning of B/B tracks (#6077)
Co-authored-by: Spekular <Spekular@users.noreply.github.com>
2021-07-22 11:05:57 +09:00
Martin Pavelek
6f8c6dba82 Alias-free oscillators (#5826)
Add a band-limited, alias-free wavetable oscillator option to the
`Oscillator` class. Use it by default for Triple Oscillator.

Savefiles which do not have this feature enabled (e.g. old
savefiles) will be loaded without this feature to keep the sound
consistent.

Original author: @curlymorphic.
Fixed: @he29-net.
2021-07-04 13:14:59 +02:00
cyber-bridge
f8d7fa3b87 Expose Carla parameters for automation (#5846)
A new button called "Params" is added to the Carla instrument window; on press
it will open a new sub-window where Carla parameters can be found, ready for
connecting to a automation-track or controller. The exposed parameters in the
sub-window can be filtered by text and there is the ability to display only
parameters that are connected to a automation-track or controller. When there
are multiple plugins loaded inside Carla, the combo-box inside the (LMMS)
parameters sub-window can be used to switch between parameters of a specific
plugin (Carla).

Notes:

 - Available when compiled with Carla version 2.1 and up.
 - Currently Carla (2.1) will expose a maximum of 110 parameters.
 - The param window state isn't stored yet in a LMMS project, this is still
   TODO.
 - Connected paramters will NOT instantly disappear when they are disconnected
   with the "Show only knobs with a connection" filter enabled. See
   https://github.com/LMMS/lmms/pull/5846#issuecomment-762666428
2021-06-30 19:59:54 +02:00
Spekular
c71e408a82 Preserve FX channel when replacing track (#5957)
* Preserve FX channel when replacing track

* Add comment
2021-06-21 23:19:06 +02:00
Josh Jeppson
37ed247f45 Fix collapsing a directory triggering preview in file browser (#6060) 2021-06-20 12:57:23 +09:00
Dominic Clark
fadf8c611e Fix "invalid macro definition" error in VSCode (#6051) 2021-06-15 15:33:35 +01:00
Spekular
5f32df5ee6 Update freeze/reorg disclaimer
Since we've decided to end the freeze.
2021-06-13 07:12:05 +02:00
Hussam al-Homsi
9f3edd96df Replace some identical function calls with a variable (#6050) 2021-06-12 00:00:23 -04:00
Hussam al-Homsi
0ebe5998d3 Simplify an if-else (#6046) 2021-06-09 13:10:31 -04:00
Hyunjin Song
5b2570def5 Revert "Fix validPattern to check if hasAutomation as well (#5124)" (#6041)
This reverts commit e37f3793f3.
2021-06-06 11:27:58 +09:00
LMMS Service Account
726fae2da3 locale: Update translations 2021-06-04 21:48:38 -06:00
Tres Finocchiaro
fd36713314 Bump swh submodule (#6040)
Closes #5909
2021-06-04 10:35:20 -04:00
Hyunjin Song
b4854f8bdb tests: Fix CMP0115 CMake warning 2021-06-04 10:54:29 +09:00
Alexandre Almeida
aa12b3cc9d Fix CONTRIBUTORS and .mailmap (#6033)
* CONTRIBUTORS: remove duplicates

* Remove ancient address from .mailmap
2021-05-28 14:02:57 +02:00
Barry Cap
26bc101b97 Update README.md with the new logo (#6009)
README.md was showing the old LMMS logo.
2021-05-26 03:53:07 -04:00
David CARLIER
e9f264e37f Gui editors: Use float for zoom precision (#6008)
This fixes build errors with casts.
2021-05-15 17:17:40 +02:00
Roxas
4589004e6c Better colors for pianoroll (CSS) (#5953)
Better color for ghost notes and keys after dynamic drawing was added
2021-05-07 16:50:36 -04:00
Lost Robot
89f0a98e3d Fix interaction between compressor input gain and audition (#5999) 2021-04-27 20:41:23 -06:00
Raine M. Ekman
89fc6c960b Fix JACK MIDI dropping events when two events have the same time stamp. (#5994) 2021-04-24 13:32:38 -05:00
Spekular
ca059446c3 Don't draw BB editor inside Song Editor (#5988)
* Don't draw BB editor inside Song Editor

Currently, a small BB editor is drawn inside the Song Editor at high zoom levels. As discussed in #3060 this is unintuitive and appears broken (I've seen several other reports of this as a bug). This PR removes this behavior.

* Make removal optional
2021-04-23 18:31:03 +02:00
Martin Pavelek
f288137c22 MIDI range MKII (extracted from microtonal PR) (#5868)
* Update MIDI range to match MIDI specification

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Spekular <Spekular@users.noreply.github.com>
2021-04-21 00:29:47 -05:00
IanCaio
fbea78945b Fix bug introduced by #5657 (#5982)
* Fix bug introduced by #5657

	There was a bug introduced by #5657 where reloading a project
and playing it could cause a Segmentation Fault crash. After some
debugging, @DomClark tracked the issue to be likely a use-after-free
being caused by m_oldAutomatedValues not being cleared when the project
was loaded again.
	This commit adds a line to clear the m_oldAutomatedValues map on
Song::clearProject(), which is called from Song::loadProject().
	Now, instead of using a Signal/Slot connection to move the
control of the models back to the controllers, every time the song is
processing the automations, the control of the models that were
processed in the last cycle are moved back to the controller. The same
is done under Song::stop(), so the last cycle models control is moved
back to the controller.
	That removes the need to have a pointer to the controlled model
in the controller object.
	Adds mixer model change request to avoid race condition.

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2021-04-21 00:26:29 -05:00
Spekular
45d73921e2 Split Sample Track classes into separate files (#5987) 2021-04-16 23:00:41 +02:00
Spekular
eb08d79282 Split Pattern classes into separate files (#5986) 2021-04-16 15:52:33 +02:00
Spekular
eb14db54bc Split BB Track classes into separate files (#5985) 2021-04-16 12:45:06 +02:00
Lost Robot
ab41037e0b Improve performance and quality of Sample Track display, and add RMS graph. (#5927)
* Buff Sample Track display performance and visuals, and add RMS display

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2021-04-15 21:59:46 -05:00
CYBERDEViL
4536996cb6 Fix 'Ghost Notes aren't displayed properly after loading a project #5912' 2021-04-15 16:20:46 -05:00
Spekular
760e746514 Split AutomationTrack and AutomationTrackView into separate files (#5983)
Also fixes a newline in AutomationTrackView that codefactor complained about.
2021-04-15 19:38:15 +02:00
Veratil
4bcae1a7cd Fix PianoRoll m_positionLine misalignment on zoom 2021-04-14 22:03:20 -05:00
Veratil
3c4e67c5ae Don't update m_positionLine in paintEvent 2021-04-14 22:03:07 -05:00
Johannes Lorenz
2f17c0da2b Fix/improve includes/fwd decls
Preparation for clang-format. It will shuffle the includes, and this
preparation will prevent errors from that step.
2021-04-04 08:36:00 +02:00
Lost Robot
7ac627da65 Fix Qt deprecated mousewheel delta() functions (#5974)
* Replace deprecated mousewheel delta() function
2021-04-03 14:10:02 -06:00
fschuelke
8d9c7347ba Added message box prompt when user tries to delete track (#5274)
* Added messagebox when user tries to delete track

* Code review refactorings

* Update Track.h

* Changed message box title to "Confirm removal"

* Merge changes from master

* Add option to disable warning

* Default to showing warning if no config found

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Spekular <Spekular@users.noreply.github.com>
2021-04-03 21:18:27 +02:00
IanCaio
c50ff0663d Fixes bug in the AutomationPattern copy-ctor (#5968)
On the AutomationPattern copy constructor, the automation nodes
were copied from the origin pattern but their "owner pattern" pointers
weren't updated.
	Thanks Dom for finding and reporting this bug.
2021-04-02 19:04:07 -03:00
IanCaio
e16dca389e Adds support for local paths and project bundles (#5735)
* Adds a baseDir for the local path

	Adds a new Base for paths called "local:", which will translate to the dir where the currently opened project file is at. In the future this will allow us to make project bundles and make it easier to export and transfer projects to other people without breaking the paths to samples, presets, plugins and others.

* Starts implementing the makeBundle functionality

	For now, to make a bundle LMMS has to be run through CLI with the makeBundle/--makeBundle command, followed by an input file and an output file ('lmms --makeBundle input.mmp output.mmp'). DataFile::writeBundle() is then called. For now, it only saves the mmp/mmpz file normally and also creates a "resources" folder if it doesn't exists. Later it will also manipulate the DataFile so all paths are local and copy all files to the resources folder.

TODO:
	-Remove warnings.
	-Implement the logic to manipulate the DataFile and copy files.

* Starts implementing logic to go through resources

	Starts implementing the logic that will go through all the resources of the project file and add them to the bundle. We use a std::map of QString to std::vector<QString>: The first string is the DOM element tagname that is going to be searched for. The vector of strings holds all attributes this element can have that accesses resources. For now we just print those to the screen.

* Adds logic to copy files and update the project

	The raw logic for creating the bundle is finished. It now copies the resource files and update the project to use "local:" paths to the new file now.
	Now it's a matter of organizing things and adding safety checks for file operation errors basically.

* Makes the writeBundle method more organized

	Improves comments and debugging warnings to make the writeBundle a bit more organized for review.

* Adds a project bundle folder

	Adds a project bundle folder, inside which the bundles will be created. Instead of receiving an output project file name, the makeBundle command now receives a bundle name that will be used as the name of the bundle's folder.
	Uses a typedef for the std::map with the tags and attributes with resources.

TODO:
	- Fix the local: prefix so it works when we don't have the project file open (for CLI usage, or find another way to deal with it).
	- Sanitize the bundle name.
	- Allow overwriting bundles?

* Handles local paths when a project isn't open

	The PathUtil base prefix conversion for "local:" uses the loaded song file name. When we are running the makebundle command from the CLI there isn't a loaded project, so those prefixes aren't converted properly. Now, when there isn't a project open PathUtil will return "local:" again when it tries to convert this base prefix. DataFile can then check if the base prefix is still there, and if it is it knows the conversion wasn't possible, so it does the conversion itself. To do that, a member called m_fileName was added to DataFile, which will hold the file being manipulated if that's where the DataFile originated from, and the local path can be retrieved from it.

* Sanitizes the bundle name

	The bundle name is now sanitized. Since it's going to be used as a folder name, we need to keep the user from giving invalid folder names as a bundle's name. The rules for the name are:
	1) It must start with a word character (either a digit or letter)
	2) It can be followed by any number of letters, digits, whitespaces or hyphens
	3) It must end with a word character (either a digit or letter)

	A Regexp is used to check for the name validity.

* Moves away from projectbundle folder concept

	This commit regresses some functionality. Project bundles will be saved just as any other project, except they will also have the resources folder. It will be up to the user to organize the bundles on their own folders. It's currently not allowed to save a bundle on a folder where there's one already though (if there's a resources folder already). Later it might be allowed to overwrite bundles in that case.
	The projectbundles folder was dropped. The user can save project bundles anywhere in the system.
	The DataFile::writeBundle was removed. It's functionality was merged into the DataFile::writeFile method, by adding a boolean on the parameters defining whether it should be saved with resources. The logic of copying the resource files and changing the paths inside the project DataFile was moved to DataFile::copyResources, making the methods a little bit less dense.

* Adds an option to save project as bundle

	The "Save As" dialog now has an option to save project as a project bundle (with resources), which will save the file as a bundle.

Known bug:
	- Because the "local:" base prefix is translated to the filename from the Engine::getSong(), it breaks when Song::guiSaveProjectAs is called, because that method changes the project name before saving. Urgent fix!

* Fix local: prefix saving bug

	There was a bug where "local:" prefixes weren't resolved properly during saving because Song::guiSaveProjectAs() changed the project name to the destiny file name before saving. This resulted in the local paths using the destination file as a reference. Both Song::guiSaveProject() and Song::guiSaveProjectAs() were rewritten, and now they only rename the project after it's saved.

* Adds a warning message box

	When the user tries to save a project bundle on a folder that already has a project bundle (contains a resources folder) a message box pops up telling the user it's not permitted and that another path should be chosen.

* Removes unused header

	Forgot to remove <QRegExp> header when I removed the code that used it.

* Removes Vestige plugins bundling

	For safety reasons, remove the possibility to bundle VSTs loaded
through vestige. Also runs a safety check during the project being
loaded (Song::loadProject) to check if either Vestige plugins or effect
plugins are using local paths, and abort the project load if so. That is
to avoid malicious code being run because of bad DLLs being shipped with
a project file.

* Extracts code from loadProject to another method

	Extracts code that checks if a DataFile contains local paths to
plugins to another method inside DataFile.

* Removes debug warnings

	Removes warnings previously used for debugging. Improves a
warning message on PathUtil.

* Fixes small bug with error logging

	Fixes small bug, where a QMessageBox was being used to prompt an
error without checking if the gui is loaded first. Now we check for the
GUI and if we are in CLI mode we use a QTextStream instead.

* Saves the bundle in a newly created folder

	Now a folder with the project name is created inside which the
bundle will be saved. This makes the process more convenient.
	Some save errors that previously only triggered qWarnings now
trigger message boxes to warn the user of what happened (using a lambda
function that either shows message boxes or trigger qWarnings depending
whether a gui is present).
	Makes it so saving a bundle doesn't change the loaded project
path, that way the user won't be able to accidentally "Save" over a
bundle which should not be done for now.

* Enhances the name conflict workaround

	Now, instead of replacing the resource names with meaningless
numbers, the bundle save will just append a counter to the end of
filenames that have been repeated.

* Starts addressing Johannes review

* Adds makebundle action to bash completion file

	Adds the bash completion code for the made bundle action.

* Improves safety check on project files

	Now, instead of checking certain XML tags for local paths,
DataFile::hasLocalPlugin() will return true if ANY tag that isn't on the
RESOURCE_ELEMENTS list contains an attribute that starts with "local:".
	The method is now recursive so it can go through all XML tags
during this check.

* Addresses Spekular change request

	Uses basePrefix(Base::LocalDir) instead of "local:" on the
return of unresolved local paths.

* Makes hasLocalPlugins method const

* Replaces literal uses of "local:"

	Instead of using "local:" we are now retrieving the base prefix
from PathUtil, so if we change the prefix on the future we don't need to
replace every mention to it as well.

* Fix some comments on the header and cpp file

* Changes variable on PathUtil to const

	Changes the retrieved pointer to the song object to a const
pointer.

* Leave doxygen comment on CPP file only

	There was 2 doxygen comments for the same method, on the header
and CPP file. The latter was kept since it goes into more details about
the functionality of the method.

* Fix doxygen comment @param

	Fixes the doxygen comment from hasLocalPlugin().

* Remove assert statements

	Some assert statements were being done wrong and are probably
even unnecessary for that piece of code, so they were removed.

* Skips local paths when looking for shortest path

	PathUtil::toShortestRelative() was including the local paths on
the candidate paths, which could lead to a unallowed resource (i.e.:
vst plugin) to be assigned a local path even on a regular save.
	The local paths are now skipped when looking for the shortest
relative path, since they should only be used by the bundle save on the
allowed resources.

* Address Spekular's review

	Changes some of the PathUtil methods to allow a boolean pointer
to be used to return the status of the method, setting it to false if it
failed somewhere.
	Also adds a parameter to toShortestRelative to either allow or
forbid local paths in the search for the shortest relative path.

* Replaces "ok" with "error"
2021-04-02 17:12:16 +02:00
IanCaio
3ab86fa381 Automation Node fine tuning with double-click (Rewrites #5292) (#5923)
Co-authored-by: tecknixia <50790262+tecknixia@users.noreply.github.com>
2021-03-27 23:32:51 -03:00
Andrés
372fe3bdcf Play automation pattern when midi controller connected (#5657)
* Play automation pattern when midi controller connected

* empty line removed

* Improved for clarity

* removed midi specific controller logic

* formatting changes

* comments added

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2021-03-26 20:40:38 -03:00
Lost Robot
3dcae02d86 Upgrade the Flanger effect (#5873)
Updates QuadratureLfo and moves to include/

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dave French <dave.french3@googlemail.com>
2021-03-25 09:34:43 +09:00
cyber-bridge
4a99904ff6 Feature: Pattern import/export (#5891)
* Init

* Suggested changes by @IanCaio, thanks!

* Selecting one file to import is enough.

* Explicit use of TimePos in favour of int where expected, as suggested.

* Make pattern import/export future proof with using DataFile instead of custom code to read/write the pattern file.

* Remove unused/duplicate imports

* Make import/export dialogs file-ext filter consistent.

Co-authored-by: CYBERDEViL <cyberdevil@notabug.org>
2021-03-21 11:40:12 -03:00
Spekular
5ad034ade3 Use MEMBER, not WRITE for mouseHotspot Q_PROPERTYs (#5955)
* Use MEMBER, not WRITE for mouseHotspot Q_PROPERTYs

* Remove now-useless setMouseHotspot methods
2021-03-19 14:22:42 +01:00
Alex
0967ffbc3a Enhanced quantize in PianoRoll (#5946)
* Button with menu has split highlight

* Add menu with more action to quantize button

* Style changes

* Fix CSS length-zero-no-unit warning

* Add combo button to classic theme
2021-03-16 17:42:08 +01:00
Martin Pavelek
17ea61676f Add LcdFloatSpinBox (extracted from microtonal PR) (#5865)
* Add changes extracted from microtonal PR

* Apply suggestions from code review

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Apply suggestions from code review

(adding oneliner spaces)

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Update src/gui/widgets/LcdFloatSpinBox.cpp

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

* Apply suggestions from code review

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>

* Implement suggestions from review

* Reorder constructor parameters, remove old code for cursor movement and hiding from Lcd*SpinBoxes

* Apply suggestions from code review

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Fix right margin width in seamless mode

* Add explanation to border drawing code

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2021-03-15 14:06:48 -03:00
Spekular
8acb9222fd Knife Tool for Sample Clips (Again) (#5524)
* Rebase BaraMGB's Knife
Co-authored-by: Steffen Baranowsky <BaraMGB@freenet.de>

* Draw marker

* Refactoring and shift mode

* Allow resizing

* Add Icon

* Fix stuck marker on RMB, remove unnecessary cast

* Remove redundant line, more const

* Fix

* Review fixes

* Only perform split logic for SampleTCO

* Add unquantizedModHeld function

* missed one

* Don't use copy/paste

* Don't use copy/paste

* More git troubles

* Fix undo

* git dammit

* Cleaner solution?

* Set cursor, add copy assignment to SampleBuffer

* Add TODO comment

* Make it build

* Fixes from review

* Make splitTCO virtual

* Make splitTCO more generic

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Prevent resizing of MIDI clips in knife mode

* Fix move/resize and rework box select via ctrl

* Apply suggestions from code review.

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Don't show inaccurate/useless/empty text float in knife mode

* Addresses Github review

	- Fixes a typo where QWidget::mousePressEvent was being called
inside mouseReleaseEvent.
	- Avoids unnecessarily disabling journalling on the Split
action, since it doesn't require it.

* Revert format changes in Track

* Revert format changes in Track.h

* Revert formatting changes in Track.cpp

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2021-03-12 22:49:54 +01:00
Veratil
266ad8d45e Use lambda for calculating a note's Y position 2021-03-12 10:19:08 -06:00
Veratil
85c1973f30 Fix drawNoteRect misalignments 2021-03-12 10:19:08 -06:00
Spekular
db37fa1eb2 AutomationPattern copy ctor: null check getTrack (#5943)
Prevents a segfault when attempting to copy construct an automation pattern with no track. Thanks to SeleDreams, Veratil, Dom.
2021-03-11 11:49:32 +01:00
Lost Robot
459948f8cd Add Compressor effect to LMMS (#5458)
* Add Compressor effect
2021-03-10 23:17:32 -07:00
SeleDreams
00ac4f58f5 Added a null check before checking the flag of an instrument 2021-03-07 21:11:04 +01:00
IanCaio
7aa30c4ecc Fix small bug on #5848 (#5933)
m_gridMode was not being initialized on the PianoRoll
constructor. For that reason the first note drag without changing the
GridMode would result in m_gridMode being used unintialized and neither
the Snap nor Nudge mode being used. Here, the result of this was a note
being moved unquantized.
	This fixes it by calling changeSnapMode() after setting up the
snapModel on the constructor.
2021-03-06 06:42:20 -03:00
rghvdberg
ea295c4ee8 Pianoroll: nudge/snap while dragging notes (#5848)
* pianoroll: nudge/snap while dragging notes

combobox for switching behavior
old behavior (nudge) is default

* snap note start or note end to nearest grid line

* fix member variable name

* change default width of pianoroll

* remove trailing white space

* use mouse position instead of m_draggednote

* Uses enum instead of text for GridMode selection

	To avoid problems with translations breaking the conditional,
PianoRoll::changeSnapMode now uses the value of the ComboBox model,
casted to the GridMode enum instead of the text.

* Fixes last code style issues

	A few code style issues were left, those are fixed in this
commit.

* Removes forgotten comma on enum

	Since the last enum value was commented out, there's an
unnecessary comma left that was removed.

* Rewrites some of the grid logic

	Separates Nudge logic and Snap logic more explicitly.
	Avoids recalculation of mouse conversion to time line ticks.
	Disables shift resizing for Snap mode.
	Removes unnecessary range checks.
	Fixes bug with note key boundary checks (which is present in master).

* Make noteOffset an int instead of TimePos

Co-authored-by: Ian Caio <iancaio_dev@hotmail.com>
2021-03-05 09:38:33 -03:00
Alex
5d366ef06f 4 new note modification tools (#5857)
* Add new note length modification tools

* "Last" instead of "latest"

* Code formatting

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>

* Fix sort

* Fix incorrect cut of last note

* Fix Fill not stretching last note to end

* Fill from end positions

* Rename limitNoteLengths

* Compare with non-selected notes when filling

* Style changes by IanCaio + bugfix

* break instead of continue

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2021-03-05 09:31:27 -03:00
IanCaio
e880e3cb2a Changes AutomationPattern to use nodes instead of raw float values (#5712) 2021-02-28 06:48:15 -03:00
cyber-bridge
05de59c085 Feature: PianoRoll Knife (#5845)
* Initial PianoRoll razor feature

* Restore PianoRoll edit mode after focusOut and in razor mode.

* Show changes directly after cut.

* Fix hanging note after adjusting vol/pan with razor action.

* Extract the split action to a separate method

	This PR addresses some suggestions from a review, the most
important ones being:
	- Extracting the note split action to a separate method, called
Pattern::splitNotes
	- Removing getMouseTickPos method
	- Adding a variable that holds the current razor position and a
method to update it (quantizing if CTRL is not pressed)
	- Using [this] to capture "this" on the lambda function instead
of [=], since the latter doesn't work as intended from C++20 forward
	- Fixing some code style and adding comments

* Removes an extra call to noteUnderMouse

	By removing "&& noteUnderMouse()" from the mousePressEvent
conditional, we avoid an extra call to noteUnderMouse. The only
difference in the behavior of the tool is that now clicking on a place
that doesn't have a note will exit Razor mode.

* Style change suggested by @russiankumar

* Cancel razor action on SHIFT release.

* Make razor cut-line (color) themable.

* Add razor cut-line color to classic theme style.css

* Rename razor to knife.

* Change pixmap from razor to knife (from https://github.com/LMMS/lmms/pull/5524)

* Remove SHIFT behavior.

* Change knife shortcut to SHIFT+K

Co-authored-by: CYBERDEViL <cyberdevil@notabug.org>
Co-authored-by: Ian Caio <iancaio_dev@hotmail.com>
2021-02-26 17:17:16 +05:30
salilra
1534e90a39 Check MidiJack::m_jackAudio before using (#5907) 2021-02-13 18:13:28 +01:00
liushuyu
ed4df52d86 Support HTML markup for knob labels (#3134)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2021-01-28 15:27:13 +09:00
Thomas Mueller
4107bc02b9 Double check for correct normalization 2021-01-23 14:03:37 +01:00
Oskar Wallgren
04d696a1e9 Fix possible noise when normalizing bitinvader 2021-01-23 14:03:25 +01:00
Alexandre Almeida
e900576dbd FifoBuffer adjustments (#5803) 2021-01-23 13:52:36 +01:00
Deena
1744fd7dc1 Fix MP3 stereo mode doesn't match to the selection in export dialog (#5890) 2021-01-23 12:09:18 +09:00
Ray Redondo
ca17641059 Fix 32-bit winegcc call on Linux when using LLD (#5878) 2021-01-10 13:28:54 +09:00
the-bebop
f7fbb9aa16 Use case insensitive alphabetical sort in tree-browsers (#5875)
* sort items in tree-browsers caseinsensitively in alphabetical order
2021-01-07 16:29:53 +01:00
Deena
24761a4f77 Fix the unit of Bitcrush Output clip level from % to dBFS 2021-01-02 11:53:44 +09:00
Oskar Wallgren
d769459764 Arpeggiator - Note repeats (#5784)
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2021-01-01 14:43:46 +01:00
Oskar Wallgren
aa02a21541 FPE debug - Disable FE_UNDERFLOW
FE_UNDERFLOW gives a fair amount of hits with LMMS but is of lower
importance than the other tests and slows down debugging considerably.
Commenting out for the time being.
2020-12-30 12:50:49 +01:00
Hyunjin Song
a058047375 Revert submodule changes in a5dc3fee6a 2020-12-30 10:47:03 +09:00
Spekular
bf7c87de7e Fix rule of three for SampleBuffer, SampleTCO (#5727)
* Automatic formatting changes

* Add copy constructor and assignemnt to SampleBuffer

* Add copy constructor to SampleTCO

* Delete SampleTCO copy assignment, initial work on SampleBuffer swap method

* SampleBuffer: Finish(?) swap and use it for copy assignment, lock for read in copy constructor

* Don't forget to unlock in copy assignment!

* Formatting changes

* Lock ordering in swap

* Fix leak and constness

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>

* Fix multiplication style, ensure lock is held when necessary

... by switching from an initializer list to manual assignments.

* Fixes from review

* Avoid more undefined behavior

* Update src/tracks/SampleTrack.cpp

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2020-12-29 23:01:41 +01:00
Alexandre Almeida
67a5da8c89 Workaround for SDL race condition (#5815) 2020-12-27 02:11:06 +01:00
IanCaio
8655d50bb2 Fixes bug with pasting of TCOs (#5840) (#5847)
* Fixes bug with pasting of TCOs (#5840)

	TimePos::quantize works for negative values, but ends
up snapping the TCO to the opposite direction. This is because the
snapping happens in the direction of the origin, which is left for
positive values and right for negative values.
	That wasn't accounted for in the pasteSelection method
and we ended up with wrong positions when pasting before the
TCO(s) we copied.
	This PR fixes the issue by ensuring that we snap in the same direction when halfway through an interval, regardless of negative or positive offset.

* Fixes a calculation on TimePos::quantize

	Since we are working with integers, using "offset /
(interval/2)" would be problematic if interval was odd. We instead
multiply both sides by two and use "(2 * offset) / interval" to obtain
the result for snapUp.
2020-12-25 13:28:49 +01:00
Hyunjin Song
a5dc3fee6a Fix some Wine detection errors 2020-12-25 12:43:17 +09:00
zserik
eeec3f8664 Fix compilation with 'AUDIO_PORT_SUPPORT' defined (#5841)
Co-authored-by: PhysSong <tteu.ingog@gmail.com>
2020-12-21 19:05:33 +09:00
Hyunjin Song
53b2a33c88 Fix Homebrew updates on CircleCI
Update Hombebrew manually to avoid errors with shallow clones.
2020-12-19 12:27:05 +09:00
Spekular
3eabaabe19 Update knob graphic no matter how small change is (#5850) 2020-12-16 02:45:52 +01:00
Spekular
09ee5c7f1f Fix #5840 (#5844)
If copying to another track, allow same start and end position.
2020-12-13 16:40:57 +01:00
IanCaio
3d7d0051f3 Adds feature to merge Instrument Track patterns (#5700) 2020-12-12 11:33:45 -03:00
Alexandre Almeida
28ee260e28 Mixer refactor (#4894)
Co-authored-by: Kevin Zander <veratil@gmail.com>
2020-12-11 10:46:03 +09:00
Oskar Wallgren
2cb797353b Blacklist some calf plugins
Plugins broken, crash on sound.
See: https://github.com/calf-studio-gear/calf/issues/278
2020-12-10 03:52:22 +01:00
Spekular
d3cd704396 Temporary PR-Freeze message 2020-12-08 15:55:43 +01:00
Alexandre Almeida
040fb48867 Update code style for BBTrackContainer (#5812) 2020-12-08 00:25:00 +01:00
Johannes Lorenz
2f66449092 Implement Lv2 Options (#5761)
Implement `LV2_OPTIONS__options` feature and some buf-size properties.

The code currently assumes that the LMMS buffersize never changes, which
is currently true in the LMMS code base.
2020-12-08 00:12:04 +01:00
IanCaio
cd2366a21c Fix style on "SampleBuffer.cpp" and "SampleBuffer.h" (#5791)
Fix code style issues in the `SampleBuffer` class.

Remove strange comments around "not an Ogg Vorbis file"
warning.
2020-12-07 23:09:34 +01:00
Kevin Zander
118d63bada Change abs to std::abs (#5831)
This prevents GCC 6 from raising an ambiguous call error.
2020-12-07 22:42:05 +01:00
IanCaio
53a733ba66 Fixes bug where clicking on the Activity Indicator doesn't play a note (#5824) 2020-12-07 17:11:41 -03:00
Hyunjin Song
3ad0462d44 Fix too small height of the carla instrument window (#5829) 2020-12-07 13:55:50 +09:00
Alexandre Almeida
b701e82e3b Split Track.cpp and Track.h (#5806) (Fixes #5592) 2020-12-04 02:47:16 +01:00
Johannes Lorenz
ddf69feebc Lv2: Fix overflow and enum visualization
* Fix arithmetic overflow in `Lv2Ports::Meta::get()` in case min and
  max are not set
* Fix combo boxes with >16 values being wrongly visualized as knobs
* Rename `Lv2Ports::Vis` enum value `None` to `Generic`
2020-12-03 06:10:30 +01:00
Dominic Clark
827d44be32 Ensure file opened successfully when loading sample (#5816) 2020-12-03 01:31:03 +00:00
IanCaio
3c36365afa Adds support for MIDI CC events inside LMMS (#5581) 2020-12-01 22:27:37 -03:00
Dominic Clark
4f74151f00 Fix export when rendering looped section multiple times (#5814)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2020-12-01 19:38:04 +09:00
Hyunjin Song
9f0dc0fb1b Work around build failures for tests on macOS >= 10.14
This one should be removed once we export the include directory for lmms
to tests properly.
2020-12-01 19:36:17 +09:00
Hyunjin Song
d6b9853426 Tests: use C++14 as well as LMMS 2020-12-01 19:34:33 +09:00
Hyunjin Song
d73ede58a3 Remove instrument track window caching to fix related bugs (#5808) 2020-12-01 11:03:58 +09:00
Hyunjin Song
aff2ebcce0 Update CIs to macOS 10.14 and XCode 10.3 2020-12-01 11:01:39 +09:00
Hyunjin Song
c49ca376bf Fix crash on OGG export with Qt >= 5.10 (#5813) 2020-11-30 16:48:26 +09:00
Alexandre Almeida
6e081265ba Rename MidiTime to TimePos (#5684)
Fixes #4866
2020-11-29 19:46:13 +01:00
Johannes Lorenz
a2e71c81de Lv2: Use port-property "logarithmic"
This also adds more min/max checks, mostly for logarithmic scales.
Since this raised some warnings for logarithmic CV ports, the CV
metadata is now also read (but CV ports are still not supported).
2020-11-29 11:26:08 +01:00
Johannes Lorenz
7a85b4d547 Lv2Manager: Print issues uniq-ed 2020-11-29 11:26:08 +01:00
Hyunjin Song
f7128700b4 Ensure instrument window resize correctly on instrument changes (#5797) 2020-11-28 15:15:28 +09:00
Oskar Wallgren
ee7175be75 Bitinvader - Fix saving with automation and division by 0 (#5805)
* Prevent division by 0 in bitInvader::normalize().
* Save and load whole wavetable on save/load and also clear wavetable
before loading a new one.

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Spekular <Spekularr@gmail.com>
Co-authored-by: thmueller64 <64359888+thmueller64@users.noreply.github.com>
2020-11-27 16:42:23 +01:00
Dominic Clark
246b822a6f Rework Song::processNextBuffer (#5723) 2020-11-27 13:46:06 +00:00
Hyunjin Song
9ca5497202 Improve STK rawwave path detection (#5804) 2020-11-27 11:53:42 +09:00
thmueller64
1949f93f10 Add checkboxes for selecting user and factory content (#5786)
Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Kevin Zander <veratil@gmail.com>
2020-11-26 22:25:32 +00:00
Dominic Clark
571c425f4a Support multiple instrument subplugin categories (#5801) 2020-11-24 23:55:10 +00:00
Spekular
ed9abe58c6 Add option to continue sidebar previews when mouse released (#5787)
* Add option to continue sidebar previews when mouse released

* Cancel non-sample previews regardless of setting
2020-11-24 21:49:54 +01:00
IanCaio
8d4bcd7105 Fixes bug on SampleBuffer::decodeSampleSF (#5796)
As requested, this PR extracts the bug fix from #5971. More
details about the bug on the mentioned PR page, but basically the
variable sf_rr was declared with the wrong type causing the conditional
that checks for errors on the loading to return true even when there
were no errors (only noticeable with DEBUG builds).
	This renames the variable and uses the correct type.
2020-11-23 04:18:17 -03:00
David CARLIER
b00adeadc5 annotate Track::getActivityIndicator implementations as override. (#5798) 2020-11-21 20:04:23 +09:00
Kumar
53b003bc8f Allow SampleTCOs/Sample Clips to be reversed (#5765)
Enable the reverse option from `SampleBuffer.cpp`, and partially change the style and make more readable `SampleBuffer.cpp`.
2020-11-21 09:56:06 +05:30
Alexandre Almeida
83e51ffc45 Remove unused stuff (#5685) 2020-11-20 15:49:15 +00:00
thmueller64
87875a18e3 Fix glitch in undo/redo of note edits via the menu (#5789) 2020-11-19 21:34:08 +01:00
dj-pixus
f26296037a Fixed Stereo Matrix icon (#5792) 2020-11-18 21:28:13 +01:00
Kumar
a42d2d2d70 Color mixer channels if they are made by a colored track (#5780)
Color mixer channels if they are made by a coloured track using the “Assign to new FX channel option.”
2020-11-16 23:02:57 +05:30
Johannes Lorenz
060d0dc5dc Lv2Proc: Check def in [min,max] when creating port 2020-11-15 20:10:51 +01:00
Johannes Lorenz
3a74bad0c9 Lv2Ports: Smash plugins with out-of-bounds defaults 2020-11-15 20:10:51 +01:00
Johannes Lorenz
1c2107f4c6 Fix missing support for lv2core#sampleRate (Fixes #5767)
This multiplies port's min/max value with the processing sample rate
that is used for the plugin. This fixes damaged audio in GLAME
Butterworth High-/Lowpass from #5767.
2020-11-15 20:10:51 +01:00
Johannes Lorenz
48bc9db71d Forbid crashing Calf Analyzer/BassEnhancer 2020-11-15 20:10:20 +01:00
Johannes Lorenz
01f2fa5c29 Introduce blacklisted plugins to Lv2 interface 2020-11-15 20:10:20 +01:00
Johannes Lorenz
7dd6a39366 Introduce blacklisted plugins to core 2020-11-15 20:10:20 +01:00
DigArtRoks
4fb66542a0 Fix for the font of truncated sidebar items (#5714). (#5777)
* Fix for the font of truncated sidebar items (#5714).

For windows platforms, retrieve the system font and set it for the FileBrowserTreeWidget. This makes sure that truncated items will use the font as non-truncated items.

* Add TODO to remove the fix when all builds use a recent enough version of qt.

* Add check on QT version and conditionally include the fix.
2020-11-14 16:45:49 +01:00
IanCaio
28a394413f Fixes bug with cloning Automation Tracks (#5732)
Fixes bug from issue #5595. When cloning an automation track, the IDs from the recently created AutomationPatterns weren't being resolved, causing them to show as disconnected automations.
	This PR fixes the issue by adding a call to AutomationPattern::resolveAllIDs() on the Track::clone() method. It also fixes the code style on that method.
2020-11-14 08:12:24 -03:00
Pause for Affliction
e1d1878108 Fix memory leak that the rpmalloc assert warns of (#5776) (Fixes #5733)
Hack to take care of the assertion sent by the rpmalloc memory manager. Creates a static "free" function for NotePlayHandleManager and then shoves it right before the program ends.

Co-authored-by: Pause for Affliction <47124830+Epsilon-13@users.noreply.github.com>
2020-11-10 12:40:53 +01:00
Spekular
437172a542 Stop sample previews on mouse release or browser focus loss (#5764)
Stop previews on mouse up and focus loss.
2020-11-08 14:09:58 +01:00
DigArtRoks
a6e3958c93 Fix EffectRackView appearance (GUI). (#5766)
* Fix EffectRackView appearance (GUI).

* Elide the name of the effect when it tends to be too big. (#5752)
* Evenly space the controls (W/D, Decay Gate). (#5750)
* Show the scrollbar in the default theme to close the gap. (#5752)
* Reduce the gap between the effect and the scrollbar. (#5757)
* Use always the same width for the EffectRackview (InstrumentTrack and SampleTrack) to avoid gaps or cutoffs of the background.
* Widen the background in the default theme.
* Widen the embossed space in the background in the classic theme to fit the controls.

* Changes for improving the EffectRackView after reviews.

* Reduce the background for the default theme by 1 pixel.
* Reduce the background for the classic theme by 2 pixels and remove the darker line at the bottom right.
* Reduce the width of long names of the plugin also by 2 pixels.
* Put the controls 2 pixels closer to each other.
2020-11-07 15:52:32 +01:00
IanCaio
e2bb606341 Fixes createTCO method on some classes (#5699)
* Fixes createTCO method on some classes

	Classes that inherit from "Track", also inherit the createTCO method. That method takes a MidiTime position as an argument, but except on the class SampleTrack that argument was ignored. That lead to unnecessary calls to TCO->movePosition after creating a TCO in many parts of the codebase (making the argument completely redundant) and even to a bug on the BBEditor, caused by a call to createTCO that expected the position to be set on the constructor (see issue #5673).

	That PR adds code to move the TCO to the appropriate position inside the constructor of the classes that didn't have it, fixes the code style on the SampleTrack createTCO method and removes the now unneeded calls to movePosition from source files on src/ and plugins/. On Track::loadSettings there was a call to saveJournallingState(false) followed immediately by restoreJournallingState() which was deleted because it's redundant (probably a left over from copying the code from pasteSelection?).

* Fix code style issues

	Fixes code style issues on some files (except for ones where the current statements already had a different code style. In those the used code style was kept for consistency).

* Fixes more code style issues

* Fixes code style issues on the parameter name

	Fixes code style issue on the parameter name of createTCO, where _pos was supposed to be just pos. The existing code had the old style and I ended up replicating it on the other methods.

* Code style fixes

	Fixes code style in the changed lines.

* Fixes bug with dragging to negative positions

	There was a bug (already present before this PR) where dragging
a selection before MidiTime 0 would result in some TCOs being placed on
negative positions. This PR fixes this bug by applying the following
changes:

	1) TrackContentObject::movePosition now moves the TCO to
positions equal or above 0 only.
	2) Because of the previous change, I removed the line that
calculated the max value between 0 and the new position on
TrackContentObjectView::mouseMoveEvent when dragging a single TCO (and
added a line updating the value to the real new position of the TCO so
the label displays the position correctly).
	3) Unrelated to this bug, but removed an unnecessary call to
TrackContentWidget::changePosition on the left resize of sample TCOs
because it will already be called when movePosition triggers the
positionChanged signal.
	4) Added some logic to the TrackContentWidget::pasteSelection
method to find the left most TCO being pasted and make sure that the
offset is corrected so it doesn't end up on a negative position (similar
to the logic for the MoveSelection action).
	5) Removed another line that calculated the max between 0 and
the new position on Track::removeBar since it's now safe to call
movePosition with negative values.

* Uses std::max instead of a conditional statement

	As suggested by Spekular, we use std::max instead of a
conditional statement to correct the value of offset if it positions a
TCO on a negative position.
2020-11-07 13:54:04 +01:00
Spekular
2a025c5428 Bump version to 1.3.0-alpha 2020-11-03 13:13:59 -05:00
Oskar Wallgren
c39690d8e0 Arpeggiator - Cut off trailing short notes (#5523)
Prevent triggering of extra notes at the end by not counting trailing
notes shorter than one fifth of the notes arp_frames. This value
being arbitrarily found by trial and error.
2020-11-02 18:36:49 +01:00
IanCaio
f56cf60578 Adds missing initializer to DataFile.cpp (#5739)
The third constructor from DataFile was missing an initializer for the file version variable.
2020-11-01 18:56:36 -03:00
Tres Finocchiaro
afd037eaec Add CMT Submodule (#5755)
Switch ladspa CMT plugins to submodule
2020-11-01 00:37:38 -04:00
Dominic Clark
615d36b08b Support LV2 with MSVC (#5730) 2020-10-31 13:28:18 +00:00
firewall1110
6a78d8d535 An extra set of parenthese to fix warnings/errors (#5754) 2020-10-31 09:41:13 +09:00
Tres Finocchiaro
dc78b15a03 Add Windows JACK support (#5716)
Add Windows JACK support
Also adds JACK as a submodule
2020-10-30 16:57:20 -04:00
thmueller64
2d51eaef3d Theming of disabled knobs (#5549)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2020-10-30 21:52:32 +01:00
DigArtRoks
69a35b58d3 Fix more background colors of selected text (#5687) 2020-10-30 14:51:04 -04:00
Tres Finocchiaro
9d104b2205 Switch Sid to submodule (#5724)
Also refactors to TitleCase, uses newer SID namespace
2020-10-30 13:34:15 -04:00
firewall1110
435dbc5e00 Fix crash/freezing after rendering when using soundio/JACK (#5681) 2020-10-30 13:16:27 +09:00
Frank Lyder
ec2e854a47 Fix AppleMIDI crash when deviceName or endPointName is null (#5729) 2020-10-30 10:57:15 +09:00
Tres Finocchiaro
c23c1b79d5 Add Carla support for Windows (#5713) 2020-10-29 01:06:34 -04:00
Tres Finocchiaro
090b5a7752 Fix DMG titles > 27 chars (#5741)
Workaround upstream bug https://github.com/LinusU/node-appdmg/issues/48
2020-10-28 17:20:12 -04:00
IanCaio
5864aea3d3 Fixes bug with cloning Automation Tracks
Fixes bug from issue #5595. When cloning an automation track, the IDs from the recently created AutomationPatterns weren't being resolved, causing them to show as disconnected automations.
	This PR fixes the issue by adding a call to AutomationPattern::resolveAllIDs() on the Track::clone() method. It also fixes the code style on that method.
2020-10-25 09:59:39 -03:00
Johannes Lorenz
7808e0b92f Lv2 Fix invalid memory access if plugin did not load 2020-10-24 17:28:44 +02:00
Johannes Lorenz
5d0340f6ae Fix undefined Lv2Ports::Audio::m_optional after 3fa4b98 2020-10-24 17:28:37 +02:00
Kumar
f5d0524b16 Enable track-wide color coding (#5573)
* Enable track-wide color coding

* Add support for automation tracks

* Allow saving & loading track colors

* Allow track color to be reset to default

* Partially migrate common settings to Track.cpp, fix bug

* Completely migrate local TCO color functions to TCO class, fix bug

* Set QColorDialog colors to better colors

* Color the side of the track according to TCO colors

* Disable color gradient when muted

* Change selection color to depend on TCO color

* Fix breaking builds

* Bug fix

* Fix another bug where BB track colors wouldn't load

* Restore changed demo to original state

* Fix BB Editor bug

* Fix breaking builds

* Allow random color picking

* Fix copy-paste bug

* Change how color is painted on a track

* Cleanup, and implement per-pattern colors

* Cleanup comments

* Migrate some functions

* Remove redundant function

* Rename some functions

* Migrate duplicates to superclass

* Use ColorChooser and reorder some includes

* Change how colors are saved

* Fix some formatting

* Fix some code

* Change how clip colors work

* Fix some unexpected behaviors

* Fix note border coloring being green on colored tracks

* Change name of an option

* Remove redundant code

* Fix ghost changes

* Remove colorRgb

* Rename backgroundColor, remove some variables we don't use

* Remove a redundant variable

* Migrate some duplicates to superclass

* Check for nullpointer

* Remove redundant variable

* Update some logic

* Change how muted colors are displayed

* Change how dark muted tracks become

* Place setModified() in appropriate places

* Make getColorForDisplay() function

* Change how colors are organised and saved

* Remove m_useStyleColor

* Remove a comment

* Quick changes

* Change how colors are saved

* Remove redundant stuff

* Remove redundant stuff pt. 2

* Change how colors are copied

* Fixes pt. 3

* Fixes pt. 4

* Change spaces to tabs

* Fix pseudochanges

* Remove s_lastTCOColor

* Fix pseudochanges pt. 2

* Fix breaking builds

* Add files via upload

* Add comments (again)
2020-10-20 19:26:22 +02:00
Johannes Lorenz
8b2902c27a Enable Lv2 Atom ports
All Atom ports are now being created and connected. Currently only MIDI
input ports are supplied with data.

Major contribution to #562 ("lv2 support").
2020-10-20 10:36:22 +02:00
Oskar Wallgren
acd0e4d430 Feature: Glue notes (#5721)
Tool to glue selected notes together. Selected notes that are
adjacent to each other or overlapping are transformed into one note
stretching over the combined notes on/off times.

Key command: <Shift> + G

Partially fixes: #746 which is part of #4877

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
Co-authored-by: Spekular <Spekularr@gmail.com>
Co-authored-by: Kevin Zander <veratil@gmail.com>
Co-authored-by: Oskar Wallgren <oskar.wallgren13@gmail.com>
2020-10-19 22:18:21 +02:00
dj-pixus
4c559b91f8 Modifying factory presets to sound more friendly. (#5529)
Modified some factory presets to sound more friendly.
2020-10-19 13:42:39 -04:00
Johannes Lorenz
0d89d64f49 Implement unused Lv2UridCache 2020-10-18 15:09:18 +02:00
Johannes Lorenz
9db671c7ae Refactor writing MIDI events to buffers
This moves out the code from the carla plugin into the core, because
this code will be re-used for Lv2 MIDI handling soon.
2020-10-17 20:56:05 +02:00
IanCaio
b64fe8e7c0 Refactor Clipboard methods (#5627)
* Moves mimeType from StringPairDrag to Clipboard

* Simplifies decodeKey and decodeValue methods

* Adds method to copy a string to clipboard

* Adds method to copy a string pair to the Clipboard

* Adds convenience methods to Clipboard.h to retrieve the QMimeData from the clipboard and checking whether a particular mime type format is present on it

* Uses only the TCOV copy/paste methods on the song editor
To keep consistency on the behavior of the TCOV copy and paste operations, we now only use the TCOV::copy() and TCOV::paste() methods for copying both individual and multiple TCOs.

* Removes obsolete TrackContentObject::cut() and merge copy() and paste() methods to single function TrackContentObject::copyStateTo()

* Adds Clipboard::getString method to get data for particular mime type

* Makes AutomatableModelView.cpp use the Clipboard class instead of calling Qt clipboard directly
2020-10-10 15:17:25 +09:00
Firepal
892aec318d Specify DirectConnection for a few plugins (#5695) 2020-10-08 14:42:34 +01:00
Dominic Clark
8c63582ee3 Don't reload sample from disk when reversing (#5701) 2020-10-07 13:37:08 +01:00
Johannes Lorenz
c58c781f93 Update remote and version of submodule rpmalloc (#5696)
This PR updates the remote URL and content of rpmalloc.

Fixes #4752
Fixes #4806 (assumably)
Helps #5694

You must now run
```
git submodule sync --recursive
```
once to reflect this change.
2020-10-06 01:00:58 +02:00
Johannes Lorenz
3fa4b98a9e Remove redundant LV2Ports::Audio::m_optional
The same info is already stored in the `Lv2Ports::Meta` base class.
2020-10-04 21:59:27 +02:00
Johannes Lorenz
b558865ca4 PluginIssue: Add too MIDI in/out channels 2020-10-04 21:59:15 +02:00
allejok96
8939b149e3 Add insert/remove bar buttons in Song editor (fix #5602) 2020-10-04 16:01:35 +02:00
Johannes Lorenz
783db3e457 Remove unused make_shared from stdshims.h 2020-10-04 15:25:41 +02:00
Johannes Lorenz
16db33f2bf Use STL version of std::make_shared now
As all is compiled with C++14 now, no need to use `std::make_shared`
from stdshims.h now.
2020-10-04 15:25:41 +02:00
Johannes Lorenz
7e986a8323 Compile LMMS using C++14
This replaces `set(CMAKE_CXX_STANDARD 14)` by `set(CMAKE_CXX_STANDARD 11)`
wherever it is required. Wherever it is superseded by parental
`CMakeLists.txt`, this command is now removed.
2020-10-04 15:25:41 +02:00
David Carlier
4efe0c842e Haiku build fix.
related to ringbuffer, matching cmake settings to disable mlock for this platform.
Haiku does not support tls model as well.
2020-10-04 14:49:34 +02:00
Spekular
109a7c4735 Keyboard shortcuts to preview/add sounds from sidebar (#5427)
- Extract file item preview start and end into new methods `previewFileItem` and `stopPreview`.
- Add event handlers:
  - `keyPressEvent` to allow auto preview (on up/down arrow navigation), manual preview (space), and send to editors (enter)
  - `keyReleaseEvent` to end previews when preview key is released
  - `hideEvent` to end previews when switching sidebar tab or hiding sidebar
- Functions that operate on a `FileItem` now take it as an argument instead of using a member variable
- `getContextActions` provides menu items for sending clips to the song editor and BB editor with minimal duplicate code
- Some formatting changes in affected code
- Replace many instances of `NULL` with `nullptr`
2020-10-03 21:31:13 +02:00
Shmuel H
e5f1007ebb SampleTrack: Fix TCO not being played on the first tick (if it starts on
tick 0)
2020-10-03 14:13:33 +09:00
thmueller64
89b13280de LB302: Use consistent cutoff frequency on mulitple sample rates (#5618) 2020-10-03 14:05:55 +09:00
Spekular
cc87dfbb52 Fix relativeOrAbsolute bug with baseQDir in PathUtils.cpp (#5689)
* Fix relativeOrAbsolute bug with baseQDir in PathUtils.cpp

If `base` is `Absolute`, `baseQDir(base)` will point to the working directory. It will result in undefined behaviors.

To fix this, update relativeOrAbsolute to explicitly return an absolute path when the target base is Absolute. Also make baseQDir return QDir::root() for Absolute base instead of QDir(""), because the latter represents the working directory.

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2020-09-30 11:26:58 +02:00
Veratil
31f79a2263 Add auto-highlight scale and key selection 2020-09-29 21:55:07 -05:00
Johannes Lorenz
173b1fadf8 Improve control flow in Lv2 classes
No functional change
2020-09-28 19:22:42 +02:00
Johannes Lorenz
e7adcbd847 Update ringbuffer submodule 2020-09-27 18:54:47 +02:00
Johannes Lorenz
6546857d21 Move or remove unused slots 2020-09-24 17:59:07 +02:00
Johannes Lorenz
c3c80159fd Add missing include 2020-09-24 17:59:07 +02:00
Johannes Lorenz
454e047291 Add lv2 packages to macOS CI 2020-09-24 17:59:07 +02:00
Spekular
9e401828aa Don't give clips a hidden default name (Fix #5528) (#5621)
* Automatic formatting changes

* Give clips an empty name by default, display all names

- Stop giving clips the same name as their parent track on creation
- Stop hiding clip names that match the parent track name
- Never rename clips on track rename
- Never clear clip name when a clip is copied to another track
- Create an upgrade routine to clear default names from old projects (< 1.3.0-alpha-1)
- Bump version to 1.3.0-alpha-1

* Revert now-unnecessary version bump

* Merge with master and fix conflicts

* Formatting changes from review

* Change weird for loop conditions

* Properly revert AutomationPatter.h changes

* Only clear names that match our parent track, be more generous with use of legacyFileVersion

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2020-09-21 16:50:55 +02:00
Johannes Lorenz
6d160fd773 basics: Change sampleFrame to use std::array (#5536)
... in order to make standard containers be able to store it. Required for
#5532 (#4899) and the recording PR.

This includes:

* removing the `LocklessRingBuffer<sampleFrame>` specialization
* passing samplerame in `StereoDelay::tick` as a reference

Additional cleanups:

* removing already unused typedef `sampleFrameA`
* add some `const_cast` to make code more readable
2020-09-21 09:04:44 +02:00
DigArtRoks
2f37281d02 Fix for Mixer volume percentage labels are off by a factor of 100 (#5661)
Add m_conversionFactor to the AutomatableModelView. This factor will be applied to the model->value when displaying
it in the contextmenu of the control for the reset and copy actions. The factor will be applied when copying the value to
the clipboard. When pasting from the clipboard, the value will be divided by the factor.

Remove the model->displayValue() calls when updating the reset/copy/paste action text labels as this gives e.g. in the
Equalizer the wrong action text for the Frequency knobs.

In the Fader class, remove the m_displayConversion variable but rather use the new m_conversionFactor variable.
Rewire the setDisplayConversion() function to set the m_conversionFactor to 1.0 or 100.0.

Faders in FxMixer show now the correct context menu. Copying and pasting values between faders or even volume knobs
in tracks shows consistent behavior. Other faders (like in Eq) show the old behavior.
2020-09-21 09:55:46 +09:00
Spekular
a6d0b460fc Don't define NOMINMAX if it's already defined (#5678)
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2020-09-18 18:48:39 +02:00
Spekular
f6eeaba076 Suppress windows.h's min and max macros, allowing use of numeric_limits's max
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2020-09-18 16:38:42 +02:00
Hyunjin Song
27a9f7711e LadspaManager: Skip empty entries when looking for plugins (#5677)
This fixes crashes when starting LMMS
from specific working directories.
2020-09-18 15:55:44 +09:00
IanCaio
1dab416c6c Improvements to the upgrade routines (#5660)
* First commit

This commit starts the improvements on the upgrade methods. We are going to change both the DataFile and ConfigManager to use separate version values from LMMS release versions, so we can easily bump those versions for new upgrade routines. This first commit starts implementing a new version value for the ConfigManager.

* Change code as per requested on review

	As requested, the "configVersion" method was replaced by "legacyConfigVersion" instead, which is only used to return a configuration version if none is present in the configuration file.
	The configuration version of the current build is stored in a local variable called CONFIG_VERSION, making version bumping easier.
	Uses a switch statement instead of if-else to be able to make use of case-cascading.

TODO:
	- Change the CONFIG_VERSION variable to a unsigned int?
	- Start working on the DataFile.cpp.

* Changes the upgrade logic on DataFile.cpp

	Starts refactoring the upgrade logic on DataFile.cpp. Now the "version" attribute is used to indicate which fileVersion we are loading. If the value of version is "1.0", we have a legacy file and use the legacyFileVersion method to retrieve the integer version using the LMMS version. If the value of version is an integer, we just read it. The integer indicates the position in a list of upgrade methods where we should start from and run the upgrade methods. The file version of the build is held in the FILE_VERSION const on DataFile.h. It HAS TO match the number of upgrade methods that we have on our list.
	One of the versions had 2 upgrade routines (upgrade_1_2_0_rc3 and upgrade_1_2_0_rc2_42). They were merged into a single one (upgrade_1_2_0_rc3) because they were both called from a single version check, meaning that they are both part of a single fileVersion.
	Two fatal errors were added (which can later be improved to show an error messagebox): One if the version attribute doesn't exist, and another one if we are using a FILE_VERSION that doesn't match the number of upgrade methods (to avoid mistakes while coding new upgrades later).

	The configVersion variables and methods were changed to use unsigned int instead of int.

TODO:
	- Make the list of upgrade methods static.
	- Add debug messages for each upgrade routine for testing purposes.

* Make method vector a static const variable

	On DataFile.cpp, we now use the vector list of upgrade methods as a static const variable, so it only has to be constructed once.

* Reorganize vector lists

	Reorganize vector lists so they are more easily readable.

	Revert changes on upgrade method names from ConfigManager.cpp.

* Makes the file version bumping automatic

	The file version bumping on DataFile.cpp is now automatic (using the size of the m_upgradeMethods vector as a reference). FILE_VERSION constant was removed, and with it the qFatal error when it doesn't match the size of the methods vector.

* Improve formatting of version and upgrades lists

	Improves the formatting of the vector lists of upgrade routines and LMMS versions (2 upgrade routines per line and 3 LMMS versions per line).
	Adds a qWarning for every upgrade routine for testing purposes, plus a qWarning that tells the current fileVersion/configVersion when upgrade is called.
	Removes extra space characters after the opening bracket of ConfigManager::upgrade_1_1_91.

* Changes ConfigManager to use a vector of methods

	Changes ConfigManager to use a vector of upgrade methods, just like DataFile. The new Config Version can be calculated automatically now, so the CONFIG_VERSION constant was removed.
	Corrects a small comment on Datafile.h.

* Addresses Dom's review requests

	- Changes legacyConfigVersion and legacyFileVersion from const unsigned int to just unsigned int, since the const is irrelevant in this context.
	- Changes the type alias for upgrade methods to start with an uppercase as per the code style guidelines. Moves the aliasing of the type to the class declaration so it can be used on both the method and on the vector list declaration.
	- Changes the vector list names from m_upgradeMethods to UPGRADE_METHODS, so it's more visible they are a static constant.
	- Move the upgradeVersions list from the legacyFileVersion method to the DataFile class, as an static const called UPGRADE_VERSIONS.
	- Uses std::upper_bound instead of std::find_if for the legacyFileVersion method.

* Uses type alias on vector assignment

	Uses the UpgradeMethod type alias when defining the upgrade methods vector from both ConfigManager and DataFile.

* Removes debugging warnings

	Removes the qWarning() calls that were placed for debugging purposes.
2020-09-18 00:45:46 +02:00
Spekular
9e3f602194 Fix 'Version difference' dialogue showing for differences in patch and lower after semantic versioning PR 2020-09-17 18:44:41 +02:00
Spekular
2bdd835a8a Switch out mailing list for Discord
Because as far as I can tell that's where most of the active devs are available.
2020-09-17 18:24:54 +02:00
Spekular
af328003a0 Use valid Semver versions for pre-releases (#5636)
* Fix ProjectVersion handling of pre-releases

* Add workaround for old, non-standard version

* Attempt to fix versioning

* More consistent comments

* Apply suggestions from code review

- Set CompareType's underlying type to int and revert change to ProjectVersion::compare's parameters
- Add "None" and "All" as names elements of CompareType enum
- Preserve hyphens in prerelease identifiers
- Pad invalid (too short) versions to prevent crashes or nasty behavior
- Compare numeric identifiers to non-numeric ones correctly
- Don't interpret identifiers of form "-#" as numeric (where '#' is any number of digits)
- Add tests to ensure fixes in this commit work and won't regress in the future

* CMAKE fixes from code review

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>

* Remove unnecessary changes to CMake logic

* More const, more reference

* Apply suggestions from code review

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2020-09-17 17:23:35 +02:00
Hyunjin Song
f211c192e8 CircleCI: uninstall python@2 to prevent "brew install" errors 2020-09-16 15:22:03 +09:00
Adam Hartley
37f0d10e0b CircleCI: Bump Xcode version to 9.4.1 (#5675) 2020-09-14 09:51:37 +09:00
Veratil
9eb787c9e8 Update MIDI loading and parsing
portsmf fixes:
* Fix allegro warnings as errors
* Fix msvc missing max. Use MAX macro instead
2020-09-12 23:39:07 -05:00
Veratil
76a182bb95 Update portsmf to latest r234 commit 2020-09-12 23:39:07 -05:00
Dat Ng
3d8b31039f Qt deprecation fix (#5619)
Qt6 TODO: Orientation check by comparing angleDelta().x() and y() won't make sense
because the direction is arbitrary in Qt 6.
2020-09-13 11:09:46 +09:00
Johannes Lorenz
d29066fa83 Add helpful comment 2020-09-12 09:36:38 +02:00
Johannes Lorenz
8a19c2d25e Fix spelling in Lv2 classes 2020-09-12 09:36:38 +02:00
DigArtRoks
5f4d0cab9b Fix for issue #3816 - FM or heavy PM in TripleOscillator makes outputs odd for some target waveforms. (#5651)
The internal waveforms of the class Oscillator produces the wrong amplitude when the input is a
negative phase. When doing PM or FM, negative phases may occur. When a negative phase is e.g. passed
to the the saw sample, it produces values less than -1.0, hence going out of range.

Converted all fraction calls to absFraction calls.

Removed the +2 in the function Oscillator::recalcPhase. The comment here was that it was needed to avoid
negative phases in case of PM. But by converting fraction to absFraction in the waveforms, negative phases
are not an issue anymore. On top of that the m_phase variable gains about 2 extra bits in precision.
As side effect of that, it improves the behaviour of the issue #2047 - TripleOscillator: Oscillators are getting out of sync.
Though I did not investigate it thoroughly over different notes and samplerates.

Add documentation to the fraction and absFraction functions in lmms_math.h as it was not immediately clear by the name what the
functions do. Correct the implementation of the functions in case the flag __INTEL_COMPILER is set. (floorf rounds always down).
2020-09-10 22:47:06 +02:00
Dominic Clark
5efb3a19cb Fix use of translation functions (#5629) 2020-08-30 19:27:17 +01:00
DigArtRoks
9ed41c4927 Fix for Icons and comboboxes mismatch in arpeggiator in Instrument Editor #5494 (#5623)
* Fix for Icons and comboboxes mismatch in arpeggiator in Instrument Editor #5494
(https://github.com/LMMS/lmms/issues/5494)

Introduce a static const int variable for the default height of a ComboBox.
Set this height already in the constructor of the ComboBox object.
Update all modules setting the height of a ComboBox object to make use of the new constant.

* Replace 'const int' by 'constexpr int' after review.
2020-08-17 10:12:49 -04:00
DigArtRoks
1c1575cc86 Change the background color of the selected text in a text box. (#5628)
* Change the background color of the selected text in a text box.
The new background color matches the green background of selected items in a tree view.

* Add selection-background-color for QLineEdit widgets in the classic theme, but keep the color as it was.
2020-08-13 10:18:21 -05:00
Kevin Zander
966f18423f Center vertical scroll position when opening the Automation Editor (#5123)
* Center vertical scroll position when opening the Automation Editor
2020-08-11 10:18:34 -05:00
Spekular
139e492b17 Revert "Replace iterator where possible"
This reverts commit 2fe06c8f3c.
2020-08-11 14:58:54 +02:00
Spekular
2fe06c8f3c Replace iterator where possible 2020-08-11 14:57:27 +02:00
Kumar
1bb8d12e99 Enable mixer color-coding (#5589)
* Enable mixer color-coding

* Cleanup

* Fix warnings

* Improvements

* Improvements

* Use ColorChooser instead of QColorDialog

* Fix default palette being out of range

* Remove a redundant function

* Rename and make stuff efficient

* Comment on the code

* Make things more efficient

* Fix breaking builds

* Improvements

* Improvements pt. 2

* Improvements pt. 3

* Improvements pt. 4

* Improvements pt. 5

* Apply suggestions from code review

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2020-08-11 11:01:58 +02:00
IanCaio
f2887bda68 Improve the context menu actions when multiple TCOs are selected (#5601)
* Starts implementing the feature

The idea of this branch is to allow actions triggered through the context menu of a TCO on the song editor to affect all the selected TCOs. With this commit, only the "Mute/unmute" action affects all selected TCOs, while the others retain their old behavior (only affect the TCO that owns the context menu).

For that, a method was created that processes all actions (the triggered action is parsed as a parameter to the method). In the case of the "Mute" action, it checks if the song editor has selected TCOs, and if it does it mutes/unmutes all of them.

* Allows selected TCOs to be removed too

Now the "Remove" action from the context menu will remove all selected TCOs if there are any.

* Starts implementing selected TCO cut and copy

Now, when multiple TCOs are selected, the context menu actions Cut and Copy will write a DataFile to the clipboard containing the TCO information, so it can later be used to paste it.

The Paste action now checks if there's data in the QApplication clipboard. If there is, it will later paste the TCOs (for now it just prints the data with qWarning). If there's not, it uses the regular TCO paste method that uses the internal LMMS clipboard. Because it now have to decide between the QApplication clipboard and the LMMS internal clipboard, the Clipboard::copy() method now clears anything in the QApplication clipboard, making it empty so LMMS can know it should use the internal clipboard instead in that situation.

Adds safety checks for the selected TCO views.

* Overloads TCW paste selection methods

This commit is a step towards implementing the paste feature of the TCO context menu. It overloads the TrackContentWidget::canPasteSelection and TrackContentWidget::pasteSelection methods so they can be called without having a QDropEvent (only the QMimeData with the copied TCOs information). The overloaded canPasteSelection(MidiTime, QMimeData, bool) method required a third argument which says whether pasting over the same bar should be allowed or not, because it shouldn't when the QDropEvent comes from the same application but should when it doesn't. That is defined in the canPasteSelection(MidiTime, QDropEvent) method.

Also, the pasteSelection(MidiTime, QDropEvent) isn't optimal, since it calls canPasteSelection twice (more details in the comments, but it's basically because the two canPasteSelection methods can return different values depending on the origin of QDropEvent). This could later be fixed by calling canPasteSelection before pasteSelection and removing it from inside the method altogether.

Next step is to add the "tco_" key to the mimeData on the Copy/Cut operations and implementing the paste operation using those methods.

* Adds the TCO type to the clipboard

Adds the key with the TCO type ("tco_" + type number + ":" + TCO Data XML) to the clipboard, so it can be later used by the canPasteSelection and pasteSelection methods.

* Apply changes to "src/tracks/SampleTrack.cpp"

Change the SampleTCOView::contextMenuEvent() method so it behaves the same way as the TrackContentObjectView::contextMenuEvent() method. For that, I had to change the ContextMenuAction enum and the contextMenuAction methods to be protected instead of private, so SampleTCOView can access it.

* Implement the paste action

Now that the canPasteSelection and pasteSelection methods were overloaded, it was possible to implement the paste action using the same logic as the Drag&Drop copy/paste.

Other small changes:
	- Removes the TCO views AFTER creating the TCO data file, instead of before (which probably resulted in an empty data file).
	- Uses the StringPairDrag::mimeType() instead of Clipboard::mimeType() since that's the one the methods from StringPairDrag.cpp recognizes.

* Removes QDebug header

Forgot to remove the QDebug header on the last commit.

* Creates a Context Menu on the TCW for "paste"

Now it's possible to paste a selection of copied TCOs anywhere in the TCW, as long as the rules to paste are met (same rules as Drag&Drop copy/paste). If the rules are not met the "Paste" menu action shows but is disabled.

* Small code refactoring

Saving a few lines of code.

* Avoids double call to canPasteSelection

This commit adds a third parameter to the pasteSelection overloaded method, which will define whether we whould skip the canPasteSelection check. The only situation where we will want to skip it is if we are calling pasteSelection from inside the other pasteSelection method, which will already have checked it. Because of that the default value is false.

Organizes comments as well.

* Separates methods for the actions on selections

Now the remove, copy, cut, paste and toggle mute actions have a separate method for applying them to selections, which are then called from the contextMenuAction method. That made the code more organized and the contextMenuAction method smaller.

Also, the mouse shortcuts for muting and removing (CTRL+middle button, middle button, CTRL+right button) now apply the action on selections as well.

* Fixes small bug and reorganize code

Fixes a small bug where using a mouse shortcut or choosing an action on a TCO that is not selected while other TCOs were selected would result in the selection being affected.

Also reorganizes the code so the conditional for choosing between the selection action and the individual action stays inside the method.

* Move logic to the action methods

Since the methods that called the action+Selection() methods didn't need the list of selectableObjects, I moved it to the inside of the action+Selection() methods and removed the parameter from them.

* Changes logic structure and labels

As suggested by Spekular, the logic structure was changed. Now, the mousePressEvent and contextMenuAction methods determine whether the action should happen to a selection of TCOs or an individual TCO. The list of TCOs to be affected populate a QVector list called "active", which is parsed to the action method that will apply the action to each object in the list.

I changed the method names to removeActive, cutActive, copyActive and toggleMuteActive, since I believe that better describe the behavior. The paste method is still called pasteSelection for now, because the paste behavior isn't related to the active TCOs but to the content of the clipboard.

The contextMenuEvent method on both src/core/Track.cpp and src/tracks/SampleTrack.cpp were changed so they also check if the right-clicked TCO is part of a selection or an individual TCO, and the labels for the actions are changed to better describe the behavior (i.e.: "Delete" for individual TCO and "Delete selection" for multiple TCOs).

* Make removeActive and toggleMuteActive static

removeActive and toggleMuteActive methods are now static so they can be called from anywhere in the code since they don't require a TCO view instance to work. That makes it possible for them to be used in the future if any feature requires this type of action to be called from out of a TCO view instance.

The same couldn't be done for the copyActive and cutActive methods because those require an instance of the TCO view to call them, since when copying to the clipboard some metadata is written using information from the object instance.

* Renamed TCO View paste method

I renamed the TCO View paste method from pasteSelection to just paste, since the TCO view doesn't currently have a paste method (only the TCO class). It's also a name that accurately describes the action: it will paste either a group of TCOVs or a single TCOV on the current TCOV.

I also moved the logic for deciding between the multiple TCOV paste and single TCOV paste inside the paste method.

* Moves repeated code to a new method

This commit adds another method to TrackContentObjectView called getClickedTCOs, which will return a QVector with the TCO views that are supposed to be affected by a context menu action (either the individual right-clicked TCO or the selection of TCOs). Code was updated on the other methods to make use of this new method.

Method names for actions that affect multiple TCOs were changed. Instead of calling them copyActive, cutActive, toggleMuteActive and removeActive, they are just called copy, cut, toggleMute and remove, hence they are overloaded methods for those actions that affect multiple TCOs (their differenciation is the arguments list, which is a QVector list for those).

* Avoid unnecessary calls to getClickedTCOs()

We use a ternary operator inside TrackContentObjectView::mousePressEvent to avoid unnecessary calls to getClickedTCOs when the list is not going to be used.

The contextMenuEvent method on both Track.cpp and SampleTrack.cpp was reformated to use a more appropriate indentation and spacing between method calls.

* Fix indenting in a ternary operator assignment
2020-08-10 17:16:00 +02:00
Kevin Zander
ef961e53de Refactor PianoRoll (#5253)
* Rework PianoRoll paintEvent + some extras
* Split out PositionLine class to own file
* Refactor PianoRoll Q_PROPERTYs
* Reduce code by using Q_PROPERTY's MEMBER function and removing getter/setter functions
  After looking at the getters and setters, they did nothing different than what direct
  access would allow. Nothing outside of PianoRoll used the public functions as well.
  Considering these factors we can reduce the number of functions by 2x the number of
  Q_PROPERTIES, and go with direct access instead.
* Remove need for keyboard pixmaps
  With the recent change to allow zooming vertically, aligning pixmaps is a PITA. Since
  we have themes which can take brushes and colors, it would be simpler to take a solid
  color or a gradient with some extra style properties to resize the keys and text colors.
  While it will slightly be a downgrade from pixmaps since they can be anything really,
  this will allow us to customize the piano roll further moving forward.
* Added the ability to update margins for TimeLineWidget and StepRecorderWidget
  These take a X coordinate, which was hardcoded to WHITE_KEY_WIDTH, and never looked
  back. Now we can adjust on the fly if we need to. Currently this just allows us to
  shift the left margin to the style-defined white key width.
* Fix phantom pixmaps when PianoRoll not focused
* Update PositionLine class changes related to #5543
2020-08-09 18:01:35 -05:00
Johannes Lorenz
7a9b33627d Implement Lv2 Urid feature (#5517)
This includes implementing general feature handling, since this is the first supported feature.
2020-08-09 22:59:37 +02:00
thmueller64
df296b7931 Fix metronome playing when song is paused. (#5612) 2020-08-06 18:36:54 +02:00
pmerry96
b0333b6281 RemoteVstPlugin32: Fix Qt version check with MSVC 2019 + Qt 5.15 (#5607) 2020-08-05 16:49:23 +09:00
IanCaio
639f3a49a3 Changes the behavior of "solo" so it doesn't mute Automation Tracks (#5547)
* Changes the toggleSolo method

- Changes the toggleSolo method so it doesn't mute automation tracks (keeps their original state)

* Stop restoring Automation Track's mute values

- Since Automation Tracks are not affected by enabling solo on other tracks, there's no need (and it's even counter intuitive) to restore their previous mute value.
- Reduces a line by using "else if".

* Saves two lines merging 2 conditionals in 1

* Adds the new solo behavior as a new LED button

To allow the user choosing between the old solo behavior and the new one, a new LED button was added which will be used to enable the solo keeping the automation tracks states, while the red LED will enable the solo with the current behavior.

Changes to the code:
	- Added a purple LED image that will be used on the new button.
	- Increased the default width of the widget that holds the mute and solo buttons so the third one fits.
	- Changed the positioning of the LEDs on both the standard and compact track modes to accomodate them.
	- Added a new model called m_soloAutomationsModel, which is connected to the new LED button (m_soloAutomationsBtn). This will dictate the behavior of the toggleSolo method.
	- The red LED calls the toggleSolo method as before. The purple LED will change the m_soloAutomationsModel value and toggle the red LED, which will then call toggleSolo. But since the value of m_soloAutomationsModel will be different, the new behavior will be used on the method.

* Revert "Adds the new solo behavior as a new LED button"

This reverts commit fdbc8b2712.

After consulting fellow users and devs about this change to the PR, it was decided that adding a third button for the new solo behavior was not the best approach. This reverts the commit so we go back to just changing the solo behavior. Later an option can be added on LMMS settings to choose between the old and new behaviors.

* Adds an option to use the legacy solo behavior

This commit adds an option on LMMS settings (saved to the config file) to go back to the legacy behavior of the track solo button. The option can be found on Settings>General>"Use solo legacy behavior"

Changes to the code:
	- Since there's a change to the configuration file, an upgrade method was created (upgrade_1_3_0) to add the value to the config XML if it isn't already present (safety check).
	- An attribute is added to the DOM structure of the app configuration under the "app" tag, called "sololegacybehavior", which can be either 0 or 1.
	- Changes were made to include/SetupDialog.h, include/ConfigManager.h and src/core/ConfigManager.cpp to implement this new configuration option.
	- The toggleSolo method was changed to behave according to the value of the "sololegacybehavior" configuration.

* Changes the description of the solo setting

Changes the description of the solo setting on the Setup Dialog from "Use solo legacy behavior" to "Mute automation tracks during solo" since the latter is more descriptive and new users wouldn't be confused about what the legacy behavior was.

* Merges "if"s and "if-else"s where possible

A conditional could be merged by using the "||" logical operator and there was a "if" nested inside an "else" that could be merged into a single "if-else".

Very small code format change (keeping code block curly braces in separate lines).

* Uses default value instead of upgrading ConfigFile

Instead of using an upgrade method on the ConfigManager class to set a value to the sololegacybehavior parameter, we now use a default value on every call to ConfigManager::value that requests it.

* Removes repetitive method call

To make the loop more efficient, a local variable was created to hold the behavior of the solo selected in the setup dialog, instead of calling the ConfigManager::value method repeated times.

Observation:

Since no code was added/removed from ConfigManager.cpp, it was restored to its original state. There's however a TAB character in a blank line on line 145, which was there at the beginning of this PR but removed during it. It was written again in this commit to remove ConfigManager.cpp from the "Files changed" list.

* Saves one line of code and adds a comment
2020-08-01 20:03:23 +02:00
Kevin Zander
e37f3793f3 Fix validPattern to check if hasAutomation as well (#5124) 2020-07-29 20:26:20 +02:00
IanCaio
cbb1ec9a56 Removes unused variable on SongEditor.cpp (#5600)
There was a variable declared but unused on the SongEditor.cpp file (method SongEditor::keyPressEvent), called QVector<TrackContentObjectView *> tcoViews. The variable was removed.
2020-07-29 18:58:07 +02:00
Spekular
17565caf53 Improved relative paths (#5117)
* 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>
2020-07-28 17:07:35 +02:00
Rebecca DeField
67f0324ff5 Minor icon updates (#5588)
* Delete clear_ghost_note.png

* Delete ghost_note.png

* Delete loop_points_off.png

* Delete loop_points_on.png

* Updated and recreated icons

* Delete trackop.png

* New track gear icon
2020-07-26 11:14:18 -07:00
Kumar
86306042f5 Set default behaviour of playhead to << instead of |<< (#5591)
* 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
2020-07-24 09:03:25 +02:00
Stefano Bonicatti
dc3e8cab45 Avoid leaking the track grip QPixmap at each paintEvent (#5590) 2020-07-24 10:33:46 +09:00
Cyp
04d8c0db06 Add missing ¹⁄₉₆ quantization (#5304) 2020-07-24 10:33:15 +09:00
Claudius Ellsel
23242b9529 Fix the outer border for the instrument track (#5594) 2020-07-21 18:35:36 +02:00
Kumar
a11fa71b94 Remove Xpressive help maximise button (#5570) (#5586)
* Remove Xpressive maximise button

* Fix grammar errors
2020-07-20 18:38:45 +02:00
LAMCILAK Theo
37d85ef24a Implement portable mode (#5561)
Adds portable mode by creating a file named portable_mode.txt next to lmms
and fixed a typo in the name of the function
2020-07-20 11:39:53 +09:00
Hyunjin Song
5a7ec92cf0 Fix crash on CLI rendering (#5579)
This is a temporary workaround. To make all export options available in CLI,
some properties of TimeLineWidget should be moved to a core class.
2020-07-20 11:38:46 +09:00
Spekular
619b1d67cd Merge pull request #5580 from IanCaio/hotfix/outputChannelBug
Fixes small conflict on a new commit
2020-07-14 09:09:59 +02:00
IanCaio
920ff35745 Fix bug from issue 5562 (#5565)
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.
2020-07-14 11:16:04 +09:00
IanCaio
159861a9a0 Fixes small conflict on a new commit
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.
2020-07-13 22:20:34 -03:00
Spekular
574839f59c Small refactor in FxMixerView and FxMixer (#5577)
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.
2020-07-12 16:32:12 +02:00
IanCaio
3795fdff64 Small refactor on FxMixerView.cpp and FxMixer.cpp
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.
2020-07-12 10:45:39 -03:00
Hussam al-Homsi
d0ef87543d Remove warning color from oscilloscope (#5492) 2020-07-11 18:40:12 -04:00
Kumar
2da0aaa460 Enable LMMS fullscreen and... (long title, read first line of description) (#5563)
* 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
2020-07-11 11:30:27 +02:00
thmueller64
4b4f117add Fix garbage in exported audio caused by resampling (#5552)
This makes AudioDevice::resample return the actual number of generated samples.
2020-07-10 10:58:52 +09:00
Artur Twardowski
9895472efd Removed the excessive margin in instruments' GUI (#5129) (#5171)
* 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
2020-07-09 22:08:05 +02:00
Spekular
e07c78d2fc Better minimum length when resizing notes (#5512)
* 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>
2020-07-09 17:18:57 +02:00
Spekular
afbf80bfcb Refactor deleteUnusedChannels in FxMixerView (#5564)
* 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>
2020-07-09 16:33:54 +02:00
IanCaio
5aba3d2a73 Fix a bug on the "Remove unused channels" command (#5559)
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.
2020-07-07 09:59:34 +02:00
Kumar
fd04efd394 Make Pause hotkey Shift+Space (#5554) 2020-07-06 17:37:27 +02:00
Hyunjin Song
c83c9bf54f Merge branch 'stable-1.2'
# Conflicts:
#	.travis.yml
#	CMakeLists.txt
#	src/core/Track.cpp
2020-07-05 11:27:33 +09:00
Lost Robot
84998a26fd Update LcdSpinBox.cpp (#5555) 2020-07-04 10:48:16 -06:00
Hyunjin Song
94363be152 Bump version to 1.2.2 2020-07-04 20:58:46 +09:00
Hyunjin Song
fde11df89b Update PROJECT_YEAR 2020-07-04 20:39:07 +09:00
Hyunjin Song
24eb2304fd Add a CMake option for deploying Qt translations 2020-07-04 20:39:04 +09:00
Kumar
984fd3a935 Adding a trail (gradient) behind the position bar (#5543)
* 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
2020-07-02 10:26:41 -04:00
Hyunjin Song
c28dbd1835 Update CONTRIBUTORS 2020-06-23 10:45:39 +09:00
Hyunjin Song
c6f8f7b8e7 Travis: stop auto-uploading binary releases 2020-06-23 10:41:24 +09:00
Luna Nooteboom
5d7e6720e1 Automatically assign a midi input device to the selected track (#5499) 2020-06-21 11:17:05 +09:00
Dominic Clark
f56b4963c1 Fix some TCOs not saving properly (#5537) 2020-06-17 23:05:40 +01:00
Spekular
82f413568d Make better use of getSelectedNotes() in PianoRoll.cpp (#5526)
* 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
2020-06-15 09:33:51 +02:00
Spekular
733a4115de Merge pull request #5531 from IanCaio/feature/cloneBBTrackPattern
Adds a button to clone the current BB track pattern inside the BB Editor
2020-06-15 09:32:37 +02:00
IanCaio
b1c1d14601 Changes the clone pattern method name
- 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
2020-06-13 12:14:47 -03:00
IanCaio
503006057c Adds a button to clone the BB track pattern
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.
2020-06-11 01:12:42 -03:00
Hussam al-Homsi
8c7e63b35b Remove macros likely() and unlikely() (#5530)
* Remove macros likely() and unlikely(): https://github.com/LMMS/lmms/pull/5530/#issue-431515330

* Remove only use of macro Q_UNLIKELY(): https://github.com/LMMS/lmms/pull/5530/#issuecomment-641634577
2020-06-09 20:45:45 -04:00
Raine M. Ekman
a05306131b Consolidate error messages while loading project (#5269) 2020-06-04 14:21:30 +09:00
IanCaio
97680e081e Allows instruments to keep the MIDI channel information when forwarding (#5470)
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.
2020-06-02 10:48:34 +09:00
Lukas W
b8a3765cb1 Merge branch 'stable-1.2' into master 2020-06-01 15:19:20 +02:00
Oskar Wallgren
82f9239cd1 24 bit FLAC export. Clip negative side of wave (#5501)
24 bit FLAC export. Clip negative side of wave to counteract a bug in libsndfile < 1.0.29

Co-authored-by: Spekular <Spekular@users.noreply.github.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2020-05-27 18:33:54 +02:00
Spekular
f3032575af Remove stopPlaying connection
Missed this in #5477
2020-05-24 21:02:24 +02:00
Oskar Wallgren
0528a00cca Compensate beat note length when stretching (#5515)
* 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>
2020-05-24 20:59:38 +02:00
Johannes Lorenz
c6a1abe150 Fix #5194: Fix knobs moving too fast (#5360)
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.
2020-05-24 13:35:16 +02:00
Johannes Lorenz
3a985ff1fc Fix #4201: BB editor: adjust cursor position (#5489)
This fixes an offset for cursors whose pointer position varies between
different themes.
2020-05-24 13:20:05 +02:00
Johannes Lorenz
2a66e83f53 Lv2 core implementation
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
2020-05-24 12:50:50 +02:00
thmueller64
d5a2366fc8 Fix #5504: invalid warning 2020-05-23 18:07:35 +02:00
Johannes Lorenz
7aef23d209 LinkedModelGroupView: Un-focus filter edit...
... whenever the user clicks other widgets
2020-05-23 09:00:11 +02:00
Johannes Lorenz
109cdf6cf3 Fix #5483: sf2_player: No crash when file is no soundfont (#5487) 2020-05-21 22:45:01 +02:00
bahaokten
c3e056a21d Implement compress action for commandline use (#5341) 2020-05-19 19:02:01 +02:00
Lost Robot
b6b75a5f21 Divide knob step size by 1000 for LADSPA effects (#4574) 2020-05-19 18:15:03 +02:00
Cyp
8a190e4e13 Fix wrong lengths of exported tracks, when tracks have different lengths. (#5348)
* 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>
2020-05-19 12:28:03 +09:00
necrashter
7f9b4c2401 Implement fade in to prevent Triple Osc from clicking (#5199) 2020-05-19 11:34:54 +09:00
Johannes Lorenz
29a5abc30b Fix Qt 5.15 build issues (#5498)
Add missing QPainterPath includes
2020-05-18 12:58:48 -04:00
Johannes Lorenz
b818234c15 ControlLayout: Allow removing search bar's focus 2020-05-17 09:22:36 +02:00
Ibuki
1e8fcbdf2d Show VST parameter string (#5321) 2020-05-17 11:15:39 +09:00
Oskar Wallgren
953a0b17c1 Song Editor - Delete selected objects with backspace key (#5497) 2020-05-15 19:16:06 +02:00
Johannes Lorenz
737fcd3e55 JackMidi: Remove confusing warning at shutdown
Warning is:

```
jack_port_unregister called with an incorrect port 0
Failed to unregister jack midi output
```
2020-05-15 18:49:55 +02:00
Johannes Lorenz
e3cae80580 Audio/MidiJack: Fix invalid read: (3) of #5408
This atomically unsets the MidiJack reference in AudioJack right before
MidiJack is destroyed. This avoids AudioJack using a destroyed MidiJack
object.
2020-05-15 18:49:55 +02:00
Johannes Lorenz
9e9c5acc17 Audio/MidiJack: Fix invalid read: (2) of #5408
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
2020-05-15 18:49:55 +02:00
Johannes Lorenz
c6d60e982e Audio/MidiJack: Fix invalid read: (1) of #5408
This fixes reading from jack MIDI events in case where
there are no jack MIDI events.
2020-05-15 18:49:55 +02:00
Lukas W
f5ecddbb1f Fix Windows rpmalloc compile flags 2020-05-12 11:43:23 +02:00
Lukas W
dc95f07287 Fix Windows compilation with no gzip available 2020-05-12 11:31:05 +02:00
Lukas W
187f7f58c7 Merge stable-1.2 into master 2020-05-12 11:18:14 +02:00
Hussam al-Homsi
04239bafc3 addStretch() before adding the oscilloscope 2020-05-10 13:29:14 +02:00
Hyunjin Song
23fd4bd05c Forward search paths correctly in INSTALL_TARGET_DEPENDENCIES
Also fixes a typo in cmake/install/CMakeLists.txt.
2020-05-10 10:33:03 +09:00
Hussam al-Homsi
ec37f347de Refactor the oscilloscope (#5488)
* Rename files

* Update code

* Remove unused code

* Make background a member variable
2020-05-09 18:19:17 -04:00
Lost Robot
79511d6004 Decrease Bitcrusher bit depth reduction step size (#5407) 2020-05-09 14:03:34 -06:00
akimaze
ab107f01f9 VST preset preview (#5441)
* Enable vestige presets preview.

* Don't destroy vestige instrument on every preset change.

* Don't reload VST dll plugin when it's not necessary. Always hide plugin UI in preview mode.

* Don't remove other instruments in preview mode, don't send instrument change signal.

* Minor changes

* Add a change I missed

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2020-05-09 13:23:40 +09:00
Kevin Zander
317be01012 Fix #4098 (#5449)
Fixes piano roll crashing when window is scaled too large.
2020-05-07 14:18:15 +02:00
thmueller64
56fbefc700 Fix #5461 and ensure consistent use of check gate (#5475)
* Multiple effects: Calculation of `outSum` should be after D/W mixing
* CrossoverEQ.cpp: `outSum` must be divided by frames in the end 
* CrossoverEQ.cpp: don't overwrite `outSum` in for loop, but increment it
2020-05-06 11:23:40 +02:00
Kevin Zander
1a6f4c1104 Add option to move SideBar to right side of window (#5114) 2020-05-05 11:46:25 +09:00
Spekular
6095bbc762 Merge pull request #5477 from Spekular/SampleIndicator
Sample track activity indicator
2020-05-04 17:11:38 +02:00
tresf
71b6107d9b Remove unwarranted CXX flag
Per https://github.com/LMMS/lmms/pull/4080#issuecomment-623058847
2020-05-03 02:26:57 -04:00
Hyunjin Song
c18edd4cef Use local cursor instead of global one in PianoRoll (#5200)
Fixes stuck vertical cursor as well.
2020-05-03 12:44:30 +09:00
Andreas Müller
f4f10c11fc 3rdparty/cmake: Do not reset CMAKE_C(XX)_FLAGS (#4080)
CMake 3rdparty: Do not overwrite CMAKE_C(XX)_FLAGS

Co-authored-by: tresf <tres.finocchiaro@gmail.com>
2020-05-02 16:55:06 -04:00
Oskar Wallgren
ca09b29087 Select the correct piano key for marking semitones (#5478)
When selecting a Piano Key to mark semitones in the Piano Roll we
select key from the y position of the pop-up menu and not the mouse.
Incidentally these two are most often the same as the menu builds
from the mouse y positon and down. If there is room for it. If there
is no room downward it will create the menu so the lower part of the
frame aligns with the mouse y position.
Fixed by creating a variable to hold the pressed key before creating
the menu.
2020-05-02 16:41:44 +09:00
Spekular
e643f83bc0 Merge branch 'SampleIndicator' of https://github.com/Spekular/lmms into SampleIndicator 2020-05-01 20:04:24 +02:00
Spekular
9ed5f80fe0 Refactor palette update on un/mute 2020-05-01 20:03:27 +02:00
Spekular
0c180b8dc5 Nicer spacing in activity indicator's setGeometry call
Co-authored-by: Kevin Zander <veratil@gmail.com>
2020-05-01 12:27:41 +02:00
Spekular
aaf94ef69d Formatting chananges 2020-04-30 22:07:00 +02:00
Spekular
ae2af96c9a Use nullptr instead of NULL
Requested by Veratil <veratil@gmail.com>
2020-04-30 18:06:06 +02:00
akimaze
c755b56a52 Piano roll vertical zoom (#5442) 2020-04-30 11:22:28 +09:00
Spekular
5821466f18 Fix indicator in BB editor 2020-04-29 21:17:16 +02:00
Spekular
b46ea0e9af refactor 2020-04-29 20:44:09 +02:00
Spekular
7c2c77cc89 Mergefix 2020-04-29 17:49:28 +02:00
Hyunjin Song
687870d302 AFP: fix loading start and loop points if the loop point is automated (#5472) 2020-04-28 14:41:11 +09:00
Hyunjin Song
e199f72686 Fix crash on drawing line on the end of a graph (#5471)
This bug was introduced in dff76b2e83.
The function changes [sample_end, sample_begin), but emits the signal
as if [sample_end, sample_begin] has been changed. That bug made
Multitap Echo crash when tweaking the cutoff of the 32nd stage.

This commit fixes the issue by emitting sampleChanged with sample_end - 1.
2020-04-28 14:39:39 +09:00
Spekular
9efb6f9a8e Merge pull request #5469 from Veratil/issue-5254
Set AutomationPattern length to 1 bar if the length is 0
2020-04-26 22:21:04 +02:00
Veratil
a4f677362d Add comments and reduce unnecessary code 2020-04-26 14:44:05 -05:00
Veratil
aec0dd3b3e If AutomationPattern has a single tick at 0, set it's length to 1 bar. 2020-04-26 12:52:17 -05:00
Hyunjin Song
1c5a3f8a36 DrumSynth: ensure correct envelope length in any sample rate (#5467) 2020-04-26 10:59:43 +02:00
Michael Gregorius
31996fee7a Merge pull request #5454 from michaelgregorius/5453-OpenContainingFolder
Implements "Open containing folder" (#5453)
2020-04-23 19:48:37 +02:00
Oskar Wallgren
149eca1ec9 Note selection: Editing values works in dialog (#5438) 2020-04-22 22:25:14 +02:00
tecknixia
abcfee1334 disable drag after drawing line (#5315) 2020-04-22 20:47:59 +02:00
Johannes Lorenz
27b1ce914b Remove plugins/LadspaEffect/swh/ladspa-util.c (#5451)
This file contains no used code and it caused build problems, so we
remove it. Thanks to @plater for the issue report.
2020-04-22 10:35:00 +02:00
Michael Gregorius
c37fdd0055 Code review changes (comment added)
Add a comment which describes that only the folder is opened without
selecting any file. Also explain why it is only done like this for now.
2020-04-21 20:12:50 +02:00
Michael Gregorius
b85aef2f33 Code review changes
Move openContainingFolder to the end of the method block.

Adjust FileBrowserTreeWidget::contextMenuEvent to the coding conventions
and also make the code more readable by splitting up some conditions.

Add comments to clarify as to why the member m_contextMenuItem is set to
nullptr at the end of the execution of contextMenuEvent. Please note
that this implementation is not exception safe and should be changed in
the future, e.g. by passing the FileItem as a parameter of the slot.
2020-04-19 22:08:09 +02:00
Michael Gregorius
2aea19fff1 Add "Open containing folder" (#5453)
Add functionality to open the containing folder of a file that's selected
in LMMS' file browser.

Technical details
------------------
Add a new private method openContainingFolder to FileBrowser. Add a new
action to the context menu of a selected file. This action in turn calls
the added method.

The current implementation of openContainingFolder delegates to
QDesktopServices::openUrl with the directory of the selected file. Please
note that this will only open the directory but not select the file as
this is much more complicated due to different implementations that are
needed for the different platforms (Linux/Windows/MacOS).

Using QDesktopServices::openUrl seems to be the most simple cross
platform way which uses functionality that's already available in Qt.
2020-04-14 14:45:08 +02:00
Spekular
24194334e6 Merge pull request #5401 from Spekular/dropPosition
Bias dropped clip position backwards
2020-04-12 11:10:42 +02:00
Hyunjin Song
174630087e Use shimmed std::as_const instead of qAsConst 2020-04-04 12:13:01 +09:00
Hyunjin Song
8d908c681e Ensure plugin dependencies are deployed correctly 2020-04-04 12:13:01 +09:00
Hyunjin Song
924743dd17 Fix submodule fetching from non-default branches with old Git 2020-04-04 12:13:01 +09:00
Hyunjin Song
ebfa883e4d Carla: fix MSVC compatibility 2020-04-04 12:13:01 +09:00
Hyunjin Song
7628b253b0 Fix linking issues with the dummy Carla library(especially with MSVC) 2020-04-04 12:13:01 +09:00
Hyunjin Song
d173f42fec Fix wine detection 2020-04-04 12:13:01 +09:00
Hyunjin Song
9c2ccdf3a8 Fix some issues in shell scripts spotted by shellcheck 2020-04-04 12:13:01 +09:00
Hyunjin Song
044c88c271 Merge branch 'stable-1.2'
# Conflicts:
#	.gitmodules
#	.travis.yml
#	.travis/linux..before_install.sh
#	.travis/linux..install.sh
#	CMakeLists.txt
#	cmake/linux/package_linux.sh.in
#	cmake/modules/BuildPlugin.cmake
#	include/AutomatableModel.h
#	plugins/MidiImport/MidiImport.cpp
#	plugins/carlapatchbay/CMakeLists.txt
#	plugins/carlarack/CMakeLists.txt
#	src/core/Song.cpp
#	src/core/Track.cpp
#	src/gui/editors/SongEditor.cpp
#	tests/src/core/AutomatableModelTest.cpp
2020-04-04 12:08:55 +09:00
Hyunjin Song
8afa2d5412 Fix the linking method for the dummy Carla library 2020-04-04 12:06:35 +09:00
Johannes Lorenz
656eede6ba Fix bug made in #5336
This removes a duplicate dataChanged() emit. Thanks to @PhysSong for the
hint.
2020-04-01 21:24:22 +02:00
Hyunjin Song
a8df120a58 STK Mallets: don't silence active notes when switching instruments
This also fixes the underlying noise on instrument switches.
2020-03-25 11:09:55 +09:00
Hyunjin Song
b51079e921 Use proper synchronization methods on some instrument track operations 2020-03-25 11:09:55 +09:00
Hyunjin Song
2367a62a51 Fix crashes and hangs on importing some Hydrogen drum kit songs (#5420) 2020-03-23 15:11:13 +09:00
Hussam al-Homsi
85e0574138 Refactor FFT helpers (#5309)
* Do not check if unsigned int is negative

* Reduce scope of some local variables

* Use right types for iterators

* Check conditional returns first

* Remove unused functions

* Utilize a range-based for loop opportunity
2020-03-11 15:07:02 -04:00
Tres Finocchiaro
0196f31509 Fix SDL2 detection
Per #5389 (Comment)
Recommended by @PhysSong 
Adopted from upstream SDL1 patch c5c217c6b5
2020-03-11 11:55:33 -04:00
Johannes Lorenz
d382d4e08b Fix previous commit 2020-03-08 08:47:40 +01:00
Johannes Lorenz
ab8be73047 Cherry-pick from master commit 4dc26d1 (#5413) 2020-03-08 08:24:46 +01:00
Muhammed Furkan USLU
4dc26d1aab Fix issue #5409. (#5413)
Fix multiple uninitialized reads.
2020-03-08 07:31:36 +01:00
Hyunjin Song
94431ea9de RemoteVstPlugin: fix issues with FXP/FXB files on Windows (#5411) 2020-03-01 12:03:49 +09:00
Spekular
b2c4f2939d Elaborate on desired version information
Closes #5368
2020-02-28 20:40:12 +01:00
Johannes Lorenz
47786865ef Document strange bug 2020-02-25 20:40:49 +01:00
Johannes Lorenz
97a6379c6d Update UI after linking models (#4904) 2020-02-25 20:40:49 +01:00
Johannes Lorenz
a0f4e50805 Fix knobs not updating vals on link (#4904) 2020-02-25 20:40:49 +01:00
Johannes Lorenz
534d7ca9c5 Fix doxygen comment 2020-02-25 20:40:49 +01:00
Spekular
bbb3624399 Bias dropped clip position backwards 2020-02-23 14:01:56 +01:00
Johannes Lorenz
eebdc0f4be Linked model groups (#4964)
Add labeled controls for different types with a common base class

Implement a container for multiple equal groups of linked models and
suiting views. Such groups are suited for representing mono effects where each
Model occurs twice. A group provides Models for one mono processor and is
visually represented with a group box.

This concept is common for LADSPA and Lv2, and useful for any mono effect.
2020-02-21 19:26:29 +01:00
tresf
a77e592c19 Fix handling of plugin_export.h
Fixes error: definition is marked ‘dllimport’
Per #4813
2020-02-08 01:57:30 -05:00
Hyunjin Song
3410db4d99 Travis/macOS: rename qt5 to qt in the installation script
Travis-CI started installs Qt 5 to their macOS images.
To exclude qt properly, it should not be written as its alias 'qt5'.
2020-02-07 15:03:43 +09:00
Hyunjin Song
ea670287f3 macOS CI: fix package conflicts due to Homebrew's Python 2 2020-02-07 15:03:43 +09:00
Martin Pavelek
89d8363218 Add the vectorscope plugin (#5328)
The credit for the `ColorChooser` class goes to CYBERDEViLNL.
2020-02-07 15:00:42 +09:00
Hye Sung Jung
8679f79e2b fix spelling errors (#5385) 2020-02-01 13:38:59 +01:00
Hyunjin Song
aeac24c06d Fix a muted demo project "Greippi - Krem Kaakkuja (Second Flight Remix)" 2020-01-26 16:05:47 +09:00
Johannes Lorenz
d280b8628d Fixes #3183: Fix file factory delimeter position 2020-01-22 05:57:28 +01:00
Johannes Lorenz
427d779668 FileBrowser: Add helpful comments 2020-01-22 05:57:28 +01:00
Javier Serrano Polo
fd77c79cda Switch to Xenial build environment (#4813)
* Switch to Xenial build environment
* Add Carla submodule/weak linking support, related #3963 
* Fix Carla detection in AppImage, closes #5369
2020-01-17 10:55:07 -05:00
Hussam al-Homsi
63d11f763c Simplify FadeButton update (#5311) 2020-01-12 20:42:54 -05:00
Dominic Clark
c52682dfb1 Fix stuck notes with Helm VSTi 2020-01-08 07:53:13 +01:00
Martin Pavelek
ef99c53357 fix locking of the useless_lock in LocklessRingBuffer.h 2020-01-05 17:54:29 +01:00
Johannes Lorenz
a9640c8898 Comment-out deprecated attribute
It may be valid, but fails our CI
2019-12-26 18:23:52 +01:00
Hyunjin Song
11e5de3a4e Debian: add libx11-xcb-dev as an explicit build dependency 2019-12-24 12:03:17 +09:00
Cyp
42f7e262e9 Fix scrolling direction in SongEditor due to stuck Ctrl/Shift. 2019-12-23 21:17:18 +01:00
Cyp
d849cc179c Only filter out <>:"/\|?* while exporting tracks. 2019-12-23 20:05:26 +01:00
Hyunjin Song
4bfcc30a71 MIDI import: fix putting notes before the beginning of a pattern (#5343) 2019-12-23 17:33:46 +09:00
Hussam al-Homsi
abf3530d33 Return EXIT_SUCCESS instead of 0 in main 2019-12-15 00:50:43 -05:00
liushuyu
a9e3e70ae3 filebrowser: making the string more flexible for i18n 2019-11-24 00:50:15 -07:00
liushuyu
b11e8eb33b SpectrumAnalyzer: Fix typo 2019-11-24 00:50:15 -07:00
Cyp
578a9475ec Fix invalid read in RemotePlugin::RemotePlugin() on opening the ZynAddSubFx GUI. (#5299)
Calling .toUtf8().constData() returns a pointer which is invalid at the end of the statement.
2019-11-22 22:26:00 +09:00
Hyunjin Song
a2e328e3dd Fix crash on deleting instrument with controller connections on knobs (#5306)
Knob::friendlyUpdate() can be called after the model is deleted
due to signal-slot connections.
Adding a check for the model fixes a crash due to null pointer dereference.
2019-11-22 21:26:47 +09:00
Martin Pavelek
da73ddd242 Spectrum analyzer update (#5160)
* advanced config: expose hidden constants to user screen
* advanced config: add support for FFT window overlapping
* waterfall: display at native resolution on high-DPI screens
* waterfall: add cursor and improve label density
* FFT: fix normalization so that 0 dBFS matches full-scale sinewave
* FFT: decouple data acquisition from processing and display
* FFT: separate lock for reallocation (to avoid some needless waiting)
* moved ranges and other constants to a separate file
* debug: better performance measurements
* minor fixes
* build the ringbuffer library as part of LMMS core
2019-11-21 14:44:18 +01:00
Andres
df3e388393 Fix triggering of stop animation when playing no samples after stopping song playing samples 2019-11-19 19:07:10 -03:00
Hyunjin Song
170c8b9a34 Minor formatting changes 2019-11-19 15:18:32 +09:00
Hyunjin Song
14f894c3ee Remove exprtk.hpp.patch 2019-11-19 15:16:00 +09:00
Hyunjin Song
6122d0f3f2 Merge branch 'master' into groove 2019-11-19 15:10:01 +09:00
Kapandaria
2f0010270e Xpressive plugin updates (#5217)
* Updated plugin artwork.

* Update the formula in the presets to use integrate(f) instead of
  t*f, as integrate operation is more robust to frequency changes.

* rename X-Pressive to Xpressive in help window title.

* Xpressive.cpp, spaces to tabs and remove commented code.
2019-11-18 21:29:08 +01:00
Andres
229de18bc0 Fixed triggering of stop animation when not playing 2019-11-17 23:05:16 -03:00
Dominic Clark
cf4bb7b851 Fix remote plugin crash reading parameters from Grooove plugin (#5300) 2019-11-17 16:09:48 +00:00
Kevin Zander
256ae6dad6 Fix incorrect m_lastSoloed after moving/deleting an FX channel
Original code by @gi0e5b06.
2019-11-16 10:46:09 +09:00
Hussam al-Homsi
33b36ffc5e Add some missing includes 2019-11-15 17:09:57 -05:00
Olivier Humbert
ffce1d947a Debian packaging improvements (#5264)
* d/control: http -> https
* d/control: rearrange lists (one item per line + alphabetically ordered)
* d/copyright: http -> https
* Delete contributors.patch (integrated now)
* d/series: removes contributors.patch
2019-11-14 23:30:49 -05:00
Andres
e056ecb27b Added to sampletrackview the code needed for the activity indicator mute behaviour 2019-11-07 21:02:55 -03:00
Andres
caaeb62a95 Moved the activity indicator mute code to parent class 2019-11-07 20:53:05 -03:00
nia
b4459bed9e Support NetBSD's OSS audio/midi implementation (#5277) 2019-11-07 13:47:20 +09:00
Hussam al-Homsi
a24f1d779d Do not include unused headers 2019-11-06 22:06:15 -05:00
Andres
4d9e5e36a6 Sampletrack activity indicator 2019-11-05 08:17:25 -03:00
Lukas W
fb25575339 Merge issue templates (PR #4884)
Add issue templates
2019-11-05 09:46:30 +01:00
Lukas W
8a52ddb642 CricleCI: Test merged pull request 2019-11-01 14:01:12 +01:00
Kevin Zander
a8d91b10e8 Fix vertical piano mouse click unresponsiveness
`PianoRoll::mouseDoubleClickEvent` wasn't forwarding the event to the base class when not acting on the event. The base class calls `mousePressEvent`.

Fixes #3005
2019-11-01 08:37:43 +01:00
Kevin Zander
ebf71003c7 Fix vertical piano mouse click unresponsiveness
`PianoRoll::mouseDoubleClickEvent` wasn't forwarding the event to the base class when not acting on the event. The base class calls `mousePressEvent`.

Fixes #3005
2019-11-01 08:36:54 +01:00
Shmuel H
08c7e8e8dd appimage: Escape $DIR to avoid word-splitting 2019-11-01 09:10:01 +02:00
Shmuel H
02980e610c appimage: Use command -v instead of which (sc2230) 2019-11-01 09:10:01 +02:00
Shmuel H
55b65527c3 appimage: move launcher code into launch_lmms.sh. 2019-11-01 09:10:01 +02:00
David CARLIER
dac59a5fa0 C++11 inheritance updates
Add `override` and remove `virtual` where applicable
2019-10-31 20:05:33 +01:00
Cyp
fd203c3f7b Fix crash due to calling QWidget::move from a non-GUI thread while exporting tracks.
Calling via QMetaObject::invokeMethod should be thread safe.

Crash callstack:

QWidget::move
SongEditor::updatePosition
Song::stop
Song::stopExport
ProjectRenderer::run
QThreadPrivate::start
2019-10-31 17:24:13 +01:00
Alexandre Almeida
46f5433732 New BARS_PER_GROUP constant 2019-10-31 15:14:04 +01:00
Alexandre Almeida
53e6b645c8 Use "bar" instead of "tact"
Closes #4865
2019-10-31 15:13:25 +01:00
Lukas W
b8e499d6d8 Merge "Don't use deprecated Qt5 functions" (#5156) 2019-10-31 09:41:43 +01:00
Hyunjin Song
488c4ea603 CircleCI: support Qt from a PPA on /opt 2019-10-31 15:14:52 +09:00
Hyunjin Song
9cb1f8e784 Change the docker tag for CircleCI Linux builds
In response to https://github.com/LMMS/lmms-ci-docker/pull/7
2019-10-31 14:37:40 +09:00
Lukas W
400c8d8105 Remove Travis MinGW builds
We already run them on CircleCI with a newer Qt version.
2019-10-30 12:13:27 +01:00
Lukas W
b5b3b2e6a6 CMake: Require Qt 5.6+ 2019-10-30 12:13:27 +01:00
Lukas W
d9f1383ca9 Remove remaining usages of QSignalMapper 2019-10-30 12:13:27 +01:00
Noah Brecht
2c5bf2b9dd lambdas instead of QSignalMapper 2019-10-30 12:13:27 +01:00
Noah Brecht
38f599b6e7 setPath rather than operator= for qDir 2019-10-30 12:13:27 +01:00
Noah Brecht
200d1c209c more depricated qt functions 2019-10-30 12:13:27 +01:00
Lukas W
35daff9a84 GitHub: Add Discord contact link to template chooser 2019-10-29 22:42:52 +01:00
Lukas W
4a9e9da78c Issue templates improvements
* Ask users to search the tracker first
* Ask for the LMMS version in bug reports
2019-10-29 22:42:20 +01:00
Oskar Wallgren
6c865c072d Piano Roll - Fix retrigger with vol/pan sliders (#5271) 2019-10-29 14:01:05 +01:00
Shmuel H
1b45ce5a98 CircleCI: Add macOS support. 2019-10-28 22:34:18 +02:00
nia
eeaaf6d1da Support CMAKE_INSTALL_MANDIR (#5276) 2019-10-28 09:56:34 +09:00
knittl
5e4e536bf0 Replace initializer list macros with delegating constructors (#5279)
Closes #5278
2019-10-27 21:17:04 +01:00
Mark-Agent003
3745bfbd7f Increase File Browser Spacing (#4252)
Increase File Browser Spacing
2019-10-25 09:20:02 +02:00
Hyunjin Song
13c4f4a995 Let Travis Mac builds use the Xcode 9.4 image 2019-10-22 11:30:36 +09:00
Hyunjin Song
7ebaa0e211 Merge branch 'stable-1.2'
# Conflicts:
#	data/locale/pl.ts
#	include/SongEditor.h
#	plugins/vst_base/CMakeLists.txt
#	src/core/Song.cpp
#	src/gui/editors/SongEditor.cpp
2019-10-21 11:18:39 +09:00
Hyunjin Song
dbf5f47149 Bump version to 1.2.1 2019-10-21 09:27:12 +09:00
Shmuel H
82c38193de Add windows NSIS artifact extensions (#5244)
* MSVC: Move MSVC year detection to DetectMachine.cmake.
* NSIS: Add compiler to installer name
2019-10-20 23:28:42 +03:00
Raine M. Ekman
4f11cf1b23 Make SampleBuffer adjust its members when resampling
Fixes #5218.
2019-10-19 22:41:51 +03:00
Oskar Wallgren
a9262b9613 Fix Organic offset glitch (#5252) 2019-10-19 11:40:06 +02:00
David Carlier
732448c392 FreeBSD build version 2019-10-18 16:52:38 +02:00
Lost Robot
2d17bf07f3 Allow mid-note automation of BitInvader sample length (#4705) 2019-10-17 16:44:55 +09:00
Shmuel H
a22b6d7575 NSIS: Add compiler to installer name 2019-10-17 03:04:18 +03:00
Shmuel H
d005eec1aa MSVC: Move MSVC year detection to DetectMachine.cmake. 2019-10-17 03:03:26 +03:00
Hyunjin Song
f1831ffdc6 Export TrackContentObject class
Fix a build error introduced in #5223.
2019-10-17 08:54:51 +09:00
Kevin Zander
170d28ffbd Remove global automation from MIDI import (#5223) 2019-10-15 11:22:41 +09:00
Hyunjin Song
95c46a805d RemoteVstPlugin: fix crashes when failed to open a file (#5235) 2019-10-15 11:18:46 +09:00
Oskar Wallgren
6dee6a4418 Show icon on 'Turn off all notes' button (#5237)
Backporting fix from 2815da2805
by @karmux
2019-10-12 17:41:30 +02:00
Oskar Wallgren
e321dff733 Translation Fixes (Continuation of #4482) (#5185)
Fix some formatting issues with some translations. 

* Russian
* Polish
* Swedish
* Ukrainian
2019-10-10 19:01:17 +02:00
Hyunjin Song
d7a78fe121 Specify timeout for transfer.sh uploads
Prevents "No output has been received in the last 10m0s" errors on Travis CI.
2019-10-10 14:22:42 +09:00
Hyunjin Song
91a38a922d Add back '-Wl,-E' (#5233) 2019-10-10 10:06:14 +09:00
Kevin Zander
e1d311730b Fix regression introduced in #5170 (#5224) 2019-10-07 21:33:11 +02:00
Steffen Baranowsky
5aa87886c9 Rubberband fix for selecting large area in Songeditor (#5003) 2019-10-07 18:13:44 +02:00
Shmuel H
45cb7f21c5 linuxdeployqt: drop -unsupported-allow-new-glibc 2019-10-07 15:40:09 +03:00
Shmuel H
770e8cc777 CircleCI: Use xenial for linux.gcc builds
AppImage will fail otherwise.
2019-10-07 15:40:09 +03:00
Hyunjin Song
2df4fff1c0 Work around a winegcc bug of Wine >= 4.14 (#5211)
See https://bugs.winehq.org/show_bug.cgi?id=47710 for details
2019-10-07 08:02:03 +09:00
Hyunjin Song
16390f61a5 Work around a winegcc bug of Wine >= 4.14 (#5210)
See https://bugs.winehq.org/show_bug.cgi?id=47710 for details
2019-10-07 08:01:48 +09:00
Tres Finocchiaro
da09b2a941 CheckSubmodules: Workaround submodules failing (#5222)
Workaround git's inability to recover from a shallow clone
2019-10-06 01:05:53 -04:00
Tres Finocchiaro
15fe551b1d Submodules: Only fetch required (#5182, closes #5105) + Non-shallow fallback (hotfix)
* Retry updating submodules non-shallow if shallow clone fails (master hotfix)
* Add `PLUGIN_LIST` support to CheckSubmodules (#5105)
* Remove `SKIP_SUBMODULES` switch (it's redundant to specifying `PLUGIN_LIST`)
* Add `NO_SHALLOW_CLONE` switch
2019-10-03 17:47:49 +02:00
Hussam al-Homsi
9f0baab93a Fix regression of some default settings
The regression was introduced in #3820.
2019-10-01 21:14:55 -04:00
https://gitlab.com/users/CYBERDEViLNL
ca8871455e Make undo for PianoRoll cut action possible (#5214) 2019-10-02 08:00:59 +09:00
https://gitlab.com/users/CYBERDEViLNL
5132d91bfc Give focus to AutomationEditor when the window gets the foucs (#5170)
This will make shortcuts work on opening the editor.
2019-10-02 08:00:11 +09:00
Kevin Zander
867639929a Add close button to SideBarWidget (#5133) 2019-10-01 11:36:45 +09:00
Shmuel H
57a486c75d Merge pull request #5142 from Reflexe/cmake/install-refactor
Support automatic dll collection and refactor cmake installation process.
2019-09-24 11:36:24 +03:00
Hyunjin Song
94354e3053 Support deploying dependencies in MSVC builds with CMake < 3.14 2019-09-24 10:47:24 +03:00
Hyunjin Song
2f64c461e8 Fix missing system libraries in MSVC installations
* Install UCRT libraries
* Install debug libraries in debug builds
2019-09-24 10:47:24 +03:00
Shmuel H
ae9d619abd BuildPlugin: Always remove 'lib' suffix from the DLL name 2019-09-24 10:47:24 +03:00
Shmuel H
1324cf48c1 Enable automatic dll installation for RemoteVstPlugin32
Co-Authored-By: Hyunjin Song <tteu.ingog@gmail.com>
2019-09-24 10:47:24 +03:00
Hussam al-Homsi
90dec52db0 Add missing icons of File menu actions (#5183) 2019-09-19 12:02:11 -04:00
Oskar Wallgren
419321dd01 Only MacOS and Windows are case insensitive (#4768) 2019-09-16 07:09:42 +02:00
Tres Finocchiaro
ffa03df72b Fix $PATH value in AppImage
Closes #5187
2019-09-15 10:18:47 -04:00
Hyunjin Song
6782b6d6c4 Merge branch 'stable-1.2'
# Conflicts:
#	.mailmap
#	cmake/linux/lmms.desktop
#	src/gui/editors/PianoRoll.cpp
#	src/tracks/BBTrack.cpp
2019-09-15 21:08:33 +09:00
Kevin Zander
8fdf6c4d12 Fix #4188 - Check for failed std::find (#5137) 2019-09-14 20:36:06 +03:00
Shmuel H
0059c6e71f Fix #4188 - Check for failed qFind (#5184) 2019-09-14 20:35:54 +03:00
Kevin Zander
b07c007a27 Add save/load of PianoRoll marked semitones (#5146) 2019-09-14 19:57:44 +03:00
Hussam al-Homsi
9eb6e3fa33 Update .mailmap 2019-09-13 14:03:26 -04:00
Hyunjin Song
c436e5ca57 Remove MIDI connections from factory .mmpz files (#5163) 2019-09-13 07:54:48 +09:00
Dominic Clark
91cf5bd88d Support compilation with MSVC 2019 (#5180) 2019-09-10 15:17:55 +01:00
Hussam al-Homsi
a0e7a88e67 Remove "What's This?" leftovers (#5173) 2019-09-09 00:22:43 -04:00
Dominic Clark
2e84cd3e0c Fix stuck keys when dragging on piano view (#5127)
* Fix stuck keys when dragging on piano view
* Add comment

Co-Authored-By: Shmuel H. <shmuelhazan0@gmail.com>
2019-09-08 14:43:15 +02:00
malcops
e1236f53e2 Remove maximize from Meter(Metro) menu (#5071)
Fixes #4984.
2019-09-08 11:18:45 +09:00
Hussam al-Homsi
84d1091100 Rewrite the setup dialog (#3820) 2019-09-05 20:32:17 -04:00
Shmuel H
13da2b9576 CMake: extract dll installation code into a portable function 2019-09-04 10:15:31 +03:00
Shmuel H
72bdb23531 CMake: Provide API for install-time variables with generator expression 2019-08-31 09:15:29 +09:00
Hyunjin Song
7a23ee8ad1 AppVeyor: create Windows installers 2019-08-31 09:09:49 +09:00
Hyunjin Song
8d169fa529 CircleCI: create Windows installers 2019-08-31 09:09:49 +09:00
Lukas W
4fd8e08f3b Rewrite CMake dependency installation
Replaces the hard-coded library paths by a method based on CMake's
GetPrerequisites module which recursively finds a binary file's linked
libraries. Advantage: Potentially works on any system without adaption as
long as CMake supports it, so it could be used to create portable Linux
packages as well. Disadvantage: "Potentially".

Co-Authored-By: Hyunjin Song <tteu.ingog@gmail.com>
2019-08-31 09:09:49 +09:00
Lost Robot
c2eefe73d0 Prevent LMMS VisualizationWidget from showing clipping color at exactly 0 db (#5162) 2019-08-30 16:36:04 -06:00
Winnie
e803a31a90 Simplify TemplatesMenu class (#5155) 2019-08-28 22:51:54 +02:00
Spekular
8568ae4eac Make splash screen text white (#5149)
Make splash screen text white
Closes #5023
2019-08-27 09:24:13 -04:00
Winnie
605aef7afc Fix loading state for recent projects menu (#5152) 2019-08-26 09:33:25 +08:00
RossGammon
4c2d8941dc Fix some spelling errors in lmms (#5151) 2019-08-26 09:09:05 +08:00
Artur Twardowski
a631c0c47e Fix invalid MIDI Program Change decoding (#5154) 2019-08-26 09:05:59 +08:00
Winnie
2cdb9f2f38 Extract RecentProjectsMenu class from MainWindow (#5148)
* Extract RecentProjectsMenu class from MainWindow
* Clean up updateRecentlyOpenedProjectsMenu
* Remove m_recentlyOpenedProjectsMenu from MainWindow
2019-08-24 18:55:30 +02:00
Winnie
a863830795 Extract TemplatesMenu class from MainWindow (#5125) 2019-08-24 09:33:52 +02:00
Dominic Clark
93f9134c45 Fix crash opening VST automation window (#5144)
The VST automation window initially adds a subwindow with a null widget, so we have to check that w isn't nullptr before getting its size hint.

Fixes #5132.
2019-08-23 20:38:46 +03:00
Kevin Zander
c80519e65e Allow playing muted pattern in the piano roll (#5134) 2019-08-21 12:41:33 +08:00
Shmuel H
ce5c74432e Update appveyor image to Visual Studio 2017 (#5130) 2019-08-20 12:37:42 +03:00
Steffen Baranowsky
e1ef5fad0d shows the vertical scrollbar of songeditor and bb-editor only if needed (#5102) 2019-08-18 10:49:02 +02:00
Kun Deng
00d2cd304a Fix for the SF2 with no "default" patch (#5084)
Fixes #323
2019-08-13 21:23:57 +03:00
Olivier Humbert
0db83c55a0 Better French translations in the menu item file (#4711)
in order to stick with the original English meaning
2019-07-31 01:17:55 +02:00
Olivier Humbert
db200fb90c Create FUNDING.yml (#5057) 2019-07-30 08:40:07 +08:00
Hussam al-Homsi
e206798c1e Use mean based logic for controlling loop points. (#4034)
* Use median based logic for controlling loop points.

* Limit controlling loop points to right mouse button.
2019-07-29 12:08:07 -04:00
Spekular
1c715bc335 Enhanced snapping in song editor (#4973)
* New default behavior: Preserves offsets when moving clips, resizes in fixed increments.

* Adds shift + drag: Snaps move start position (like current behavior) or end position (new),
based on which is closest to the real position. When moving a selection,
the grabbed clip snaps into position and the rest move relative to it.

* Adds alt + drag: Allows fine adjustment of a clip's position or size,
as an alternative to ctrl + drag.

* Adds a Q dropdown in the song editor to allow finer or coarser snapping (8 bars to 1/16th bar)

* Adds a proportional snap toggle. When enabled, snapping size/Q adjusts based on zoom,
and a label appears showing the current snap size. This is disabled by default.
2019-07-27 17:14:49 +08:00
Steffen Baranowsky
bdbea87149 show BBEditor on clicking the TrackLabelButton (#5060) 2019-07-26 10:04:16 +02:00
Hyunjin Song
7492e53b02 Fix broken translations in 12ea80d4fb 2019-07-22 09:01:58 +09:00
Johannes Lorenz
a966d25ad2 Merge branch 'variable-tab-widget' 2019-07-22 01:22:10 +02:00
Johannes Lorenz
6e7c4a47c2 Fixes #5061: Fix Effect Rack View in Instrument
The EffectRackView in an InstrumentTrackWindow had some parts hidden when
loading files with >= 4 effects. This was now fixed by force-resizing the
EffectRackView to its desired size.

It's a dirty fix, but good enough, plus many Instrument UIs might get
rewritten to be resizable in the future.
2019-07-22 01:20:13 +02:00
Johannes Lorenz
ba6a86d331 TabWidget: Improve size hints 2019-07-22 01:20:00 +02:00
Lost Robot
d949770144 Merge pull request #5083 from freshstudio/fix/context-menu-channel-rename
Fixed renaming mixer channel from the context menu
2019-07-20 07:29:38 -06:00
Freshek
0ed7581355 Fixed renaming mixer channel from the context menu 2019-07-20 15:19:10 +02:00
Martin Pavelek
c3b4d5188a New Spectrum Analyzer (#4950)
Replace old spectrum analyzer by new one with higher resolution and
many new features.

Resolves #2847.
2019-07-17 22:45:26 +02:00
Johannes Lorenz
73c2c70d96 Merge branch 'variable-tab-widget' 2019-07-17 22:21:47 +02:00
Johannes Lorenz
aa8f9361c6 Rename InstrumentView250 to InstrumentViewFixedSize 2019-07-17 22:20:25 +02:00
Johannes Lorenz
a4df7a9765 Split InstrumentView into itself and InstrumentView250 2019-07-14 10:20:54 +02:00
Johannes Lorenz
4f3ed9f9e1 EffectControlDialog: Use 'Preferred' size policy
This does not have any effect, as the surrounding MDI sub window always
uses the minimumSizHint. It's just preparation.
2019-07-13 22:49:26 +02:00
Johannes Lorenz
a4b801fe1b TabWidget: Add missing size hints
This is mostly for completeness, it does not fix any known issues.
2019-07-13 22:49:10 +02:00
Johannes Lorenz
3585b14b98 Instrument view: Add missing size hints
Those are needed for the case when an instrument is being resized
manually.
2019-07-13 22:48:48 +02:00
Johannes Lorenz
f5db880867 SubWindow.cpp: Fix comment 2019-07-13 22:48:15 +02:00
Johannes Lorenz
59e186d208 Closes #5050: Add Mixer threading comments (#5069)
[ci skip]
2019-07-11 18:22:41 +02:00
Steffen Baranowsky
d766b87688 Drop sample on sampletracks (#5043)
* implements drag and drop samples to sampletracks

* clean up / take care of timeLineWidget heigth in songeditor

* unused memeber removed

* clean up

* Update include/TrackContainerView.h

Co-Authored-By: Spekular <Spekular@users.noreply.github.com>

* Update src/gui/TrackContainerView.cpp

Co-Authored-By: Spekular <Spekular@users.noreply.github.com>

* Update src/gui/TrackContainerView.cpp

Co-Authored-By: Spekular <Spekular@users.noreply.github.com>

* Update src/gui/editors/SongEditor.cpp

Co-Authored-By: Spekular <Spekular@users.noreply.github.com>

* load AFP if we don't drop on a sample track

* take care of timeLineWidget size changes

* clean up

* consolidate some code

* requested changes by code review

* move logic to SampleTrackView

* clean up

* clean up

* clean up
2019-06-28 02:26:27 +02:00
Steffen Baranowsky
68cb91726a MDI Subwindow Decoration for VeSTige instruments closes #2824 (#2826)
* MDI Subwindow Decoration for VeSTige instruments closes #2824

* revert changes

* change QMdiSubWindow to our SubWindow in Vestige
2019-06-26 13:34:13 +02:00
Noah Brecht
7834e10bc7 FadeButtons now remain partially lit as a note plays out (#4969) 2019-06-25 20:26:57 +09:00
Johannes Lorenz
a0c2a62c27 Add .editorconfig
This file tells the github online editor to use tabs of width 4 instead
of 8. Open
[this](https://github.com/JohannesLorenz/github_test/blob/master/test.cpp)
test file in your browser to see how it works (the width is 5 in the
example).

Actually, it also tells many other editors...
2019-06-25 03:37:14 +02:00
Lost Robot
2547098dca Merge pull request #5038 from DouglasDGI/better-fx-mixer
Increase Mixer fader falloff speed
2019-06-22 07:16:47 -06:00
Hussam al-Homsi
5431cc7942 Replace tLimit() with qBound() and remove templates.h (#5040)
* Replace tLimit() with qBound()

* Remove templates.h
2019-06-15 23:33:29 +03:00
Lost Robot
499d425b4b Increase Mixer fader falloff speed
This also fixes a display bug that is present with large fader falloff speeds.
2019-06-14 18:38:56 -06:00
Olivier Humbert
3ada5b8a12 Update .mailmap (#5037) 2019-06-14 21:07:14 +02:00
Hyunjin Song
f141ae68e0 Fix macOS builds 2019-06-12 17:42:24 +09:00
Hyunjin Song
12ea80d4fb Merge branch 'stable-1.2'
# Conflicts:
#	data/locale/cs.ts
#	data/locale/en.ts
#	data/locale/ko.ts
#	data/locale/ru.ts
#	data/locale/uk.ts
#	data/locale/zh_TW.ts
#	include/Engine.h
#	plugins/nes/Nes.cpp
#	src/core/NotePlayHandle.cpp
#	src/core/SampleBuffer.cpp
#	src/tracks/SampleTrack.cpp
2019-06-12 17:41:12 +09:00
Hyunjin Song
4cb243b0ef Travis: drop unneeded prefix setting for npm 2019-06-12 17:38:53 +09:00
tresf
df79f8c1be Enable dark title bar on macOS
Closes #5031
2019-06-11 22:57:01 -04:00
Shmuel H
723a451ebc Add a save option to discard MIDI connections (#5021)
* Song: add isSavingProject.
* VersionedSaveDialog: Add support for a custom option dialog.
* AutomatableModel: Support the discardMIDIConnections save option.
* InstrumentTrack: Support the discardMIDIConnections save option.
* SaveOptions: Show the save option dialog on "save as".
2019-06-09 15:44:32 +03:00
Hyunjin Song
0fbaca40bd Bump version to 1.2.0 2019-06-09 20:28:34 +09:00
Rebecca DeField
bfa8a4bc8c fix color profile error (#5019) 2019-06-08 11:57:56 +02:00
Tres Finocchiaro
ca06b886f5 DMG rebranding (#5013)
Rebrand macOS DMG background
- Design and artwork courtesy @RebeccaDeField
- Closes #4289
2019-06-08 01:17:15 -04:00
Johannes Lorenz
457f2c6712 Fix German translation
* Fix "Export Tracks"
* Add "Export MIDI"

[ci skip]
2019-06-07 18:33:48 +02:00
Johannes Lorenz
6e5650c50a Fixes #4996: Fix metadata when exporting multiple tracks (#5005)
Co-Authored-By: Hyunjin Song <tteu.ingog@gmail.com>
2019-06-07 18:28:11 +02:00
Rebecca DeField
d194c70391 updated splash (#5002) 2019-06-06 18:18:49 -07:00
Hyunjin Song
47d6388182 MP3 export: initialize ID3 tag with id3tag_init
Fixes wrongly set 'Blues' genre(ID 0) in exported mp3 files.
2019-06-06 20:24:06 +09:00
Hyunjin Song
c37228c7e3 Travis: fix macOS build due to the old default version of Node.js
appdmg recently dropped support for Node.js < 8.5
2019-06-06 19:33:10 +09:00
liushuyu
359de2083e i18n: update template strings 2019-06-05 19:29:07 -06:00
Shmuel H
665e50395c Bugfix - SampleTrack -> Play: Fix sample track not being played in the
right place when it not played from the begining.

That has created a difference between the ticks and the metronome and
the sample track.

The cause of the problem was that the calculation of the frame to play
was wrong: we had calculated `framesPerTick` according to the current
engine's sample rate instead of the SampleBuffer's sample rate.
2019-06-02 20:48:58 +03:00
Shmuel H
6d27f90271 Bugfix - SampleTrack -> Load & Save: Fix recorded sample track not being
played correctly after saving and loading a project due to sample rate
not getting saved in the project file.
2019-06-02 20:48:58 +03:00
Shmuel H
37f0c3f33d SampleBuffer -> Use processingSampleRate.
SampleBuffer was using baseSampleRate as the default samplerate instead of the actual processingSampleRate.
2019-06-02 20:48:58 +03:00
Lost Robot
d683a51350 Merge pull request #7 from LMMS/master
Master
2019-05-30 18:55:33 -06:00
liushuyu
fad89d6be7 i18n: update translations from Transifex 2019-05-28 15:13:51 -06:00
David CARLIER
46c74d0a81 Making clearer the hierarchy. (#4967)
Add `override` keyword
2019-05-28 00:02:17 +02:00
Shmuel H
9c6e2278ce SampleTrack: call requestChangesInModel before unref SampleBuffer (#4982)
To avoid a race condition between the gui thread which destroys the
samplebuffer and the mixer thread which increases the buffer's ref-
count, we'll make sure to touch the ref-count only when wh're synced
with the mixer.
2019-05-27 21:26:30 +03:00
Johannes Lorenz
fb1b18e6b8 Merge pull request #4990 from sharpblade4/fix#4963_nextver
playing/recording pianoRoll's chord notes (#4963)
2019-05-25 03:53:00 +02:00
sharpblade4
28143e61ed playing/recording pianoRoll's chord notes (#4963) 2019-05-24 19:37:14 +03:00
T0NIT0 RMX
ec64de0723 Fixes #4781: Don't disconnect LADSPA automation on export 2019-05-14 21:19:30 +02:00
Johannes Lorenz
4b4b470550 Extend ProjectJournal docs, thx to @DomClark 2019-05-13 20:23:01 +02:00
Hyunjin Song
934ea6d086 Fix controller loading error on loading projects
Fixes a regression in 91f9f1a890,
which added the range check into the wrong if statement.
2019-05-10 07:32:40 +09:00
Oskar Wallgren
50796b2088 Nescaline and Freeboy - Better default sound (#4968) 2019-05-09 19:51:10 +02:00
Hyunjin Song
b9503a8c70 Fix race conditions in NotePlayHandleManager (#4966)
NotePlayHandleManager::acquire uses a read lock unless the pool is empty.
If two threads try to acquire NotePlayHandle simultaneously
when the value of s_availableIndex is 1, one thread will try to read s_available[-1].
If the acquire action and the release action are done at the same time,
NotePlayHandleManager::acquire may try to read data
before NotePlayHandleManager::release actually writes.

This commit prevents them by always using the write lock when acquiring a NotePlayHandle.
2019-05-08 15:12:17 +09:00
Ron U
3dcffbf96f fix hanging mouse in piano roll (#4822) (#4960)
* fix hanging mouse in piano roll (#4822)

* fix hanging mouse in automation & pianoroll (#4822);

* fix hanging mouse in automation & pianoroll (#4822)

removed TODO comment that I forgot in the code
2019-05-06 11:00:37 +02:00
Hyunjin Song
d54c79d33b Fix the wrong merge 2019-05-06 16:43:01 +09:00
Hyunjin Song
6d7ce58dec Merge branch 'stable-1.2'
# Conflicts:
#	CMakeLists.txt
#	cmake/linux/package_linux.sh.in
#	src/3rdparty/CMakeLists.txt
#	src/core/Track.cpp
#	src/gui/editors/PianoRoll.cpp
#	src/tracks/SampleTrack.cpp
2019-05-06 15:46:17 +09:00
Hyunjin Song
9ff882d09d Fix invisible note editing handles when a note has detuning info
Fixes a regression in 32df2d7fba,
the clipping area was restored in a wrong place.
Also, a wrong value was used while restoring.
2019-05-06 15:43:12 +09:00
Hyunjin Song
8f4757ee3b Use extracted linuxdeployqt directly
As of https://github.com/probonopd/linuxdeployqt/pull/370/,
the AppRun of linuxdeployqt unsets LD_LIBRARY_PATH.
This behavior isn't suitable for our cases, so we use
the extracted binary directly as a workaround.
2019-05-06 12:13:22 +09:00
https://gitlab.com/users/CYBERDEViLNL
cb6b4ec44b Show/Focus BBEditor on TrackLabelButton click #4946 (#4959)
It will be shown even if the parent is hidden.
2019-05-05 15:57:16 +02:00
Hyunjin Song
32df2d7fba Don't draw note detuning info over the volume/panning area (#4965) 2019-05-05 12:39:36 +09:00
Hyunjin Song
8bcdf06c6c Travis: fix a debootstrap error from missing keyrings
Uses 18.04's debian-archive-keyring to fix the missing keyrings.
2019-04-29 16:34:35 +09:00
Johannes Lorenz
c9ed6fc806 Merge pull request #4902 from JohannesLorenz/model-visitor
Make Model class visitable
2019-04-27 20:09:14 +02:00
Johannes Lorenz
2c134d65fe Code style + Extend for TempoSyncKnob 2019-04-27 15:26:17 +02:00
Johannes Lorenz
777da5e391 Fix CI on windows 2019-04-27 11:11:48 +02:00
Johannes Lorenz
8d005e7565 AutomatableModelTest: Improve tests
Check whether returned pointers from the cast are equal to the original
pointers, rather than just checking wether they are not `nullptr`.
2019-04-27 10:48:37 +02:00
Johannes Lorenz
0fd5693e12 Improve dcast
* document `dcast`
* make `dcast` not only cast exact, but also upwards
* add `dcast` test
* rename `dcast` -> `dynamicCast`
2019-04-27 00:29:49 +02:00
Dominic Clark
ca9a9564cd Make more connections direct for automation (#4942) 2019-04-26 12:59:53 +01:00
Alexandra Dutton
160d306f48 Record chords (#4938)
* Added check for chord to notes recorded from keyboard
2019-04-24 19:18:53 +02:00
Dominic Clark
461faccaa0 Fix notes getting stuck under high CPU conditions (#4908) 2019-04-24 12:50:07 +01:00
Hyunjin Song
c80f0bf5e7 Fix wiki submodule 2019-04-24 13:58:37 +09:00
Johannes Lorenz
b5e408d25a Update wiki submodule 2019-04-22 20:03:57 +02:00
Johannes Lorenz
7ae4e85ffe Document graph widget 2019-04-22 11:05:59 +02:00
Johannes Lorenz
d537561ffc Document Effect::checkGate 2019-04-22 09:27:01 +02:00
makepost
a685049627 Allow build for Wayland w/o X11Extras, if VST off
@lukas-w reminds in 134dae8 comments that X11Extras help Linux users of
VST effects #3786. Now LMMS builds and runs on Weston without X11
dependencies, though only if WANT_VST is off.
2019-04-22 09:26:33 +02:00
Johannes Lorenz
22fb650a4f Merge branch 'variable-tab-widget' 2019-04-22 08:59:59 +02:00
CYBERDEViLNL
407444ea1d FileBrowser: Backup expanded directories and restore that state when the tree is reloaded. 2019-04-21 00:14:33 +02:00
Johannes Lorenz
e1df16c45b Coding conventions 2019-04-20 22:12:32 +02:00
Johannes Lorenz
53942a146a Fix bad identation in old code 2019-04-20 18:32:17 +02:00
Johannes Lorenz
91099e28d5 Fix -1 offset in plugin tab
In the instrument plugin tab, there was an orange stripe for
TripleOscillator. This was because internally, TabWidget moves up the
widget by 1 (TabWidget.cpp, line 89).

The size of the whole window is:

```
widget->height() + m_tabbarHeight - 1
```

So this code adds an offset of "-1" to the necessary computations.
2019-04-20 13:23:42 +02:00
Johannes Lorenz
d06f5088a1 Move macro definition out of class 2019-04-20 13:09:49 +02:00
Johannes Lorenz
96cc5e0e5e Add PluginIssue class (#4901) 2019-04-17 19:08:59 +02:00
https://gitlab.com/users/CYBERDEViLNL
5784dd6dc9 Use local cursor for TrackContentObjectView (#4918)
Fixes crash on cloning patterns on Qt >= 5.12.
2019-04-16 06:37:20 +09:00
Spekular
5a56969af2 Allow sample track TCOs to resize smaller than one bar (#4933)
Other changes:
* Update TCO position more exact when a drag leaves a TCO and enters `TrackContentWidget` (required to detect that the cursor has really moved when leaving a TCO with length < 1 to the right)
* Use exact length when samples are loaded, don't round it up
* Reset size when reloading same file
2019-04-15 17:54:18 +02:00
Noah Brecht
91f9f1a890 Don't try to connect to nonexistent controllers (#4939)
Fixes crash on loading presets with controllers.
2019-04-14 19:26:49 +09:00
Lost Robot
271e20dc6d Merge pull request #4 from LMMS/master
Master
2019-04-13 18:59:52 -06:00
Lost Robot
b3461e2aa3 Merge pull request #4943 from RoxasKH/new-monstro-icons
New monstro icons
2019-04-13 15:00:14 -06:00
Lost Robot
be31a5598e Shrink ComboBox arrow section slightly
This is being done for two reasons:

1. The new Monstro icons (and the icons for Microwave when it's finished) are too large.
2. All ComboBoxes (subjectively) look much nicer this way.
2019-04-13 14:30:46 -06:00
Lost Robot
07dcea1294 Replace Monstro icons 2019-04-13 14:26:41 -06:00
Gingka Akiyama
82e3ba75c6 [Equalizer] Bright analyzer colors, opacity increased (#4772)
* [Equalizer] Bright analyzer colors, opacity incr

Brightened spectrum analyzer colors and increased opacity a tad to make more visible

* Fixed RGB Value

* Update EqControlsDialog.cpp

* Fixed color change

* Changed colors again

* Fixed colors, now brighter and bluer

* Ok, its actually bright now lol
2019-04-06 09:19:32 -07:00
Johannes Lorenz
ac257f08f9 PluginBrowser: Tree layout and search bar (#4759) 2019-04-03 22:10:49 +02:00
CYBERDEViLNL
3ef33dbbe9 PluginBrowser: Tree layout and search bar 2019-04-03 00:35:33 +02:00
Johannes Lorenz
d52c220a5c Fix instrument window tab sizes
- Fix the instrument window tabs minimum width and height formulae
- Also set minimum height and width for instrument tab
2019-03-29 18:43:39 +01:00
Hyunjin Song
93ec816d4c SetupDialog: fix file dialog not opening for theme directory
It was caused by a typo affecting a signal-slot connection.
2019-03-28 10:48:01 +09:00
Hyunjin Song
4dce466873 Remove some Qt4 compatibility code 2019-03-27 07:05:38 +09:00
Hyunjin Song
f18efb470f Travis: fix shellcheck warnings for the Debian sid script 2019-03-26 10:43:14 +09:00
Hyunjin Song
7984bb9db6 Merge branch 'stable-1.2'
# Conflicts:
#	.travis.yml
#	.travis/linux..script.sh
#	.travis/linux.win.download.sh
#	.travis/linux.win32.script.sh
#	.travis/linux.win64.script.sh
#	.travis/osx..script.sh
#	include/VstSyncController.h
#	plugins/audio_file_processor/audio_file_processor.cpp
#	plugins/zynaddsubfx/zynaddsubfx
#	plugins/zynaddsubfx/zynaddsubfx/src/Misc/Bank.cpp
#	plugins/zynaddsubfx/zynaddsubfx/src/Misc/Bank.h
#	src/gui/SetupDialog.cpp
#	src/gui/editors/SongEditor.cpp
2019-03-26 09:53:33 +09:00
Hyunjin Song
032c324dbc Travis: use carla instead of carla-git
Due to some breaking changes in the development branch of Carla,
we can't use the package right now.
Fortunately, the carla package now points to 2.0 series. So we will use it.

See also: https://kx.studio/News/?action=view&url=changes-in-kxstudio-repos-regarding-carla-and-jack2
2019-03-26 09:39:54 +09:00
Johannes Lorenz
82cf45351a Allow sub plugins for instruments aswell
This allows sub plugins for instruments. They had been working for effects only, previously. This is a requirement for many plugin APIs, like Lv2.
2019-03-22 20:54:33 +01:00
Johannes Lorenz
34835811e1 Fix invalid display names 2019-03-22 20:35:21 +01:00
Johannes Lorenz
52d1f5588a Remove useless include 2019-03-22 18:32:59 +01:00
Johannes Lorenz
2061d6c35f Merge branch 'master' into instr-sub-plugins 2019-03-22 10:51:23 +01:00
Johannes Lorenz
1adf16037f Make instrument window's piano optional 2019-03-21 20:05:36 +01:00
necrashter
f79c2929a5 Fix empty editors after closing them and creating a new project (#4891) 2019-03-19 18:06:02 +09:00
Tres Finocchiaro
ea5cbe6789 Allow new Zyn bank creation on Linux (#4905)
Allow new Zyn bank creation on Linux
Closes #4642
2019-03-18 12:41:01 -04:00
tresf
79524168b3 Bump zyn submodule
Per #4642
2019-03-18 12:37:07 -04:00
Lukas W
e1adfc3952 TCO drag: Fix Ctrl+Drag crash
Fix some assumptions that source and target of a drag actions are the same
track container. Instead of looking up necessary information (track name,
type and container id) by track index, add it to the metadata.
Refactor canPasteSelection to take QDropEvent instead of the drop event's
QMimeData. Coincidentally, this fixes the method to be consistent with its
documentation.

Fixes #4844
2019-03-18 12:38:54 +01:00
Lukas W
dd6c18e62b Automation Editor: Don't accept drag events when there's no pattern
Fixes #4857
2019-03-18 12:38:37 +01:00
Martin Pavelek
0c3db1045c Fix Blackman-Harris window formula (#4895)
Adds missing parentheses
2019-03-17 23:00:47 +09:00
Johannes Lorenz
ef6bac68c2 Merge branch 'misc-lv2-preparation' 2019-03-17 11:23:59 +01:00
Johannes Lorenz
4129be873e Add explenation for LadspaControls::m_noLink 2019-03-17 11:22:05 +01:00
Johannes Lorenz
7e7141f388 Fix too small instrument tabs
Previously, they had been resized by the fixed size parent tab widget. We need
to do this manually now.
2019-03-17 11:02:41 +01:00
Johannes Lorenz
7e75a82f7e Always instantiate at least a dummy plugin 2019-03-16 22:05:46 +01:00
Johannes Lorenz
aac516e27f Forbid copying the Knob class 2019-03-16 20:59:45 +01:00
Johannes Lorenz
5101aa0214 Make Model class visitable 2019-03-16 20:19:27 +01:00
Johannes Lorenz
f8ba88d55a Make instrument window's piano optional 2019-03-16 20:10:19 +01:00
Johannes Lorenz
dd43127514 Allow instrument views to grow with contents
Make InstrumentTrackWindow as large as the InstrumentView requires
2019-03-16 19:46:21 +01:00
Johannes Lorenz
9aa997e574 Allow TabWidget to be variable sized 2019-03-16 16:38:16 +01:00
Johannes Lorenz
2d71d6163b Rework after code reading
* Fix possible segfault in `SubPluginFeatures::displayName`
* Minor fixes
2019-03-15 18:42:34 +01:00
Dominic Clark
3aeacca7ac Fix layout of VstSyncData struct
Ensure member of type double is 8-byte aligned for consistent layout between 32- and 64-bit Linux builds.
2019-03-14 09:44:48 +09:00
Dominic Clark
205b57531d Don't show error when loading empty VeSTige instance 2019-03-14 09:44:48 +09:00
Dominic Clark
6fef905dfe Ensure VST windows show properly in taskbar 2019-03-14 09:44:48 +09:00
Dominic Clark
17f6235500 Add VST always-on-top config option 2019-03-14 09:44:48 +09:00
Javier Serrano Polo
295b899df2 Avoid shallow clones in all Debian sid builds (#4888)
hallow clone may break version detection. This is fatal in Debian builds, so use full clone.

Note: This is safe for stable-1.2 but needs review after merging to master due to submodules.  See #4888 for more information.
2019-03-13 18:27:54 -04:00
tresf
97d5529c18 Fix compilation on Qt4 2019-03-12 00:25:17 -04:00
Johannes Lorenz
37290ace1d Add info about LadspaControls::m_noLink 2019-03-11 23:03:43 +01:00
tresf
04768ee3e1 Fix zyn pitch on project load/export
Closes #3451
2019-03-11 14:24:12 -04:00
Hyunjin Song
61c3f87ee6 Support FX Mixer for sample tracks and add controls to sample track window (#3866)
This work is based on https://github.com/LMMS/lmms/pull/3632 by @grejppi.
2019-03-11 17:06:39 +09:00
Hyunjin Song
5eb6b138aa Allow creating AppImages on systems newer than linuxdeployqt officially supports
Note that the additional -unsupported-allow-new-glibc switch
may result in an AppImage which is unusable on old systems.
2019-03-11 16:20:42 +09:00
Hyunjin Song
ae4e40de97 Modify VST build systems to make debian integration work correctly 2019-03-11 16:20:42 +09:00
Hyunjin Song
8c4514ff20 Check if winegcc works before building RemoteVstPlugin 2019-03-11 16:20:42 +09:00
Hyunjin Song
af40c764ef Better Wine detection and support
* Support more Wine packagings

* Allow building 64-bit RemoteVstPlugin using 32-bit Wine tools if possible

* Provide suitable library paths for creating AppImages
2019-03-11 16:20:42 +09:00
Hyunjin Song
97502a14ac Debian: don't bundle CALF LADSPA library separately anymore
It's LMMS specific now
2019-03-11 16:20:42 +09:00
Hyunjin Song
92805685b1 Debian integration: update build dependencies
It was wrongly done in 231a8407e8.
2019-03-11 16:20:42 +09:00
Hyunjin Song
9a91848b36 Fix CONTRIBUTORS override 2019-03-11 16:20:42 +09:00
Lukas W
7e1df5cec9 Add issue templates
Add Github issue templates for bug reports and feature requests
2019-03-10 14:47:05 +01:00
Michael Gregorius
2a72808095 Fix #3926: QCursor in AFP
Fix a crash that occurred on the following steps:
1. Add an AFP track.
2. Open it, and move the waveform display to overlap the track label
button.
3. Close the AFP window and open it again by clicking the track label.
4. Move the mouse pointer.

The problem occurs because the code makes the implicit assumption that
AudioFileProcessorWaveView::enterEvent (and hence
QApplication::setOverrideCursor) is called before
AudioFileProcessorWaveView::mouseMoveEvent. This is not the case when
the waveform display is on top of the track label. In this case the AFP
windows is opened with the mouse being immediately positioned over the
wave form display. There is no enter event and move events are issues
directly. This then leads to a crash in
AudioFileProcessorWaveView::mouseMoveEvent when trying to determine the
value for is_size_cursor because the override cursor is still null but
is dereferenced directly without checking.

Only adding a check would not solve the problem because in that case the
cursor would not change to the hand cursor when being moved inside the
waveform display.

The solution is to remove all calls to the global methods
setOverrideCursor and restoreOverrideCursor and to only set the cursor
locally.

This fix is based on a patch by gi0e5b06 which is committed under 8a10c52
in his repository but for which he never created a pull request.
2019-03-10 10:33:48 +01:00
Lukas W
17e87c1d68 Fix MidiJack crash on exit
* Fix uninitialized m_jackClient being used in MidiJack destructor
* Fix destruction order in Mixer.cpp so that MidiJack doesn't access the
  deleted AudioJack instance

Fixes #4688
2019-03-10 10:27:51 +01:00
Hyunjin Song
9148ce1b6f Fix loading 32bit VSTs when loading LMMS in the build directory
Fix another regression in #4797
2019-03-10 17:27:57 +09:00
Douglas
6b23e64c3b Merge pull request #3 from LMMS/master
Master
2019-03-09 10:01:59 -07:00
Hyunjin Song
9ea2611fa7 Fix loading 32bit VSTs on Linux
Fix a regression in #4797
2019-03-09 20:47:30 +09:00
justnope
6b19455875 Install 32-bit RemoteVstPlugin to a separate directory (#4797) 2019-03-07 19:55:12 +09:00
Javier Serrano Polo
cdd1ddbb0c Sync Debian version (#4840)
* Sync Debian version

* Drop temporary logging
2019-03-07 06:32:23 +01:00
tresf
9e6ce0638d Blacklist $HOME as VST directory
Closes #4854
2019-03-06 23:42:28 -05:00
Tres Finocchiaro
991ffcd2e0 Disable soundio on macOS
Temporarily disable soundio on macOS to address stability issues with PortAudio
Closes #4864
2019-03-05 16:42:36 -05:00
Alexandre Almeida
009a451d0b Fix AudioFileProcessor tooltip (#4868) 2019-03-05 16:36:01 -05:00
tresf
e54969c568 Add /sbin to AppImage search path
Closes #4846
2019-03-05 15:55:41 -05:00
Michael Gregorius
0e77947793 Fix failing build due to missing include
Fix the build of MixHelpers.cpp which fails due to a missing include of
cstdio (printf is not defined).
2019-03-03 14:44:19 +01:00
Alexandre Almeida
05d5e2036d Fix DrumSynth sscanf (#4869) 2019-03-03 09:44:20 +01:00
Lukas W
a233291c27 Add missing include
Compilation fails with debug build. Fixes regression from
dd99f3a7c4
2019-02-27 09:50:48 +01:00
Javier Serrano Polo
ad1fa16a95 Move apt_mingw_cache out of build directory (#4842) 2019-02-25 13:06:01 -05:00
Tres Finocchiaro
e34f75a8c7 Add needed macOS shortcuts (#4851)
Fix insert bars, delete bars, delete notes on Apple keyboard
2019-02-24 21:57:53 -05:00
Javier Serrano Polo
31dc8e18ff Test deployment preparation in regular builds (#4847)
Tests whether contributions break packaging inadvertently
2019-02-24 21:53:05 -05:00
Hyunjin Song
231a8407e8 Merge branch 'stable-1.2'
# Conflicts:
#	.travis.yml
#	.travis/linux..script.sh
#	.travis/linux.win32.script.sh
#	.travis/linux.win64.script.sh
#	.travis/osx..install.sh
#	.travis/osx..script.sh
#	data/locale/en.ts
#	data/locale/id.ts
#	include/Graph.h
#	include/VstSyncController.h
#	include/lmms_math.h
#	plugins/vst_base/RemoteVstPlugin.cpp
#	src/core/RemotePlugin.cpp
#	src/core/Song.cpp
#	src/core/Track.cpp
#	src/gui/SubWindow.cpp
#	src/gui/widgets/Graph.cpp
2019-02-24 20:45:52 +09:00
makepost
e7720cc8cb lmms_math: Fix build with musl
When deciding to polyfill glibc features, check if the standard library claims to be glibc, instead of enumerating platforms in the condition. Unlike master branch which in de3b344 changes math function calls to standard, stable-1.2 keeps their glibc names and fails to build on Linux with another libc such as musl.
2019-02-22 17:51:51 +01:00
Hyunjin Song
18d478782c Fix path to the LMMS binary in AppImage build script 2019-02-19 21:02:02 +09:00
Hyunjin Song
55eb831507 Bump version to 1.2.0-rc8 2019-02-19 10:53:42 +09:00
Hyunjin Song
97e738aa42 AppImage: bundle JACK fallback library correctly 2019-02-19 10:51:43 +09:00
liushuyu
71dbfb5297 i18n: pull from Transifex 2019-02-18 16:42:03 -07:00
Dominic Clark
505c642fbc Bring back PortAudio support on Windows (#4770)
Population of the PortAudio setup widget has been delayed until it is shown, as it was causing crashes on some systems.
2019-02-17 20:07:40 +01:00
Douglas
8d707df171 Fix Bitinvader waveform cutoff behavior 2019-02-15 11:31:01 +09:00
Hyunjin Song
fcacf44375 Ensure the restore button of a subwindow shows up correctly (#4819)
* SubWindow: ensure the restore button shows up correctly
* Remove old workaround for the maximize behavior on Mac
2019-02-12 05:27:08 +00:00
Javier Serrano Polo
e94d1c91e9 Move QT_X11_NO_NATIVE_MENUBAR to code (#4818)
Set Qt::AA_DontUseNativeMenuBar
Remove QT_X11_NO_NATIVE_MENUBAR from desktop launcher
2019-02-11 19:03:50 +00:00
Mister-Lemon
29c210128a Step Recording feature (#4544)
(Addresses #1421)

**Behaviour description:**

* Toggle step-recording mode using the dedicated icon.
* This mode is mutually exclusive with other recoding modes (record/record
  accompany).
* Step-Recording while song is playing is allowed (and fun! :) ).
* When start recording, the start recording-position will be set where the
  timeline curser points (quantized backwards using PianoRoll's current
  quantization). If step-recording is started while the pattern is playing the
  start recording-position is set to the beginning of the pattern.
* Step length is determined by the Piano Roll's current note-length (can be
  changed dynamically during step-recording).
* The record-position can be moved forward/backward using the right/left keys.
* When notes are pressed on keyboard/midi-device, they will be added
  temporarily ("recorded") with a length of a step. while still pressed, user
  can adjust the length by steps resolution using the arrow keys (e.g. moving
  right once will make the note's length 2-steps, another right press will make
  the length 3-steps etc.).
* When all pressed-keys are released, the actual recording happen and the
  notes are added.
* If the user press multiple notes, and release some of them for some time
  which indicates it is intentional i.e. he didn't want to do a full release
  to record the step but rather just change what will be recorded (I set the
  "intentional release threshold" to 70 milliseconds) - these note will be
  removed from current step-recording. e.g.
* Added notes are not quantized, making the addition simpler and WYSIWYG
* Similiarly to adding notes using mouse clicks, an undo-checkpoint is added
  per added step and not for the whole recording as in other record modes.
2019-02-09 22:45:27 +01:00
Hubert Figuière
bbedfa9ec5 Fix Linux HiDPI handling
Fix HiDPI order of operations, remove shortcut technique
2019-02-09 04:41:24 +00:00
CYBERDEViLNL
3d17200925 Better ghost notes context menu handling. 2019-02-08 17:36:00 +01:00
CYBERDEViLNL
9981b760e4 Ghost notes improvements.
* Make a copy of a pattern it’s notes instead of pointing to a pattern.
* Save/load the ghost notes in/from the DOM document.
2019-02-08 17:36:00 +01:00
Léo Andrès
7a0b874d17 shellcheck maxdepth 3
shellcheck against all project files, maxdepth of 3 directories
2019-02-07 14:52:12 -05:00
Javier Serrano Polo
3c88541345 Follow instructions from cartr/homebrew-qt4 (#4815) 2019-02-07 13:02:34 -05:00
Dominic Clark
c907fcdca5 Don't let silent instruments wake up sleeping effects (#4792) 2019-02-06 19:25:11 +01:00
justnope
e6bcf13cd3 replaced alternative token "not" with "!" 2019-02-04 10:36:27 +01:00
Johannes Lorenz
d9b5ee03fe Fix CI by reverting rpmalloc 2019-02-02 11:09:16 +01:00
Javier Serrano Polo
b28d405240 Disable built-in NaN handler through hidden setting (#4787)
* Disable built-in NaN handler through hidden setting

* Reuse code
2019-01-31 23:12:45 +01:00
Johannes Lorenz
0a47b0c8cd Fixes #4752: Update rpmalloc 2019-01-30 22:39:23 +01:00
Johannes Lorenz
42df251c66 Fix address in doc/AUTHORS
[ci skip]
2019-01-30 22:18:15 +01:00
Johannes Lorenz
fdccb38989 Fixes #4778: Update mailmap
[ci skip]
2019-01-30 21:56:32 +01:00
Oskar Wallgren
8618ab5d8f Increase forced clipping level 2019-01-28 19:12:06 +01:00
Steven Christy
b68c5ee5b5 Rendering looped sections multiple times on export (#4624) (#4639) 2019-01-27 10:22:47 +01:00
Hyunjin Song
c1ae1ed5f4 MIDI import/export: map note volume and MIDI velocity with their full range (#4785)
* MIDI export: map volume to MIDI velocity correctly

* MIDI import: map MIDI velocity to note volume with full range
2019-01-21 18:49:25 +01:00
Oskar Wallgren
6df6f12a3d Pianoroll - Add checkpoint before moving notes 2019-01-20 14:33:16 +01:00
Oskar Wallgren
dd99f3a7c4 Improve handling of nan/inf (#4743)
* 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.
2019-01-20 11:47:22 +01:00
Dominic Clark
1faaf008c8 Don't memcpy null pointer 2019-01-19 16:29:15 +00:00
Dominic Clark
227e88a347 Fix file extension list in translations 2019-01-19 16:29:15 +00:00
Dominic Clark
79374b3a0f Link RemoteZynAddSubFx with -mwindows 2019-01-19 16:29:15 +00:00
Dominic Clark
69a51eb28b Enable VST sync by default 2019-01-19 16:29:15 +00:00
Johannes Lorenz
d5dcebed83 Use QString for SubPluginFeatures' virtuals
The former virtuals returned `const char*`, which lead to invalid reads when
`LadspaSubPluginFeatures` returned pointers to temporary `QByteArray::data`.
2019-01-18 23:22:52 +01:00
https://gitlab.com/users/CYBERDEViLNL
5126070bb1 Add basic ghost notes feature. (#4575)
Lets you set a melody pattern as visible in the background of the Piano Roll
as support when building a new pattern. The pattern is visible throughout
the session or until cleared via the provided button.
2019-01-17 19:07:52 +01:00
Douglas
1404b723b5 Initialize peak controller last sample with base value fix (Stable 1.2) (#4699) 2019-01-16 19:59:40 +00:00
Javier Serrano Polo
8dea34e1b8 Do not depend on Git history, use data from 2019-01-07 (#4763) 2019-01-16 03:08:14 +01:00
Javier Serrano Polo
e074841d44 Fix before_deploy (#4764) 2019-01-14 09:47:34 +01:00
bth
68cefc15c4 Set 32 for buffersize min value in gui (#4336)
This is a bit too low resolution as some values cannot be reached by dragging the slider so we also reduce the maximum buffer size to 4096.
2019-01-13 10:31:39 +01:00
Tres Finocchiaro
d9f5e8a6df Fix left 1px lfo graph
Closes #4597, supersedes #4613
2019-01-12 23:17:24 -05:00
Tres Finocchiaro
f382e5e36f Fix builds on macOS Mojave 10.14 (#4767) 2019-01-10 23:43:00 -05:00
T0NIT0 RMX
e2de0ece8c Fix infinite MIDI note with VST made in Cabbage (LMMS#4380) (#4766) 2019-01-10 20:00:40 +01:00
Hyunjin Song
e116cc0701 Allow console output on Windows if available (#4719) 2019-01-10 15:13:30 +09:00
Pavel Shlyak
c467f5b08a Corrected assignment (#4757)
There is no need in conversion from float to integer
2019-01-06 21:30:27 -05:00
Lukas W
a0ace860f4 MSVC: Fix SID (#4505)
Use the provided working buffer instead of a local one to avoid use of VLA
2019-01-06 19:27:58 -05:00
Hyunjin Song
2ee02d97cb Keep off-grid position of TCOs on group moving (#4262) 2019-01-06 19:21:35 +09:00
Javier Serrano Polo
7f0593c601 Add source build artifact (#4744) 2019-01-03 21:44:49 +01:00
Douglas
a2b123e5bc Merge pull request #2 from LMMS/master
Master
2019-01-02 17:33:59 -07:00
Johannes Lorenz
5ebe0e002d Merge pull request #4750 from JohannesLorenz/master
Extend quoting for AutomatableModels
2019-01-02 12:27:25 +01:00
Johannes Lorenz
ee05523319 Extend quoting for AutomatableModels
This now also quotes, if required:

- non automated models
- models controlled by controller
2019-01-01 20:58:16 +01:00
Oskar Wallgren
4c7ca3972c Don't render Automation tracks in the Beat/Bassline (#4747) 2018-12-31 15:50:57 +01:00
Oskar Wallgren
a3ede058cd FX autoquit disabled by default (#4378)
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.
2018-12-31 15:50:11 +01:00
Johannes Lorenz
aa0ce7fc54 Improve CALF's CMakelists
Let CALF's CMakelists apply the name filter only on the basenames of the
files, but not on their directories. This prevents errors if the LMMS folder
is under a directory which contains, e.g., "lv2".
2018-12-28 16:02:40 +01:00
Johannes Lorenz
f3b23830fb Fix missing IntrumentTrack header 2018-12-27 22:37:34 +01:00
Johannes Lorenz
fcd1a7ee86 Fix or remove wrong or useless debug printfs 2018-12-27 22:15:56 +01:00
Johannes Lorenz
4d64c422b2 Fix Engine.cpp not compiling on some compilers 2018-12-27 21:59:50 +01:00
Johannes Lorenz
a1b355828e Allow sub plugins for instruments aswell
* Move m_key member of Effect into Plugin
* Pass key to Instrument ctors and instantiaters
* Add pluginKeys to all plugin selector widgets, and let them pass the keys
  when instantiating the instruments; or, if the keys must be passed over
  threads, pass the keys to the Engine using `Engine::setDndPluginKey()`
* As instrument plugin libraries now also need to get their key passed, their
  second argument, which was always the same as the first, is now used to pass
  the sub plugin keys. This affects *all* instrument plugins.
* Plugin.h: Add more virtuals to `SubPluginFeatures` in order to draw logos
  and images into instrument selector widgets
* LadspaSubPluginFeatures: Implement the `displayName` virtual because the
  new behaviour to resolve displayNames is to first look at the
  SubPluginFeatures, which, without override, returns the superior plugin's
  name (Plugin.cpp)

Additional:

* PluginFactory.h: Allow setting up search paths without discovering plugins
  yet
* Plugin.h: Add full documentation (should be checked)
2018-12-27 21:24:19 +01:00
Javier Serrano Polo
4d2e89bee2 Add Debian sid Clang build pass (#4735) 2018-12-27 20:15:42 +01:00
xy124
dd6d4a552b Fix broken FxLine tool tips (#3321) 2018-12-24 13:42:34 +01:00
Hyunjin Song
e1d9d899fd Fix lost control links in copied automation patterns (#4723)
This hack should be removed once the automation system gets fixed.
2018-12-22 11:37:34 +09:00
Javier Serrano Polo
642b5e7d04 Add Debian sid i386 build pass (#4727) 2018-12-19 12:45:33 +01:00
Johannes Lorenz
05128b9a33 Fix error in SetupDialog
This adds constants into a lambda capture list. Unnecessary, says the
C++14 standard, but this fixes the MSVC C++11 error.
2018-12-12 17:10:54 +01:00
Javier Serrano Polo
698c39d385 Add Debian sid build pass (#4707)
* Add Debian sid build pass

* Update file locations and copyright

* Use ccache

* Redirect within sudo

* Work around a pbuilder bug which breaks ccache

* Debian: enable parallel builds

* Travis: Debian: fix caching

* Fix shellcheck warnings
2018-12-09 11:19:15 +01:00
Dominic Clark
9c9290eeeb Support more than 62 simultaneous VST plugins for Qt<5.10 2018-12-08 00:30:45 +01:00
Dominic Clark
614bca7f04 Make ppqPos in VST sync sample accurate 2018-12-08 00:30:45 +01:00
Dominic Clark
3a94ed3f3f Fix occasional Sinnah hang 2018-12-08 00:30:45 +01:00
Dominic Clark
277e8b6444 Don't create MDI subwindow for VSTi without GUI 2018-12-08 00:30:45 +01:00
Johannes Lorenz
cf3d7950b1 Refactor SetupDialog 2018-12-01 11:01:39 +01:00
Hyunjin Song
3922d25b50 Fix CircleCI builds
I don't know why, but it fails to fetch submodules...
2018-11-29 12:06:02 +09:00
Hyunjin Song
187fbf4191 AppVeyor: don't specify any patch version of Qt
Fixes broken build due to the upgraded Qt version in the AppVeyor image.
2018-11-29 12:06:02 +09:00
Hyunjin Song
244b70b4c8 Fix building unit tests targetting windows
Fixes MSVC's LNK4217 warnings and MinGW errors.
2018-11-29 12:05:59 +09:00
Hyunjin Song
d9b91338ea Fix finding pkg-config on cross compile
Switch back to `ENV{PKG_CONFIG}` to ensure that
FindPkgConfig doesn't overwrite `PKG_CONFIG_EXECUTABLE`.
Since CMake 3.3 supports the environment variable,
it's safe to use that.
2018-11-22 14:01:23 +09:00
Javier Serrano Polo
c3b07a5092 New pixmap as per #4519 (#4708) 2018-11-16 21:45:19 +01:00
Javier Serrano Polo
ff060982ac Add initial Debian packaging for stable-1.2 (#4697)
* Add initial Debian packaging for stable-1.2

* Drop Debian menu entry
2018-11-14 14:01:00 +01:00
Dominic Clark
2070ef21f5 Handle automation on processing thread (#4692) 2018-11-13 07:24:08 +09:00
Karmo Rosental
a8828d332c Update TimeLineWidget 60 times per second (#4703)
In addition to #4570.
2018-11-09 16:20:38 +09:00
Hyunjin Song
86f9a75d98 Fix song editor visualization after maximizing (#4698) 2018-11-07 13:41:03 +09:00
Hyunjin Song
4252f755c2 Merge branch 'stable-1.2'
# Conflicts:
#	cmake/nsis/CMakeLists.txt
#	src/core/ProjectRenderer.cpp
#	src/tracks/Pattern.cpp
2018-10-29 16:20:58 +09:00
Hyunjin Song
d8fb07ff52 Fix minor glitches with sample tracks (#4666)
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.
2018-10-29 16:17:41 +09:00
Hyunjin Song
1f7cd3ed5a Allow building SF2 player with FluidSynth 2.x (#4678)
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.
2018-10-28 10:31:33 +09:00
Johannes Lorenz
5c362e51ac Fix not saving some automations (#4632) (#4667)
Save automation of
* Track::muted
* Track::solo
* EffectChain::enabled
2018-10-24 22:23:21 +02:00
Hyunjin Song
1ab1280843 Don't quit CLI rendering when failed to load sample files
Per https://github.com/LMMS/lmms/pull/3293#discussion_r225765957
2018-10-23 12:43:25 +09:00
Tobias Junghans
811188bb7a Update name in mailmap
[ci skip]
2018-10-21 18:19:42 +02:00
Johannes Lorenz
4babbe25c5 Enable compiled-in XPM pixmaps (#4578) 2018-10-11 19:32:11 +02:00
Johannes Lorenz
fbdd09dbf5 Fix german locale ('<Strg> + Mittelklick') 2018-10-11 19:28:41 +02:00
Hyunin Song
7aeddc648a Fix unit tests for automation
Cherry-picked from 'master'.
Orignal commit: 0a6a6d1a77
2018-10-08 16:20:03 +09:00
Hyunjin Song
43b700d23c Ensure correct TCOs after cloning tracks into the BB editor
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.
2018-10-08 12:33:00 +09:00
Hyunjin Song
5a92105735 Don't always treat empty long patterns as BB patterns
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.
2018-10-08 12:33:00 +09:00
Hyunjin Song
fb5c8f510a Fix VST track cloning in Beat/Bassline editor 2018-10-08 12:33:00 +09:00
Johannes Lorenz
a0737a4efc Add AutomatableModel nodename attribute (#4578)
* Save `AutomatableModel` nodename in attribute if it must be quoted
* Loading an `AutomatableModel` with name <name> now means it
  - either <name> must be `QDomElement::nodeName()` (as before)
    *and* must not have a `nodename` attribute (new)
  - or must have a `nodename` attribute with value <name>
2018-10-07 11:46:10 +02:00
Hyunjin Song
9799f3ca1c Fix Carla detection in AppImage launcher script
Fixes a typo which hardcodes Carla path at the packaging time.
2018-10-04 14:24:52 +09:00
Tres Finocchiaro
0dc1bdbb68 Minor cmake fixes (#4636)
Minor cmake fixes
2018-09-30 21:30:56 -04:00
Hyunjin Song
bd3f40933c Fix compilation on non-x86 platforms 2018-09-27 23:23:41 +09:00
Hyunjin Song
a2685c1cca Bump version to 1.2.0-rc7 2018-09-25 16:47:51 +09:00
Tres Finocchiaro
27fd8d0460 Add wiki as clonable submodule (#4588)
* Add wiki as clonable submodule per #4578
2018-09-24 11:04:51 -04:00
Umcaruje
8154f886ed Update the LMMS logo and mimetypes (#4519)
* 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
2018-09-24 11:09:49 +02:00
Johannes Lorenz
93dc557c56 Add bash completion (#4534) (#4604)
* Add bash completion (#4534)
2018-09-23 21:17:39 -04:00
Hyunjin Song
222b28a71e Add '-Wno-misleading-indentation' only for GCC >= 6 2018-09-21 10:33:33 +09:00
Hyunjin Song
9fe74c2730 Specify infinte timeout in tryLock on export
Ensures remote plugins always process sound on export.
Follow-up of 408b72c798.
2018-09-19 19:52:08 +09:00
Z3R0C
00cc6dc22b Fix sample track playback crash (#4586)
Fixes double-freeing `AudioPort` which is a regression in #4310.

Co-authored-by: Shmuel H <shmuelhazan0@gmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2018-09-18 11:21:45 +09:00
Hyunjin Song
78142cee3d Update ZynAddSubFX submodule 2018-09-18 09:56:09 +09:00
Hyunjin Song
4069aaada2 Merge branch 'stable-1.2'
# Conflicts:
#	.travis/osx..install.sh
#	CMakeLists.txt
#	cmake/apple/install_apple.sh.in
#	doc/lmms.1
#	include/VstSyncController.h
#	plugins/carlabase/carla.h
#	plugins/vestige/vestige.cpp
#	plugins/vst_base/CMakeLists.txt
#	plugins/vst_base/RemoteVstPlugin.cpp
#	plugins/vst_base/Win64/CMakeLists.txt
#	plugins/zynaddsubfx/zynaddsubfx
#	plugins/zynaddsubfx/zynaddsubfx/src/Misc/QtXmlWrapper.cpp
#	src/core/Song.cpp
#	src/core/main.cpp
2018-09-18 09:54:38 +09:00
Karmo Rosental
dd7b0865fb Update UI 60 times per second (#4570)
* Update UI 60 times per second

* Adjust falloff values
2018-09-17 23:49:25 +09:00
Johannes Lorenz
20e4668d85 Replace deprecated QDrag::start by QDrag::exec 2018-09-15 20:17:35 +02:00
Johannes Lorenz
767607e0c8 Spelling fixes in German locale 2018-09-15 20:17:35 +02:00
Tres Finocchiaro
153f15f4b4 Add Carla support for MacOS (#4558)
Add Carla support for MacOS
2018-09-15 09:32:29 -04:00
Hyunjin Song
91ca660161 Fallback to default audio/MIDI backends if invalid one is set
Also shows the setup dialog in case of invalid audio backends
2018-09-13 11:01:49 +09:00
Hyunin Song
3064f03818 Validate audio/MIDI backend when opening setup dialog
Original work: #4372 by @justnope
2018-09-13 11:01:49 +09:00
Johannes Lorenz
a5a13b1256 Restructure help
* Allow actions (dump, render*, upgrade) without minuses
* Restructure help in CLI
* Restructure help in man pages
2018-09-12 22:25:33 +02:00
Hyunjin Song
f37ca49e6d Fix decimal separator handling (#4547)
Makes LMMS can handle both periods and commas properly when loading real numbers.
2018-09-12 11:02:40 +09:00
Dominic Clark
c3db486be0 Set VST program first when restoring settings
Fixes a bug where some VSTs (e.g. Temper) would have their settings reset on project load, due to using programs as presets.
2018-09-11 22:01:11 +09:00
justnope
4c7c68f45a Initialise OLE in RemoteVstPlugin
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>
2018-09-11 22:01:11 +09:00
DomClark
0ad8527ff7 Link RemoteVstPlugin with -mwindows
Stops each remote plugin process spawning a console host, and seems more in line with what other hosts do.
2018-09-11 22:01:11 +09:00
DomClark
53dadd5735 Fix VST windows resizing a little incorrectly
This was fixed for setting the initial size of the window in 8e9f74d, but I missed the resizing case.
2018-09-11 22:01:11 +09:00
DomClark
2c5cda563b Fix kVstTransportChanged flag usage in VST sync
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.
2018-09-11 22:01:11 +09:00
DomClark
cc2ae66540 Fix hang when updateInOutCount called from processReplacing
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.
2018-09-11 22:01:11 +09:00
DomClark
de427bbcf8 Suspend plugin when changing sample rate/buffer size
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.
2018-09-11 22:01:11 +09:00
Lukas W
6f32c962b4 Fix invisible editors on project load by validating size (#4502) 2018-09-03 19:39:23 +09:00
Hyunjin Song
a1415a374b Fix AppVeyor CI failure due to Vcpkg
Adds --recurse option to allow rebuilding dependencies
2018-09-01 14:04:48 +09:00
Tobias Kortkamp
4bb6586c66 Allow building with sndio support on more systems than just OpenBSD (#4486)
Sndio also supports FreeBSD and Linux.
2018-08-27 16:19:23 -04:00
Hyunjin Song
a0cbcb6ec4 Remove Qt temporary files after loading ZynAddSubFX settings (#4551) 2018-08-25 15:29:40 +09:00
Hyunjin Song
763c08b8b6 Fix typo in previous merge 2018-08-25 08:51:29 +09:00
Hyunjin Song
3d5e74d638 Merge branch 'stable-1.2'
# Conflicts:
#	cmake/modules/MinGWCrossCompile.cmake
#	plugins/FreeBoy/FreeBoy.cpp
2018-08-24 09:54:39 +09:00
Hyunjin Song
12d251cc3e Merge branch 'stable-1.2'
# Conflicts:
#	cmake/linux/package_linux.sh.in
#	data/locale/cs.ts
2018-08-24 09:50:36 +09:00
Hyunjin Song
7f541a544e Don't try to clear null buffer in NotePlayHandle::play (#4545)
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.
2018-08-22 20:17:56 +09:00
Michael Gregorius
8d00e90322 Remove peak value references from Mixer::getPeakValues
Adjust Mixer::getPeakValues so client do not have to allocate the
variables that will store the peak values.

Adjust both existing clients: FxMixer and VisualizationWidget.
2018-08-16 19:49:30 +02:00
Michael Gregorius
160488c096 Make the oscilloscope colors available as properties
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.
2018-08-16 19:47:58 +02:00
Ivo Wetzel
0cddc469bc Fix Freeboy noise channel playback (#4538)
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.
2018-08-16 12:05:50 +09:00
Tres Finocchiaro
2ecc8bb4fa Add CMake 2 support (#4530)
Partially reverts d599955
2018-08-07 15:26:58 -04:00
Tres Finocchiaro
b5dc70c20a Fix AppImage shim launcher
Due to upstream change in linuxdeployqt
2018-08-05 23:53:49 -04:00
Lukas W
c44bc4eb7f CMake: Fix missing space in linker flags
Fixes #4518, a regression from a7b0c99242
2018-08-02 21:20:25 +02:00
Hyunjin Song
e07f9a3b64 Don't use dummy controllers for connections if not loading projects (#4493)
Remove the need of ControllerConnection::finalizeConnections
when not loading projects.
Fix ZynAddSubFX knob disconnection when exporting.
2018-08-01 14:35:16 +09:00
Oskar Wallgren
b268abba45 Fix some formatting issues in translations (#4482)
* Swedish translation formatting and fixes
* German translation formatting
* Czech translation formatting
* Spanish translation formatting
* Farsi translation formatting
* French translation formatting
* Italian translation formatting
* Portuguese translation formatting
* Galician translation formatting
* Russian translation formatting
* Ukrainian translation formatting
* Japanese translation formatting
2018-07-31 05:04:20 +02:00
Oskar Wallgren
b67cfffe5f InstrumentFunctions - Arpeggiator code refactoring (#4487) 2018-07-29 15:34:46 +02:00
Lukas W
792cf7a262 CMake: Fix FindFFTW pkg-config bug
Remove the REQUIRED flag from pkg_check_modules for when pkg-config is
available but cannot locate FFTW.
2018-07-29 14:03:36 +02:00
Oskar Wallgren
b9634fa672 Setup Dialog - Fix bottom of letters cut off (#4483) 2018-07-28 14:07:21 -04:00
Lukas W
1c5e374192 MSVC: Fix Xpressive instrument 2018-07-28 14:44:51 +02:00
Lukas W
d4f4500359 Fix compiler warning 2018-07-28 14:38:51 +02:00
Lukas W
b7c09974ac MSVC: Fix Monstro instrument 2018-07-28 14:20:36 +02:00
Lukas W
57c85f49b7 MSVC: Fix ReverbSC 2018-07-28 14:09:00 +02:00
Lukas W
ac65fb9924 MSVC: Fix Organic instrument 2018-07-28 14:00:06 +02:00
Lukas W
adcc009d2b MSVC: Fix vibed plugin 2018-07-28 13:44:16 +02:00
Lukas W
f245d7454b MSVC: Enable VstEffect 2018-07-27 18:03:51 +02:00
Hyunin Song
112d34226a Fix broken MIDI import
Fix a regression in 3e538d510c (#4401) that
readAllData doesn't read the file from the beginning
2018-07-27 15:48:58 +09:00
Lukas W
515fefa6ce Winewrapper fixes (#4501)
* Fix library fix regression from 38f6371de6
* Fix missing windows include directory
2018-07-26 18:37:35 +02:00
Lukas W
7ddca851d1 VstPlugin: Fix detecting machine type with relative paths 2018-07-26 14:16:15 +02:00
Lukas W
ce4c01246b Merge branch 'PJ-Finlay-stable-1.2'
# Conflicts:
#	CMakeLists.txt
2018-07-22 11:55:22 +02:00
Lukas W
e65ccea7ba Merge branch 'stable-1.2' 2018-07-22 11:49:20 +02:00
Lukas W
63fd427c5e CMake: Minor uninstall changes
* Fix missing CMAKE_UNINSTALL_PREFIX variable
* Use CMAKE_MINIMUM_REQUIRED instead of CMAKE_POLICY for IN_LIST support
* Use FILE(REMOVE …) instead of EXECUTE_PROCESS(…) for better performance
* Control flow changes
2018-07-22 11:41:54 +02:00
P.J. Finlay
020ce8e4db Added an uninstall target for make 2018-07-21 21:42:54 -04:00
Lukas W
a35d23f3b8 Merge remote-tracking branch 'lukas/cleanup/qt4' 2018-07-17 08:57:57 +02:00
Lukas W
ff1c30e35d Merge remote-tracking branch 'lukas/cleanup/qt4'
# Conflicts:
#	cmake/toolchains/common/MSYS.cmake
2018-07-17 08:52:49 +02:00
Lukas W
8cca464c27 CMake: Add support for clcache 2018-07-17 08:49:13 +02:00
Lukas W
820d006c4e Add Appveyor script, fix 32bit Windows compilation 2018-07-17 08:49:13 +02:00
Oskar Wallgren
45d3359e21 Some demo project license fixes (#4481)
Add some missing licenses and split out CapDan and Skiessi project
licenses to their own files in the corresponding directories.
2018-07-15 14:03:37 +02:00
Hyunjin Song
408b72c798 Use tryLock in audio threads for VST/ZynAddSubFX (#4460)
Prevent loading VST or toggling ZynAddSubFX GUI
from blocking entire audio processing
2018-07-13 10:40:24 +09:00
Hyunjin Song
9f64d52146 Always show sample track panning knobs (#4477)
Fix hidden sample track panning knobs when using compact track buttons
2018-07-12 09:49:02 +09:00
Lukas W
3a7b5207b4 CMake: Fix mismatching if condition error
Regression from c45a21aac3
2018-07-11 21:56:50 +02:00
Lukas W
c670d4827a Minor QString usage improvements 2018-07-11 20:13:47 +02:00
Lukas W
cce730ebff Add CMake find modules for FFTW, LibSampleratae and LibSndFile.
Removes reliance on pkg-config for finding these libraries.
2018-07-11 19:57:09 +02:00
Michael Gregorius
8dab817e13 Implement changes from a code review
Use tabs in the style sheets. Make the calculation of the Y offset more
concise.
2018-07-10 22:43:16 +02:00
Michael Gregorius
0dc28436fa Add option to show note values on notes in Piano Roll (#4466)
Add the option to show note values on notes in the Piano Roll. This
functionality is currently coupled with the option "Enable note labels
in piano roll" which can be found in the main menu.

The notes are rendered at about 80% of the notes height. They are only
rendered if they fit on the whole note and if the font does not become
too tiny.

Enable the configuration of the note value text's color via the
stylesheets and set the value to white for both shipped themes.

Other changes:
* Clean up some warnings about old school casts and implicit casts.
2018-07-10 22:43:16 +02:00
Hyunjin Song
f2d68326a7 Fix occasional audio interface deadlock (#4450) 2018-07-10 11:13:56 +09:00
David CARLIER
1efcec7790 Removing unsetting jack headers path so weakjack can benefit it (#4373) 2018-07-09 11:47:00 -04:00
Lukas W
846a2afeaa Merge branch 'msvc/vst-rebase' (#4421) 2018-07-07 17:17:59 +02:00
Lukas W
f8f38a3d87 CircleCI: Make sure build fails when AppImage building does 2018-07-07 17:16:08 +02:00
Lukas W
e1cdfd1d47 RemotePlugin: Revert unnecessary invalidate() changes
Reverts some changes made in 9db8cbfb31.

The consequences of this changes are unsure, so reverting them for now.
Since a VST plugin's architecture is now detected before trying to load it,
this fix is not needed any more for 64&32-bit VSTs to work, as the
idVstBadDllFormat-message-mechanism was removed.

It should be noted however that the bug still exists, probably rendering
4fd8ecd7e4 ineffective.
2018-07-07 17:16:08 +02:00
Lukas W
156c134301 winegcc_wrapper: Remove misleading usage hint
winegcc_wrapper.in is only intended to be used within FindWine.cmake. Also
moved it to the same directory for this reason.
2018-07-07 17:16:08 +02:00
Lukas W
d42194f8e1 VstPlugin: Fix define naming conflict with MinGW 2018-07-07 17:16:08 +02:00
Lukas W
38f6371de6 Fix AppImage 64bit RemoteVstPlugin libwine discovery 2018-07-07 17:16:08 +02:00
Lukas W
ae815d3ac7 CircleCI: Display Appimage log when failing 2018-07-07 17:16:08 +02:00
Lukas W
b4d6332632 Fix AppImage VST 2018-07-07 17:16:08 +02:00
Shmuel H
e2a7587600 AudioSdl: Use NULL for device names in order to get the default device.
The zero index device may not be the default device.

Many thanks to @PhysSong.
2018-07-07 17:16:08 +02:00
Shmuel H
ff8de2d7eb AudioSDL -> SDL2: Fix a crash from calling a SDL1 function instead of
SDL2's.
2018-07-07 17:16:08 +02:00
Shmuel H
ec28a65c89 AudioSdl: Add support for full SDL2 with float samples and recording
(with backward compatibility for SDL1).

Cherry-picked from dcc442411f
2018-07-07 17:16:08 +02:00
Lukas W
8165152552 MSVC VST compilation fixes 2018-07-07 17:16:08 +02:00
Lukas W
fe2483e309 Enable 64bit VSTs on Linux
* Remove trial-and-error approach of detecting VST's machine types. Read PE
  headers instead.
* Add RemoteVstPlugin64 to AppImage
2018-07-07 17:16:08 +02:00
justnope
f2a8f56944 MSVC fixes (#4352)
* locale: using path instead of individual files to reduce command line size
* remotevstplugin: changed order return type & calling convention (compiler error)
* lmmsobj: removed single quotes for command line defines
* added vcpkg support & std::make_unique for MSVC
* carla: include exports header
* package_linux: corrected RemoteVstPlugin name
* vstbase: toolchain file conditional on MSVC
* Added install for remotevstplugin
* msvc: installer works with vcpkg

Remotevst 64bit install removed due to an ApImage problem
2018-07-07 17:16:08 +02:00
Lukas W
23e284b189 CMake: Fix Clang detection 2018-07-07 17:16:08 +02:00
Lukas W
20a6b96161 Fix 64bit VSTs on Linux by fixing callback calling convention 2018-07-07 17:16:08 +02:00
Lukas W
d454ef60e2 More export fixes 2018-07-07 17:16:08 +02:00
Lukas W
90799d91ea Mingw64 compilation fixes 2018-07-07 17:16:08 +02:00
Lukas W
2e6bb72847 Fix export errors with MinGW 2018-07-07 17:16:08 +02:00
Lukas W
48cdce9a79 Fix compilation with MinGW versions without threads support
Older versions of MinGW don't provide std::mutex or std::thread
2018-07-07 17:16:08 +02:00
Lukas W
ff9622c10e CMake quoting fixes 2018-07-07 17:16:08 +02:00
Lukas W
bba072d54e VST build fixes 2018-07-07 17:16:08 +02:00
Lukas W
ea154694f9 Fix Linux VST compilation 2018-07-07 17:16:02 +02:00
Lukas W
47a5248d1d Linux compile fixes 2018-07-07 16:40:37 +02:00
Lukas W
7feedb4ed9 VST: Fix main entry calling convention
This will probably break everything, but it was needed to load 32bit VST
plugins with MSVC.
2018-07-07 16:40:37 +02:00
Lukas W
d756a7ade0 MSVC: Fix VST build 2018-07-07 16:40:37 +02:00
Lukas W
07a22181da RemoteVstPlugin: Debug LoadLibrary failure 2018-07-07 16:40:37 +02:00
Lukas W
87a7b0a2f0 MSVC: Port RemoteVstPlugin 2018-07-07 16:40:37 +02:00
Lukas W
1027386113 CMake: Fix MSVC architecture detection 2018-07-07 16:40:33 +02:00
Lukas W
966bf1c6de Use CMake GenerateExportHeader 2018-07-07 11:20:54 +02:00
Hyunin Song
170a46e7a3 Merge branch 'stable-1.2' 2018-07-07 10:40:35 +09:00
Hyunin Song
0f3b41f590 Fix fwrite parameter ordering 2018-07-07 10:37:30 +09:00
Lukas W
a7b0c99242 MSYS compilation fixes
* Fix MSYS and processor detection when not using the provided toolchain
  file
* Fix creation of import library (ENABLE_EXPORTS not working)
2018-07-06 15:58:29 +02:00
Lukas W
3c6f200beb Merge branch 'stable-1.2'
# Conflicts:
#	cmake/modules/BuildPlugin.cmake
#	plugins/CMakeLists.txt
#	plugins/LadspaEffect/swh/CMakeLists.txt
#	plugins/LadspaEffect/tap/CMakeLists.txt
#	plugins/zynaddsubfx/zynaddsubfx
#	plugins/zynaddsubfx/zynaddsubfx/src/Misc/QtXmlWrapper.cpp
#	src/gui/MainWindow.cpp
2018-07-06 12:42:15 +02:00
Hyunin Song
62d505b2e6 Improve STK rawwave path encoding handling
Still incomplete on Windows due to an upstream issue
2018-07-05 20:16:01 +09:00
Hyunin Song
3e538d510c Fix MIDI import encoding issue on Windows 2018-07-05 20:16:01 +09:00
Hyunin Song
1af0f083ea Fix WAV exporting on Windows 2018-07-05 20:16:01 +09:00
Hyunin Song
ddcae478d4 Fix sample file loading on Windows 2018-07-05 20:16:01 +09:00
Hyunin Song
9d0aae2708 Fix file name encoding issues with ZynAddSubFX on Windows 2018-07-05 20:16:01 +09:00
Hyunin Song
792e4786ad Fix file name encoding issues with VST on Windows
Fix plugin loading and setting loading/saving
2018-07-05 20:16:01 +09:00
Pikamander2
406bbcc2ee Fix grammar on MIDI import dialog (#4457) 2018-07-02 11:37:05 +09:00
Hyunin Song
e9f2b57107 Fix project URL for some files
They were created before https://github.com/LMMS/lmms/pull/3326
and added after it.
2018-06-28 20:23:53 +09:00
Hyunjin Song
28a522806b Fix hang on exit from specific MIDI devices + WinMM (#4451) 2018-06-27 08:59:36 +09:00
Lukas W
392c7534d5 Fix Clang compilation 2018-06-22 17:44:26 +02:00
wadej
c3575a4c17 Ensure MSVC startup project is LMMS 2018-06-22 17:44:26 +02:00
Lukas W
c45a21aac3 CMake: Fix FindSndio module
Fixes a bug where the module would set SNDIO_LIBRARY to NOT-FOUND
resulting in a CMake error when trying to link to ${SNDIO_LIBRARY}.
2018-06-20 08:47:10 +02:00
Lukas W
d1c36d7b96 CMake: Fix errors when path contains spaces 2018-06-20 08:47:10 +02:00
Oskar Wallgren
583e42e5bb Quit exit if failing to save project (#4428)
* Quit exiting when failing to save project

*Test outcome of save in MainWindow::saveProjectAsNewVersion()
2018-06-19 21:59:12 +02:00
Hyunjin Song
6af5154bec LADSPA: Fix undefined reference due to vectorization (#4434) 2018-06-19 09:32:11 +09:00
Hyunjin Song
b52861f19f Fixup 1bae047b98 2018-06-18 12:35:17 +09:00
Hyunjin Song
1bae047b98 Fix wrong accelerator character in sv.ts
Fixes #4415
2018-06-18 10:58:45 +09:00
Lukas W
11c693205e Remove usage of deprecated Qt API
Removes usage of the following deprecated Qt functions:
- QPixmap::grabWidget
- QString::null
- qFind
- qSort
- qGreater
- qCopy
2018-06-17 14:27:28 +02:00
Lukas W
fefec9a8c6 Fix cleanup logic error 2018-06-17 14:03:01 +02:00
Lukas W
da1c78ce86 Remove Qt4 compatibility code 2018-06-17 12:47:12 +02:00
Lukas W
a87aa7e356 Merge branch 'stable-1.2'
# Conflicts:
#	src/gui/widgets/EffectView.cpp
2018-06-17 11:51:50 +02:00
dobbelaj
d11966a7ea Introduce UI_CTRL_KEY and use where appropriate (#4431)
This is an abstraction for the name of the 'Ctrl' (or equivalent) key on
linux, windows and apple
2018-06-17 11:20:00 +02:00
Hyunjin Song
df329e6f5e Merge branch 'master' into groove 2018-06-15 10:55:51 +09:00
Hyunjin Song
407973ad6f Fix crash when loading project with missing peak controller effect (#4391)
* Fix crash when loading project with missing peak controller effect

* Don't load/save dummy controller connections
2018-06-13 14:50:27 +09:00
Oskar Wallgren
1bdaafc488 Typo - austain -> sustain 2018-06-10 16:39:12 +02:00
Dave French
662f5199fd Merge pull request #4416 from curlymorphic/eqaa
Equalizer plugin has antialiasing enabled in the spectrum analyzer
2018-06-09 21:30:15 +01:00
curlymorphic
cbf4d5056d Equalizer plugin has Antialiasing enabled in the spectrum analizer widget 2018-06-09 20:58:47 +01:00
Dave French
0e98e03745 Equaliser, Disable analyser when not visible (#4399) 2018-06-08 18:26:07 +02:00
Dave French
7f284626e4 Merge pull request #4396 from curlymorphic/eqlp
Fix one of Equlizer LP48 filter taking HP value
2018-06-06 02:38:03 +01:00
Hussam al-Homsi
6d46bd473f Remove "What's This?" and update tooltips (#4128) 2018-06-06 01:50:11 +03:00
Hyunjin Song
2f19fa11c8 Piano roll: reset editing mode when lost focus (#4393) 2018-06-05 17:39:04 +09:00
curlymorphic
5751d75ced The Equliser plugin had a bug,where the LP48 filter was having one of its
poles incorrectly set by the HP filter model. This resulted, in an unusable
LP48 filter.

This fixes the above.
2018-06-03 15:14:53 +01:00
Hyunjin Song
3bf3fab0e3 Piano roll: Fix some crashes when no pattern is open (#4392) 2018-06-03 22:12:28 +09:00
Hyunjin Song
a9b5b92a2b Deselect FX channel's name text when losing focus (#4293) 2018-06-03 21:35:36 +09:00
Colin Wallace
4fd8ecd7e4 RemoteVST: process all remaining messages after the process has quit
Courtesy of @justnope (https://github.com/LMMS/lmms/pull/4371)
2018-06-01 20:53:35 -07:00
Douglas
fad13626bc Initialize peak controller last sample with base value (#4382)
* 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.
2018-06-01 20:47:32 -07:00
Douglas
0d7ea273dc Initialize peak controller last sample with base value (#4382)
* 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.
2018-06-01 20:41:52 -07:00
Lukas W
d3c90a81b9 Fix automation processing priority
Fixes regression from 75077f6200 that caused
global automation tracks to have priority in processing.

Adds a test checking for the desired behaviour.

Fixes #4268
2018-06-01 15:12:47 +02:00
Hyunin Song
1349d45d72 Bump version to 1.2.0-rc6 2018-06-01 09:04:01 +09:00
Hyunin Song
75a6502100 Fix Mallets crash when STK rawwave files can't be loaded 2018-05-30 19:14:06 +09:00
Hyunin Song
24ae559de5 Fix crash when re-opening VST effect manage dialog
Unset Qt::WA_DeleteOnClose for the dialog to avoid deletion when closed
2018-05-30 09:02:05 +09:00
Hyunin Song
235e8eef6f Allow controlling VST effects without own GUI 2018-05-30 09:02:05 +09:00
Hyunin Song
55d3fbc908 Fix RemoteVstPlugin not exiting when effect removed 2018-05-30 09:02:05 +09:00
Lukas W
b808631975 VST: Add workaround for small effect window on project load 2018-05-30 09:02:05 +09:00
DomClark
8e9f74df37 Minor fixes
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.
2018-05-30 09:02:05 +09:00
DomClark
fcc883f887 Preserve VST GUI positions and keep them on top 2018-05-30 09:02:05 +09:00
DomClark
ee18011dc7 Fix toggling UI for non-embedded VST effects 2018-05-30 09:02:05 +09:00
DomClark
49dcd385f5 Fix VST effect load crash on non-primary monitor 2018-05-30 09:02:05 +09:00
DomClark
55da698d7c Fix X11 embedding on Qt4 2018-05-30 09:02:05 +09:00
Lukas W
1220374a7f Fix effect dialog layout glitches
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.
2018-05-30 09:02:05 +09:00
Lukas W
a2cb7e96ea Fix VST sub-window creation glitches in project loading
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
2018-05-30 09:02:05 +09:00
Colin Wallace
2c672d47fe Prefer = default over empty destructor.
Same thing but less verbose.
2018-05-28 19:28:05 -07:00
Hyunin Song
3e8120d532 Make "Clear this track" undoable
Fixes #4375
2018-05-28 13:49:38 +09:00
Hyunin Song
3cf2afd831 Merge branch 'stable-1.2'
# Conflicts:
#	include/MixerWorkerThread.h
#	src/core/MixerWorkerThread.cpp
2018-05-26 16:09:38 +09:00
Colin Wallace
a3cdda04c0 Give our threads names (#4356)
* Give our threads names

It helps with debugging.

* Use Q_OBJECT macro to automatically name threads.

By default, QThread sets its name based on the Qt meta class. To get an
accurate metaclass, the class which inherits QThread must declare
Q_OBJECT in its header. Futhermore, Qt's MOC requires that a Qt type be
the primary base class when declaring Q_OBJECT, hence the order of
base classes has been rearranged for some classes.
2018-05-24 18:01:51 -07:00
Hyunjin Song
daa3f53515 Fix compilation with Qt 5.11 (#4374)
Add extends attribute for custom widget RowTableView per upstream uic change http://code.qt.io/cgit/qt/qtbase.git/commit/?id=058474884c2505a8a00d4c59b4922bfcd3597c2f
2018-05-23 14:59:45 +09:00
Hussam Eddin Alhomsi
1b9f28254a Merge remote-tracking branch 'lmms/master' into groove 2018-05-22 18:07:59 +03:00
Hyunjin Song
0fa7fbde0f Fix MSYS2 build 2018-05-22 11:45:41 +02:00
Johannes Lorenz
074d82f2aa CALF: Version bump, fix issues from #3987 2018-05-19 08:52:54 +02:00
Joshua Wade
68a621cc16 Restart flanger LFO on Song::playbackStateChanged signal (#4363)
Closes https://github.com/LMMS/lmms/issues/3689
2018-05-18 13:34:46 -04:00
Hussam Eddin Alhomsi
0caaebaecb Remove FluidSynth requirement for background pic (#4364) 2018-05-17 19:35:52 +02:00
Oskar Wallgren
bb43bfb961 Remove release time from arpeggiated note (#4355)
An arpeggio master note shouldn't trigger new notes while it's decaying.

#fixes #4342
2018-05-17 18:39:31 +02:00
Matt Kline
9c0d50d425 plugins/LadspaEffect: Use C++11
The rest of LMMS is built against it, and almost every flavor of MinGW
should support it these days.
2018-05-13 20:02:01 -07:00
Matt Kline
ea98ba4dae FPTruncateMode: Removed unused variables on non-386
While we're at it, make fistp an inline function. Type safety is nice.
2018-05-13 20:02:01 -07:00
SecondFlight
4585a07673 Allow renaming of FX mixer channels with the F2 and enter keys. (#4348)
* Add f2 as a FX mixer rename shortcut. Enter doesn't work yet.

* Add both enter keys, remove code duplication

* Fix renaming with enter/return

* Clean up
2018-05-13 17:15:32 -04:00
Hussam Eddin Alhomsi
0d73f32c03 Reorder the main windows' buttons & shortcuts (#3938)
Puts Project notes after Controller rack.
2018-05-11 12:23:31 +03:00
Oskar Wallgren
d6d55cef7b Remove old commented out code (#4349) 2018-05-10 12:05:44 +02:00
Premik
e8b69b9700 Zooming with mouse wheel center (#3835)
* Horizontal mouse-wheel zooming. Ensure zoom center is always on the current mouse position.

* Horizontal zoom using mouse wheel center on the mouse position. For the SongEditor too.

* Wheel center on the Automation editor too.
2018-05-10 00:45:45 +02:00
Colin Wallace
5d90aecac9 Merge pull request #4339 from PhysSong/tcomove
Fix occasional crash when moving TCOs
2018-05-08 21:29:41 -07:00
Colin Wallace
82972ca842 Merge pull request #4260 from curlymorphic/master
Remove audio artifacts when automating the Equalizer parameters.
2018-05-08 20:11:47 -07:00
Colin Wallace
b4a6ae7bcc Merge pull request #4344 from mrkline/default-empty-detors
Default some empty destructors
2018-05-08 18:44:48 -07:00
Hyunjin Song
03aa5fb3c7 Fix crash on exit from MIDI connections (#4340) 2018-05-07 17:08:43 -07:00
Matt Kline
68c9d227d0 Default some empty destructors
Moving empty destructors out of the .cpp files and into headers
allows them to be devirtualized in certain cases.
(When the compiler can't "see" a function in a header, it must largely
assume it's some black box that the linker will resolve.)

While we're at it, use C++11's `= default` to define empty virtual
desturctors for us.

For some classes (e.g., Piano), nothing is derived from it, so we can
mark the class as final and remove any explicit virtual dtor.

There are many other places where this can be done, but this is a large
enough patch as-is.
2018-05-06 16:34:08 -07:00
Hyunin Song
511c7a64fe Fix occasional crash when moving TCOs 2018-05-03 11:23:35 +09:00
Lukas W
af61a82df8 Merge pull request #4335 from LMMS/fix/job-queue
Fix job queue crash
2018-05-02 12:55:09 +02:00
Lukas W
9a52c7b901 JobQueue: Rename m_queueSize to m_writeIndex
Hopefully makes it less confusing that m_writeIndex grows beyond
JOB_QUEUE_SIZE when the queue is full.
2018-05-02 12:54:45 +02:00
Hussam Eddin Alhomsi
c1b2728d65 Allow setting/moving points at the left edge of AE grid (#4323) 2018-05-01 23:04:39 -07:00
Hyunin Song
4b36ba9f81 Fix a regression from #3711 2018-05-02 12:41:10 +09:00
Hyunin Song
8a41def616 Merge branch 'stable-1.2'
# Conflicts:
#       .circleci/config.yml
#       .travis/osx..install.sh
#       CMakeLists.txt
#       plugins/zynaddsubfx/zynaddsubfx
#       plugins/zynaddsubfx/zynaddsubfx/src/DSP/FFTwrapper.h
#       plugins/zynaddsubfx/zynaddsubfx/src/Misc/QtXmlWrapper.cpp
#       plugins/zynaddsubfx/zynaddsubfx/src/Params/PADnoteParameters.cpp
#       plugins/zynaddsubfx/zynaddsubfx/src/Synth/OscilGen.cpp
#       src/CMakeLists.txt
#       src/core/Track.cpp
#       src/tracks/Pattern.cpp
2018-05-01 09:59:07 +09:00
Hyunjin Song
08573fc96d Fix detuning crash after deleting the note being edited (#4324) 2018-04-30 14:54:34 +09:00
Hyunin Song
7117d90c00 Merge branch 'master' into groove 2018-04-30 14:42:38 +09:00
Lukas W
ccd4ff3c2c Fix job queue crash
* Don't add jobs when job queue is full
* Icrease job queue size from 1024 to 8192
2018-04-29 17:01:51 +02:00
Lukas W
84d3c935de Merge pull request #4333 from PhysSong/circledummy
Add dummy CircleCI config file for stable-1.2
2018-04-29 16:04:44 +02:00
Hyunin Song
832e87725a Add dummy CircleCI config file 2018-04-29 21:59:09 +09:00
Lukas W
d2e068ca40 Merge pull request #4330 from lukas-w/circleci-update
Update CircleCI to Ubuntu 18.04
2018-04-28 22:26:19 +02:00
Matt Kline
ebed0296b3 Axe atomic int (#4326)
* ThreadableJob: Move from AtomicInt to std::atomic

This is the first in a series of commits that migrates away from
AtomicInt towards the C++11 standard library types.
This would allow the removal of AtomicInt and related Qt
version-specific code.

While we're at it, also make ProcessingState an `enum class` so that
it's not implicitly convertible to integers.

* LocklessAllocator: Switch from AtomicInt to std::atomic_int

If it looks like some assignments around the Compare & Swap loops went
missing, it's because compare_exchange_weak() updates the first argument
to the current value when it fails (i.e., returns false).

* BufferManager: Remove extra AtomicInt include

* MixerWorkerThread: AtomicInt to std::atomic_int

* NotePlayHandle: AtomicInt to std::atomic_int

* Remove AtomicInt.h

* Move from QAtomicPointer to std::atomic<T*>

This removes some #ifdef trickery that was being used to get
load-acquire and store-release from Qt5 and "plain" (presumably
sequentially-consistent) loads and stores from Qt4.
2018-04-28 12:54:46 -07:00
Hussam Eddin Alhomsi
3760e4642f Move enable/disable groove per instrument track...
...from the TrackOperationsWidget to the InstrumentMiscView.
2018-04-28 18:28:18 +03:00
Lukas W
4ff993e2a4 Update CircleCI to Ubuntu 18.04 2018-04-28 11:15:09 +02:00
Hussam Eddin Alhomsi
386c471ed7 Limit the automation-editor scaled-level tooltip to the grid (#4308) 2018-04-26 18:37:43 +03:00
Lukas W
d42a685007 Refactoring: Remove duplicate code (#4310) 2018-04-25 18:49:39 +02:00
Matt Kline
ffccd6ddd2 Use atomics to count shared_object without locks
C++11 (and subsequent C++ standards) provide portable ways to issue
atomic hardware instructions, which allow multiple threads to load,
store, and modify integers without taking a lock. The standard also
defines a memory model that lets you express the ordering guarantees
around these atomic operations. (x86 is relatively strongly-ordered, but
many other common architectures, such as ARM, are free to reorder loads
and stores unless told not to.)

This patch removes the lock from shared_object and replaces it with the
standard thread-safe reference counting implementation used in
C++'s std::shared_ptr, Rust's std::sync::Arc, and many others.

Additional resources on the topic:
https://assets.bitbashing.io/papers/concurrency-primer.pdf
https://www.youtube.com/watch?v=ZQFzMfHIxng
2018-04-25 12:50:44 +02:00
Lukas W
fce9326192 Update rpmalloc to 1.3.0
Fixes #4055
2018-04-25 11:00:13 +02:00
Lukas W
e614711d29 Merge pull request #4307 from LMMS/fix/contributors
Revert contributor file removal
2018-04-25 07:52:03 +02:00
Hussam Eddin Alhomsi
f7a0553e6a Responsive "Effects chain" & "User controller" LEDs (#4297) 2018-04-24 11:25:49 +03:00
Lukas W
418bcce402 AppImage: Use wget -N instead of mtime logic 2018-04-22 14:05:20 +02:00
Lukas W
d9ea65ad7f Fix AppImage build with missing fuse support 2018-04-22 14:05:20 +02:00
Lukas W
19bc0439a6 Fix mingw pkg-config 2018-04-22 14:05:20 +02:00
Lukas W
138281badf Add CircleCI config.yml 2018-04-22 14:05:20 +02:00
Lukas W
d65fdd4ee6 Create no-response.yml 2018-04-22 08:34:46 +02:00
Lukas W
50eada6b2b Update project year 2018-04-21 13:33:35 +02:00
Lukas W
33368bd9d0 Revert CONTRIBUTOR file removal
This reverts commit 30f1e52be3.

# Conflicts:
#	CMakeLists.txt
2018-04-21 13:31:14 +02:00
Colin Wallace
3401de4a83 Use themed file dialogs everywhere. (#4298)
Previously lmms used themed dialogs for project saving/opening, but not
when editing settings (edit -> settings).

With this change, the settings editor also uses themed dialogs.
2018-04-20 19:01:11 -07:00
tresf
aaee2ecb15 Better fluidsynth version detection
Per #4300 comment
2018-04-20 21:53:13 -04:00
Tres Finocchiaro
22ca47abba Disable fluidsynth audio backends if possible (#4300)
Closes #649
Partially reverts #3446
2018-04-20 15:46:13 -04:00
Tres Finocchiaro
ef264eafa7 Re-enable upstream libgig formulae (#4304) 2018-04-20 15:45:35 -04:00
Tres Finocchiaro
18a4346fd5 Better default working directory (#4288)
* Better default working directory
Closes #1135
2018-04-20 15:41:08 -04:00
Lukas W
78a7f4563f Remove -fstrength-reduce compiler options
Clang doesn't support -fstrength-reduce and warns when it's used. GCC will
specify it by default when using -O2, which is  implied by -O3.
2018-04-18 08:22:46 +02:00
Colin Wallace
da126bfb5c Use range-based for loops + fix const correctness 2018-04-17 09:17:33 +02:00
Tres Finocchiaro
ae0dd21df3 Upgrade Calf LADSPA plugins to 0.90 (#3987)
Upgrade Calf LADSPA plugins to 0.90
2018-04-15 21:38:37 -04:00
Oskar Wallgren
07a23c4e3b Allways remove infs/nans (#3706)
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
2018-04-15 15:44:38 +02:00
Hyunjin Song
0850b78104 Try git fetch for unadvertised object error
Fixes fetching submodules from non-default branches.
2018-04-13 13:50:12 +09:00
gnudles
0c0bfbd060 Add the function randsv to Xpressive (#4089)
Adds the function randsv, which gives you persistent upon note plays and waveforms transit in the gui.
Moves lmms exprtk submodule back to latest upstream
2018-04-12 11:05:42 -04:00
Hussam Eddin Alhomsi
e554a4c4b0 Better behavior when left-clicking a TCO (#4290)
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
2018-04-11 13:39:43 +03:00
Hyunjin Song
00f9590b18 Fix preset preview issues with peak controllers (#3904) 2018-04-04 09:06:58 +09:00
Dominic Clark
d30a22487e Don't call setParameter from audioMasterAutomate (#4279) 2018-04-03 19:08:53 +01:00
Tres Finocchiaro
9af7821eb1 Add PerfLog (#3974)
Add `PerfTime` class representing a point in CPU time and `PerfLogTimer`, used for measuring and logging a time period. Used in `ProjectRenderer::run()
2018-04-03 13:37:25 +02:00
Umcaruje
b77027d6fb Fix MDI subwindow buttons contrast in the MenuBar (#4242)
* Fix MDI subwindow buttons contrast in the MenuBar

* Hard code the button color in LmmsStyle.cpp (thanks @PhysSong)

* Fix code formatting
2018-04-02 19:36:07 +02:00
Umcaruje
ee910d38fe Fix marked semitones in the piano roll (#4239)
* Fix marked semitones in the piano roll

* Don't draw in invalid patterns

* update classic theme

* Fix contrast

* update classic theme
2018-04-02 19:33:01 +02:00
Hussam Eddin Alhomsi
9e23b2a03b Remove unused code
And some improvements
2018-03-31 13:23:01 +03:00
Tres Finocchiaro
1df461d64d Fix VSTs on Fedora 27 (#4276) 2018-03-30 14:13:31 -04:00
Hussam Eddin Alhomsi
8fa33a8970 Reorder the swings
Put Half after Hydrogen because Half is based on Hydrogen.
2018-03-28 20:51:59 +03:00
Colin Wallace
ca3a7f3015 Remove unused method and extraneous state from AutomatableModelView (#4258)
* Remove DataType.

An AutomatableModel should not need to know what concrete type it is.
Use virtual methods and implement them in the derived class instead of
testing the type in the base class.

* Remove unused method

* Remove m_hasLinkedModels

We can compute it on-the-fly with very little cost, and doing so
simplifies the code.

* Remove extra 'public:'

Probably a remnant of merging master
2018-03-28 00:03:10 -07:00
Hyunin Song
81e0fe23b0 Do more reformattings 2018-03-28 10:14:28 +09:00
Hyunin Song
217c31af8c Reformat code 2018-03-28 09:44:55 +09:00
Tres Finocchiaro
3673e84ac1 Allow relative paths on non-existent directories (#4271)
* Use cleanPath for calculating relative directories
Closes #4267
2018-03-26 21:51:55 -04:00
liushuyu
47ab8edef8 i18n: update translation file 2018-03-23 13:11:04 -06:00
Hyunjin Song
ac543ffc75 Play correct note when dragging left side of virtual keyboard (#4265) 2018-03-21 23:39:17 -04:00
Tres Finocchiaro
7bdb607391 Add ZynAddSubFX status (#4264) 2018-03-21 15:52:57 -04:00
Noah Brecht
87e6b48df7 Fix ui glitch where track ticks did not line up (#4171) 2018-03-21 04:13:42 +01:00
Colin Wallace
56b4740146 Copy/paste model values to system clipboard
Previously they were copy/pasted internally, and not visible across LMMS
instances.
2018-03-20 00:43:15 -07:00
Colin Wallace
7593b2ee58 Replace macro magic with a template base class 2018-03-20 00:42:21 -07:00
Orbital Ink
fc5fc1cbaa Change Detune To Pitch Bend in Piano Roll (#4194) 2018-03-19 20:23:00 +03:00
Umcaruje
0d1c874a60 Change selected notes color (#4243) 2018-03-19 17:35:15 +01:00
Tres Finocchiaro
7a8a925b83 Fix toFloat Qt5 regression (#4244)
Closes #4241
2018-03-19 12:18:47 -04:00
Hyunin Song
7cf1be1dc5 Bump ZynAddSubFX submodule 2018-03-19 07:28:21 +09:00
Tres Finocchiaro
6cd5317e09 Fix C++ standards library portability issue. (#4261)
Fix C++ standards library portability issue.
Cherry-pick of upstream 2.5 patches: zynaddsubfx/zynaddsubfx@417d49b, zynaddsubfx/zynaddsubfx@edca8ab
Closes #4152
2018-03-18 13:36:05 -04:00
curlymorphic
1e777cf945 Remove audio artifacts when automating the Equliser parameters.
The Equliser pluging uses biquad filters, These do not like having
there parameters updating during processing, and are know to produce
clicks and DC biasing. A twin filter system has been employed with a
cross fade, to interpolate between parameters.

This has removed for the use of sample exactness, as the filter is only
updated once per frame, with interpolation provided by the crossfade.

The same filters are used as pervious, ensuring unautomated filtering
remains unchanged.
2018-03-17 22:25:12 +00:00
Colin Wallace
bf1b61023c Use ampToDbfs instead of 20*log10 x.
The function's there (in lmms_math.h) for a reason :)
2018-03-16 20:35:08 -07:00
Colin Wallace
b706ee208d Replace more instances new/delete with owning types (#4245)
* Use owning types when possible.

Note: the QByteArray s is detached to mimic previous behavior;
detach() guarantees that the QByteArray uniquely owns its data, since
otherwise it's COW. This may be relevant in case Plugin:instantiate
modifies s.data() -- this way the original QString is safe.

* Make m_filter a unique_ptr.

* Make m_activeRenderer a unique_ptr

* use std::string instead of strcpy + buffers
2018-03-15 18:46:55 -07:00
Hyunin Song
ad9ea6f362 Reduce code duplications 2018-03-15 07:36:02 +09:00
Hyunin Song
d6529ae1e8 Update old homepage URL and program name 2018-03-15 00:01:58 +09:00
Hussam Eddin Alhomsi
46a2f78733 Use AutomatableSlider & IntModel...
...instead of Knob & FloatModel
2018-03-14 16:36:51 +03:00
Hussam Eddin Alhomsi
3866cef8b3 Move Groove to global toolbar 2018-03-14 15:35:48 +03:00
Colin Wallace
80ce77fc91 Merge pull request #4249 from Wallacoloo/refactor/ModelViewTypes
Make *ModelView a templated type instead of macro-based class
2018-03-13 22:54:34 -07:00
Hyunjin Song
b4e78065e7 Fix some bugs with LFO waveform drag&drop (#4227)
* Change to user-wave mode and update display after dropping a sample
* Fix broken drag&drop from sample tracks
2018-03-14 14:48:18 +09:00
Colin Wallace
7adad4790e Merge pull request #4063 from Sawuare/Widgets
Use "Set value" as title for QInputDialog of some widgets.
2018-03-13 21:52:57 -07:00
Colin Wallace
45f9fc03c2 Make *ModelView a templated type instead of macro-based class.
Among other things, this makes it easier to grep for FloatModelView,
BoolModelView, IntModelView in the code base.
2018-03-13 20:57:34 -07:00
Colin Wallace
748cc0e3e3 Merge pull request #4235 from Wallacoloo/refactor/use-unique-ptr
refactor: Use unique_ptr for memory management
2018-03-12 22:45:59 -07:00
Oskar Wallgren
a54c54097f Draw the entire length of a notes pitch bend info (#4233) 2018-03-12 14:49:45 +01:00
Colin Wallace
ec3c9cdf10 Only use specific std:: items we need.
Also, fix `using std::unique_ptr` to `using std::make_unique` in
stdshims.h
2018-03-11 09:07:00 -07:00
Hussam Eddin Alhomsi
46fa1803d3 Remove Studio Controller
Per https://github.com/LMMS/lmms/pull/3296#issuecomment-366713198
2018-03-11 15:50:35 +03:00
Colin Wallace
c8d9cc02d5 Use namespace std instead of prefixing {move,unique_ptr} with std::. 2018-03-10 23:30:30 -08:00
Colin Wallace
ba278becbd Don't use #pragma; don't redefine make_unique if using C++14 2018-03-10 23:29:22 -08:00
Colin Wallace
a9d097cad9 Prefer emplace_back; take argument by value.
We copy the QString, so it makes sense to accept it by value and _move_
it into the collection instead. This causes the caller to move any
rvalue QString into the function, and then the QString is never actually
copied at all.
2018-03-10 16:08:21 -08:00
liushuyu
8120db292a i18n: update strings 2018-03-10 13:25:58 -07:00
liushuyu
c8ba4c548c Merge remote-tracking branch 'upstream/stable-1.2' 2018-03-10 13:23:02 -07:00
Colin Wallace
876615e3a3 Warn when compiling with C++14 or greater. 2018-03-10 00:28:58 -08:00
Colin Wallace
0f993895d4 Fix missing includes 2018-03-09 23:48:07 -08:00
Colin Wallace
fd871e46c9 refactor: Use unique_ptr for memory management 2018-03-09 23:03:19 -08:00
Tres Finocchiaro
957ec6b611 Initial global groove quantization feature
Add initial support for "Groove quantizing".  This is a squash of all work by @teknopaul, @tresf, @Sawuare to make it mergabe against master.
2018-03-09 11:47:18 -05:00
Tres Finocchiaro
d2c370a953 Enable FPE on Mac (#4213)
Allow #3687 to work on Mac
2018-03-09 11:41:17 -05:00
Orbital Ink
e9b83378f9 Typo - Phrygolydian to phrygian (#4223) 2018-03-07 16:44:16 +01:00
Hyunin Song
0a5d056bdb Merge branch 'stable-1.2'
# Conflicts:
        #       .travis/osx..install.sh
        #       .travis/osx..script.sh
        #       cmake/linux/package_linux.sh.in
        #       data/locale/en.ts
        #       src/core/CMakeLists.txt
        #       src/core/ProjectRenderer.cpp
        #       src/gui/FileBrowser.cpp
2018-03-07 23:54:28 +09:00
Hyunjin Song
ec0f47e9e3 Fix AppImage tool path 2018-03-07 23:27:28 +09:00
tresf
38b69a7e3a Fix incrementation of LcdSpinBox QInputDialog
Closes #4218
2018-03-06 14:35:24 -05:00
Hyunjin Song
788c990ae1 Remove MIDI connection from factory files (#4207) 2018-03-06 09:57:40 +09:00
Hyunjin Song
533f475943 Ensure correct length of automation patterns in BB editor (#4212)
When the length of an automation pattern is an integer multiple of one bar, it was displayed with wrong length. This commit fixes the bug.
2018-03-06 09:57:16 +09:00
Tres Finocchiaro
1d63bd3b4e Use Canonical Paths for Relative Paths Calculations (#4211)
Fix redundant path elements
Closes #4173
2018-03-03 22:46:07 -05:00
Hyunjin Song
926b6542ae Don't restore audio device during exporting (#4083)
Fixes deadlock on multi-track export with SDL
2018-03-02 13:28:56 +09:00
Tres Finocchiaro
9f1c73bc12 Fix theme after upgrade
Closes #4199
2018-03-01 20:37:04 -05:00
Oskar Wallgren
063a505026 Turn journalling off when moving fader (#4147) 2018-03-01 19:03:02 +01:00
tresf
a8e8746011 Add support for .pat previews, drag+drop
Closes #4202
2018-02-28 21:34:45 -05:00
Dominic Clark
31775752b4 Fix rendering cancellation with VSTs (#4189) 2018-02-27 16:08:42 +01:00
Oskar Wallgren
33d2b71b01 Piano Roll - Erase on mouse button drag in erase mode (#4150) 2018-02-27 15:59:15 +01:00
tresf
fc9c3eadef Fix the AppImages 2018-02-27 01:54:26 -05:00
tresf
edc8f43d5b Use bundled jack if missing
Closes #4094
2018-02-27 01:54:26 -05:00
Tres Finocchiaro
3980e54667 Better wine prefix detection (#4176)
Closes #4108
2018-02-23 13:20:35 -05:00
Hyunin Song
0f0b08b852 Travis: replace homebrew/versions/qt55 with qt5 2018-02-17 13:01:19 +09:00
noahb01
a39ea2b163 Reset window title after render
Closes #4160
2018-02-08 23:40:15 -05:00
Oskar Wallgren
c3b4767836 Add journaling checkpoint to recording notes (#4144) 2018-02-01 19:45:05 +01:00
Dominic Clark
27007c258a Fix command line rendering with VSTs (#4093)
Fix command line rendering with VSTs
2018-01-26 10:48:46 -05:00
Filip Hron
a193ec25f2 Fix patman logo
Closes #3660
Supercedes #4121
2018-01-17 17:05:38 -05:00
DomClark
e2c71e3369 Fix lack of sound in iZotope plugins (#4095) 2018-01-17 15:56:01 +09:00
DomClark
d0b3be7f00 Wait for reply when updating sample rate 2018-01-17 15:56:01 +09:00
DomClark
709fc7948b Set buffer size during plugin init
Fixes AmpliTube crash
2018-01-17 15:56:01 +09:00
DomClark
6e0dda692a Remove plugin lock from RemoteVstPlugin 2018-01-17 15:56:01 +09:00
tresf
46512fdf19 Fix macOS compilation without SDL
Closes #4105
2018-01-09 21:34:24 -05:00
tresf
9f08e285bb Fix $PATH for creating AppImages 2018-01-07 02:37:11 -05:00
tresf
9547575c50 Move exprtk to non-volatile branch
Fix Travis-CI for #4089
2018-01-05 17:25:14 -05:00
Mark-Agent003
59eba30d33 Add File Browser Styling (#4085)
Use CSS to style the selected and hovered items in the File Browser
2018-01-05 11:43:24 -05:00
tresf
5c3c052712 Remove QT5 flags
Fix a regression caused by #4041, closes #4077
2018-01-02 09:53:54 -05:00
David Carlier
bd8c27249f Using the cmake variable will insure the proper value
regardless of the platform (already available in 2.0.7 version)
2018-01-02 13:09:03 +01:00
liushuyu
96c5f05120 update i18n and add i18n maint script 2017-12-30 01:21:00 -07:00
Michael Gregorius
ab2cc42eea Make Song::setModified more compact
Implement a comment from a code review by pulling condition of the
second if clause into the first one.
2017-12-26 00:33:11 +01:00
Michael Gregorius
9acff89ad3 Remove Song's dependency to MainWindow
Finally remove Song's dependency to MainWindow by moving the window
title update which is triggered due to a changed project file name from
the class Song into MainWindow.

Implementation details:
Add a new signal projectFileNameChanged to Song and connect the new slot
method MainWindow::onProjectFileNameChanged to it. Update the window
title whenever the slot is triggered.

Add a new private method Song::setProjectFileName which sets the project
file name and emits the signal (only if the file name really changes).
Call setProjectFileName everywhere where m_fileName was manipulated
directly. This is done to ensure that the signal can be potentially
emitted in all relevant situations.

Remove the calls to gui->mainWindow from
Song::createNewProjectFromTemplate.

These changes finally remove the include to "MainWindow.h". The include
for "ConfigManager.h" was previously done implicitly through the include
of "MainWindow.h" and therefore had to be added explicitly after the
latter is removed.
2017-12-26 00:33:11 +01:00
Michael Gregorius
b79999a6bf Move some window title updates from Song into MainWindow
Move the window title updates which are triggered due to a changed
modify state from Song to MainWindow.

Implementation details:
Add a new signal modified to Song and connect the new slot method
MainWindow::onSongModified to it.

Currently only the window title is updated in the slot. It is only
updated if the code is executed from the GUI main thread. This
implementation was taken over from the original implementation of
Song::setModified. The assumption here seems to be that the Song might
also be set as modified from other threads (which is a bad design).

Add a new private method Song::setModified(bool) and replace all direct
manipulations of m_modified in Song by calls to this method. This is done
to ensure that the signal can be emitted in all these cases. Make
Song::setModified() delegates to Song::setModified(bool) for the same
reason.

Other changes:
Slightly refactor MainWindow::resetWindowTitle to get rid of an
unnecessary if statement.
2017-12-26 00:33:11 +01:00
Michael Gregorius
07caf85bf5 Remove GUI related code from Song::stop
Add the new signal Song::stopped which is emitted when the song is
stopped. Connect the new slot method MainWindow::onSongStopped to that
signal. Remove all GUI updates from Song::stop and handle them in
MainWindow::onSongStopped.
2017-12-26 00:33:11 +01:00
Michael Gregorius
7fa62266a9 Move showing of save result dialog out of Song
Move the showing of save result dialogs, e.g. "The project XYZ is now
saved.", from the class Song into the class MainWindow.

Implementation details:
Add three new methods guiSaveProject, guiSaveProjectAs and
handleSaveResult to MainWindow. The first two correspond to the methods
with the same name in Song which don't do anything GUI related anymore.
The GUI related actions are instead implemented in the two new methods
in MainWindow. The method handleSaveResult shows the dialogs for
successful and failed saves, updates the list of recent files and the
title bar of the main window.

This commit also fixes a problem in Song::guiSaveProject where a failed
saved without a GUI would still have returned true, i.e. success.
2017-12-26 00:33:11 +01:00
Michael Gregorius
6a716ef985 Move import functionality from Song to MainWindow
Move the functionality of the method Song::importProject into the
MainWindow as it mainly consists of GUI related actions.

Add a new method Song::setLoadOnLauch to ensure that the boolean
Song::m_loadOnLaunch is still set at the end of the import.
2017-12-26 00:33:11 +01:00
Michael Gregorius
78d65ccc3a Move song export and track export from Song into MainWindow
The code to export a song and the tracks of a song mainly consisted of
GUI code. Therefore it was moved completely into MainWindow.

Add two new slots and a method that does the actual work to MainWindow.
Make both slots delegate to the worker method.
2017-12-26 00:33:11 +01:00
Michael Gregorius
989db1dc9b Move GUI dependencies out of Song::exportProjectMidi
Move all GUI dependencies out of Song::exportProjectMidi and move them
into the MainWindow.

Show the GUI in the new slot method MainWindow::onExportProjectMidi and
delegate to Song::exportProjectMidi once the file name has been
determined. The file name is given as a parameter to
Song::exportProjectMidi which still contains the business logic of
exporting the data.
2017-12-26 00:33:11 +01:00
Tres Finocchiaro
7f9d01e3b6 Enable auto-uploading of PRs (#4041)
Removes Qt4 from build system
Uploads PRs to transfer.sh
2017-12-23 02:23:32 -05:00
Tres Finocchiaro
07de45347a Install homebrew fftw without gcc 2017-12-22 22:10:23 -05:00
Tres Finocchiaro
a3d72def4d Move Zyn GUI to main thread (#4065) 2017-12-22 15:29:32 -05:00
gandalf3
2c3df226ee Allow individual velocity/pan changes with alt (#3923)
Fix regression caused by 6e3d4f4, allow ALT to change the velocity of multiple selected notes.
2017-12-22 15:29:08 -05:00
tresf
7de9649b2f Fix quantization of pasted notes
Fixes a regression caused by #4058
2017-12-22 14:58:20 -05:00
Hussam Eddin Alhomsi
9f0f61d914 Use "Set value" as title for QInputDialog of some widgets.
These widgets are the Fader, Knob and LcdSpinBox.
2017-12-21 12:17:03 +03:00
Tres Finocchiaro
c3438a1b4e Remove alpha channel from splash
Closes #4062
2017-12-20 20:46:47 -05:00
Hyunin Song
e9b76a5178 Add a comment for VST dependencies 2017-12-20 14:17:07 +09:00
Hyunin Song
59cfcf41a7 Merge branch 'stable-1.2'
# Conflicts:
#	.travis/linux..before_install.sh
#	.travis/linux..install.sh
#	.travis/linux..script.sh
#	cmake/linux/package_linux.sh.in
#	include/AudioWeakJack.def
#	plugins/vst_base/CMakeLists.txt
#	plugins/zynaddsubfx/zynaddsubfx
2017-12-20 14:16:16 +09:00
Hyunin Song
6aeba4fd13 Bump WeakJack to latest version 2017-12-20 13:58:28 +09:00
Hyunjin Song
eb9b460925 Travis: install jack2 in Linux build
Per #4026: Installing Carla will remove jack1 if it's installed, since Carla requires jack2.
2017-12-20 12:54:31 +09:00
Umcaruje
481cb2e889 Bump version to RC5 2017-12-19 18:24:15 +01:00
tresf
1279244e50 Add $HOME/bin to PATH
Circumvent change in appimagetool, per AppImage/AppImageKit#592
2017-12-18 18:55:51 -05:00
Lukas W
7c71bc657c Merge pull request #3786 from LMMS/fix/qt5-vst
Add all the Qt5 Linux VST implementations
2017-12-18 22:15:45 +01:00
Lukas W
19f48898a7 VST: Disable plugin reload on embed method change 2017-12-18 12:05:29 +01:00
Oskar Wallgren
76766c4c85 Piano Roll - Don't quantize when pasting notes (#4058)
Some changes on pasting notes in the Piano Roll:
* Don't quantize notes when pasting
* Add journal checkpoint
* Set project changed
2017-12-17 21:48:33 +01:00
Lukas W
5bad0ea8c0 Merge pull request #4046 from devnexen/build_fix
Few code fixes since we re dealing with C++11
2017-12-13 14:32:42 +01:00
Oskar Wallgren
54be88f536 Automation Editor - remove (comment out) unimplemented buttons (#4051) 2017-12-12 18:44:10 +01:00
tresf
5174bdaa0d Spaces to tabs 2017-12-11 10:46:19 -05:00
David Carlier
a653d01ac8 Few code fixes since we re dealing with C++11 2017-12-09 07:55:30 +00:00
Michael Gregorius
3660ac9a6c Revert "Fix a crash that occurs when library "KF5WidgetsAddons" cannot be loaded"
This reverts commit 17fb59cdeb. It's
reverted because it's already fixed in stable-1.2 and only need to be
merged.
2017-12-08 18:50:55 +01:00
Michael Gregorius
17fb59cdeb Fix a crash that occurs when library "KF5WidgetsAddons" cannot be loaded
Add a check to see if the library "KF5WidgetsAddons" could be loaded and
return if that's not the case.

Also move a using declaration near the place where it is used first.
2017-12-07 18:55:40 +01:00
Oskar Wallgren
06c40fc821 Automation Editor - Straighten out draw line function (#3997)
Fixes:
  AutomationEditor::drawLine(..) - quantize input
  AutomationEditor::drawLine(..) - Adjust line level.
2017-12-06 06:18:38 +01:00
Tres Finocchiaro
260c1843dd Fix typo from b6441b7
Closes #4039
2017-12-05 21:58:51 -05:00
Dan Williams
45d6b299ef Fix a crash (#4037)
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.
2017-12-05 21:36:54 -05:00
Hussam Eddin Alhomsi
004da34942 Remove the "Empty project" message and allow exporting empty projects. 2017-12-05 13:20:20 +03:00
Hussam Eddin Alhomsi
2469851e6b Allow exporting empty projects. 2017-12-04 14:43:13 +03:00
Hyunjin Song
dd4a73eb4b Fix various bugs when using JACK (#4005)
* Fix crash on closing
* Fix audio rendering artifacts
* Make LMMS work properly after rendering
2017-12-03 11:27:49 +09:00
Tres Finocchiaro
d711b8b55e Add Carla Support to AppImage (#4026)
Build AppImage with Carla support
* Disables HiDPI support in the AppImages
* Ignores deprecated jack usage
* Fix Carla compilation warnings
* Detects carla prefix in AppRun
2017-12-01 13:19:44 -05:00
Hyunjin Song
6cc118c259 Fix automation unit test for Qt4
Fixes failing Travis-CI build
2017-12-01 11:26:37 +09:00
Lukas W
d146308c02 Add more automation tests
See issue #3800 (Automations continue after the end of their TCOs) which
was fixed via #4012
2017-11-30 19:43:49 +01:00
Lukas W
ee9b593e26 Merge pull request #4012 from PhysSong/autoshrink
Handle shrank automation patterns correctly
2017-11-30 19:19:08 +01:00
Steffen Baranowsky
898e7999dc fixes bug when changing value by double click on fader/knob (#4018) 2017-11-30 16:57:15 +01:00
Lukas W
03e9889605 Remove old CMake compat code 2017-11-29 17:33:18 +01:00
Lukas W
e735260d53 Merge pull request #3860 from PhysSong/unit-auto
Fix warning in automation unit test
2017-11-29 17:24:00 +01:00
Lukas W
7ae348eb10 Vst refactorings 2017-11-29 15:33:44 +01:00
Lukas W
a446775c80 VST: Fix Qt-embedded VSTs not always appearing 2017-11-29 15:33:36 +01:00
Lukas W
ae488b89cd Fix VstEffect width issue 2017-11-29 14:44:53 +01:00
Hyunjin Song
6de7cb6a87 Fix song-editor regressions and BB-editor bugs from #3487 (#4008)
* Fix TCO copy with Ctrl + Dragging
* Fix text float display in song editor
* avoids override cursor in BBEditor for sampletracks at left side
2017-11-29 14:31:13 +09:00
Lukas W
4ff5eba0f9 Merge pull request #4010 from LMMS/fix/sendEvent-assert
Fix sendEvent assert
2017-11-27 20:43:02 +01:00
tresf
d0194e6c64 Bump Qt to 5.9.2
Closes #3925
2017-11-27 10:42:17 -05:00
Tres Finocchiaro
67231cbba0 Bump to exprtk submodule to latest (#4013) 2017-11-27 10:02:54 -05:00
Hyunin Song
72dcefc5f2 Handle shrinked automation patterns correctly 2017-11-26 21:04:06 +09:00
Lukas W
8c02495f27 Qt4 compat simplified 2017-11-25 15:25:32 +01:00
Lukas W
238d6b627c CMake: Fix RemoteVstPlugin build when winebuild is not in PATH 2017-11-25 14:48:15 +01:00
Lukas W
7019cabb51 Merge branch 'stable-1.2' into fix/qt5-vst 2017-11-25 12:36:34 +01:00
Lukas W
46ef3c6a11 Fix rpmalloc debug build with GCC < 5 2017-11-25 12:09:10 +01:00
Lukas W
23cb3852ac VstEmbed: Remove obsolete CMake flags 2017-11-24 15:39:53 +01:00
Lukas W
e95e3793b4 Merge pull request #3991 from PhysSong/fix/qt5-vst
Some fixes/enhancements for #3786
2017-11-24 14:40:24 +01:00
Lukas W
a96771bb2d Add Q_OBJECT to FloatModel, IntModel, BoolModel 2017-11-24 13:48:36 +01:00
Lukas W
c9c22e4a0e shared_object: Use deleteLater in unref for thread safety
This makes unref safe when it's not called from within the object's thread.

Fixes #4009
2017-11-24 13:30:15 +01:00
Lukas W
3d47344297 Travis: Enable Linux/Qt4 builds 2017-11-24 12:59:40 +01:00
Lukas W
a8aa3e153f VST: Fix Qt4 compilation 2017-11-24 12:46:06 +01:00
Lukas W
aa1406bac9 Merge pull request #4000 from LMMS/fix/msvc
MSVC fixes
2017-11-24 11:58:12 +01:00
Oskar Wallgren
c6ae1dcba6 Automation Editor - delete automation point (#3986)
Fix regression from b68dc572a3
Let the right mouse button delete the automation point like before
and add the space above it too.
2017-11-24 05:38:47 +01:00
Hyunin Song
26b0f74130 Fix libgig install logic for packaging 2017-11-24 11:18:07 +09:00
Hyunin Song
90b1fb57f0 Merge brnach 'stable-1.2' 2017-11-24 09:56:08 +09:00
Lukas W
7fdbcc3c71 Xpressive: Fix Clang patch on macOS 2017-11-23 15:05:01 +01:00
Léo Andrès
79e4775cd3 Fix CMake warning (#4002) 2017-11-22 18:01:05 -05:00
Lukas W
3c9a1bbe5e Fix Clang compilation with gig 2017-11-22 20:38:10 +01:00
Lukas W
1531fb9e1a MSVC: Fix include, fix GNU compiler flag 2017-11-22 17:57:42 +01:00
Lukas W
8f3ab4b1b0 Merge branch 'master' into fix/msvc
# Conflicts:
#	plugins/LadspaEffect/CMakeLists.txt
#	plugins/Xpressive/Xpressive.cpp
#	plugins/opl2/CMakeLists.txt
#	plugins/papu/CMakeLists.txt
#	plugins/xpressive/CMakeLists.txt
#	src/CMakeLists.txt
2017-11-22 17:34:22 +01:00
Lukas W
852708863a Fix Linux compilation issues caused by MSVC fixes 2017-11-22 16:36:51 +01:00
Lukas W
313d43bc16 MSVC: Show compiler version in AboutDialog
Make AboutDialog support MSVC compiler info so we can use a screenshot of
it to brag with on #devtalk
2017-11-22 13:54:19 +01:00
Lukas W
95c0538d1c MSVC: Fix plugins not loading with debug builds
The "d" suffix used in debug builds breaks plugin loading because LMMS
expects to find a descriptor named e.g. "kickerd_plugin_descriptor" instead
of "kicker_plugin_descriptor" when discovering a plugin with the filename
"kickerd.dll".
2017-11-22 13:52:31 +01:00
Lukas W
6224e5ed6b MSVC: Various fixes
* CMake
  * Compiler flags fixes
  * Don't strip
* Fix default template argument errors
* Fix VLAs. MSVC doesn't support C99, so Variable-Length-Arrays are not
  available. Use QVarLengthArray instead.
2017-11-22 13:49:57 +01:00
Lukas W
3d2062392d MSVC: Blacklist unsupported plugins 2017-11-22 11:51:37 +01:00
Lukas W
ba2ed12f05 MSVC: EXPORT macro fixes 2017-11-22 11:08:47 +01:00
Oskar Wallgren
55076d0bb0 Unsolo mixer channels on delete (#3982)
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.
2017-11-21 20:56:54 +01:00
Tres Finocchiaro
d634ed344f Various CheckSubmodules fixes (#3996)
Various CheckSubmodules fixes
Closes #3992, #3993, #3994
2017-11-20 23:42:52 -05:00
Hyunin Song
72e882af88 Add a fallback logic for VST embedding methods 2017-11-20 15:57:29 +09:00
Hyunin Song
55ce90ec00 Try to improve embedding method logic 2017-11-20 15:46:57 +09:00
Hyunin Song
463d02e299 Move SC_CLOSE handling code 2017-11-19 14:25:39 +09:00
Hyunin Song
7da7a70d60 Add Win32 embedding 2017-11-19 14:25:39 +09:00
Hyunin Song
b0f64dea7f Restrict "qt" embed method to Qt5 only 2017-11-19 14:25:39 +09:00
Hyunin Song
df3c07bbed Fix Qt4 compatibility 2017-11-19 14:25:33 +09:00
Hyunjin Song
514ae34df3 Fix automation pattern regressions (#3977)
Change the default value of ignoreSurroundingPoints in AutomationPattern::putValue to true, which was false in #3352.
Fixes automation filpping bug and some potential issues.
2017-11-19 10:50:22 +09:00
Oskar Wallgren
3de3ea6b16 Revert accidental submodule changes 2017-11-18 16:30:00 +01:00
Oskar Wallgren
b68dc572a3 Automtion Editor - left click response
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'.
2017-11-18 15:04:20 +01:00
tresf
5e2c105d5b Fix CheckSubmodules.cmake 2017-11-17 09:51:56 -05:00
Tres Finocchiaro
5aa713d5a6 Switch weakjack to submodule 2017-11-17 09:51:56 -05:00
Hussam Eddin Alhomsi
e8debf9015 Fix horizontal track resizing.
Fixes a regression from PR #3878 that broke horizontal track resizing.
2017-11-17 10:31:59 +03:00
Tres Finocchiaro
c102fa8ab4 Switch tap to submodule 2017-11-16 22:23:00 -05:00
Tres Finocchiaro
d63cfe0980 Bump veal submodule 2017-11-16 22:16:00 -05:00
tresf
d393bdc36d Coerce XML files to C 2017-11-16 21:12:47 -05:00
tresf
44a704cfe7 Move swh to submodule 2017-11-16 21:12:47 -05:00
Oskar Wallgren
01265ace66 Default project when cancelling project loading (#3941)
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.
2017-11-17 02:03:49 +01:00
Hussam Eddin Alhomsi
aad98d7405 Remove useless code from the about & export dialogs.
A follow-up to PR #3826.
2017-11-16 15:28:35 +03:00
Tres Finocchiaro
0dab4aea06 Use CMake to fetch submodules
Custom CMake module which attempts to automatically clone submodules when they're missing.  Uses the `--depth` option if supported, which should be faster than running `--recursive` on initial clone.
2017-11-15 14:23:04 -05:00
Hyunjin Song
601046aa03 Fix CAPS plugin build with some compilers (#3972) 2017-11-15 10:18:03 -05:00
François Mazen
0f7d192681 Replace int by int32_t in aeffectx.h structures (#3094)
* Replace int by int32_t in aeffectx.h structures to ensure that size does not vary with platform or compiler.
* Add missing header in aeffectx.h
2017-11-15 01:57:14 -05:00
Steffen Baranowsky
6289071bcd adds doxygen documentation to SubWindow.cpp (#3450)
Doxygen documentation for SubWindow.cpp
2017-11-15 00:15:01 -05:00
Levin Oehlmann
918f449eb3 UI: New behavior for the Plugin Browser (#3773)
Remove widget resizing altogether, display plugin info in tooltip instead
2017-11-15 00:08:48 -05:00
Hussam Eddin Alhomsi
548baa50a0 About dialog & export dialog improvements. (#3826)
* Improve appearance of about dialog, export dialog
* Cleanup code comments/formatting
2017-11-14 23:59:14 -05:00
Hyunjin Song
57de274fe8 Fix time display (#3711)
Make Bar:Beat:Tick / Min:Sec:Msec agree with playhead
2017-11-14 23:42:26 -05:00
Hussam Eddin Alhomsi
c9e5d3aef5 Restrict playing notes on the keyboard of the Piano Roll editor to left-clicks. (#3771)
Restrict playing notes on the keyboard of the Piano Roll editor to left-clicks
2017-11-14 23:31:39 -05:00
Hussam Eddin Alhomsi
6f305a6308 Track operations fixes and other stuff. (#3878) 2017-11-14 23:30:17 -05:00
Tres Finocchiaro
77b4985a2d Enable sf3 extension (#3895)
Add sf3 file extension, move `sf2` to `soundfonts`.
2017-11-14 21:59:58 -05:00
Tres Finocchiaro
de98781df4 Use "soundfonts" folder, not "sf2" 2017-11-14 21:55:25 -05:00
Tres Finocchiaro
28a4eb27f2 Patch exprtk on Clang (#3971) 2017-11-14 01:28:38 -05:00
Dominic Clark
7ed9bea9fb Disable plugin transparency on Qt5 (#3934) 2017-11-13 08:52:08 +09:00
tresf
231cc82de1 Rename xpressive to Xpressive 2017-11-10 21:57:44 -05:00
tresf
80a49db6f6 Switch exprtk to submodoule 2017-11-10 21:57:44 -05:00
Tres Finocchiaro
6c9e62164c Attempt to fix Travis-CI
Closes #3966
2017-11-10 21:19:32 -05:00
tresf
d37284b32a Point calf submodule at fork, rename library 2017-11-10 18:10:14 -05:00
tresf
ae291e0709 Move calf to submodule 2017-11-10 18:10:14 -05:00
tresf
289887f4fc Rename OPL2 to OpulenZ 2017-11-10 09:20:03 -05:00
tresf
dce32bede9 Switch opl2 to submodule 2017-11-10 09:20:03 -05:00
Lukas W
358a251cff VstEmbed: Support changing embed method without restart 2017-11-10 09:18:40 +01:00
Lukas W
f9f4d0cb9c VstEmbed: Store embed method on plugin start
Avoids bugs when embed method is changed in setup dialog while VSTs are
running.
2017-11-10 08:12:20 +01:00
Lukas W
a8311a7b49 Vst: Fix widget deletion 2017-11-10 08:02:29 +01:00
Hussam Eddin Alhomsi
0dbbdd9f4c Update the grid after changing the quantization value in automation editor 2017-11-09 16:31:20 +01:00
Hussam Eddin Alhomsi
43ae3c6376 Update patterns in song editor after shifting their notes by semitones in piano roll. (#3961)
After shifting notes up/down, call rearrangeAllNotes() to sort notes and dataChanged()
to update the pattern the Song Editor.
2017-11-09 16:29:45 +01:00
Hussam Eddin Alhomsi
aea3394810 Update patterns in song editor after shifting their notes by semitones in piano roll. (#3961)
After shifting notes up/down, call rearrangeAllNotes() to sort notes and dataChanged()
to update the pattern the Song Editor.
2017-11-09 16:27:01 +01:00
Tres Finocchiaro
d4d909cd9e Add libjack.so.0 fallback logic for AppImages (#3958)
Add libjack.so.0 fallback logic
2017-11-09 01:57:20 -05:00
tresf
9e36e98753 Update translations 2017-11-08 20:47:22 -05:00
tresf
f0cdcd236c Rename papu to FreeBoy
Make API calls more intuitive
2017-11-08 20:47:22 -05:00
tresf
eef042dbd6 Refactor/subclass Basic_Gb_Apu 2017-11-08 20:47:22 -05:00
tresf
3794d2ee84 Switch papu to submodule 2017-11-08 20:47:22 -05:00
Hyunjin Song
48b9b6508e Fix visual glitch with automation patterns (#3945)
Fix off-by-one visual glitch in automation editor and automation pattern view
2017-11-09 06:58:51 +09:00
Hussam Eddin Alhomsi
8baf42fca0 Remove text from project notes of factory templates. (#3939) 2017-11-07 14:21:12 -05:00
Lukas W
0dbdafc1f8 CMake: Fix non-existing target warnings 2017-11-07 12:06:52 +01:00
follower
eb09ff6f25 Fix off-by-one/heap-buffer-overflow as reported by ASAN.
It's probably not the best "solution" but it should hopefully be
one less category of crash-on-close on Mac.

ASAN a.k.a Clang "AddressSanitizer".
2017-11-07 11:56:49 +01:00
Lukas W
6fd38fee9f Fix qt5-x11embed submodule reference 2017-11-07 11:21:00 +01:00
Lukas W
2b6f366063 CMake: Only link qx11embedcontainer on Linux 2017-11-07 11:03:37 +01:00
Lukas W
6eb447deb7 Merge branch 'stable-1.2' into fix/qt5-vst
# Conflicts:
#	.gitmodules
#	.travis/linux..install.sh
#	CMakeLists.txt
#	plugins/vst_base/CMakeLists.txt
#	src/3rdparty/CMakeLists.txt
2017-11-07 10:58:52 +01:00
Lukas W
e3ba9ba9be Update qt5-x11embed submodule for CMake changes 2017-11-06 19:15:57 +01:00
Lukas W
421a85d2e1 Update qt5-x11embed submodule 2017-11-06 18:32:56 +01:00
Lukas W
e95fdcc37d Add missing includes 2017-11-06 18:29:09 +01:00
Lukas W
472a74d252 Minor fixes 2017-11-06 16:31:12 +01:00
Lukas W
134dae80d5 VstEmbed: Add missing find_package instruction for Qt5X11Extras 2017-11-06 11:39:39 +01:00
Lukas W
415316f722 VstEmbed: Remove obsolete CMake flags 2017-11-06 11:39:19 +01:00
Lukas W
6839746344 VstEmbed: Allow selecting method at runtime 2017-11-06 11:17:10 +01:00
Dan Williams
298f1ec335 Fix recent files (#3872)
* 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.
2017-11-04 17:31:41 +09:00
Hyunjin Song
a3c7328f9c Fix wrong value interpolation (#3929) 2017-11-04 08:54:33 +09:00
tresf
9d317e158e Cleanup unused files 2017-11-03 15:37:36 -04:00
tresf
b621c7eb34 Move zynaddsubfx to submodule 2017-11-03 15:37:36 -04:00
Oskar Wallgren
0c31cf49c0 linearToLogScale() - Input validation (#3932) 2017-11-03 09:41:28 +01:00
Steffen Baranowsky
c765249723 Sampletrack - resize from left (#3487)
Sampletrack - resize from left
2017-11-01 14:43:39 -04:00
tresf
f15acb8620 Specify architecture for AppImage 2017-11-01 01:01:09 -04:00
Oskar Wallgren
88b940fa05 LADSPA - Fix various floating point errors (#3927)
* swh - Dyson Compressor, fix NaN

* swh - shaper_1187, division with 0

* Division with 0 in calf limiter
2017-10-31 02:33:37 +01:00
Michael Gregorius
7e107f5914 Fix #3842: Opening a project with LB302 produces a noise burst
Fix the noise burst described in #3842 by removing the second
initialization of vca_a to 9 in the constructor of lb302Synth.
2017-10-30 15:48:10 +01:00
Lukas W
68c85c8e05 Merge branch 'stable-1.2' 2017-10-30 11:07:05 +01:00
Hyunjin Song
60e9b2f474 Fix crashes and deadlocks with previewing preset (#3905)
* Fix crash when closing while previewing preset

* Fix deadlock on previewing presets while playing arpeggio
2017-10-29 20:26:28 +09:00
Oskar Wallgren
9715da332b Deleting Automation Points at coarser quantization
Regression from f9ab2dec02
Don't follow quantization as you will have to move the
cursor that length before any deletion is made.
2017-10-26 02:38:15 +02:00
Hussam Eddin Alhomsi
05971cac6a Fix monstro's osc 3 vol knob values. (#3912) 2017-10-24 21:01:26 +02:00
Oskar Wallgren
f9ab2dec02 Automation Point delete radius and size (#3902)
* 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.
2017-10-24 17:42:30 +02:00
Hyunjin Song
de20d76c8e Ignore release frames for single-streamed instruments (#3900)
Let InstrumentSoundShaping::releaseFrames() ignore release frames for single-streamed instruments. And make it return 0 if m_instrumentTrack->instrument() is NULL.
2017-10-24 00:21:25 +09:00
liushuyu
9fb74d9bff Update i18n strings 2017-10-20 13:30:52 -06:00
Lukas W
ad5884d2fe Revert "LADSPA: CAPS: fix compilation with MinGW GCC >= 5.0"
This reverts commit 14b2028438.
2017-10-20 16:26:23 +02:00
Lukas W
ff958338e7 Revert Travis docker changes 2017-10-20 10:54:24 +02:00
Lukas W
307deaef4c Fix merge damage 2017-10-19 22:18:52 +02:00
Lukas W
72501a0f2f Fix & silence shellcheck warnings 2017-10-19 09:48:08 +02:00
Lukas W
8927ceaed5 Merge remote-tracking branch 'origin/master' 2017-10-19 09:38:00 +02:00
Lukas W
fbfcb43aeb Merge pull request #3881 from zonkmachine/arppatternsort
Note sorting algorithm rework
2017-10-19 08:49:31 +02:00
Lukas W
01a6cb13f7 Merge pull request #3894 from LMMS/fix/scripts
Fix shellcheck failing on master
2017-10-19 08:38:08 +02:00
Oskar Wallgren
9341acd129 Remove obsolete function - qSort() 2017-10-19 03:35:55 +02:00
Lukas W
ae73fa4521 Fix some shellchecks warnings 2017-10-18 23:27:21 +02:00
Tobias Junghans
9fd77a4959 Travis: fix installer name 2017-10-18 19:22:07 +02:00
Tobias Junghans
0c06bc2498 Travis: install libz-mingw-w64-dev for Windows builds 2017-10-18 19:02:45 +02:00
Tobias Junghans
3781412a2e Travis: use Qt5LinguistTools from mingw-w64 toolchain 2017-10-18 18:51:26 +02:00
Tobias Junghans
f68b462a61 CMake: always require Qt5LinguistTools 2017-10-18 18:51:01 +02:00
Tobias Junghans
597e54ac8a CMake: enforce new behaviour for CMP0020 2017-10-18 18:47:58 +02:00
Tobias Junghans
350cd2738c Travis: fix syntax error in script 2017-10-18 18:38:50 +02:00
Tobias Junghans
cd677273ac Travis: only install required packages for software-properties-common 2017-10-18 18:36:04 +02:00
Tobias Junghans
c4ee2f70bd Travis: remove MinGW package caching relicts 2017-10-18 18:32:51 +02:00
Tobias Junghans
e462f90df1 Travis: call build script directly for Docker-based builds 2017-10-18 18:31:54 +02:00
Tobias Junghans
874edf362c Travis: fix typo in package name 2017-10-18 18:29:23 +02:00
Tobias Junghans
57a53feadd Travis: fix syntax error in Dockerfiles 2017-10-18 18:25:36 +02:00
Tobias Junghans
4730f8b068 Travis: cross-compile in Docker containers with mingw-w64 toolchain 2017-10-18 18:21:56 +02:00
Tobias Junghans
6e3046d9f9 CMake: migrate to new mingw-w64 toolchain 2017-10-18 18:17:53 +02:00
Lukas W
1059c92d87 Merge branch 'stable-1.2'
# Conflicts:
#	.travis/linux..before_install.sh
#	.travis/linux..install.sh
#	cmake/linux/lmms.desktop
#	plugins/vst_base/CMakeLists.txt
2017-10-18 17:33:55 +02:00
Lukas W
8d6cb120b9 Replace MemoryManager implementation with rpmalloc (#3873)
* Replace MemoryManager implementation with rpmalloc
    Fixes #3865
* Travis: Specify OSX image for Qt5 build
2017-10-18 17:02:40 +02:00
Oskar Wallgren
81966fa1a6 Sort note patterns after both position and key 2017-10-18 14:41:00 +02:00
Lukas W
20ea945cee Fix typo 2017-10-18 10:24:36 +02:00
Lukas W
4594e7e237 Merge pull request #3889 from Umcaruje/portaudiowindowsbyebye
Disable portaudio on Windows
2017-10-18 09:49:18 +02:00
Tobias Junghans
14b2028438 LADSPA: CAPS: fix compilation with MinGW GCC >= 5.0 2017-10-18 08:00:40 +02:00
Lukas W
9d560a3104 ZynAddSubFx: Fix preset loading (#3891)
Fix regression from #1719
Fixes #3886
2017-10-17 15:46:16 -04:00
Lukas W
6fc4577f10 PlayHandle: Zero out buffer before processing
Fixes buffer noises when instruments don't write the whole buffer, such as
bitinvader. Related:
* #3884 (comment): https://github.com/LMMS/lmms/pull/3884#issuecomment-337170598
* #3883
# #3383
2017-10-17 20:24:34 +02:00
Umcaruje
6e5d82f954 Disable portaudio on Windows 2017-10-16 22:08:12 +02:00
Tres Finocchiaro
3e90e37352 Add AppImage support to Linux builds (#3688)
Add AppImage support
2017-10-16 15:09:30 -04:00
Tres Finocchiaro
c051e9bf34 Use weak loading of libjack (#3887) 2017-10-16 14:46:25 -04:00
Tres Finocchiaro
221d0cb355 Switch Travis-CI to Qt5.8 (#3885) 2017-10-16 13:48:38 -04:00
Hyunjin Song
eaa7b0dd7c Fix sfxr buffer noise (#3883) 2017-10-16 17:14:47 +02:00
Lukas W
9ae1bdecda MSVC compilation fixes 2017-10-16 15:51:21 +02:00
Lukas W
c2af8ae554 Remove "-fno-exceptions" compile flag 2017-10-16 15:03:20 +02:00
Lukas W
8ed6295a7d Use CMAKE_CXX_STANDARD as a portable way of setting C++11
Fixes MSVC warnings "unknown option -std=c++11"
2017-10-16 15:01:13 +02:00
Lukas W
d32b373d78 MSVC: Fix 64bit detection 2017-10-16 14:49:34 +02:00
Lukas W
f123b82f27 MSVC: Use Q_LIKELY and Q_UNLIKELY instead of gcc-specific extensions 2017-10-16 11:18:15 +02:00
Lukas W
5d4bba9c3c Port MicroTimer to portable C++11 for MSVC compatibility 2017-10-16 11:17:30 +02:00
Lukas W
142f0f29cd MSVC: Fix compiler warning flags 2017-10-16 11:17:03 +02:00
Lukas W
2930ef69cd Merge pull request #3884 from PhysSong/nphdestruct
Fix missing destructor call in NotePlayHandle
2017-10-16 09:23:31 +02:00
Hyunin Song
2d07efd1dd Replace NotePlayHandle::done() to the actual destructor 2017-10-16 15:26:05 +09:00
Tres Finocchiaro
7f92b82738 Upgrade to fluidsynth 1.1.8, switch to gist 2017-10-14 13:41:17 -04:00
Dan Williams
4d26654534 Fix warnings (#3852)
* Remove register keyword

Register is meaningless in c++, and removed in c++17

* Fix compiler warningsg

Add missing override, remove unused capture, and remove unused local variablees
2017-10-11 19:10:03 +02:00
David CARLIER
54f3eccad7 linkage issue fixes due to inlined functions (#3815) 2017-10-10 21:35:02 -04:00
Rebecca LaVie
f24f8c7b00 LCD Updates (#3864) 2017-10-10 19:05:37 +02:00
Oskar Wallgren
d0cd42ee5e Update project year 2017-10-10 18:43:03 +02:00
Oskar Wallgren
2d583db990 Fix arpeggio sort mode (#3867)
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
2017-10-10 06:05:11 +02:00
Oskar Wallgren
6da87379b4 Arpeggiator fixes (#3858)
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).
2017-10-09 06:29:23 +02:00
Hyunin Song
0a6a6d1a77 Fix warning in automation unit test 2017-10-07 16:15:09 +09:00
Hyunin Song
e0bd797876 Merge branch 'stable-1.2' 2017-10-03 15:56:16 +09:00
Steffen Baranowsky
31d27d2099 don't allow dragging TCOs in BBEditor (#3832)
* don't allow dragging TCOs in BBEditor

* change bbtrack detecting

* code improvements
2017-10-03 00:53:49 +02:00
David CARLIER
fdec4da50c fixing C abs/C++ abs mix up (#3837) 2017-10-03 00:47:55 +02:00
David CARLIER
e7e24935b3 catching-up for openbsd sndio support + applying abs call fix (#3839) 2017-10-03 00:47:45 +02:00
Hussam Eddin Alhomsi
e5c1854df0 Update the grid after changing the quantization value in automation editor 2017-10-02 22:05:16 +02:00
Oskar Wallgren
29d8734c51 Save track height under a separate name, 'trackheight' (#3840) 2017-10-02 15:10:33 +02:00
Umcaruje
fb5a515f77 Bump to rc4 2017-10-01 22:10:45 +02:00
Dominic Clark
9407e84ffa Stop some autosave crashes (#3841) 2017-10-01 22:01:38 +02:00
Dominic Clark
d5a2ea136f Fix hang when remote plugin is missing (#3770) 2017-10-01 17:30:37 +02:00
Michael Gregorius
b1af4c233f Introduce an enum to describe the VCA mode
Replace the integer encoding of the VCA mode with an enumeration.
2017-10-01 11:51:44 +02:00
Michael Gregorius
4fa96bc6c6 LB302: Move init of VCA members into constructor initializer list
Move the initialization of the members belonging to the VCA into
lb302Synth's constructor initializer list. This also removes a
duplication initialization of vca_mode from the code.
2017-10-01 11:51:44 +02:00
Michael Gregorius
b2a01ad8c3 Fix #3842: Opening a project with LB302 produces a noise burst
Fix the noise burst described in #3842 by removing the second
initialization of vca_a to 9 in the constructor of lb302Synth.
2017-10-01 11:51:44 +02:00
Hyunjin Song
e5db27542b Fix sound while playing from piano roll, when BB tracks are muted (#3804)
* Don't set BB track for tracks not in the BB

* Don't check for BB track mute state if we're playing a single pattern
2017-09-28 09:55:16 +09:00
Lukas W
f23cf4e0bf Fix "out of buffers" crash (#3783)
Remove BufferManager implementation. Use MemoryManager allocation instead and re-use buffers where they are allocated (AudioPort.cpp & PlayHandle.cpp)
2017-09-26 20:33:09 +02:00
Dominic Clark
dd429c5caf Don't let plugins make the main window transparent (#3809)
* Don't let plugins make the main window transparent

* Don't clear WS_EX_LAYERED if it was already set
2017-09-25 23:09:38 +02:00
Hyunjin Song
4ca6cdb9c7 Fix VST effect control icon display
Fix broken VST effect control icon display in master branch due to the difference in CMakeLists.txt
2017-09-24 15:42:02 +09:00
Lukas W
ffa1b63f05 Fix VST effects embedding 2017-09-22 12:06:19 +02:00
Lukas W
df37833ca5 Merge branch 'stable-1.2' into fix/qt5-vst
# Conflicts:
#	plugins/vst_base/RemoteVstPlugin.cpp
2017-09-22 11:50:19 +02:00
DomClark
fb5a58a526 Don't use VST-provided memory when loading chunks (#3805) 2017-09-21 00:00:19 +02:00
flynn16
8a39302571 Enable HiDPI Scaling (Qt 5.6+ only) [stable-1.2] (#3814)
Enables HiDPI Scaling in GuiApplication.cpp, environmental variable and mac manifest
2017-09-20 10:12:41 -07:00
Hyunjin Song
4e3c6b0940 Fix recording of single streamed instruments(regression in #3774) (#3803)
* Revert "same note layering when sustain pedal is pressed (#3774)"

This reverts commit e387e77445.

* Fix recording of sustained notes
2017-09-18 21:48:33 +02:00
Hyunjin Song
c0682c94a4 Fix MIDI export (#3733)
* 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.
2017-09-14 08:09:54 +09:00
LMMS Service Account
28140aa1a4 Updating translations for data/locale/nl.ts 2017-09-13 10:25:26 -04:00
Steffen Baranowsky
b69b585612 fix CTRL in songeditor by losing focus (#3796)
* fix CTRL in songeditor by losing focus

* init m_ctrlAction
2017-09-12 21:57:40 +02:00
Oskar Wallgren
f26a02da04 Suppress midi in events on export (#3778) 2017-09-12 10:28:38 +02:00
LMMS Service Account
30020ebc8c Updating translations for data/locale/fr.ts 2017-09-11 12:32:45 -04:00
DomClark
cfb7a89f0e Fix empty VST tracks creating noise in playback (#3798) 2017-09-10 09:06:38 +02:00
liushuyu
661daedbe2 Update i18n strings 2017-09-09 16:14:20 -06:00
liushuyu
242223e1bf Update i18n source strings 2017-09-09 13:56:07 -06:00
liushuyu
da7b61535b Merge stable-1.2 into master 2017-09-09 13:55:36 -06:00
DomClark
7429cb8155 Fix segfault on VST plugin I/O change 2017-09-08 23:14:52 +02:00
DomClark
fe98a9aa43 Fix some VST deadlocks/hangs 2017-09-08 23:14:52 +02:00
tresf
55521b508d Install libgig-*.dll for Windows builds 2017-09-07 16:12:21 -04:00
tresf
b18480ec2c Fix pthread location for msys2 2017-09-07 14:58:38 -04:00
Hyunjin Song
d67ecacdb4 Don't use temporary gz file for ppa listing
Fix shellcheck error, introduced by commit b6c97c5.
2017-09-07 16:54:41 +09:00
tresf
b6c97c5973 Msys2 fixes 2017-09-06 22:52:46 -07:00
Hyunjin Song
9d7c34098c Fix Vibed when the "P" parameter has non-zero value (#3789) 2017-09-06 17:57:24 +09:00
Lukas W
e7d06759b5 Fix Qt4 VST embed option 2017-09-01 14:26:46 +02:00
Lukas W
ddab534656 Allow switching VST embed method at compile time 2017-09-01 14:18:55 +02:00
Lukas W
f7dab939ae Merge branch 'qt5-vst-2-stable' into fix/qt5-vst
# Conflicts:
#	plugins/vst_base/RemoteVstPlugin.cpp
#	plugins/vst_base/VstPlugin.cpp
2017-09-01 14:18:26 +02:00
Lukas W
bd33475534 Fix x11embed for non qt5+linux 2017-09-01 12:20:20 +02:00
Lukas W
0d3aaf667b .gitmodules: Use https URL 2017-09-01 12:20:20 +02:00
Lukas W
def2b7d509 Move X11EmbedContainer to submodule 2017-09-01 12:20:20 +02:00
Lukas W
d9626e9e3b Move X11EmbedContainer.h to include 2017-09-01 12:20:20 +02:00
Lukas W
000fe2da7b Travis: Fix xcb package name 2017-09-01 12:20:20 +02:00
Lukas W
dc4a3875a3 X11EmbedContainer: Don't grab mouse in acceptClient, more debugging msgs 2017-09-01 12:20:20 +02:00
Lukas W
7ce60c247a Travis: Add missing packages 2017-09-01 12:20:20 +02:00
Lukas W
8fdcc6ccac Fix compile on Windows 2017-09-01 12:20:20 +02:00
Lukas W
0e311ffd47 X11Embed: Remove flag causing embedding to fail 2017-09-01 12:20:20 +02:00
Lukas W
f097be6c40 RemoteVst: Fix flickering when moving window 2017-09-01 12:20:20 +02:00
Lukas W
adef05fb71 X11EmbedContainer: Fix XEMBED protocol implementation 2017-09-01 12:20:20 +02:00
Lukas W
e661d26f42 Add X11EmbedContainer Qt5 port 2017-09-01 12:20:20 +02:00
Tres Finocchiaro
47d0e66fcc Re-enable SF2
Per https://github.com/LMMS/lmms/pull/3489#issuecomment-292976079
2017-09-01 12:18:46 +02:00
Javier Serrano Polo
7a9396d6ea Let Wine handle the window interface 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
d04fd9f542 FluidSynth is currently undistributable 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
2d35de4182 Debug window ID 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
f87f3638e1 Use window instead of embedder application 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
12f6ea5566 C++11 is enabled by default now 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
e3d3052e42 Enable C++11 on Windows 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
6395cd4c41 Enable C++11 2017-09-01 12:18:46 +02:00
Javier Serrano Polo
ebe63d1425 Fixes for Windows builds 2017-09-01 12:08:48 +02:00
Javier Serrano Polo
878dd94e8d Embed in a separate window 2017-09-01 12:08:48 +02:00
Javier Serrano Polo
a81f4ca8e9 Embed VST GUI in subwindow 2017-09-01 12:08:48 +02:00
Lukas W
24d320de34 Fix some memory leaks (#3779) 2017-08-28 11:21:10 +02:00
Lukas W
12edb58c77 Merge remote-tracking branch 'upstream/stable-1.2'
# Conflicts:
#	data/themes/default/style.css
#	src/gui/ExportProjectDialog.cpp
#	src/tracks/Pattern.cpp
2017-08-27 13:07:45 +02:00
Steffen Baranowsky
9b5d3790b0 shortcut refactor for songeditor (#3649)
* shortcut refactor for songeditor

* Ctrl-modifier for copy Tcos

* QAction()::trigger methode qt4 compatible
2017-08-27 12:23:08 +02:00
Andrés
efd0d34f2b same note layering when sustain pedal is pressed (#3774)
[cherry-picked from master]
2017-08-26 06:24:53 +02:00
Andrés
e387e77445 same note layering when sustain pedal is pressed (#3774) 2017-08-26 06:01:01 +02:00
Arash Partow
8dcf997872 General improvements and fixes (#3772)
Added fixes for a clean GCC 7.+ compile
2017-08-23 21:09:43 +02:00
Umcaruje
206a08e4a9 Paint a black rectangle under patterns to prevent glitches (#3759) 2017-08-17 13:57:10 +02:00
Umcaruje
2981651cb2 Add a border on non-fixed BB patterns (#3758) 2017-08-16 15:00:34 +02:00
Andrés
94646e28fe "misc" view now shows the model state, of the track use of master pitch (#3753)
[cherry-picked from master]
2017-08-16 01:46:17 +02:00
Andrés
153ab375f9 "misc" view now shows the model state, of the track use of master pitch (#3753) 2017-08-16 01:35:04 +02:00
Diego Ramos Ruggeri
a602bf9b29 Fix link to "Compiling" wiki page on README (#3765) 2017-08-13 10:34:44 -04:00
Hyunjin Song
88cc58600c Fix producing of NaN from Env/LFO parameter change while playing (#3761)
Guarantee thread safety to ensure fillLevel() not to read value from
wrong buffer address.
2017-08-12 10:16:34 +09:00
David CARLIER
9ae339c82b Fixes the OpenBSD build. (#3716) 2017-08-08 12:27:54 +02:00
Umcaruje
4d044439ab Fix file permissions for theme files (#3752) 2017-08-07 10:35:02 +02:00
Levin Oehlmann
e9a4063119 Add FLAC export and related options (#3731)
* Add FLAC export, based on WAV renderer

* Depend on sndfile>=1.0.18 (previously >=1.0.11)

* Add compression option to FLAC export, if available.

The code related to compression is only generated if LMMS_HAVE_SF_COMPLEVEL is defined(libsndfile>=1.0.26).

* Save into the correct file extension upon single-export.

* Use unique_ptr in FLAC renderer and be more expressive about involved types.

* Use unique_ptr and remove manual memory management in ExportProjectDialog

* Add 'flac' format info to --help and manpage
2017-08-04 07:19:39 +09:00
Hyunjin Song
37f6032b4d Fix deadlock when exporting is finished, if the project has any Sample TCO(s). (#3742)
[cherry-picked from stable-1.2]
2017-08-02 09:14:52 +02:00
Hyunjin Song
08e64dc637 Fix deadlock when exporting is finished, if the project has any Sample TCO(s). (#3742) 2017-08-02 07:56:28 +02:00
Andrés
31126b0aa4 Midi sustain working when envelope is on (#3730)
* midi sustain working when envelope is on

* pressing sustain pedal again doesn't pause release

[cherry-picked from master]
2017-08-02 07:39:00 +02:00
Andrés
44028c8594 Midi sustain working when envelope is on (#3730)
* midi sustain working when envelope is on

* pressing sustain pedal again doesn't pause release
2017-08-02 07:20:09 +02:00
Tres Finocchiaro
0e88a27389 Add support for SDL2 (#3732) 2017-08-01 00:39:00 -04:00
Oskar Wallgren
4402ca95f2 Fixes to recover file system (#3722)
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.

[cherry-picked from stable-1.2]
2017-07-30 14:33:30 +02:00
Oskar Wallgren
2e841e4917 Fixes to recover file system (#3722)
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.
2017-07-30 11:43:48 +02:00
Michael Gregorius
1f257f8125 Fix another memory leak by returning the error messages on the stack
Change Song::errorSummary() to return the string with the error messages
on the stack to remove another memory leak.
2017-07-27 19:16:05 +02:00
Michael Gregorius
017fb4b089 Fix a memory leak in Song (dynamically allocated error list)
Make the member Song::m_errors a static member to prevent memory leaks.
The member was allocated dynamically when an instance of a Song was
created but was not deleted in the destructor.
2017-07-27 19:07:19 +02:00
Michael Gregorius
9d92ea2cca Show the names of patterns in their tool tip
Adjust PatternView::update to show the name of the pattern as the tool
tip (regardless of whether it is a beat and bassline or a melody
pattern).

Override the public slot TrackContentObjectView::update for
AutomationPatternView and BBTCOView. Implement it similar to
PatternView::update.
2017-07-27 17:26:13 +02:00
irrenhaus3
b83c1bdebe Respect build options in export dialogs (#3714)
* 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.
2017-07-27 09:10:32 +09:00
Michael Gregorius
379e1020ab Sample tracks: Show the file name of the loaded file in the label
Show the file name without the full path in the text label for sample
tracks. Show the file name with the full path in the tool tip.
2017-07-26 21:16:19 +02:00
Michael Gregorius
0a27bc180e Expose properties for note border color and fill color to style sheets
Expose properties to set the colors for note borders and note fills for
patterns to the style sheets. Both properties are exposed for the muted
and not muted case. Use these new properties during rendering.

Adjust the style sheets for the classic and default theme.
2017-07-26 20:39:50 +02:00
Michael Gregorius
5141dc5f3d Fix problem with Qt5 and move painting code in one block
Fix a problem with Qt5 by explicitly setting the pen width to 0 after
setting the transformation.

Reorder some of the other code to differentiate better between some
calculations that are in done in preparation for the painting and the
actual painting itself.
2017-07-26 20:39:50 +02:00
Michael Gregorius
ce0de8a3ff Paint notes as lines at small sizes and add a small border
Draw notes as lines in case the pattern size is smaller than 64 pixels.
Antialiasing is only used when the notes are drawn as rectangles.

Add a border of four pixels at the top and bottom of the area where the
notes are drawn so they don't get pushed under the pattern borders.

Set the transparency of the text label to 100.

Clean up of some other code:
* Remove an unnecessary assignment to a pixmap
* Move code closer to where it is needed
* Remove an unncessary call to QPainter::end()
2017-07-26 20:39:50 +02:00
Michael Gregorius
461cb2bb3c Improve the rendering of melody patterns (mapped to [0,1] x [0,1])
Compute the height of the potential text field before rendering the
melody pattern so that we can use that information later.

Transform the painter so that notes drawn into a [0,1] x [0,1]
coordinate system are drawn at the correct position on the pattern
widget. Add code that moves the pattern notes smoothly under the text
label in case there is not much space, i.e. for narrow patterns. Notes
are drawn as filled rectangles with a slightly darker border.

Always draw at least an octave of notes onto the pattern, so that
patterns with just a single note will not look strange, i.e. that they
are not filled completely with the note. If there is additional space to
fill it will be rather filled at the top of the pattern so that single
notes have a high chance of being drawn below the pattern text.

Simplify the drawing of the inner and outer border.

Use numeric_limits to initialize the minimum and maximum key.

Remove some redundant checks whether the pattern holds notes and
decrease the indentation depth by two tabs for most of the code.
2017-07-26 20:39:50 +02:00
Michael Gregorius
c1be21f478 First implementation to draw pattern notes as boxes
Still uses absolute positions without any transformations. Some
refactorings/changes to make the code better understandable and concise.
2017-07-26 20:39:50 +02:00
irrenhaus3
c8af34af2f Respect build options in export dialogs (#3714)
* 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.
2017-07-26 19:48:25 +09:00
Andrés
d87a8b3da4 Fix recording of sustained midi notes (#3710) 2017-07-26 03:13:55 +02:00
Andrés
2464a57f3c Fix recording of sustained midi notes (#3710) 2017-07-26 02:48:24 +02:00
Karmo Rosental
587989b1c2 Updated Freeboy files from Game Music Emu 0.6.1. (#3618)
Uses upstream files to fix #326

[oskar.wallgren13@gmail.com: backported from master]
2017-07-23 19:26:23 +02:00
Tres Finocchiaro
ebfdc0491a Sync zyn with repo version (#3715)
Sync zyn plugin with zyn repo fixes
2017-07-22 04:21:04 -04:00
tresf
fda557fd10 Sync zyn license with repo version 2017-07-21 16:26:50 -04:00
Michael Gregorius
17f1856c84 Add back the rendering of text shadows for pattern labels
Add back the rendering of text shadows for pattern labels. If some
design does not want shadows beneath the text it's always possible to
set the CSS property qproperty-textShadowColor to something completely
transparent.
2017-07-20 19:53:02 +02:00
Michael Gregorius
a81b14b6cf Handle cases where elided text becomes empty or "..."
Render the whole text if the elided text becomes empty or if it only
contains one character, i.e. if it becomes "…". Solved as implemented
because I was not able to check for "…" explicitly, i.e. the comparison
against "…" still failed.
2017-07-20 19:53:02 +02:00
Michael Gregorius
f15fe18360 Expose the background color of the text labels in the style sheet
Add a new property "textBackgroundColor" to TrackContentObjectView to
expose the property to the style sheets. Use this property in the code
that renders the text labels.

Adjust the two existing style sheets.
2017-07-20 19:53:02 +02:00
Michael Gregorius
a23e344886 Make text rendering consistent for TrackContentObjectViews
Add the method paintTextLabel to TrackContentObjectView. This methods
implements the painting of a given text on a given painter. The new
implementation does not draw any text label in case the trimmed text
becomes empty.

Use the method paintTextLabel to paint the text for automation patterns,
BB patterns and instrument patterns.

Adjust the style sheet of the classic and default theme by moving the
font definition from PatternView into TrackContentObjectView so that it
can be used by all inheriting classes.
2017-07-20 19:53:02 +02:00
Michael Gregorius
bcdb5ecb5a Fix a problem with the time display
Some changes made in commit e05c82758e
have broken the update of the time display. This commit fixes the problem
by introducing a second version of MidiTime::ticksToMilliseconds which
takes a double as an argument for the ticks. This new method is then
used by the call to ticksToMilliseconds in Song::processNextBuffer which
fixes the problem.
2017-07-20 18:23:10 +02:00
Oskar Wallgren
6f1b11f0ee Envelopes and LFO - Don't divide by 0 (#3381)
We perform division with some Envelope and LFO variables so they mustn't
be zero. They are given a minimum value of one frame ( f_cnt_t ).
Since #3687 we have a compile flag to turn on debugging of floating point
operations. This will currently not let you pass the Envelope/LFO
initiation and this is also fixed by this PR.
2017-07-20 02:33:31 +02:00
Karmo Rosental
dc829f48af Added support for wine-stable from WineHQ repositories. (#3708)
Added support for wine-stable from WineHQ repositories.
2017-07-19 15:46:27 -04:00
Michael Gregorius
e05c82758e Remove explicit time calculations by moving them into Song and MidiTime
Add a method to convert a MidiTime instance to milliseconds. Also add a
static method to MidiTime that computes the time in milliseconds for a
given number of ticks and a tempo.

Remove the method that sets the milliseconds explicitly from Song.
Replace it by a method that takes a MidiTime instance and one method
that takes an amount of ticks.

Remove several explicit time calculations from the implementation of
Song and TimeLineWidget. Instead use the new methods.
2017-07-18 21:26:15 +02:00
Michael Gregorius
ebc9137a0f Restore the track height when loading files
The track height is already stored for every file that is saved. Remove a
condition that prevents its retrieval from files.

The removed condition was added as a fix for an issue with the number
#3585927 but it was not possible anymore to find out what this issue was
about.
2017-07-16 11:58:13 +02:00
Dave French
b3054fd639 Equalizer plugin, refinement to analysis display (#3530)
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.
2017-07-15 23:27:30 +02:00
Michael Gregorius
b7b2204cbb Remove unnecessary assignments to pixmaps in TCOs
Simplify the code that reinitializes the pixmap that caches the
graphical representation of some TCO widgets.

See comment in issue #3699.
2017-07-15 15:27:11 +02:00
Hyunin Song
cc3822141e Merge branch 'stable-1.2' into master (@liushuyu) 2017-07-15 08:08:07 +09:00
Karmo Rosental
aaf09bb4db Updated Freeboy files from Game Music Emu 0.6.1. (#3618)
Uses upstream files to fix #326
2017-07-14 16:51:58 -04:00
Tres Finocchiaro
0abe0a51c3 Merge pull request #3664 from karmux/vestige_controls_icon
Fix for misaligned controls icon in VeSTige plugin.
2017-07-14 16:31:13 -04:00
Tres Finocchiaro
3dfda61491 Merge pull request #3676 from M374LX/stable-1.2
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.
2017-07-14 16:17:50 -04:00
Half-Gray
98952636b5 Add tooltip for refresh button (#3643) 2017-07-14 04:14:29 +02:00
Michael Gregorius
51dd094403 Add CMake option to enable the debugging of floating point exceptions
Add a new CMake option WANT_DEBUG_FPE which adds the define
LMMS_DEBUG_FPE if activated. Extend lmmsconfig.h.in with regards to that
define. Include information about development options to the CMake
output.

Install a signal handler to trap floating point exceptions when starting
LMMS in case it is compiled using the option described above. The
current implementation of the signal handler prints a stack trace and
then exits the application.

Currently this option is only enabled for Linux builds due to
uncertainty with regards to which of the needed headers are supported by
Windows and Apple.
2017-07-12 21:51:48 +02:00
Michael Gregorius
a70d255418 Use font properties from CSS to draw the pattern labels
Use the font properties that are defined in the CSS to draw the pattern
labels. This provides flexibility with regards to the font properties
that are used (size, font family, etc.).

Adjust the CSS for the default theme and the classic theme.
2017-07-11 21:23:13 +02:00
Michael Gregorius
c0a4f67544 Render a black semitransparent rectangle beneath the elided pattern text
Make the pattern names better readable by rendering them on top of a
semitransparent black rectangle. Elide the text and make it render a bit
more to the right.
2017-07-11 21:23:13 +02:00
Alexandre Almeida
aa6d528c98 Cancel track rename with Escape key 2017-07-08 19:42:13 -03:00
Oskar Wallgren
020f1652bf Clean up after render in ProjectRenderer destructor
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.
2017-07-07 21:33:15 +02:00
Michael Gregorius
1b24a0520d Move the search bar on top of the file browser for sidebar pages (#3657)
Move the search bar on top of the file browser for the following sidebar
windows:
* "My Projects"
* "My Samples"
* "My Presets"
* "My Home"
* "My Computer"

Add the greyed out text "Search" to the search text edit.
The text is only shown as long as no text is entered in the search field.

Also rename some variable names to something more meaningful. Rename the
member m_l of FileBrowser to m_fileBrowserTreeWidget. Rename the
following local variables in the constructor of FileBrowser:
* ops -> searchWidget
* opl -> searchWidgetLayout
2017-07-07 18:52:41 +02:00
Oskar Wallgren
d65e1a361a MIDI - Don't apply base velocity to all controller values. (#3678) 2017-07-07 00:15:59 +02:00
Hyunjin Song
c6c67b3c75 Fixes for project loading progress display (#3672)
Fix project loading progress jumping back.

Show the name of the track currently being loaded.
2017-07-06 20:47:01 +02:00
Tres Finocchiaro
94420d9d5c Merge pull request #3667 from zapashcanon/scripts
Fix scripts for shellcheck
2017-07-04 10:19:45 -04:00
zapashcanon
060c012b10 Clean code 2017-07-04 11:24:38 +02:00
zapashcanon
e90bc630fa Fix scripts 2017-07-04 11:12:21 +02:00
Hyunjin Song
494714bf44 Update classic/style.css with TabWidget, TrackView, PianoView and Fader colors (#3665)
* Add TabWidget color settings to classic/style.css

* update the classic theme

* Revert unnecessary formattings

* Fix style.css
2017-07-03 13:37:46 +02:00
Oskar Wallgren
13e65b7f56 Ensure midi port exists before removing 2017-07-03 04:52:37 +02:00
m4sk1n
996b1c4bfa Added Polish strings to LMMS.desktop (#3666) 2017-07-02 16:19:47 +02:00
gnudles
dff76b2e83 Xpressive plugin (#3259)
* First Preview of the X-Pressive Plugin
(exprtk.hpp is not included, get it from my exprtk fork in the branch
internal_data_functions)
available keys:
f- note's frequency. available only in the output expressions
t- time in seconds. in the Waves (W1,W2,W3) it's in the range [0,1)
key- the note's keyboard key. available only in the output expressions.
v- the note's velocity (divided by 255.0 so it is in the range [0,1]).
available only in the output expressions.
rel- gives 0 while the key is holded, and 1 after the key release.
available only in the output expressions.
A1,A2,A3- general purpose knobs (you can control them with the
automations). available only in the output expressions.
W1,W2,W3- precalculated wave forms. can be also load from file. you can
use them only in the output expressions
available functions:
cent(x)- gives pow(2,x/1200)
rand()- random number generator. in range [-1,1). each call gives other
value.
randv(i)- random vector (with pseudo infinite integer cells). the values
are in range [-1,1). it's stays consistent only across the note
playback. so each note playback will get other vector (even on the same
key).
sinew- sine wave with period of 1.
saww- saw wave with period of 1.
squarew- square wave with period of 1.
trianglew- triangle wave with period of 1.
expw- exponent wave with period of 1.
expnw- another exponent wave with period of 1.
moogw- moog wave with period of 1.
moogsaww- moog-saw wave with period of 1.
you can use * % ^ / + - pow sin log pi etc.

* Xpressive Plug-In:
Added Release transition knob that control the "rel" variable. (the
duration of transit from 0 to 1)
Fixed some problems in the displays. (update display when changing
A1,A2,A3, clear display with invalid expression.

* X-Pressive Plug-In: Few more fixes
Changed the callbacks in exprfront.cpp to be templated.
Added help.
Added ExprTk.hpp.
some bug fixes (inf issues).
Added integrate function.

* Special version of ExprTk with modified license (BSL) for the LMMS project https://github.com/LMMS/lmms

* Xpressive Plug-In- fixed some building errors.
Added the "e" euler's constant.

* Xpressive Plug-In - fix mingw64 issues

* X-Pressive Plug-in:
Added "trel" (time since release) variable.
The integrate function can now have unlimited usage.
Added selective interpolation per wave.
Improved a little the random vector function.
Some other improvements, code cleaning, etc...

* Xpressive Plug-In:
move clearGraph definition into Graph.cpp.
fixed compilation errors. (oops..)

* X-Pressive plug-in: updated presets names

* X-Pressive plug-in
added semitone function, added sample-rate variable

* X-Pressive plug-in, code cleaning, changed the rendering function to
achieve performace gain.

* X-Pressive plug-in - fix the string counting function

* X-Pressive plug-in - until somebody will find a better solution,
exprtk.hpp is patched under the name exprtk.patched.hpp ...

* X-Pressive plug-in - fix compiling errors.

* X-Pressive plug-in - added patch file for exprtk.hpp,
added last function that gives last calculated samples.
moved ExprSynth to be with ExprFront for performance reasons.

* X-Pressive plugin - moved the patched file back to the source tree, added .gitignore file..

* X-Pressive plugin - fix compilation error. (isnan isinf)

* X-Pressive plugin - tried to fix embed.cpp problem,
added new variable to the parser (tempo)

* X-Pressive plugin - fixed cmake script

* X-Pressive plugin - updated the license and the diff file.

* Updates to ExprTk

* Added return statement enable/disable via parser settings

Added exprtk_disable_return_statement macro for disabling return statements and associated exceptions at the source code level.

* X-Pressive plugin - updated CMakeLists.txt to use the correct flags on each platform.
also added exprtk.hpp as a dependency for the patch command.
Updated the exprtk diff file.

* X-Pressive plugin - moved the enhanced features flag to the WIN64 installation.

* X-Pressive plugin - another fix for CMakeLists.txt

* Minor updates to ExprTk

Updated multi-sub expression operator to return final sub-expression type.
Updates to exprtk_disable_return_statement macro for disabling return statements and associated exceptions at the source code level.

* X-Pressive plug-in - added try-block around exprtk calls and enabled the
-fexceptions flag, so patch file is no longer needed.

* X-Pressive plug-in - small fix in CMakeLists.txt

* Update ExprTk to tip of branch.

* X-Pressive plugin - added graph drawing feature..

* Updating exprtk.hpp to the latest upstream version
2017-06-26 19:45:59 +02:00
Karmo Rosental
afdd5ac8cb Fix for misaligned controls icon in VeSTige plugin. 2017-06-25 00:47:32 +03:00
Hyunjin Song
21caf2be69 Correct spellings in fft_helpers.cpp (#3645)
* Correct spellings in fft_helpers.cpp

change bandwith to bandwidth

*  Correct spellings in fft_helpers.cpp

Changed bandwith to bandwidth
2017-06-19 09:35:24 -04:00
Michael Gregorius
842c7194b0 Implement command line export for MP3 (#3641)
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.
2017-06-18 13:59:48 +02:00
Steffen Baranowsky
fc6d844a92 saves the correct subwindow size when it is hidden (#3589)
* saves the correct subwindow size when it is hidden

* remove invisible size from saveWidgetState()
2017-06-13 12:31:21 +02:00
tresf
b2919d60d5 Disable HiDPI fix for Windows 7 and older
Closes #3619
2017-06-12 18:11:56 -04:00
Michael Gregorius
c2f26a76d4 Implement MP3 encoding support
Implement MP3 encoding support
2017-06-12 13:57:08 -04:00
Oskar Wallgren
c53dd31064 Silence warning message and fix obsolete vorbis tag message (#3634)
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.
2017-06-12 07:53:32 +02:00
Karmo Rosental
ad2c843e20 Fixed inverted zooming. (#3570)
* Fixed inverted zooming.

* Prevent useless tests.
2017-06-10 21:55:00 +02:00
Oskar Wallgren
a371ff0ea1 Some fixes to recent files (#3621)
* 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.
2017-06-10 20:38:17 +02:00
Steffen Baranowsky
5a2d8f12ad fixes rounding issue in automatablemodel (#3597)
* fixes rounding issue in automatablemodel

* fix CRS knob sticking in instrument plugins
2017-06-09 10:28:59 +02:00
Steffen Baranowsky
143571761f fixes sample muting bug for sampletrack (#3591)
* fixes sample muting bug for sampletrack

* simplify SampleTrack::updateTcos
2017-06-08 12:31:53 +02:00
Karmo Rosental
567898143b Fixed LMMS crash when pressing Q in not existing piano roll. (#3609) 2017-06-07 23:07:48 +02:00
Michael Gregorius
d3359f5a70 Fix #3616 by preventing fold overs for clipped data
Use libsndfile functionality to prevent fold overs when exporting clipped
data. The fold overs occurred when exporting with a bit depth of 24 bit.
2017-06-07 19:51:09 +02:00
Michael Gregorius
e36b05e425 Add myself (Michael Gregorius) to the list of authors 2017-06-05 23:50:39 +02:00
liushuyu
075d980d0d Update i18n source strings
(from stable-1.2)
2017-06-03 22:44:18 +08:00
liushuyu
6bb19f4fbd update i18n strings 2017-06-03 22:43:13 +08:00
LMMS Service Account
d8dc29e675 Updating translations for data/locale/fr.ts 2017-06-03 10:30:10 -04:00
Tres Finocchiaro
dd80268669 Fix overzealous quoting (#3604)
Fixes builds from directories with spaces
2017-06-02 17:15:44 -04:00
Steffen Baranowsky
cee68c773e fixes position marker height on startup (#3587)
Fixes position marker height on startup
2017-06-01 21:36:36 -04:00
miketurn
1f66f62ed7 Proper Case Renames (#3573) 2017-06-01 21:28:09 -04:00
Tres Finocchiaro
e6cbdf6447 Better message for missing sndio (#3596)
Better message for missing sndio
2017-06-01 21:15:54 -04:00
Tres Finocchiaro
445bfe9fa7 VST plugin compilation fix in ubuntu 64bit. (#3593)
When compiling on ubuntu 16.10 64bit, the VST compilation succeeds only when adding `-L/usr/lib/i386-linux-gnu/wine/` to the linker flags.
2017-06-01 16:03:12 -04:00
Tres Finocchiaro
7be63741d3 Add more brew packages (#3595)
* Add more brew packages
2017-06-01 02:13:59 -04:00
Karmo Rosental
635b50bfb5 VeSTige opens correct folder (#3550)
Open correct VST folder in previously saved projects with existing VeSTige instruments.
2017-05-31 14:55:22 -04:00
Umcaruje
afd22c8b74 Bump version number for RC3 2017-05-31 16:42:45 +02:00
Umcaruje
53772c052b Allow WidgetTab to use artwork tabs (@StCyr) (#3569)
* 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
2017-05-31 16:19:58 +02:00
Oskar Wallgren
9bdc011904 Fix export - double dialog windows on writing over existing file (#3526)
* Fix export - double dialog windows on writing over existing file

* Case sensitivity
2017-05-30 17:04:00 +02:00
Spekular
74790c0c45 Update Discord link to point to #rules (#3588)
We shuffled the channels around a bit and #welcome got deleted. #rules is what we want to link to now.
2017-05-29 19:26:43 +02:00
Hyunjin Song
4ff091fd6f Fix loop condition in project rendering (#3105, #2030) (#3576)
* Change loop condition in ProjectRenderer::run()

* Remove Song::isExportDone()
2017-05-29 18:40:05 +02:00
Steffen Baranowsky
1eef218aeb fix export project for sampletracks with vst effects on it (#3571)
* fix export project for sampletracks with vst effects on it

* removed playTriggered Signal
2017-05-29 15:53:06 +02:00
Tres Finocchiaro
f1a3368a37 Merge pull request #3583 from tresf/stable-1.2
Fix CMP0050 compilation warnings
2017-05-28 14:32:06 -07:00
Tres Finocchiaro
745042dffa Fix CMP0050 compilation warnings 2017-05-28 15:55:58 -04:00
Rebecca LaVie
3607c92fcd Bitcrush Plugin Redesign (#3575) 2017-05-27 16:39:57 +02:00
Steffen Baranowsky
38bca9af00 fix time signature updates timelinewidget also on pos 0 (#3572) 2017-05-23 23:38:30 +02:00
Hyunjin Song
f8a508f939 Fixes #3563 (#3567)
Added m_pattern->updateLength(); in PianoRoll::shiftPos
2017-05-21 23:09:39 +02:00
Steffen Baranowsky
6970c88e28 fix alternate shading for changing time signature (#3559)
* fix alternate shading for changing time signature

* fix alternade shading for automation editor on changing time signature

* code cleanup
2017-05-17 21:37:35 +02:00
Mark-Agent003
c0b910ec57 Replacement metronome samples (#3513)
Replacement metronome sounds
2017-05-17 10:10:40 -04:00
Dave French
300058df04 Flanger LFO rate syncronised (#3521)
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
2017-05-17 12:21:00 +02:00
Dave French
b432707b9b Remove glitching from the Flanger and Delay plugins (#3524)
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
2017-05-17 12:18:47 +02:00
LMMS Service Account
730605fd59 Updating translations for data/locale/es.ts 2017-05-16 21:27:42 -04:00
LMMS Service Account
b4ab48277c Updating translations for data/locale/it.ts 2017-05-16 13:32:31 -04:00
LMMS Service Account
b683004172 Updating translations for data/locale/cs.ts 2017-05-15 15:32:09 -04:00
Spekular
b0ae31c2ff Update Discord invite to link to #welcome (#3556)
This is where we want new users directed to.
2017-05-15 13:46:15 -04:00
Paul Batchelor
f390fd1723 ReverbSC: Method to change samplerate (#3401) (#3403)
* 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
2017-05-15 12:21:34 +02:00
Steffen Baranowsky
69d09f0186 don't change sampleTco length if tempo changed (#3543) 2017-05-14 12:22:40 +02:00
Tres Finocchiaro
17b37e02a9 Provide support for fallback config values (#3551)
Provide support for fallback config values

Makes autosave and some other values checked by default.  Supersedes #3541
2017-05-13 23:15:10 -04:00
Oskar Wallgren
290556e43d Remove Limited Session 2017-05-13 14:58:14 +02:00
Tres Finocchiaro
51329a821d Merge pull request #3554 from karmux/missing_vsteffect_icons
Show missing pixmaps in VST effects dialog.
2017-05-12 21:31:15 -04:00
Michael Gregorius
08201c2024 Merge pull request #3552 from michaelgregorius/3021-24-Bit-Export-For-1.2
24 Bit WAV export, variable bit rate Ogg and export dialog improvements
2017-05-12 21:11:24 +02:00
Karmo Rosental
7ea92305bf Show missing pixmaps in VST effects dialog. 2017-05-12 21:41:00 +03:00
Michael Gregorius
dfeb6bea3a Rename entry for bit depth from "24 Bit Float" to "24 Bit Integer" 2017-05-12 18:26:42 +02:00
Michael Gregorius
4b3309a4e9 Make the 24 bit export the default selection in the export dialog 2017-05-12 18:26:42 +02:00
Michael Gregorius
f06eac3f91 Add copyright info to the file OutputSettings.h 2017-05-12 18:26:42 +02:00
Michael Gregorius
823788919a Add the option to enable variable bit rates to the export dialog
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.
2017-05-12 18:26:42 +02:00
Michael Gregorius
4ac6aa909d Only show relevant widgets on the export dialog
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."
2017-05-12 18:26:42 +02:00
Michael Gregorius
d5fc38ebd9 Simplification of code and structure in the area of the file export
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.
2017-05-12 18:26:42 +02:00
Michael Gregorius
4196a30415 Implement 24 bit support for WAV export (#3021)
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.
2017-05-12 18:26:42 +02:00
LMMS Service Account
2ebd961f3f Updating translations for data/locale/nl.ts 2017-05-09 13:11:55 -04:00
liushuyu
1e3d0aa8a4 update i18n strings 2017-05-09 21:49:16 +08:00
Tres Finocchiaro
ff4ffd17f4 Merge pull request #3535 from curlymorphic/lfo
LFO controller now has correct frequency with multiple connections.
2017-05-07 17:12:18 -04:00
Lukas W
75077f6200 Fix automation processing in BB tracks (#3481)
Fixes #3464
2017-05-07 13:05:19 +02:00
Michael Gregorius
241d5f7479 Merge pull request #3516 from michaelgregorius/3021-24-Bit-Export
Implement 24 bit support for WAV export (#3021) and improve the export dialog (only show widgets relevant to output format, add variable bitrates for Ogg)
2017-05-07 12:31:04 +02:00
curlymorphic
1848ed20d9 LFO controller now has correct frequency with multiple connections.
m_bufferLastUpdated is now correctly set to the current frame upon updating
the buffer.
2017-05-07 08:18:08 +01:00
Tres Finocchiaro
7e3ee14cf1 Make factory samples relative (#3510)
* Make factory samples relative
Fixes #3491
Related #1719
2017-05-06 10:27:18 +02:00
Tres Finocchiaro
6a5255e379 Merge pull request #3531 from tresf/hidpi
Disable HiDPI on Windows
2017-05-05 21:16:44 -04:00
tresf
d2e50df3ce Disable HiDPI on Windows 2017-05-04 11:12:45 -04:00
Tres Finocchiaro
77496188ae Merge pull request #3522 from curlymorphic/delaySync
Correct the Delay syncronisation
2017-05-03 09:15:52 -04:00
Tres Finocchiaro
094258670f Merge pull request #3444 from LMMS/jasp00-patch-3
Document identifier collision in peak_controller_effect_controls.cpp
2017-05-02 22:20:28 -04:00
Michael Gregorius
954659fa8e Rename entry for bit depth from "24 Bit Float" to "24 Bit Integer" 2017-05-02 18:11:29 +02:00
Tres Finocchiaro
0190256801 Merge pull request #3520 from curlymorphic/eqWetDry
EQ plugin now responds to wet / dry control
2017-05-01 22:20:00 -04:00
Tres Finocchiaro
e3dc82c4a3 Merge pull request #3506 from zapashcanon/macosscript
Fix macos scripts
2017-05-01 18:44:52 -04:00
Léo Andrès
a74df5a4c5 Fix osx script, drop MacPorts support 2017-05-02 00:42:24 +02:00
Léo Andrès
c08c5ac0fc Use new brew package name syntax 2017-05-02 00:38:49 +02:00
Oskar Wallgren
082dbed8e9 Revert "'Off beat' beat notes to MelodyPattern"
This reverts commit e4474af091.
2017-05-01 22:15:55 +02:00
curlymorphic
50ccfba5d6 Correct the Delay syncronisation
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.
2017-05-01 15:44:58 +01:00
curlymorphic
a7154df004 EQ plugin now responds to wet / dry control 2017-05-01 12:11:43 +01:00
tresf
7a82d5b0c6 Revert "Fix sporadic msys2 pkg-config path problems"
This reverts commit 4e76b78691.
2017-04-30 09:26:07 -07:00
tresf
4e76b78691 Fix sporadic msys2 pkg-config path problems
Closes #3492
2017-04-30 09:17:31 -07:00
Michael Gregorius
8ecae3e59c Make the 24 bit export the default selection in the export dialog 2017-04-30 11:48:35 +02:00
Michael Gregorius
02a36d1387 Add copyright info to the file OutputSettings.h 2017-04-30 11:19:57 +02:00
tresf
f9e01b59b4 Fix PPA downloads
Per #3492
2017-04-29 22:33:35 -07:00
Michael Gregorius
0ba4df406c Add the option to enable variable bit rates to the export dialog
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.
2017-04-29 16:14:33 +02:00
Michael Gregorius
3a14d3b434 Only show relevant widgets on the export dialog
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."
2017-04-29 15:50:31 +02:00
Michael Gregorius
515b28d044 Simplification of code and structure in the area of the file export
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.
2017-04-29 15:00:54 +02:00
Karmo Rosental
2815da2805 Fixed #3498. Show missing pixmaps in VeSTige plugin. (#3501) 2017-04-28 23:09:31 +02:00
Michael Gregorius
b1df8fd4fc Implement 24 bit support for WAV export (#3021)
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.
2017-04-28 22:16:57 +02:00
Rebecca DeField
2f51062d1e Dual Filter Plugin Redesign (#3484)
* Dual Filter

* Design Tweaks
2017-04-27 23:34:27 +02:00
Tres Finocchiaro
cea7d7d002 Merge pull request #3476 from zapashcanon/shellcheck
Add shellcheck to the build
2017-04-17 02:26:40 -04:00
Karmo Rosental
2df56829a3 Fixed #3182. Always using master channel for preset previews. (#3503)
* Fixed #3182. Always using master channel for preset previews.
2017-04-16 08:57:46 -04:00
Karmo Rosental
5e58d3c00b Fixed #3182. Always using master channel for preset previews. (#3503)
* Fixed #3182. Always using master channel for preset previews.
2017-04-16 08:57:06 -04:00
zapashcanon
7844b3e289 Add shellcheck to the build 2017-04-16 00:46:47 +02:00
Karmo Rosental
09c9ccb34d Simpler SF2 Player file dialog. Copied from GIG Player. Opens correct SF2 plugin directory when running LMMS from build directory without install. (#3502) 2017-04-14 21:06:24 -04:00
Karmo Rosental
fc70ae3fba Simpler SF2 Player file dialog. Copied from GIG Player. Opens correct SF2 plugin directory when running LMMS from build directory without install. (#3502) 2017-04-14 21:05:34 -04:00
Jousboxx
32f07ac317 Added Buzzer Beater to demos (#3482)
Add 2017 kicker competition winner to demo projects.
2017-04-08 15:34:11 -04:00
Jousboxx
e67779f817 Added Buzzer Beater to demos (#3482)
Add 2017 kicker competition winner to demo projects.
2017-04-08 15:32:30 -04:00
Lukas W
c7ce554ea1 Merge branch 'stable-1.2' 2017-04-07 11:41:27 +02:00
Lukas W
e65b1c8ba8 SampleBuffer: Keep settings on sample rate change
Fixes #2779
2017-04-07 11:40:46 +02:00
Lukas W
96a00300e8 Fix automation processing in BB tracks (#3481)
Fixes #3464
2017-04-06 23:10:00 +02:00
Tres Finocchiaro
b5ac3161c9 Revert "Update README.md"
Accidental github commit
This reverts commit bd1fb1a382.
2017-04-04 23:16:45 -04:00
Tres Finocchiaro
a486a7281c Revert "Update README.md"
Accidental GitHub commmit
This reverts commit 5f1550de72.
2017-04-04 23:16:07 -04:00
Tres Finocchiaro
5f1550de72 Update README.md 2017-04-04 23:08:27 -04:00
Tres Finocchiaro
bd1fb1a382 Update README.md 2017-04-04 23:04:22 -04:00
Karmo Rosental
0b43741f7e Added support for official wine-devel and wine-staging packages. (#3278)
* Added support for wine-devel packages.

* Added support for wine-staging packages.

* Staging extra flags.

* Dynamic Wine branch detection (stable, devel, staging).

* Using STRING() to correct WINE_INCLUDE_DIR and WINE_LIBRARY.

* Don't override CMAKE_PREFIX_PATH.

* REPLACE outputs new variables.

* Renamed variables.
2017-04-01 12:15:23 +00:00
Steffen Baranowsky
f8bf07b093 fix crash on click on compact track label button (#3463)
Fixes #3454
2017-03-30 13:16:37 +02:00
Oskar Wallgren
1bfd0931be Automation Pattern - Rename 'controlKey' (#3459) 2017-03-29 13:02:52 +02:00
Tres Finocchiaro
fc272d7aee Merge pull request #3455 from zapashcanon/scripts
Fix scripts using shellcheck
2017-03-28 14:31:22 -04:00
z-up
8416cd60de Always highlight the beats in PianoRoll and AutomationEditor using only time signature (#3458)
* 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.
2017-03-28 15:30:06 +02:00
z-up
9c5a334fdd Always highlight the beats in PianoRoll and AutomationEditor using only time signature (#3458)
* 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.
2017-03-28 15:27:56 +02:00
Oskar Wallgren
517417f0ca Automation Pattern - Rename 'controlKey' (#3459) 2017-03-28 09:54:53 +00:00
Lukas W
a22099c13f Merge branch 'stable-1.2' 2017-03-28 11:28:08 +02:00
Léo Andrès
5fca3d6f8c Fix scripts using shellcheck 2017-03-28 09:57:23 +02:00
Léo Andrès
411def4101 Fix CMake warning (#3457) 2017-03-28 01:32:56 -04:00
Lukas W
a9a28a8ea8 Travis: Verify ccache deb checksum 2017-03-26 22:45:41 +02:00
Lukas W
9f905bce3e Use Qt's Resource System (2nd approach) (#1891)
* Remove bin2res, use Qt's resource system
* Use QDir search paths and QImageReader in getIconPixmap
* Don't include "embed.cpp" in plugins
* getIconPixmap: Use QPixmapCache, use QPixmap::fromImageReader
* Require CMake 2.8.9

* Fix ReverbSC embed usage
2017-03-26 22:06:43 +02:00
Léo Andrès
abc73c06ee Fix CMake warning (#3457) 2017-03-26 21:51:46 +02:00
Karmo Rosental
4dc5d14ea3 Fixed #3443. Added and fixed mixer automation labels. (#3453) 2017-03-26 20:58:41 +02:00
Lukas W
de3b344edd lmms_math: C++11 updates 2017-03-26 12:38:30 +02:00
Lukas W
6004edae5c Include past automation patterns in processing (#3382)
Fixes #662

* Include past automation tracks in processing
* Track::getTCOsInRange: Use binary search, fix doc
* Automation refactorings
* Add automation tests
2017-03-26 12:27:15 +02:00
Lukas W
84d662409c Remove unnecessary includes from Eq plugin 2017-03-25 18:42:03 +01:00
Lukas W
0d77cefc13 PluginFactory: Avoid duplicate plugins 2017-03-23 21:12:04 +01:00
Lukas W
a5aa5e7d08 Clarify usage of Mixer->audioDevName() 2017-03-23 12:40:26 +01:00
liushuyu
e89e52aaa2 i18n: new strings 2017-03-22 17:38:06 -06:00
Tres Finocchiaro
d3d5392f80 Fix markdown
Specification changes. https://github.com/blog/2333-a-formal-spec-for-github-flavored-markdown
2017-03-22 12:12:32 -04:00
Lukas W
8c3f442322 Travis speed-ups (#3432)
* Enable ccache
* Cache mingw dependencies
* Expose USE_CCACHE option
* Disable ccache for release builds
2017-03-22 11:28:08 +01:00
Lukas W
31ade1ad2c Fix Mixer renderOnly flag 2017-03-21 22:48:23 +01:00
Lukas W
5cdf3481ce Fix format warning 2017-03-21 18:33:01 +01:00
Lukas W
435c898781 Mixer: Save renderOnly flag 2017-03-21 17:52:10 +01:00
Lukas W
10e28c26b9 Merge branch 'renderer' of https://github.com/PaulBatchelor/lmms 2017-03-21 17:51:51 +01:00
Lukas W
7251c84f1c PluginFactory: Fix LMMS_PLUGIN_DIR search path, add ~/lmms/plugins/
Fixes #3392, supersedes #3431
2017-03-21 17:29:32 +01:00
Tres Finocchiaro
f57202c6ae Add SF2 support for macOS (#3446)
* Add SF2 support for macOS

Closes #649
2017-03-21 09:59:04 -04:00
Steffen Baranowsky
17a6f379e0 fixes the wrong order of controller by loading a project (#3438)
* fixes the wrong order of controller by loading a project

* changes the approach for the fix
2017-03-20 19:36:32 +00:00
Javier Serrano Polo
9543800c32 Add COPYING-CMAKE-SCRIPTS (#3445) 2017-03-20 10:35:52 -04:00
Javier Serrano Polo
850c827ee4 Drop useless loop from upgrade_1_2_0_rc3 (#3441) 2017-03-20 06:37:47 +00:00
David CARLIER
7f97516683 Fix build for OpenBSD/sndio and licence updates. (#3442) 2017-03-20 06:14:18 +00:00
Javier Serrano Polo
91f20b65c6 Flag identifier collision in peak_controller_effect_controls.cpp 2017-03-20 02:43:23 +00:00
Javier Serrano Polo
df5cf255de Update MainApplication.cpp (#3440)
Drop useless condition.
2017-03-19 22:07:21 -04:00
Steffen Baranowsky
d1378be3a0 revert parts of #3075 (#3437) 2017-03-19 20:10:31 +00:00
Steffen Baranowsky
91182b4adc fix double click rename on track label button (#3356) 2017-03-18 20:06:22 +01:00
Tres Finocchiaro
3dfd9794db Fix opening of project files on macOS (#3219)
- 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
2017-03-17 21:53:36 -04:00
Lukas W
29f832034a Remove unused includes (#3429) 2017-03-16 11:35:18 +00:00
Oskar Wallgren
84d7c6a6da SampleBuffer - large file message (#3430) 2017-03-16 11:37:56 +01:00
Tres Finocchiaro
4708fe63a6 Validate theme directory
Looks for style.css in theme path to help avoid invalid theme directories.
Explicitely avoid use of "/" on Windows to prevent hang.
Closes #3417
2017-03-16 01:55:45 -04:00
Umcaruje
6d0a29e36b Update classic theme (#3424) 2017-03-15 14:41:00 +01:00
Oskar Wallgren
afbf8009b3 Initialise m_previousValue (#3428) 2017-03-15 09:38:17 +01:00
Umcaruje
7be77847f9 Fix Overflow in Fader.cpp (#3425)
* Fix Overflow in Fader.cpp
2017-03-15 09:36:57 +01:00
Uroš Šišović
e879fad25d Right Mouse Button To Erase Nodes In Automation Editor Cursor Icon... (#3414)
* 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
2017-03-13 01:14:42 +01:00
TheTravelingSpaceman
899e386df7 Aliasing in AutomationPatternView and AutomationEditor fixed (#3386)
* 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.
2017-03-13 01:14:05 +01:00
LMMS Service Account
97cd037300 Updating translations for data/locale/nl.ts 2017-03-11 06:29:19 -05:00
liushuyu
630d34ac04 i18n: Update source strings 2017-03-10 21:01:28 -07:00
LMMS Service Account
80318de1fb Updating translations for data/locale/es.ts 2017-03-08 21:23:25 -05:00
Lukas W
d82b852434 ValueBuffer: Add missing EXPORT 2017-03-08 23:26:20 +01:00
Michael Gregorius
fe881deff4 Fix issue #3339 by not clearing filter history on control change (#3343)
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.
2017-03-08 20:12:08 +01:00
Lukas W
bfbcb60eac Fix regression from 85ed63b 2017-03-08 17:38:21 +01:00
Lukas W
85ed63be85 ValueBuffer related cleanups
* 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
2017-03-08 17:09:57 +01:00
Oskar Wallgren
1b6a9f4885 Fix crash when rendering from command line and no write access to config file (#3413)
* Fix crash when rendering from command line and no write access to config file

* Remove redundant call to ConfigManager::addRecentlyOpenedProject()
2017-03-08 10:59:40 +01:00
Oskar Wallgren
9545f968b3 Fix TimeLineWidget overflow (#3410) 2017-03-08 10:58:56 +01:00
Oskar Wallgren
cded9fb735 MidiImport - set tempo (#3409) 2017-03-08 01:10:07 +01:00
Oskar Wallgren
7a58cc305a Bump up sample limits to 300MB and 90 minutes (#3411) 2017-03-07 13:15:49 +01:00
DragonEagle
f2fbf1e5b9 Fixes build errors under mingw (3113) (#3369)
* 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
2017-03-05 13:16:26 +01:00
Paul Batchelor
5e536319b7 when rendering, use dummy Audio/MIDI devices 2017-03-04 22:10:36 -08:00
Jérôme Duval
80c5b7d906 Haiku fixes (#3399)
* Allow running as root on Haiku.
* include unistd.h for ::read and ::write.
* Link libnetwork on Haiku.
2017-03-04 15:31:28 -05:00
Oskar Wallgren
f7d09c3c69 Some automation pattern fixes (#3352)
* 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
2017-03-04 19:04:42 +01:00
Steffen Baranowsky
fd74ddfe15 fix alternate shading of pianoroll and automation editor on zooming (#3391)
* fixes alternate shading in piano roll on zooming

* fixes alternate shading in automation editor on zooming
2017-03-01 17:31:00 +01:00
Oskar Wallgren
06e4033cb9 Don't count muted tracks in track length (#3390)
* Don't count muted tracks to length on render

* Don't count muted TCO's to length on render
2017-03-01 07:27:43 +01:00
TheTravelingSpaceman
8283e3f456 Barlines now end at end of automation (#3387)
* Barlines now end at end of automation

* Removed redundant if check
2017-03-01 00:08:09 +01:00
LMMS Service Account
9124a367e4 Updating translations for data/locale/nl.ts 2017-02-27 06:58:45 -05:00
Oskar Wallgren
e4474af091 'Off beat' beat notes to MelodyPattern 2017-02-27 08:17:24 +01:00
liushuyu
01472aade7 i18n: update strings for ReverbSC 2017-02-26 14:15:49 -07:00
LMMS Service Account
997af71c55 Updating translations for data/locale/it.ts 2017-02-26 16:11:57 -05:00
LMMS Service Account
bde361ee4a Updating translations for data/locale/fr.ts 2017-02-26 16:11:20 -05:00
Lukas W
4404b6f29c Remove explicit MidiTime constructor and operator 2017-02-24 11:33:11 +01:00
Paul Batchelor
0cb6c72e1d ReverbSC: Initial implementation (#3202)
* ReverbSC - Plugin. lmplementation of the Sean Costello reverb algorithm
2017-02-23 04:21:47 +01:00
Umcaruje
de2e164aae Piano Roll and Automation editor grid redesign (w/ @BaraMGB) (#3062)
* 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
2017-02-22 19:56:32 +01:00
Steffen Baranowsky
5863752988 elide the text on track button if it's too lon... (#3328)
* Elide the text on track button if it's too long
* Remove setText() from paintEvent
* Dynamic trackLabelButton width
2017-02-20 11:44:21 -05:00
Oskar Wallgren
2c8e9a0957 visible beat notes in MelodyPattern 2017-02-20 13:33:58 +01:00
follower
b6441b7f18 Workaround Qt5 bug that fails to remove separator at end of File/Help menus (#3350)
Prevent dangling separator at end of menus on macOS

Per https://bugreports.qt.io/browse/QTBUG-40071
2017-02-18 22:45:35 -05:00
LMMS Service Account
80e2374bcb Updating translations for data/locale/nl.ts 2017-02-17 03:05:35 -05:00
follower
b25655f9fe Remove non-document menu icons on macOS / OS X (#3363)
Remove icons from non-document menus on macOS

Matches Apple user interface guidelines
2017-02-17 01:48:27 -05:00
liushuyu
1ff9638968 i18n: reset source strings due to Transifex malfunction 2017-02-16 23:01:13 -07:00
liushuyu
05e3c70f16 i18n: Progressive merge back 2017-02-16 22:44:36 -07:00
liushuyu
0a4009eb4a i18n: Update source strings 2017-02-16 22:25:31 -07:00
Steffen Baranowsky
558962d231 Redesign of EQ plugin (#3030)
* 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
2017-02-14 18:25:32 +01:00
Oskar Wallgren
c1321ba80f Fix saving of multiple TempoSyncKnobModels (#3281)
* Save multiple TempSyncKnobModel syncmodes

* Add upgrade path for approximate version 1.2.0-rc2.42
2017-02-14 17:24:03 +00:00
Oskar Wallgren
284c40c80b Fix bad upgrade for bbtrack 2017-02-14 13:16:07 +01:00
Steffen Baranowsky
831a0655d5 add some minimum sizies for some windows (#3333) 2017-02-13 23:32:09 +01:00
Oskar Wallgren
901fea51d0 Auto-save - Fix double negations and some cleanup 2017-02-13 22:19:01 +01:00
Steffen Baranowsky
f244d9a966 adds clear button to line edits on 'add FX' and 'side bar browser' (#3329) 2017-02-13 19:05:05 +01:00
Lukas W
e6b571270a Check for nullptr in BufferManager::release 2017-02-12 10:50:00 +01:00
Lukas W
4254597fae Fix PlayHandle buffer leak
Fixes #3169
2017-02-11 22:07:45 +01:00
Steffen Baranowsky
f93735755b fix crash on export per command line with sample track (#3341) 2017-02-11 18:58:06 +01:00
Rebecca DeField
4413b6f75b Dynamics Processor Plugin Redesign (#3327)
* Dynamics Processor Redesign

* Spacing tweak
2017-02-10 14:35:19 +01:00
Oskar Wallgren
a0caecc060 Some issues with large files (#3293)
* Prevent crash on loading too large or long sample
* Move message box to the end
* Fix export from command line with large files
2017-02-09 09:03:06 -05:00
Oskar Wallgren
f367604af7 No extra bar with beat note near end 2017-02-09 02:46:47 +01:00
Steffen Baranowsky
ea88c906eb set new initial width of piano roll editor (#3334) 2017-02-08 16:42:38 -05:00
Steffen Baranowsky
3070cec1ba SideBarButton set text below the icon (#3256)
* 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
2017-02-06 08:38:28 -05:00
grejppi
9e85d7c66e update all copyright headers to the proper url (#3326) 2017-02-06 02:41:15 +02:00
Javier Serrano Polo
d50ca512cd Avoid interception by PulseAudio (#2992) 2017-02-05 13:49:42 -05:00
Javier Serrano Polo
30f1e52be3 Allow PROJECT_YEAR override (#3016)
* Allow PROJECT_YEAR override

* Generate release information and build with it

* Delegate to maintenance tasks
2017-02-05 13:40:34 -05:00
fholmer
c10af18c1b Iterate PulseAudio mainLoop and wait for context state (#3216)
* Iterate PulseAudio mainLoop and wait for context state

* Fixed indentation
2017-02-05 13:14:50 -05:00
gnudles
54d0922cea SoundIO- fixed up crashes when device cannot be opened. (#3238)
* SoundIO- fixed up crashes when device cannot be opened.

* SoundIO - reset soundio pointer after destroy.
2017-02-05 13:06:35 -05:00
gnudles
72ffc98be6 Small fixes: (#3221)
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.
2017-02-05 13:05:31 -05:00
Oskar Wallgren
e40a6bc627 Avoid crash on gui when rendering from command line and no write access (#3322) 2017-02-04 19:04:13 +01:00
Michael Gregorius
cf26da330c Revert "Fix 2047 ("TripleOscillator: Oscillators are getting out of sync") (#3145)"
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.
2017-02-04 12:45:02 +01:00
Karmo Rosental
995b14f7b5 Fixed #3226. Beat velocity fixes for both themes. (#3229)
* Fixed #3226. Fixed beat velocity on classic theme. Fixed visual difference between 0 velocity and no step.

* Render step_btn_on_0.png always.

* Removed useless if.
2017-02-03 22:35:23 +01:00
Spekular
6f3a7ea857 Fix Discord Badge (#3316) 2017-02-03 12:05:02 -05:00
Oskar Wallgren
c54171ba48 Option to allow auto save while playing (#3088)
* Option to allow auto save while playing
2017-02-01 17:05:32 +01:00
Oskar Wallgren
3e21e4ee13 Set Stk::showWarnings() via LMMS_DEBUG (#3309) 2017-01-30 16:07:25 +01:00
Oskar Wallgren
c8e987348d Note resize area width (#3304) 2017-01-27 10:40:53 +01:00
Rebecca DeField
421243ae73 Made automation slopes more distinguishable (#3282)
* Made automation slopes more distinguishable

* Tweak icon alignment
2017-01-24 17:32:56 -08:00
Javier Serrano Polo
fc40481a6b Update online help link (#3291) 2017-01-24 15:07:42 -05:00
Javier Serrano Polo
c1993d6feb Drop windowIcon from ui files (#3290) 2017-01-24 08:48:15 -05:00
Lukas W
897a09434c CMake: Fix manpage command argument escaping 2017-01-24 12:12:02 +01:00
Steffen Baranowsky
a4c65b52c9 fix eliding issue on fx mixer fader (#3241) 2017-01-24 08:54:10 +01:00
Steffen Baranowsky
c5aa22663e allow drag track label button for moving track (#3271)
* allow drag track label button for moving track

* improve mouseclick

* improve click 2
2017-01-23 09:35:43 +01:00
Steffen Baranowsky
349f27f819 makes controller rack fixed in width (#3240) 2017-01-23 09:34:43 +01:00
projectpitchin
604e5aeaa4 Fixed a spelling error in a debug message in RemoteVstPlugin::load. (#3279) 2017-01-20 19:15:59 -05:00
Rebecca DeField
e56d318618 Delay Plugin Redesign (#3120)
* Delay Redesign

* FDBK instead of REGEN
2017-01-18 21:47:28 -08:00
Oskar Wallgren
c0cf119c0d Fix inverted zoom direction (#3273) 2017-01-18 16:59:53 +01:00
Steffen Baranowsky
b76ba25eb0 sample track vol knob should have same precision as instrument track vol knob (#3254) 2017-01-14 14:14:25 +01:00
Michael Gregorius
e3e14bb730 Fix 2047 ("TripleOscillator: Oscillators are getting out of sync") (#3145)
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.
2017-01-12 17:10:38 -05:00
miketurn
4b92651d4f Fixed Text Case Of "Instrument Plugins" Label (#3243)
@liushuyu please update in transifex as well.
2017-01-12 11:52:21 -05:00
Steffen Baranowsky
7cf6150e75 suggest a fix for precision on knob dragging (#3075)
* 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
2017-01-12 15:02:54 +01:00
Wiley Yu
7e8513235c Added NSHighResolutionCapable to lmms.plist.in (#3231) 2017-01-10 10:33:05 -05:00
Tres Finocchiaro
f45de837f9 Add rawwaves to Windows installer (#3230)
Closes #3227
2017-01-09 23:36:38 -05:00
Karmo Rosental
674a2fb50c Fixed #3047 and #3180. (#3184) 2017-01-09 15:46:37 +01:00
Tres Finocchiaro
c9c1ba7246 Fix zyn linking; cleanup bundling 2017-01-07 15:20:33 -05:00
Tres Finocchiaro
400be17158 Fix calf plugin compilation on Clang (#3215) 2017-01-07 02:36:09 -05:00
Tres Finocchiaro
607d3f4f66 Simplify C++11 usage for plugins (#3214)
Simplify C++11 usage for plugins
2017-01-07 01:45:50 -05:00
Lukas W
4db1db5eca Travis: Fix deploy condition 2017-01-06 15:59:45 +01:00
Umcaruje
bc0802c8c5 Patch Travis deployment of windows installers 2017-01-06 00:49:07 +01:00
BaraMGB
43a77a0219 Let sample tracks play from any song position (#3133)
* play sampletracks from any song position

* take care of TCO length

* TCOs shouldn't be updated when SE window is resized

* take care of zooming level

* takes care on all song position changes and mute/solo tracks now

* playes the sample only within the buffer limits

* takes care of time signature changes

* some minor code improvements (zapashcanon)

* loopback one tick earlier

* minor code changes

* get rid off clicks by resize and scrolling song editor

* removes playhandle by remove TCO

* minor bugs on manipulating TCOs in Song Editor

* update on add sample by playing

* white spaces 1
2017-01-05 22:31:52 +01:00
Tres Finocchiaro
6137fcc5a5 Explicitly define qt versions on Mac (#3201)
* Explicitly define qt versions on Mac

Closes #3200

* Qt4 force Xcode8 pre-built binaries
* Don't do install tasks at configure time
2017-01-02 17:14:52 -05:00
Javier Serrano Polo
89665b0be3 Separate flags for WINE_BUILD_FLAGS (#3177) 2017-01-01 19:12:24 +00:00
Roberto Giaconia
0bf7b13e2a Changes noncyclic smoothing behaviour (#3137) 2016-12-29 22:39:54 +01:00
Oskar Wallgren
3157dbf993 Revert "Envelopes are on now by default" (#3176) 2016-12-25 21:58:52 +01:00
Oskar Wallgren
6e66665687 Don't run metronome when project is empty (#3173) 2016-12-22 15:30:18 +01:00
Oskar Wallgren
3de95a148d Mallets, turn off excessive warnings (#3172) 2016-12-21 19:51:57 +01:00
Oskar Wallgren
b9534f4271 m_arpDirectionModel sort element order (#3171) 2016-12-21 01:36:51 +01:00
Oskar Wallgren
1f3947408d No newline after render (#3158) 2016-12-16 18:13:15 +01:00
Oskar Wallgren
e1c598ba21 Set default suffix (#2230) 2016-12-14 15:41:30 +01:00
xhe
65d193ce1a Improve compatibility, avoid failing to compile (#3147)
following https://github.com/LMMS/lmms/issues/3146#issuecomment-266211689
2016-12-10 10:25:59 -05:00
m-xbutterfly
33f5821b63 waveshaper redesign (#3097)
* waveshaper redesign

* Correcting for inconsistency with overall theme

* fix knobs and background

* Changed buttons with more consistent font
2016-12-09 22:27:05 -08:00
Oskar Wallgren
3ee60b24bd Sinc Medium as default interpolation (#3141) 2016-12-02 17:19:25 -05:00
Mikobuntu
68d8152cf5 Envelopes are on now by default (#3090) 2016-11-26 19:16:26 +01:00
LMMS Service Account
9a95d73ab7 Updating translations for data/locale/fr.ts 2016-11-25 17:35:45 -06:00
liushuyu
dda6fa944d Refresh i18n strings 2016-11-24 13:02:23 -07:00
Mehdi
13cf2fc9d8 workaround for broken wineg++ (#3130)
* Patched broken wineg++ for Fedora x86_64

Closes #3129
Related #3128
2016-11-22 09:28:42 -05:00
LMMS Service Account
5c9f700a96 Updating translations for data/locale/it.ts 2016-11-20 09:18:50 -06:00
LMMS Service Account
27a2748b69 Updating translations for data/locale/es.ts 2016-11-13 18:08:42 -06:00
Umcaruje
f9f930d4e1 Disable MIDI export temporarily (#3114) 2016-11-13 23:12:54 +01:00
liushuyu
89bfd3259d Fix several i18n-related defects (#3111) 2016-11-12 11:53:43 -07:00
LMMS Service Account
2574254eaf Updating translations for data/locale/it.ts 2016-11-11 15:44:35 -06:00
LMMS Service Account
656750dfbb Updating translations for data/locale/es.ts 2016-11-11 15:12:48 -06:00
Shane Ambler
05ace7e348 Support for using jack midi input (#2038)
* Support jack midi input

* If jack is used for audio then use the same connection for midi as well

* Remove old FreeBSD adjustment for portaudio as multiple version support has been dropped.

* Disable jack midi out port until it is functional
2016-11-10 00:03:35 +01:00
Umcaruje
c9618961d6 dBV is actually mislabeled dBFS (#3095)
* Relabel "dBV" to "dBFS" in function names and GUI
* Write a ConfigManager upgrade for older versions
2016-11-06 22:44:18 -05:00
LMMS Service Account
3d43937bf3 Updating translations for data/locale/es.ts 2016-10-31 21:19:11 -05:00
LMMS Service Account
8620ea6bf8 Updating translations for data/locale/it.ts 2016-10-28 16:03:12 -05:00
liushuyu
32b19c0fb1 Refresh translation strings 2016-10-27 00:03:22 -06:00
Oskar Wallgren
f99aee97cd Arpeggiator Cycle function. Jump over notes and cycle back if over note range. (#3078) 2016-10-26 10:27:26 +02:00
Rebecca DeField
3bcb00a381 New piano design with optimized contrast (#3077)
* New piano design with optimized contrast

* Made green transparent on pressed keys

* Updated Design
2016-10-24 15:29:09 -07:00
Umcaruje
6f91c56956 Upgrade for inverted LEDs in Crossover equalizer (#3068) 2016-10-17 18:46:13 +03:00
BaraMGB
eb44ab3316 EQ optimazations (#3036)
* calcuculate curve path only when data has changed

* calculate spectrum analyzer only if signal input

* code clean up / coding conventions

* changes according coding guidelines/performance improvements in spectrum analyser/curves painting

* minor changes/white spaces

* change init order

* connect analyze view to gui->mainWindow()->periodicUpdate()

* consolidate some functions (d.r.y.)

* minor syntax changes

* fixes a right mouse button bug

* correct steepness of flanks in high and low pass filters

* Whitespaces
2016-10-12 20:09:25 +00:00
Tres Finocchiaro
1f1048697d Remove mounted icon
Per https://github.com/LinusU/node-appdmg/issues/125
2016-10-10 11:29:45 -04:00
Rebecca DeField
54b1da55c2 Theme tweaks (#3042) 2016-10-04 12:06:50 +02:00
liushuyu
d609b8f405 Refresh i18n strings 2016-10-01 01:39:04 -06:00
Umcaruje
d4fb937423 Fader redesign (#3056) 2016-09-30 11:50:50 -07:00
Umcaruje
919ca8b4d7 Enable antialiasing for sample visualizing (#3057) 2016-09-29 15:18:03 -07:00
Umcaruje
1eded63a19 Standardize the color of TCO bar markers (#3054) 2016-09-29 15:05:37 -07:00
Tres Finocchiaro
68df69d535 Speed up apple builds (#3058)
- fltk appears to have been fixed in Homebrew
 - removed "reinstall" to speed up builds
2016-09-29 13:24:46 +02:00
Karmo Rosental
70a5ee41ba Fixed showing of velocity of steps. (#2960)
* Fixed showing of velocity of steps.

* More contrast between muted and unmuted steps.

* Corrected opacity of volumes over 100.

* Single pixmap draw per step and step opacity is calculated using sqrt function.

* Using step_btn_on_100.png created by Umcaruje.
2016-09-28 17:44:28 +02:00
Umcaruje
be5cc6685e Disable minimization on all subwindows (#2983)
* Disable minimization on all subwindows

* Change the maximize button icon

* Remove redundant boolean

* Make the maximize icon play better with the close icon

* I removed too much maaan

* Fix spaces

* Change comments
2016-09-28 01:01:24 +02:00
Simon van der Veldt
61dfed9421 Remove remnant WANT_SYSTEM_SR (#3050)
Actual use of WANT_SYSTEM_SR was removed in 3f6ff1deb0
2016-09-24 18:40:19 +02:00
Mohammad Amin Sameti
8911f27654 Add Persian and Phrygian dominant scales (#3045) 2016-09-23 17:34:06 +02:00
BaraMGB
0c5b2fa4f7 Merge pull request #3012 from BaraMGB/renamewindowtitle
Window title will be changed on rename track, now
2016-09-22 16:36:36 +02:00
Steffen Baranowsky
d600d56ad3 change automation editor window title on rename automation pattern 2016-09-18 13:56:36 +02:00
Steffen Baranowsky
354cb78412 piano roll title changed on pattern renaming 2016-09-18 13:18:35 +02:00
Javier Serrano Polo
41b930eb66 Update Pattern and AutomationPattern length (#3037) 2016-09-17 23:51:00 +00:00
Steffen Baranowsky
aaed243abb minor changes/code conventions 2016-09-17 12:57:00 +02:00
Steffen Baranowsky
52102dd8b3 no reason for patternRenamed() is public 2016-09-15 15:42:40 +02:00
Steffen Baranowsky
2310c65348 rename Piano Roll window title on Instrument Track rename/remove 2016-09-15 15:20:33 +02:00
liushuyu
48cc3bb5ef Refresh i18n strings 2016-09-15 12:59:10 +00:00
Rebecca DeField
ec98b9b9b2 Merge pull request #3007 from RebeccaDeField/master
Redesign Flanger
2016-09-15 10:44:28 -07:00
RebeccaDeField
defb6aa285 Hint text update 2016-09-12 15:10:00 -07:00
Javier Serrano Polo
1f90337523 Drop notes with length zero (#3031) 2016-09-12 20:10:18 +00:00
RebeccaDeField
4a48a6b0e5 Background tweak 2016-09-12 12:43:04 -07:00
RebeccaDeField
05df9289ad Background 2016-09-12 12:40:04 -07:00
RebeccaDeField
92e09e8e56 Update Flanger 2016-09-12 12:37:22 -07:00
Umcaruje
ede0e07f5e Exclude .ts files from the Github linguist
for proper language detection, as LMMS does not use TypeScript
2016-09-11 17:57:47 +02:00
Umcaruje
b641dfc4ca Redesign Multitap echo (#3008) 2016-09-10 14:21:31 +02:00
liushuyu
12a91ae3f5 Update i18n source strings 2016-09-10 00:10:37 +00:00
Oskar Wallgren
a4f5834019 Extended arpeggiator functions (#2130) 2016-09-10 03:40:27 +00:00
Javier Serrano Polo
5e409b5575 Fix sample track playback in BB tracks (#3023) 2016-09-10 02:47:39 +00:00
Javier Serrano Polo
5626a49704 Sort plug-in embedded resources (#3014) 2016-09-10 02:31:35 +00:00
Javier Serrano Polo
5eb0ae2d75 Implement version major.minor.release-stage.build (#3011) 2016-09-10 02:27:59 +00:00
Oskar Wallgren
eb86e25fd8 Fix regressions on loading broken projects (#3013) 2016-09-08 22:18:23 +02:00
Oskar Wallgren
a53fd2663b Improved file input validation. (#2523) 2016-09-05 12:17:40 +02:00
Javier Serrano Polo
08d54d3179 Fix sample track view in BB editor (#3002) 2016-09-04 00:16:43 +00:00
Javier Serrano Polo
6614f567d7 Request change in model when dropping a track (#3000) 2016-09-04 00:15:21 +00:00
Javier Serrano Polo
5f54995188 Add LocklessAllocator and use it in LocklessList (#2998) 2016-09-04 00:13:45 +00:00
Steffen Baranowsky
0af64f5836 adjust window title on rename lfo controller 2016-09-01 11:29:11 +02:00
Steffen Baranowsky
129e446322 Window title will be changed on rename track, now 2016-09-01 10:24:25 +02:00
Javier Serrano Polo
f14cb687de Drop forceStep in AutomatableModel (#3010) 2016-08-30 19:45:09 +02:00
Javier Serrano Polo
8c2f98a89e Fix undefined reference to vtable for AudioSoundIoSetupUtil (#3004) 2016-08-30 14:34:04 +00:00
Lukas W
37d6e9a561 Merge pull request #3003 from LMMS/iss-2501
Fix LFO drifting
2016-08-30 05:50:32 +12:00
Lukas W
67e93710d2 TempoSyncKnobModel: Fix loadSettings order (syncmode takes precedence) 2016-08-29 13:56:04 +02:00
Lukas W
37dfa492dc ProjectVersion tests, fix mixleading comment 2016-08-29 09:04:37 +02:00
Umcaruje
d2a5c496ab Redesign Crossover Equalizer (#2994)
* Redesign Crossover Equalizer

* Make it all pixel perfect
2016-08-29 01:50:54 +02:00
BaraMGB
f91d0e73dd title label in artwork.png removed / alignment improved (#2995) 2016-08-26 13:01:35 +02:00
BaraMGB
f3ce31250d remove the title label from lfo_controller_artwork.png/new alignment (#2999) 2016-08-26 13:01:07 +02:00
Lukas W
02eee8e7b6 AutomatableModel: Don't force step size aligning in setValue 2016-08-26 10:40:57 +02:00
Rebecca DeField
cf824bd6f1 Redesign Spectrum Analyzer (#2971)
* Redesign Spectrum Analyzer

* Update Spectrum Analyzer

* Update background
2016-08-25 23:28:01 +02:00
Javier Serrano Polo
703a42e77c Create BB-related TCOs along with BB-related tracks (#2981) 2016-08-25 05:11:43 +02:00
Umcaruje
820a06eeff Redesign Stereophonic Matrix (#2989)
* Redesign Stereophonic Matrix

* Redesign take 2

* Design update

* center middle lines to knobs

* Make the knob arc start from the center
2016-08-24 09:54:27 +02:00
grejppi
74b0454c0d PatMan: clear buffer for finished notes, fix #2991 (#2996) 2016-08-24 02:19:32 +03:00
Javier Serrano Polo
c5cc89d691 Return NULL when asking for 0 bytes with MM_ALLOC (#2986) 2016-08-21 23:24:53 +00:00
Umcaruje
6e1e632baf BassBooster Redesign (#2988) 2016-08-21 18:25:58 +02:00
Umcaruje
8cd323c860 Amplifier redesign (#2985)
* Amplifier redesign

* Center the plugin
2016-08-20 23:09:26 +02:00
Oskar Wallgren
8fa5afbd2a SilenceAllNotes() on every instrument switch removes loud transient noise (#2984) 2016-08-20 10:25:16 +02:00
grejppi
d7fa8067fe really remove all controllers while removing all controllers (#2980)
fix #2979
2016-08-19 01:23:46 +02:00
Umcaruje
e2a0fd33da Do not make preset names all lowercase (#2973) 2016-08-18 23:57:42 +02:00
Javier Serrano Polo
474272af77 Merge pull request #2977 from jasp00/delete-track
Request change in model when deleting a track
2016-08-18 20:22:34 +00:00
Umcaruje
4b6bffc376 Cloning the pattern should duplicate it (#2972) 2016-08-17 23:02:26 +02:00
Javier Serrano Polo
2d529be8af Request change in model when deleting a track 2016-08-17 21:43:48 +02:00
liushuyu
41b6867555 Refresh translation template 2016-08-17 21:57:47 +08:00
Javier Serrano Polo
35fc4af053 Merge pull request #2975 from jasp00/contributors
Honor CONTRIBUTORS override
2016-08-16 00:29:46 +00:00
Javier Serrano Polo
6119e67812 Merge pull request #2968 from jasp00/minimal
Add option to set the list of plug-ins to build
2016-08-16 00:22:37 +00:00
Javier Serrano Polo
b83949ad18 Honor CONTRIBUTORS override 2016-08-15 04:12:26 +02:00
Andrés
07021ed84b fix 'Set Linear' not saving properly (#1642) (#2742) 2016-08-14 20:18:12 +00:00
Javier Serrano Polo
ca3d11c9f0 Add option to set the list of plug-ins to build 2016-08-14 19:46:32 +02:00
Javier Serrano Polo
8b96172650 Merge pull request #2923 from jasp00/nofile
Replace __FILE__
2016-08-09 00:15:05 +00:00
Oskar Wallgren
54a9aa6087 tickspertact -1 (#2959) 2016-08-07 14:39:45 +02:00
BaraMGB
a72ddf0b61 rename FxLine directly in a QLineEdit (#2918)
* rename FxLine directly in a QLineEdit

* set project modified only if FxLine text is changed

* clean up some code. Optimize some things

* optimizing code / removing a couple of member variables

* minor code optimizations

* turn off the tool tip in rename mode / minor code changes
2016-08-07 03:29:58 +00:00
Umcaruje
0187071192 Fix lack of contrast in the new theme (#2949)
* makes Tracks themable in style.css (#2889)

* change the active title bar color/adds a thin line on top of title bar (#2912)

* Make the window border lighter (#2911)

* Color Updates (#2940)

* Increase the lightness of active FxLine (#2945)

* Sidebar tweak (#2954)
2016-08-04 02:17:45 +02:00
Oskar Wallgren
7e1209e774 SF_INFO.format init to 0 (#2956) 2016-08-02 15:03:02 +02:00
Umcaruje
b8f5f21177 Make the background of BB patterns themeable (#2942)
* Make the background of BB patterns themeable

* Lighten up the color, make the BB background borderless
2016-08-02 14:45:45 +02:00
Oskar Wallgren
04dd35e57f Move cloned track up incrementally (#2950) 2016-08-02 13:00:00 +02:00
Javier Serrano Polo
7e99b1504f Merge pull request #2943 from jasp00/effect-info
Do not show VST bridge information
2016-08-02 00:23:40 +00:00
Oskar Wallgren
ba76bfe5a6 Strip prefix 'g' from the version hash (#2952) 2016-07-31 10:16:54 -04:00
BaraMGB
f9f7b50eb0 set the project modified if track was renamed (#2939) 2016-07-31 15:59:47 +02:00
Oskar Wallgren
6e53e74e1c Delete Zakarra songs, missing sounds (#2936) 2016-07-30 01:43:01 +02:00
Umcaruje
cfb1465c05 Update effect plugin icons (#2938)
* Replace the generic effect icon with a more streamlined one

* Add seperate icons for different plugin types
2016-07-29 00:40:02 +02:00
Umcaruje
c20c5207c8 Fix dialog button mismatch (#2908)
* Fix dialog button mismatch

* Change order in menu

* Make buttons the same role, so we have custom ordering

* Hide the exit button, add a close button to the dialog, change ordering

* Make the exit button not visible
2016-07-29 00:39:10 +02:00
Javier Serrano Polo
27b6c77865 Merge pull request #2931 from jasp00/pulse-fail
Run dummy loop when PulseAudio fails connection
2016-07-28 01:23:20 +00:00
Javier Serrano Polo
6f317acadc Merge pull request #2929 from jasp00/render-segv
Destroy engine in text mode
2016-07-28 01:21:21 +00:00
Javier Serrano Polo
e446f14aac Do not show VST bridge information 2016-07-28 03:12:24 +02:00
kamnxt
cd6d70a10b Fix #2698 - hang on start (#2905)
Fixes #2698 by turning off the `recurse` parameter in order to stop LMMS from scanning subdirectories when starting, as suggested by @michaelgregorius.
2016-07-27 19:02:01 +02:00
Oskar Wallgren
18439edff5 Merge pull request #2935 from zonkmachine/malletsVelocity
Limit velocity for stk::modal amplitude range
2016-07-24 17:41:46 +02:00
Oskar Wallgren
ed7d929b2c Limit velocity for stk::modal amplitude range 2016-07-24 04:42:33 +02:00
Javier Serrano Polo
57218b8e65 Merge pull request #2925 from jasp00/find-wine
Search Wine in the i386 multiarch directory
2016-07-23 23:35:49 +00:00
Javier Serrano Polo
fa19f00237 Merge pull request #2921 from jasp00/drop-fl
Remove FLP configuration
2016-07-23 03:03:43 +00:00
Javier Serrano Polo
07cc0edc79 Merge pull request #2928 from jasp00/cancel-crash
Fix crash on canceling the export
2016-07-23 02:31:55 +00:00
LMMS Service Account
0d501742b1 Updating translations for data/locale/es.ts 2016-07-21 22:13:35 -05:00
LMMS Service Account
e9fe6fba6e Updating translations for data/locale/es.ts 2016-07-21 22:08:31 -05:00
LMMS Service Account
da0c9163c0 Updating translations for data/locale/es.ts 2016-07-21 22:03:28 -05:00
LMMS Service Account
8fef97654b Updating translations for data/locale/es.ts 2016-07-21 21:58:25 -05:00
LMMS Service Account
cfb136fea4 Updating translations for data/locale/es.ts 2016-07-21 21:47:52 -05:00
LMMS Service Account
5fc0d13beb Updating translations for data/locale/es.ts 2016-07-21 21:41:32 -05:00
LMMS Service Account
65daa54f1d Updating translations for data/locale/es.ts 2016-07-21 21:35:45 -05:00
LMMS Service Account
598684a432 Updating translations for data/locale/es.ts 2016-07-21 21:30:22 -05:00
LMMS Service Account
7283890298 Updating translations for data/locale/es.ts 2016-07-21 21:25:20 -05:00
LMMS Service Account
b4de216ea4 Updating translations for data/locale/es.ts 2016-07-21 21:20:16 -05:00
LMMS Service Account
e6aad8e0b3 Updating translations for data/locale/es.ts 2016-07-21 21:15:13 -05:00
LMMS Service Account
0bc73ebd03 Updating translations for data/locale/es.ts 2016-07-21 21:10:02 -05:00
LMMS Service Account
fc87036a62 Updating translations for data/locale/es.ts 2016-07-21 21:04:24 -05:00
LMMS Service Account
eae96ae14d Updating translations for data/locale/es.ts 2016-07-21 20:57:50 -05:00
LMMS Service Account
a3749fc08b Updating translations for data/locale/es.ts 2016-07-21 20:52:26 -05:00
LMMS Service Account
b2adfda752 Updating translations for data/locale/es.ts 2016-07-21 20:47:11 -05:00
LMMS Service Account
f546b4ff00 Updating translations for data/locale/es.ts 2016-07-21 20:41:03 -05:00
LMMS Service Account
3a90c7383d Updating translations for data/locale/es.ts 2016-07-21 19:19:25 -05:00
LMMS Service Account
f0e2ea191a Updating translations for data/locale/es.ts 2016-07-21 19:14:20 -05:00
Javier Serrano Polo
a11642df0b Run dummy loop when PulseAudio fails connection 2016-07-22 01:49:54 +02:00
Javier Serrano Polo
8d65ac5596 Destroy engine in text mode 2016-07-21 20:53:08 +02:00
Javier Serrano Polo
b1d4ee1f97 Fixed crash on canceling the export 2016-07-21 19:39:55 +02:00
Javier Serrano Polo
7a98b3e669 Merge pull request #2916 from BaraMGB/renameLineEdit
rename tracks directly on TrackLableButton in a QLineEdit
2016-07-21 14:51:27 +00:00
Javier Serrano Polo
935100b071 Search Wine in the i386 multiarch directory 2016-07-21 02:18:52 +02:00
grejppi
ddc2591611 Move pre-1.1 mixer check to DataFile::upgrade() (#2924) 2016-07-20 23:19:08 +03:00
Steffen Baranowsky
06726f6204 rename tracks directly on TrackLableButton in a QLineEdit 2016-07-20 21:16:26 +02:00
Oskar Wallgren
c9c8ac26b1 Merge pull request #2491 from zonkmachine/pianoRollNoteSelect
Fix selection of beat notes
2016-07-20 20:44:42 +02:00
Javier Serrano Polo
5b991d6b8b Merge pull request #2920 from jasp00/swh
Update SWH, fix GCC 5.3.1 warnings
2016-07-20 12:10:43 +00:00
Oskar Wallgren
1f2c848b26 Fix selection of beat notes in Piano Roll editor 2016-07-20 01:01:58 +02:00
Javier Serrano Polo
0de382ced7 Replaced __FILE__ 2016-07-19 23:58:19 +02:00
Javier Serrano Polo
17e977dc2b Removed FLP configuration 2016-07-19 02:29:55 +02:00
liushuyu
28cb24409c Update i18n strings 2016-07-18 08:20:24 +08:00
Javier Serrano Polo
616f9c0299 Updated SWH, fixed GCC 5.3.1 warnings 2016-07-17 22:21:20 +02:00
grejppi
4f008872ee Replace Version Mismatch popup with TextFloat (#2910) 2016-07-17 13:41:21 -04:00
Javier Serrano Polo
67ce400cf3 Merge pull request #2813 from DeRobyJ/ch.update-song
Updated all the songs to current version
2016-07-16 01:40:40 +00:00
Javier Serrano Polo
b364c11984 Merge pull request #2917 from jasp00/pattern
Resize only patterns from BB editor
2016-07-15 23:51:03 +00:00
Umcaruje
c4e05048b8 Update readme to adress the chatting service change
Gitter to Discord
2016-07-15 20:33:59 +02:00
Javier Serrano Polo
e0bab1ef73 Resize only patterns from BB editor 2016-07-14 20:24:02 +02:00
Javier Serrano Polo
81e0aaaef3 Merge pull request #2915 from jasp00/bb-clone
Create cloned track when the mixer is ready
2016-07-13 22:20:57 +00:00
grejppi
2d1813fb64 Remove FLP import, revert to GPLv2+ only (#2904) 2016-07-12 19:28:45 +03:00
Javier Serrano Polo
db89483e8e Create cloned track when the mixer is ready 2016-07-11 23:51:45 +02:00
Javier Serrano Polo
8a4c6e2b2b Merge pull request #2888 from jasp00/triple-segv
Fix fault on note off and remove one mutex for notes
2016-07-10 22:08:29 +00:00
DeRobyJ
04f12648c5 Updated to forced 1.2.0 version 2016-07-10 19:18:09 +02:00
Michael Gregorius
52ec3874b1 Render the mixer levels in a dB FS scale (#2672)
* Render the mixer levels in a dB FS scale

Adds the option to render the mixer levels in dB FS. By default this
option is disabled so that classes which inherit from Fader are not
affected by this change. However, in the code of the FxMixerView this
feature is enabled so that the mixer shows the levels in dB FS.

The ability to render in dB FS is exported as a property so that it can
also be set in a style sheet (not used as of now). The new property is
called "levelsDisplayedInDBFS".

There are now setters and getters for the min and max level.

Showing the levels in dB FS (which is a logarithmic scale) gives a less
"fidgety" impression when the levels are moving.

* Introduction of an init method in Fader

An init method was added to unify the initialization of the two Fader
constructors.
2016-07-10 15:08:54 +02:00
Javier Serrano Polo
06b1d52b0a Fixed fault on note off and removed one mutex for notes 2016-07-09 22:56:25 +02:00
LMMS Service Account
04ee0910af Updating translations for data/locale/es.ts 2016-07-08 17:32:07 -05:00
Rebecca DeField
ddf587c1bd Updated wave icons for contrast, updated graphics for greater legibility (#2821)
* Updated wave icons for more contrast, updated graphcs for more legibility

* Added LFO artwork

* Updated waveform graphics
2016-07-08 16:41:00 +02:00
Andrés
471f335596 fix equalizer effect spectrum view lag (#2857)
* fix equalizer effect spectrum view lag #2736

* fix equalizer effect spectrum view lag. changed 10ms to 20ms
2016-07-06 23:34:38 -04:00
Javier Serrano Polo
c2a406e70f Merge pull request #2895 from jasp00/worker-lock
Added LocklessList and use it for new play handles
2016-07-06 15:18:09 +00:00
Javier Serrano Polo
8ce6b21e08 Merge pull request #2893 from jasp00/high-cpu
Do not busy wait when writing buffer in mixer
2016-07-06 15:06:52 +00:00
LMMS Service Account
68620ceb29 Updating translations for data/locale/it.ts 2016-07-06 06:51:17 -05:00
liushuyu
4ab880e8d0 Update i18n strings 2016-07-06 18:56:06 +08:00
Tres Finocchiaro
652aa5eb54 Merge pull request #2883 from Stephen-Seo/bb_bugfix
Fixes newly added tracks in BB having wrong size
2016-07-05 18:09:32 -04:00
Roberto Giaconia
0d8a3c7fe1 Add Rename option in controller context menu (#2804)
* add Rename option in controller context menu

* code conv. fix
2016-07-05 22:28:03 +02:00
Tres Finocchiaro
d84263e472 Merge pull request #2808 from Umcaruje/fixbbwidth
Change the minimum width of the B&B editor
2016-07-05 11:39:18 -04:00
Stephen Seo
892970d15b Fixes newly added tracks in BB having wrong size 2016-07-04 20:28:56 +09:00
Javier Serrano Polo
f7aa773005 Added LocklessList and use it for new play handles 2016-07-03 16:42:07 +02:00
Javier Serrano Polo
8497d39eec Do not busy wait when writing buffer in mixer 2016-07-02 21:57:55 +02:00
Javier Serrano Polo
3baedf3307 Merge pull request #2891 from devnexen/master
sndio needs Mixer class def as well
2016-07-02 18:28:08 +00:00
David Carlier
343fa3ff9a sndio needs Mixer class def as well 2016-07-02 16:55:42 +01:00
Javier Serrano Polo
46c2aa32ea Merge pull request #2773 from jasp00/license
Add GPL-3 to license information
2016-07-02 08:24:52 +00:00
Javier Serrano Polo
64702653f9 Merge pull request #2875 from jasp00/journal
Split journal ID range between new and loaded elements
2016-07-02 08:23:26 +00:00
Javier Serrano Polo
fb0e076bce Merge pull request #2829 from jasp00/sort-glob
Sort lists generated from globbing expressions
2016-07-01 02:56:01 +00:00
Javier Serrano Polo
f3ea884697 Merge pull request #2879 from jasp00/export
Fix freeze when finishing export
2016-06-30 03:05:54 +00:00
Javier Serrano Polo
ab5bc38064 Merge pull request #2877 from serdnab/sf2sustain-rev
Revision to a previous PR. midi sustain of sf2 player
2016-06-29 03:33:01 +00:00
Javier Serrano Polo
e55ec80c3d Fixed freeze when finishing export
Fixed stopping processing
2016-06-28 00:50:00 +02:00
Andres
66b6a64040 Revision to a previous PR. midi sustain of sf2 player 2016-06-27 01:23:48 -03:00
Javier Serrano Polo
07893113da Merge pull request #2872 from jasp00/krem
Fix infinite loop in FxMixer and some resource releases
2016-06-27 00:54:23 +00:00
Javier Serrano Polo
1a59f22b02 Merge pull request #2871 from serdnab/sf2sustain
fix midi sustain not working with sf2 player
2016-06-27 00:51:41 +00:00
Javier Serrano Polo
f97b431c8d Split journal ID range between new and loaded elements 2016-06-26 02:43:52 +02:00
Javier Serrano Polo
447c787f7e Fixed infinite loop in FxMixer and some resource releases 2016-06-24 23:02:44 +02:00
Javier Serrano Polo
01e9ebc9cf Merge pull request #2868 from jasp00/esoxlb
Remove effect from list before deleting
2016-06-24 00:21:05 +00:00
Javier Serrano Polo
15196aee3b Merge pull request #2860 from jasp00/mixer-lock
Remove more locks from the mixer
2016-06-24 00:19:24 +00:00
Tres Finocchiaro
7ce2694f75 Merge pull request #2861 from tresf/master
Fix building on older Apple versions
2016-06-22 23:31:07 -04:00
Tres Finocchiaro
36bb163732 Merge pull request #2798 from BaraMGB/fixMacSubwindow
fix the maximize behavior of subwindows on Mac
2016-06-22 22:50:08 -04:00
Andres
4c3c273b1b fix midi sustain not working with sf2 player (#2758) 2016-06-22 22:08:41 -03:00
Steffen Baranowsky
ee8ff0a227 fix the maximize behavior of subwindows on Mac 2016-06-22 14:21:30 +02:00
Javier Serrano Polo
9bf3081725 Remove effect from list before deleting 2016-06-22 05:08:26 +02:00
tresf
092f1c69c5 Force Homebrew to use Qt 5.5
Instead of defaulting to Qt 5.6+ per #2862
2016-06-21 21:29:33 -04:00
tresf
46179f475d Fix compilation on older Apple versions
Adds libc++ to CXX flags
Fixes macdeployqt on Qt5
Also fixes zynaddsubfx linking on Mac
2016-06-21 21:23:50 -04:00
Javier Serrano Polo
2c796f9503 Removed more locks from the mixer 2016-06-20 00:30:23 +02:00
Javier Serrano Polo
5dd650b850 Merge pull request #2835 from jasp00/triple-fpe
Defer updates to SampleBuffer
Removed global lock from the Mixer
2016-06-18 19:27:27 +00:00
Javier Serrano Polo
5606a04ad7 Defer updates to SampleBuffer
Removed global lock from the Mixer
2016-06-18 05:29:21 +02:00
Javier Serrano Polo
ecf9db66bd Merge pull request #2822 from jasp00/rm-track
Fix removal of track when notes are playing
2016-06-17 20:14:24 +00:00
lmmsservice
1e7b8e9617 Updating translations for data/locale/fr.ts 2016-06-17 23:07:16 +08:00
liushuyu
03eccc4ffb Update i18n strings and ...
... remove more hard-coded strings
2016-06-17 22:43:41 +08:00
liushuyu
f7377b6ee7 Update i18n strings 2016-06-17 20:05:35 +08:00
Javier Serrano Polo
3157a7a4af Merge pull request #2830 from jasp00/aeffectx
Replace information obtained from the web in aeffectx.h
2016-06-16 19:54:08 +00:00
Javier Serrano Polo
b8bfe96404 Merge pull request #2836 from jasp00/sort-eff
Sort effects in dialog
2016-06-16 19:35:20 +00:00
Javier Serrano Polo
d31089ceb5 Fixed removal of track when notes are playing 2016-06-16 17:42:00 +02:00
Javier Serrano Polo
10f2fab0eb Merge pull request #2838 from BaraMGB/2823
makes Subwindow title label transparent for mouse events
2016-06-15 22:18:45 +00:00
Steffen Baranowsky
4fc066bd27 fix subwindow title bar resize action 2016-06-15 23:42:48 +02:00
Javier Serrano Polo
5c0b359a61 Sort effects in dialog with sortable table 2016-06-15 01:42:46 +02:00
Michael Gregorius
ec95ef1ba9 Implements #2635: Draws a transparent rectangle in the loop area (plus CSS exposure) (#2657)
* Draws a transparent rectangle in the loop area (plus CSS exposure)

The color for the rectangle can be defined in the style CSS for the
active and inactive case. The following properties of the TimeLineWidget
are exposed through the CSS:
- The color of the lines that are drawn for each bar
- The color of the bar numbers
- The font size (given in pt)
- The minimum and the maximum height of the widget (given in em so that it scales with the font size). Set both to the same value to set a fixed size.
- The background of the widget
- A loop color: The color for the main rectangle's pen
- A loop brush: The brush used to fill the main rectangle
- An inner loop color: The color used for the pen that draws the inner border.
- loopRectangleVerticalPadding: specifies the padding used for the loop indicator rectangle.

The bar numbers are drawn conditionally like the bar lines. The
numbers are drawn with a constant distance to the tact line. This gives
a more consistent picture at different zoom levels and also fixes the
broken look at very small zoom sizes like for example 12.5%.

The bar numbers are drawn with hinting so that they show up less blurry on low DPI displays.

Remove the pixmaps that have been used up to now to draw the loop
boundaries.

Removes the unused "TimeLine" from style.css.

Document the style sheet properties for the loop indicator rectangle.
2016-06-12 18:13:23 +02:00
Umcaruje
1abbbc2ef6 Draw flat, borderless, semi-transparent and sharp-cornered notes (#2827)
* Draw flat, borderless, semi-transparent and sharp-cornered notes; Increase the contrast of the grid

* Convert the note gradient to a horizontal one

* Increase opacity for better visibility

* Reinstate borders, make the fill semi-transparent

* Some cosmetic touch-ups

* Make border width themeable

* Set a boolean for borderless properties

* Rename borderlessNotes to noteBorders
2016-06-10 00:00:19 +02:00
Javier Serrano Polo
4b1fdc4821 Dropped VstParameterProperties
Added information related to VstTimeInfo
2016-06-09 23:53:45 +02:00
Umcaruje
9eec9a0897 Merge pull request #2816 from BaraMGB/PeakControllerGUI
provides a new GUI for the peak controller plugin
2016-06-09 23:45:53 +02:00
Javier Serrano Polo
9b4cc41fa3 Removed information obtained from the web 2016-06-08 02:10:06 +02:00
Javier Serrano Polo
b549846100 Added GPL-3 to license information 2016-06-08 01:45:01 +02:00
Javier Serrano Polo
2d04870c98 Merge pull request #2746 from jasp00/wine-buildflags
Pass build flags to wineg++
2016-06-07 22:32:17 +00:00
Javier Serrano Polo
5b2283feec Sort lists generated from globbing expressions 2016-06-07 20:15:55 +02:00
DeRobyJ
43be8c4740 Updated templates 2016-06-06 12:33:58 +02:00
DeRobyJ
a1b8d8ace5 updates made, see witten log 2016-06-06 12:33:58 +02:00
Umcaruje
daedb92e79 Merge pull request #2818 from Umcaruje/master
Standardise badges in README.md and add more badges
2016-06-05 21:52:29 +02:00
Javier Serrano Polo
252284b4b1 Pass build flags to wineg++ 2016-06-05 01:34:46 +02:00
Umcaruje
b531261cf0 Merge pull request #2820 from jasp00/vst-segv
Do not delete VST parameter window when closed
2016-06-04 20:33:04 +02:00
Javier Serrano Polo
85d1b2075c Merge pull request #2739 from jasp00/sync-socket
Synchronize with remote plugins using local sockets
2016-06-04 00:34:30 +00:00
Javier Serrano Polo
b6a7e6dd4a Do not delete VST parameter window when closed 2016-06-04 01:30:12 +02:00
Steffen Baranowsky
4617bfa99d change the artwork for LFO controller/ amount knob label changed to 'AMNT' 2016-06-03 13:59:26 +02:00
Steffen Baranowsky
d0b80f8151 provides a new GUI for the peak controller plugin 2016-06-03 13:56:41 +02:00
Umcaruje
6e4e060c46 Standardise badges in README.md and more badges 2016-06-03 13:55:44 +02:00
Umcaruje
27eaa4d512 Make scrollbars consistent over the software; Add padding to the scrollbars; Make the PianoView background themeable (#2807)
* Make scrollbars consistent over the software; Add padding to the scrollbars; Make the PianoView background themeable

* Make the scrollbar hover color brighter
2016-06-03 12:21:27 +02:00
Umcaruje
a738069ff5 Merge pull request #2809 from Umcaruje/fixfoldercase
Rename folders in the projects folder to lowercase, for consistency
2016-06-03 12:19:52 +02:00
Umcaruje
9c5cbbec47 Merge pull request #2517 from zonkmachine/zoom
Add finer zoom, 12.5%
2016-06-01 01:12:40 +02:00
Umcaruje
b90540f2a7 Rename folders in the projects folder to lowercase, for consistency 2016-06-01 00:49:45 +02:00
Umcaruje
14b7d83fbd Change the minimum width of the B&B editor 2016-06-01 00:41:06 +02:00
liushuyu
ce8e523f86 Merge pull request #2806 from HDDigitizerMusic/master
ModernNoir Theme For The New Default
Closes #2587
2016-05-31 13:16:03 +08:00
RebeccaDeField
3f2e17dd04 ModernNoir theme as default and previous theme as classic 2016-05-30 20:27:13 -07:00
Javier Serrano Polo
d41500b986 Merge pull request #2803 from jasp00/opt-dll
Make some libraries optional in Windows installation
2016-05-30 23:33:57 +00:00
Javier Serrano Polo
fa7d7a111a Synchronize with remote plugins using local sockets 2016-05-30 01:52:11 +02:00
Javier Serrano Polo
d873ab471c Make some libraries optional in Windows installation 2016-05-30 00:48:08 +02:00
Javier Serrano Polo
5930050d32 Merge pull request #2801 from jasp00/pkg-config
Fix MinGW pkg-config configuration
2016-05-29 02:37:32 +00:00
Javier Serrano Polo
d599955750 Fixed MinGW pkg-config configuration 2016-05-29 03:34:29 +02:00
Oskar Wallgren
36c181dbea Add zoom 12.5% 2016-05-28 21:18:05 +02:00
liushuyu
a42a3c5346 Add Gitter hook to Travis-CI 2016-05-27 22:47:24 +08:00
Umcaruje
a0bbcce1bb Merge pull request #2799 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.md
2016-05-27 15:19:14 +02:00
The Gitter Badger
466559be49 Add Gitter badge 2016-05-26 13:52:07 +00:00
Tres Finocchiaro
028e83ca3e Merge pull request #2796 from trebmuh/desktop-fr
Adds french translation to lmms.desktop
2016-05-24 12:41:24 -04:00
Olivier Humbert
c3304f706d Update lmms.desktop
Adds french translation.
2016-05-24 18:38:43 +02:00
Tres Finocchiaro
da2e6e856c Merge pull request #2793 from jasp00/dummy
Do not delete pool buffers in dummy audio
2016-05-24 11:30:14 -04:00
Javier Serrano Polo
293926a1dd Do not delete pool buffers in dummy audio 2016-05-23 21:41:29 +02:00
Umcaruje
911f4c97b3 Merge pull request #2791 from jasp00/ninja
Fix build with Ninja
2016-05-23 12:36:06 +02:00
Javier Serrano Polo
f746e1ca76 Fixed build with Ninja 2016-05-23 02:00:50 +02:00
LMMS Service Account
5152ccd0b8 Updating translations for data/locale/es.ts 2016-05-22 12:42:32 -05:00
Raine M. Ekman
673cf27e90 Merge pull request #2458 from softrabbit/issue1499
Organic: make oscillator phase offsets per-note
2016-05-20 21:10:34 +03:00
Tres Finocchiaro
2810c9905c Merge pull request #2788 from Teuthis/fix2604
Adds null pointer check to fix crash on exit with peak controller
2016-05-20 15:59:16 +01:00
Chris Aiken
0945562c17 Adds null pointer check to fix crash on exit with peak controller 2016-05-20 10:51:48 -04:00
Javier Serrano Polo
8a5589e7fe Merge pull request #2764 from jasp00/no-soname
Remove SONAMEs from vestige and vst_base
2016-05-20 00:36:41 +00:00
Javier Serrano Polo
25dfed2569 Merge pull request #2775 from jasp00/zyn-runpath
Fix regression in handling RPATH for RemoteZynAddSubFx
2016-05-18 21:28:25 +00:00
Javier Serrano Polo
8c01ba0dc3 Fixed handling RPATH for alternate version of Qt 2016-05-18 22:07:52 +02:00
Tres Finocchiaro
60837ed93b Merge pull request #2780 from jasp00/travis
Use the Trusty beta build environment
2016-05-18 00:18:11 +01:00
Javier Serrano Polo
a460e359f3 Use the Trusty beta build environment 2016-05-17 21:42:18 +02:00
LMMS Service Account
cff47ac957 Updating translations for data/locale/uk.ts 2016-05-16 14:29:43 -05:00
Javier Serrano Polo
cb3e1669e7 Merge pull request #2782 from jasp00/zyn-link
Support qt_version_tag in Qt 5.6
2016-05-15 18:35:20 +00:00
Javier Serrano Polo
f6cde4459c Support qt_version_tag in Qt 5.6 2016-05-15 19:49:09 +02:00
Umcaruje
0613299297 Merge pull request #2781 from tresf/master
Fix style for Qt5 about dialog
2016-05-15 11:53:02 +02:00
tresf
37f57c2ba7 Fix style for Qt5 about dialog
Per #2611
2016-05-15 02:13:22 -04:00
Tres Finocchiaro
207f4db52b Merge pull request #2753 from jasp00/new-swh
Update generated C files from SWH upstream
Closes #2366
2016-05-15 06:45:25 +01:00
Tres Finocchiaro
f2b611b0e8 Compat support for vocoder rename
Per #2366, #2753
2016-05-15 01:39:49 -04:00
Javier Serrano Polo
34081f097a Merge pull request #2771 from jasp00/zyn-link
Revert unnecessary link
2016-05-14 19:44:59 +00:00
Javier Serrano Polo
85996ddae4 Revert unnecessary link 2016-05-12 01:52:40 +02:00
Tres Finocchiaro
ed9ccd2872 Merge pull request #2765 from jasp00/gpl2
Make clear that ZynAddSubFX is under GPL-2+
2016-05-09 02:42:32 +01:00
Javier Serrano Polo
3952def892 Make clear that ZynAddSubFX is under GPL-2+ 2016-05-09 01:45:21 +02:00
Javier Serrano Polo
febbf58a2d Remove SONAMEs from vestige and vst_base 2016-05-09 00:16:53 +02:00
Javier Serrano Polo
44f419c937 Merge pull request #2759 from jasp00/origin
Allow execution of ZynAddSubFX and VST plugins from build tree
2016-05-08 21:47:59 +00:00
grejppi
8dd938463f Remove Greippi-ardudar.mmpz (#2763) 2016-05-09 00:37:16 +03:00
jasp00
183012dced Merge pull request #2735 from jasp00/vst-no-wine
Compile VST plugins without Wine
2016-05-08 19:55:04 +00:00
Javier Serrano Polo
7246c57491 Allow execution of ZynAddSubFX and VST plugins from build tree 2016-05-07 19:41:52 +02:00
liushuyu
e910d6f5a4 Update i18n strings 2016-05-07 16:42:56 +08:00
Tres Finocchiaro
2137a0ade6 Merge pull request #2757 from DanWin/master
Fix warning issued by gcc-6.1
2016-05-06 15:28:22 +01:00
Daniel Winzen
6a0811b9a6 Fix warning issued by gcc-6.1 2016-05-06 16:01:06 +02:00
Tres Finocchiaro
015efb7bc4 Merge pull request #2756 from jasp00/zynaddsubfx-libs
Fix link to module
2016-05-06 00:05:46 +01:00
Javier Serrano Polo
37c39e68a8 Fixed link to module 2016-05-06 00:21:24 +02:00
grejppi
c94d6e8db4 Add Quantize button to Piano Roll
Add Quantize button to Piano Roll
2016-05-05 13:39:55 +03:00
Tres Finocchiaro
355f6c28c5 Merge pull request #2748 from jasp00/zynaddsubfx-libs
Fix ZynAddSubFxCore library issues
2016-05-04 20:37:17 -04:00
Javier Serrano Polo
0196a67c7c Fixed ZynAddSubFxCore library issues 2016-05-05 00:59:05 +02:00
Tres Finocchiaro
d0107a7f60 Merge pull request #2754 from jasp00/useless-deps
Use fltk-config to avoid static library
2016-05-04 18:21:04 -04:00
Javier Serrano Polo
9b05a9e917 Updated generated C files from SWH upstream 2016-05-04 23:28:11 +02:00
Javier Serrano Polo
1eda555e93 Use fltk-config to avoid static library 2016-05-04 23:03:37 +02:00
Umcaruje
0c9bf9b518 Merge pull request #2516 from BaraMGB/SubwindowDecoration
Add a new window decoration to MDISubWindows
2016-05-03 17:17:12 +02:00
Umcaruje
4fd8fce60d Styling changes for the subwindow decoration 2016-05-03 14:25:18 +02:00
Tres Finocchiaro
180b56161c Merge pull request #2751 from devnexen/master
allowing openbsd to play the virtual keyboard via the comp's one, the…
2016-05-02 20:25:38 -04:00
LMMS Service Account
2a4987c0e0 Updating translations for data/locale/es.ts 2016-05-02 12:09:37 -05:00
LMMS Service Account
7f52a00396 Updating translations for data/locale/es.ts 2016-05-02 12:04:28 -05:00
LMMS Service Account
f303d3a284 Updating translations for data/locale/es.ts 2016-05-02 11:59:19 -05:00
LMMS Service Account
2fb6e1a8bb Updating translations for data/locale/es.ts 2016-05-02 11:54:19 -05:00
Steffen Baranowsky
47f5b25877 Add a new window decoration to MDISubWindows 2016-05-02 16:59:49 +02:00
midi-pascal
cbbde98e4f Fixes #1735 (#2750)
Piano Roll: Do not scroll back when stopping if scroll is disabled
2016-05-02 12:32:40 +02:00
David Carlier
672f01f92c allowing openbsd to play the virtual keyboard via the comp's one, the Linux's layout seems workable 2016-05-02 06:49:16 +01:00
Javier Serrano Polo
4b8cf97af3 Compile VST plugins without Wine 2016-05-02 00:02:12 +02:00
Tres Finocchiaro
cfe5e98bf7 Merge pull request #2732 from jasp00/master
Find vstbase library at runtime
2016-05-01 15:03:04 -04:00
Tres Finocchiaro
568a83521a Merge pull request #2749 from jasp00/useless-deps
Remove useless dependencies
2016-05-01 15:00:39 -04:00
Tres Finocchiaro
59c7187dce Merge pull request #2747 from jasp00/gcc6
Fixed build problems with GCC 6
2016-05-01 14:19:47 -04:00
Oskar Wallgren
45c4690cf4 PianoRoll, Escape key drops selection (#2561) 2016-05-01 13:57:44 +02:00
midi-pascal
63ac551c70 Fix missing scroll back when stop in Song Editor (#2423)
* Fix missing scroll back on stop in Song Editor

* Fix missing scroll back on stop in Song Editor

* Avoid scrolling the Song Editor when scrolling is disabled.

* Handle the smooth scroll in scroll back

* Remove leading underscore from fonction parameters name

* Put back spaces around parameters (Removed by mistake)
2016-05-01 10:59:52 +02:00
Javier Serrano Polo
60740fbefc Removed useless dependencies 2016-04-30 03:33:21 +02:00
Javier Serrano Polo
a06cb0126c Fixed build problems with GCC 6 2016-04-30 00:00:09 +02:00
LMMS Service Account
96a011d396 Updating translations for data/locale/it.ts 2016-04-29 04:09:22 -05:00
Javier Serrano Polo
1e69e8d3a9 Find vstbase library at runtime 2016-04-27 21:12:28 +02:00
LMMS Service Account
33d8c44ed9 Updating translations for data/locale/uk.ts 2016-04-27 10:40:20 -05:00
liushuyu
8d7e1d60ba Minor i18n fix & language files refresh 2016-04-25 15:44:41 +08:00
Oskar Wallgren
d31ad894ce Merge pull request #2705 from karmux/master
Fixes #2537. GigaSampler can load both relative and absolute paths
2016-04-24 06:34:00 +02:00
midi-pascal
2a7bdf3fe8 Fix cmd-line help, add config option, use local lmmsrc file in dev (#2570)
* Fix command-line help, add --config option and use local lmmsrc file in dev mode

* Fix a typo in help screen for option --geometry (second dash missing)

* Replace tabs with spaces in help screen
Update man page

* Lineup items in help screen

* Accept both -geometry and --geometry as valid options
2016-04-23 23:27:34 +02:00
Tres Finocchiaro
0381e412c4 Merge pull request #2631 from IvanMaldonado/master
Changed object position
2016-04-23 13:29:40 -04:00
Tres Finocchiaro
c749658d7c Merge pull request #2727 from mamins1376/master
Add Dirty Love Song
2016-04-23 11:06:40 -04:00
Oskar Wallgren
4ee014d3a2 Merge pull request #2734 from jasp00/sample
Restore metalish_dong01.ogg's quality (closes #2733)
2016-04-22 21:32:31 +02:00
Javier Serrano Polo
9cee16aacf Restored metalish_dong01.ogg's quality 2016-04-22 20:34:31 +02:00
Mohammad Amin Sameti
1eb7851f89 Remove non-crossplatform plugins, add licesne(CC-BY-SA) 2016-04-21 12:02:55 +04:30
Mohammad Amin Sameti
19aa3a60ef Remove 'MAMINS-' 2016-04-21 11:52:04 +04:30
LMMS Service Account
46e5693e14 Updating translations for data/locale/uk.ts 2016-04-19 08:32:44 -05:00
Tres Finocchiaro
5bedb9c0ed Merge pull request #2697 from zonkmachine/clonesteps
BBTrack fixes
2016-04-17 10:56:07 -04:00
Tres Finocchiaro
481d89dd38 Merge pull request #2729 from Brewtroll/master
Fix for issue #2713
2016-04-17 09:17:38 -04:00
LMMS Service Account
7c1c0154f5 Updating translations for data/locale/it.ts 2016-04-16 03:12:19 -05:00
Chris Aiken
946ae85b5f Fix for issue #2713, adjusted Note::setKey bounds to fix one-off-the-end error 2016-04-15 19:24:27 -04:00
Mohammad Amin Sameti
ba7c801c55 Add Dirty Love Song 2016-04-12 15:47:27 +04:30
Tres Finocchiaro
13595bbbcf Merge pull request #2725 from liushuyu/master
Minor changes for i18n
2016-04-10 10:23:40 -04:00
liushuyu
d50553e89b Minor change for i18n 2016-04-10 16:00:52 +08:00
Oskar Wallgren
fa0c26e403 Clone steps in context menu 2016-04-10 01:19:45 +02:00
Umcaruje
356135b8b0 Merge pull request #2716 from Umcaruje/textcss
Fix hard-coding of knob and LCDWidget text color
2016-04-09 22:35:29 +02:00
LMMS Service Account
66d787d5cc Updating translations for data/locale/es.ts 2016-04-04 19:55:25 -05:00
Tres Finocchiaro
e9f6bf429f Merge pull request #2717 from devnexen/master
adding missing sndio Midi name setting.
2016-04-03 00:03:45 -04:00
Umcaruje
f787982d9a Fix hard-coding of knob and LCDWidget text color 2016-04-03 00:05:17 +02:00
David Carlier
9d06b9a7cb adding missing sndio Midi name setting. 2016-04-02 22:28:32 +01:00
Umcaruje
a29305350d Merge pull request #2710 from Umcaruje/fxmixerpad
Get rid of mixer and effects chain padding
2016-04-01 10:40:35 +02:00
Oskar Wallgren
0f8a2e7060 Merge pull request #2670 from zonkmachine/mallets
Mallets
2016-03-29 23:58:44 +02:00
liushuyu
18365ca8f5 Update i18n source strings 2016-03-29 23:12:32 +08:00
Tres Finocchiaro
6a0190117f Merge pull request #2712 from T-boneG/2617
FIXED: Rename "bassloopes" folder to "bassloops". #2617
2016-03-27 20:43:01 -04:00
Tyler Ganter
8e7d819aef typo fixed and file path will update for all projects created with version < 1.1.91 2016-03-27 15:53:27 -07:00
Umcaruje
39f4f21e47 Get rid of mixer and effects chain padding 2016-03-27 20:39:32 +02:00
Fastigium
058226f3c0 Merge pull request #2709 from Fastigium/restorethefxchannellocktoitsformerglory
Restore the FX channel lock to its former glory
2016-03-27 15:01:54 +02:00
Fastigium
4aa725b509 Restore the FX channel lock to its former glory
In the course of 32b7e04, I removed the channel lock from FxChannel because
I was under the impression that it was only needed to prevent crashes on
channel delete. However, at least two people experience crackling audio
after it was removed (#2708). Therefore, this commit reinstates it.
2016-03-27 10:05:45 +02:00
liushuyu
47b835febe Update translations 2016-03-27 00:21:18 +08:00
LMMS Service Account
0e53bee4bd Merge pull request #2706 from liushuyu/master
Add Transifex automation file
2016-03-26 10:36:19 -05:00
Tres Finocchiaro
f7c80945f8 Merge pull request #2707 from devnexen/master
Adding OpenBSD's sndio support.
2016-03-26 10:50:22 -04:00
David Carlier
43a0718d0b Adding OpenBSD's sndio support.
Updating jackmsr's work, adding sndio cmake module.
Updating 64 bits OS arch detection (amd64).
2016-03-26 12:48:28 +00:00
Fastigium
d1739ce5fe Merge pull request #2675 from Fastigium/deletechannelfix
Fix crashes on deleting an FX channel. Fixes #2667
2016-03-26 09:26:58 +01:00
liushuyu
e16a7fa81e Add Transifex automation file 2016-03-26 14:23:22 +08:00
Karmo Rosental
a31b8c4ff3 Fixes #2537. GigaSampler can load both relative and absolute paths from project file. File dialog shows correctly directory of current file. 2016-03-26 00:07:50 +02:00
Tres Finocchiaro
770c07ff58 Merge pull request #2690 from devnexen/master
Make it workable on OpenBSD
2016-03-25 11:36:21 -04:00
David Carlier
f4890ec375 Make it workable on OpenBSD
- Additional LMMS_BUILD flag.
- Disallow on plugins -Wl,-no-undefined which triggers undefined references.
- Make sure X11 headers are found.

Lib ossaudio is needed only for OpenBSD

redundant expression removal

simplify condition for detection OS 'kind'

seems the last commit brought an issue on OSx travis test ....
2016-03-25 14:44:15 +00:00
Michael Gregorius
4e9de497ae Merge pull request #2680 from michaelgregorius/knob-line-stylesheets
Enables style sheets for knob line colors for all knob types
2016-03-24 12:00:36 +01:00
Oskar Wallgren
a58029de75 Mallets reworked. Various fixes. Modalbar - activate knobs, BandedWG - remove scaling for Uniform Bar( noisy ). 2016-03-22 18:41:20 +01:00
Tres Finocchiaro
97c7208674 Merge pull request #2686 from Umcaruje/bbtrackmute
Grey out muted patterns in the BB editor
2016-03-19 14:49:43 -04:00
Umcaruje
23cd3002a6 Grey out muted patterns in the BB editor 2016-03-19 00:29:59 +01:00
Tres Finocchiaro
9a44eaf3c7 Merge pull request #2683 from zonkmachine/crashslash
Crash at clearing path in settings manager
2016-03-18 10:33:31 -04:00
Oskar Wallgren
e8ac40c2fb Crash at clearing path in settings manager 2016-03-18 14:11:22 +01:00
grejppi
0021e31e81 Merge pull request #2684 from grejppi/dummyinstrument
Clear buffer of dummy instruments. Should fix #2682
2016-03-18 11:19:07 +02:00
Hannu Haahti
acb5ff8d04 Clear buffer of dummy instruments. Should fix #2682 2016-03-18 10:11:56 +02:00
Umcaruje
3e62aa022c Merge pull request #2674 from Umcaruje/elidefxtext
Elide channel names to prevent text overflow in FxLine
2016-03-17 22:47:31 +01:00
Fastigium
82055a9bdd Use deleteLater() on the FxLine when deleting a channel to prevent a crash
In Qt, it is not safe to delete a QObject inside a signal emitted by that
QObject. This happened with FxLine when removing an FX channel using the
context menu. This commit changes that by using deleteLater() instead of
delete on the FxLine. It also hides the FxLine to prevent a ghost of it
being drawn when deleting the last non-master FX channel.
2016-03-17 19:14:52 +01:00
Fastigium
32b7e0418b Fix two crashes when deleting FX channels
Lock the mixer before performing a channel delete to prevent any race
conditions causing a crash. Also, update the audioport FX channel when
an InstrumentTrack's FX channel is changed to prevent the audioport
mixing to a nonexistent channel.
2016-03-17 19:14:11 +01:00
Fastigium
e8a4b586d5 Merge pull request #2681 from Fastigium/copyconstructorcleanup
Get rid of another copy constructor call to prevent Qt5 crashes
2016-03-16 10:02:33 +01:00
Fastigium
908175d5f1 Get rid of another copy constructor call to prevent Qt5 crashes
Cf. the commit message of 3c7bfba
2016-03-16 09:27:57 +01:00
Oskar Wallgren
e98b6a2966 Merge pull request #2678 from zonkmachine/kickerversion
Kicker 'version' 0 on first save
2016-03-16 00:37:03 +01:00
Michael Gregorius
c6863060bf Enables style sheets for knob line colors for all knob types
The fix works as follows: until now the method Knob::drawKnob has used
hard coded palette colors to draw the knob lines for the different knob
types. These palette colors are now assigned to the line color property
in Knob::initUi. The method Knob::drawKnob in turn now uses the line
color property for almost all knob types. This means that all knobs
lines will be painted in the same color as before unless that property
is overridden by the stylesheet.

Also removes an unnecessary typedef from QWidget to trackSettingsWidget
in Track.h.
2016-03-15 19:47:33 +01:00
Michael Gregorius
5d3333b3b7 Merge pull request #2644 from michaelgregorius/knob-enum-cleanup
Removes an unused knob and enum (knob04.png aka knobGreen_17)
2016-03-15 19:19:55 +01:00
Oskar Wallgren
b34c382750 Kicker 'version' 0 on first save 2016-03-15 14:33:54 +01:00
Tres Finocchiaro
a7c508e259 Merge pull request #2677 from Fastigium/carlacompile
Add C++11 compile flag to the carla plugin as well
2016-03-15 09:25:02 -04:00
Fastigium
f3ea8350a6 Add C++11 compile flag to the carla plugin as well
Fixes the carla plugin not compiling anymore after switching to C++11
range-based for loops.
2016-03-15 10:47:08 +01:00
Fastigium
9e98a16a8a Merge pull request #2669 from Fastigium/foreach2for
Replace every use of the foreach macro with a C++11 range-based for loop
2016-03-14 14:15:57 +01:00
Umcaruje
1c5d57dce9 Elide channel names to prevent text overflow in FxLine 2016-03-13 22:50:30 +01:00
Fastigium
3c7bfbac64 Replace every use of the foreach macro with a C++11 range-based for loop
This prevents a race condition with Qt5. A foreach loop makes a copy of its
Qt container, increasing the reference count to the container's internal
data. Qt5 often asserts isDetached(), which requires the reference count to
be <= 1. This assertion fails when the foreach loop increases the reference
count at exactly the wrong moment. Using a range-based for loop prevents an
unnecessary copy from being made and ensures this race condition isn't
triggered.
2016-03-13 16:09:50 +01:00
Fastigium
ac67f2adb8 Compile several plugins with -std=c++0x to support range-based for loops 2016-03-13 16:09:50 +01:00
Fastigium
bfa83da572 Make lb302 include math.h so we can switch it to C++11
M_PI is no longer defined by default in C++11, but lb302.cpp needs it.
Therefore, before switching to C++11, we add an include.
2016-03-13 16:08:47 +01:00
Oskar Wallgren
fadba1b93c Merge pull request #2665 from zonkmachine/filebrowser
File browser. Factory files off by one
2016-03-11 20:27:36 +01:00
Raine M. Ekman
ca0c278655 Organic: move the oscillator phase offsets in the oscPtr that's stored as
_n->m_pluginData, slightly prettier than separate float arrays.
2016-03-11 11:45:16 +02:00
Oskar Wallgren
311b28cf71 File browser, factory files off by one 2016-03-11 10:30:43 +01:00
Fastigium
08847cc7d3 Merge pull request #2661 from Umcaruje/bbupdate
Fix regression caused by fcec8dd
2016-03-10 17:26:21 +01:00
Umcaruje
6a10cb184d Fix regression caused by fcec8dd 2016-03-10 16:06:59 +01:00
Lukas W
1f32fdcf35 Merge pull request #2654 from StCyr/StCyr_issue2653
ProjectVersion tests never fail
2016-03-10 09:45:48 +13:00
Umcaruje
9932da5a66 Merge pull request #2655 from Umcaruje/bbupdate
Fix BBtrack updating; Fix the Pattern tooltip
2016-03-09 18:57:08 +01:00
Umcaruje
fcec8ddd02 Fix BBtrack updating; Fix the Pattern tooltip 2016-03-09 16:59:19 +01:00
Cyrille Bollu
3f6f266a46 Rewrote ProjectVersionTest.cpp to use QVERIFY and indeed fail when it's supposed to fail,
and added 2 tests in this test suite.
2016-03-09 11:58:15 +01:00
Tres Finocchiaro
a895e2b060 Merge pull request #2652 from AOSC-Dev/master
data/locale: zh_CN.ts not zh.ts
2016-03-09 02:18:12 -05:00
Mingcong Bai
9ab18f5ae8 data/locale: zh_CN.ts not zh.ts 2016-03-08 16:41:45 -07:00
Tres Finocchiaro
ef2cb53282 White-space formatting 2016-03-08 13:12:00 -05:00
Tres Finocchiaro
c3abe3a69d Add gig player to win32 builds
Gig player was missing a dll during the package process.  This fixes it.
2016-03-08 13:10:57 -05:00
Tres Finocchiaro
515ada6102 Merge pull request #2648 from liushuyu/master
Update Chinese translations
2016-03-08 10:38:57 -05:00
liushuyu
a8f65ab0af Update Chinese translations
Progress: 1635 of 2627 strings (62.24%)
2016-03-08 17:14:35 +08:00
Tres Finocchiaro
80b0d529b9 Merge pull request #2647 from tresf/master
Fix locale generation for win32 builds
2016-03-07 22:05:34 -05:00
tresf
5e4f2190a9 Fix locale generation for win32 builds
Closes #2577
2016-03-07 01:02:47 -05:00
Tres Finocchiaro
ba7816bda1 Merge pull request #2645 from tresf/master
Disable libsoundio for win32
2016-03-07 00:56:44 -05:00
Tres Finocchiaro
ac59d794fb Disable libsoundio for win32
Closes #2576
2016-03-06 23:25:24 -05:00
Michael Gregorius
cbf3b92b6f Removes an unused knob and enum (knob04.png aka knobGreen_17)
Removes the knob image knob04.png. This knob corresponded to
knobGreen_17 which was not used anywhere in the code. To be able to
remove the enum value it was necessary to change the knob loading code
in Knob::onKnobNumUpdated. However, the changed implementation is more
explicit and therefore likely better to understand.
2016-03-06 22:35:43 +01:00
Lukas W
8768769450 Fix channel indicator being on by default 2016-03-07 09:52:22 +13:00
Tres Finocchiaro
44f688e285 Merge pull request #2642 from michaelgregorius/2624-controller-crash
Fixes #2624 ("Controls window of LFO controller is not destroyed upon closing a project")
2016-03-06 13:56:09 -05:00
Michael Gregorius
1f39b607ba Fixes #2624 ("Controls window of LFO controller is not destroyed upon
closing a project")

When it is destroyed the ControllerView now deletes the controller sub
window in case it has one.
2016-03-06 19:04:51 +01:00
Michael Gregorius
2e2abdf0b7 Merge pull request #2579 from michaelgregorius/performance
Fixes several performance problems found with Valgrind
2016-03-06 18:48:40 +01:00
Michael Gregorius
f6317f126b Performance fixes
Removes some repeated calls to Qt's font layouting by using QStaticText
in FxLine and removing the overridden method ComboBox::sizeHint.

Unifies Mixer::peakValueLeft and Mixer::peakValueRight into
Mixer::getPeakValues so the array is only iterated once.
2016-03-06 18:23:35 +01:00
Tres Finocchiaro
8928ad751c Merge pull request #2641 from Fastigium/fxsends
Fix regression that caused faulty FX channel index numbers
2016-03-06 12:05:10 -05:00
Fastigium
9ff8091db3 Fix regression that caused faulty FX channel index numbers
Commit e919912 changed the behavior of the FX channel swapping code so that
it no longer updated the m_channelIndex member of the swapped channels. This
caused sends/receives of swapped FX channels to move about when a project
was saved and loaded again.
2016-03-06 15:57:25 +01:00
Fastigium
eefefdea6f Merge pull request #2626 from Fastigium/m_playHandlesToRemove
Synchronize access to Mixer::m_playHandlesToRemove
Fixes #2610
2016-03-06 15:30:08 +01:00
Umcaruje
d098a39c76 Fix dropdown menu icon margin 2016-03-04 22:10:55 +01:00
tresf
1058ea4b3f Hide splash screen before showing settings screen
Per #2611
2016-03-04 14:37:12 -05:00
Tres Finocchiaro
5f48d1c596 Fix menu bar colors for Qt5
Per #2611
2016-03-04 13:44:54 -05:00
Tres Finocchiaro
76bd1811ae Merge pull request #2632 from liushuyu/master
Change link method of Vestige module
2016-03-04 13:25:05 -05:00
liushuyu
3974faca50 Change link method of Vestige module
Try to fix #2628
2016-03-05 00:05:22 +08:00
IvanMaldonado
31c773cf15 Changed object position
Changed the "QToolButton" to its original position.
2016-03-03 17:42:40 -06:00
Umcaruje
020b4dd1b5 Merge pull request #2574 from Umcaruje/gradients
Refactor the drawing of TCO's; Get rid of hardcoded colors in TCOs; Even out the color scheme
2016-03-03 09:22:12 +01:00
Lukas W
988b788608 Try fixing linker errors on Win & Mac 2016-03-03 18:43:16 +13:00
Lukas W
85011cdcf7 Move CMake locale generation from src/ to data/locale/ 2016-03-03 17:37:41 +13:00
Lukas W
12e7262e98 Add missing Q_OBJECT macros 2016-03-03 17:36:38 +13:00
Umcaruje
f136ba3097 Refactor the drawing of TCO's; Get rid of hardcoded colors in TCOs; Make TCO gradient configurable; Even out the color scheme
Thanks to @Fastigium for helping with the BB Pattern redraw problem
2016-03-02 21:58:27 +01:00
Tres Finocchiaro
ec6734b968 Merge pull request #2629 from tresf/master
valgrind: init m_scrollArea in vestige instrument
2016-03-02 14:50:56 -05:00
Tres Finocchiaro
e13ac40544 valgrind: init m_scrollArea in vestige instrument
Closes #2041
2016-03-02 11:49:04 -05:00
Fastigium
60038b5f55 Synchronize access to Mixer::m_playHandlesToRemove
Put every access to m_playHandlesToRemove between lockPlayHandleRemoval() and
unlockPlayHandleRemoval(). Fixes #2610 where a SIGSEGV would occur due to
concurrent access.
2016-03-02 09:47:24 +01:00
Oskar Wallgren
346980329b Merge pull request #2568 from zonkmachine/autosavetimeconfigrebase
Auto save timer setting
2016-03-02 08:54:02 +01:00
Oskar Wallgren
cfb2c7201f Auto save timer setting 2016-03-02 07:25:19 +01:00
Tres Finocchiaro
adb25eccad Merge pull request #2623 from bjalfi/RemotePlugin_shm_fixup
Fixup Zynaddsubfx-GUI on FreeBSD
2016-03-01 09:34:54 -05:00
Bastian Kummer
4ddaa872fb Fixup Zynaddsubfx-GUI on FreeBSD
shmFifo destructor detaches shared-memory pointer before the included
semaphores are destroyed which results in a Segfault (at least on FreeBSD)
2016-03-01 13:54:20 +01:00
Umcaruje
1507e4b175 Merge pull request #2578 from ycollet/fix_2572
Change the link of carlabase to SHARED and explicitly link carlarack and carlapatchbay to carlabase.
2016-02-29 17:34:26 +01:00
Tres Finocchiaro
e56c31b96e Merge pull request #2609 from Wallacoloo/clang-fixes
Only use libc++ on when using clang *on apple*
2016-02-26 00:00:20 -05:00
Colin Wallace
59276a0307 Only use libc++ on APPLE; remove LMMS_BUILD_CLANG define, as it's no longer needed 2016-02-25 20:23:32 -08:00
Tres Finocchiaro
c976514125 Merge pull request #2608 from tresf/master
Add Win/Qt5 build directives for Travis
2016-02-25 16:56:26 -05:00
Tres Finocchiaro
67334a84c2 Add Win/Qt5 build directives for Travis 2016-02-25 01:39:20 -05:00
Tres Finocchiaro
4e30d95701 Merge pull request #2607 from tresf/master
Add Mac/Qt5 build directives for Travis
2016-02-24 18:03:18 -05:00
Hannu Haahti
1598343b86 Remove a completely useless warning 2016-02-25 00:38:25 +02:00
tresf
389a1da308 Add Mac/Qt5 build directives for Travis
Also explicitly defines bash as shell interpreter for all Travis related scripts
2016-02-24 17:04:18 -05:00
Fastigium
b55b1ab059 Merge pull request #2603 from Fastigium/arpeggio-sort-fix
Update two NotePlayHandle methods to ignore child NotePlayHandles
Fixes #2589
2016-02-24 19:40:54 +01:00
Fastigium
b645f43cfd Destroy the FxMixer before the Mixer when shutting down
Fixes #2584.
2016-02-24 16:37:53 +01:00
Umcaruje
b49e758a89 Merge pull request #2567 from Umcaruje/spacinghover
Change spacing on hovered items in the context menus
2016-02-23 19:20:15 +01:00
Oskar Wallgren
a4649c8e6e Merge pull request #2586 from Fastigium/buffer-fix
Drop PresetPreviewPlayHandle's shared buffer system
2016-02-23 16:52:44 +01:00
Fastigium
eec7f634a8 Update two NotePlayHandle methods to ignore child NotePlayHandles
The methods NotePlayHandle::index and NotePlayHandle::nphsOfInstrumentTrack
had not yet been brought up-to-date with the new system of attaching child
NotePlayHandles directly to the mixer. This caused strange glitches when
arpeggio was used in sort mode.
2016-02-23 10:36:35 +01:00
Lukas W
8d91dd657d Merge pull request #2602 from LMMS/iss-2577
Fix some Windows data directory resolve issues
2016-02-23 20:06:12 +13:00
tresf
d88902e95b Fix rawwaves directory on Windows
Per #2577
2016-02-23 01:08:52 -05:00
Lukas W
13125c6248 Change cross compile scripts' shebang to bash 2016-02-23 10:11:38 +13:00
Tres Finocchiaro
1e9dfcbf2b Remove 64-bit channel limitation in readme
Closes #2600
2016-02-22 13:54:39 -05:00
Tres Finocchiaro
59f09111f2 Merge pull request #2595 from tresf/master
Apple Travis-CI enhancments
2016-02-22 13:01:13 -05:00
Tres Finocchiaro
020cb528b6 Add additional build deps 2016-02-22 11:58:07 -05:00
Oskar Wallgren
e9ecd8384e Merge pull request #2598 from waxspin/master
Fix EQ labels back to resonance.
2016-02-21 15:03:31 +01:00
Ben Bryan
34ae074884 Fix EQ labels back to resonance. 2016-02-21 00:10:44 -06:00
Lukas W
40af068328 Build: Make mingw build scripts paths independent of wdir 2016-02-21 17:20:07 +13:00
Oskar Wallgren
2c91392a51 Merge pull request #2502 from BaraMGB/eqCurve
New GUI for the native EQ plugin
2016-02-20 23:21:26 +01:00
Tres Finocchiaro
97644f6513 Fix corrupt samples
Closes #2594
2016-02-20 12:02:44 -05:00
Steffen Baranowsky
d5259292c9 New GUI for the native EQ plugin 2016-02-20 15:25:40 +01:00
Umcaruje
0561d8d994 Merge pull request #2547 from Umcaruje/fxline
Make FxLine Stroke Themeable
2016-02-20 14:40:48 +01:00
Oskar Wallgren
95b0ea2dda Merge pull request #2555 from zonkmachine/recentfilebug
Show Main Window before loading/importing project
2016-02-19 20:54:21 +01:00
Tres Finocchiaro
3c5da9b278 Merge pull request #2592 from waxspin/master
Fix equalizer labels for #2583
2016-02-19 10:25:28 -05:00
Ben Bryan
bda6c7e2b8 Fix equalizer labels for #2583 2016-02-19 00:05:49 -06:00
Tres Finocchiaro
c4038fb0d4 Merge pull request #2591 from Wallacoloo/fix-2588
Fix #2588 by making Piano Roll's Alt+Right shortcut mirror the Alt+Left shortcut
2016-02-19 00:16:24 -05:00
Colin Wallace
cde1bcc350 Fix #2588 by making Alt+Right shortcut mirror the Alt+Left shortcut;
Alt+Right sets the PianoRoll to edit the *next* pattern in the song editor; Alt+Left = previous.
2016-02-18 20:16:08 -08:00
Lukas W
eec6c5b4f0 Clean up some path separator mess 2016-02-19 12:04:36 +13:00
Fastigium
76f6b18632 Drop PresetPreviewPlayHandle's shared buffer system
Instead, add the NotePlayHandle used for previewing directly to the mixer.
This fixes two preview problems, namely the shared buffer being released
by the NotePlayHandle but still being pulled in by the AudioPort resulting
in distortions, and certain previews being cut off at mouse release even if
a release was set in the envelope.
2016-02-18 20:27:44 +01:00
Yann Collette
d3d97b3275 Change the link of carlabase to SHARED and explicitly link carlarack and carlapatchbay to carlabase. 2016-02-17 21:53:23 +01:00
Tres Finocchiaro
1c0d329dfb Bump version for 1.2 RC1 2016-02-16 14:27:44 -05:00
Tres Finocchiaro
47606d7b31 Merge pull request #2497 from Fastigium/preview-fix
Fix crashes/hangs when previewing instrument presets
2016-02-16 14:24:49 -05:00
Fastigium
9d1867c7eb Make Mixer::removePlayHandle check m_newPlayHandles, too
This fixes a problem where a PresetPreviewPlayHandle would be put in
m_newPlayHandles to be added, then "removed" before it was actually added,
leaving it dangling.
2016-02-16 19:23:17 +01:00
Fastigium
ca7c90a99c Add mixer lock to EffectChain::clear to prevent a race condition 2016-02-16 19:23:17 +01:00
Fastigium
da8040764f Require explicit types when removing PlayHandles in the Mixer
This fixes a few deadlocks where a PresetPreviewPlayHandle would be removed by
the creation of a new PresetPreviewPlayHandle.
2016-02-16 19:23:08 +01:00
Fastigium
87dce6d2f4 Make PresetPreviewPlayHandle thread affinity matter 2016-02-16 13:17:20 +01:00
Umcaruje
8841b89b6d Merge pull request #2546 from Umcaruje/fixscrollbars
Fix inconsistent scrollbars
2016-02-15 01:38:07 +01:00
Umcaruje
cfd345ad20 Merge pull request #2554 from Umcaruje/themeablecolors
Get rid of hardcoded colors in the Piano Roll and Automation Editor
2016-02-15 01:35:41 +01:00
Umcaruje
ff1f516542 Change spacing on hovered items in the context menus 2016-02-14 11:40:07 +01:00
Oskar Wallgren
0721b49a1c Show Main Window before loading/importing project 2016-02-14 00:40:33 +01:00
Umcaruje
5c602a3f97 Merge pull request #2542 from Umcaruje/fix2329
Make the instrument section of the sidebar themeable
2016-02-13 00:21:09 +01:00
Lukas W
b7d5b2ddf5 Fix #2558 2016-02-13 09:24:10 +13:00
Colin Wallace
3c9cefc6c1 Merge pull request #2553 from Umcaruje/volumevelocity
Rename note volume into note velocity
2016-02-11 15:59:43 -08:00
Raine M. Ekman
1f2fe24d4e Merge branch 'issue1499' of https://github.com/softrabbit/lmms into issue1499 2016-02-11 13:27:31 +02:00
Oskar Wallgren
14046684a5 Merge pull request #2524 from zonkmachine/recentfilesonlyprojects
Some tweaks to the recent files list
2016-02-11 03:31:53 +01:00
Oskar Wallgren
3bbe0e3e15 Only lmms projects allowed in recent file list. Increase recent file memmory to 50 2016-02-11 03:12:12 +01:00
Lukas W
ca8f80d44f Fix loading relative file path samples
Closes #2412
2016-02-11 11:58:42 +13:00
Raine M. Ekman
1290e33207 Merge pull request #2552 from michaelgregorius/lb303-deletion
Removes the project lb303 which seems to have been inactive since 2008 (fixes #2551)
2016-02-09 14:42:42 +02:00
Umcaruje
2dd403e53b Rename note volume into note velocity 2016-02-08 19:55:44 +01:00
Umcaruje
d52d7d9fb7 Get rid of hardcoded colors in the Piano Roll and Automation Editor 2016-02-08 19:44:50 +01:00
Oskar Wallgren
69ce296c5d Merge pull request #2533 from zonkmachine/indentedmain
Fixed indentation
2016-02-08 07:01:52 +01:00
Colin Wallace
1c70319fc2 Merge pull request #2541 from Wallacoloo/piano-isXKey
Move isWhiteKey, isBlackKey into Piano.h
2016-02-07 15:58:58 -08:00
Michael Gregorius
1ff0650a0d Removes the project lb303 which seems to have been inactive since 2008
According to the blame the project lb303 has been commented out from
CMakeLists.txt on 22.07.2008. Therefore it does not seem to be actively
maintained and is very likely to not even compile anymore.
2016-02-07 21:43:47 +01:00
Oskar Wallgren
76e690a1a0 Fixed indentation 2016-02-07 17:00:25 +01:00
Umcaruje
e24384e732 Make FxLine Stroke Themeable 2016-02-07 01:39:00 +01:00
Umcaruje
59f8fbd94b Fix inconsistent scrollbars 2016-02-06 12:17:38 +01:00
Tres Finocchiaro
317cc74bac Merge pull request #2545 from thothonegan/master-fix-qt5-needs-proper-linguist-tools
If using Qt5, use Qt5LinguistTools to locate lupdate/lrelease
2016-02-05 22:47:41 -05:00
Kenneth Perry (thothonegan)
45154d2e99 Require linguist tools on Travis Ubuntu 2016-02-05 15:08:12 -06:00
Kenneth Perry (thothonegan)
6228d9ae26 If using Qt5, use Qt5LinguistTools to locate lupdate/lrelease 2016-02-05 14:52:28 -06:00
Umcaruje
903e581180 Merge pull request #2544 from midi-pascal/master-2435
Update Triple oscillator French translation
2016-02-05 18:01:55 +01:00
midi-pascal
badb6c1ca9 Update French translation after fix of issue #2435 2016-02-05 11:41:25 -05:00
Umcaruje
8b73381517 Make the instrument section of the sidebar themeable 2016-02-05 01:34:51 +01:00
Colin Wallace
f78b6a682a Merge pull request #2540 from Umcaruje/cssnotes
Make the note border radius themeable, fix rendering of notes and volume/pan sliders
2016-02-04 16:10:11 -08:00
Umcaruje
439ab30d51 Make the note border radius themeable, fix rendering of notes and volume/pan sliders 2016-02-04 23:51:47 +01:00
Colin Wallace
176e08047e Rewrite Piano::isBlackKey for clarity 2016-02-03 18:53:05 -08:00
Colin Wallace
aa0f7a08d6 Move isWhiteKey, isBlackKey into Piano.h to make use of these functions in a wider scope 2016-02-03 18:46:59 -08:00
Umcaruje
1228de750f Merge pull request #2530 from Umcaruje/fixbarbreak
Fix bar display breaking at 999
2016-02-03 13:37:28 +01:00
Colin Wallace
32cbef46bc Merge pull request #2538 from softrabbit/aboutdialog_selection
AboutDialog: make version line selectable
2016-02-02 23:46:08 +00:00
Tres Finocchiaro
87e46d2ed1 Merge pull request #2522 from Umcaruje/fix2503
Fix incorrect UI for Automation Track on Mac OS X
2016-02-02 11:29:11 -05:00
Umcaruje
8b7c295fc0 Fix incorrect UI for Automation Track on Mac OS X 2016-02-02 11:51:03 +01:00
Raine M. Ekman
d3ff3897a0 AboutDialog: make version line selectable 2016-02-02 09:15:47 +02:00
Tres Finocchiaro
e03eb1ce05 Merge pull request #2532 from Umcaruje/settingbutton
Fix bad button position in setup dialog, make the SetupDialog fixed size and EffectDialog resizeable
2016-02-01 22:34:01 -05:00
Tres Finocchiaro
7c42823d9a Merge pull request #2526 from Umcaruje/fixyears
Fix outdated copyright info, fix license not showing in the about dialog
2016-02-01 21:27:04 -05:00
Tres Finocchiaro
5e3b26e690 Merge pull request #2527 from Umcaruje/fix2435
Fix TripleOscillator modulation popups
2016-02-01 21:18:21 -05:00
Umcaruje
3ffa8ac8f5 Fix outdated copyright info, fix license not showing in the about dialog 2016-02-01 22:52:17 +01:00
Umcaruje
de5ee5d8a3 Fix TripleOscillator modulation popups 2016-02-01 22:48:05 +01:00
Umcaruje
216143a8f5 Fix bad button position in setup dialog, make the SetupDialog fixed size and EffectDialog resizeable 2016-02-01 21:21:46 +01:00
Umcaruje
72915b7ace Fix bar display breaking at 999 2016-01-29 15:26:34 +01:00
Umcaruje
f528e3d400 Merge pull request #2521 from StCyr/StCyr_issue_2519
Fixed 2 French translations that prevent the display of the "MIDI" and "MISC" tabs (issue 2519)
2016-01-28 22:21:50 +01:00
Oskar Wallgren
3c7c49f01e Merge pull request #2520 from zonkmachine/beatNoteColour
Fix colour of selected beat notes in Piano Roll
2016-01-28 18:05:59 +01:00
Cyrille Bollu
64efd68bfd Fixed a French translation that prevented the display of the "MIDI" and "MISC" tabs (issue 2519) 2016-01-27 17:03:46 +01:00
Oskar Wallgren
5b804821fb Fix colour of selected beat notes in Piano Roll 2016-01-27 08:39:33 +01:00
Umcaruje
77b98117e6 Merge pull request #2293 from LocoMatt/master-3oscart
Triple Oscillator GUI redesign
2016-01-27 00:16:20 +01:00
LocoMatt
cfa1818ba5 Triple Oscillator GUI redesign 2016-01-26 23:53:03 +01:00
Tres Finocchiaro
d30a7df965 Merge pull request #2176 from zonkmachine/recoverFileFix
Recover file work over
2016-01-19 08:37:22 -05:00
Oskar Wallgren
9e8020719c Recovery file fixes 2016-01-19 14:04:08 +01:00
Umcaruje
613b01c026 Merge pull request #2489 from zonkmachine/splited
Remove duplicate preset files
2016-01-13 21:29:55 +01:00
Tres Finocchiaro
51316f55e3 Merge pull request #2506 from follower/patch-1
Fix "associted"/"associated" typo
2016-01-13 14:14:33 -05:00
follower
18d81ac831 Fix "associted"/"associated" typo
This will presumably also affect the translation files. (But I'm making this change within the GitHub editor which provides no easy way to do a 17 file search and replace. :) )
2016-01-11 09:31:29 +13:00
Tres Finocchiaro
baaed6a301 Merge pull request #2118 from Wallacoloo/engine-rename-min
Temporary workaround for ZynAddSubFx name clashes
2015-12-30 02:40:55 -05:00
Colin Wallace
c519921306 Rename Engine to LmmsCore, but typedef'd as Engine to prevent name conflicts with ZASFx
Document the Engine renaming better & link to relevant issues/PRs
2015-12-29 23:29:35 -08:00
Tres Finocchiaro
a9c9fbfbc2 Remove RegExp for "Add Effect" dialog
Closes #2495
2015-12-28 21:09:51 -05:00
Umcaruje
3865ed99df Merge pull request #2492 from NeiroNext/translation
Update Ukrainian translation
2015-12-22 15:13:35 +01:00
NeiroNext
d31ac1773b Update Ukrainian translation 2015-12-22 12:19:13 +02:00
Oskar Wallgren
9c5d86a2c1 Remove ZynAddSubFX duplicate presets 2015-12-18 21:21:02 +01:00
Raine M. Ekman
f99dba54f9 Merge pull request #2465 from softrabbit/opulenz2015
OpulenZ: add sane display units for some tooltips, coding style fixes
2015-12-14 22:32:42 +02:00
Raine M. Ekman
8d87169411 Opulenz: add sane display units for some tooltips, coding style fixes 2015-12-14 22:01:11 +02:00
Raine M. Ekman
c29f0dd4f9 Merge pull request #2464 from Umcaruje/mergedemos
Merge Demos and CoolSongs. Also fix the case on other project folders. Fixes #1274
2015-12-14 21:37:39 +02:00
Raine M. Ekman
3fbabfb3e7 Merge pull request #2456 from softrabbit/issue2318
Song: Don't remove controller just to be sure before adding it in Song::restoreControllerStates, Song::addController handles double adds. Fixes #2318.
2015-12-06 21:10:46 +02:00
Raine M. Ekman
7d38e0e9dc Merge pull request #2462 from jackokring/organifix
Organic: fix tool tips displaying "%1" instead of oscillator number.
2015-11-25 14:58:27 +02:00
Umcaruje
ff93b34dca Merge Demos and CoolSongs. Also fix the case on other project folders 2015-11-24 23:37:26 +01:00
Simon Jackson (Netbook)
4601defad0 Organic fix tool tip 2015-11-24 01:53:50 +00:00
Raine M. Ekman
06808ba5ab Organic: first stab at fixing #1499 through moving oscillator phase
offsets into each note, in _n->m_pluginData.
2015-11-23 10:08:43 +02:00
Raine M. Ekman
3a3af4ce6b Don't remove controller just to be sure before adding it in
Song::restoreControllerStates, Song::addController handles double adds.
Fixes #2318
2015-11-22 21:43:00 +02:00
Tres Finocchiaro
3e03e716ff Merge pull request #2442 from tresf/grid
Remove hard-coded grid from SongEditor
2015-11-13 21:46:59 -05:00
Tres Finocchiaro
aaa798c746 Remove hard-coded grid from SongEditor 2015-11-13 21:21:19 -05:00
Tres Finocchiaro
34821f9bea Merge pull request #2376 from M374LX/dummyaudio
Partially fix "Dummy" actually using ALSA
2015-11-11 20:36:36 -05:00
M374LX
ccb2f73dc0 Fix "Dummy" actually using ALSA 2015-11-11 22:55:18 -02:00
Lukas W
2284a8c353 Merge pull request #2433 from LMMS/ladspa-dirs
Fix ladspa plugin discovery
2015-11-04 09:14:04 +01:00
Lukas W
6d888fd61b Fix deadlock in InstrumentTrack::play
Closes #2378
2015-11-04 01:03:41 +01:00
Lukas W
8b65ae37b4 ConfigManager: Move plugin:ladspa init to LadspaManager 2015-11-03 20:43:01 +01:00
Lukas W
45cafd3f60 Fix ladspa plugin discovery 2015-10-30 22:53:28 +01:00
Lukas W
81a2fe5e69 Revert "Reinstates the build of the LADSPA plugins in the ladspa directory"
This reverts commit ff6cbf90a3.
2015-10-30 22:22:22 +01:00
Lukas W
a54e55b277 Revert "Fixes the build location of the LADSPA effect plugin"
This reverts commit 119ff99f27.
2015-10-30 22:22:05 +01:00
Lukas W
38bcc73f1c Revert "Find relative LADSPA plugins when running from build"
This reverts commit 37a2252236.
2015-10-30 22:20:59 +01:00
Tres Finocchiaro
48ea02bf24 Merge pull request #2205 from tresf/master
Windows MSYS build support
2015-10-30 17:17:26 -04:00
Tres Finocchiaro
e13c186c88 Merge pull request #2430 from tresf/ladspafix
Find relative LADSPA plugins when running from build
2015-10-30 17:16:18 -04:00
Tres Finocchiaro
727bf16cae Merge pull request #2432 from michaelgregorius/ladspa-builddir-fix
Reinstates the build of the LADSPA plugins in the ladspa directory
2015-10-30 17:16:03 -04:00
tresf
a7f8251f4b Initial changes for MSYS support 2015-10-30 17:05:26 -04:00
Michael Gregorius
ff6cbf90a3 Reinstates the build of the LADSPA plugins in the ladspa directory
Keeps the behavior of building libladspaeffect.so in the plugins
directory.
2015-10-30 22:04:32 +01:00
Tres Finocchiaro
3f6e406eb6 Fix double click to open BBEditor PianoRoll
Fixes #2431
2015-10-30 16:44:14 -04:00
Tres Finocchiaro
37a2252236 Find relative LADSPA plugins when running from build
Related #2426 #2270 #2428
2015-10-30 14:56:14 -04:00
Tres Finocchiaro
c98b6339cd Merge pull request #2386 from Wallacoloo/bb-editor-name
Revert partial 'B+B Editor' -> 'Pattern Editor' rename
2015-10-30 14:11:02 -04:00
Tres Finocchiaro
0ae35f3103 Merge pull request #2428 from michaelgregorius/2426-missing_ladspa_effect
Fixes the build location of the LADSPA effect plugin
2015-10-30 14:06:15 -04:00
Tres Finocchiaro
9bd4c4f522 Merge pull request #2408 from grejppi/master-remove-effect-check
EffectChain: check if effect exists before removing
2015-10-26 14:49:41 -04:00
Hannu Haahti
0b6280d632 EffectChain: check if effect exists before removing
Resolves #2407.
2015-10-26 20:45:30 +02:00
Michael Gregorius
119ff99f27 Fixes the build location of the LADSPA effect plugin
Removes the instruction to build the LADSPA effect plugin in the
"plugins/ladspa" directory instead of the "plugins" directory where all
other plugins are built. This change enables the usage of LADSPA plugins
in development builds where the binary is started from the build
directory.
2015-10-23 19:30:01 +02:00
Tres Finocchiaro
d17e78d5bb Merge pull request #2422 from midi-pascal/new_branch
Remove note from m_playingNotes before deleting m_pluginData
2015-10-22 17:45:31 -04:00
midi-pascal
2470df4f0e Remove note from m_playingNotes before deleting its m_pluginData in sf2Instrument::deleteNotePluginData()
Move m_playingNotesMutex.lock() and m_playingNotesMutex.unlock() outside of if( m_playingNotes.indexOf( _n ) >= 0 )

Conflicts:
	plugins/sf2_player/sf2_player.cpp

Remove note from m_playingNotes before deleting its m_pluginData in sf2Instrument::deleteNotePluginData()

Move m_playingNotesMutex.lock() and m_playingNotesMutex.unlock() outside of if( m_playingNotes.indexOf( _n ) >= 0 )
2015-10-22 16:44:38 -04:00
Tres Finocchiaro
2fac253ebd Merge pull request #2368 from tresf/2365-versions
Adds better versioning for non-stable builds
2015-10-19 11:40:21 -04:00
Tres Finocchiaro
8e633df1ee Adds better versioning for non-stable builds
Allows version forcing via `cmake -DFORCE_VERSION=1.1.1-foo`
2015-10-19 11:30:22 -04:00
Lukas W
d6a25f90a9 FileBrowser: Fix file paths
Fixes #2412
2015-10-17 13:06:34 +02:00
grejppi
7316ae966a Merge pull request #2410 from michaelgregorius/2409-LFO-leftovers
Removes existing controllers from the view when a new project is created
2015-10-12 21:16:01 +03:00
Michael Gregorius
3878fe580d Removes existing controllers from the view when a new project is created
Fixes #2409.
2015-10-12 19:49:55 +02:00
Colin Wallace
d4b2cb183c Merge pull request #2406 from michaelgregorius/2023-null-pointer-deallocation
Removes an unnecessary warning in MemoryManager::free
2015-10-11 00:31:55 +00:00
Michael Gregorius
cb6b3bd906 Removes an unnecessary warning in MemoryManager::free
Removes the warning "MemoryManager: Null pointer deallocation attempted"
from MemoryManager. The warning does not make sense because
deallocations of null pointers are ok in C++.

Fixes #2023.
2015-10-10 22:08:31 +02:00
Colin Wallace
3a8f491ddb Merge pull request #2394 from M374LX/decouple-mixer-visualization
Partially decouple VisualizationWidget from Mixer
2015-10-05 05:18:41 +00:00
Colin Wallace
fb46bfc753 Merge pull request #2383 from M374LX/audiobuffercontainer
Move Mixer::clearAudioBuffer() to BufferManager
2015-10-02 18:14:27 +00:00
M374LX
12e2da9b44 Remove unused Mixer::m_workingBuf 2015-09-30 23:00:06 -03:00
M374LX
5489040f20 Partially decouple Mixer from VisualizationWidget 2015-09-30 22:38:10 -03:00
Tres Finocchiaro
de7d83d158 Merge pull request #2392 from M374LX/fix-metalish-dong01
Fix corrupted audio file
2015-09-30 16:25:01 -04:00
M374LX
8195a955ae Fix corrupted audio file 2015-09-30 00:50:31 -03:00
Colin Wallace
fbd3d5bb0f Revert partial 'B+B Editor' -> 'Pattern Editor' rename 2015-09-28 14:31:53 -07:00
Alexandre Almeida
d66bd0a63c Fix comment typo 2015-09-27 18:45:52 -03:00
Colin Wallace
ab64c67da4 Merge pull request #2385 from M374LX/mixercleanup
Mixer cleanup
2015-09-27 21:22:27 +00:00
M374LX
efb1a4fdf3 Mixer cleanup 2015-09-27 17:11:52 -03:00
M374LX
e801384eed Move Mixer::clearAudioBuffer() to BufferManager 2015-09-27 00:36:17 -03:00
Michael Gregorius
596a41d143 Disables the context menu of the tool bars (fixes #2379) 2015-09-25 16:48:29 +02:00
Tres Finocchiaro
56a04072e2 Merge pull request #2377 from waxspin/master
Add functionality to allow octave-marking feature mentioned in #2193.
2015-09-25 09:09:16 -04:00
Ben Bryan
8fe3f17058 Add functionality to allow feature mentioned in #2193.
Fix declaration of return value.

Add mapping and new menu option for octave-marking of semitones.

Finish switch case for add/remove multiple octave semitones.

Fix segfault due to illogical access using iterators from one collection on another.

Make loop more succinct.

Move PianoRoll::getAllOctavesForKey method to private access.
2015-09-24 01:12:17 -05:00
Tres Finocchiaro
dabfc63cda Add Windows build flags for libsoundio. 2015-09-23 12:09:04 -04:00
Colin Wallace
1755962b39 Merge pull request #2361 from petterreinholdtsen/linux-desktop-file-clickable
Make sure desktop systems know how to pass files to lmms.
2015-09-20 20:58:44 +00:00
Colin Wallace
22673d445d Merge pull request #2363 from petterreinholdtsen/linux-man-page-flow
Fix manpage formatting of AUTHOR block.
2015-09-20 20:11:11 +00:00
Colin Wallace
e11a5cce32 Merge pull request #2362 from petterreinholdtsen/debian-gcc-5
Fix build problems with gcc 5.2 in Debian.
2015-09-20 08:28:24 +00:00
Petter Reinholdtsen
607d79bfcf Fix manpage formatting of AUTHOR block.
The AUTHOR block was formatted using fixed with font and no line
break by mistake.  Change this to normal text formatting.

The problem was discovered by Debian thanks to lintian, and is fixed
there in using a local change in debian/patches/man-page-adjustment.patch.
2015-09-20 09:42:12 +02:00
Petter Reinholdtsen
11a54e6f68 Fix build problems with gcc 5.2 in Debian.
The compiler complain about static inline functions being used from
inline functions.  This patch rewrite the inline to static inline
functions to avoid the compiler error.

This is related to https://bugs.debian.org/777989 and based on a patch
in the Debian packaging, see
http://anonscm.debian.org/cgit/debian-edu/pkg-team/lmms.git/tree/debian/patches .
2015-09-20 08:52:15 +02:00
Petter Reinholdtsen
878706d28c Make sure desktop systems know how to pass files to lmms.
For LMMS files to be clickable in a Linux desktop environment, there
need to be a program accepting such files as an argument.  This patch
change the lmms desktop file to affect files to open on the command line.
I did not know if lmms accepted URLs to remote files, so I went with the
safer %f for local files.

This patch originated in the Debian packaging, see for example
<URL: https://sources.debian.net/src/lmms/1.0.3-5/debian/patches/ >.
2015-09-20 08:41:02 +02:00
Tres Finocchiaro
1bb276b365 Make SDL default for all platforms
Closes #1600
2015-09-18 14:08:57 -04:00
Tres Finocchiaro
892756bda2 Merge pull request #2351 from waxspin/master
Inclusion of per-key note selection to piano roll editor.
2015-09-18 11:21:30 -04:00
Ben Bryan
c514f1789a Add per-key note selection to piano roll editor, as discussed in #529.
Add missing break.

Fix tabs.
2015-09-18 09:46:39 -05:00
Michael Gregorius
ab1cc3487d Merge pull request #2358 from michaelgregorius/2288-piano-automation-size
Fixes the storage of the windows state for invisible windows (#2288)
2015-09-17 18:02:57 +02:00
Michael Gregorius
7881e0315d Fixes the storage of the windows state for invisible windows
Until now windows/widgets that were invisible during the call to
MainWindow::saveWidgetState had their size stored as (0, 0). This
resulted in problems when the default template was created with
invisible windows because in new projects these windows then opened up
at a very small size.

This patch fixes the problem by introducing a new parameter of type
QSize to MainWindow::saveWidgetState. It can be used to communicate the
size that should be stored in case the widget that calls the method is
invisible. The code of most callers (PianoRollWindow, SongEditor, etc.)
has been updated to use good default sizes.
2015-09-17 17:48:37 +02:00
Umcaruje
09bc6f158a Temporary fix for #2355, comment out the libsoundio.dll until it gets added to the mingw PPA 2015-09-16 23:57:29 +02:00
Tres Finocchiaro
b763ee2b39 Merge pull request #2353 from Umcaruje/compactfix
Fix LED's in Compact Track buttons
2015-09-16 12:55:57 -04:00
Michael Gregorius
b5f5844edb Merge pull request #2285 from michaelgregorius/piano-roll-improvements
Merge PianoRoll improvements (note on keys, subtle highlight, note rendering)
2015-09-16 17:47:06 +02:00
Michael Gregorius
2ea72080a9 PianoRoll improvements (note on keys, subtle highlight, note rendering)
Draws note labels on all (white) keys when selecting to do so in the
preferences ("Enable note labels in piano roll"). The old rather messy
implementation that drew them all over the place has been removed.
When rendering note names on the keyboard keys the C notes are rendered
in a darker color than the other ones. Horizontal lines which do not
correspond to the C key are now also rendered in a more subtle way to
give more prominence to the start of an octave.

The user selected scale is now highlighted in a more subtle way.

The note borders are not toned down in relation to the volume anymore.
The handles on the right side of each note have been made slimmer and
shorter.
2015-09-16 17:34:32 +02:00
Tres Finocchiaro
3925fb8ff3 Merge pull request #2323 from softrabbit/w32_ssemath
Make the Win32 version use SSE math
2015-09-16 09:11:56 -04:00
Umcaruje
96c435b81f Fix LED's in Compact Track buttons 2015-09-15 23:57:41 +02:00
Oskar Wallgren
dff7e3e4bb Open last active project. 2015-09-15 15:04:48 -04:00
Ryan Schmidt
571e4fd31a Detect 32-bit/64-bit correctly based on CFLAGS
The user might invoke cmake with CFLAGS containing "-m32" or (on OS X) "-arch i386" while on a 64-bit machine to indicate that it should build for 32-bit instead.
2015-09-15 14:55:33 -04:00
Aya Morisawa
4da73f345c Improve Japanese translation 2015-09-15 14:29:49 -04:00
Aya Morisawa
20889111f2 Improve Japanese translation 2015-09-15 14:29:49 -04:00
Aya Morisawa
e83ff3e9c4 Improve Japanese translation 2015-09-15 14:29:49 -04:00
Michael Gregorius
07a7a5c5cb Merge pull request #2343 from michaelgregorius/2342-unbalanced-controls
Puts the controls of the InstrumentTrackWindow into a grid layout to solve #2342.
2015-09-14 21:22:05 +02:00
Michael Gregorius
8b7a48cd37 Puts the controls of the InstrumentTrackWindow into a grid layout
Puts the controls of the InstrumentTrackWindow into a grid layout to
give them a more balanced look. Without this patch the labels of the
widgets are not aligned which gives the instrument controls a rather
unbalanced look.

Added a "SAVE" label for the preset button to make the layout more
balanced.
2015-09-14 21:10:20 +02:00
Andrew Kelley
98346f7a9a AudioSdl: fix cleanup hanging 2015-09-13 20:48:53 -07:00
Andrew Kelley
799f830827 Merge pull request #2339 from LMMS/audio-soundio
add libsoundio audio backend
2015-09-13 20:38:12 -07:00
Andrew Kelley
e7af4b6f3e soundio backend: use lmms code style conventions 2015-09-13 18:12:43 -07:00
Andrew Kelley
f7e5bf4860 core: fix cleanup race condition in mixer 2015-09-13 16:54:16 -07:00
Andrew Kelley
f7ff96fe4f add libsoundio audio backend
This adds libsoundio (http://libsound.io/) as an available audio
backend. libsoundio supports JACK, PulseAudio, ALSA, CoreAudio,
WASAPI, and a dummy backend.
2015-09-13 16:07:10 -07:00
Colin Wallace
2fb0babfd8 Merge pull request #2310 from rcorre/master
Add CLI equivalent to GUI's "export tracks"
2015-09-13 22:36:03 +00:00
Ryan Roden-Corrent
fdb2787ff9 Support '.' in output directory path.
Do not call baseName on the path passed to -o when using the --rendertracks
option. This was mangling directories that contained a literal '.' if a '/' was
not explicitly specified at the end.

Still call baseName for --render as the argument to -o is a file and we need to
set the extension (ogg/wav).
2015-09-13 12:51:02 -04:00
Ryan Roden-Corrent
d8ce8301b8 Rename --render-tracks to --rendertracks.
Follow convention of avoiding '-' in command names.
2015-09-13 07:39:23 -04:00
Ryan Roden-Corrent
ea838c428d Don't use old naming convention in new methods.
Remove the _ prefix from the parameters to the newly added
ProjectRenderer::getFileExtensionFromFormat.

This naming convention is being phased out.
2015-09-13 07:39:23 -04:00
Ryan Roden-Corrent
6b8406241b Document --render-tracks in --help and the manpage. 2015-09-13 07:28:22 -04:00
Ryan Roden-Corrent
795d42987f Add --render-tracks CLI command.
This command allows rendering each track of a song to a different file.
It should provide the same functionality as the "Export Tracks" GUI option.

Usage could look like:
lmms --render-tracks project.mmpz -f ogg -o output/
2015-09-13 07:28:22 -04:00
Ryan Roden-Corrent
c462261433 Use RenderManager in ExportProjectDialog.
Remove the rendering logic from the gui code in ExportProjectDialog and let
RenderManger handle it instead.

This is part of an effort to allow the CLI and the GUI to share the same
rendering logic, setting the state for a --render-tracks CLI option similiar to
the "Export Tracks" GUI option.
2015-09-13 07:28:22 -04:00
Ryan Roden-Corrent
1a22635109 Initial implementation of RenderManager.
Much of the multi-track rendering logic was intermixed with GUI code in
ExportProjectDialog.

This creates the RenderManager class to provide rendering logic that could be
shared between the CLI and GUI interfaces.
2015-09-13 07:28:22 -04:00
Ryan Roden-Corrent
e863df7171 Add ProjectRenderer::getFileExtensionFromFormat.
Currently ProjectRenderer has a helper getFileFormatFromExtension, this adds a
similar helper getFileExtensionFromFormat.

This will, for example, return "ogg" for OggFile.
2015-09-13 07:28:22 -04:00
Colin Wallace
deeb95a749 Merge pull request #2297 from Wallacoloo/midirange+
Increase pitch range knob limit to 60. Fixes #2250
2015-09-12 17:02:14 +00:00
Umcaruje
9111eb82d5 Merge pull request #2344 from AyaMorisawa/patch-1
Improve Japanese translation
2015-09-12 15:08:52 +02:00
Aya Morisawa
f5485a9eff Improve Japanese translation 2015-09-12 20:47:29 +09:00
Tres Finocchiaro
55db0c8e30 Fix mailmap for Thomas Clark 2015-09-12 00:10:59 -04:00
Michael Gregorius
36a6fb3936 Merge pull request #2287 from michaelgregorius/2286-piano-roll-toolbars
Breaks down the piano roll's toolbar into multiple smaller ones (#2286)
2015-09-11 21:09:45 +02:00
Michael Gregorius
39692643cf Introduction of several toolbars for editors and CSS changes
The piano roll's actions have been grouped into several toolbars. There
are now five groups / tool bars: "Transport controls", "Note controls",
"Copy paste controls", "Timeline controls" and "Zoom and note controls"
(this group is a bit mixed). Each group can be turned off and on using
the standard toolbar context menu provided by Qt.

The new default layout of the toolbars saves horizontal space by putting
the "Zoom and note controls" below the other toolbars. The toolbars can
be hidden and shown via the context menu but these states are not
stored.

The "Song editor", "Beat+Bassline editor" and "Automation editor" have
been switched to using movable toolbars as well.

Adjusted the Editor class to have some other defaults for the "Transport
controls".

Added some methods to add toolbars to editors and changed the other
editors' code to use it. This way the properties of a standard editor
toolbar can be changed in a simple and central way.

Fixed the size of the timeline control buttons which are implemented as
NStateButton. Previously these had a fixed size and appeared smaller than
all other buttons. Now they behave like other ToolButton with respect to
the size. Also removed a fixed size call in ToolButton itself.

Made some adjustments to the CSS for QToolBar and QToolButton:
* Switched the QToolBar CSS to a vertical gradient and also increased
the padding to 2px on the way.
* Previously all buttons looked like they were pressed. This was fixed by
using the same linear gradient that is used for the QToolBar.
* The hover effect for QToolButtons is a bit more subtle now and looks
less intensive as when the button is pressed / checked.
* Gave the normal buttons a bit more radius.
* Adjusted the radii of the special play and stop buttons to be
symmetric so the do not look skewed.
2015-09-11 20:52:34 +02:00
Dave French
4639e37c31 Merge pull request #2324 from Wallacoloo/pianoroll-refactor
Refactor PianoRoll code
2015-09-11 08:35:11 +01:00
Colin Wallace
db18fa61fe have getSelectedNotes() return the selected notes, rather than appending them to a write-back parameter 2015-09-10 21:29:36 -07:00
Colin Wallace
ff94f8b4ce Rename copy_to_clipboard -> copyToClipboard 2015-09-10 21:29:36 -07:00
Colin Wallace
ca7028933a Remove extraneous conditional 2015-09-10 21:29:36 -07:00
Colin Wallace
a17d915ccf Prefer C++11 range-based for loops over explicit iterators or Qt's foreach;
note: Qt's foreach actually duplicates the container before iterating, as well (not hugely problematic for performance since Qt containers are copy-on-write, but is still semantically misleading)
2015-09-10 21:29:36 -07:00
Colin Wallace
2e111129bd Remove unnecessary 'inline' attributes;
'inline' is only needed when a function is defined in the header, as a way to avoid multiple definitions error when linking. It is otherwise useless
2015-09-10 21:29:28 -07:00
Colin Wallace
89e7d1e758 Merge pull request #2334 from michaelgregorius/2333-inconsistent-tension-knob
Fixes an inconsistent behavior of the tension knob (#2333)
2015-09-10 02:07:58 +00:00
Dave French
d6dbc03ac9 Merge pull request #2321 from Wallacoloo/reserved-names
Remove double-underscore variable prefixes & prefer static member variables over globals
2015-09-09 22:48:55 +01:00
Michael Gregorius
46bac80470 Fixes an inconsistent behavior of the tension knob (#2333)
Until now the tension knob was only disabled for discrete and linear
mode if the cubic hermite mode was selected at least once. This behavior
is fixed with this commit.
2015-09-09 20:03:57 +02:00
Colin Wallace
3f31b5ce25 Merge pull request #2331 from Wallacoloo/FileBrowserRefactor
Refactor FileBrowser's filterItems function
2015-09-08 23:44:52 +00:00
Colin Wallace
da54b9cdb0 Fix tabbing 2015-09-07 17:08:09 -07:00
Colin Wallace
763ca09fb1 Further simplify by removing 'cm' variable 2015-09-07 17:01:55 -07:00
Colin Wallace
0260820dac Remove special showAll case; 'xyz'.contains('') always returns true 2015-09-07 16:46:41 -07:00
Colin Wallace
aad8fcb410 Remove unused class declaration, make pluginBefore a static function 2015-09-07 16:39:07 -07:00
Colin Wallace
aa77443eb1 merge the two filterItems functions into one;
also fix some formatting + use 'Pattern Editor' instead of 'B&B Editor' in context menu
2015-09-07 16:36:25 -07:00
Colin Wallace
0d8a0330c2 Merge pull request #2328 from michaelgregorius/2327-tension-crash
Fixes for the tension dial (crash + missing update)
2015-09-07 22:21:30 +00:00
Michael Gregorius
6b9ff4e9d3 Fixes for the tension dial (crash + missing update)
Fixes a crash that occurred when the tension dial of the automation
editor was moved when no pattern was loaded.

Also added a missing update of the tension dial when the automation
patterns are switched.
2015-09-07 20:40:16 +02:00
Colin Wallace
86d0f94882 Merge pull request #2320 from Wallacoloo/flanger-units
Fix units in Flanger plugin
2015-09-07 01:06:36 +00:00
Colin Wallace
6a9e105c90 Const-correctness fixes 2015-09-06 15:04:46 -07:00
Colin Wallace
68da3ad64f Remove duplicated code in note move/resize cursor calculation;
also breaks apart a lengthy conditional into calculationss that are easier to understand.
2015-09-06 14:40:36 -07:00
Colin Wallace
8504633103 Remove duplicated scrolling code from keyPressEvent() 2015-09-06 13:54:53 -07:00
Colin Wallace
a32368cc3a Display pan/volume on wheel event if all edited notes have same pan/volume;
previous behavior was to display the value only if one note was being edited
2015-09-06 13:27:32 -07:00
Colin Wallace
f568f7b4a4 Formatting/tabbing fixes 2015-09-06 13:14:38 -07:00
Colin Wallace
a8fa9b75a1 Simplify conditional by initializing vol/pan to defaults 2015-09-06 13:12:08 -07:00
Colin Wallace
ebc606aaf2 Move vol/pan s_textFloat handling code into separate functions;
this avoids some code duplication & makes the mouseevent/wheelevent functions slightly smaller
2015-09-06 13:09:23 -07:00
Colin Wallace
8a4e59defb Merge pull request #2289 from Wallacoloo/midi-guicore
Consolidate midi config widgets & move them out of the core
2015-09-06 18:11:58 +00:00
Raine M. Ekman
3de65556f2 Make the Win32 version use SSE math, with the performance benefits it brings.
Denormal protection alone should be worth it.
2015-09-06 12:28:26 +03:00
Colin Wallace
db820e5255 Remove double-underscore prefix from __fileEncodeDevices & make it a static member variable;
this helps to reduce pollution of the global namespace
2015-09-05 22:28:18 -07:00
Colin Wallace
1944499fa3 remove double-undercscore prefix from portName function 2015-09-05 22:00:14 -07:00
Colin Wallace
b53e7a7fbe Rename __targetNames to targetNames, and make it a static member variable 2015-09-05 21:54:06 -07:00
Colin Wallace
39133ab0ea Move update_1_2_0() functionality into upgrade_1_1_90();
Next release candidate will be named 1.1.90
2015-09-05 21:38:36 -07:00
Colin Wallace
602983f664 Change unit label for Flanger LFO knob to 'Hz'; delay knob units are 's' 2015-09-05 16:30:33 -07:00
Colin Wallace
f6b696fa0f Don't use underscore parameter names in value, setValue functions 2015-09-05 11:38:30 -07:00
Colin Wallace
0f2da6f68b Provide upgrade path to copy the MidiAlsaRaw 'Device' property to new 'device' 2015-09-05 11:38:29 -07:00
Colin Wallace
697aebc056 Consolidate midi config widgets & move them out of the core 2015-09-05 11:38:29 -07:00
Colin Wallace
e606e30486 Merge pull request #2299 from Umcaruje/emptytemplate
Add an Empty template
2015-09-05 18:31:40 +00:00
Colin Wallace
cbf6d24e8f Fix const-correctness in FxMixer::channelSendModel 2015-09-02 21:17:35 -07:00
Colin Wallace
45c4aa6a68 Merge pull request #2278 from michaelgregorius/metronome-improvements
Improved metronome (on/off during song, pattern and bb playback)
2015-08-29 17:15:14 +00:00
Michael Gregorius
5b2e77b444 Improved metronome (on/off during song, pattern and bb playback)
There is a new tool button that can be used to turn the metronome on and
off. Per default the metronome is turned off. When enabled the metronome
will during on song playback, pattern playback and BB playback. During
export it is ignored.

A new icon was added as well.

The state is currently stored in the Mixer. It might make sense to put
the metronome configuration in its own class in the future. The state is
currently not stored in the file but this might be a good choice for now
until a better place is found for the metronome data.

Also removed some repeated calls to Engine::getSong() and
Engine::fxMixer().
2015-08-29 15:04:41 +02:00
Umcaruje
da2b01b5a3 Add an Empty template 2015-08-29 01:05:45 +02:00
Colin Wallace
548a9196b4 Increase pitch range knob limit to 60. Fixes #2250 2015-08-27 21:39:31 -07:00
Colin Wallace
8fd5fe90d2 Merge pull request #2273 from michaelgregorius/2272-template-fixes
Fixes #2272 and other problems with the templates
2015-08-26 17:16:38 +00:00
Michael Gregorius
abbd7c48cf Switch local variable to camel case 2015-08-26 18:59:31 +02:00
Colin Wallace
c99c6eeea9 Merge pull request #2135 from michaelgregorius/alsa-combobox
Partial fix for #1600: ALSA device can be selected using a combo box
2015-08-26 03:21:48 +00:00
Tres Finocchiaro
de40aa81ce Minor CLI fixes
Closes #2258
2015-08-24 16:25:40 -04:00
Colin Wallace
9fd8c07820 Show '<not supported on this plaform>' message during cmake config if AppleMidi is not supported 2015-08-23 20:15:29 -07:00
Colin Wallace
35486293e3 Merge pull request #2222 from michaelgregorius/2209-font-sizes-too-small
2209 font sizes too small
2015-08-23 01:35:45 +00:00
Colin Wallace
123de3aade Add missing include necessary for Qt5 compilation 2015-08-22 00:36:39 -07:00
Tres Finocchiaro
c68f31aeda Add horizontal scroll support to SongEditor
Closes #2275
2015-08-21 21:23:03 -04:00
Tres Finocchiaro
cfbd53fb50 Detect fluid executable even when CMake can't
Closes #2260
2015-08-21 20:39:00 -04:00
Michael Gregorius
4571d14029 Prevent resizing of the "Controls" button
The "Controls" button will now keep its minimal size when the
ControllerView is resized.
2015-08-18 18:23:40 +02:00
Tres Finocchiaro
618828a9b6 Merge pull request #2266 from michaelgregorius/2262-render-check-file
Fixes #2262
2015-08-17 16:47:13 -04:00
Michael Gregorius
4883c579a5 Check the existence of an input file that is to be rendered (#2262)
Added a check for the existence of the file that should be rendered from
the command line. LMMS now exits with an error message in case the file
does not exist.
2015-08-17 22:25:19 +02:00
Tres Finocchiaro
21ff5333dc Merge pull request #2251 from M374LX/iss2204
Fix SF2 pitch and gain problems
2015-08-17 15:30:59 -04:00
Tres Finocchiaro
4c04fb06ba Merge pull request #2271 from tresf/homebrew
Initial Homebrew on OSX Lion patch
2015-08-17 13:02:33 -04:00
tresf
2035ff3e3c Initial Homebrew on OSX Lion patch 2015-08-17 12:39:41 -04:00
Michael Gregorius
bc1a416cd1 Added an option to save a project as the default template
A new option to save a project as the default template is now available
in the file menu. If the default template already exists the user is
asked whether he wants to overwrite it.
2015-08-16 16:18:38 +02:00
Michael Gregorius
8c93b6bfee Fixes #2272 and other problems with the templates
Removes the non-intuitive saving of the default template in
MainWindow::createNewProject.

Other fixed problems:
* User entries were not shown in the menu of the tool button that
creates new projects from templates. Now they are shown as well.

Other changes:
* Adds a new option "New from template" in the file menu. It shows the
same menu as the tool button.
2015-08-16 15:46:10 +02:00
Michael Gregorius
ef449f5bae Remove the horizontal scrollbar from controller rack view
Removes the potential horizontal scrollbar from the controller rack
view.

Also sets the MDI window of the controller rack to a bigger size in the
constructor and moves it towards the other windows. This code is active
in the case where there is no default template from which the window
states are loaded.
2015-08-16 09:39:00 +02:00
Colin Wallace
5449706527 Merge pull request #2261 from M374LX/improve-main
main(): improve error handling and clean up code
2015-08-15 10:51:08 -07:00
Tres Finocchiaro
5375bda6ac Fix incorrect calculation of IntBits
Fix over-shifting of int by explicitly making type ULL.
Taken from upstream:
aaca6447de
2015-08-15 13:23:32 -04:00
Tres Finocchiaro
6df512dc76 Merge pull request #2267 from M374LX/bbeditor-default-template
Enable it to hide BB Editor in default template
2015-08-15 12:34:20 -04:00
M374LX
6966559600 Make it able to hide BB Editor in default template 2015-08-14 21:50:57 -03:00
Tres Finocchiaro
30d906542c Merge pull request #2265 from NeiroNext/translation
Add Ukrainian translation
2015-08-14 11:26:57 -04:00
NeiroNext
6aa8269542 Add Ukrainian translation 2015-08-14 17:06:11 +03:00
M374LX
8bb7b71aab Improve error handling 2015-08-13 22:50:46 -03:00
M374LX
c7b867c2a0 Fix errors and capitalization in the output of "--help" 2015-08-13 22:21:34 -03:00
M374LX
dc1a12ab33 Improve error handling 2015-08-13 22:16:07 -03:00
M374LX
b8f2e6c715 Further adjust coding conventions 2015-08-13 21:22:50 -03:00
M374LX
45c506c79d Start refactoring main() 2015-08-13 21:19:34 -03:00
Tres Finocchiaro
28018ad206 Merge pull request #2207 from tresf/2206-ladspa-fix
Fix init of LADSPA plugins on some platforms
2015-08-13 14:29:05 -04:00
Tres Finocchiaro
f7a61aea0c Merge pull request #2210 from tresf/2201-root-refactor
Cleanup root directory
2015-08-13 14:15:05 -04:00
Tres Finocchiaro
3114ccea26 Cleanup root directory
Cleans up the root directory of the GitHub source tree and starts to separate platform-specific installing and packaging logic from the master CMakeLists.txt.  Closes #2201
2015-08-13 11:37:47 -04:00
Alexandre Almeida
6cb451abbe Fix SF2 gain problems when exporting
Fix the SF2 gain problems that persisted in issue #2204
2015-08-12 21:30:05 -03:00
Tres Finocchiaro
9819900aca Merge pull request #2131 from michaelgregorius/cmd-loop-render
Fixes issue #2129 ("can't export as loop with CLI")
2015-08-12 11:39:43 -04:00
Michael Gregorius
02f9447467 Fixes issue 2129 ("can't export as loop with CLI")
Adds a new command line option to render a song as a loop ("-l", "--
loop-mode").

Also cleaned up the code which parses the command line options by
pulling out methods that print the version and the help.

Updated man page: Added the new option to command line render a loop. Updated
the data of the man page and the URLs.

Added information about option to bypass root user check on startup

Calculate the copyright year dynamically

The command line options for help and version info both print the
copyright as "2004-2014". Until now the value for the second year had to
be adjusted manually. With this patch they are computed dynamically so
that the current year will always be used.
2015-08-12 17:28:31 +02:00
M374LX
3f326b81fc Fix #2204 2015-08-11 23:47:34 -03:00
Colin Wallace
ed6ee790ae Merge pull request #2238 from Wallacoloo/prompt-workingdir2
Fix 'create working dir' prompt & move it from ConfigManager to GuiApplication
2015-08-10 19:19:01 -07:00
Colin Wallace
65467eb66c Merge pull request #2237 from M374LX/iss1878
Fix #1878
2015-08-09 09:08:25 -07:00
Colin Wallace
ba7908f79c Merge pull request #2228 from rageboge/midi_apple
#1153 (Apple) MIDI Support
2015-08-09 08:39:53 -07:00
Alexandre Almeida
6944b520ea Add a MINIMUM_BUFFER_SIZE constant 2015-08-09 11:50:24 -03:00
Alexandre Almeida
2f24d635c3 Add a MINIMUM_BUFFER_SIZE constant and comments 2015-08-09 11:50:12 -03:00
Maurizio Lo Bosco
275bcb52df #1153: added basic apple midi support 2015-08-09 09:59:12 +02:00
Colin Wallace
4d3250bb42 Fix 'create working dir' prompt & move it from ConfigManager to GuiApplication;
also sets the default choice to 'yes' (do create directories) instead of 'no'
2015-08-05 20:14:02 -07:00
Alexandre Almeida
c73edc5d94 Adjust coding conventions 2015-08-05 20:50:10 -03:00
M374LX
18b6f20c29 Fix #1878 2015-08-05 20:42:10 -03:00
Colin Wallace
ef411b2d81 Merge pull request #2226 from ThomasJClark/master
Don't use native file saving/loading dialogs
2015-08-05 07:33:00 -07:00
Colin Wallace
5aebd3b877 Merge pull request #2215 from Wallacoloo/include-check-rm
Remove unused include file checks
2015-08-04 21:29:02 -07:00
Tom Clark
e5b5ebbda4 Don't use native file saving/loading dialogs
LMMS tries to modify the save dialog, This causes a segfault if native
file dialogs are used instead of the Qt ones.  At least on Linux, Qt 5
seems to make file dialogs native by default, so LMMS is unable to save
projects when compiled with -DWANT_QT5=true.
2015-07-30 22:10:47 -04:00
Michael Gregorius
fa5c0c1569 Fixes the rendering of the tact numbers in the timeline
Fixed the rendering of the tact numbers in the timeline widget. Before
this fix they were not readable because they were too big. Interestingly
in this case the fix is to use a font size in pixels (half the height of
the widget). The numbers are now also rendered a bit darker than the
lines.

Also removed the pixmap for the timeline from the code and from the
filesystem. It was only used to determine the fixed height of the widget
but not rendered. Therefore it was removed and the height is now
directly set to 18 pixels which was the height of the pixmap.
2015-07-30 22:32:38 +02:00
Michael Gregorius
76e4859ef0 Get rid of hardcoded pixel sizes in the plugin browser and side bar
The PluginDescWidget doesn't use calls to pointSize anymore. Also the
name of the plugin is only painted bold when hovered over with the
mouse. The animation speed was increased a bit as well. Hope it is not
too fast for displays with smaller resolutions. The problem with the
current implementation is that it increases the height by incremental
steps of 1 pixel (triggered by a QTimer) which gives a slower speed on
high DPI displays. In the future this implementation might be improved,
e.g. by using the animation classes provided by Qt.

The SideBarWidget also does not use calls to pointSize anymore. Instead
the standard font is increased by 2 (typographical) points and then
rendered at the right place using information from QFontMetrics. In the
long run the header of the SideBarWidget should be organized using a
layout, e.g. a layout with one QLabel to render the icon and one QLabel
to render the header text. This would ensure that the black background
would always be large enough and that the fonts do not protude into the
actual content.
2015-07-30 21:08:35 +02:00
Michael Gregorius
cd0176b5af Controllers are rendered more dynamically
ControllerRackView now uses a layout to organize the ControllerViews.
The ControllerViews in turn use layouts to organize their widgets
(labels and push button). ControllerView now inherits from QFrame
instead of QWidget. The (static) background image for controllers was
deleted because the ControllerView can now be resized dynamically.

Song: Added specific signals for added and removed controllers. Also
removed a TODO by putting the functionality to remove all controllers in
a method (removeAllControllers).

Deleted Controllers now don't unregister from Song during deletion. This
has to be done by the client (Hollywood principle - "Don't call us, we
call you.").

TODO: For some strange reason I cannot programmatically resize the
controller rack to make it fit the controllers on my screen.
2015-07-29 22:35:06 +02:00
Tres Finocchiaro
2294614180 Merge pull request #2203 from Wallacoloo/lmms_spec_in_changelog
Remove "Changelog" section of lmms.spec.in
2015-07-29 16:33:13 -04:00
Michael Gregorius
27c5295388 Get rid of too small fonts in all file browsers
Removes one of the several calls to pointSizeF. This method seems to
return a font which has the same height in pixels on all displays
(regardless of the display's actual DPI value). In the long run these
calls will all have to be removed to make LMMS usable on high DPI
displays.
2015-07-29 14:34:20 +02:00
Colin Wallace
95d404ddef Merge pull request #2216 from Wallacoloo/extension-calc
Calculate rendering extension on a separate line
2015-07-28 12:28:53 -07:00
Lukas W
5592d07c80 Find data directory when in development
This allows to just run "./lmms" during development, without installing
or specifying a data path.

Related: #1719 #1958
2015-07-28 12:48:10 +02:00
Colin Wallace
e9879797e3 Calculate rendering extension on a separate line 2015-07-27 05:44:59 +00:00
Colin Wallace
6948ff086a Remove unused include file checks 2015-07-26 23:05:39 +00:00
Colin Wallace
f1340249ac Fix version & set changelog to point to online release notes 2015-07-25 19:16:53 +00:00
Colin Wallace
403c36577d Merge pull request #2199 from Wallacoloo/FlpImport1
Fix tab formatting in FlpImport.cpp
2015-07-24 22:20:17 -07:00
Dave
feee39b827 Merge pull request #2198 from curlymorphic/1932
Revert Correct Priority of fade button
2015-07-23 11:48:23 +01:00
Colin Wallace
ca3829317e Fix tab formatting 2015-07-21 03:21:23 +00:00
Colin Wallace
bb55346a29 Merge pull request #2197 from curlymorphic/bbMouseOver
Edit BBEditor Mouse tool tip
2015-07-19 16:56:58 -07:00
Dave French
ac7aa69ad1 Revert Correct Priorty of fade button
reverted changes made in  #1527
copied from Github diff

Fixes #1932
2015-07-20 00:36:01 +01:00
Dave French
362e0e1962 Edit BBEditor Mouse tool tip
Edit the tool tip to remove The Double click top open in piano roll
as per #1776 #1783
2015-07-20 00:00:32 +01:00
Colin Wallace
620b3d9ef1 Merge pull request #2189 from Wallacoloo/upgrade_refactor
Separate DataFile::Upgrade into smaller functions
2015-07-19 14:36:04 -07:00
Colin Wallace
6267e8d0d5 Merge pull request #2188 from Wallacoloo/rm-deprecated-b64
Remove deprecated base64::encode(QVariant) version
2015-07-19 14:34:03 -07:00
Colin Wallace
5db57282da Merge pull request #2187 from Wallacoloo/git-2186
Fixes #2186; double-clicking the Fx Channel selector will show Mixer window if hidden
2015-07-19 14:32:31 -07:00
Colin Wallace
e71f5bbfce Merge pull request #2195 from zonkmachine/missingparenthesis
Fix typo
2015-07-19 11:10:07 -07:00
Oskar Wallgren
f832217393 Stop lupdate from complaining 2015-07-19 18:10:57 +02:00
Dave
24649d4131 Merge pull request #2190 from curlymorphic/2159
Correctly use the ladspa plugin folder
2015-07-19 15:06:24 +01:00
Dave French
367fbe8733 The ConfigManager was Incorrectly loading Ladspa plugin folder.
The default Ladspa plugin folder was incorrect under linux

This pull request fixes this.

Setting Dialog, Ladspa Directory Added leading /

Added a leading / to the lmms/ladspa plugin
Clean the path using QDir::cleanPath()
2015-07-18 07:46:43 +01:00
Colin Wallace
2175a47849 Separate DataFile::Upgrade into smaller functions 2015-07-15 04:11:01 +00:00
Colin Wallace
9840050ae7 Remove deprecated base64::encode(QVariant) version 2015-07-15 03:39:58 +00:00
Colin Wallace
be02fb8576 Fixes #2186; double-clicking the Fx Channel selector will show Mixer window if hidden 2015-07-15 03:04:01 +00:00
Tres Finocchiaro
b1ecbc8036 Fix init of LADSPA plugins on Slackware
Fixes #2206
2015-07-14 20:55:23 -04:00
Colin Wallace
acf6393e70 Merge pull request #2182 from zonkmachine/hideRecoverInRecent
Hide recover.mmp in Recent files
2015-07-13 19:38:14 -07:00
Colin Wallace
1002fd60f0 Merge pull request #2139 from Wallacoloo/git-2138
Export percentage calculation now takes into account loop markers when necessary
2015-07-13 19:12:56 -07:00
Colin Wallace
7786fb1902 Merge pull request #2181 from michaelgregorius/2172-mouse-over-quickfix
Quick fix for #2172 ("mouse-over readout in fx-mixer")
2015-07-13 19:12:21 -07:00
Colin Wallace
d4e578080b Merge pull request #2150 from Wallacoloo/SampleBufferCleanup
Fix deadlock in SampleBuffer
2015-07-13 19:02:23 -07:00
Colin Wallace
ffba37c7f2 Export percentage calc now takes considers loop markers as necessary 2015-07-14 01:53:47 +00:00
Dave
f4120eedd2 Merge pull request #2184 from Wallacoloo/git-2183
Remove old debugging statement
2015-07-13 00:17:30 +01:00
Colin Wallace
03a94a1d5c Remove old debugging statements - fixes #2183 2015-07-12 22:58:25 +00:00
Oskar Wallgren
9f78fa594a Hide recover.mmp in Recent files 2015-07-12 18:36:13 +02:00
Michael Gregorius
6634313014 Quick fix for #2172
The tool tip for the FxLine now shows the name of the channel.
2015-07-12 17:14:03 +02:00
Colin Wallace
3ff55d755c Merge pull request #2151 from Wallacoloo/lockingfixes
Fix race condition in TrackContainer::removeTrack
2015-07-11 19:37:18 -07:00
Colin Wallace
d636d67144 Merge pull request #2178 from Umcaruje/flip-icons
Add automation flip icons
2015-07-11 19:22:23 -07:00
Dave
d9dac72c7f Merge pull request #2158 from Wallacoloo/EqFilterInit
Initialize all fields of EqFilter upon construction
2015-07-11 22:50:35 +01:00
Umcaruje
6da3e14431 Add automation flip icons 2015-07-10 15:41:18 +02:00
Raine M. Ekman
87c15588a1 Merge pull request #2089 from softrabbit/faster_vocoder
Vocoder plugin: refactor for speed
2015-07-08 17:05:51 +03:00
Colin Wallace
468ccb49c1 Merge pull request #2166 from michaelgregorius/2164-volume-slider-broken
Fixes #2164
2015-07-06 13:38:43 -07:00
Colin Wallace
812444a5ac Merge pull request #2165 from zonkmachine/openRecentFix
Recent file menu fixes
2015-07-06 13:16:51 -07:00
Michael Gregorius
e3c645ec53 Fixes #2164
The master volume float was not updated when the master volume was
chamged using the mouse wheel. This commit fixes that problem.
2015-07-06 21:52:25 +02:00
Colin Wallace
3e8169de72 Merge pull request #2152 from Wallacoloo/MidiAlsaSeqFormatting
Fix bad tab-fomatting in MidiAlsaSeq.cpp
2015-07-06 11:09:47 -07:00
Oskar Wallgren
6888952fec recent files hide missing 2015-07-06 19:06:46 +02:00
Lukas W
f770164730 CMake: FindWine: Add aliases for finding winegcc 2015-07-06 17:40:10 +02:00
Colin Wallace
a91e7f72db Merge pull request #2160 from Wallacoloo/ConfigManagerFormattingFix
Fix formatting in ConfigManager.cpp
2015-07-04 22:56:39 -07:00
Colin Wallace
7b4946f79d Fix tabbing mistakes 2015-07-04 22:57:28 +00:00
Colin Wallace
ccc84494fd Merge pull request #2126 from Wallacoloo/MidiTimeRefactor
Refactor MidiTime implementation
2015-07-04 15:52:29 -07:00
Colin Wallace
ea7c96fa71 less repetitive setParameters logic 2015-07-04 01:33:33 +00:00
Colin Wallace
bc3e17eff8 default-initialize EqFilter parameters to 0 2015-07-04 01:29:04 +00:00
Colin Wallace
474b78cdf5 Fix bad tabbing 2015-07-03 04:19:35 +00:00
Colin Wallace
314623c157 fix race condition in TrackContainer::removeTrack 2015-07-03 03:48:49 +00:00
Colin Wallace
7eed8c63b4 fix atrocious formatting 2015-07-03 02:34:48 +00:00
Colin Wallace
d805302f06 Fix deadlock & use QWrite/ReadLockers instead of manually managing locks 2015-07-03 02:20:12 +00:00
Colin Wallace
122204e06b Merge pull request #2146 from michaelgregorius/2144-TrackNameInPianoRoll
Fixes #2144 ("Track name not shown in PianoRoll titlebar")
2015-07-01 20:23:08 -07:00
Michael Gregorius
a98534ac46 Fixes #2144 ("Track name not shown in PianoRoll titlebar")
Moves the code that sets the window title from
PianoRoll::setCurrentPattern to PianoRollWindow::setCurrentPattern which
is the widget that corresponds to the MDI window.
2015-07-01 23:39:51 +02:00
Colin Wallace
225f2c4551 Merge pull request #2142 from Wallacoloo/boopity-boppity
Map missing email to @tresf and 'support@lmms.io'
2015-06-30 08:15:42 -07:00
Colin Wallace
72253b31c8 map email address <ubuntu@ubuntu-1204.(none)> to @tresf & 'Locale Editor' to 'Anonymous' 2015-06-30 05:28:57 +00:00
Tres Finocchiaro
fea942e05d Merge pull request #2141 from midi-pascal/master
Add my second address to .mailmap
2015-06-29 23:01:46 -04:00
midi-pascal
6e4ac33661 Add my second address to .mailmap 2015-06-29 22:23:57 -04:00
Colin Wallace
ebcc837b99 Merge pull request #2127 from Wallacoloo/FxMixer_friends
Enforce tighter permissions in FxMixer
2015-06-29 18:46:51 -07:00
Colin Wallace
de7ad76de6 Merge pull request #2103 from Wallacoloo/git-2087b
Fix for #2087: Issues with saving projects in X11 when one subwindow is maximized
2015-06-29 18:37:56 -07:00
Umcaruje
c3e3271ea2 Merge pull request #2124 from Umcaruje/master-infiles
Update the man page and the windows installer info
2015-06-29 15:53:00 +02:00
Colin Wallace
16d782c1d9 Move MidiTime implementation into .cpp file 2015-06-28 19:25:24 +00:00
Michael Gregorius
5a8dce2650 Fixes most of stuff found in Wallacoloo's code review for #1600
Removal of a superfluous include in AudioAlsaSetupWidget.cpp

Removal of the function "bool hasCapabilities(char *device_name)" which
was not used anyway. It implemented a test for ALSA device capabilities
needed by LMMS (SND_PCM_ACCESS_RW_INTERLEAVED, SND_PCM_FORMAT_S16_LE,
etc.).

Corrected header name in AudioAlsaSetupWidget.h.

Created an implementation file for AudioDeviceSetupWidget to make more
clear that it's part of the GUI.

Fix build for builds that use Port Audio. The setup widget of
AudioPortAudio.h still inherited from AudioDevice::setupWidget instead
of the new AudioDeviceSetupWidget.
2015-06-28 00:24:23 +02:00
Michael Gregorius
37c4da81b5 Final version that lets the user select the ALSA device with a combo box
This version lets the user select the ALSA device to use with a combo
box. It does not check whether the device works for the parameters that
LMMS uses (SND_PCM_ACCESS_RW_INTERLEAVED, SND_PCM_FORMAT_S16_LE, etc.).
Doing these checks while compiling the list of available devices led to
strange effects which are likely caused by the fact that the PCM device
has to be opened to query its capabilities. This in turn led to error
messages a la "Resource or device busy" when testing the new
functionality repeatedly.

However, having a combo box to select devices from should be a good step
forward compared to a simple line edit. :)
2015-06-27 20:07:26 +02:00
Michael Gregorius
27653b713b Moves the probing code for available devices into the ALSA driver 2015-06-27 16:42:17 +02:00
Michael Gregorius
79cae31b5b Some refactoring to enable signals in audio driver setup dialogs
Moved AudioDevice::setupWidget into its own class AudioDeviceSetupWidget
which logically should belong to the GUI (unfortunately the include
structure does not make this obvious).

For the ALSA driver there is an implementation AudioAlsaSetupWidget
which provides a combo box for selection of the card and device.

All other driver widgets have been changed to inherit from
AudioAlsaSetupWidget but have not been changed otherwise.

SetupDialog has been adjusted to keep a map of AudioAlsaSetupWidgets
now.
2015-06-26 17:14:47 +02:00
Michael Gregorius
ad70c99d96 Populate and show a combo box of available ALSA cards and devices
Shows a combo box with the available ALSA cards and devices instead of a
line edit. The problem currently is that the widgets are nested classes
of AudioDevice and therefore the macro Q_OBJECT does not work which
means that its not possible to define slots that react to retrieved
signals.
2015-06-26 00:06:34 +02:00
Colin Wallace
d0c38960b8 Merge pull request #2133 from zonkmachine/knob-update
Update knob after changing response 'lin/log'
2015-06-24 19:32:41 -07:00
Oskar Wallgren
31e9ce2922 Update knob after changing response 'lin/log' 2015-06-25 00:09:08 +02:00
Colin Wallace
ce7c9a5b8c Merge pull request #2111 from Wallacoloo/git-2110
Fix wording inconsistency in View menu (~~Show/Hide~~ Controller Rack)
2015-06-22 19:11:08 -07:00
Umcaruje
dcde377fd4 Update the man page and the windows installer info 2015-06-22 15:43:40 +02:00
Colin Wallace
2e010141ad Remove FxMixer friendship privileges from FxMixerView and MixerWorkerThread 2015-06-22 03:01:49 +00:00
Colin Wallace
18e1d69cac Offload most Midi processing from Song into MidiTime class 2015-06-22 00:53:24 +00:00
Colin Wallace
8edfdc0543 Remove unused function 'isTempoAutomated()' 2015-06-22 00:17:17 +00:00
Colin Wallace
335b1c1c75 const-correctness for Song::getPlayPos() 2015-06-22 00:15:30 +00:00
Colin Wallace
546cb17e5f Simpler nextFullTact() algorithm 2015-06-21 22:55:14 +00:00
Lukas W
a6f74c2423 Readme: Remove section about latest release 2015-06-21 18:51:21 +02:00
Lukas W
31368699ec Merge pull request #2108 from LMMS/travis-qt5
Travis QT5
2015-06-21 16:22:27 +02:00
Lukas W
8b0b2df38e Fix compilation for Qt 5.0 2015-06-21 15:41:26 +02:00
Lukas W
baf883d808 Travis: Add Qt5 job 2015-06-21 14:15:42 +02:00
Colin Wallace
707c9cbb87 Put opening brace on its own line 2015-06-20 23:12:22 +00:00
Colin Wallace
9c392e918c Merge pull request #2119 from ThomasJClark/master
Check for valid pattern when focussing out pianoroll
2015-06-20 16:10:48 -07:00
Colin Wallace
dad4e8ef10 Merge pull request #2105 from Wallacoloo/doc_typos
Correct filenames within documentation strings
2015-06-20 15:28:55 -07:00
Thomas Clark
cdeba9c651 Check for valid pattern when focussing out pianoroll
This prevents a segmentation fault when closing an empty piano roll,
fixing issue #2050.
2015-06-19 21:21:38 -04:00
Lukas W
96a1d412dd Merge pull request #2116 from Wallacoloo/rm-legacy-friends
Removed legacy friend declarations
2015-06-18 10:00:26 +02:00
Colin Wallace
c112e50ddd Removed legacy friend declarations 2015-06-18 03:23:43 +00:00
Tres Finocchiaro
05d4b1398d Merge pull request #2006 from softrabbit/midi_import
Midi import: various small improvements
2015-06-17 15:48:27 -04:00
Colin Wallace
766c9d0cd5 Update outdated translation sources for View menu 2015-06-17 03:12:23 +00:00
Colin Wallace
67105307a4 Update source translations for changed View menu wording 2015-06-17 03:06:52 +00:00
Colin Wallace
71389bfc5a Fix wording consistency in View menu (~~Show/Hide~~ Controller Rack) 2015-06-17 02:54:25 +00:00
Lukas W
aaaa11c943 CMake: Add Qt5 include directories
Fixes #2107
2015-06-16 17:23:18 +02:00
Lukas W
4d4f0ed438 CMake proper version comparison 2015-06-16 16:55:38 +02:00
Lukas W
ca746e50f9 Merge pull request #2106 from Wallacoloo/remove-hasGUI
Replace 'Engine::hasGUI()' with 'gui != nullptr'
2015-06-16 14:26:08 +02:00
Colin Wallace
860d419c14 Replace 'Engine::hasGUI()' with 'gui != nullptr' 2015-06-16 05:40:05 +00:00
Colin Wallace
8a145b6baf Merge pull request #2097 from zonkmachine/mallets-spam
Stop mallet spamming the terminal
2015-06-15 17:00:06 -07:00
Colin Wallace
81164e91a9 Correct filenames within documentation strings 2015-06-15 23:52:13 +00:00
Colin Wallace
be564efb1e Add missing EXPORT directives for new SubWindow class 2015-06-15 23:41:08 +00:00
Lukas W
4f40583cfb Merge pull request #2102 from zonkmachine/organic-wave-lables
Fix Organic wave labels
2015-06-15 10:39:26 +02:00
Lukas W
61a9e9de02 Merge pull request #2104 from Wallacoloo/init_m_fb
Properly initialize InstrumentTrack::m_fb
2015-06-15 10:30:52 +02:00
Lukas W
44f8b24fb3 Merge branch 'stable-1.1'
# Conflicts:
#	include/PianoRoll.h
#	src/gui/editors/PianoRoll.cpp
2015-06-15 10:11:53 +02:00
Colin Wallace
eaf6ad35d8 Connect slots *after* initializing members 2015-06-15 06:48:04 +00:00
Colin Wallace
2616269b68 initialize m_fb to NULL 2015-06-15 06:33:41 +00:00
Colin Wallace
908591ba7d Have MainWindow and others make use of the new SubWindow class 2015-06-15 03:32:25 +00:00
Colin Wallace
7cc917cc06 Added SubWindow class to compensate for incorrect behavior of normalGeometry() method on X11 2015-06-15 03:29:59 +00:00
Lukas W
8b9868e0e5 Merge branch 'cmake_dist'
# Conflicts:
#	src/gui/FileBrowser.cpp
2015-06-14 21:38:12 +02:00
Oskar Wallgren
91aafceba5 Fix Organic wave labels 2015-06-14 09:23:39 +02:00
Dave
979fa2fb93 Merge pull request #2048 from Wallacoloo/issue-2015-4
Reorder Editor/Song destruction order to prevent bad memory accesses
2015-06-13 11:37:22 +01:00
Oskar Wallgren
5fabdfdb20 Stop mallet spamming the terminal 2015-06-13 00:55:27 +02:00
Dave
6c934d6aae Merge pull request #2096 from curlymorphic/i1660
Remove MessageBox warning of incomplete stk installation from mallets
2015-06-12 22:09:24 +01:00
Dave French
d6ff89af68 Remove MessageBox waring of incomplete stk instalation from mallets
The merge of stable 1.1 into master introduced the messagebox into the incorrect
place in the code. It is alrady present in the correct place in master,
 so simply removed the extra instance.

This stops the segfault and fixes #1660
2015-06-12 20:46:04 +01:00
Tres Finocchiaro
4142a55f5f Merge pull request #2095 from curlymorphic/i2094
No longer try to validate sf2 and gig files
2015-06-12 13:58:39 -04:00
Dave French
0c205ba504 Nolonger try to validate sf2 anf gig files
Removed trying to validate non lmms files when clicked in the file browser.
This had been the cause of erronus dialog box, and caused a bug, not allowing
drag and drop of sf2 files.

fixes #2094
2015-06-12 18:21:09 +01:00
Tres Finocchiaro
90dd8b2abb Merge pull request #2091 from softrabbit/issue1812
Don't save templates in "recently opened" list
2015-06-11 09:48:47 -04:00
Raine M. Ekman
d9193960fc Coding style fixup. 2015-06-11 10:27:09 +03:00
Raine M. Ekman
f896316de4 ConfigManager: Don't add templates to "recent files" list
Fixes #1812.
2015-06-11 10:19:48 +03:00
Tres Finocchiaro
ecbeaf788c Merge pull request #2065 from midi-pascal/master
Add and correct some French translation
2015-06-10 13:08:00 -04:00
Raine M. Ekman
222ce7ba23 Vocoder plugin: refactor for speed
Changing from arrays of structs to structs of arrays makes the
code a lot more optimizer-friendly, with possible speed gains of
2-3x when compiling for SSE systems.
2015-06-10 19:29:57 +03:00
midi-pascal
fa498caf5c Add and correct some French translation
The translation of the instrument plugins description does not work in Instruments pluginBrowser

Translation of the effect plugins description not showing in effects selector

Replace tabs with spaces in the fix indentation (as Tres request)

More French translations added

Remove the call to tr() inside the macro makeknob (DualFilterControlDialog.cpp) and tr() the strings before calling makeknob
Fix DualFilter description (was labeled as "A native amplifier plugin") (DualFilter.cpp)
Add French translation for the Dual filter knobs.

Move tr() out of macro's so lupdate find them for translation (extract litterals in "ts" file).
Full French translation of Monstro :-)

Make NES translatable (some tr() missing)
Remove tr() from macros (litterals not extracted by lupdate
Translate NES to French

Translate Watsyn Synth as others

Missing Q_OBJECT in DelayControlsDialog definition prevents its translation
Translate Delay plugin to French

Make EqControlsDialog translatable

Fix selected-note volume bug

Closes #2070

Fix a typo in French translation.

Add EqControlsDialog.h to the MOCFILES list in Eq CMakeLists.txt

Remove definition of slot updateVuMeters() in EqControlsDialog.h which is not implemented
2015-06-10 09:07:55 -04:00
Tres Finocchiaro
5265ec988f Merge pull request #2069 from BaraMGB/preset
Sets Focus to InstrumentTrackWindow
2015-06-02 13:43:44 -04:00
Lukas W
cc454b2b53 Fix pixmap discovery 2015-05-30 22:59:18 +02:00
Lukas W
422fbbc8d3 Merge branch 'master' into cmake_dist
# Conflicts:
#	include/ConfigManager.h
#	include/Engine.h
#	plugins/CMakeLists.txt
#	plugins/vst_base/CMakeLists.txt
#	plugins/vst_base/Win64/CMakeLists.txt
#	src/core/Engine.cpp
2015-05-30 22:59:06 +02:00
Tres Finocchiaro
f403299460 Fix selected-note volume bug
Closes #2070
2015-05-24 13:55:09 -04:00
Steffen Baranowsky
0e5c6aeaf8 Sets the Focus to the InstrumentTrackWindow if a preset or a sample droped to it. 2015-05-24 02:30:58 +02:00
Tres Finocchiaro
a644183a57 Merge pull request #2062 from midi-pascal/master
Issue #2061Sf2Player: Chorus tooltip assigned to reverb
2015-05-19 20:32:30 -04:00
pascal
46f72d97ce Issue #2061
Sf2Player: Chorus tooltip assigned to reverb
2015-05-19 19:26:58 -04:00
Raine M. Ekman
c4f4fe3657 MIDI import: i18n in default track names, control names for automation tracks 2015-05-18 21:54:21 +03:00
Colin Wallace
12f299bb9e Reorder Editor/Song destruction order to prevent bad memory accesses (issue #2015) 2015-05-12 18:56:58 +00:00
Raine M. Ekman
22b1e4fb4c Clarified the reason for qApp->processEvents(),
changed an odd type juggling into something slightly saner.
2015-05-05 22:21:33 +03:00
Raine M. Ekman
542250e127 MIDI import: set default pitch bend range to +/-2 semitones
AFAIK, this is how the General MIDI standard says it should be.
2015-05-05 12:25:13 +03:00
Raine M. Ekman
06d87174e4 MIDI import: call qApp->processEvents(); before creating tracks
This should keep LMMS responsive from the window managers POV, unless
the user selects a huge enough default sound font that loading it
takes too long.
2015-05-05 12:25:12 +03:00
Raine M. Ekman
61ab0ed093 MIDI import: add naming of AutomationTracks
Name the automation tracks like "[MIDI trackname] CC ##". And don't
call the automation track creation function for every CC event, as
it now will involve constructing a QString.
2015-05-05 12:25:12 +03:00
Raine M. Ekman
2a72d5f119 MIDI import: ensure minimum note length 1 tick
Too short notes had their duration rounded down to 0 on import,
as MIDI precision allows way shorter notes than LMMS, and
portsmf reports the duration as a double, where a beat == 1.0.

Was going to use ceil() first, but that might round some notes
up to a slightly longer duration.
2015-05-05 12:25:12 +03:00
Raine M. Ekman
ff44854cde MIDI import: don't call AutomationPattern::addObject all the time
Should be enough to add the object to the automation pattern only once,
as the objModel variable that is added will always be the same for the
same value of ccid, which indexes the ccs array.

This will speed up creation of automation tracks for MIDI CCs and pitch
bend.
2015-05-05 12:25:12 +03:00
Tres Finocchiaro
2f969c1e1c Merge pull request #2033 from michaelgregorius/2028-slow_midi_import
Solves issue #2028 (Slow MIDI import due to repeated message)
2015-05-05 00:31:08 -04:00
Michael Gregorius
cbf4e59691 Yet another tab correction
The wrong settings concerning tabs in QtCreator lead to bad display of
the code in other editors.
2015-05-04 19:37:54 +02:00
Michael Gregorius
3e72793465 Fixes the wrong tab spacing for #2028 2015-05-03 22:19:42 +02:00
Michael Gregorius
53f5ef1980 Solves issue #2028 (Slow MIDI import due to repeated message)
AutomationPattern::addObject now returns a boolean which indicates
whether the object was added or not. This change enables the removal of
the error message that is shown in the case that a model is already
connected from AutomationPattern::addObject. Instead all interactive
callers now check for the return value and show the message in case it
is needed.

This change set improves the import of MIDI files significantly. These
have been slowed down quite a lot due to the message being shown
repeatedly during the MIDI import.
2015-05-03 19:22:47 +02:00
Tres Finocchiaro
9f95c041b6 Merge pull request #1987 from Wallacoloo/instrument-nav-btns
Add instrument switcher buttons to InstrumentTrackWindow
2015-05-02 00:29:56 -04:00
Colin Wallace
26fc16b78b Implementation of next & previous instrument buttons in InstrumentTrackWindow 2015-05-02 02:09:57 +00:00
Tres Finocchiaro
388dfbc38c Merge pull request #2027 from BaraMGB/#1866
Add a focusOutEvent to PianoRoll as fix for Issue #1866
2015-04-30 10:26:19 -04:00
Steffen Baranowsky
aaed66eceb Add a focusOutEvent to PianoRoll as fix for Issue #1866 2015-04-29 14:11:37 +02:00
Tres Finocchiaro
9888cb9069 Merge pull request #2024 from Wallacoloo/browser-ctrl-f
Add ctrl+f shortcut to FileBrowser & default focus to filter widget when opened
2015-04-29 00:01:12 -04:00
Colin Wallace
c8a0d51a43 revert changes that caused FileBrowsers to steal focus when opened 2015-04-29 02:06:44 +00:00
Colin Wallace
fe3ca6aa76 Use QKeySequence::Find in place of Ctrl+F 2015-04-29 01:53:34 +00:00
Colin Wallace
616de244cc add ctrl+f shortcut to FileBrowser & default focus to filter widget when opened 2015-04-28 07:08:35 +00:00
Tres Finocchiaro
c35cfd2672 Merge pull request #2022 from Wallacoloo/os-shortcuts
Use OS-default shortcuts where applicable
2015-04-28 04:50:07 +00:00
Colin Wallace
9b6aaf058e Use OS-default shortcuts where applicable, but ensure both ctrl+y and ctrl+shift+z activate redo 2015-04-28 04:11:00 +00:00
Tres Finocchiaro
c9c26b1c69 Merge pull request #1975 from curlymorphic/delaywhine
Delay and Flanger, removed noise from delay when automating length
2015-04-27 19:20:10 +00:00
Tres Finocchiaro
6428c7a9c8 Merge pull request #1915 from Wallacoloo/master
Provide status messages on splash screen when loading (#1696)
2015-04-27 18:40:36 +00:00
Tres Finocchiaro
df9a1537b3 Merge pull request #2009 from Wallacoloo/undo-redo-greyout
Grey out edit->undo/redo actions if there's nothing left to undo/redo
2015-04-27 18:17:42 +00:00
Tres Finocchiaro
6c615dbcd4 Merge pull request #2021 from tresf/master
Minor formatting fixes in ConfigManager
2015-04-27 17:35:49 +00:00
Tres Finocchiaro
3eafcd0a58 Merge pull request #2020 from tresf/master
Remove Win32 GetSpecialFolderPath ; fix windows builds
2015-04-27 16:45:13 +00:00
Tres Finocchiaro
bdf7cce0d6 Merge pull request #2018 from softrabbit/denormal_refactor
Denormal protection refactoring
2015-04-27 12:54:47 +00:00
Tres Finocchiaro
a618f59418 Merge pull request #2017 from Wallacoloo/rm-song-playtrack
Remove unused code in Song.cpp
2015-04-27 12:46:50 +00:00
Raine M. Ekman
cb89750915 ...and add the new denormals.h file too. 2015-04-27 13:04:26 +03:00
Raine M. Ekman
dc67449175 Move the denormal protection routine to one place instead of 3 2015-04-27 13:02:07 +03:00
Colin Wallace
57cdfe1b66 Remove unused Mode_PlayTrack and m_trackToPlay 2015-04-27 06:33:22 +00:00
Colin Wallace
d9c2be73fa Remove unused function Song::playTrack 2015-04-27 06:24:47 +00:00
Tres Finocchiaro
b6643f83d4 Merge pull request #2010 from Wallacoloo/issue-1905
Fix behavior of shift+dragging note ends
2015-04-27 00:26:03 +00:00
Vesa
61c29ada2a fix merge oops 2015-04-26 17:07:27 +03:00
Vesa
d4ab23efef Merge branch 'stable-1.1'
Conflicts:
	.travis.yml
	CMakeLists.txt
	plugins/stk/mallets/mallets.cpp
	plugins/vst_base/CMakeLists.txt
2015-04-26 16:59:01 +03:00
Tres Finocchiaro
bbbe27d874 Merge pull request #2008 from Wallacoloo/recently-opened-project-typo
Fix plurality of 'recently opened project'
2015-04-26 12:37:49 +00:00
Colin Wallace
fd8123488a fix behavior of shift+dragging note ends (issue #1905) 2015-04-26 03:58:12 +00:00
Colin Wallace
035f48fb1d Grey out edit->undo/redo actions if there's nothing left to undo/redo 2015-04-25 22:15:12 +00:00
Colin Wallace
960c05bb32 Fix plurality of 'recently opened project' 2015-04-25 03:18:38 +00:00
Tres Finocchiaro
478bbbd4d0 Merge pull request #1984 from michaelgregorius/1981-midicrash
Might fix 1981 ("Midi Import crash in master branch")
2015-04-24 18:49:26 +00:00
Tres Finocchiaro
c57ba1b22c Merge pull request #1998 from tresf/master
Load file names with utf chars
2015-04-24 12:56:24 +00:00
Tres Finocchiaro
3189354760 Merge pull request #1928 from curlymorphic/1927
Model::isValueChanged correctly returns if sample exactness is used.
2015-04-24 12:55:43 +00:00
Tres Finocchiaro
48291a871e Minor formatting fixes ConfigManager dialog.
- Changed format to match that of surrounding code
 - Removed unecessary QDir() usage
 - Re-introduce `fromLocal8Bit`
2015-04-21 19:31:34 -04:00
Tres Finocchiaro
b19a9dc903 Remove Win32 SHGetKnownFolderPath; fix windows builds
Due to an upstream bug, mingw has issues building with shlobj.h.  This work-around fixes #1952 by falling back to a `getenv()` approach.
2015-04-21 18:09:50 -04:00
Tres Finocchiaro
13f7065b46 Load all file names with utf chars
Fixes #1995
2015-04-21 16:40:58 -04:00
Tres Finocchiaro
e96dff375b Merge pull request #1999 from Wallacoloo/muted-text
Display the 'muted' attribute as "mute" to match the wording of "solo"
2015-04-21 20:22:46 +00:00
Colin Wallace
85b6a92460 Display the 'muted' attribute as "mute" to match the wording of "solo" 2015-04-21 19:12:29 +00:00
Michael Gregorius
2d909462b6 Improved debugging output for unhandled MIDI data
Print as much debug info as possible for unhandled data.
2015-04-20 19:52:44 +02:00
Tres Finocchiaro
35b357f3ce Merge pull request #1988 from Wallacoloo/iph-unused-var
Remove unused m_instrumentTrack variable
2015-04-20 14:40:40 +00:00
Tres Finocchiaro
6e68eca6f8 Merge pull request #1704 from badosu/fix-cloned-track-position
Fix cloned track position
2015-04-20 14:30:09 +00:00
Tres Finocchiaro
f869b35217 Merge pull request #1985 from michaelgregorius/EffectSelectDialog
Show native plugin info in the effect selection dialog
2015-04-20 14:23:33 +00:00
Tres Finocchiaro
fa2cd22e5b Merge pull request #1980 from Wallacoloo/mixer-insert
Add <Insert> keyboard shortcut to create a new FX channel
2015-04-20 04:46:58 +00:00
Tres Finocchiaro
ad9fe1e27a Merge pull request #1989 from Wallacoloo/lfo-controller-dialog-cleanup
Remove unused var CF_LFO_GRAPH_X and outdated commented-out code
2015-04-20 04:43:22 +00:00
Tres Finocchiaro
3910629fc5 Merge pull request #1990 from Wallacoloo/track-unused-vars
remove unused vars: TRACK_OP_BTN_(WIDTH|HEIGHT)
2015-04-20 04:42:00 +00:00
Colin Wallace
954a61f0fc Remove unused var CF_LFO_GRAPH_X and outdated commented-out code 2015-04-20 03:47:49 +00:00
Colin Wallace
f12fa52a69 remove unused vars: TRACK_OP_BTN_(WIDTH|HEIGHT) 2015-04-20 03:37:55 +00:00
Colin Wallace
92d8950fd3 Remove unused m_instrumentTrack variable 2015-04-20 03:17:11 +00:00
Colin Wallace
75dd6fa3e7 Change new mixer channel shortcut to shift+insert 2015-04-20 03:06:41 +00:00
Tres Finocchiaro
8849c11b0a Merge pull request #1979 from curlymorphic/remotecc
ZynSubAddFx routed all MIDI cc messages to channel 0
2015-04-20 01:39:55 +00:00
Michael Gregorius
70b063ba05 Show native plugin info in the effect selection dialog
The effect selection dialog now also shows the information for the native
plugins. This included name, description, author as well as the plugin
icon.

Also removed the group box with the title "Plugin description" because
it should be rather obvious to the user that further information about
the plugin is shown. This removes some clutter from the dialog.
2015-04-19 22:02:13 +02:00
Michael Gregorius
19d641f6b4 Might fix 1981 ("Midi Import crash in master branch")
This commit adds checks for conditions that are asserted during calls to
get_atom_value.

It might fix a crash that is described in 1981. Unfortunately no files
have been attached to that issue. However, I was able to crash LMMS
using a local file and this crash is gone with this fix. So hopefully this
change also fixes the crashes described in 1981.
2015-04-19 17:11:03 +02:00
Tres Finocchiaro
d61075972d Merge pull request #1978 from Wallacoloo/pianorollfocus
Give focus to the PianoRoll widget when its window is opened
2015-04-19 15:06:27 +00:00
Colin Wallace
d146e6fb4a Add <Insert> keyboard shortcut to create a new FX channel 2015-04-18 22:22:35 +00:00
Dave French
2ac6d5df7a ZynSubAddFx routed all MIDI cc messages to channel 0
Lmms routes all midi notes to ZSAF on channel 0, however the CC messages
not routed, and could erronusoly be sent on other channels. This would
lead to ZSAF not acting on these midi commands

This pull request routes All Midi CC messages to channel 0

fixes #1953
2015-04-18 22:46:58 +01:00
Tres Finocchiaro
f9e37f779a Merge pull request #1976 from Wallacoloo/sfxrtypo
Fix 'Squre' typo in sfxr plugin
2015-04-18 21:34:36 +00:00
Colin Wallace
a27bf57d48 Fix typo in initialization progress message 2015-04-18 21:20:22 +00:00
Colin Wallace
382aec66f3 Give focus to the PianoRoll widget when its window is opened 2015-04-18 21:10:10 +00:00
Colin Wallace
eae30ce81f Fix 'Squre' typo in sfxr plugin 2015-04-18 20:17:20 +00:00
Dave French
68edb91fc6 Delay and Flanger updated formatting error 2015-04-18 18:53:11 +01:00
Dave French
4f76241e68 Delay and Flanger, removed noise from delay when automating length
The original delay code, was setting it read index relative to the length
of the delay. This fixes that, now when the length is changed the read
index stays in the correct place in the buffer.
2015-04-18 18:40:41 +01:00
Tres Finocchiaro
435a15d8bf Merge pull request #1938 from softrabbit/view_menu_note_names
View menu: added toggle for piano roll note labels
2015-04-17 21:27:39 +00:00
Tres Finocchiaro
a8da58ec21 Merge pull request #1884 from M374LX/songcomments
Song::processNextBuffer() - add more comments and rename variables
2015-04-17 19:48:32 +00:00
Tres Finocchiaro
ec2368fc5e Merge pull request #1678 from badosu/fix-moving-channels-segfault
Fix segfault when moving channels
2015-04-17 19:41:49 +00:00
Tres Finocchiaro
7c523e6325 Merge pull request #1874 from M374LX/pianoroll-refactor
PianoRoll::mouseReleaseEvent() refactoring
2015-04-17 19:03:49 +00:00
Tres Finocchiaro
6b9851261d Merge pull request #1970 from falkTX/master
Implement NATIVE_HOST_OPCODE_HOST_IDLE in carla plugin
2015-04-17 19:02:23 +00:00
falkTX
64b138b7ad Implement NATIVE_HOST_OPCODE_HOST_IDLE in carla plugin 2015-04-17 20:59:46 +02:00
Tres Finocchiaro
49dccf5a69 Merge pull request #1963 from Wallacoloo/pianorolldeselect
Add ctrl+shift+a to deselect all notes in piano roll (#1488)
2015-04-16 02:49:51 +00:00
Colin Wallace
7e1e506109 Add ctrl+shift+a to deselect all notes in piano roll (#1488) 2015-04-15 23:18:57 +00:00
Tres Finocchiaro
bf8eeaa9f8 Merge pull request #1933 from softrabbit/issue1325
StringPairDrag: encode data as UTF-8 instead of Latin-1.
2015-04-15 13:09:21 +00:00
Tres Finocchiaro
c270c7b701 Merge pull request #1957 from curlymorphic/1822
rebase of pr 1822 build fixes for freebsd
2015-04-15 04:52:54 +00:00
Dave French
e4a4dfd036 rebase of pr 1822 build fixes for freebsd
simply copied and pasted the changes from pr#1822
2015-04-14 20:00:55 +01:00
Tres Finocchiaro
d516c74b73 Merge pull request #1908 from curlymorphic/pathDialog
Re organizing of the user LMMS directory
2015-04-13 21:21:05 +00:00
Tres Finocchiaro
df0e6d6e9d Merge pull request #1897 from geedubess/bugfix_1888
LADSPA Multiband EQ (mbeq_1197) bugfix #1885
2015-04-13 20:33:57 +00:00
Tres Finocchiaro
d05c063b0c Merge pull request #1906 from softrabbit/midi_import_track_names
MIDI import: add support for track names
2015-04-13 20:26:47 +00:00
Tres Finocchiaro
5f8fb2262e Merge pull request #1902 from softrabbit/move_addplayhandles
Sf2player, OpulenZ: addPlayHandle moved to end of constructor.
2015-04-13 20:14:53 +00:00
Tres Finocchiaro
8db0700140 Merge pull request #1951 from tonychee7000/master
Update Chinese translation
2015-04-13 13:13:41 +00:00
TonyChyi
e6fc85230c Update Chinese translation 2015-04-13 10:47:57 +08:00
Lukas W
aae17dcf12 Merge pull request #1943 from curlymorphic/eqBandOn
EQ, Turn on all the bands by default.
2015-04-12 22:29:41 +02:00
Tres Finocchiaro
50a3b8dfee Merge pull request #1944 from Wallacoloo/knob-fix2
Properly initialize Knob lineWidth
2015-04-11 01:00:21 +00:00
Colin Wallace
3c76c4975b Properly initialize Knob lineWidth 2015-04-10 23:29:18 +00:00
Dave French
009a71484a EQ, Turn on all the bands by default. 2015-04-10 11:26:41 +01:00
Tres Finocchiaro
17e096b965 Merge pull request #1941 from curlymorphic/1939
AFP update parameters of wave display when loading sample
2015-04-09 02:12:11 +00:00
Dave French
bd5dfddfd4 AFP renamed updateFromTo() to updateSampleRange() 2015-04-09 02:13:31 +01:00
Dave French
43865ad283 AFP update parameters of wave display when loading sample
This is changing from opening a new wave display with each sample.
This fixes an issue where the play position cursor was not being drawn.
2015-04-09 00:00:09 +01:00
Raine M. Ekman
c56ebb2e48 View menu: Removed unnecessary ternary operators 2015-04-08 12:16:45 +03:00
Raine M. Ekman
d87a39d432 View menu: added toggle for piano roll note labels 2015-04-07 21:52:56 +03:00
Tres Finocchiaro
d5300aca70 Merge pull request #1934 from curlymorphic/1925
Removed Duplicate Entries in the File Browser
2015-04-07 16:11:10 +00:00
Dave French
ef1ab88342 Removed Duplicate Entries in the File Browser
4206705ed2 #1611 Improve search field ,
was incorrectly adding the files twice.

this rectifies my mistake.
2015-04-07 06:44:15 +01:00
Raine M. Ekman
c3687199ea StringPairDrag: encode data as UTF-8 instead of Latin-1.
Encoding Unicode data, like QStrings, as Latin-1 loses information.
UTF-8 is a better fit.
2015-04-06 21:44:57 +03:00
Dave French
589cd4fb59 Model::isValueChanged correctly returns if sample exactness is used.
The introduction of sample exactness introduced a bug, if The value was
changed using sample exactness Model::isValueChanged was incorectly returning
false.

This bug has shown its self in the BassBooster plugin.
2015-04-05 13:42:09 +01:00
Tres Finocchiaro
c87481ac81 Merge pull request #1922 from curlymorphic/1919
DualFilter corrected a bug introduced with sample exactness
2015-04-05 01:42:50 +00:00
Dave French
dca340e5e5 DualFilter corrected a bug introduced with sample exactness
fixed a bug where res1 was controled by res2
2015-04-05 02:19:05 +01:00
Colin Wallace
44c42d9d38 Provide status messages on splash screen when loading (#1696) 2015-04-02 08:23:14 +00:00
Tres Finocchiaro
77c6f5a2bf Merge pull request #1910 from Wallacoloo/master
Fix for #1907 - inconsistent clamping behavior in automation editor
2015-04-01 13:51:16 +00:00
Colin Wallace
6e8e696d3e Fix for #1907 - inconsistent clamping behavior in automation editor 2015-03-30 22:12:48 +00:00
Dave French
54ddfd3a2b Config manager. added a userVstDir function
Added a userVstDir function for consistancy
use the userVstDir() function to create new folder
2015-03-30 18:59:54 +01:00
falkTX
66086820ce Implement NATIVE_HOST_OPCODE_HOST_IDLE in carla plugin 2015-03-29 23:29:41 -04:00
Tres Finocchiaro
d5d0c53e5d Merge pull request #1887 from softrabbit/issue-1877-stable
SFXR: Avoid NaNs by making envelope length minimum 1 sample
2015-04-13 20:53:28 +00:00
Raine M. Ekman
4d1e8633e1 MIDI import: remove old non-functional track name code. 2015-03-29 17:26:02 +03:00
Raine M. Ekman
c1ad8d0ae2 MIDI import: add support for track names 2015-03-29 17:16:35 +03:00
Dave French
9516b7cf0e Added user Vst and ladspa folders
the user vst folder nowbecome the default vstfolder. this is configurable
in the setup dialog.

The user ladspa folder is added to the list of folder to search
2015-03-27 15:19:57 +00:00
Tres Finocchiaro
c1a2fde2ef Merge pull request #1791 from curlymorphic/i1702
Extend the creation of default lmms folder, and default template.
2015-03-27 14:27:48 +00:00
Dave French
345e05831d Change the location of the default template directory
Changed the location from lmms/projects/templates to
lmms/templates. This new location is used for loading and saving
of the default tempate default.mpt
2015-03-27 13:45:43 +00:00
Dave French
7335b98fdb Create User project template folder and default project template.
During the creation of the user directories, added the creation of
the projects/templates directory.

When creating a new song, if there is no default template create one.
2015-03-27 13:28:47 +00:00
Dave French
d9995f5548 Add default path for SF2
added a default path for sf
create folder
add folder to setup dialog
sf player now uses this location
2015-03-27 12:45:40 +00:00
Dave French
e9b15b51fb Path Dialog added icon artwork, minor ui tweek
added add_folder.png icon to use for adding addition folders.
this may need attention by others

changed layout to correctly display scroll bar
2015-03-27 12:45:40 +00:00
Dave French
2271af81c4 Added a Gig directory to user lmms folder
Added option to set gig folder in setup dialog
Gig player now opens at this location
2015-03-27 12:45:40 +00:00
Dave French
8dfa2cf7d0 Reorganised the paths dialog
Wrapped the path selection widgets in a Scroll Area, to allow for
the addition of addition paths.

Where multipue paths are allowed the icon has been changed to refect this.

Reordered the list.
2015-03-27 12:45:40 +00:00
Raine M. Ekman
4136dbb744 SF2 Player, OpulenZ: addPlayHandle moved to end of constructor.
Should mean smaller risk of race conditions and less need for mutexes.
2015-03-25 21:16:55 +02:00
Greg Simpson
6db4c9007e LADSPA Multiband EQ (mbeq_1197) bugfix #1885
Corrected Hann (raised cosine) window function.

Corrected output-windowing logic and recalculated correction factor
for window type. Tested against white noise & triple_osc output.
2015-03-23 17:44:55 -07:00
Lukas W
e0f077ba02 Merge branch 'master' into cmake_dist
# Conflicts:
#	include/Plugin.h
#	src/core/Plugin.cpp
2015-03-21 11:53:00 +01:00
Raine M. Ekman
0462be7afc SFXR: Removed conditional, moved ensuring env_length!=0 to initial calculation 2015-03-21 12:05:06 +02:00
Raine M. Ekman
898781484d SFXR: Avoid NaNs by making envelope length minimum 1 sample
(this time in the stable-1.1 branch)
2015-03-19 21:03:40 +02:00
Vesa V
de9f879dde Merge pull request #1804 from badosu/multiple-volume-changes
Change behaviour for changing volume/pan on Piano
2015-03-19 19:12:28 +02:00
Vesa V
b3b157d54c Merge pull request #1799 from curlymorphic/saControls
Updated the equalizer plugin to use sample exact controls
2015-03-19 19:11:00 +02:00
Vesa V
9b8a0b6322 Merge pull request #1861 from softrabbit/view_menu
Added toggle for smooth scrolling in song editor to view menu
2015-03-19 19:10:31 +02:00
Vesa V
fe77fa47b5 Merge pull request #1802 from curlymorphic/saBassBoost
Enable sample exact controls for BassBoost plugin
2015-03-19 19:09:52 +02:00
Tres Finocchiaro
5018199b57 Merge pull request #1886 from curlymorphic/1880
FileBrowser, revert to not loading xiz files into DataFile
2015-03-19 13:54:48 +00:00
Dave French
e00241ff5d FileBrowser, revert to not loading xiz files into DataFile
xiz files are again, correctly not passed into a DataFile. DataFile is for
LMMS xml files.
2015-03-19 13:03:03 +00:00
Alexandre Almeida
bf13859601 Remove unused variable 2015-03-18 22:57:27 -03:00
M374LX
d308a72f29 Song::processNextBuffer() - add more comments and rename variables with confusing names 2015-03-18 22:02:21 -03:00
Dave French
0f864682ff Equalizer refactored EqFilter to remove tick()
removed the tick() function, and replaced the invoking code with
direct calls to update().

fixed a bug, where the low shelf bandwidth was getting the incorrect data.
2015-03-16 15:52:33 +00:00
Dave French
c747c7a9ee BassBoost, seperated sample exact and regular process loops
This was done to increase performance when sample exactness
is not in use. This was a consern becasue of the 2 extra function
calls each frame introduced with SA.
2015-03-16 06:57:12 +00:00
M374LX
0a4e0a5d83 PianoRoll::mouseReleaseEvent() refactoring 2015-03-14 00:13:17 -03:00
Tres Finocchiaro
043a565919 Merge pull request #1870 from M374LX/templatemsg
Use the word "template" instead of "project" when appropriate
2015-03-13 12:42:26 +00:00
Vesa V
df66fdeab0 Merge pull request #1871 from M374LX/settings
Fix segfault
2015-03-13 13:26:40 +02:00
Vesa V
c01e4ca4a2 Merge pull request #1787 from curlymorphic/xydelay
smoothed the time parameter of the delay pluging
2015-03-13 13:25:53 +02:00
Vesa V
da66205f71 Merge pull request #1800 from curlymorphic/saDualFilter
Enabled the use of sample exact controls in Dual Filter
2015-03-13 07:38:06 +02:00
M374LX
693ffb586f Fix segfault 2015-03-13 00:12:51 -03:00
M374LX
9a8700cfae Use the word "template" instead of "project" when appropriate 2015-03-12 23:11:21 -03:00
Tres Finocchiaro
c155a5ec4d Merge pull request #1864 from softrabbit/24semitones2octaves
Triple Oscillator: crude translations for the CRS knob
2015-03-12 13:37:25 +00:00
Tres Finocchiaro
7676878c19 Merge pull request #1844 from curlymorphic/i457
Added option to duplicate first bar, in BBEditor
2015-03-12 05:17:08 +00:00
Tres Finocchiaro
c470bda019 Merge pull request #1863 from M374LX/pianorollmove
Fix song editor pattern view update bug
2015-03-12 05:09:26 +00:00
M374LX
da9e88e488 Fix song editor pattern update bug 2015-03-11 22:01:18 -03:00
Dave French
ca414dab10 Added option to duplicate first bar, in BBEditor
Added a new button to the action bar, using step_btn_duplicate.png

The new button, aswell as adding a bar to the patten, then
copies the first bar to the last.

fixes #457

BBEditor Duplicate Pattern. updated image, changed function name

Have updated the new image step_button_duplicate.png

Renamed the function from duplicateFirstBarAtEnd to duplicateSteps.

BBEditor renamed function duplicateSteps

renamed duplicateSteps() to cloneSteps() as requested

BBEditor rechange duplicateSteps to cloneSteps

BB Editor changed actionBtn text from duplicate to clone
2015-03-11 21:50:44 +00:00
Raine M. Ekman
881f008896 Crude translations for the CRS knob in Triple Oscillator. 2015-03-11 22:03:12 +02:00
Tres Finocchiaro
0c8307f963 Merge pull request #1859 from softrabbit/issue-878
Language update
2015-03-11 14:28:27 +00:00
Raine M. Ekman
07a099a0db Language update 2015-03-11 15:42:43 +02:00
Tres Finocchiaro
85d91a1159 Merge pull request #1858 from softrabbit/issue-878
Tripleoscillator: Change "what's this" text for CRS knob
2015-03-11 12:32:11 +00:00
Tres Finocchiaro
64328410bb Merge pull request #1855 from M374LX/pianorollmove
Fix piano roll select and move issue
2015-03-11 11:10:59 +00:00
Raine M. Ekman
a4ab8c1cda Tripleoscillator: Change "what's this" text for CRS knob to be in line with reality. 2015-03-11 10:11:57 +02:00
M374LX
733388a8ff Fix piano roll select and move issue 2015-03-10 22:45:54 -03:00
Tres Finocchiaro
19197d3481 Merge pull request #1851 from M374LX/settings
Fix issue #1848
2015-03-10 20:06:14 +00:00
Raine M. Ekman
bcd44ded5b Added smooth scrolling to view menu 2015-03-10 20:53:29 +02:00
Tres Finocchiaro
06e1415bbd Merge pull request #1852 from csimons/do-not-halt-playback-upon-open-dialog
Prevent playback from halting when 'Open Project' dialog is summoned.
2015-03-10 12:56:58 +00:00
Christopher L. Simons
95c7d72a90 Added 'bool stopPlayback' parameter to MainWindow::mayChangeProject() to preserve old behavior outside of 'Open project dialog' case; fixes #1384 2015-03-10 07:41:13 -04:00
Christopher L. Simons
393eacad7d Ensuring playback is halted once file selection is confirmed in 'Open project' dialog; fixes #1384 2015-03-10 07:05:10 -04:00
Christopher L. Simons
3f8cfbd7a8 No longer halting playback when 'Open project' dialog is summoned; fixes #1384 2015-03-10 06:47:05 -04:00
Alexandre
b3f60dde95 Update SetupDialog.cpp 2015-03-10 00:51:28 -03:00
Tres Finocchiaro
b2984e1f08 Merge pull request #1832 from M374LX/settings
Fix issue #1814
2015-03-10 00:26:57 +00:00
Tres Finocchiaro
559d0e9bcc Merge pull request #1846 from curlymorphic/i1052
Fixed bug where cross hairs were incorrectly draw in Automation Editor
2015-03-10 00:25:59 +00:00
Alexandre
42e2c8ff7e Fix issue of reverting settings
Fix issue of reverting settings

Delete file created accidentally

Delete SetupDialog.cpp
2015-03-09 19:52:27 -03:00
Dave French
51fa26ecb1 Fixed bug where cross hairs were incrorrectly draw in Automation Editor
The cross hairs in the automation editor were incorrectly drawn
when moving another window infront.
This change only draws the cross hairs when the window has focus.
2015-03-09 22:43:44 +00:00
Tres Finocchiaro
c5402075bc Merge pull request #1838 from curlymorphic/xmlChecker
Xml checker
2015-03-08 17:34:13 +00:00
Dave French
8e244a2e77 Corrected fileName typo 2015-03-08 17:17:21 +00:00
Dave French
8c7cdf359e Merge branch 'xmlChecker' of https://github.com/curlymorphic/lmms into xmlChecker 2015-03-08 16:44:21 +00:00
Dave French
f310a4066f Commented DataFile::validate in headder 2015-03-08 16:43:28 +00:00
Dave French
335711aac7 xml validation, removed redundant boxing, unknown files fail validation, caught a inverse logic error 2015-03-08 16:43:28 +00:00
Dave French
318260a7e2 Validates Xml files opened with the main menu 2015-03-08 16:43:28 +00:00
Dave French
ad9dfd853d Begginings of XML validation 2015-03-08 16:43:28 +00:00
Dave French
7037faedd3 Added Checking of filetypes from the xml. Added a static function fileTypeFromData to the DataFile class. This opens the given file and checks the xml for its file type, as oposed to relying on the file extension 2015-03-08 16:43:28 +00:00
Dave French
3829990e00 Commented DataFile::validate in headder 2015-03-08 14:48:23 +00:00
Vesa V
bf38b15d63 Merge pull request #1803 from curlymorphic/saWaveShaper
Enable sample exact controls for WaveShaper plugin
2015-03-08 10:55:57 +02:00
Vesa V
67199970a5 Merge pull request #1809 from curlymorphic/dataChanged
Added sample exactness to the Lfo controller controls
2015-03-08 10:55:05 +02:00
Tres Finocchiaro
d14f4511b2 Remove compiler optimizations for mingw, bump version
Fixes #1757
2015-03-07 21:47:14 -05:00
Dave French
de74760586 xml validation, removed redundant boxing, unknown files fail validation, caught a inverse logic error 2015-03-07 15:25:15 +00:00
Amadeus Folego
33893e51c4 Move cloned tracks under the original 2015-03-07 12:00:20 -03:00
Amadeus Folego
8e9d902fa0 Refactor moving track views up and down 2015-03-07 11:58:30 -03:00
Amadeus Folego
6e3d4f431d Change behaviour for changing volume/pan on Piano
All the selected notes are changed by default for the 3 possible events:

- Mouse dragging the volume/pan meter
- Rolling the mouse wheel over the meter
- Double-clicking the meter

The user can still change each note individually by holding alt before
performing the desired action
2015-03-07 11:55:36 -03:00
Tres Finocchiaro
07e422c66d Merge pull request #1827 from waddlesplash/master
General platform-logic refactoring & Haiku support.
2015-03-07 14:49:47 +00:00
Augustin Cavalier
14ba57a531 versioninfo: add Haiku. 2015-03-05 13:56:44 -05:00
Augustin Cavalier
582c9ee678 Refactor shared memory logic. 2015-03-05 13:56:37 -05:00
Augustin Cavalier
d6a5544233 lb302: remove unused MIN function. 2015-03-05 13:55:40 -05:00
Augustin Cavalier
9b0c602b65 LadspaEffect: use same cflags as Linux on Haiku. 2015-03-05 12:53:52 -05:00
Augustin Cavalier
946d8a1431 lmms_math: also enable workarounds on Haiku. 2015-03-05 12:41:59 -05:00
Augustin Cavalier
48ac1b02eb DetectMachine: de-convolute 'if' maze and add Haiku. 2015-03-05 12:39:35 -05:00
Augustin Cavalier
d8dce9605e zynaddsubfx: just don't build if FLTK is not found rather than hard-failing. 2015-03-05 12:34:21 -05:00
Tres Finocchiaro
ce282a4841 Merge pull request #1622 from M374LX/coding
Progressive coding conventions update (new branch)
2015-03-04 01:55:28 +00:00
Dave French
d15a1136de Added sample exactness to the Lfo controller controls
Added sample exactness to the amount control.
2015-03-02 22:28:18 +00:00
Tres Finocchiaro
e5d51d13e4 Merge pull request #1805 from Spekular/toolbars
Remove unused toolbar gradient images.
2015-03-02 16:55:26 +00:00
Spekular
2acfa0eeca Remove unused toolbar gradient images. 2015-03-02 08:15:08 +01:00
Alexandre Almeida
91ebba65f7 Adjust parentheses conventions 2015-03-01 23:15:55 -03:00
Alexandre Almeida
ecb4c636c8 Adjust parentheses conventions 2015-03-01 23:12:35 -03:00
Dave French
be6f25b7a1 Enable sample exact controls for WaveShaper plugin
Enabled sample exactness for the input and output control.
2015-03-01 22:54:06 +00:00
Dave French
1cb7336189 Enable sample exact controls for BassBoost plugin
Enabled the use of sample exactness on gain control.

After checking the m_bbfx_leftFX.getGain() function, It was found
that this functiomn only sets a member variable, and causes no other
over head, so decided that checking if the value had changed would take more
clock cycles, than the check to see if the value had changhed.
2015-03-01 20:33:04 +00:00
Alexandre
0a3ff51c7e Merge branch 'coding' of https://github.com/M374LX/lmms into coding
Conflicts:
	src/core/Track.cpp
2015-03-01 13:39:50 -03:00
Alexandre
3d46f8a290 Merge branch 'coding'
Conflicts:
	include/Note.h
	include/ProjectVersion.h
	include/TimeLineWidget.h
	include/Track.h
	src/core/Plugin.cpp
	src/core/ProjectVersion.cpp
	src/core/Song.cpp
	src/core/Track.cpp
	src/gui/TimeLineWidget.cpp
2015-03-01 12:55:58 -03:00
Tres Finocchiaro
a1ac1dd5e5 Merge pull request #1801 from curlymorphic/doubleSong
Reinstate Double Click opening the piano roll from song editor
2015-03-01 10:30:34 -05:00
Dave French
6ad5d88c08 Reinstate Double Click opening the piano roll from song editor
This fixes a bug introduced when removing double click from
BB patterns. It Now checks if we use fixedTCO's (bb tomb stones),
only disable double clikc if so, leaving it working correcly in the
song editor
2015-03-01 14:37:07 +00:00
Dave French
673ce6e17a Enabled the use of sample exact controls in Dual Filter
The following controls have sample exact enabled

Filter 1 Cutoff
Filter 1 res
Filter 1 gain

Filter 2 Cutoff
Filter 2 res
Filter 2 Gain

Model.isValueChanged() does not eveluate when recieving sample accurate
so added checks to see if the cutoff and res needed to be recalculated,
2015-03-01 11:42:54 +00:00
Dave French
8a588d4934 Delay added addional smoothing to the delay time parameter
The delay time paramter was responding very badly ui user input.
This now has a much more plesant sound, not dis simular to a
record being sped up or slowed down.
2015-03-01 00:03:24 +00:00
Dave French
e06c4bfa38 Updated the equliser plugin to use sample exact controls
For this i had to do some major refactoring within the processAudioBuffer()
function.
2015-02-28 23:05:55 +00:00
Dave French
9343cb7549 Optimised sample exactness in the Delay plugin
implemented a pointer increment system as suggested by diizy
2015-02-28 13:26:17 +00:00
Dave French
0d220b9584 Added the use of sample exact controls to the Delay plugin
Added Sample exactness to the following parameters

Delay time
Regen
Lfo time
Lfo amount

Did not add this to the output gain contol, This model is used in
a dbScale, and a much more pleaseing result was gained by using an
amplifier plugin.
2015-02-27 18:00:56 +00:00
Dave French
7f72be6f69 Validates Xml files opened with the main menu 2015-02-26 20:07:45 +00:00
Dave French
a0360d2a8e Delay effect, the delay time parameter now uses sample exact modeling 2015-02-26 18:05:34 +00:00
Tres Finocchiaro
fe797cb09f Merge pull request #1718 from curlymorphic/saveasextensiontranslation
Remove the file extensions from the translations in the saveAsDialog
2015-02-26 09:18:17 -05:00
Dave French
81f0b14465 smoothed the time parameter of the delay pluging 2015-02-25 22:12:22 +00:00
Dave French
09232ce6e8 Begginings of XML validation 2015-02-25 21:30:45 +00:00
Tres Finocchiaro
3230a69680 Merge pull request #1784 from tresf/master
Prevent running as root user
2015-02-25 00:22:54 -05:00
tresf
e1e91cecb2 Prevent running as root user 2015-02-24 23:46:00 -05:00
Tres Finocchiaro
b39174058c Merge pull request #1783 from curlymorphic/i1682_2
Removed Double click to open piano roll, in the BBeditor,
2015-02-24 21:09:54 -05:00
Dave French
448f5be350 Removed Double click to open piano roll, in the BBeditor, this is to stop notes being added in error 2015-02-24 22:08:46 +00:00
Dave French
7e2bb36104 Added Checking of filetypes from the xml. Added a static function fileTypeFromData to the DataFile class. This opens the given file and checks the xml for its file type, as oposed to relying on the file extension 2015-02-23 21:16:38 +00:00
Tres Finocchiaro
a4967700fd Merge pull request #1775 from curlymorphic/i1720
Stop quantizing copied notes, leaving them at there original timings.
2015-02-20 13:27:41 -05:00
Tres Finocchiaro
0dafb5a996 Merge pull request #1777 from curlymorphic/i1279
linearToLogScale and logToLinearScale return 0 rather than nan
2015-02-20 12:41:51 -05:00
Tres Finocchiaro
79f6869ac3 Merge pull request #1774 from curlymorphic/i1683
Delay the deleting of a track view until the next event loop, this stops...
2015-02-20 11:59:16 -05:00
Dave French
a6e37316f1 linearToLogScale and logToLinearScale return 0 rather than nan 2015-02-20 16:56:28 +00:00
grejppi
603965fcf4 Merge pull request #1771 from grejppi/master-jack
Remove semaphores from JACK backend
2015-02-20 18:10:03 +02:00
Dave French
6a70fbd724 Stop quantizing copied notes, leaving them at there original timings. Notes that were quantised remain so 2015-02-20 12:48:27 +00:00
Dave French
42e12e6b27 Delay the deleting of a track view until the next event loop, this stops the segfault when deleting BB tracks during playback 2015-02-20 11:55:51 +00:00
Tres Finocchiaro
b4c5c09f30 Merge pull request #1772 from Ododo/master
rythme and not ryhtme
2015-02-19 17:25:19 -05:00
Ododo
0d56067121 Update fr.ts 2015-02-19 22:30:53 +01:00
Dave French
d6a1a61b45 Removed trailing spaces form save as Translations 2015-02-19 16:20:55 +00:00
curlymorphic
c1272fb1c5 removed file extensions from translations for SaveAs dialog 2015-02-19 08:47:17 +00:00
Dave French
4f5f855e87 Remove the file extensions from the translations in the saveAsDialog 2015-02-19 07:48:58 +00:00
Tres Finocchiaro
1b2e97954e Merge pull request #1751 from tresf/master
Remove "(bad latency!)" warning from PulseAudio
2015-02-18 09:00:58 -05:00
Hannu Haahti
1dcacbb95e Remove semaphores from JACK backend 2015-02-18 13:24:28 +02:00
Raine M. Ekman
96882f44d5 Added view menu
To be reviewed and reverted if undesired.

Based on https://sourceforge.net/p/lmms/patches/38/

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2015-02-17 23:37:44 +01:00
Tres Finocchiaro
15e759b6d3 Update NSIS URLs
Closes #1766.
2015-02-16 15:13:02 -05:00
Tobias Doerffel
317b2f02a8 AutomatableModel: fix wrong comparison logic
We must not negate the float but instead test for inequality in order to
determine whether the linked model has to be updated.

Closes #1761.
2015-02-16 18:22:49 +01:00
Tobias Doerffel
7bd5317499 Fixed path to FLTK DLL
mingw-x-fltk >= 1.3.3 has the FLTK DLL inside the bin directory like all the
other library packages as well.
2015-02-15 20:05:00 +01:00
Tobias Doerffel
3cc2091620 Fixed path to FLTK DLL
mingw-x-fltk >= 1.3.3 has the FLTK DLL inside the bin directory like all the
other library packages as well.
2015-02-15 20:02:46 +01:00
Tres Finocchiaro
23065454b9 Merge pull request #1754 from curlymorphic/xydelay
Added an xy pad to the Delay effect
2015-02-11 15:30:50 -05:00
Tres Finocchiaro
946cee27b0 Merge pull request #1756 from Sti2nd/stable-1.1
Save and load the mute flag for automation patterns
2015-02-10 22:48:10 -05:00
Dave French
9312c92013 Save and load the mute flag for automation patterns 2015-02-10 21:00:01 +01:00
Alexandre Almeida
593fd1c36e Merge pull request #1 from teeberg/coding 2015-02-10 17:38:18 -02:00
Tres Finocchiaro
9e3f344c70 Bump version for stable-1.1 patch release 2015-02-10 10:19:05 -05:00
Dave French
ee3c9a1333 Added a XY pad to the Delay Pluging. also added a volume control, and smothed the delay time input changes, to improve audio. 2015-02-10 13:47:17 +00:00
Dave French
fde014b9a5 Delay plugin renamed files and folder to use CamelCase 2015-02-09 22:56:39 +00:00
tresf
afb0777a6e Remove "(bad latency!)" warning from PulseAudio 2015-02-08 18:22:14 -05:00
Vesa V
aea84602b2 Merge pull request #1747 from Fastigium/lockless-1.1
1.1-based RT-safe fix for race condition causing #1662
2015-02-08 10:24:54 +02:00
Fastigium
d64e93b41a RT-safe fix for race condition causing #1662 2015-02-07 15:21:01 +01:00
Vesa V
b1a007b41b Merge pull request #1686 from mohamed--abdel-maksoud/master
MIDI Export feature (issue #258)
2015-02-07 14:39:37 +02:00
Tres Finocchiaro
77b93a22d7 Merge pull request #1740 from oeai/master
russian translation update
2015-02-06 11:07:43 -05:00
Lukas W
94e9d5b137 Travis: no make verbose output [skip ci] 2015-02-05 17:48:51 +01:00
Lukas W
0a48b2f7bc Fix: Respect custom working directory whenw riting recovery file
Fixes #1726
2015-02-05 17:40:34 +01:00
Lukas W
35e1c4ed89 Refactor: Move plugin file support handling to PluginFactory 2015-02-05 17:22:23 +01:00
Lukas W
863df4e3e6 Add support for reading theme path from environment variable 2015-02-05 17:21:57 +01:00
Tres Finocchiaro
2380e30ddd Merge pull request #1738 from curlymorphic/1724
Changed the Song Editor time position line to correctly draw from under the timeline widget
2015-02-04 17:27:55 -05:00
mohamed
2260907285 adding exportProjectMidi method, internally uses midiexport plugin 2015-02-04 22:37:43 +01:00
mohamed
8d5077af96 adding menu entry file->export midi 2015-02-04 22:37:00 +01:00
mohamed
9b7ac3b3db cleaning up event ordering function 2015-02-04 22:36:34 +01:00
mohamed
826591817a adding midiexport plugin to the list 2015-02-04 22:36:03 +01:00
Ra
fd2efe0347 Russian translation update
Russian translation update
2015-02-05 01:08:20 +04:00
mohamed
af0f997af8 midi export plugin 2015-02-04 20:23:53 +01:00
mohamed
b25ed327e0 export filter for export plugins 2015-02-04 20:23:43 +01:00
Dave French
690995620a Changed the Song Editor time position line to correctly draw from underneath the timeline widget 2015-02-04 15:41:27 +00:00
Tres Finocchiaro
b48c392dce Merge pull request #1737 from Spekular/PVFix
Fix project version check on preset load.
2015-02-03 15:43:49 -05:00
Spekular
5f32c361e4 Fix project version check on preset load. 2015-02-03 20:43:42 +01:00
Tres Finocchiaro
cb874e65df Merge pull request #1730 from curlymorphic/i1631
Save and load the mute flag for automation patterns
2015-02-02 11:44:43 -05:00
Jonas Trappenberg
76ffbd6528 Merge branch 'master' into coding
Conflicts:
	include/Plugin.h
	src/core/Note.cpp
	src/core/Track.cpp
2015-01-31 19:11:33 -08:00
Dave French
5a92243db6 Save and load the mute flag for automation patterns 2015-01-31 12:43:14 +00:00
Ra
47774fb216 Merge pull request #1 from LMMS/master
update current version
2015-01-30 21:37:30 +03:00
Tres Finocchiaro
4deb0a15aa Merge pull request #1627 from badosu/add-assign-to-new-fx-spinner
Add "assign to new fx channel" on FX SpinBox
2015-01-30 13:34:05 -05:00
Tres Finocchiaro
4f5bdeb254 Merge pull request #1684 from Spekular/patch-1
Update Swedish Translation
2015-01-30 13:06:48 -05:00
Spekular
5504b3fe9c Remove ' type="unfinished" ' on translated strings
Also miscellaneous fixes.
2015-01-30 18:54:32 +01:00
Amadeus Folego
c99e47f581 Add "Assign to new FX Channel" action to FXSpinBox
Fix #604 #921
2015-01-30 13:25:10 -02:00
Amadeus Folego
06cb85b771 Move FX assignment/creation logic to InsTrackView 2015-01-30 13:25:10 -02:00
Spekular
fc11a09b0b Update Automation translations 2015-01-30 10:38:16 +01:00
Spekular
b1f0dd3099 ljud fil -> ljudfil & dialogvisas -> dialog visas 2015-01-30 08:39:11 +01:00
Tres Finocchiaro
e70c4017ea Merge pull request #1721 from badosu/fix-shift-resize-single-note
Fix Shift+Resize for single note should be sticky
2015-01-29 20:20:52 -05:00
Amadeus Folego
27762a9437 Fix Shift+Resize for single note should be sticky 2015-01-29 20:06:38 -02:00
Tres Finocchiaro
04bfbe0194 Merge pull request #1630 from softrabbit/midi_import_drums
Play imported MIDI drum tracks with a drum kit patch
2015-01-29 15:42:33 -05:00
Tres Finocchiaro
e2d98668ec Merge pull request #1699 from curlymorphic/bbundo
Song Editor and bbEditor undo.
2015-01-29 15:39:43 -05:00
Tres Finocchiaro
339a7c514c Merge pull request #1697 from curlymorphic/autoundo
Automation editor undo
2015-01-29 15:38:33 -05:00
Tres Finocchiaro
0f43b0a472 Merge pull request #1710 from curlymorphic/i1595
Proposed fix for #1595 Instrument track activity LED lights when muted.
2015-01-29 13:54:53 -05:00
Tres Finocchiaro
525e627fa4 Merge pull request #1709 from curlymorphic/i1695
Proposed fix for 1695 Cannot save templates
2015-01-29 13:50:22 -05:00
Tres Finocchiaro
af08470f66 Merge pull request #1711 from curlymorphic/i1692
Proposed fix for 1692 Missing CLI option for rendering
2015-01-29 13:49:25 -05:00
Lukas W
2a0c08afa2 Fix windows build 2015-01-29 16:37:10 +01:00
Lukas W
54e64f406e Merge remote-tracking branch 'upstream/master' into cmake_dist 2015-01-29 14:02:40 +01:00
Lukas W
c28b0b5407 PluginFactory: Map plugins by type 2015-01-29 14:00:29 +01:00
Lukas W
dc1f8dc365 Add data search path support
Also add LMMS_DATA_DIR env var to "data:" search paths.
When lmms is launched from its build directory (without `make install`ing),
LMMS_DATA_DIR can be passed to point lmms to the "data" directory in the
source tree.
2015-01-29 13:54:09 +01:00
Lukas W
7be47230e3 Introduce PluginFactory class
This singleton class handles management of plugin search paths and plugin
discovery. Search paths are (if they exist):
  * <lmms-exe-dir>/../lib/lmms: This is the common location on Unixoids
    (Not included in Windows builds)
  * <lmms-exe-dir>/plugins: For portable and Windows installations
  * The path given by the compile define LMMS_PLUGIN_DIR
  * Environment variable LMMS_PLUGIN_DIR if given

This commit also tweaks the build script to output built plugins to
"${CMAKE_BINARY_DIR}/plugins". This way lmms can find plugins during
development without the need to use `make install`.

Plugin::getDescriptorsOfAvailPlugins and ConfigManager::pluginDir were
removed.
2015-01-29 13:48:52 +01:00
Dave French
1ebbe31fae Changed commandline flag to render in 32bit float from -32 to -a 2015-01-29 11:36:21 +00:00
Dave French
efa75b0151 Checks for .mpt extension, before adding extension when saving project templates 2015-01-29 10:38:19 +00:00
Dave French
5ce1bd874d renamed muteHasChanged to muteChanged in InstrumentTrackView 2015-01-29 10:13:25 +00:00
Dave French
968d0215df Moved Setting of activity indicator color from InstrumentTrack to InstrumentTrackView 2015-01-29 09:49:20 +00:00
Tres Finocchiaro
96fd0815a3 Merge pull request #1708 from badosu/fix-crash-when-removing-last-channel
Fix crash when removing last channel
2015-01-28 23:16:50 -05:00
Tres Finocchiaro
e906056173 Merge pull request #1687 from SecondFlight/master
Added a song to data/projects/CoolSongs
2015-01-28 22:37:27 -05:00
Tres Finocchiaro
d0adb2ddef Merge pull request #1716 from badosu/change-resizing-notes-on-piano-roll
Change Shift+Resize selected notes on Piano Roll
2015-01-28 22:11:05 -05:00
Tres Finocchiaro
824f7fa706 Merge pull request #1712 from curlymorphic/i1532
Proposed fix for #1532 Tracks in song editor cannot be moved in pattern ...
2015-01-28 20:37:03 -05:00
Amadeus Folego
dae0c05061 Change Shift+Resize selected notes on Piano Roll
Selected notes: when resized would offset posterior, non-selected notes
to mantain some kind of melodic structure. This is referred to
as *sticky* behaviour.

It also assumes some kind of intention that may not be the case.
Also adds complexity to a simple feature.

This commit makes only the the selected notes be offset. It also adds a
new shortcut to the old behaviour <Shift-Ctrl-drag to the note tip>.

Fixes #1666
2015-01-28 23:22:29 -02:00
Dave French
c02f043b3f Changed color of InstrumentTrack activity indicators mute color to use the color defined in style.css as highlight 2015-01-29 00:27:30 +00:00
Dave French
fa6dd6da8b Change color of muted activity indicator from red to grey 2015-01-28 22:12:59 +00:00
Dave French
406bc40ddd fix 1692 reformat conditional statement to be consistant 2015-01-28 17:06:19 +00:00
Dave French
dd80301cee Proposed fix for #1532 Tracks in song editor cannot be moved in pattern select mode. 2015-01-28 15:35:01 +00:00
SecondFlight
ad1dc2268f Changed the license to CC (BY)
Seems more reasonable based on the discussion.
2015-01-28 09:46:26 -05:00
Dave French
f9eb128b46 Proposed fix for 1692 Missing CLI option for rendering 2015-01-28 13:39:35 +00:00
Dave French
9fee116fa7 1595 removed accidental blank line 2015-01-28 12:21:57 +00:00
Dave French
7c0ab622f1 Proposed fix for 1595 Instrument track activity LED lights when muted 2015-01-28 12:16:21 +00:00
Dave French
56635c1fcf Proposed fix for 1695 Cannot save templates 2015-01-28 06:35:52 +00:00
Amadeus Folego
ff2617b0bd Fix crash when removing last channel
Sometimes the last channel still had processing to do when it got
deleted
2015-01-28 00:52:17 -02:00
Tres Finocchiaro
8e2e17ab84 Merge pull request #1701 from curlymorphic/i710
Proposed fix 710
2015-01-27 11:53:54 -05:00
Tres Finocchiaro
0faeb2bddc Merge pull request #1667 from Spekular/PVCheck
Project Version Check
2015-01-27 11:50:03 -05:00
Dave French
9b1e89ae21 Proposed fix 710 2015-01-27 11:18:25 +00:00
Spekular
6ec2ece4a4 Update code style for project version check. 2015-01-27 11:32:39 +01:00
Spekular
0847919214 Adds GUI check around GUI calls in DataFile.cpp 2015-01-27 11:22:46 +01:00
Spekular
ea80d01f8b Adds dialog when project is opened that was made with a different version of LMMS
Remove Commented Out Code

Update DataFile.cpp

Update DataFile.cpp

Update DataFile.cpp

Changes per tresf's advice, adds comments

Git???

Please work :/

Update DataFile.cpp

Adds dialog when project is opened that was made with a different version of LMMS

Remove Commented Out Code

Update DataFile.cpp

Update DataFile.cpp

Update DataFile.cpp

Changes per tresf's advice, adds comments

Git???

Please work :/

Update DataFile.cpp
2015-01-27 11:22:45 +01:00
Tres Finocchiaro
cdf6b3e01f Merge pull request #1689 from curlymorphic/i1685
Proposed fix 1685 Automation Copy/Paste from Context Menu
2015-01-26 22:07:08 -05:00
Dave French
57460c91c3 bb patern 2015-01-27 00:28:40 +00:00
Dave French
a30c32f8d8 Undo of TCO changes in song editor 2015-01-27 00:11:23 +00:00
Dave French
e51da26a1a Automation editior undo 2015-01-26 22:23:19 +00:00
Lukas W
7b5084c53b Merge pull request #1690 from curlymorphic/821
Renamed parameters on selectRegionFromPixels
2015-01-26 14:17:25 +01:00
Dave French
cebf8bfd59 Renamed parameters on selectRegionFromPixels 2015-01-25 20:37:00 +00:00
Dave French
0fe2ab5533 Proposed fix 1685 Automation Copy/Paste from Context Menu 2015-01-25 20:07:53 +00:00
Spekular
fccc36113c Update sv.ts 2015-01-25 16:10:22 +01:00
SecondFlight
91c76f342b Added a song to data/projects/CoolSongs
The song that will (hopefully) be added:
https://soundcloud.com/second_flight/krem-kaakkuja-remix
2015-01-24 20:09:07 -05:00
Lukas W
0e778d042b Merge pull request #1674 from curlymorphic/i446
Proposed fix for 446, select notes in piano roll using timeline
2015-01-24 11:19:58 +01:00
Dave French
e2a2d27bba 446 change parameter names 2015-01-24 06:30:23 +00:00
Spekular
28a51968a3 Gain: Volym>Föstärkning Amplification: Volym>Amplifiering 2015-01-23 23:00:26 +01:00
Spekular
d4d15ea567 Update Swedish Translation 2015-01-23 22:37:12 +01:00
Tres Finocchiaro
1a7e30eb87 Merge pull request #1677 from curlymorphic/1416
Proposed fix 1416 Drag-and-drop of automatables to Automation Editor
2015-01-23 16:14:43 -05:00
Dave French
f6792d991c 1416 refresh window 2015-01-23 19:46:09 +00:00
Dave French
f8120cd2fe Tidy up and remove clearing 1416 2015-01-23 18:15:03 +00:00
Amadeus Folego
e91991216d Fix segfault when moving channels
This commit addresses a lot of issues, namely:

1. When the "Move left/right" action was selected on a mixer channel
menu sometimes it would segfault due to the fxline object being
deleted before it returned to a method inside itself

2. The Fader was declaring a new variable for the model whereas it
should used the inherited model from FloatModelView < AutomatableModelView

3. Some methods were doing more things than they should be and
performing unnecessary actions. A little cleanup/refactor was made

Please notice that a bug of the same class as the one referred at point 1
still exists: clicking on "Remove channel". This commit does not
addresses this issue.

Fixes #1584
2015-01-23 05:35:59 -02:00
Dave French
dfbbcfd38b 1416 tidy up 2015-01-23 02:38:17 +00:00
Dave French
c201a41c05 Proposed fix 1416 Drag-and-drop of automatables to Automation Editor 2015-01-23 02:16:30 +00:00
Tobias Doerffel
ffe7e8b8fa Travis: updated name of PPA with MinGW-X packages for Precise 2015-01-22 22:24:23 +01:00
Tobias Doerffel
d569015273 Travis: updated name of PPA with MinGW-X packages for Precise 2015-01-22 22:22:57 +01:00
Dave French
2be8eaa4db Proposed fix for 446, select notes in piano roll using timeline 2015-01-22 20:16:00 +00:00
Tres Finocchiaro
f6176921c6 Merge pull request #1672 from badosu/fix-add-steps-on-melody-patterns
Fix beat pattern actions on melodies
2015-01-22 14:27:06 -05:00
Amadeus Folego
8267ac6316 Fix beat pattern actions on melodies 2015-01-22 17:18:42 -02:00
Tres Finocchiaro
786e7dd389 Merge pull request #1671 from curlymorphic/i1634
fix for 1668 now checks if safe to load song
2015-01-22 13:52:56 -05:00
Dave French
3db3711dcf fix for 1668 now checks if save to load song 2015-01-22 18:31:09 +00:00
Lukas W
df9d495571 Some #include cleanups 2015-01-22 16:28:41 +01:00
Lukas W
ebd531e69f Merge pull request #1652 from curlymorphic/821
proposed fix 821 Range-select in Song Editor
2015-01-22 13:16:40 +01:00
Lukas W
4dd40e1755 Fix missed rename note->Note
Fixes #1464
Bug introduced in aaeb5216ad
2015-01-22 12:53:38 +01:00
Lukas W
9cc1a5931c Make -Werror optional 2015-01-22 12:39:41 +01:00
Lukas W
e63bd848d0 PianoRoll: Fix faulty rename
Fix a renaming mistake made in 1d07a91a83
2015-01-22 11:30:57 +01:00
Tres Finocchiaro
9b26c5bb68 Merge pull request #1668 from curlymorphic/i1634
Proposed fix 1643 Allow drag-and-drop of project files
2015-01-21 08:48:15 -05:00
Lukas W
d41d816b57 Merge pull request #1661 from teeberg/style
Work on codestyle and readability
2015-01-21 14:19:45 +01:00
Dave French
9460fdec9b Proposed fix 1643 Allow drag-and-drop of project files 2015-01-21 13:18:01 +00:00
Lukas W
d6ff1a7086 Fix BB Editor project load
Closes #1621
2015-01-21 13:33:57 +01:00
Dave French
1cf9300f72 821 changed to use sockets/ slots 2015-01-21 11:55:30 +00:00
Jonas Trappenberg
52ec4722fb Add explanation to acronym variable 2015-01-20 20:37:58 -08:00
Jonas Trappenberg
a74ff27d35 Remove usage of 'auto' 2015-01-20 20:37:32 -08:00
Jonas Trappenberg
deb3e45791 More code style fixes 2015-01-20 20:26:33 -08:00
Jonas Trappenberg
8c76af1806 Remove premature optimization in float comparison 2015-01-20 20:26:11 -08:00
Jonas Trappenberg
f148fc34b4 Don't access deleted memory 2015-01-20 20:24:18 -08:00
Jonas Trappenberg
7777fc7342 Remove unused variable 2015-01-20 19:44:23 -08:00
Jonas Trappenberg
71bab17233 Work on codestyle and readability 2015-01-19 19:54:06 -08:00
Alexandre
2834bd17f4 Coding conventions update 2015-01-20 00:00:58 -02:00
Alexandre Almeida
a34faeca71 Update ProjectVersion.cpp 2015-01-19 23:25:05 -02:00
Alexandre Almeida
2e7732a7f5 Update ProjectVersion.h 2015-01-19 23:20:54 -02:00
Alexandre Almeida
38799f80af Update Plugin.h 2015-01-19 23:19:18 -02:00
Alexandre Almeida
9e370ff121 Update Plugin.cpp 2015-01-19 23:19:18 -02:00
Alexandre Almeida
4d6d937cf2 Update Timeline.h 2015-01-19 23:18:30 -02:00
Alexandre Almeida
77ceda9385 Update Song.h 2015-01-19 23:16:41 -02:00
Alexandre Almeida
9e1a35e327 Update ProjectRenderer.cpp 2015-01-19 23:16:41 -02:00
Alexandre Almeida
92f9fd92ec Update Timeline.cpp 2015-01-19 23:16:41 -02:00
Alexandre Almeida
abe05af49a Update Mixer.cpp 2015-01-19 23:14:48 -02:00
Alexandre Almeida
21425e3477 Update Song.cpp 2015-01-19 23:14:48 -02:00
Alexandre Almeida
c398769020 Update coding conventions 2015-01-19 23:11:02 -02:00
Alexandre Almeida
118127a3bc Update coding conventions 2015-01-19 23:09:46 -02:00
Alexandre Almeida
d04076f44d Update coding conventions on Note.h 2015-01-19 23:08:19 -02:00
Alexandre Almeida
b0cf5ba289 Update coding conventions on Note.cpp 2015-01-19 22:59:15 -02:00
Tres Finocchiaro
c13d111bc2 Merge pull request #1657 from DanWin/songeditor
Fix SongEditorWindow resize when a project loads
2015-01-19 11:53:40 -05:00
Daniel Winzen
a3e5a65957 Fix SongEditorWindow resize when a project loads 2015-01-19 15:32:16 +01:00
Tres Finocchiaro
ee25db797d Merge pull request #1656 from curlymorphic/111649
Proposed fix for 1649 for stable-1.1
2015-01-19 09:15:19 -05:00
Dave French
1ba3088554 Proposed fix for 1649 for stable-1.1 2015-01-19 14:04:57 +00:00
Tres Finocchiaro
ce0b258d5e Merge pull request #1653 from teeberg/master
Format and reword README
2015-01-19 08:55:23 -05:00
Tres Finocchiaro
d9b81bc9e2 Merge pull request #1654 from curlymorphic/i818
Proposed fix 818 Merge file name and preset name. Remove double naming
2015-01-19 08:44:49 -05:00
Jonas Trappenberg
4e92243508 Update copyright year 2015-01-18 14:08:13 -08:00
Dave French
746ea39afb Proposed fix 818 Merge file name and preset name. Remove double naming 2015-01-18 21:39:09 +00:00
Jonas Trappenberg
a4536c43a5 Format and slightly reword READMEs 2015-01-18 12:48:03 -08:00
Jonas Trappenberg
018457340e Bump version number in README 2015-01-18 12:47:43 -08:00
Dave French
b3d943920c proposed fix 821 Range-select in Song Editor 2015-01-18 19:16:43 +00:00
Tres Finocchiaro
9f75aabf65 Merge pull request #1646 from DanWin/delete
Use delete[] instead of delete for sampleFrame
2015-01-16 15:16:39 -05:00
Daniel Winzen
9c8e2b195c Use delete[] instead of delete for sampleFrame
Fixes warning: 'delete' applied to a pointer-to-array type 'sampleFrame *' (aka 'sample_t (*)[2]') treated as delete[] in mac os build
2015-01-16 20:24:24 +01:00
Lukas W
2257a06422 Fix a segfault 2015-01-16 19:57:31 +01:00
Lukas W
4953a9da60 Merge pull request #1637 from LMMS/travis-osx
Travis OSX
2015-01-16 01:15:47 +01:00
Lukas W
f492a8ab0e Detect failed tests 2015-01-16 01:15:02 +01:00
Lukas W
59513f9a49 Fix that CMake version check again 2015-01-16 00:25:10 +01:00
Lukas W
b5019e53d1 Travis: Re-enable linux builds 2015-01-16 00:04:09 +01:00
Lukas W
85d7843c98 Tests: Fix CMake version check 2015-01-15 23:10:28 +01:00
Tres Finocchiaro
c5773c41b0 Merge pull request #1639 from DanWin/stable-1.1
Fix calcSlope1 was not declared errors
2015-01-15 16:59:24 -05:00
Lukas W
fb2df20095 Merge branch 'master' into travis-osx 2015-01-15 22:47:58 +01:00
Lukas W
7e43541fe5 Travis: Fix script path error 2015-01-15 22:34:51 +01:00
Lukas W
eea616f080 Travis: Disable linux builds (temporarily) 2015-01-15 22:26:04 +01:00
Lukas W
4c0705359a OSX fix try #2 2015-01-15 22:23:26 +01:00
Daniel Winzen
d8e552de80 Fix calcSlope1 was not declared errors 2015-01-15 22:15:04 +01:00
Lukas W
bd4a93c1d7 Travis: Outsource build scripts 2015-01-15 22:05:10 +01:00
Lukas W
d4d26a6138 OSX fix 2015-01-15 21:35:46 +01:00
Tres Finocchiaro
523e5d048b Bump version for stable-1.1 patch release 2015-01-15 15:32:55 -05:00
Lukas W
c7e3ab3d46 Don't use QList's initializer_list constructor (compat commit) 2015-01-15 21:24:23 +01:00
Lukas W
4cfba53f71 Travis update
Try removing that unnecessary linux job
2015-01-15 21:22:33 +01:00
Tres Finocchiaro
57876fead2 Merge pull request #1611 from curlymorphic/i760
Proposed fix 760  Improve search field
2015-01-15 15:03:43 -05:00
Lukas W
f15f8ce3df Travis: Fix brew 2015-01-15 20:51:15 +01:00
Lukas W
bb24f61042 Travis: Fix yml syntax errors 2015-01-15 20:44:56 +01:00
Lukas W
b862b34a9a Travis: Enable OSX 2015-01-15 20:38:53 +01:00
Lukas W
ebf68d57a9 ProjectVersion: Some refactoring 2015-01-15 17:27:58 +01:00
Lukas W
a18f86bde7 ProjectVersion: Clean up a bit, add a test 2015-01-15 17:27:58 +01:00
Lukas W
a52e4724cf Some small SongEditor fixes 2015-01-15 17:27:57 +01:00
Lukas W
b720ec5537 Merge pull request #1618 from teeberg/master
More minor code style cleanup
2015-01-15 17:20:22 +01:00
Vesa
89e8e328e6 Merge branch 'stable-1.1' 2015-01-15 17:18:03 +02:00
Vesa
e33645f9ab Fix monstro slopes 2015-01-15 17:17:33 +02:00
Vesa V
9cff69cb78 Merge pull request #1635 from diizy/master
Fix monstro slopes properly
2015-01-15 17:15:06 +02:00
Vesa
c0932bd75e Fix monstro slopes properly 2015-01-15 17:14:50 +02:00
Lukas W
7ac591fdfe Merge pull request #1626 from LMMS/cmake_tests
CMake: Change the way tests links lmms
2015-01-15 16:13:49 +01:00
Vesa V
663dcbf98f Merge pull request #1624 from dnl-music/patch-4
Update Monstro.h
2015-01-15 17:08:12 +02:00
Vesa V
fe73f0991f Merge pull request #1623 from dnl-music/patch-3
Update Monstro.cpp
2015-01-15 17:08:03 +02:00
Lukas W
b90ee93d0c Travis: Upgrade CMake from PPA 2015-01-15 16:03:52 +01:00
Lukas W
ff882e021e Disable tests for CMake <2.8.8 2015-01-15 15:57:50 +01:00
Jonas Trappenberg
7f38a51f9d Merge remote-tracking branch 'upstream/master' 2015-01-14 21:07:36 -08:00
Tres Finocchiaro
d6e98499d0 Merge pull request #1629 from tresf/master
Add CPU prioritization support for Windows
2015-01-14 22:31:42 -05:00
Raine M. Ekman
26a84837c2 Switch track imported from MIDI channel 10 to bank 128, patch 0 in SF2 player.
(aka. import drum tracks)
2015-01-14 22:01:42 +02:00
Tres Finocchiaro
d89b54d768 Add CPU prioritization support for Windows 2015-01-14 14:33:21 -05:00
Lukas W
030292cbad Merge pull request #1582 from tresf/master
ProjectVersion: Expose major/minor/release/build info
2015-01-14 20:26:43 +01:00
Lukas W
2f7820a6d9 CMake: Change the way tests links lmms 2015-01-14 19:54:48 +01:00
dnl-music
e3ebef08a9 Update Monstro.h 2015-01-14 17:09:38 +05:00
dnl-music
26592907e6 Update Monstro.cpp 2015-01-14 17:06:07 +05:00
Jonas Trappenberg
d27d43ac42 Merge remote-tracking branch 'upstream/master' 2015-01-13 21:36:41 -08:00
Jonas Trappenberg
0dcd293ce1 Undo some pointer declaration changes. 2015-01-13 21:33:51 -08:00
Lukas W
c5fbd3e643 Travis: Fix .travis.yml typo 2015-01-13 18:31:18 +01:00
Lukas W
37d89720c8 Travis: Disable tests on Windows 2015-01-13 18:19:10 +01:00
Lukas W
e3a29d0ad7 Fix Travis build 2015-01-13 18:04:13 +01:00
Tres Finocchiaro
697fc4dd0f Fix typo in comments 2015-01-13 11:50:11 -05:00
Tres Finocchiaro
17f32f344f Better switching of comparators, char[] constructor 2015-01-13 11:38:17 -05:00
Tres Finocchiaro
260694077d Misc ProjectVersion improvments 2015-01-13 11:35:46 -05:00
Lukas W
05d21e0b57 Travis: Run test binary 2015-01-13 17:34:17 +01:00
Lukas W
f640769ff0 SongEditor and BBEditor: Accept drops in toolbar 2015-01-13 17:29:19 +01:00
Locale updater
85fb0aca82 Update locales 2015-01-13 16:06:36 +01:00
Lukas W
300e6d8000 Merge commit 'ebad5296f55747d03c714a66de04245dbad85a35' 2015-01-13 16:02:59 +01:00
Lukas W
72c0620d1f Merge pull request #1612 from LMMS/tests
Add a testing framework
2015-01-13 15:40:21 +01:00
Lukas W
8e42b5ec01 Merge pull request #1616 from badosu/fix-cli-export-crashes
Fix export crashes adding gui checks
2015-01-13 10:32:17 +01:00
Jonas Trappenberg
293bb93173 Match code style of other declaration further down 2015-01-12 22:01:56 -08:00
Jonas Trappenberg
75cd1f4f38 More minor refactorings 2015-01-12 21:53:49 -08:00
Jonas Trappenberg
ddfc3b3ee3 Remove redundant switch breaks. 2015-01-12 20:33:03 -08:00
Jonas Trappenberg
4107572115 Put on one line what comfortably fits into 80 chars. 2015-01-12 20:29:58 -08:00
Vesa V
fd33c26696 Merge pull request #1617 from LMMS/stable-1.1
Stable 1.1
2015-01-13 06:22:39 +02:00
Tres Finocchiaro
377cf68ee7 Make QMenu::separator visible.
Fixes #1615
2015-01-12 23:13:11 -05:00
Amadeus Folego
f0b2d8b0af Fix export crashes adding gui checks 2015-01-13 01:51:27 -02:00
Tres Finocchiaro
6e899d3993 Merge pull request #1572 from badosu/assign-instrument-to-fx-channel
Add "Assign to FX Channel" context button to track
2015-01-12 22:02:31 -05:00
Amadeus Folego
2eb420cb92 Add "Assign to FX Channel" context button to track 2015-01-13 00:45:48 -02:00
Tres Finocchiaro
21f5bb0b93 Merge pull request #1525 from badosu/show-errors-on-cli
[WIP] Refactor errors notification system
2015-01-12 21:45:23 -05:00
Tres Finocchiaro
db2e7febf7 Merge pull request #1553 from leeavital/1429-pattern-switch
Implement 1429 -- move to next and previous pattern
2015-01-12 21:23:00 -05:00
Amadeus Folego
edebf5d7da Refactor loading song errors notification 2015-01-13 00:18:36 -02:00
Amadeus Folego
3dd1da4e25 Collect effects errors to show on summary window 2015-01-12 23:51:32 -02:00
Lee Avital
7da4efda0f Implement 1429 -- move to next and previous pattern 2015-01-12 20:28:13 -05:00
Lukas W
1459be1a2c Merge pull request #1613 from LMMS/cmake
Clean BuildPlugin.cmake
2015-01-13 01:28:42 +01:00
Lukas W
ce5398414c Clean BuildPlugin.cmake 2015-01-13 01:22:31 +01:00
Lukas W
cb10b5aabe Try fixing windows build 2015-01-13 01:13:14 +01:00
Lukas W
5641465a3a Add a testing framework 2015-01-12 23:59:14 +01:00
Lukas W
ebad5296f5 Fix cmake locale update 2015-01-12 23:38:27 +01:00
Lukas W
227a1c0e87 Rename Project menu to File, rearrange save actions
Closes #1608
2015-01-12 23:28:50 +01:00
Lukas W
a94ccb8515 Fix blank AutomationEditor on loading projects 2015-01-12 23:22:21 +01:00
Dave French
4206705ed2 Proposed fix 760 Improve search field 2015-01-12 22:10:15 +00:00
Lukas W
30bc86e2e7 Fix opening automation patterns per context menu 2015-01-12 22:45:47 +01:00
Lukas W
854f1d1132 Merge pull request #1609 from curlymorphic/i1502
proposed fix 1502 incorrect slash in windows
2015-01-12 20:23:32 +01:00
Vesa V
24f869c379 Merge pull request #1599 from curlymorphic/i1526
Proposed fix 1526 Watsyn shows wrong Osc
2015-01-12 21:20:40 +02:00
Vesa V
f40e92f31a Merge pull request #1598 from softrabbit/opulenz2015
Opulenz: small updates
2015-01-12 21:06:33 +02:00
Vesa V
1abb37529d Merge pull request #1601 from curlymorphic/i1492
Proposed fix 1492 Nescaline crash when playing very high note
2015-01-12 21:04:58 +02:00
Dave French
22f51eefb6 proposed fix 1502 incorrect slash in windows 2015-01-12 16:40:42 +00:00
Lukas W
3e0e5d36bf Merge pull request #1606 from DanWin/locale
Fix locale generation
2015-01-12 14:31:30 +01:00
Daniel Winzen
b90bacab6e Fix locale generation 2015-01-12 13:09:10 +01:00
Lukas W
58507c28ec Fix piano roll detuning redraw 2015-01-12 11:04:04 +01:00
Lukas W
ae0ff4c65b Merge pull request #1604 from teeberg/cmake
Generate manpage as part of a build
2015-01-12 10:42:11 +01:00
Tres Finocchiaro
4f03575786 Fix more typos 2015-01-12 01:14:31 -05:00
Tres Finocchiaro
8e5af67ec0 Fix typo in .cpp, remove unecessary changes 2015-01-12 01:00:02 -05:00
Tres Finocchiaro
300e44620a Remove address for CompareType 2015-01-12 00:38:17 -05:00
Tres Finocchiaro
a363e7a16a More comparitors 2015-01-12 00:22:50 -05:00
Jonas Trappenberg
7dd086cde7 Generate manpage as part of a build 2015-01-11 21:14:32 -08:00
Lukas W
a4b039e1c2 Merge pull request #1602 from LMMS/win_make_threaded
Travis Win: Multithreaded make
2015-01-12 00:53:59 +01:00
Lukas W
807c59d3b3 Travis: Simplify .travis.yml 2015-01-12 00:53:35 +01:00
Tres Finocchiaro
23ed8673c1 Merge pull request #1597 from curlymorphic/i1345
updated 1345 Exclude tracks from master pitch
2015-01-11 18:49:32 -05:00
Lukas W
95ee5d0b90 Travis Win: Multithreaded make 2015-01-12 00:46:36 +01:00
Lukas W
0d06ce7cdc Merge pull request #1497 from DanWin/language
Add choose language option
2015-01-12 00:15:32 +01:00
Lukas W
c7ecd9cbba Merge pull request #1596 from LMMS/cmake
CMake use explicit source file specifying
2015-01-11 23:58:15 +01:00
Lukas W
572a989e95 Bump CMake version to 2.8.7 2015-01-11 23:57:50 +01:00
Lukas W
38f544f9a0 Fix embedded resources 2015-01-11 22:59:27 +01:00
Dave French
49b3f36a57 1492 fixed type on line 313 2015-01-11 21:23:30 +00:00
Dave French
a1dce66ca8 Proposed fix 1492 Nescaline crash when playing very high note 2015-01-11 21:10:32 +00:00
Dave French
ffde891cfb Proposed fix 1526 Watsyn shows wrong Osc 2015-01-11 20:15:30 +00:00
Raine M. Ekman
4cfed0434c ...and don't name the track after the name in the SBI file if it's empty. 2015-01-11 20:51:22 +02:00
Lukas W
f3b0c8091f Fix build again 2015-01-11 18:33:55 +01:00
Raine M. Ekman
63e23e0158 Added loading of SBI files.
(e.g. from http://cd.textfiles.com/soundsensations/SYNTH/SBINS/ )
2015-01-11 19:19:52 +02:00
Lukas W
9b25c5adbb Try to fix win build 2015-01-11 17:41:09 +01:00
Tres Finocchiaro
d0c8e7b307 Merge pull request #1593 from curlymorphic/i1345
Proposed fix for 1345 Exclude tracks from master pitch
2015-01-11 11:00:06 -05:00
Lukas W
ee3a99853b CMake use explicit source file specifying 2015-01-11 16:33:57 +01:00
Dave French
94ede26496 1345 redesigned Misc tab using GroupBox 2015-01-11 14:33:41 +00:00
Lukas W
384a48f121 Merge pull request #1426 from LMMS/ed_refac
Editor Refactoring
2015-01-11 13:28:32 +01:00
Lukas W
56055b36b0 Merge branch 'master' into ed_refac
Conflicts:
	src/gui/editors/PianoRoll.cpp
2015-01-11 13:25:55 +01:00
Lukas W
23dbe95e80 Stop on second space key press 2015-01-11 13:05:44 +01:00
Lukas W
a52626bb15 Merge pull request #1591 from DanWin/win_gigplayer
Enable GigPlayer Windows build
2015-01-11 12:41:43 +01:00
Lukas W
1a7cc5ecf8 Merge pull request #1594 from teeberg/master
Minor refactoring
2015-01-11 12:40:15 +01:00
Jonas Trappenberg
87e597510c Minor refactorings and codestyle cleanup. 2015-01-11 00:05:25 -08:00
Jonas Trappenberg
60f34788fb Remove unused variable 2015-01-10 23:52:57 -08:00
Raine M. Ekman
925122545e Fix issue #1292, beautify code a bit,
and revert an initialization change I can't grasp the reason for.
2015-01-10 21:23:14 +02:00
Dave French
83baea6605 1345 moved LedCheckBox to MISC tab 2015-01-10 19:05:40 +00:00
Dave French
af22d39612 Proposed fix for 1345 Exclude Tracks from master pitch 2015-01-10 17:11:17 +00:00
Daniel Winzen
1444902a2d Enable GigPlayer Windows build 2015-01-10 17:43:32 +01:00
Tres Finocchiaro
afa55cae89 Merge pull request #1557 from curlymorphic/i1352
Proposed fix for 1352 Mk2, move the loaded instrument to the parent thre...
2015-01-10 09:40:48 -05:00
Tres Finocchiaro
9ffbef6f6e Merge pull request #1558 from curlymorphic/i1522
Proposed fix for 1522 Noise at the end of Sample previews
2015-01-10 09:33:07 -05:00
Tres Finocchiaro
86c2673398 Merge pull request #1563 from DanWin/resize-cursor
Don't display resize cursor for non-resizable TCOs
2015-01-10 09:32:09 -05:00
Tres Finocchiaro
6e94cc9e5f Merge pull request #1570 from curlymorphic/i888
Proposed fix 888 Bar, Beat and Tick should follow dragged timeline
2015-01-10 09:25:15 -05:00
Tres Finocchiaro
ce689cfa6c Merge pull request #1590 from curlymorphic/i1211
update 1211 solo nolonger mutes master
2015-01-10 09:21:45 -05:00
Dave French
5178ecd3a2 update 1211 solo nolonger mutes master 2015-01-10 12:40:53 +00:00
Tres Finocchiaro
e61a0d14f0 Merge pull request #1505 from curlymorphic/i1150
Proposed fix for 1150 Preset Browser: division between factory and user ...
2015-01-09 21:30:45 -05:00
Tres Finocchiaro
5455457591 Merge pull request #1555 from softrabbit/bug1544
Lock SF2 player mutex around pitch-related calls
2015-01-09 21:28:08 -05:00
Tres Finocchiaro
fa3767e9d1 Merge pull request #1588 from Umcaruje/master
Update README
2015-01-09 19:00:47 -05:00
Umcaruje
1284b6e900 Update README 2015-01-10 00:57:48 +01:00
Tres Finocchiaro
25448d3f21 Add explanation for #1587 changes 2015-01-09 18:12:46 -05:00
Tres Finocchiaro
360d2db98a Merge pull request #1585 from DanWin/performance
Performance and other fixes
2015-01-09 18:07:00 -05:00
Tres Finocchiaro
c210df4752 Merge pull request #1587 from curlymorphic/i300
Proposed fix for issue 300, preview vst crashes
2015-01-09 17:49:10 -05:00
Dave French
180c02aedc Proposed fix for issue 300, preview vst crashes 2015-01-09 21:25:41 +00:00
Tres Finocchiaro
21c532adc0 Add internal support for major/minor/build comparator 2015-01-09 16:25:07 -05:00
Lukas W
d442b674b5 Merge pull request #1586 from curlymorphic/cppcheck
Eq fix incorrect memory allocation
2015-01-09 20:32:17 +01:00
Dave French
4ad1cd607b Eq fix incorrect memory allocation 2015-01-09 19:28:26 +00:00
Daniel Winzen
4a55e1c46a Performance and other fixes 2015-01-09 20:17:07 +01:00
Tres Finocchiaro
baa57fb662 Merge pull request #1583 from badosu/fix-windows-build
Fix exporting class for windows build
2015-01-09 07:16:00 -05:00
Amadeus Folego
d20e83e2f7 Fix exporting class for windows build 2015-01-09 04:27:18 -02:00
tresf
407fc18d82 Remove unused import 2015-01-09 00:12:19 -05:00
tresf
d192df081d Formatting cleanup 2015-01-09 00:05:13 -05:00
tresf
f0e7ea6fd1 Expose major, minor, release and build values parsed from a project version 2015-01-08 23:53:19 -05:00
Tres Finocchiaro
1b91b30658 Merge pull request #1578 from badosu/refactor-redundant-color-assignment
Refactor redundant pattern color assignment
2015-01-08 15:01:57 -05:00
Tres Finocchiaro
b9a0e0f391 Merge pull request #1580 from badosu/fix-error-collection
Fix error collection on Song instead of MainWindow
2015-01-08 14:58:02 -05:00
Amadeus Folego
fc9efc6f58 Fix error collection on Song instead of MainWindow 2015-01-08 17:47:39 -02:00
Tres Finocchiaro
4f44c71a9f Merge pull request #1579 from badosu/notify-non-existing-samples
Collect error for non existing samples
2015-01-08 14:33:06 -05:00
Amadeus Folego
d5c9b78178 Collect error for non existing samples 2015-01-08 16:13:15 -02:00
Amadeus Folego
1dbc44a7f0 Refactor redundant pattern color assignment
Instead of creating a new QColor for each condition just use the
`setRgb` method or fix the conditions order.
2015-01-08 14:37:10 -02:00
Tres Finocchiaro
86d7e24eb1 Merge pull request #1574 from curlymorphic/i1388
Proposed fix 1388 Remove auto-naming of copied blocks
2015-01-08 10:52:42 -05:00
Lukas W
7f2f9f2685 Merge branch 'master' into ed_refac 2015-01-08 10:49:09 +01:00
Raine M. Ekman
471cb04dc9 Removed #ifdefs around assert()s. 2015-01-08 10:28:29 +01:00
Raine M. Ekman
94a779f3c6 Add -DLMMS_DEBUG to CMAKE_CXX_FLAGS_DEBUG 2015-01-08 10:28:29 +01:00
Lukas W
b5da3bf1ee Mailmap entries 2015-01-08 10:28:29 +01:00
Raine M. Ekman
2954ea3b43 ...and prefer "debug.h" to a straight include of <assert.h> 2015-01-08 10:28:29 +01:00
Raine M. Ekman
78350045a2 Fix things that won't build if -DLMMS_DEBUG is in CXX_FLAGS. 2015-01-08 10:28:29 +01:00
Lukas W
a43a6bb3ba Travis: Make verbose output 2015-01-08 10:07:27 +01:00
Dave French
736c44ab8d 888 changed 48 to DefaultTicksPerTact/4 2015-01-08 08:37:07 +00:00
Dave French
7b3e4265b8 Proposed fix 1388 Remove auto-naming of copied blocks 2015-01-08 06:15:18 +00:00
Tres Finocchiaro
5bdc6a8818 Merge pull request #1573 from tresf/master
Seems to fix #1565.  Merging.  If you know a more elegant way to fix this, please do! 👍
2015-01-07 23:51:00 -05:00
tresf
db6f3e6e50 Fix nes array bounds error 2015-01-07 23:28:16 -05:00
Lukas W
b7aaeaa009 Merge pull request #1554 from Spekular/master
Removes unnecessary cleanObject() calls and commented out code in automation flipping
2015-01-08 01:14:18 +01:00
Alexandre Almeida
c799500f31 Update ProjectVersion.cpp 2015-01-07 21:50:57 -02:00
Alexandre Almeida
bd9cb12294 Update ProjectVersion.h 2015-01-07 21:50:26 -02:00
Alexandre Almeida
9199d3e8c3 Update Plugin.h 2015-01-07 21:46:02 -02:00
Alexandre Almeida
d0e0d9a632 Update Plugin.cpp 2015-01-07 21:44:48 -02:00
Alexandre Almeida
918eea1063 Update Timeline.h 2015-01-07 21:14:55 -02:00
Alexandre Almeida
35b954741b Update Song.h 2015-01-07 21:14:29 -02:00
Alexandre Almeida
4ae194cd8b Update ProjectRenderer.cpp 2015-01-07 21:13:27 -02:00
Alexandre Almeida
06518054b2 Update Timeline.cpp 2015-01-07 21:12:50 -02:00
Alexandre Almeida
6c49c88bfd Update Mixer.cpp 2015-01-07 21:12:17 -02:00
Alexandre Almeida
ffb16b80c9 Update Song.cpp 2015-01-07 21:11:42 -02:00
Tres Finocchiaro
181dad5e3c Merge pull request #1568 from badosu/master
Fix muted track not highlighted on selection
2015-01-07 16:24:38 -05:00
Dave French
c0fc56eaea Proposed fix 888 Bar, Beat and Tick should follow dragged timeline 2015-01-07 20:08:18 +00:00
Amadeus Folego
421c071ab0 Fix muted track not highlighted on selection
Fix #1239
2015-01-07 15:55:58 -02:00
Vesa V
13bdfb4b13 Merge pull request #1551 from curlymorphic/eq
EQ Removed DBvModel
2015-01-07 15:27:01 +02:00
Lukas W
e0dbfa696e Remove Engine's has_gui option 2015-01-07 00:22:40 +01:00
Lukas W
748cccd266 Merge branch 'gui_application' into ed_refac
Conflicts:
	src/core/Song.cpp
	src/gui/MainWindow.cpp
2015-01-07 00:03:32 +01:00
Lukas W
0c4833ca4a Adjust automation editor flip implementation 2015-01-06 23:40:14 +01:00
Lukas W
13357e57c4 Change default build type
* Remove hard-coded compile flags (-O2 and -g)
* Make Release the default build type

Fixes #1552
2015-01-06 23:07:28 +01:00
Lukas W
23e0e0fb8e Merge branch 'master' into ed_refac
Conflicts:
	include/AutomationEditor.h
	include/SongEditor.h
	plugins/delay/delaycontrols.cpp
	plugins/delay/delaycontrolsdialog.cpp
	src/gui/editors/AutomationEditor.cpp
	src/gui/editors/BBEditor.cpp
	src/gui/editors/PianoRoll.cpp
2015-01-06 23:05:13 +01:00
Daniel Winzen
01fac0d342 Add default behaviour to switch 2015-01-06 18:50:51 +01:00
Daniel Winzen
7440794597 Don't display resize cursor for non-resizable TCOs 2015-01-06 18:18:16 +01:00
Lukas W
068066929f Merge commit 'b5538c7da818cbcdde5ff1c885ce4eee5b626f3b' into ed_refac
Conflicts:
	plugins/audio_file_processor/audio_file_processor.cpp
	plugins/delay/delaycontrols.cpp
	plugins/delay/delaycontrolsdialog.cpp
	plugins/delay/delayeffect.cpp
	src/gui/MainWindow.cpp
2015-01-06 16:33:41 +01:00
Lukas W
1706279ed1 Merge commit '25ab7260f5cc57075360c976826e13434ade058c' into ed_refac 2015-01-06 16:13:16 +01:00
Lukas W
834be948ee Merge commit 'f7741f184f83e6b9e2f081d39efffb2c499962f6' into ed_refac 2015-01-06 16:11:39 +01:00
Tres Finocchiaro
e2e8537b1d Merge pull request #1546 from DanWin/disbackup
Make saving of .bak files configurable
2015-01-06 10:02:14 -05:00
Lukas W
0df3998f95 Move some gui initialization to GuiApplication's constructor 2015-01-06 15:59:15 +01:00
Tres Finocchiaro
814aba053e Merge pull request #1560 from curlymorphic/i1350
Proposed fix for 1350 Minimized Song_Editor & BB_Editor tracks should no...
2015-01-05 21:04:21 -05:00
Alexandre Almeida
65ff9171de Update coding conventions 2015-01-05 22:11:23 -02:00
Alexandre Almeida
ba20c99a51 Update coding conventions 2015-01-05 22:10:09 -02:00
Dave French
f57d98fb0b Proposed fix for 1350 Minimized Song_Editor & BB_Editor tracks should not allow graphics to be cut off. 2015-01-06 00:09:08 +00:00
Alexandre Almeida
87f6dd0a03 Update coding conventions on Note.h 2015-01-05 20:45:46 -02:00
Alexandre Almeida
ce972c5e50 Update coding conventions on Note.cpp 2015-01-05 20:45:07 -02:00
Dave French
3c44012def Proposed fix for 1522 Noise at the end of Sample previews 2015-01-05 21:41:48 +00:00
Dave French
7588f235ee Proposed fix for 1352 Mk2, move the loaded instrument to the parent thread 2015-01-05 18:39:44 +00:00
Raine M. Ekman
2818bd736a Looks like locking the mutex in SF2 player is needed around a few more
operations than before, at least while importing MIDI. Should fix #1544
2015-01-05 17:40:14 +02:00
Spekular
6e1e73b41f Removes unnecessary cleanObject() calls and commented out code 2015-01-05 16:07:25 +01:00
Dave French
8b83dad22c EQ Removed DBvModel 2015-01-04 17:19:32 +00:00
Vesa V
e5c4df372e Merge pull request #1550 from LMMS/revert-1519-i1352
Revert "Proposed fix for 1352  Ifreeze when adding instruments or moving...
2015-01-04 18:49:15 +02:00
Vesa V
1bb6fa072f Revert "Proposed fix for 1352 Ifreeze when adding instruments or moving mixer tracks" 2015-01-04 18:48:12 +02:00
Vesa V
9a98adaaed Merge pull request #1549 from diizy/master
Fix preview crash caused by earlier commit
2015-01-04 18:47:53 +02:00
Vesa
0cbb506f50 Fix preview crash caused by earlier commit 2015-01-04 18:47:05 +02:00
Vesa V
a9de1160eb Merge pull request #1528 from curlymorphic/eq
Eq 1443 updates
2015-01-04 18:14:33 +02:00
Vesa V
b874d3fa2e Merge pull request #1545 from DanWin/channel
Add "Remove unused channels" option to FX-Mixer
2015-01-04 18:08:04 +02:00
Vesa
5ae9adc9c2 Merge branch 'stable-1.1' 2015-01-04 17:33:20 +02:00
Daniel Winzen
5e4752e041 Adjust coding style 2015-01-04 16:33:19 +01:00
Vesa V
d01c8f2ece Merge pull request #1495 from DanWin/window
Hide windows instead of closing them when clicking on close
2015-01-04 17:20:03 +02:00
Vesa V
469cb98be0 Merge pull request #1506 from curlymorphic/i1255
Proposed fix for 1255 Segment/clip not showing whole last note in Song E...
2015-01-04 17:17:25 +02:00
Vesa V
146577d34b Merge pull request #1516 from grejppi/master-mute
attempt to fix #1512
2015-01-04 17:15:17 +02:00
Vesa V
5fdc452476 Merge pull request #1542 from DanWin/export
Fix export for some locales
2015-01-04 17:05:14 +02:00
Tres Finocchiaro
545853cf06 Merge pull request #1548 from DanWin/scroll
Get correct value for scrollbar width
2015-01-04 08:41:43 -05:00
Daniel Winzen
c11a15d0d0 Get correct value for scrollbar width 2015-01-04 12:38:44 +01:00
Daniel Winzen
74bd58162e Make saving of .bak files configurable 2015-01-03 13:53:49 +01:00
Daniel Winzen
e6e8f28fc8 Don't count channels reveiving input from another channel as unused 2015-01-03 06:52:05 +01:00
Daniel Winzen
4043868992 Add "Remove unused channels" option to FX-Mixer
This makes it easier to delete all FX-Channels that are not in use.
2015-01-02 21:40:49 +01:00
Tres Finocchiaro
ebb2f75458 Merge pull request #1543 from rgwan/master
locale: Fixed some ugly translation in Chinese locale
2015-01-02 14:08:11 -05:00
rgwan
7789d64632 locale: Fixed some ugly translation in Chinese locale 2015-01-03 03:00:13 +08:00
Daniel Winzen
44f72b0f13 Added const 2015-01-02 14:21:39 +01:00
Daniel Winzen
93b6888394 Fix export for some locales 2015-01-02 13:08:11 +01:00
Daniel Winzen
25a3bc63ee Fallback to system default or English, if language unset 2015-01-01 00:06:32 +01:00
Dave French
420bc1b7ed Eq Gain Faders using dBv scale 2014-12-31 12:27:40 +00:00
Dave French
f67eaaced7 EQ changed gain faders to use dB 2014-12-31 00:14:44 +00:00
Vesa V
22c31008d4 Merge pull request #1529 from curlymorphic/i1527
Proposed fix 1527 Channel note on indicator doesn't fire when a very high note is played.
2014-12-30 16:27:39 +02:00
Dave French
1e25b91410 1527 removed socket slot for indicator activation 2014-12-30 14:07:28 +00:00
Dave French
6d4d958ec6 Proposed fix 1527 Not all Played Notes shows the indicator on the InstrumentTrackView 2014-12-29 22:48:54 +00:00
Dave French
22a603c9fd Eq Peak filters now use bandwidth instead of resonance 2014-12-29 21:45:54 +00:00
Dave French
89b3f8f98c Eq FloatText in widget display frequency 2014-12-29 19:46:12 +00:00
Dave French
76eba6456e EQ Seperate in out analysing toggle 2014-12-29 18:11:16 +00:00
Vesa V
6045c2c2bc Merge pull request #1519 from curlymorphic/i1352
Proposed fix for 1352  Ifreeze when adding instruments or moving mixer tracks
2014-12-29 12:39:48 +02:00
Tres Finocchiaro
f03702d4f4 Merge pull request #1513 from DanWin/cmd
Make command line project export working again
2014-12-28 22:08:37 -05:00
Tres Finocchiaro
23ec0e71c1 Merge pull request #1503 from badosu/master
Fix PianoRoll changing editMode outside window
2014-12-28 19:33:40 -05:00
Dave French
c203a5de3b Eq remove oversample and antialysing filter 2014-12-28 17:07:40 +00:00
Dave French
a485e9127e EQ increase shelfing filters minimum resonace. to make stable 2014-12-28 16:00:04 +00:00
Lukas W
b27a5f8d90 Merge pull request #1517 from grejppi/master-selectbox
clear brush for selection box
2014-12-27 23:36:05 +02:00
Lukas W
589ebdb8f3 Merge pull request #1498 from DanWin/translate
Generate translation files automatically
2014-12-27 22:27:45 +02:00
Dave French
d68f8d7302 Proposed fix for 1352 Instrument crash on loading 2014-12-27 17:47:31 +00:00
Hannu Haahti
1b688dc80b clear brush for selection box
(also get rid of some whitespace)
2014-12-27 13:30:01 +02:00
Hannu Haahti
bbbe515e58 attempt to fix #1512 2014-12-27 11:46:19 +02:00
Daniel Winzen
011dee2564 Fix some memory access issues 2014-12-26 19:06:03 +01:00
Daniel Winzen
21bd57b629 Make command line project export working again 2014-12-26 19:04:50 +01:00
Dave French
a42d8a04ea fix for 1255 added 1 pixel margin between border and top note 2014-12-26 17:57:05 +00:00
Vesa V
1cd8c0e2c4 Merge pull request #1510 from LMMS/stable-1.1
Stable 1.1
2014-12-26 19:40:35 +02:00
Vesa V
e503875a28 Merge pull request #1469 from DanWin/mem
Fix various memory leaks
2014-12-26 19:39:43 +02:00
Vesa V
22a2bf97ab Merge pull request #1509 from diizy/master
Some improvements in lmms_math
2014-12-26 19:35:13 +02:00
Vesa
44a2455429 Correct type in macros 2014-12-26 19:33:48 +02:00
Vesa
1a5c085aa2 Faster dbv/linear conversions, separate safe functions for when the extra safety (0/inf handling) is needed 2014-12-26 19:31:16 +02:00
Vesa V
86bb9daa63 Merge pull request #1507 from badosu/pianoroll-rouded-rect
Use rounded rectangles to draw notes
2014-12-26 19:25:49 +02:00
Amadeus Folego
34d28ebe63 Use rounded rectangles to draw notes 2014-12-26 15:07:19 -02:00
Dave French
8c2ebf287d Proposed fix for 1255 Segment/clip not showing whole last note in Song Editor 2014-12-26 12:33:00 +00:00
Dave French
cee287116b Proposed fix for 1150 Preset Browser: division between factory and user files fails if factory has folders 2014-12-26 11:00:26 +00:00
Amadeus Folego
2e1bfb47a5 Fix PianoRoll changing editMode outside window
If an user Ctrl+Clicked on a track, e.g. copying/muting it, but the
focus was still on the PianoRoll window the mode would change

Fix #1501
2014-12-26 07:14:27 -02:00
Daniel Winzen
df79601348 Generate translation files automatically
Instead of updating the binary translation files manually, update them automatically.
Now we only need to sync the *.ts files.
2014-12-25 21:55:38 +01:00
Daniel Winzen
41b756776f Add choose language option 2014-12-25 20:54:18 +01:00
Daniel Winzen
5bf095b6b9 Revert Zynaddsubfx changes 2014-12-24 20:08:14 +01:00
Vesa V
9e4db1417a Merge pull request #1486 from Spekular/master
Adds automation flipping.
2014-12-24 20:34:35 +02:00
Vesa
56ba799404 Use input signal to measure levels for autoquit in FX that can potentially mute the signal 2014-12-24 20:07:04 +02:00
Vesa
a34c6a1c58 Merge branch 'stable-1.1'
Conflicts:
	plugins/Amplifier/Amplifier.cpp
	plugins/audio_file_processor/audio_file_processor.cpp
2014-12-24 19:59:12 +02:00
Vesa
62df768896 Autoquit improvement: On effect plugins where it's possible for the FX to silence the output, measure the levels of the input signal for autoquit
This so that the effect won't be turned off when there's input that the effect is muting (eg. when you use the Amplifier to temporarily mute a signal)
2014-12-24 19:53:05 +02:00
Daniel Winzen
c353f81d59 Hide windows instead of closing them when clicking on close 2014-12-24 17:11:36 +01:00
Tres Finocchiaro
58d864a630 Merge pull request #1491 from curlymorphic/i929n2
Proposed fix for 929 AFP wave display
2014-12-24 08:59:27 -05:00
Tres Finocchiaro
3a126333f8 Merge pull request #1494 from DanWin/window
Fix size reset for maximized windows
2014-12-24 08:53:05 -05:00
Daniel Winzen
2921af35f5 Fix size reset for maximized windows 2014-12-24 10:59:22 +01:00
Vesa V
7c376a610b Merge pull request #1493 from curlymorphic/eq
EQ Fixes for 1443
2014-12-24 11:28:07 +02:00
Dave French
b5538c7da8 used newWaveView in constructor, to remove redundancy 2014-12-23 22:26:36 +00:00
Dave French
7527976804 EQ Fixes
analyser now disabled when not in view.
band vu meters now disable when analyser is disabled.
display nema changed to Equalizer.
set sample rate before frequency on LinkWitzRiley filters.
Grouped the setting of filterparameters into one function, and calc coefficent
 once if needed.
Made suitable function inline.
in and out vu meters now using both stereo channels
2014-12-23 21:57:20 +00:00
Spekular
ddbf9cd264 Fixes flipping visiblesegment horizontally 2014-12-23 19:29:51 +01:00
Spekular
bfeced7140 Code Cleanup 2014-12-23 19:29:51 +01:00
Spekular
eb0b0f5277 Adds automation flipping. 2014-12-23 19:29:50 +01:00
Tres Finocchiaro
122b845105 Bump version for stable-1.1 2014-12-23 12:48:41 -05:00
Vesa V
89d31629c8 Merge pull request #1470 from ranft/bugfix-brush-initialization
Bugfix brush initialization
2014-12-23 19:26:16 +02:00
Vesa V
28db09aca6 Merge pull request #1482 from curlymorphic/renderLoop
Render between loop markers
2014-12-23 19:20:55 +02:00
Dave French
76a1b8c2b6 Proposed fix for 929 AFP wave display 2014-12-23 16:29:04 +00:00
Dave
ee39cbe94d Merge pull request #16 from LMMS/stable-1.1
Stable 1.1
2014-12-23 16:15:28 +00:00
Tres Finocchiaro
e24b8d6a47 Merge pull request #1490 from curlymorphic/i1408
Proposed fix for #1408 Window Size in windowed and full screen modes.
2014-12-23 08:31:21 -05:00
Dave French
1945ed43be Proposed fox for 1408 Window size in window and full-screen modes 2014-12-23 12:57:19 +00:00
Vesa V
c8eb336ab2 Merge pull request #1489 from diizy/master
Remove moc
2014-12-23 13:24:30 +02:00
Vesa
a3ec5b7600 Remove moc 2014-12-23 13:23:58 +02:00
Vesa
a203ee4650 Merge branch 'stable-1.1'
Conflicts:
	plugins/delay/delaycontrols.cpp
	plugins/delay/delaycontrolsdialog.cpp
	plugins/delay/delayeffect.cpp
2014-12-23 13:21:03 +02:00
Dave
68835335d0 Merge pull request #13 from LMMS/master
From master
2014-12-23 10:15:48 +00:00
Vesa V
d261a5af15 Merge pull request #1487 from curlymorphic/flanger
Flanger correct calculation,
2014-12-23 11:39:24 +02:00
Dave French
dd27dc688a updated as per 1474 2014-12-23 09:33:13 +00:00
Vesa V
af66303fc4 Merge pull request #1485 from curlymorphic/delay-1.1
Delay effect   Clear buffer on load, correct use of interpolation, reformat
2014-12-23 11:31:41 +02:00
Dave French
6aae0e6897 change as of issue 1474 2014-12-23 09:17:16 +00:00
Dave French
eca59c30eb Flanger change Filenames to CamelCase 2014-12-22 22:52:47 +00:00
Dave French
7f47fc955d Flanger reformat, convert spaces to tabs 2014-12-22 22:25:55 +00:00
Dave French
b982fa4b4c Flanger correct interpolate calculation 2014-12-22 22:22:51 +00:00
Dave
27b822f30d Merge pull request #12 from LMMS/master
from master
2014-12-22 21:34:46 +00:00
Tres Finocchiaro
ef7d3ff328 Merge pull request #1479 from DanWin/title
reset window title every time we change the state of a subwindow to show...
2014-12-22 16:17:32 -05:00
Dave French
8529f6a0a4 Added Export between loop markers as a checkbox, to the Export Project dialog 2014-12-22 20:55:09 +00:00
Dave French
a0d07db8f1 Delay Clear buffer on load, correct use of interpolation, reformat 2014-12-22 19:29:41 +00:00
Tres Finocchiaro
a7ebc70f07 Merge pull request #1443 from curlymorphic/eq
Eq plugin
2014-12-22 08:16:50 -05:00
Vesa V
c7e3dc716c Merge pull request #1483 from diizy/master
Delay.h fix
2014-12-22 14:45:33 +02:00
Vesa
13b1220d16 Delay.h fix 2014-12-22 14:45:17 +02:00
Vesa V
afa30c300a Merge pull request #1462 from diizy/crossovereq
Changes to interpolation (explicitly use fma more), some new DSP buildin...
2014-12-22 14:41:53 +02:00
Vesa
6a89615d33 Merge branch 'stable-1.1' 2014-12-22 14:36:54 +02:00
Daniel Winzen
36d02b9887 Fix memory leaks in Audio setup tab in the settings dialog 2014-12-22 11:42:35 +01:00
Lukas W
25ab7260f5 Merge pull request #1461 from DanWin/stable-1.1
German translation update
2014-12-22 11:53:45 +02:00
Tres Finocchiaro
dd053b99d2 Fix whitespace 2014-12-22 00:31:50 -05:00
Tres Finocchiaro
3886cd43a9 Merge pull request #1478 from curlymorphic/i856
Proposed fix for 856 Recursive VST Effect Enhancement Request
2014-12-22 00:27:57 -05:00
Dave French
5fc1b36f6f 856 reformat 2014-12-22 05:17:53 +00:00
Dave French
5172acb1e3 Proposed fix for 1049 VST knobs won't remember settings 2014-12-21 23:34:08 -05:00
Tres Finocchiaro
c4b43061bd Merge pull request #1480 from curlymorphic/i1049
Proposed fix for 1049 VST knobs won't remember settings
2014-12-21 23:20:22 -05:00
Tres Finocchiaro
6d8472433c Merge pull request #1481 from curlymorphic/i1080
Proposed fix 1080 Panning Sample tracks
2014-12-21 23:16:20 -05:00
Dave French
a4359ec584 1080 save and load pan settings 2014-12-21 23:36:42 +00:00
Dave French
8f12d483a7 Render between loop markers 2014-12-21 19:59:29 +00:00
Dave
0bbc963ee2 Merge pull request #11 from LMMS/master
from LMMS:master
2014-12-21 16:43:45 +00:00
Dave French
188f3714d7 Proposed fix 1080 Panning Sample tracks 2014-12-21 16:10:43 +00:00
Dave French
cc74273f60 Proposed fix for 1049 VST knobs won't remember settings 2014-12-21 14:19:48 +00:00
Dave French
f54540dea7 856 now loads absolute and relative paths correctly 2014-12-21 10:51:11 +00:00
Daniel Winzen
2ee8f1445c reset window title every time we change the state of a subwindow to show the correct title
When maximizing a subwindow it remembers the title the mainwindow had before and resets it after unmaximizing/closing.
As the title might have changed due to a project switch, we have to reset the title again as it would else show an incorrect/old title.
2014-12-21 10:18:55 +01:00
Dave French
0d44dc6ac5 Proposed fix for 856 Recursive VST Effect Enhancement Request 2014-12-21 03:38:11 +00:00
Tres Finocchiaro
635e92ab50 Merge pull request #1476 from curlymorphic/i1194
Proposed fix for Render from beginning (not play head)
2014-12-20 22:19:00 -05:00
Dave French
5f5d405552 Render from start of track. 2014-12-20 22:33:29 +00:00
Daniel Winzen
e0f7ea57ac Check if object already exists instead of deleting and recreating it 2014-12-20 16:30:28 +01:00
Daniel Winzen
0a732fbc04 Fix mismatched free() / delete / delete [] in RmsHelper.h 2014-12-20 09:07:21 +01:00
Daniel Winzen
b59a50133a Fix memory leaks in ZynAddSubFX 2014-12-19 21:35:43 +01:00
Daniel Winzen
ddbb180800 Fix memory leaks in LADSPA plugins 2014-12-19 21:33:49 +01:00
Rüdiger Ranft
91124495eb Merge upstream changes. 2014-12-19 17:21:16 +01:00
Rüdiger Ranft
7cc080efbd Added the initialization of the active mixer brush. 2014-12-19 17:13:29 +01:00
Rüdiger Ranft
8d6a17a047 Merge Brush-Bugfix 2014-12-19 17:00:09 +01:00
Rüdiger Ranft
17df759e59 Fixed the brush initialization.
The brushes are now initialized as solid colored, in order to fix drawing
problems.
2014-12-19 16:54:37 +01:00
Vesa
c0415ce3b3 Changes to interpolation (explicitly use fma more), some new DSP building blocks
New file: Delay.h - contains some simple delay effects for use in DSP - perhaps for designing reverbs or similar. All are in double precision because why not.
2014-12-18 22:36:39 +02:00
Daniel Winzen
f7741f184f German translation update 2014-12-18 20:58:12 +01:00
Vesa V
3ad6d6ca7a Merge pull request #1459 from DanWin/stable-1.1
More memory fixes
2014-12-18 04:02:59 +02:00
Lukas W
1ee93409d1 Move Engine' GUI code to new GuiApplication class 2014-12-17 23:25:55 +01:00
Daniel Winzen
0891c53582 More memory fixes
This fixes memory leaks in ZASF and Controller. It also sets an uninitalised variable in audio_file_processor.
2014-12-17 21:01:26 +01:00
Tres Finocchiaro
3c5d940561 Fix ifdef typo leftover from clang fix 2014-12-17 14:20:58 -05:00
tresf
448b783e8b Fix compilation on Xcode 4.6 2014-12-17 13:43:14 -05:00
Tres Finocchiaro
85da25fe2a better naming consistency with windows builds
i.e. `LMMS 1.1.0.dmg` will now be `lmms-1.1.0-mac10.7.dmg`
2014-12-17 12:59:36 -05:00
Dave
0084dc461f Merge pull request #10 from curlymorphic/eqFix
Eq fix
2014-12-17 13:07:34 +00:00
Dave French
fae0c8c74e EQ 2014-12-17 12:44:22 +00:00
Dave French
01c8cbcde0 EQ remove EXPORT from EqFader 2014-12-17 12:28:03 +00:00
Lukas W
eb79701acc Merge branch 'master' into ed_refac 2014-12-17 11:35:42 +01:00
Lukas W
657fb06c49 More Automation refactoring 2014-12-17 11:34:57 +01:00
Tres Finocchiaro
db551b9f43 Merge pull request #1457 from curlymorphic/fader
Added EXPORT macro to Fader, to allow use in plugins on windows
2014-12-17 00:20:00 -05:00
Dave French
bac22e9607 EQ tidy up, 2014-12-17 02:57:49 +00:00
Dave French
43ad2d52bd added EXPORT to Fader to allow use in plugins in windows builds 2014-12-17 01:32:10 +00:00
Dave
6df00fffdf Merge pull request #8 from LMMS/master
merge from master
2014-12-17 01:17:15 +00:00
Dave French
2a448e9242 EQ cleaning up memory management 2014-12-16 23:02:45 +00:00
Vesa V
28ec70decd Merge pull request #1456 from diizy/crossovereq
LR filter -> direct form 2
2014-12-17 00:59:10 +02:00
Vesa V
fa86a2cdac Merge pull request #1455 from LMMS/stable-1.1
Stable 1.1
2014-12-17 00:49:14 +02:00
Vesa V
de56c989e9 Merge pull request #1454 from DanWin/stable-1.1
Remove RackView widget before deleting the ChannelView (Rebase for stable-1.1 of #1448 )
2014-12-17 00:48:47 +02:00
Vesa
8402bcb525 LR filter -> direct form 2 2014-12-16 23:49:39 +02:00
Daniel Winzen
d21f0a7114 Remove RackView widget before deleting the ChannelView
Fixes the following two errors I spotted using valgrind:
When deleting a channel;
==936== Invalid read of size 8
==936==    at 0x56FA1D: FxMixerView::deleteChannel(int) (FxMixerView.cpp:374)
==936==    by 0x60E9A79: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6)
==936==    by 0x5216BF1: QAction::triggered(bool) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6)
==936==    by 0x52185C2: QAction::activate(QAction::ActionEvent) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6)
==936==  Address 0x14d51b90 is 32 bytes inside a block of size 40 free'd
==936==    at 0x4C2C2E0: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==936==    by 0x56F9ED: FxMixerView::deleteChannel(int) (FxMixerView.cpp:370)
==936==    by 0x60E9A79: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6)
==936==    by 0x5216BF1: QAction::triggered(bool) (in /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.6)

When loading a new project after adding some channels:
==936== Invalid read of size 8
==936==    at 0x570785: FxMixerView::refreshDisplay() (FxMixerView.cpp:202)
==936==    by 0x4B590E: Song::clearProject() (Song.cpp:740)
==936==    by 0x4B7885: Song::createNewProject() (Song.cpp:817)
==936==    by 0x60E9A79: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6)
==936==  Address 0x56a12ab0 is 32 bytes inside a block of size 40 free'd
==936==    at 0x4C2C2E0: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==936==    by 0x57075B: FxMixerView::refreshDisplay() (FxMixerView.cpp:201)
==936==    by 0x4B590E: Song::clearProject() (Song.cpp:740)
==936==    by 0x4B7885: Song::createNewProject() (Song.cpp:817)
2014-12-16 22:46:37 +01:00
Vesa
6f23ef7df2 Merge branch 'stable-1.1'
Conflicts:
	plugins/DualFilter/DualFilterControls.cpp
	src/gui/PluginBrowser.cpp
2014-12-16 23:12:02 +02:00
Vesa V
347b5a121d Update papu_instrument.cpp 2014-12-16 23:02:00 +02:00
Vesa V
da6fd6ef5c Update opl2instrument.cpp 2014-12-16 23:00:14 +02:00
Tres Finocchiaro
ed0dc6770d Merge pull request #1453 from falkTX/stable-1.1
Fix for updated Carla API, and fix build on old linux systems
2014-12-16 15:49:01 -05:00
Tres Finocchiaro
f65ec07603 Bump version 2014-12-16 15:32:20 -05:00
falkTX
f2ab783db9 Fix build when using old linux systems 2014-12-16 19:40:31 +00:00
falkTX
91063ab7d2 Update Carla plugin to latest API 2014-12-16 19:40:02 +00:00
Tres Finocchiaro
b789eb9a69 Merge pull request #1449 from curlymorphic/I1432
Proposed fix for issue 1432 LB302 preset preview audio cut-off
2014-12-16 12:30:03 -05:00
Tres Finocchiaro
569c83101a Merge pull request #1451 from curlymorphic/i1450
Proposed fix for 1450 Mem leak in sample-track
2014-12-16 12:23:39 -05:00
Dave French
8b2ce06da8 Proposed fix for 1450 Mem leak in sample-track 2014-12-16 16:41:08 +00:00
Dave French
8d3637e754 Proposed fix for #1411 Crash on LB302 preset preview . 2014-12-16 16:51:06 +01:00
Tres Finocchiaro
c6a22747da Merge pull request #1433 from Sti2nd/stable-1.1
New SnareMarch preset and updated KickPower

No objections after a week, merging. -Tres
2014-12-16 10:48:42 -05:00
Dave French
6fb8df486f EQ changed file and directory names to CamelCase 2014-12-16 14:25:56 +00:00
Tres Finocchiaro
5e8e52ff27 Merge pull request #1447 from curlymorphic/1411
Proposed fix for #1411 Crash on LB302 preset preview .
2014-12-16 08:53:59 -05:00
Dave French
f27ea7bc2b Proposed fix for #1432 LB302 preset preview audio cut-off 2014-12-15 21:40:58 +00:00
Dave
2aa7b64938 Merge pull request #7 from LMMS/stable-1.1
merge LMMS/lmms
2014-12-15 16:37:53 +00:00
Dave French
f357bc7291 Proposed fix for #1411 Crash on LB302 preset preview . 2014-12-15 15:54:05 +00:00
Dave
b00906983b Merge pull request #3 from LMMS/master
Merge from master, for updated LR4 filters
2014-12-15 12:50:49 +00:00
Dave French
47e6f3b614 EQ Change colors used, to be more accessable. 2014-12-15 12:38:51 +00:00
Vesa V
24f8bd4c20 Merge pull request #1445 from diizy/crossovereq
Crossover EQ initial commit, also fix bugs in LR4 filter and Fader
2014-12-15 10:45:00 +02:00
Vesa
0789bae53a Crossover EQ initial commit, also fix bugs in LR4 filter and Fader 2014-12-15 10:41:43 +02:00
Dave French
b595d432d9 EQ Fixed so builds on win, Changed display colors, made res lines thinner 2014-12-14 21:13:20 +00:00
Dave French
c5c9b59167 EQ
changed makefile to allow windows build on travis
2014-12-14 00:09:30 +00:00
Dave French
7536584386 EQ
remove unused files
2014-12-13 22:03:15 +00:00
Dave French
f64ca3ff45 EQ
Clean up of code
2014-12-13 21:54:50 +00:00
Dave French
77fd245c48 EQ updates to UI, Initial Ui complete 2014-12-13 20:35:50 +00:00
Tres Finocchiaro
e6ae2be65a Bump DualFilter high cutoff to 20k
Closes #1395.
2014-12-13 12:19:20 -05:00
Tres Finocchiaro
a182a3e8cc Fix scroll bar gap
Closes #1437
2014-12-13 12:11:31 -05:00
Tres Finocchiaro
90bb470642 Merge pull request #1442 from tresf/stable-1.1
Check major/minor version before setting theme directory
2014-12-13 08:46:06 -08:00
tresf
a8924a34dd Check major/minor version before setting theme directory 2014-12-13 11:27:14 -05:00
Dave
0f6a2e5732 Merge pull request #2 from curlymorphic/master
rebase from master
2014-12-13 16:10:20 +00:00
Dave
a774e5dabe Merge pull request #1 from LMMS/master
rebase from master
2014-12-13 16:08:12 +00:00
Dave French
08821a7290 EQ update
filters before downsampling changed
ignore wet dry knob
scale lines on widget
filter type switch loading correctly
analyser code all move to one location
implment analyze button
remove redundant code
analyser display omprovments
2014-12-13 15:55:28 +00:00
Vesa V
7b61c54f3a Merge pull request #1441 from diizy/master
More fixes (Bitcrush, Linkwitz-Riley filter)
2014-12-13 16:29:52 +02:00
Vesa
4266de7830 More fixes (Bitcrush, Linkwitz-Riley filter) 2014-12-13 16:28:44 +02:00
Vesa V
0da847f943 Merge pull request #1440 from LMMS/stable-1.1
Update FxMixer.cpp
2014-12-13 13:06:28 +02:00
Vesa V
73cad09968 Update FxMixer.cpp
prevent double adding of jobs
2014-12-13 13:05:50 +02:00
Vesa V
46d9b594e8 Merge pull request #1439 from diizy/master
Bitcrush: small improvement, also add some stuff to math & constants
2014-12-13 11:48:56 +02:00
Vesa
1ad5ef22d7 Bitcrush: small improvement, also add some stuff to math & constants
Constants:
- calculate all in long double so as to improve the accuracy of our pre-calculated constants
- add some possibly useful constants: reciprocal of pi, square of pi, and reciprocal of e
Math:
- new math convenience functions: absMax, absMin
2014-12-13 11:26:15 +02:00
Lukas W
11cb8b5d68 Automation Editor tension fix 2014-12-12 10:51:15 +01:00
dave
a7831a7cca Draw grid lines on widget 2014-12-11 16:52:06 +00:00
Lukas W
787788870b Introduce ActionGroup subclass 2014-12-11 12:56:51 +01:00
Lukas W
02869b13dd Editors: Some cleanups 2014-12-11 11:24:26 +01:00
Lukas W
9b6612c396 PianoRoll rename fix 2014-12-11 10:38:04 +01:00
Vesa V
57691c9c3f Merge pull request #1434 from curlymorphic/fader
updated Fader to use setHintText
2014-12-11 08:20:43 +02:00
Lukas W
ebbec2f270 Editor: Add edit mode support 2014-12-11 02:39:04 +01:00
Lukas W
1d07a91a83 PianoRoll: Coding style updates 2014-12-11 01:49:59 +01:00
dave
9c9e9db164 spectrum analysis implemented 2014-12-11 00:08:42 +00:00
dave
4710360ce5 updated Fader to use setHintText
enables setting of the display text.
2014-12-10 23:47:07 +00:00
Stian Jørgensrud
60ad2c8aa0 New SnareMarch preset and updated KickPower
The snare sounds like it would be used for marching. If you can make it
brighter without making it sound funny, please do...

The kick was too dark for general purpose. Shortened it, raised it in
the frequency range and added more noise.
2014-12-11 00:24:52 +01:00
dave
1595c2728e re initial, no working fft, faders, checkboxes 2014-12-10 08:44:25 +00:00
Vesa V
d20b1e9bb6 Merge pull request #1431 from diizy/master
Fader: add a way to disable the x100 display conversion so the fader wid...
2014-12-10 06:58:17 +02:00
Vesa
170f60c8e0 Fader: add a way to disable the x100 display conversion so the fader widget can be used with arbitrary values
Also it can now be used with alternate pixmaps
2014-12-10 06:55:59 +02:00
Vesa
150b16bd15 Merge branch 'stable-1.1'
Conflicts:
	include/lmms_math.h
	plugins/delay/delaycontrolsdialog.cpp
	src/core/FxMixer.cpp
	src/gui/FxMixerView.cpp
2014-12-10 01:38:17 +02:00
Vesa
4a6257a47c Fix master channel peak display
Fix #1427

Conflicts:

	src/core/FxMixer.cpp
	src/gui/FxMixerView.cpp
2014-12-10 01:33:49 +02:00
Vesa V
ebc519c296 Merge pull request #1430 from diizy/master
Fix master channel peak display
2014-12-10 01:30:31 +02:00
Vesa
fbc6de857a Fix master channel peak display
Fix #1427
2014-12-10 01:28:14 +02:00
Vesa V
891ab058eb Merge pull request #1425 from tresf/stable-1.1
Cleanup fmaf() usage, move to lmms_math.h
2014-12-09 17:27:07 +02:00
Tres Finocchiaro
bbe337bd03 Use correct FMA_ macros 2014-12-09 08:28:00 -05:00
Lukas W
b39225ac6a Merge pull request #1422 from curlymorphic/removewhitespace
Remove white space from Knob::setHintText calls
2014-12-09 02:32:16 +02:00
dave
2295545ac6 Remove whitespace from setHintText, change spaces to tabs 2014-12-08 23:48:44 +00:00
Lukas W
7c508f7900 Merge master into ed_refac 2014-12-09 00:20:28 +01:00
Lukas W
b25765ddb8 Move Editors to src/gui/editors subdirectory 2014-12-08 23:43:31 +01:00
Lukas W
51f59293ce Rename Timeline to TimeLineWidget 2014-12-08 23:38:38 +01:00
Lukas W
409e8f2700 AutomationEditor style updates 2014-12-08 23:36:02 +01:00
Lukas W
47cbc9e7f9 AutomationEditor + PianoRoll: Move Copy/Paste shortcuts 2014-12-08 22:58:11 +01:00
Lukas W
b661e0871b PianoRoll: Slot renames 2014-12-08 22:33:37 +01:00
Lukas W
968e581844 Editors: Don't use ToolButton 2014-12-08 22:25:52 +01:00
Lukas W
32da8cb677 Editor: Don't use ToolButton 2014-12-08 21:22:52 +01:00
Tres Finocchiaro
7431e77229 More fmal() fixes 2014-12-08 14:42:19 -05:00
Lukas W
ed8e30b4ee Small const fix 2014-12-08 20:19:51 +01:00
Lukas W
f131fbd877 Editors: Add to workspace in MainWindow class, not in themselves 2014-12-08 19:22:52 +01:00
Lukas W
7a21d699ea SongEditor: Some renames 2014-12-08 18:46:10 +01:00
Tres Finocchiaro
5a0dfdd3c0 minor fmaf() formatting fix. 2014-12-08 12:45:31 -05:00
Tres Finocchiaro
76d766fe25 fmaf() code cleanup, typos 2014-12-08 12:30:16 -05:00
Lukas W
11898a5162 Move Timeline.cpp to gui directory 2014-12-08 18:25:10 +01:00
Lukas W
d029c8513a BBEditor: Use Editor superclass 2014-12-08 18:23:01 +01:00
Tres Finocchiaro
591acbf732 fastFmaf() formatting fixes 2014-12-08 12:22:33 -05:00
Tres Finocchiaro
56d0910533 Cleanup fmaf() usage, move to lmms_math.h 2014-12-08 12:20:47 -05:00
Lukas W
4b275693b6 ToolBar css fixes 2014-12-08 17:12:38 +01:00
Lukas W
e9d841dec1 Migrate Timeline::addToolButtons to QToolBar 2014-12-08 16:53:31 +01:00
Lukas W
ec9158cda9 PianoRoll: Use Editor superclass 2014-12-08 16:48:10 +01:00
Tres Finocchiaro
6e01e8d4e0 Merge pull request #1424 from tresf/stable-1.1
Fix compilation on Apple/Clang (ambiguous fmaf())
2014-12-08 06:09:33 -08:00
Lukas W
d8db8948a8 Editor: Don't delete on close 2014-12-08 14:47:58 +01:00
dave
c997da29db missed a couple of + " ", all sored now 2014-12-08 11:02:41 +00:00
dave
4993eba3c1 Remove unused and unnessary +" " in all knob.setHintText calls 2014-12-08 10:57:21 +00:00
Vesa
2e8534955b Fix FX mixer race condition
Conflicts:

	src/core/FxMixer.cpp
2014-12-07 22:34:37 +02:00
Vesa V
77f2b56221 Merge pull request #1420 from diizy/master
Fix FX mixer race condition
2014-12-07 22:31:09 +02:00
Vesa
dbc404cca1 Fix FX mixer race condition 2014-12-07 22:29:23 +02:00
Vesa V
567f6de349 Merge pull request #1419 from diizy/master
Remove distortion from sv filters
2014-12-07 21:11:45 +02:00
Vesa
e7b7cf54bb Remove distortion from sv filters 2014-12-07 21:11:11 +02:00
Lukas W
86f2c866b6 Move play, record and stop signals to superclass 2014-12-07 18:50:40 +01:00
Lukas W
3e9cc61042 SongEditor: Use Editor superclass 2014-12-07 17:37:22 +01:00
Lukas W
02006f9855 Use Editor superclass in AutomationEditor
Split AutomationEditor -> AutomationEditor + AutomationEditorWindow
2014-12-07 12:48:49 +01:00
Lukas W
c6ee614012 Clean up ToolButton class 2014-12-07 11:53:32 +01:00
Lukas W
44b52ebd99 Add Editor superclass
Provides a toolbar with play, record and stop buttons.
2014-12-07 11:53:20 +01:00
Vesa V
82cd1ca65d Merge pull request #1415 from curlymorphic/Delay
Delay, added s postfix to knob values where applicable.
2014-12-07 00:38:21 +02:00
Vesa V
6b7ff58886 Merge pull request #1417 from diizy/bitcrush
Bitcrush effect plugin
2014-12-07 00:37:53 +02:00
Vesa V
68f5ccce64 Update lmms_math.h
oops, extra f
2014-12-07 00:12:19 +02:00
Vesa
f742854642 Bitcrush effect plugin 2014-12-07 00:07:30 +02:00
Dave
10ca77b31c Merge pull request #1 from LMMS/master
Rebase from original
2014-12-06 21:22:19 +00:00
dave
decac20298 Replaced whitespace in knob definitions, for consistancy 2014-12-06 19:47:39 +00:00
dave
4a2a60255c Added postfix "s" to knobs where relevant, cleaned up unintentional white space 2014-12-06 18:34:24 +00:00
dave
cefee3a721 added s postfix to knob values where applicable. 2014-12-06 18:28:19 +00:00
Vesa V
fd6e49c906 Merge pull request #1406 from csimons/unbind-keys
Removing focus from child windows upon hiding them.
2014-12-06 11:46:06 +02:00
Vesa V
0a839f8309 Merge pull request #1414 from csimons/dialog-titles
Adopt "Title Case" for dialog titles and menu text.
2014-12-06 11:42:20 +02:00
Vesa V
97a8705811 Merge pull request #1380 from softrabbit/journalling-killswitch
Master kill switch for journalling, useful when closing program.
2014-12-06 11:41:16 +02:00
Vesa V
074eada27f Merge pull request #1392 from curlymorphic/Delay
Delay Plugin, Changed default delay time to 0.5 seconds from 2.0.
2014-12-06 11:40:16 +02:00
Christopher L. Simons
ca973b9369 Upon toggling off a window, now attempting to focus SongEditor, then any other visible editors, or finally the parent window if all editors are hidden. 2014-12-06 03:46:41 -05:00
Christopher L. Simons
38b3279cf0 Setting menu titles in Title Case. 2014-12-05 20:40:22 -05:00
Christopher L. Simons
4ec1920b79 Setting dialog titles in Title Case. 2014-12-05 20:05:37 -05:00
Tres Finocchiaro
951663ec3d Merge pull request #1402 from mikobuntu/origin/stable-1.1
Added TR909-RimShot preset to Kicker Instrument. ( also reverted an old change i had made to zyn-globals.h )
2014-12-05 00:31:19 -05:00
Christopher L. Simons
5675b1a373 Removing focus from hidden windows upon hiding them. 2014-12-04 23:39:53 -05:00
Tres Finocchiaro
ee1b9ba7bc Merge pull request #1403 from csimons/vim-comments
Remove personal vim-config comments from source files.
2014-12-04 19:12:21 -05:00
Christopher L. Simons
63b353e07c Removed vim-config comment from SongEditor.cpp. 2014-12-04 16:03:45 -05:00
Christopher L. Simons
2425366b58 Removed vim-config comment from ExportProjectDialog.cpp. 2014-12-04 16:03:35 -05:00
Christopher L. Simons
809cad1b62 Removed vim-config comment from main.cpp. 2014-12-04 16:03:21 -05:00
Christopher L. Simons
3b2316e242 Removed vim-config comment from SampleBuffer.cpp. 2014-12-04 16:03:12 -05:00
mikobuntu
8c0ab4dfec Fixed naming of Kicker preset (RimShot to TR909-RimShot) 2014-12-04 20:55:39 +00:00
mikobuntu
762b667b47 Added TR909-RimShot preset to Kicker
:///home/mikobuntu/lmms/presets/Kicker/RimShot4.xpf
2014-12-04 19:56:54 +00:00
mikobuntu
fc6374a07b reverted changes to globals.h 2014-12-04 19:49:40 +00:00
Vesa V
e61476df04 Merge pull request #1400 from diizy/master
Transposed form of Linkwitz-Riley
2014-12-04 20:45:57 +02:00
Vesa
dcd0e81d86 Transposed form of Linkwitz-Riley 2014-12-04 20:43:37 +02:00
Vesa V
2b7df9d259 Merge pull request #1399 from diizy/master
Added 4th-order Linkwitz-Riley filter object to BasicFilters.h
2014-12-04 18:49:33 +02:00
Vesa
79bbe72055 Added 4th-order Linkwitz-Riley filter object to BasicFilters.h 2014-12-04 18:48:58 +02:00
Lukas W
d17b6c5328 LmmsStyle: Remove legacy code 2014-12-04 17:16:50 +01:00
dave
e7e8e79630 Changed default delay time to 0.5 seconds from 2.0. 2014-12-04 02:39:26 +00:00
Vesa V
31c7e36b72 Merge pull request #1386 from csimons/cleanup-null-pointer-deallocation-warnings
Cleaning up null-pointer-deallocation warnings.
2014-12-03 06:30:18 +02:00
Christopher L. Simons
b1414eba23 Cleaning up null-pointer-deallocation warnings. 2014-12-02 18:07:56 -05:00
Raine M. Ekman
c3c5501396 Master kill switch for journalling, useful when closing program. 2014-12-01 21:28:29 +02:00
Vesa V
1d929d6ce7 Merge pull request #1377 from diizy/multitap
Fix time
2014-12-01 09:47:25 +02:00
Vesa
4f62be89ed Fix time 2014-12-01 09:33:54 +02:00
Tres Finocchiaro
828dd625fa Bump version 2014-11-30 23:00:28 -05:00
Vesa V
e660f479b9 Merge pull request #1355 from curlymorphic/flanger
Flanger
2014-11-30 17:18:02 +02:00
Vesa V
0c69872067 Merge pull request #1375 from diizy/multitap
Multitap, filters, updates
2014-11-30 17:07:48 +02:00
Vesa
a9d0ba11d6 Multitap, filters, updates 2014-11-30 17:06:43 +02:00
Vesa
2a78769078 Merge branch 'stable-1.1' 2014-11-30 15:08:14 +02:00
Vesa V
d907aa1cba Merge pull request #1372 from diizy/multitap
Separate BiQuad, OnePole filters as their own classes in BasicFilters.h
2014-11-30 14:35:24 +02:00
Vesa
be04040ae8 Separate BiQuad, OnePole filters as their own classes in BasicFilters.h
Might do the same for other filter types, but these two are kind of "basic building blocks" for many effects so it makes most sense for them
2014-11-30 14:33:04 +02:00
Vesa V
5352293813 Update lmms_math.h
forgot inline
2014-11-30 02:26:10 +02:00
Vesa V
42ae62d757 Update lmms_math.h
fix fastSqrt
2014-11-30 02:22:23 +02:00
Vesa V
5e6482e17b Update lmms_math.h
better sqrt
2014-11-30 00:42:35 +02:00
Vesa V
1421631f26 Update lmms_math.h
add fast sqrt method
2014-11-29 23:22:39 +02:00
Vesa V
64d90066d9 Merge pull request #1370 from curlymorphic/issue1242
Fix for issue 1242 Buffer size frame rate should not cause a delay/latency at the start of rendered audio file.
2014-11-29 23:08:40 +02:00
dave
550d310a49 issue 1242
Skips first empty period,

  Engine::mixer()->nextBuffer(); is called in ProjectRenderer::run()
2014-11-29 20:44:34 +00:00
Vesa V
4cbb2b721f Update timeline.cpp
tab added
2014-11-29 21:52:21 +02:00
Vesa V
34ce79487c Merge pull request #1367 from curlymorphic/issue1293
fix for underlying bug 1293 loop markers
2014-11-29 21:50:58 +02:00
Vesa V
1d35b61846 Merge pull request #1369 from curlymorphic/issue1347
Issue 1347 Dual filter not loaded properly? rebased to stable-1.1
2014-11-29 21:49:19 +02:00
dave
05fd71190b fix for underlying bug 1293 loop markers
initilized m_moveXoff when moving loop markers
2014-11-29 11:41:27 +00:00
dave
e84c2465ee Added checks to
if( m_dfControls.m_filter1Model.isValueChanged() || m_filter1changed )
if( m_dfControls.m_filter2Model.isValueChanged() || m_filter2changed )

so the filter types get initilized
2014-11-28 22:26:45 +00:00
Vesa V
599046cc0f Merge pull request #1363 from diizy/multitap
Improve gfx
2014-11-28 08:18:53 +02:00
Vesa
920064fef9 Improve gfx 2014-11-28 08:18:16 +02:00
Vesa V
6324c18ec2 Merge pull request #1362 from diizy/multitap
Multitap Echo Delay
2014-11-28 03:59:12 +02:00
Vesa
13543bbf53 multitap.. 2014-11-28 03:56:46 +02:00
Vesa
7410174c8b Multitap 2014-11-28 03:19:21 +02:00
Vesa
13393900d2 Multitap initial 2014-11-28 00:35:14 +02:00
Vesa V
fb349ea386 Merge pull request #1361 from diizy/master
Fixed missed rename
2014-11-28 00:34:39 +02:00
Vesa
eaf4d80206 Fixed missed rename 2014-11-28 00:33:56 +02:00
dave
59641a43a3 Using fast_rand, FAST_MAX_RAND
Stopped accessing value() inside process loop
2014-11-27 19:30:40 +00:00
Vesa
06e5250628 Merge branch 'master' of github.com:LMMS/lmms 2014-11-27 21:16:04 +02:00
Vesa
cc4cf1c233 Pick ringbuffer updates from 2.0 2014-11-27 21:15:26 +02:00
dave
94047beffe Remove old code 2014-11-26 21:08:26 +00:00
dave
5b8514af73 Made lfo ammount control absolute 2014-11-26 21:04:42 +00:00
dave
bc8896b4ef inital commit, with new lmms class names 2014-11-26 19:59:57 +00:00
Lukas W
ad1e495557 Reflect renames in style.css 2014-11-26 13:54:26 +01:00
Lukas W
90b7afc136 Remove unused class TransformableAutoModel
Also remove .svnignore (I've always wanted to do this!)
And a file I accidentally committed
2014-11-26 13:37:52 +01:00
Vesa
ccf095a857 Merge branch 'stable-1.1'
Conflicts:
	plugins/delay/delaycontrolsdialog.cpp
	plugins/delay/delayeffect.cpp
2014-11-26 14:10:00 +02:00
Vesa V
2dd511da7d Merge pull request #1346 from Sti2nd/stable-1.1
Two new presets for Kicker
2014-11-26 14:06:43 +02:00
Vesa V
c25cf8a5cf Merge pull request #1351 from curlymorphic/stable-1.1
changed LFO amount to absolute value.
2014-11-26 14:05:21 +02:00
Vesa V
bdbedaddb9 Merge pull request #1353 from LMMS/rename
Rename old style classes and files [wip]
2014-11-26 13:59:45 +02:00
Lukas W
5f4cdac802 Merge branch 'master' into rename
Conflicts:
	src/core/Song.cpp
	src/gui/LfoControllerDialog.cpp
	src/tracks/InstrumentTrack.cpp
2014-11-26 11:45:55 +01:00
Lukas W
3f172c5a4c Rename tranformable_auto_model to TransformableAutoModel
I think this class isn't even used, probably safe to remove?
2014-11-26 11:33:01 +01:00
Lukas W
497c792871 Rename tabButton/tab_button 2014-11-26 11:03:35 +01:00
Lukas W
d57b51142d Rename basicFilters/basic_filters.h 2014-11-26 10:59:35 +01:00
Lukas W
6d4a6ed9cd Rename bbTrack, trackContentObject and friends 2014-11-26 10:53:47 +01:00
Lukas W
95798da9d0 Rename a lot of classes
* aboutDialog -> AboutDialog
* bbEditor -> BBEditor
* exportProjectDialog -> ExportProjectDialog
* setupDialog -> SetupDialog
* stringPairDrag -> StringPairDrag
2014-11-26 10:39:02 +01:00
Lukas W
7d4f179b4b Rename a lot of files
* about_dialog -> AboutDialog
* bb_editor -> BBEditor
* export_project_dialog -> ExportProjectDialog
* setup_dialog -> SetupDialog
* string_pair_drag -> StringPairDrag
2014-11-26 10:27:25 +01:00
Lukas W
1bbf7455a4 Rename a lot… 2014-11-26 10:09:49 +01:00
Lukas W
5b77abd9a5 Rename fixes 2014-11-26 01:46:12 +01:00
Lukas W
35d880a4ce Rename caption_menu to CaptionMenu 2014-11-26 01:26:38 +01:00
Lukas W
58ec27ef75 Rename automatable_slider to AutomatableSlider 2014-11-26 01:23:04 +01:00
Lukas W
c33bef346a Rename automatable_button to AutomatableButton 2014-11-26 01:21:42 +01:00
Lukas W
ac95123d41 Rename timeLine to Timeline 2014-11-26 01:18:07 +01:00
Lukas W
fec779ff70 Rename project_version to ProjectVersion 2014-11-26 01:16:26 +01:00
Lukas W
aaeb5216ad Rename note to Note 2014-11-26 01:14:52 +01:00
Lukas W
e045f1dd19 Rename fixes 2014-11-26 01:12:57 +01:00
Lukas W
178eadeb35 Rename ladspa_manager to LadspaManager 2014-11-26 01:12:22 +01:00
Lukas W
a9bc056400 Piano Roll: Don't switch to select mode when pressing Ctrl+A
Or don't act like we did. Fixes #431
2014-11-26 01:09:39 +01:00
Lukas W
394d8da286 When removing a track, remove its solo state
Fixes #1103
2014-11-26 01:09:33 +01:00
Lukas W
e7cbc55c69 Instrument view: Restrict mouse wheel tab switching
Only switch the view's tab when the mouse pointer is hovering over the tabs. Closes #712.
2014-11-26 01:07:53 +01:00
Lukas W
5b306ea845 Rename ladspa_2_lmms to Ladspa2LMMS 2014-11-26 00:52:25 +01:00
Lukas W
968909c07c Rename engine to Engine 2014-11-26 00:49:55 +01:00
Lukas W
84d9215880 Rename drumsynth to DrumSynth 2014-11-26 00:47:55 +01:00
Lukas W
c2360f593c Rename bb_track_container to BBTrackContainer 2014-11-26 00:46:49 +01:00
Lukas W
7d0e3945e5 Rename song to Song 2014-11-26 00:44:41 +01:00
dave
9b7738dc60 changed LFO ammount to absolute value. 2014-11-25 22:38:49 +00:00
Vesa
ed11ccbf50 Fix conflict 2014-11-25 21:29:00 +02:00
Vesa
eea784ce71 Merge branch 'master' of github.com:LMMS/lmms 2014-11-25 21:24:21 +02:00
Vesa
33665a2848 Merge branch 'stable-1.1'
Conflicts:
	include/Effect.h
	include/Plugin.h
2014-11-25 21:23:57 +02:00
Vesa V
435c64cc70 Merge pull request #1285 from grindhold/issue_55
Issue 55
2014-11-25 21:20:21 +02:00
Lukas W
14eb54d53e Piano Roll: Don't switch to select mode when pressing Ctrl+A
Or don't act like we did. Fixes #431
2014-11-25 20:18:35 +01:00
Vesa V
55c59a77bd Merge pull request #1327 from DanWin/stable-1.1
Fix most warnings and errors when generating translation files
2014-11-25 21:04:04 +02:00
Lukas W
ed2cd2dda5 Instrument view: Restrict mouse wheel tab switching
Only switch the view's tab when the mouse pointer is hovering over the tabs. Closes #712.
2014-11-25 18:42:41 +01:00
Lukas W
d318cbb1e7 Move track.h -> Track.h, track.cpp -> Track.cpp 2014-11-25 17:10:49 +01:00
Lukas W
9dfb1385cd Rename track class to Track 2014-11-25 17:03:39 +01:00
Lukas W
5d258cedf2 When removing a track, remove its solo state
Fixes #1103
2014-11-25 16:47:11 +01:00
Vesa V
79f71a932d Merge pull request #1349 from LMMS/stable-1.1
Stable 1.1
2014-11-25 13:17:46 +02:00
Lukas W
e935cb046e Fix header guards
Closes #177
2014-11-25 11:25:30 +01:00
Vesa V
334a567620 Merge pull request #1234 from floft/master
GIG Player Plugin
2014-11-25 07:03:12 +02:00
Vesa V
aed82571e3 Merge pull request #1342 from Umcaruje/stable-1.1
Fix old sourceforge links, update Readme
2014-11-25 07:01:11 +02:00
Lukas W
f231465e05 Rename plugin_browser to PluginBrowser 2014-11-25 01:10:59 +01:00
Lukas W
3a206071b1 Fix merge conflicts 2014-11-25 01:07:39 +01:00
Lukas W
02cbc89f0f Merge branch 'stable-1.1' of git@github.com:LMMS/lmms.git
Conflicts:
	src/gui/MainWindow.cpp
	src/gui/plugin_browser.cpp
2014-11-25 01:01:47 +01:00
Lukas W
e47c1242b8 Add scrollbar to instrument plugin browser
Fixes #959
2014-11-25 00:36:23 +01:00
Stian Jørgensrud
22ca36f764 Two new presets
The clap is nothing more than a dry clap. As of now there is a clap with
decay or something. I used two evenings to make the clap I wanted so I
figured other people maybe wanted a dry clap too. Of course it is
probably I who suck at adjusting knobs correctly, but I reckon there are
more of us. 😟

I probably didn't spend too much time on the kick, but as of now there
is only a trapkick in LMMS (kick with long delay), and though we agree
on that it is easy to make kicks in Kicker, it is even easier to use
existing presets and adjust a preexisting preset. So I missed a short
kick in LMMS, and so I made one.
2014-11-24 22:38:13 +01:00
Garrett
205056621c Fixed release samples never being deleted
I removed code in a previous commit that deleted ended samples since
that sometimes caused issues when the samples had loop points. However,
removing the code caused issues with the release samples. Thus, now it
removes ended samples only if they are release samples. Otherwise, the
keyup event and ADSR handle ending the note.
2014-11-23 14:24:51 -08:00
Tres Finocchiaro
27bff6f5d3 Merge pull request #1344 from midi-pascal/stable-1.1
Stable 1.1
2014-11-23 16:16:13 -05:00
pascal
e6ca46fabb Merge branch 'stable-1.1' of https://github.com/midi-pascal/lmms into stable-1.1 2014-11-23 15:44:38 -05:00
pascal
d1e50b9f32 Bug #1335
Hide Size and Maximize options from the intrument dialog
system menu since its size is fixed.
2014-11-23 15:24:42 -05:00
Daniel Winzen
3602aa316f Move Monstro macros back to headers 2014-11-23 19:58:00 +01:00
Umcaruje
180b293ce3 Fix old sourceforge links, update Readme 2014-11-23 19:55:34 +01:00
Daniel Winzen
ad844e72a3 Also scan headers for translatable strings 2014-11-23 19:54:51 +01:00
Garrett
366e799791 More What's This messages 2014-11-23 10:31:18 -08:00
Vesa V
09f2f60af3 Merge pull request #1304 from curlymorphic/stable-1.1
Tempo synced Delay Plugin
2014-11-23 15:16:26 +02:00
Vesa V
79b1c4df37 Merge pull request #1326 from DeRobyJ/stable-1.1
Italian Loca - Grammar Fix 01
2014-11-23 13:58:42 +02:00
dave
7e780fc057 Improved ui 2014-11-23 11:20:03 +00:00
Daniel Winzen
92930b2240 Update German translation 2014-11-21 21:40:26 +01:00
Daniel Winzen
df3a03f64c Add more missing Q_OBJECT macros 2014-11-21 21:08:48 +01:00
grindhold
61a380a2d4 renamed method logError to collectErrorForUI 2014-11-21 19:02:27 +01:00
Lukas W
22ec15f2d7 PianoRoll arrow key behaviour tweaks
* Ctrl + Left/Right moves selected notes by one bar
  (Old behaviour was to move the playnote)
  Closes #811
* Shift + Up/Down moves selected nodes by one semitone
  (Old behaviour was to ignore the Shift key and move the viewport)
  Closes #810
2014-11-21 17:04:46 +01:00
Lukas W
941ed33248 Travis: Install nsis 2014-11-21 16:58:04 +01:00
Daniel Winzen
a9a851d2f0 About dialog: Move involved tab into .ui file 2014-11-21 16:29:32 +01:00
Lukas W
9e245f7ca0 PianoRoll arrow key behaviour tweaks
* Ctrl + Left/Right moves selected notes by one bar
  (Old behaviour was to move the playnote)
  Closes #811
* Shift + Up/Down moves selected nodes by one semitone
  (Old behaviour was to ignore the Shift key and move the viewport)
  Closes #810
2014-11-21 14:42:11 +01:00
Vesa
af34230346 Merge branch 'stable-1.1'
Conflicts:
	data/locale/zh.ts
2014-11-21 14:06:12 +02:00
Vesa V
ac35d2e1dc Merge pull request #1334 from diizy/stable-1.1
Fix logscale saving
2014-11-21 14:03:04 +02:00
Vesa
1cd3c9be2c Fix logscale saving
User-set logscale property wasn't getting saved properly in projects, fixed now
2014-11-21 13:55:32 +02:00
Lukas W
1b2966dc37 CMakeLists.txt indentation 2014-11-21 11:48:40 +01:00
Lukas W
b3e30392f7 Remove some legacy code for Qt<4.4 2014-11-21 11:48:40 +01:00
Daniel Winzen
5c0829399f Fix moc_file inclusion in cmake files
This should fix the Windows builds
2014-11-21 07:16:45 +01:00
Daniel Winzen
3ca76d40ed Add missing Q_OBJECT macros in header files
Fixes 20 warnings similar to the following ones when generating a translation file with e.g. "make de.ts":
/home/daniel/Lmms/src/tracks/AutomationTrack.cpp:40: Class 'AutomationTrack' lacks Q_OBJECT macro
/home/daniel/Lmms/src/core/FxMixer.cpp:41: Class 'FxRoute' lacks Q_OBJECT macro
/home/daniel/Lmms/src/core/FxMixer.cpp:554: Class 'FxMixer' lacks Q_OBJECT macro
/home/daniel/Lmms/src/gui/widgets/MeterDialog.cpp:52: Class 'MeterDialog' lacks Q_OBJECT macro
...
2014-11-21 06:46:47 +01:00
grindhold
f954b07958 rudimentary errormessage for missing sf2-plugins 2014-11-20 22:27:19 +01:00
Vesa
00cb2b1b67 Sync 2014-11-20 18:58:56 +02:00
Lukas W
733e206b44 Travis: Install nsis 2014-11-20 09:17:52 +01:00
Tres Finocchiaro
06d5ee2ec3 Bump version
Skip RC 8 and go to RC 9 to avoid confusion, since RC 8 used in tresf/releases to test a bug
2014-11-20 00:03:01 -05:00
grindhold
69bf4b4a24 implemented proper behaviour for VST plugins 2014-11-20 01:47:13 +01:00
Tres Finocchiaro
e9db4f7152 Merge pull request #1330 from grindhold/issue_1328
Merged anyway. :)  Thanks again @grindhold.
2014-11-19 14:31:29 -05:00
Tres Finocchiaro
67c4f4fa14 Merge pull request #1331 from grindhold/stable-1.1
adjust height of setup_dialog for  stable-1.1

Closes #1328
2014-11-19 11:29:45 -05:00
grindhold
b09067e0b8 adjusted height of setup dialog 2014-11-19 17:10:44 +01:00
grindhold
4509bdcec6 adjusted height of setup dialog 2014-11-19 16:52:24 +01:00
dave
e0c10e030b Added linear interpolation , with help from Vesa 2014-11-18 20:38:39 +00:00
Daniel Winzen
1a1e012632 Revert "Add missing Q_OBJECT macros in header files"
This reverts commit 337003a3b0.
Seams to break Windows builds.
2014-11-18 20:20:10 +01:00
Daniel Winzen
337003a3b0 Add missing Q_OBJECT macros in header files
Fixes 20 warnings similar to the following ones when generating a translation file with e.g. "make de.ts":
/home/daniel/Lmms/src/tracks/AutomationTrack.cpp:40: Class 'AutomationTrack' lacks Q_OBJECT macro
/home/daniel/Lmms/src/core/FxMixer.cpp:41: Class 'FxRoute' lacks Q_OBJECT macro
/home/daniel/Lmms/src/core/FxMixer.cpp:554: Class 'FxMixer' lacks Q_OBJECT macro
/home/daniel/Lmms/src/gui/widgets/MeterDialog.cpp:52: Class 'MeterDialog' lacks Q_OBJECT macro
...
2014-11-18 19:38:26 +01:00
Garrett
76e182e586 Release only one note on keyup
Previously if you release a C4 then all C4 notes would be released. Now
it stores the pointer to the plugin data which is unique for each key
press and determines which to release based on the matching pointers.
2014-11-18 09:02:50 -08:00
Garrett
3f641c2c55 Make it work with MemoryManager 2014-11-18 08:30:31 -08:00
DeRobyJ
7df8878cc3 Italian Loca - Grammar Fix 01
Corrected one text: "Export Tracks" had a typo
2014-11-18 17:06:43 +01:00
Garrett
702e2a1ee3 Added loop support and fixed fine tunings
Now it'll honor the loop regions specified in the file and it'll
properly use the fine tuning for the samples if specified. Also,
modified the exponential decay code again since it was glitching at the
end of some notes for some reason.
2014-11-18 08:05:28 -08:00
Garrett
71b6814729 Change pitch of notes if PitchTrack is set
Now if a Gig file provides a few samples per octave, it'll change the
pitch of the sample specified for a note instead of just assuming it is
the right pitch.

Also, fixed issue where if attack length was zero the note would never
sound.
2014-11-18 08:05:28 -08:00
Garrett
2c0b1ef4b0 Use stack array for buffer instead of gig::buffer_t 2014-11-18 08:05:28 -08:00
Garrett
8693623758 Fixed resampling glitches when deleting notes
Moving the code to detect the sample rates of the currently used samples
after the code deleting notes seemed to fix these glitches. Also, fixed a
few ADSR issues that could have resulted in clipping in the attack or
glitching after the release.
2014-11-18 08:05:27 -08:00
Garrett
a251391249 Always use linear interpolation for resampling 2014-11-18 08:05:27 -08:00
Garrett
4e8508b8a3 Exponential decay for release instead of linear
It now sounds much more like the release in Linux Sampler.
2014-11-18 08:05:27 -08:00
Garrett
822a3c52bb Convert 24-bit data if on big endian system
This is needed since libgig returns 24-bit data in a little endian.
Note: untested as I don't have a big endian system.
2014-11-18 08:05:27 -08:00
Garrett
c0ad77dfca Stack buffers instead of allocating on the heap 2014-11-18 08:05:27 -08:00
Garrett
d1bf19ef4a Don't use "note" as a variable name 2014-11-18 08:05:27 -08:00
Garrett
d0a821947a Fixed resampling issues
When providing extra frames, libsamplerate stores the extras internally
and outputs them in the next period. But, when it has enough internally
to output a whole period, it just outputs the internal buffer while not
using any more input frames. Now I provide some extra frames, check to
see how many frames we used actually used, and update the sample
positions and ADSR accordingly.
2014-11-18 08:05:27 -08:00
Garrett
a679e4e938 Fixed detuned resampling
Apparently the most noticeable detuning issues were caused by rounding
error by integer division.
2014-11-18 08:05:27 -08:00
Garrett
07032260e8 configManager to ConfigManager rename 2014-11-18 08:05:27 -08:00
Garrett
3aaa7ac6c4 Coding style fixes 2014-11-18 08:05:27 -08:00
Garrett
5a3b8d3da1 Restructured into GigNotes which contain GigSamples
Now notes are added/removed by locking only a note mutex when pressing
or releasing a note. Then, while processing we actually find and play
the samples using libgig.
2014-11-18 08:05:27 -08:00
Garrett
74ded6b7ef Switched from std::list to QList 2014-11-18 08:05:26 -08:00
Garrett
0ae048b7a4 Added libgig-dev to Travis build 2014-11-18 08:05:26 -08:00
Garrett
473fda505a Removed unused images, replaced logo and background
They aren't all that great, but at least now it doesn't say that it's a
soundfont player.
2014-11-18 08:05:26 -08:00
Garrett
95726eafed Better ADSR support, fixed some segfaults
Now it supports a simple envelope using attack, decay1, sustain, and
release from the GIG file. I couldn't figure out what amplitude it
should go to after decay2 (if set), so currently that is unused.

It would segfault if you had notes being played and then switched the
instrument since the samples no longer exited. Now it'll delete all
notes when you switch GIG files.
2014-11-18 08:05:26 -08:00
Garrett
641be31d66 No more reference counts for GIG file instances
Since libgig can't really be used in a multithreaded way unless it was
somewhat rewritten, just use a separate instance of the file for each
new GIG file regardless of if we already have one open in the current
file. Since it's fast now, you can easily have quite a few very large
GIG files open and still have low latency.

Also removed C++11 requirement since I no longer need a move
constructor.
2014-11-18 08:05:26 -08:00
Garrett
96194bcee2 Stream instead of loading all into memory
Now, when you press a note, it won't have to load the entire sample into
memory before playing the note. This means that now you can play many
more notes without it glitching. Frequently, the entire note sample
isn't played, so before there was a lot of wasted processing time
converting the sample into float and doing sample rate conversions if
needed.

Also, perform sample rate conversion on the final rendered-out version
of all the combined notes for a period. This drastically decreases
processing time.

Note: currently having more than one instance causes glitching
2014-11-18 08:05:26 -08:00
Garrett
337cc833dd Multiple references load samples from one instance without segfault
Now it doesn't appear to segfault when multiple references to the same
instance try accessing samples at the same time. In libgig it said I
just have to create another decompression buffer for each thread. This
doesn't quite make the whole addNotes function thread safe since I still
hear missing notes. But, it's getting closer.
2014-11-18 08:05:26 -08:00
Garrett
261b436f08 Fixed second instance no name
Previously if you created a second instance of a certain GIG file, it
would set the name to an empty string since it didn't create a new
instance, only increased a reference count. Though, it still seg faults
eventually when the reference count is greater than one.
2014-11-18 08:05:26 -08:00
Garrett
85998a7b78 Rebased on master, minor changes 2014-11-18 08:05:26 -08:00
Garrett
d9b4511321 Mutex for note output, delete note after fade out
Hopefully the separate mutex for playing the samples reduces the
glitching. Deleting notes after fading out instead of after the entire
sample finished playing (with many zeros after the fade out) will reduce
the number of notes playing at the same time which should allow for more
actually-heard notes to be played.

Also, moved delete note code from release function into the rendering
the notes to the output function. This seemed to fix notes occasionally
not being released.
2014-11-18 08:05:26 -08:00
Garrett
5b7eb30756 Use release time as linear fade out time
This makes it sound better than before, so that pianos fade out like
expected and synths abruptly stop as intended. It's not the fully
implemented ADSR of the format, but it's better.
2014-11-18 08:05:26 -08:00
Garrett
f544caf18b Key changing dimension, 24-bit samples, locking
Support for 24-bit samples. It just so happens that the only GIG file I
have that is 24-bit also has the key changing dimension set, so I
implemented that so I could compare the output sound with that of Linux
Sampler. It still sounds different, brighter in LMMS. Not sure if that
has to do with gain, ADSR, or incorrect 24-bit decoding. I'm guessing
ADSR.

There were many crashing issues when playing notes when changing
patches/instruments. More locking, less crashing. However, this also
means that it is quite slow when playing a lot of notes with large
samples and converting sample rates. Linux Sampler amazingly can handle
36 or so keys being pressed at once whereas LMMS nowhere near that many
at the moment.
2014-11-18 08:05:26 -08:00
Garrett
cc59313ad9 Release samples, move constructors, attenuation
An initial implementation of playing release samples on key up. It seems
a bit messy at the moment. Wrote a move constructor since there's quite
a bit of passing around the gigNote class. Use attenuation so that notes
set their gain properly based on the information in the GIG file,
quite noticeable on some release samples.

Note that to support move constructors I enabled building the plugin
with the C++11 standard.
2014-11-18 08:05:25 -08:00
Garrett
a18061bdab GIG Player now uses correct velocity and changes sample rate properly
Fixed crashes when loading invalid file, but this required exceptions
since libgig throws exceptions, hence the changes to CMakeLists.txt.

If the sample rate is changed (e.g. on exporting at 48k when the samples
are at 44.1k), when playing the note convert each note individually to
the correct sample rate instead of converting the output from the notes
to the correct sample rate.

Save the instrument so we don't have to search the entire GIG file every
time we play a note. This should make it work better on computers that
don't have tons of RAM.

Currently there is a 0.5 second fade out time when the note is released.
I still have to implement the release-triggered samples.
2014-11-18 08:05:25 -08:00
Garrett
d4adf8cc31 Initial version of the GIG Player
It currently loads 16-bit mono and stereo GIG files. It plays the whole
note (no attack/delay/release), doesn't resample when exporting as a
different sample rate, and it doesn't do anything different based on
velocity.
2014-11-18 08:05:25 -08:00
Vesa V
dec3185d88 Merge pull request #1088 from diizy/memmgr
LMMS Memory Manager
2014-11-18 14:00:29 +02:00
Vesa
815a70a682 Sync 2014-11-18 13:58:41 +02:00
Vesa
ba05b7523d More peak controller changes:
Add treshold knob to peak controller
This causes the peak controller to react only when the measured peaks are above the set treshold
Might be useful for finetuning your sidechains
2014-11-18 13:58:41 +02:00
Vesa
b441bdae15 Freeverb3: make it work properly on all samplerates 2014-11-18 13:58:41 +02:00
Vesa
f207613d5f Some attention on peak controller 2014-11-18 13:58:40 +02:00
Vesa
8a596b0898 Sanitize output of all effects when exporting 2014-11-18 13:58:40 +02:00
Vesa
50bfed7180 Fix Carla in memmgr branch 2014-11-18 13:58:40 +02:00
Vesa
f25da35c24 Sanitize all channel outputs when exporting 2014-11-18 13:58:40 +02:00
Vesa
dc4bfdc60d Various fixes and precautions
Samplebuffer: reload all samples when samplerate changes. This is because of the way LMMS uses samples: we always resample all samples t$
LadspaEffect: some safeguards for the non-inplacebroken plugins which use the same buffer for input and output. Theoretically, if some p$
FxMixer: fix effect processing in multichannel-chains
2014-11-18 13:58:40 +02:00
Vesa
9fe55161a8 Remove base64.h again (was re-added accidentally at merge resolution) 2014-11-18 13:58:40 +02:00
Tobias Doerffel
68b5a21d14 Initialize BufferManager from within Mixer
Avoid crashes caused by worker threads accessing the buffer manager
before it is initialized. Therefore initialize it from within the
Mixer constructor which has the side effect that it gets initialized
in console-only rendering mode as well.
2014-11-18 13:58:40 +02:00
Vesa
7bc97f5d5b Fixes 2014-11-18 13:58:39 +02:00
Vesa
9a3d3cb306 Fix windows compiling 2014-11-18 13:58:39 +02:00
Vesa
1864dcfaa1 Fix bugs 2014-11-18 13:58:39 +02:00
Vesa
1deb80acc3 Finish audioport rehaul, get vol/pan knobs working again, also some bugfixes
We're now doing the vol/pan stuff in audioport, since this way we avoid the pointless repetition of doing it in the playhandles
2014-11-18 13:58:39 +02:00
Vesa
857de8d2c8 Huge structural changes
Well, this commit got a bit out of hand, what with 26 files changed. Oh well.

Basically, we're using the buffermanager to dispense temporary buffers for playhandles and audioports to use.
This allows us to change the way playhandles work. Earlier, playhandles of the same track were waiting in line
to push their output to the audioport. This was of course inefficient, so now they just register themselves to the port,
then the port handles mixing the buffers.

Caveat: this is still a work in progress, the vol/pan knobs on instruments are temporarily non-functional - will be fixed in
the next commit, but I have to get some sleep now.
2014-11-18 13:58:39 +02:00
Vesa
311d33d648 Implement BufferManager
Also, apply things learned while writing BufferManager to the similar NotePlayHandleManager
2014-11-18 13:58:38 +02:00
Vesa
af60402078 Make it possible to use sample-exact controls in LADSPA plugins
I don't think we currently have any that would support this functionality, but in case someone has a LADSPA plugin that has audiorate control ports, this allows them to be used with the new sample-exact models
Again... not strictly related to memory management, but since I was in that part of the codebase already...
2014-11-18 13:58:38 +02:00
Vesa
daa5f6c26d Use memory management in LADSPA effects
Also optimize non-inplacebroken plugins by using the same buffer for input/output
2014-11-18 13:58:38 +02:00
Vesa
f3ed39a9fe Fix weird issue with remotevstplugin 2014-11-18 13:58:38 +02:00
Vesa
3d9a7fbf75 remove tr.whitespace 2014-11-18 13:58:37 +02:00
Vesa
a8211873b5 Fix arpeggio to work better with the new way to handle note offsets
Ok, not really related to memory management, but was something that needed doing and it's easier to test things when things work properly
2014-11-18 13:58:37 +02:00
Vesa
3a9e9cc075 Use ReadWriteLock for the pools container instead of Mutex 2014-11-18 13:58:37 +02:00
Vesa
8fb8c683f9 Changing and fixing some stuff
- QHash is better to use than QMap in MemoryManager: faster lookups, able to reserve memory in advance
- Also: reserve memory in advance for the QVector and QHash, so we don't get needles allocs for them
- No need to do cleanup for the nph manager, as it uses the generic manager for allocs, and that already gets cleaned up
2014-11-18 13:58:37 +02:00
Vesa
42e67d27a1 Add dedicated manager for noteplayhandles
This caches and reuses nph's independently of the generic memory manager.
2014-11-18 13:58:37 +02:00
Vesa
5e4308507b More fixes 2014-11-18 13:58:37 +02:00
Vesa
9972cb3d4d Fixes 2014-11-18 13:58:37 +02:00
Vesa
75770b4d2e Fix 64 bit, increase mm usage 2014-11-18 13:58:36 +02:00
Vesa
9c25be1bde LMMS Memory Manager 2014-11-18 13:58:36 +02:00
Vesa V
688e732276 Merge pull request #1324 from LYF610400210/patch-1
[Translation] zh.ts
2014-11-18 13:54:22 +02:00
LYF610400210
ef7e465563 [Translation] zh.ts
More translation, and the previous file is buggy (See L1005)
2014-11-18 18:08:03 +08:00
Vesa
6f963159df Merge branch 'stable-1.1'
Conflicts:
	data/locale/zh.ts
2014-11-18 10:52:40 +02:00
Vesa V
09771174f4 Merge pull request #1323 from diizy/stable-1.1
Move the denormals protection to the run() function of the thread
2014-11-18 10:49:21 +02:00
Vesa
d98c2392b2 Move the denormals protection to the run() function of the thread
The constructor was probably the wrong place to put it, run() is definitely executed in the new thread so that's where the setting should be applied I think?
2014-11-18 10:48:03 +02:00
Vesa V
b935cb0a81 Merge pull request #1322 from LYF610400210/stable-1.1
[Translation] zh.ts
2014-11-18 10:05:02 +02:00
LYF610400210
46b86e70ae [Translation] zh.ts 2014-11-18 15:39:43 +08:00
Vesa
e6938994cd Merge branch 'stable-1.1' 2014-11-18 09:22:25 +02:00
Vesa V
0037b9ade9 Merge pull request #1321 from diizy/stable-1.1
Add denormal protection to Fifowriter thread
2014-11-18 09:20:48 +02:00
Vesa
eb7343e25a Add denormal protection to Fifowriter thread 2014-11-18 09:19:56 +02:00
Tobias Doerffel
9f56ba966d Merge pull request #1296 from ma2moto/patch-2
Update ja.ts
2014-11-17 22:24:45 +01:00
dave
932d7905ba The delay buffer now resizes on sample rate change.
tidy up formatting
2014-11-17 20:10:34 +00:00
Daniel Winzen
e1bb2988a1 Move definitions to fix 26 errors which adds new translatable strings
Fixes the following 26 errors when generating a translation file with e.g. "make de.ts":
/home/daniel/Lmms/plugins/monstro/Monstro.h:69: tr() cannot be called without context
/home/daniel/Lmms/plugins/monstro/Monstro.h:70: tr() cannot be called without context
...
/home/daniel/Lmms/plugins/monstro/Monstro.h:96: tr() cannot be called without context
/home/daniel/Lmms/plugins/monstro/Monstro.h:97: tr() cannot be called without context
2014-11-17 21:00:28 +01:00
Daniel Winzen
7a5812af73 Add includes parameter to fix warnings when generating a translation file.
When generating a translation file with e.g. "make de.ts" more than 150 warnings like the following appeared.
/home/daniel/Lmms/src/tracks/Pattern.cpp:642: Qualifying with unknown namespace/class ::PatternView
/home/daniel/Lmms/src/tracks/Pattern.cpp:701: Qualifying with unknown namespace/class ::PatternView
/home/daniel/Lmms/src/tracks/AutomationTrack.cpp:40: Qualifying with unknown namespace/class ::AutomationTrack
...
2014-11-17 20:13:16 +01:00
Vesa V
e59ef2c48a Merge pull request #1319 from diizy/stable-1.1
More exp10 stuff
2014-11-17 18:56:23 +02:00
Vesa
78042ed4c5 More exp10 stuff 2014-11-17 18:55:09 +02:00
Vesa V
b37cbbb3cf Merge pull request #1318 from diizy/stable-1.1
Use exp10 instead of pow and create alias for win/mac for compat
2014-11-17 18:44:02 +02:00
Vesa
01997fe546 Use exp10 instead of pow and create alias for win/mac for compat 2014-11-17 18:43:03 +02:00
Vesa V
183c56a2b3 Merge pull request #1317 from diizy/stable-1.1
Fix drag-n-drop of logscale knobs
2014-11-17 16:17:41 +02:00
Vesa
e16b567e09 Fix drag-n-drop of logscale knobs 2014-11-17 16:15:41 +02:00
Vesa
dfb89c8c92 Merge branch 'stable-1.1'
Conflicts:
	data/locale/de.qm
	data/locale/de.ts
	src/gui/FxMixerView.cpp
2014-11-17 13:25:45 +02:00
Vesa V
7c901d4dfd Merge pull request #1316 from diizy/stable-1.1
Some waveshaper improvements
2014-11-17 13:17:52 +02:00
Vesa
d7931fdb0d Some waveshaper improvements 2014-11-17 13:17:55 +02:00
Vesa V
c42ae751fa Merge pull request #1315 from diizy/stable-1.1
Add class RmsHelper to help with RMS
2014-11-17 12:59:57 +02:00
Vesa
415652ad25 Delete better 2014-11-17 12:45:56 +02:00
Lukas W
26415cd53e Fix segfault in FxMixerView, fix a memory leak in EffectSelectDialog
Segfault occured when moving a channel
2014-11-17 11:03:13 +01:00
Vesa
5cd67537a2 Add class RmsHelper to help with RMS
This is then used by dynamics processor for processing dynamics
2014-11-17 11:51:45 +02:00
dave
2f58d7135b moved call to delayTimeModel.value() outside of process loop 2014-11-17 01:11:17 +00:00
Lukas W
cb41f845a6 Remove obsolete slot
dynProcControls::changeControl method was removed in c51ff31b68
2014-11-16 23:14:20 +01:00
Lukas W
b8d3cd1705 Don't use exp10 2014-11-16 23:02:09 +01:00
Lukas W
495be6f828 Merge pull request #1310 from DanWin/stable-1.1
Updated German translation
2014-11-16 22:40:14 +01:00
Vesa
cd509b707b Merge branch 'stable-1.1'
Conflicts:
	src/core/main.cpp
2014-11-16 22:22:48 +02:00
Vesa V
208bfe356c Merge pull request #1312 from diizy/stable-1.1
Logscale: enabled toggling of knob scale in context menu
2014-11-16 22:20:34 +02:00
Vesa
0d129b0b93 Logscale: enabled toggling of knob scale in context menu 2014-11-16 22:19:16 +02:00
Vesa V
3c7e2acd8a Merge pull request #1311 from diizy/stable-1.1
Upgrades to plugins
2014-11-16 20:55:18 +02:00
Vesa
c51ff31b68 Dynamics processor improvements 2014-11-16 20:54:16 +02:00
Vesa
4b4469d6c2 Add denormals stripping to the main thread as well as workerthreads
Conflicts:

	src/core/main.cpp
2014-11-16 19:15:34 +02:00
Vesa
baf7c74ad7 Strip denormals 2014-11-16 19:10:02 +02:00
Vesa
bd00ecfdc3 Dualfilter updates, add double precision versions of LMMS constants 2014-11-16 18:47:01 +02:00
Lukas W
a99ea9fa6b Merge remote-tracking branch 'upstream/stable-1.1' 2014-11-16 16:41:17 +01:00
Daniel Winzen
612185a2c6 Updated German translation 2014-11-16 16:31:48 +01:00
dave
9bd758951a removed unused socket and empty function in delaycontrols 2014-11-16 15:20:26 +00:00
Vesa V
ca9e51f2a7 Merge pull request #1309 from diizy/stable-1.1
Fix bassbooster
2014-11-16 17:09:22 +02:00
Vesa
bf7b5a5d9d Fix bassbooster 2014-11-16 17:08:39 +02:00
Vesa
84c8755dcd Revert "BassBooster: Remove inline keyword"
This reverts commit 761a71f760.
2014-11-16 17:07:35 +02:00
dave
4c82ba22a9 Fixed issues with original verion, as directed in pull request.
corrected the typeo's,
 Used sampleFrame instead of float* making the code cleaner.
 Set up a socket to change the samplerate where required.
 Stopped using malloc ( yeah that was bad practice on my part ).
 Now using lmms_Math.h and the predefined versions of F_PI and F_2PI,
 I didn't know data from the knobs etc. was not updated over the course of a buffer, so have moved outside the processing loop,
 made appropriate functions inline,
 used sinf.
 Multiplication has replaced division where possible,
 zeroing of the buffer has been removed, as redundant.
2014-11-16 15:02:15 +00:00
Lukas W
761a71f760 BassBooster: Remove inline keyword 2014-11-16 15:51:45 +01:00
Lukas W
d8662e76de Remove M_PI definition, use F_PI 2014-11-16 15:22:46 +01:00
Lukas W
e66326b36b Automatic deployment for Windows builds 2014-11-16 15:22:46 +01:00
Lukas W
eed0608405 Fix win64 build 2014-11-16 15:22:46 +01:00
Lukas W
3aba823ecc Travis: No multithreading make for windows builds 2014-11-16 15:22:46 +01:00
Lukas W
7a62d0ce6f Travis: Enable multithreading, Linux, Win64 2014-11-16 15:22:46 +01:00
Lukas W
0916bc073e Fix compile errors 2014-11-16 15:22:46 +01:00
Lukas W
2c1f07d655 Travis CI: Add win32 target os
Temporarily disable Linux builds
2014-11-16 15:22:46 +01:00
Lukas W
f4f0d947ea Merge pull request #1308 from Lukas-W/ci-win
Travis CI Windows builds
2014-11-16 16:10:38 +02:00
Vesa
c75f4e8dd3 Oops, unfixed merge conflict 2014-11-16 16:08:22 +02:00
Lukas W
43189492d0 Remove M_PI definition, use F_PI 2014-11-16 15:01:15 +01:00
Lukas W
564fb38998 Automatic deployment for Windows builds 2014-11-16 14:51:20 +01:00
Vesa
e62e2f3889 Add denormals stripping to the main thread as well as workerthreads 2014-11-16 15:19:54 +02:00
Vesa
740a7e6850 Merge branch 'stable-1.1'
Conflicts:
	include/AutomatableModel.h
	include/FxMixer.h
	src/core/FxMixer.cpp
	src/gui/widgets/caption_menu.cpp
	src/tracks/InstrumentTrack.cpp
2014-11-16 15:16:40 +02:00
Vesa V
f83b0957f4 Merge pull request #1305 from diizy/stable-1.1
Improvement of FxMixer multithreading
2014-11-16 15:08:10 +02:00
Vesa V
ea2e4e5b69 Merge pull request #1307 from diizy/model
Add a method to AutomatableModel that allows tracking changes without using signals/slots
2014-11-16 14:54:38 +02:00
Vesa
f8c618b0ed Modify BassBooster to show how to replace signals/slots in DSP 2014-11-16 14:51:50 +02:00
Vesa
3e19bc8ddb Add a method to track value changes in AutomatableModel - this can be used by DSP code instead of signals/slots to improve performance 2014-11-16 14:14:35 +02:00
Vesa
8ef10f4f81 More updates to FxMixer - better handling of muted channels 2014-11-16 13:46:54 +02:00
Lukas W
cc3b1f0aea Fix win64 build 2014-11-16 11:15:37 +01:00
Lukas W
60d10f2461 Travis: No multithreading make for windows builds 2014-11-16 02:23:29 +01:00
Lukas W
ee9b92ca81 Travis: Enable multithreading, Linux, Win64 2014-11-16 02:15:15 +01:00
Lukas W
4d6ac1f85d Fix compile errors 2014-11-16 01:51:29 +01:00
Lukas W
2f2f27ab0c Travis CI: Add win32 target os
Temporarily disable Linux builds
2014-11-16 01:21:54 +01:00
Vesa
ca06a10a42 Fix segfault when enabling/disabling sends while playing 2014-11-15 21:11:40 +02:00
Lukas W
435f3c0f3d Merge pull request #1299 from LMMS/stable-1.1-iss1290
Disable 'Help' action in context menus when there's no help text
2014-11-15 18:54:10 +02:00
Vesa
c92774af27 Improvement of FxMixer multithreading
Use dynamic building of jobqueues with dependency counting:
- At the start, each channel that has no dependencies is added automatically to the queue
- Then, after each channel is processed, it increments the dep.counter of all its recipients
- When a channel's dep.counter hits the amount of its dependencies (senders), it gets automatically added to the queue
- The queue is finished when the master channel has been processed
- Muted channels are automatically processed at the start regardless dependencies, because they don't have to care about senders, being muted

Hopefully this will improve Fx Mixer performance.
2014-11-15 18:51:49 +02:00
Lukas W
9005dc39ca Caption menu style fix 2014-11-15 17:46:07 +01:00
dave
6d2b91054b Tempo synced Delay Plugin 2014-11-15 11:22:23 +00:00
Vesa V
6e027ae929 Merge pull request #1302 from diizy/master
More filter stuff
2014-11-14 22:18:39 +02:00
Vesa
a5d95f0bdd Oops #3... 2014-11-14 22:15:18 +02:00
Vesa
47f3eabb8c Oops again 2014-11-14 21:53:27 +02:00
Vesa
8576b586ff Oops 2014-11-14 21:35:34 +02:00
Vesa
5b8f92e757 More filter optimizations 2014-11-14 21:32:22 +02:00
Vesa V
7c9ccf59db Merge pull request #1301 from diizy/master
Strip denormals
2014-11-14 20:44:57 +02:00
Vesa
16302fc4ab Strip denormals 2014-11-14 20:43:49 +02:00
Lukas W
70508b0c37 Don't display 'Help' action in context menus when there's no help text
Fixes #1290
2014-11-14 15:45:46 +01:00
ma2moto
f4da924211 Update ja.ts 2014-11-14 22:33:14 +09:00
Vesa V
87003ee84c Merge pull request #1295 from diizy/filters
Bit of optimizing
2014-11-14 02:02:05 +02:00
Vesa
7c682316b3 Bit of optimizing 2014-11-14 02:00:51 +02:00
Vesa V
df843e2b32 Merge pull request #1288 from tresf/stable-1.1
Set pitch range
2014-11-14 01:16:19 +02:00
Vesa V
4df054ae24 Merge pull request #1294 from Umcaruje/stable-1.1-uifix
Fix misalignment in Song Editor
2014-11-14 01:16:02 +02:00
Umcaruje
269bbc3dae Fix misalignment in Song Editor 2014-11-14 00:07:03 +01:00
Vesa V
14d4c37bab Merge pull request #1291 from diizy/filters
Even More Filters
2014-11-13 20:45:56 +02:00
Vesa
4aaeb73f71 Some further optimizations 2014-11-13 20:12:36 +02:00
Vesa
002d2cb2ff Wrong branch stuff got in by accident 2014-11-13 20:06:43 +02:00
Vesa
53dd1e4257 Add filters to dualfilter 2014-11-13 20:03:53 +02:00
Vesa
a3cce23d6d Even more filters 2014-11-13 19:11:34 +02:00
Vesa
bb821d685b More filters 2014-11-13 18:10:53 +02:00
Tres Finocchiaro
808e18f20a Set pitch range 2014-11-11 22:42:02 -05:00
Vesa
16fb09fb94 Merge branch 'stable-1.1' 2014-11-10 20:33:02 +02:00
Lukas W
8e8879f735 Merge stable-1.1
Conflicts:
	include/ConfigManager.h
	include/MidiTime.h
	include/string_pair_drag.h
	src/gui/string_pair_drag.cpp
	src/gui/widgets/rubberband.cpp
2014-11-10 19:26:59 +01:00
grindhold
cf29c8b97f fixed wrong visibility of Plugin::logError 2014-11-10 11:55:36 +01:00
grindhold
ec457ac69b fixed argument being passed into errormessage of vsteffect 2014-11-10 10:45:38 +01:00
grindhold
f746db27f0 unexpected codestyle fixes 2014-11-10 10:35:36 +01:00
grindhold
27a136fe03 added capability to collect multiple errormessages and display them at once 2014-11-10 10:35:07 +01:00
Vesa
d685adf73a Do not create checkpoints for moving tracks 2014-11-10 00:57:50 +02:00
Vesa V
e2911884a6 Merge pull request #1280 from DeRobyJ/stable-1.1
Italian 1.1 Loca Update
2014-11-09 13:03:32 +02:00
DeRobyJ
b6046ad2c1 Italian 1.1 Loca Update
I hope this time it will work xD
2014-11-09 11:30:37 +01:00
Vesa V
2c7036edd6 Merge pull request #1258 from grindhold/brokenproject
attempt to open broken project does not clear currently open project
2014-11-08 12:21:31 +02:00
Vesa V
d10eecbf5f Merge pull request #1277 from LMMS/c++11
Enable C++11
2014-11-08 12:16:01 +02:00
Vesa V
102db9cd50 Merge pull request #1266 from tresf/stable-1.1
Fix automation cursor position issue
2014-11-08 12:07:47 +02:00
Lukas W
9d395ac0c1 Enable C++11 2014-11-08 10:26:10 +01:00
Tres Finocchiaro
4e5d4b95a0 Typo, add missing "else" 2014-11-07 12:39:00 -08:00
Tres Finocchiaro
2a6d6c2a7e Fix Apple/Clang compilation for fmaf() 2014-11-07 12:23:39 -08:00
Tres Finocchiaro
e7721dfd78 Bump version 2014-11-07 08:30:41 -05:00
Lukas W
bf484300b6 Fix some memory leaks 2014-11-06 21:23:16 +01:00
Vesa V
8f7593f82e Merge pull request #1256 from grindhold/metronome
first metronome click of a tact now has a higher pitch #1254
2014-11-05 01:50:13 +02:00
Lukas W
8242ca9cac Merge branch 'Umcaruje-stable-1.1-namefix' into stable-1.1 2014-11-05 00:46:16 +01:00
Lukas W
d4a8f6c95b More name & site fixes 2014-11-05 00:41:02 +01:00
Umcaruje
6fb923cba2 Correct the program name and site in the descriptions. 2014-11-04 22:56:50 +01:00
Tres Finocchiaro
1826ced3d2 Fix automation cursor position issue 2014-11-04 00:13:38 -05:00
Vesa V
d3ae2e5721 Merge pull request #1264 from floft/configrename
Last configManager to ConfigManager rename
2014-11-03 22:36:38 +02:00
Garrett
6c91679de4 Last configManager to ConfigManager rename 2014-11-03 08:21:30 -08:00
Vesa
fa9674521e Merge branch 'stable-1.1'
Conflicts:
	src/core/main.cpp
	src/gui/MainWindow.cpp
2014-11-02 07:46:32 +02:00
Vesa V
e801376ff4 Merge pull request #1250 from Lukas-W/stable-1.1-iss1065
Ask for saving changes before opening recent project
2014-11-02 07:40:39 +02:00
Vesa V
e7fbe3a2d4 Merge pull request #1253 from softrabbit/issue722
Make autosave file name the same for save and load
2014-11-02 07:39:20 +02:00
Vesa V
671833a1dd Merge pull request #1260 from LMMS/master-configmgr
Config Manager updates
2014-11-02 07:36:25 +02:00
Lukas W
f6f44d0c5c Rename ConfigManager files (3) 2014-11-02 01:26:46 +01:00
Lukas W
47831c99c5 Rename ConfigManager files (2) 2014-11-02 01:08:27 +01:00
Lukas W
c9c8bf1c77 Rename ConfigManager files (1) 2014-11-02 01:06:13 +01:00
Lukas W
100a67cd3c Rename configManager to ConfigManager 2014-11-02 01:02:33 +01:00
Lukas W
d68671a6c2 Code style updates 2014-11-02 00:57:19 +01:00
Lukas W
2e66c88edf Store recovery file path in configManager 2014-11-02 00:51:24 +01:00
Lukas W
053862ffab Fix autosave
Fix typo made in 2e7733eaa1 while renaming
occurances of "mmp" to "datafile". This lead to a mismatch in the file name
used for saving and reading the recovery file.

Addresses #722
2014-11-02 00:22:49 +01:00
grindhold
f67e363532 attempt to open broken project does not clear currently open project. fixing #781 2014-11-01 17:36:00 +01:00
grindhold
eea294b8d6 use trimmed metronome sound of @mikobuntu 2014-11-01 12:56:18 +01:00
grindhold
e9174b275a first metronome click of a tact now has a higher pitch #1254 2014-11-01 12:18:27 +01:00
Raine M. Ekman
70cc80a032 Make autosave file name the same for save and load. Fix #722 2014-10-31 20:11:30 +02:00
Lukas W
c682567e4b Ask for saving changes before opening recent project
Fixes #1065
2014-10-31 13:35:54 +01:00
Tres Finocchiaro
c5349d40b9 Merge pull request #1247 from tresf/stable-1.1
New DMG background
2014-10-30 21:56:53 -04:00
Vesa V
9d3b14e298 Merge pull request #1248 from grindhold/fxmixersolo
implemented solo-buttons for FxMixer - resolving #1211
2014-10-31 01:15:34 +02:00
grindhold
865dcc5685 coding style fixes 2014-10-31 00:03:27 +01:00
grindhold
8fe009114d implemented solo-buttons for FxMixer - resolving #1211 2014-10-30 23:43:43 +01:00
Tres Finocchiaro
6c9b87f016 New DMG background
Closes #1113 (Thanks @Umcaruje)
2014-10-30 17:02:01 -04:00
Vesa V
540124bde2 Merge pull request #1244 from tresf/stable-1.1
Cherry pick @grindhold's hand cursor fix
2014-10-28 19:26:43 +02:00
grindhold
c115b83ff8 fixed hotspot of hand-cursor 2014-10-28 13:23:10 -04:00
grindhold
612abd137a fixed other occurences of hand cursor than beat-editor 2014-10-28 13:22:54 -04:00
Vesa V
431eaa16dc Merge pull request #1243 from grindhold/master
Fixed hotspot of hand-cursor
2014-10-28 17:49:07 +02:00
grindhold
05c15dff0c fixed other occurences of hand cursor than beat-editor 2014-10-28 15:32:35 +01:00
grindhold
2c447a32e7 fixed hotspot of hand-cursor 2014-10-28 15:21:22 +01:00
Vesa
240c0b20a6 SF2 fix? 2014-10-28 15:01:00 +02:00
Tobias Doerffel
1f9740201b Merge pull request #1236 from tresf/stable-1.1
Better name for "dummy" effects
2014-10-26 22:48:42 +01:00
Tres Finocchiaro
deae0883d2 Fix more whitespace 2014-10-24 09:13:45 -04:00
Tres Finocchiaro
6db78be8ff Fix whitespace 2014-10-24 09:13:17 -04:00
Ubuntu
f601e01811 Turn carla back on :) 2014-10-24 09:12:07 -04:00
Ubuntu
8288185dac Disable controls on "dummy" effects 2014-10-24 09:10:17 -04:00
Tres Finocchiaro
4bef367b09 Make "dummy" effects stand out in color 2014-10-23 22:00:57 -04:00
Tres Finocchiaro
849dd8a6b3 Better name for "dummy" effects 2014-10-23 21:23:13 -04:00
Vesa V
c6f3962a87 Merge pull request #1230 from diizy/newfilter
New filters: SV Lowpass, SV Bandpass, SV Highpass, DoubleMoog
2014-10-22 16:23:41 +03:00
Vesa
e9ab240558 Add more filters! 2014-10-22 16:17:28 +03:00
Vesa
eb86428f10 Correct samplerate-agnostic behaviour 2014-10-22 15:12:58 +03:00
Vesa
8e3908e785 Initial commit: new filter - SV Lowpass
Adds a state-variant 4-pole lowpass filter into LMMS, which I swiped from Nekobee and slightly adapted to work in LMMS
It is possible that with some adjustments a highpass version could also be produced (will have to look into that)
It sounds really cool, kind of like the moog filter but has more character, esp. on high Q values
2014-10-22 07:05:53 +03:00
Tobias Doerffel
b0e12e3897 Merge pull request #1228 from ma2moto/patch-1
Patch 1
2014-10-19 18:45:55 +02:00
Vesa
b084e91345 Merge branch 'stable-1.1'
Conflicts:
	data/locale/de.qm
	data/locale/zh.qm
	data/locale/zh.ts
2014-10-19 14:58:23 +03:00
ma2moto
100b26a7a3 Update ja.ts 2014-10-19 19:39:55 +09:00
ma2moto
9c9036e10f Update ja.ts 2014-10-19 17:47:36 +09:00
ma2moto
f3f8f16104 Update ja.ts 2014-10-19 09:51:47 +09:00
ma2moto
2302528690 Update ja.ts 2014-10-19 09:26:34 +09:00
ma2moto
bb6130d52e Update ja.ts 2014-10-19 09:17:52 +09:00
ma2moto
8b860c4360 Update ja.ts 2014-10-19 08:56:35 +09:00
Vesa
886bf2b16e Revert "Adjust Carla for master branch"
This reverts commit 30e0140ecb.
2014-10-18 22:11:47 +03:00
Vesa
95eaa86a6f Revert "Revert "Make carla compile in master""
This reverts commit b12e6b773c.
2014-10-18 22:11:17 +03:00
Vesa
b12e6b773c Revert "Make carla compile in master"
This reverts commit 633609fdc7.
2014-10-18 22:07:07 +03:00
Tres Finocchiaro
7e4933541d Merge pull request #1203 from falkTX/stable-1.1
> Why isn't this applied yet?

All of the admins must be busy, sorry for the delay.
2014-10-17 13:39:35 -04:00
Lukas W
4e0c06442a Reflect project rename in code
Related to #1209
2014-10-17 16:17:40 +02:00
Vesa
ec5384c10e Fix fxmixer bug where fx chains get shut off when multiple channels are chained together 2014-10-15 20:50:32 +03:00
Vesa
633609fdc7 Make carla compile in master 2014-10-15 20:43:47 +03:00
Vesa
30e0140ecb Adjust Carla for master branch 2014-10-15 20:36:50 +03:00
Vesa
5dfb17df14 Merge branch 'stable-1.1' 2014-10-15 20:29:41 +03:00
Vesa
37671b1427 Revert 2ca84c15a1 2014-10-15 20:28:40 +03:00
Tres Finocchiaro
6f6731ff9f Merge pull request #1217 from unfa/patch-1
Closes #1209
2014-10-15 11:36:27 -04:00
unfa
23d0832923 Removed the deprecated "Linux Multimedia Studio" name
Modified line 46 accorinf to https://github.com/LMMS/lmms/issues/1209
2014-10-15 17:35:23 +02:00
falkTX
9fabc0e8b6 Add background artwork for carla 2014-10-10 11:21:23 +01:00
Tobias Doerffel
d317704b27 LmmsPalette: retrieve palette properties via polishing
Fix the short palette widget popup which is annoying and not neccessary
as polishing does the same job without flicker.
2014-10-05 22:33:47 +02:00
Tres Finocchiaro
ace33aa39c Vestige Controls - Horiz Scrollbar Fix
Adds a horizontal scrollbar to VSTs Controls with longer knob labels.

Closes #1184
2014-10-03 14:42:37 -04:00
Tobias Doerffel
1e97ac3706 Merge pull request #1186 from Spekular/stable-1.1
Error Message Fixes
2014-10-03 10:31:20 +02:00
Spekular
1c591e2e54 Error Message Fixes
Can't recovery --> Can't recover
2014-10-02 17:57:24 +02:00
Tobias Doerffel
7a64d0975e AudioAlsa: fix FTBFS on non-Linux platforms
The ESTRPIPE error code is only available on Linux (and not on BSD) and
thus should only be used if defined.
2014-10-01 23:25:03 +02:00
Tobias Doerffel
2da7804c82 Merge remote-tracking branch 'origin/stable-1.1' 2014-09-30 23:00:09 +02:00
Tobias Doerffel
71cdf06923 Refreshed localization files 2014-09-30 22:56:27 +02:00
Tobias Doerffel
eb2c47f81d Refreshed localization files 2014-09-30 22:55:29 +02:00
Tobias Doerffel
f2876ea650 Merge remote-tracking branch 'origin/stable-1.1'
Conflicts:
	data/locale/zh.ts
	src/tracks/Pattern.cpp
2014-09-30 22:53:24 +02:00
Tobias Doerffel
0055fe13b1 MidiImport: fixed plugin folder name 2014-09-30 22:50:38 +02:00
Tobias Doerffel
de45718351 Renamed pattern/patternView to Pattern/PatternView 2014-09-30 22:49:16 +02:00
Tobias Doerffel
fab7f8fea8 PianoRoll, Pattern: manage reset of currently edited pattern more reliably
Introduce one central signal in the pattern class which is emitted before
the pattern object is being destroyed. This way we can easily and more
reliably hide this pattern in the PianoRoll without any race conditions
or other glitches.

Closes #1089.
2014-09-30 22:34:01 +02:00
Tobias Doerffel
53f240852d RemoteVstPlugin: build with -ansi option
Work around a known bug in GCC headers which can lead to compile errors
in cstdlib header file when using the -m32 compiler flag.

Closes #1181.
2014-09-28 18:18:31 +02:00
Tobias Doerffel
606879421b Merge remote-tracking branch 'origin/stable-1.1'
Conflicts:
	README.md
2014-09-28 18:12:04 +02:00
Tobias Doerffel
613bcc981f README.md: stripped old full program name 2014-09-28 18:09:47 +02:00
Tobias Doerffel
75a979b9a0 Merge pull request #1174 from DaAwesomeP/master
Update Readme
2014-09-28 18:08:50 +02:00
Tobias Doerffel
534c9c1668 Merge pull request #1174 from DaAwesomeP/master
Update Readme
2014-09-28 18:07:53 +02:00
Tobias Doerffel
d39d1b3840 ZynAddSubFX: added explicit check for FLTK's fluid binary
Closes #954.
2014-09-28 18:05:31 +02:00
P THE AWESOME
f505c31af4 Fix SF Wiki name in Readme
Changed to "Artist & User Wiki."
2014-09-28 10:56:21 -05:00
Vesa V
432d98d83d Merge pull request #1179 from Spekular/stable-1.1
Background Art Fix
2014-09-28 12:31:53 +03:00
Spekular
ee359207f4 Revert "Update .gitignore"
This reverts commit 18bd03118f.
2014-09-28 10:18:35 +02:00
Spekular
6e2d803e09 Revert "Update .gitignore"
This reverts commit e8c6062f9a.
2014-09-28 10:18:26 +02:00
Spekular
e8c6062f9a Update .gitignore 2014-09-28 10:07:10 +02:00
Spekular
18bd03118f Update .gitignore 2014-09-28 10:06:18 +02:00
Spekular
6b54a4bcc1 Background Art Fix
Fixes Background art and provides .svg source
2014-09-28 10:04:02 +02:00
Vesa V
4d7c8c2f46 Merge pull request #1155 from falkTX/stable-1.1
Initial version of Carla plugin for LMMS
2014-09-28 10:49:23 +03:00
falkTX
9f6c9d96ef Carla: Misc fixing 2014-09-27 00:31:28 +01:00
falkTX
5dddbe7c30 Pass timeInfo to Carla plugin 2014-09-26 11:58:42 +01:00
falkTX
8aa29bb4ba Add TODO items for carla 2014-09-26 10:38:05 +01:00
falkTX
b0fab3d3c2 Carla: Implement UI Save/Open for plugins; Misc fixes 2014-09-26 10:31:08 +01:00
P THE AWESOME
1ace719ab7 Update Readme 2014-09-25 20:39:05 -05:00
Vesa V
2bd722f7c1 Merge pull request #1169 from diizy/master
Oops..
2014-09-21 22:29:22 +03:00
Vesa
412c477ddc Oops.. 2014-09-21 22:28:29 +03:00
Vesa V
06926bfeee Merge pull request #1168 from diizy/master
Fix LFO phase
2014-09-21 22:21:52 +03:00
Vesa
da6c2ed04b Fix LFO phase 2014-09-21 22:20:34 +03:00
falkTX
b88225ffc8 Carla: Fix link (rpath) and finding binary dir (needs latest carla) 2014-09-16 17:22:23 +01:00
Vesa V
3980239d26 Merge pull request #1154 from Sti2nd/stable-1.1
Corrected name error in Cool Songs and added Popsip-Electric Dancer
2014-09-14 22:34:12 +03:00
Stian Jørgensrud
af1b351dd2 Added Popsip-Electric Dancer to CoolSongs 2014-09-14 21:09:45 +02:00
Vesa
463f926d4e Remove the mocfile inclusion in FileBrowser.cpp since it seems to break compiling for some reason 2014-09-12 19:31:19 +03:00
Vesa V
1c500376bb Merge pull request #1158 from diizy/master
Remove the mocfile inclusion in FileBrowser.cpp since it seems to break ...
2014-09-12 19:30:59 +03:00
falkTX
849d08c6ef Initial version of Carla plugin for LMMS 2014-09-11 16:54:31 +01:00
Stian Jørgensrud
09656a46e7 Corrected name error in Cool Songs
From Skeissi to Skiessi
2014-09-11 11:54:58 +02:00
Vesa
498d939e76 Merge branch 'stable-1.1' 2014-09-10 00:43:32 +03:00
Vesa V
90259a1512 Merge pull request #1149 from diizy/stable-1.1
Fix channel send connections
2014-09-10 00:41:15 +03:00
Vesa
44993319eb Fix channel send connections
Fix #1147
Backwards compat should be maintained.
2014-09-10 00:40:29 +03:00
Vesa
bf6659fbb1 Merge branch 'stable-1.1'
Conflicts:
	src/gui/FileBrowser.cpp
2014-09-09 23:55:39 +03:00
Tobias Doerffel
5bbd79de0f Merge pull request #1145 from krafczyk/fix_for_doubleclick_knob_bug
Fix for doubleclick knob bug
2014-09-09 20:11:33 +02:00
Matthew Krafczyk
e20e863a99 Change isJournallingStackEmpty to isJournallingStateStackEmpty 2014-09-09 20:08:14 +02:00
Matthew Krafczyk
0cdfd7c354 Fix syntax a bit. 2014-09-09 17:15:54 +02:00
Matthew Krafczyk
32eae51128 Made isEmpty function name more specific. Moved doubleclick fix to restoreJournallingState. 2014-09-09 17:07:40 +02:00
Matthew Krafczyk
c628387cd2 Make syntax for fix more consistent with existing code. 2014-09-09 01:39:08 +02:00
Matthew Krafczyk
00086c9f20 Merge branch 'stable-1.1' into fix_for_doubleclick_knob_bug 2014-09-09 01:19:58 +02:00
Matthew Krafczyk
84895a4f79 Fix for 'Crash double-clicking any knob in debug build (git master) (#948)'
Conflicts:
	src/gui/widgets/knob.cpp
2014-09-09 01:14:19 +02:00
Tres Finocchiaro
9a80205407 Merge pull request #1143 from tresf/stable-1.1
(Apple only) WANT_SF2 OFF, Disable Zyn GUI
2014-09-08 12:54:06 -04:00
Ubuntu
74e53f8354 Set "WANT_SF2" to "OFF" for Apple 2014-09-08 12:35:57 -04:00
Tres Finocchiaro
e17e84266d Fix bad #ifdef, make ANSI compliant
`#elif  LMMS_BUILD_APPLE` is not correct, it should be `#elif defined(LMMS_BUILD_APPLE)`
2014-09-08 11:24:39 -04:00
Tres Finocchiaro
adc134bbca Merge pull request #1142 from tresf/stable-1.1
(Apple only) Re-enable OPL2, Disable SF2
2014-09-08 11:14:38 -04:00
Ubuntu
40f640951c Disable "Show GUI" button on Apple to prevent crash 2014-09-08 11:13:50 -04:00
Ubuntu
d95fea2d3f Re-enable OPL2 on Apple, Disable SF2 2014-09-08 10:53:59 -04:00
Tres Finocchiaro
7fdb52c172 Merge pull request #1141 from tresf/stable-1.1
Fix AFP crash, bump version

Tested by @DeRobyJ, merging.
2014-09-08 10:33:39 -04:00
Ubuntu
c01799e998 Fix AFP crash, bump version 2014-09-08 09:26:50 -04:00
Vesa V
02dd2cf63f Merge pull request #1139 from Umcaruje/stable-1.1-newpresets
New presets for Monstro, Bitinvader, Watsyn and Kicker.
2014-09-08 06:01:48 +03:00
Vesa V
13928eb4d9 Merge pull request #1138 from tresf/stable-1.1
Fix win32 compilation
2014-09-08 06:01:20 +03:00
Umcaruje
97c903e76c Added some presets for Monstro, Bitinvader, Watsyn and Kicker. 2014-09-08 00:14:02 +02:00
tresf
a278505cda Fix win32 compilation 2014-09-07 17:41:53 -04:00
Vesa V
619f912d12 Merge pull request #1136 from tresf/stable-1.1
Make start/end/loop knobs responsive to each other
2014-09-07 23:54:49 +03:00
Tres Finocchiaro
2ca84c15a1 Invert loop button pixmaps 2014-09-07 16:30:53 -04:00
Tres Finocchiaro
b33eceda7e Make loop end move with sample end 2014-09-07 16:20:17 -04:00
Tres Finocchiaro
dc681604e0 Make start/end/loop knobs all responsive 2014-09-07 16:02:52 -04:00
Tobias Doerffel
84f711fb2c Merge pull request #1131 from Lukas-W/stable-1.1-iss1058
Change Sidebar file browser root to `/Volumes` on OS X
2014-09-03 16:37:10 +02:00
Lukas W
876642c342 FileBrowser rename fixes 2014-09-03 11:43:40 +02:00
Lukas W
efacfdfae9 Rename file_browser.* to FileBrowser.* 2014-09-03 11:29:25 +02:00
Lukas W
5245f6181c Apply new coding conventions to file_browser.h 2014-09-03 11:19:45 +02:00
Lukas W
42cd21a943 Change sidebar root to /Volumes on OS X 2014-09-03 11:06:56 +02:00
Vesa
c2d7cf787e Merge branch 'stable-1.1'
Conflicts:
	include/Plugin.h
	src/core/Plugin.cpp
2014-09-02 16:59:04 +03:00
Tobias Doerffel
f07287c771 Added support for profile command line option 2014-09-02 11:21:11 +02:00
Tobias Doerffel
8628bcc77b Mixer: integrated MixerProfiler 2014-09-02 11:20:52 +02:00
Tobias Doerffel
e1664b106c MixerProfiler: initial simple implementation 2014-09-02 11:19:57 +02:00
Tobias Doerffel
c4f2311032 LadspaEffect/CMT: remove unused variables and useless assignments for better Clang compatibility 2014-09-01 16:24:48 +02:00
Tobias Doerffel
a1d6adfe10 LadspaEffect/SWH: remove unused variables and useless assignments for better Clang compatibility 2014-09-01 16:24:20 +02:00
Tobias Doerffel
d85f649897 Nes/NesObject: remove unused m_fpp variable 2014-09-01 16:23:33 +02:00
Tobias Doerffel
c400c9ba4d LadspaEffect/CALF: Clang compatibility fixes 2014-09-01 16:22:54 +02:00
Tobias Doerffel
0ef3d6c1f6 FxMixerView: declare as class for consistency with friend declaration later 2014-09-01 14:59:30 +02:00
Tobias Doerffel
124c835cda LadspaEffect/CALF: enable inline flags for GCC only 2014-09-01 14:57:39 +02:00
Tobias Doerffel
f3a890edd0 Organic: remove unused member variable 2014-09-01 14:26:54 +02:00
Tobias Doerffel
70ef29981f Plugin: remove unused base64.h header 2014-09-01 14:23:31 +02:00
Tobias Doerffel
feba89354b Plugin: cleanup & coding style fixes 2014-09-01 14:18:45 +02:00
Tobias Doerffel
89a363741a Plugin: use qWarning() instead of printf() 2014-09-01 14:03:51 +02:00
Tobias Doerffel
1c289b0726 Plugin: use QFileInfo::baseName() 2014-09-01 14:00:32 +02:00
Tobias Doerffel
dcdc8d9e3e Added first Monstro preset 2014-09-01 13:37:43 +02:00
Tobias Doerffel
5572cdde64 Merge pull request #1126 from tresf/stable-1.1
Win64 fix for missing _isnanf
2014-09-01 12:16:28 +02:00
Tobias Doerffel
81ca7b157b Merge pull request #1127 from StakeoutPunch/stable-1.1
More Presets
2014-09-01 12:15:54 +02:00
StakeoutPunch
f24b82ae62 More Presets
LB302:
-AcidLead
-AngryLead
-DroneArp
Organic:
-Pwnage
-Rubberband
SID:
-Bass
-CheesyGuitar
-Lead
-MadMind
-Overdrive
-Pad

No presets of any kind were removed or otherwise changed.
2014-09-01 00:43:37 -05:00
tresf
807d3af68c Win64 fix for missing _isnanf 2014-09-01 00:35:48 -04:00
Vesa V
e915bab433 Merge pull request #1100 from StakeoutPunch/stable-1.1
Updated 3OSC Presets
2014-08-31 08:05:04 +03:00
StakeoutPunch
f05bff157d Added back stuff
AmazingBubbles (NC), Freaky-Bass (NC), SawReso (Tweaked), TranceLead
(NC). Removed stupid readme file I added earlier and forgot to delete.
2014-08-30 23:28:17 -05:00
StakeoutPunch
7ca9dfb065 Added percussion presets (5 total)
Added Drums_HardKick, Drums_Kick (Vesa's tutorial kick) Drums_HihatO,
Drums_HihatC, Drums_Snare
2014-08-30 23:09:50 -05:00
Vesa V
08abdd0468 Merge pull request #1117 from Sti2nd/revert-1116-revert-1015-stable-1.1
Revert "Revert ""What is this" additions by @musikBear #896""
2014-08-30 08:44:23 +03:00
Stian Jørgensrud
83ed94f509 LAST 2014-08-30 02:02:09 +02:00
Stian Jørgensrud
b526e5676a Trying again, and again
Latest revision.
2014-08-30 01:39:36 +02:00
Stian Jørgensrud
3c809c8d64 Revert "Revert ""What is this" additions by @musikBear #896"" 2014-08-30 01:36:47 +02:00
Vesa V
243befffa9 Merge pull request #1116 from Sti2nd/revert-1015-stable-1.1
Revert ""What is this" additions by @musikBear #896"
2014-08-30 02:12:47 +03:00
Stian Jørgensrud
d28195f9bc Just updated based on mrBears wonderful work 2014-08-30 01:11:15 +02:00
Stian Jørgensrud
b1e556f263 Revert ""What is this" additions by @musikBear #896" 2014-08-30 00:52:13 +02:00
Vesa V
23f720f81b Merge pull request #1115 from LMMS/stable-1.1
sync
2014-08-30 01:46:52 +03:00
Tobias Doerffel
2f42462ee3 ConfigMgr: skip message boxes when in non-GUI mode
When rendering on command line do not display message boxes as LMMS
crashes otherwise.

Closes #1059.
2014-08-30 00:06:24 +02:00
Tobias Doerffel
1d3fb115bb Merge pull request #1015 from tresf/stable-1.1
"What is this" additions by @musikBear #896
2014-08-29 23:54:30 +02:00
Tobias Doerffel
b6a3653c16 Merge pull request #1112 from LMMS/stable-1.1-iss1058
FileDialog: Add `/Volume` directory on OS X
2014-08-29 23:53:23 +02:00
Lukas W
fad89f68ce FileDialog: Add OS X Volume directory fix 2014-08-29 23:03:18 +02:00
Lukas W
c002af57ec FileDialog: Add /Volume directory on OS X
See issue #1058
2014-08-29 18:22:09 +02:00
Vesa V
52c18dc3c1 Merge pull request #1107 from LMMS/stable-1.1
sync
2014-08-28 06:28:36 +03:00
Vesa V
4e33fc911e Merge pull request #1106 from diizy/stable-1.1
Monstro: more optimization
2014-08-28 06:28:04 +03:00
Vesa
c1acd66d25 Monstro: more optimization 2014-08-28 06:28:14 +03:00
Vesa V
c7a7686fa6 Merge pull request #1101 from Baegus/patch-1
A lot of new and some updated Czech translations
2014-08-27 01:18:17 +03:00
StakeoutPunch
4488977132 Add back SpaceBass 2014-08-26 17:02:46 -05:00
Jaroslav Petrnoušek
6edb5e409a Some more added translations
Mainly the more visible ones
2014-08-26 23:04:33 +02:00
Jaroslav Petrnoušek
0b28e6c85d A lot of new and some updated Czech translations
see diff
2014-08-26 22:42:52 +02:00
StakeoutPunch
0200cb79b6 Newer folder structure 2014-08-26 10:46:24 -05:00
StakeoutPunch
e84db70722 New folder structure 2014-08-26 10:42:58 -05:00
StakeoutPunch
7c0e7b6c6c Update 3OSC Presets 2014-08-26 01:18:31 -05:00
Vesa V
6304104506 Merge pull request #1095 from LMMS/stable-1.1
sync
2014-08-24 17:15:28 +03:00
Vesa V
6b00d8be9b Merge pull request #1094 from diizy/stable-1.1
Monstro: optimize
2014-08-24 17:13:25 +03:00
Vesa
956a698d20 Monstro: optimize
use stack for rendering envs/lfos - this allows us to render them in advance which in turn seems to allow better optimizations by compiler
2014-08-24 17:12:53 +03:00
Vesa V
68c409df33 Merge pull request #1084 from caoliver/stable-1.1
Fix stuck notes on panic or all-notes-off.
2014-08-24 11:08:59 +03:00
Vesa V
ffa86dbc60 Merge pull request #1086 from diizy/master
LadspaEffect: use stack for downsampling
2014-08-21 18:53:13 +03:00
Vesa
ba1c15f0fa LadspaEffect: use stack for downsampling
Not likely to be an issue currently, but if(when) we at some point allow >44.1k samplerates for playback, we may run in a situation where we have to downsample audio for processing, and thus we'd be doing heap allocation every period - it's best to fix this in advance so we're using stack for it for now (may be replaced with memory management later though)
2014-08-21 18:50:20 +03:00
Vesa V
05fbd5a6b6 Merge pull request #1085 from LMMS/stable-1.1
sync
2014-08-21 18:44:36 +03:00
Vesa
759c3e1cb7 Use stack allocation in srccpy 2014-08-21 18:40:29 +03:00
Christopher A. Oliver
59099c14f2 Fix stuck notes on panic or all-notes-off. 2014-08-20 22:49:06 -04:00
Tobias Doerffel
b5db8e7bad Pattern: disconnect PianoRoll before clearing current pattern
Closes #1083.
2014-08-20 20:29:04 +02:00
Vesa
d8cc0cc2cc Merge branch 'stable-1.1'
Skipped the chinese translation files because of merge conflict, those should be re-submitted for master

Conflicts:
	data/locale/zh.qm
	data/locale/zh.ts
2014-08-19 09:10:19 +03:00
Tobias Doerffel
ff3c4da802 InstrumentTrack: fixed whats-this text 2014-08-18 23:22:01 +02:00
Tobias Doerffel
327aaee695 Song, InstrumentTrack: use DataFile::LocaleHelper
Always save projects and presets with default C locale in order to avoid
problems in the future. At the same time properly load floating point
strings which have been saved with different locale settings.

Closes #1051.
2014-08-18 23:21:50 +02:00
Tobias Doerffel
a09fd51060 DataFile: added nested LocaleHelper class
In order to address issues with differently coded floating points in
strings provide a helper class which can be instantiated when loading
or saving data.
2014-08-18 23:17:47 +02:00
Tobias Doerffel
d1658a40cb Manually clean XML data in preset files
Removed old attributes which are not processed anymore.
2014-08-18 22:19:18 +02:00
Tobias Doerffel
a499670ee2 Upgraded all presets
Rewrite all preset files with the current version so we can drop some
compat code in DataFile::upgrade() in the future.
2014-08-18 22:07:34 +02:00
Tobias Doerffel
86f3854782 DataFile: write new header information only for song projects
No need to write these for presets etc.
2014-08-18 22:02:16 +02:00
Tobias Doerffel
d037b9d2ed DataFile: also update meta data when upgrading XML document 2014-08-18 22:01:41 +02:00
Tobias Doerffel
04f198055f Merge pull request #1077 from zm1990s/stable-1.1
add Chinese Translations.
2014-08-17 11:54:21 +02:00
Tobias Doerffel
311d290b32 Added support for building for Win32/Win64 with Qt5 2014-08-16 17:20:00 +02:00
Vesa V
8ac71f7000 Merge pull request #1075 from LMMS/stable-1.1
sync
2014-08-16 09:59:48 +03:00
Vesa V
128a3ec927 Merge pull request #1053 from diizy/banish-all-locks
Banish all locks
2014-08-16 09:58:52 +03:00
Vesa
7a7c7c9467 Fix crash at track adding: don't play instrumentTracks when instrument is null 2014-08-16 09:36:29 +03:00
zm1990s
74f3f62bf4 update Chinese 2014-08-15 10:02:23 +08:00
Tobias Doerffel
4cee046909 Added initial Qt5 support
LMMS now properly builds and runs with Qt5. Various deprecated functions
had to be replaced like QString::toAscii()/fromAscii(). Also occurences
of FALSE/TRUE have been replaced with false/true.

LmmsStyle now derives from QProxyStyle and sets a style instance as base
style (Plastique for Qt4, Fusion for Qt5).

MOC files are not included anymore but added as regular source files.

What's missing is support for embedding VST plugins into a subwindow
inside LMMS on Linux/X11 due to missing QX11EmbedContainer class in Qt5.

Build instructions can be found in INSTALL.Qt5

Minimum version requirement for Qt4 has been raised to 4.6.0 for best
API compatibility between Qt4 and Qt5.
2014-08-14 17:34:49 +02:00
Vesa
f2eca0aaa3 More fixes, stuff 2014-08-12 23:39:16 +03:00
Vesa V
dea2631035 Merge pull request #1061 from LMMS/stable-1.1
sync
2014-08-07 11:39:35 +03:00
Vesa
079a54e159 More fixing of teh playhandles 2014-08-03 22:09:27 +03:00
Vesa
9e1cdd0441 Start work on replacing/removing global locks 2014-08-03 14:49:45 +03:00
Vesa V
3bbb81cf24 Merge pull request #1036 from LMMS/stable-1.1
sync
2014-07-27 19:36:37 +03:00
Vesa V
50038983ed Merge pull request #1033 from diizy/master
Optimize autoquit check in effect
2014-07-27 03:48:14 +03:00
Vesa
945ee12311 Optimize autoquit check in effect 2014-07-27 03:47:02 +03:00
Vesa V
90b5686bed Merge pull request #1032 from diizy/master
Fix "disable autoquit" option
2014-07-27 01:15:16 +03:00
Vesa
f2d88d1fc2 Fix "disable autoquit" option
Wasn't getting saved/loaded properly, fixed that
TODO: disable autoquit causes some effects to keep running even when the song is stopped... this should be addressed at some point
2014-07-27 01:10:34 +03:00
Vesa V
07a0f46c82 Merge pull request #1030 from LMMS/stable-1.1
sync
2014-07-26 16:28:01 +03:00
Vesa V
1934879109 Merge pull request #1026 from LMMS/stable-1.1
sync
2014-07-26 00:31:03 +03:00
Vesa V
953ea983be Merge pull request #1024 from tonychee7000/master
Add Chinese translation by TonyChyi
2014-07-25 20:58:24 +03:00
TonyChyi
124df27ece Add Chinese translation 2014-07-25 23:48:13 +08:00
TonyChyi
3ebea19180 Add Chinese translation 2014-07-25 23:46:13 +08:00
Tres Finocchiaro
46c92ef27f Update PianoRoll.cpp 2014-07-22 12:37:26 -04:00
Tres Finocchiaro
1faaa932cc Formatting fixes 2014-07-22 12:30:38 -04:00
Ubuntu
bca5ce8d7f "What is this" additions by @musikBear #896 2014-07-22 12:18:31 -04:00
mikobuntu
9635232b45 Update globals.h 2014-07-17 20:10:25 +01:00
Vesa V
cb3dc7b8c3 Merge pull request #1000 from grejppi/master-disableautoquit
Add option to keep effects running even without input
2014-07-17 16:22:47 +03:00
Hannu Haahti
932768dac0 add option to keep effects running even without input 2014-07-17 16:19:00 +03:00
Vesa
88c60f5f94 Merge branch 'stable-1.1'
Conflicts:
	src/core/NotePlayHandle.cpp
2014-07-17 02:06:01 +03:00
Vesa V
16a81faef2 Merge pull request #994 from grejppi/master-sampletrack
SamplePlayHandle: increment the right buffer
2014-07-15 11:31:48 +03:00
Hannu Haahti
5fef919c4a SamplePlayHandle: clear unused frames from buffer 2014-07-15 11:28:53 +03:00
Hannu Haahti
37a90cabcf SamplePlayHandle: increment the right buffer 2014-07-15 11:12:04 +03:00
Vesa V
86c8fc55e1 Merge pull request #993 from diizy/master
NPH fix: prevent offsets from going over period limit
2014-07-14 23:50:22 +03:00
Vesa
768cc9cb81 Forgot to remove qdebug 2014-07-14 23:49:37 +03:00
Vesa V
2e480c948a Merge pull request #992 from LMMS/stable-1.1
sync
2014-07-14 23:48:55 +03:00
Vesa
fcf3242b7e NPH fix: prevent offsets from going over period limit 2014-07-14 23:47:41 +03:00
Vesa
921943bce1 Merge branch 'stable-1.1'
Conflicts:
	include/MixHelpers.h
	src/core/FxMixer.cpp
2014-07-13 22:20:10 +03:00
Vesa V
00aba44251 Merge pull request #961 from diizy/master-atomic
Improve RT-safety by eliminating some global locks
2014-07-12 19:12:58 +03:00
Vesa V
43d246df20 Merge pull request #979 from diizy/master
Peak Controller: improve envelope calculation
2014-07-12 05:29:47 +03:00
Vesa
6f8c910f5c Peak Controller: improve envelope calculation 2014-07-12 05:27:05 +03:00
Vesa V
0bad69adc8 Merge pull request #976 from diizy/master
SF2: Fix crash with stacking/arp
2014-07-11 21:36:19 +03:00
Vesa
d7f922da75 SF2: Fix crash with stacking/arp 2014-07-11 21:35:26 +03:00
Vesa V
6dab6a7285 Merge pull request #965 from LMMS/stable-1.1
Stable 1.1
2014-07-10 12:42:42 +03:00
Tobias Doerffel
5a28f4ada0 Merge remote-tracking branch 'origin/stable-1.1' 2014-07-09 23:02:28 +02:00
Vesa
cacb27d12f Move playhandle-adding to the correct spot so playhandles won't get delayed 2014-07-09 21:39:04 +03:00
Vesa
e6582fcd17 InstrumentTrack.h: Remove unneeded includes 2014-07-09 21:24:10 +03:00
Vesa
b8d4ee3047 visualization_widget: remove unnecessary global locks 2014-07-09 21:22:46 +03:00
Vesa
4d321516e9 file_browser: remove unnecessary global locks 2014-07-09 21:20:22 +03:00
Vesa
4be118162f TrackContainerView: remove unnecessary global locks (improve rt safety) 2014-07-09 21:14:47 +03:00
Vesa
a4c4ea90dc Pattern.cpp: Remove unnecessary global locks (improve rt safety) 2014-07-09 21:02:50 +03:00
Vesa
ae5e0c3202 Rebase on master to fix older bugs 2014-07-09 20:45:19 +03:00
Vesa
f33d1f4972 Instrument track, mixer... 2014-07-09 20:42:54 +03:00
Vesa
4eb486be1e Attempt to remove mutex calls from instrumenttrack::processinevent 2014-07-09 20:39:41 +03:00
Vesa V
d4b0cc126d Merge pull request #960 from diizy/master
Fix erroneous note offset in instrumenttrack
2014-07-09 20:37:49 +03:00
Vesa
2d93e19f72 Fix erroneous note offset in instrumenttrack 2014-07-09 20:36:49 +03:00
Vesa V
c1ccc8173e Merge pull request #957 from raboof/addRecentlyOpenedShortcut
Add 'Recently opened project' menu hotkey
2014-07-08 21:27:10 +03:00
Arnout Engelen
2cb458a958 Add 'Recently opened project' menu hotkey 2014-07-08 20:24:03 +02:00
Vesa V
3774d95317 Merge pull request #955 from raboof/configure
Point ./configure users to the INSTALL file
2014-07-08 20:58:44 +03:00
Arnout Engelen
01fc05b251 Point ./configure users to the INSTALL file
Previously the instructions did not match
2014-07-08 19:56:14 +02:00
Vesa V
833fdaab13 Merge pull request #953 from LMMS/stable-1.1
Stable 1.1
2014-07-08 19:46:24 +03:00
Vesa V
2f983e0ed3 Merge pull request #938 from diizy/master-sf2-accurate
SF2: Make timing more accurate, also some fixes
2014-07-06 16:21:22 +03:00
Vesa
ff0c9beadd SF2: Make timing more accurate, also some fixes
I'm not saying sample-accurate, because it turns out, Fluidsynth has an internal buffer size and thus timing granularity of 64 frames. So 64 frames is the max. accuracy attainable for SF2. But it's better than nothing. Big thanks to David Henningsson of the Fluidsynth dev team, who very helpfully answered questions. A great guy.
In addition, there are some fixes to earlier commits here, which I ran into while working on the SF2 timing.
2014-07-06 16:11:35 +03:00
Tobias Doerffel
e12daf6bae Merge remote-tracking branch 'origin/stable-1.1' 2014-07-06 13:57:54 +02:00
Vesa V
8407427c4b Merge pull request #933 from LMMS/stable-1.1
Stable 1.1
2014-07-05 16:34:34 +03:00
Vesa V
6ffcc0e799 Merge pull request #911 from diizy/master-nph
Revision of handling of frameoffset for NPH, SPH
2014-06-30 12:52:44 +03:00
Vesa V
9c8c80683b Merge pull request #913 from LMMS/stable-1.1
Syncing...
2014-06-30 12:49:02 +03:00
Vesa
23433a70b5 Sample-exact models: improve
- Remove the redundant hasSampleExactData() function. Instead, signal lack of s.ex.data by returning a NULL in valueBuffer()
- Cache s.ex.buffers and only update them once per period
- Make valueBuffer() in AutomatableModel threadsafe so that it can be used for NPH's sharing the same model
- Add sample-exactness to instrumenttrack's vol & pan knobs
2014-06-30 01:59:18 +03:00
Vesa
71217c0d85 Addition to earlier: Fix monstro 2014-06-29 23:28:51 +03:00
Vesa
270af579b8 Revision of handling of frameoffset for NPH, SPH
Change in handling of frameoffset for multistreamed instruments and sampletracks.
- Instead of holding the offset for the lifetime of the playhandle, negate the offset in the first period
- Multistream-instruments require some small changes: they have to now check for the offset and accordingly leave empty space in the start of the period (already done in this commit)
- There are possibly optimizations that can be done later
- This change is necessary so that we can have sample-exact models, and sample-exact vol/pan knobs for all instruments. Earlier multistream instruments were always rendering some frames ahead-of-time, so applying sample-exact data for them would have been impossible, since we don't have the future-values yet...
2014-06-29 23:13:00 +03:00
Vesa
a7bb31159e Merge branch 'stable-1.1'
Conflicts:
	include/basic_filters.h
	src/core/FxMixer.cpp
2014-06-28 17:24:23 +03:00
Tobias Doerffel
9a313e485a Merge pull request #887 from softrabbit/svg-loading
Add loading of artwork in other formats as well as .png
2014-06-28 11:56:10 +02:00
Raine M. Ekman
7921a326f7 Add loading of artwork in other formats as well as .png 2014-06-24 22:44:47 +03:00
Vesa
4185eac023 Merge branch 'stable-1.1'
Conflicts:
	src/core/AutomatableModel.cpp
2014-06-23 22:10:27 +03:00
Tobias Doerffel
eee2ba7f16 Merge remote-tracking branch 'origin/stable-1.1'
Conflicts:
	data/locale/de.qm
	data/locale/de.ts
2014-06-21 23:30:59 +02:00
Tobias Doerffel
28d2680896 Merge pull request #838 from softrabbit/tpyo
CmakeLists.txt: s/similiar/similar/g
2014-06-11 14:08:01 +02:00
Raine M. Ekman
5e3d3d449d Fixed tpyo in CMakeLists.txt: It's simiLAR, not simiLIAR 2014-06-11 10:39:06 +03:00
Tobias Doerffel
0679d89cac Merge pull request #834 from softrabbit/formantfilter
Note filters: remove unnecessary calculations in Formantfilter
2014-06-10 12:14:50 +02:00
Raine M. Ekman
0941520d8c basic_filters.h: One unnecessary m_vflp array removed. 2014-06-10 12:10:42 +03:00
Raine M. Ekman
c29ec40711 basic_filters.h: Remove unneccessary LP filter calculations in Formantfilter 2014-06-10 11:57:59 +03:00
Tobias Doerffel
1d6a456b47 Merge pull request #827 from DanWin/master
Updated German translation
2014-06-09 13:40:06 +02:00
Daniel Winzen
2b261b0020 Updated German translation 2014-06-08 17:45:45 +02:00
Tobias Doerffel
0044ef8515 Merge pull request #813 from diizy/ringbuffer
Ringbuffer
2014-06-06 00:07:19 +02:00
Vesa
b0c2fe1685 Forgot a line.. 2014-06-05 20:43:18 +03:00
Vesa
6e2d73721c RingBuffer: initial commit
Implements a ring buffer class for LMMS, which is designed to be flexible, efficient and thread-safe.
Due to flexible design, it supports various methods of operation:
- set delays/sizes in absolute frame values, ignoring samplerate
- set delays/sizes in milliseconds with samplerate-awareness
- multiple inputs -> single output
- single input -> multiple outputs
Efficiency is achieved by working in buffers and using memcpy/memset for audio operations, except when additive mixing is needed: then MixHelpers are used
Thread-safety is guaranteed with QMutex
2014-06-05 20:26:48 +03:00
Tobias Doerffel
50b9fa83c9 Merge pull request #805 from ycollet/cmake_gcc_482
Fix a regression with gcc-4.8.2
2014-06-04 09:33:45 +02:00
Yann Collette
e1e74bc369 when using gcc-4.8.2, desactivate -Werror due to a regression 2014-06-04 09:12:40 +02:00
Tobias Doerffel
23f9312597 Merge pull request #799 from diizy/models3
S.ex. models: implement support for sample-exact controls in fx-mixer
2014-06-01 14:31:21 +02:00
Vesa
43d1b30727 FxMixer, ValueBuffer, etc. fixes 2014-06-01 15:25:02 +03:00
Vesa
1c0f9700fa S.ex. models: implement support for sample-exact controls in fx-mixer
Works for all faders and send knobs
2014-06-01 07:17:43 +03:00
Tobias Doerffel
385e13bb63 Merge pull request #788 from diizy/models
Models branch for 1.2
2014-05-31 15:12:33 +02:00
Vesa
63a39bde76 Models: Fix error 2014-05-30 19:29:45 +03:00
Vesa
a46b9383a5 LfoController updates - fix some remaining timing issues 2014-05-30 18:26:16 +03:00
Vesa
d331dfe352 Move improvements to sample-exact controller handling,
also some coding style fixes
2014-05-30 18:26:16 +03:00
Vesa
44f1d3df85 Initial implementation of sample-exact models and controllers
Also featuring a very efficient buffer-based system for transporting sample-exact control data
Also interpolation for automations
The native Amplifier is a reference implementation for taking advantage of sample-exact data and is currently
the only one that does so, it can be used to test things out, and as documentation/example for implementing the
same elsewhere
2014-05-30 18:22:36 +03:00
Tobias Doerffel
3a833d2ad8 Merge pull request #776 from xsleonard/cut-copy-paste
Copy+Paste for rubberband selections in track editor
2014-05-30 15:26:10 +02:00
Steve Leonard
af56ea5849 Copy+Paste for rubberband selections in track editor 2014-05-26 15:53:08 -04:00
4439 changed files with 773648 additions and 422911 deletions

84
.clang-format Normal file
View File

@@ -0,0 +1,84 @@
---
# Language
Language: Cpp
Standard: Cpp11 # Cpp14 and Cpp17 are not supported by clang 11
# Indentation
TabWidth: 4
UseTab: Always
IndentWidth: 4
ColumnLimit: 120
# Indentation detail
AlignAfterOpenBracket: DontAlign
ContinuationIndentWidth: 4
BreakConstructorInitializers: BeforeComma
ConstructorInitializerIndentWidth: 4
ConstructorInitializerAllOnOneLineOrOnePerLine: false
BinPackParameters: true
BinPackArguments: true
AlignOperands: false
# Alignment
AlignEscapedNewlines: DontAlign
AccessModifierOffset: -4
AllowShortBlocksOnASingleLine: Always
AllowShortIfStatementsOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
BreakBeforeBinaryOperators: All
# Includes
IncludeBlocks: Regroup
IncludeCategories:
# windows.h must go before everything else
# otherwise, you will get errors
- Regex: '^<windows.h>$'
Priority: -99
# the "main header" implicitly gets priority 0
# system headers
- Regex: '^<[^>]+>$'
Priority: 1
# non-system headers
- Regex: '.*'
Priority: 2
SortIncludes: true
# Spaces
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
# Brace wrapping
# Not directly mentioned in the coding conventions,
# but required to avoid tons of auto reformatting
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterFunction: true
AfterNamespace: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BeforeWhile: false
BeforeLambdaBody: false
# Do not break doxygen comments
CommentPragmas: '^[[:space:]]*\\.+'
# Pointers
# Use pointer close to type: `const char* const* function()`
PointerAlignment: Left
...

51
.clang-tidy Normal file
View File

@@ -0,0 +1,51 @@
---
Checks: >
bugprone-macro-parentheses,
bugprone-macro-repeated-side-effects,
modernize-avoid-c-arrays,
modernize-loop-convert,
modernize-redundant-void-arg,
modernize-use-auto,
modernize-use-bool-literals,
modernize-use-emplace,
modernize-use-equals-default,
modernize-use-equals-delete,
modernize-use-override,
modernize-use-using,
performance-trivially-destructible,
readability-braces-around-statements,
readability-const-return-type,
readability-identifier-naming,
readability-misleading-indentation,
readability-simplify-boolean-expr
WarningsAsErrors: ''
HeaderFilterRegex: '' # don't show errors from headers
AnalyzeTemporaryDtors: false
FormatStyle: none
User: user
CheckOptions:
- key: readability-identifier-naming.ClassCase
value: CamelCase
- key: readability-identifier-naming.EnumCase
value: CamelCase
- key: readability-identifier-naming.TypedefCase
value: CamelCase
- key: readability-identifier-naming.UnionCase
value: CamelCase
- key: readability-identifier-naming.StructCase
value: CamelCase
- key: readability-identifier-naming.UnionCase
value: CamelCase
# not yet working, as it currently applies both for static and object members
# - key: readability-identifier-naming.MemberPrefix
# value: 'm_'
# currently only working for local static variables:
- key: readability-identifier-naming.StaticVariablePrefix
value: 's_'
# not yet working
# - key: readability-identifier-naming.VariableCase
# value: camelBack
- key: readability-identifier-naming.FunctionCase
value: camelBack
...

5
.editorconfig Normal file
View File

@@ -0,0 +1,5 @@
root = true
[*]
indent_style = tab
tab_width = 4

3
.gitattributes vendored
View File

@@ -1,2 +1,5 @@
.gitattributes export-ignore
.gitignore export-ignore
data/locale/* linguist-documentation
* text=auto eol=lf
*.{bin,bmp,flac,icns,ico,mmpz,ogg,png,xiz,xmz,wav} binary

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
custom: https://lmms.io/get-involved/#donate

90
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,90 @@
# yamllint disable-file rule:line-length
name: Bug Report
description: File a bug report to help us improve
labels:
- bug
body:
- type: input
id: system-information
attributes:
label: System Information
description: |
- The operating system you use to run LMMS.
- When relevant, also include your hardware information.
placeholder: ex. Fedora Linux 39, KDE Plasma 5.27.10 - 13th Gen Intel® Core™ i9-13950HX, 32GB RAM
validations:
required: true
- type: input
id: affected-version
attributes:
label: LMMS Version(s)
description: |
- The version of LMMS affected by the bug.
- Can be an official version number, nightly release identifier, or commit hash.
- The version number can be found under the Help > About menu.
placeholder: ex. 1.2.2, 1.3.0-alpha.1.518+gdd53bec31, 2d185df
validations:
required: true
- type: input
id: working-version
attributes:
label: Most Recent Working Version
description: |
- If there is a previous version of LMMS that did not exhibit the bug, include it here.
placeholder: ex. 1.2.2, 1.3.0-alpha.1.518+gdd53bec31, 2d185df
validations:
required: false
- type: textarea
id: bug-summary
attributes:
label: Bug Summary
description: Briefly describe the bug.
validations:
required: true
- type: textarea
id: expected-behaviour
attributes:
label: Expected Behaviour
description: Describe what should have happened.
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps To Reproduce
description: |
- Describe the minimum set of steps required to reproduce this bug.
- If you included a minimum reproducible project below, you can describe here how it should be used.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs
description: |
- Copy and paste any relevant log output here.
value: |
<details>
<summary>Click to expand</summary>
<pre>
<!-- paste logs here -->
</pre>
</details>
validations:
required: false
- type: textarea
id: supporting-files
attributes:
label: Screenshots / Minimum Reproducible Project
description: |
- Upload any screenshots showing the bug in action.
- If possible, also include a .mmp/.mmpz project containing the simplest possible setup needed to reproduce the bug.
***Note:** To upload a project file to GitHub, it will need to be placed in a .zip archive.*
- type: checkboxes
id: search-for-existing
attributes:
label: Please search the issue tracker for existing bug reports before submitting your own.
options:
- label: I have searched all existing issues and confirmed that this is not a duplicate.
required: true

4
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,4 @@
contact_links:
- name: Get help on Discord
url: https://lmms.io/chat/
about: Need help? Have a question? Reach out to other LMMS users on our Discord server!

View File

@@ -0,0 +1,31 @@
# yamllint disable-file rule:line-length
name: Feature Request
description: Suggest an idea for the project
labels:
- "enhancement"
body:
- type: textarea
id: enhancement-summary
attributes:
label: Enhancement Summary
description: |
- Briefly describe the enhancement.
- Explain why you believe the proposed enhancement to be a good idea, and (if applicable) how it helps overcome a limitation of LMMS you are currently facing.
validations:
required: true
- type: textarea
id: mockup
attributes:
label: Implementation Details / Mockup
description: |
- Explain how you believe this enhancement should be implemented.
- If your proposal encompasses changes to the user interface, include diagrams displaying your intent.
validations:
required: true
- type: checkboxes
id: search-for-existing
attributes:
label: Please search the issue tracker for existing feature requests before submitting your own.
options:
- label: I have searched all existing issues and confirmed that this is not a duplicate.
required: true

2
.github/no-response.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
# Label requiring a response
responseRequiredLabel: "response required"

306
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,306 @@
---
name: build
'on': [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
linux:
name: linux
runs-on: ubuntu-latest
container: lmmsci/linux.gcc:18.04
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Update and configure Git
run: |
add-apt-repository ppa:git-core/ppa
apt-get update
apt-get --yes install git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Cache ccache data
uses: actions/cache@v3
with:
key: ccache-${{ github.job }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
ccache-${{ github.job }}-${{ github.ref }}-
ccache-${{ github.job }}-
path: ~/.ccache
- name: Configure
run: |
ccache --zero-stats
source /opt/qt5*/bin/qt5*-env.sh || true
mkdir build && cd build
cmake .. $CMAKE_OPTS -DCMAKE_INSTALL_PREFIX=./install
- name: Build
run: cmake --build build
- name: Run tests
run: |
cd build/tests
ctest --output-on-failure -j2
- name: Package
run: |
cmake --build build --target install
cmake --build build --target appimage
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: linux
path: build/lmms-*.AppImage
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --print-config
echo "[ccache stats]"
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
macos:
name: macos
runs-on: macos-12
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j3
DEVELOPER_DIR: /Applications/Xcode_13.1.app/Contents/Developer
steps:
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Clean up Homebrew download cache
run: rm -rf ~/Library/Caches/Homebrew/downloads
- name: Restore Homebrew download cache
uses: actions/cache/restore@v3
with:
key: n/a - only restore from restore-keys
restore-keys: |
homebrew-
path: ~/Library/Caches/Homebrew/downloads
- name: Cache ccache data
uses: actions/cache@v3
with:
key: ccache-${{ github.job }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
ccache-${{ github.job }}-${{ github.ref }}-
ccache-${{ github.job }}-
path: ~/Library/Caches/ccache
- name: Install dependencies
run: |
brew bundle install --verbose
npm update -g npm
npm install --location=global appdmg
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_UPGRADE: 1
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
- name: Configure
run: |
ccache --zero-stats
mkdir build
cmake -S . \
-B build \
-DCMAKE_INSTALL_PREFIX="../target" \
-DCMAKE_PREFIX_PATH="$(brew --prefix qt5)" \
$CMAKE_OPTS \
-DUSE_WERROR=OFF
- name: Build
run: cmake --build build
- name: Run tests
run: |
cd build/tests
ctest --output-on-failure -j3
- name: Package
run: |
cmake --build build --target install
cmake --build build --target dmg
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: macos
path: build/lmms-*.dmg
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --show-config
echo "[ccache stats]"
ccache --show-stats --verbose
env:
CCACHE_MAXSIZE: 500MB
- name: Save Homebrew download cache
uses: actions/cache/save@v3
with:
key: homebrew-${{ hashFiles('Brewfile.lock.json') }}
path: ~/Library/Caches/Homebrew/downloads
mingw:
strategy:
fail-fast: false
matrix:
arch: ['32', '64']
name: mingw${{ matrix.arch }}
runs-on: ubuntu-latest
container: lmmsci/linux.mingw${{ matrix.arch }}:18.04
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Update and configure Git
run: |
add-apt-repository ppa:git-core/ppa
apt-get update
apt-get --yes install git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Cache ccache data
uses: actions/cache@v3
with:
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
-${{ github.run_id }}"
restore-keys: |
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
ccache-${{ github.job }}-${{ matrix.arch }}-
path: ~/.ccache
- name: Configure
run: |
ccache --zero-stats
mkdir build && cd build
../cmake/build_win${{ matrix.arch }}.sh
- name: Build
run: cmake --build build
- name: Package
run: cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: mingw${{ matrix.arch }}
path: build/lmms-*.exe
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --print-config
echo "[ccache stats]"
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
msvc:
strategy:
fail-fast: false
matrix:
arch: ['x86', 'x64']
name: msvc-${{ matrix.arch }}
runs-on: windows-2019
env:
qt-version: '5.15.2'
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
steps:
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Cache vcpkg dependencies
id: cache-deps
uses: actions/cache@v3
with:
key: vcpkg-${{ matrix.arch }}-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-${{ matrix.arch }}-
path: build\vcpkg_installed
- name: Cache ccache data
uses: actions/cache@v3
with:
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
-${{ github.run_id }}"
restore-keys: |
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
ccache-${{ github.job }}-${{ matrix.arch }}-
path: ~\AppData\Local\ccache
- name: Install tools
run: choco install ccache
- name: Install 64-bit Qt
if: matrix.arch == 'x64'
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
with:
version: ${{ env.qt-version }}
arch: win64_msvc2019_64
archives: qtbase qtsvg qttools
cache: true
- name: Install 32-bit Qt
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
with:
version: ${{ env.qt-version }}
arch: win32_msvc2019
archives: qtbase qtsvg qttools
cache: true
set-env: ${{ matrix.arch == 'x86' }}
- name: Set up build environment
uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
with:
arch: ${{ matrix.arch }}
- name: Configure
run: |
ccache --zero-stats
mkdir build -Force
cmake -S . `
-B build `
-G Ninja `
--toolchain C:/vcpkg/scripts/buildsystems/vcpkg.cmake `
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
-DUSE_COMPILE_CACHE=ON `
-DVCPKG_TARGET_TRIPLET="${{ matrix.arch }}-windows" `
-DVCPKG_HOST_TRIPLET="${{ matrix.arch }}-windows" `
-DVCPKG_MANIFEST_INSTALL="${{ env.should_install_manifest }}"
env:
should_install_manifest:
${{ steps.cache-deps.outputs.cache-hit == 'true' && 'NO' || 'YES' }}
- name: Build
run: cmake --build build
- name: Run tests
run: |
cd build/tests
ctest --output-on-failure -j2
- name: Package
run: cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: msvc-${{ matrix.arch }}
path: build\lmms-*.exe
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --show-config
echo "[ccache stats]"
ccache --show-stats --verbose
env:
CCACHE_MAXSIZE: 500MB

33
.github/workflows/checks.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
---
name: checks
'on': [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
scripted-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install python-tinycss2
run: sudo apt-get install -y python3-tinycss2
- name: Update submodules
run: git submodule update --init --recursive
- name: Verify scripted tests
run: tests/scripted/verify
- name: Run check-strings
run: tests/scripted/check-strings
- name: Run check-namespace
run: tests/scripted/check-namespace
shellcheck:
runs-on: ubuntu-latest
container: koalaman/shellcheck-alpine:v0.9.0
steps:
- name: Check out
uses: actions/checkout@v3
- name: Run shellcheck
run: |
shellcheck \
$(find "./cmake/" -type f -name '*.sh' -o -name "*.sh.in") \
doc/bash-completion/lmms \
buildtools/update_locales

15
.gitignore vendored
View File

@@ -1,9 +1,12 @@
/build
/target
/build/
/target/
.*.sw?
.DS_Store
*~
/CMakeLists.txt.user
/plugins/zynaddsubfx/zynaddsubfx/ExternalPrograms/Controller/Makefile
/plugins/zynaddsubfx/zynaddsubfx/ExternalPrograms/Spliter/Makefile
/plugins/zynaddsubfx/zynaddsubfx/doc/Makefile
/plugins/zynaddsubfx/zynaddsubfx/doc/gen/Makefile
/plugins/ZynAddSubFx/zynaddsubfx/ExternalPrograms/Controller/Makefile
/plugins/ZynAddSubFx/zynaddsubfx/ExternalPrograms/Spliter/Makefile
/plugins/ZynAddSubFx/zynaddsubfx/doc/Makefile
/plugins/ZynAddSubFx/zynaddsubfx/doc/gen/Makefile
/data/locale/*.qm
Brewfile.lock.json

51
.gitmodules vendored
View File

@@ -0,0 +1,51 @@
[submodule "src/3rdparty/qt5-x11embed"]
path = src/3rdparty/qt5-x11embed
url = https://github.com/Lukas-W/qt5-x11embed.git
[submodule "plugins/ZynAddSubFx/zynaddsubfx"]
path = plugins/ZynAddSubFx/zynaddsubfx
url = https://github.com/lmms/zynaddsubfx.git
[submodule "plugins/FreeBoy/game-music-emu"]
path = plugins/FreeBoy/game-music-emu
url = https://github.com/libgme/game-music-emu.git
[submodule "plugins/OpulenZ/adplug"]
path = plugins/OpulenZ/adplug
url = https://github.com/adplug/adplug.git
[submodule "plugins/LadspaEffect/calf/veal"]
path = plugins/LadspaEffect/calf/veal
url = https://github.com/lmms/veal
[submodule "plugins/Xpressive/exprtk"]
path = plugins/Xpressive/exprtk
url = https://github.com/ArashPartow/exprtk
[submodule "plugins/LadspaEffect/swh/ladspa"]
path = plugins/LadspaEffect/swh/ladspa
url = https://github.com/swh/ladspa
[submodule "plugins/LadspaEffect/tap/tap-plugins"]
path = plugins/LadspaEffect/tap/tap-plugins
url = https://github.com/lmms/tap-plugins
[submodule "src/3rdparty/weakjack/weakjack"]
path = src/3rdparty/weakjack/weakjack
url = https://github.com/x42/weakjack.git
[submodule "src/3rdparty/mingw-std-threads"]
path = src/3rdparty/mingw-std-threads
url = https://github.com/meganz/mingw-std-threads.git
[submodule "doc/wiki"]
path = doc/wiki
url = https://github.com/lmms/lmms.wiki.git
[submodule "src/3rdparty/ringbuffer"]
path = src/3rdparty/ringbuffer
url = https://github.com/JohannesLorenz/ringbuffer.git
[submodule "plugins/CarlaBase/carla"]
path = plugins/CarlaBase/carla
url = https://github.com/falktx/carla
[submodule "plugins/Sid/resid/resid"]
path = plugins/Sid/resid/resid
url = https://github.com/libsidplayfp/resid
[submodule "src/3rdparty/jack2"]
path = src/3rdparty/jack2
url = https://github.com/jackaudio/jack2
[submodule "plugins/LadspaEffect/cmt/cmt"]
path = plugins/LadspaEffect/cmt/cmt
url = https://github.com/lmms/cmt
[submodule "src/3rdparty/hiir/hiir"]
path = src/3rdparty/hiir/hiir
url = https://github.com/LostRobotMusic/hiir

View File

@@ -1,4 +1,6 @@
Tobias Doerffel <tobias.doerffel@gmail.com>
Alexandre Almeida <wilsalx@gmail.com>
Tobias Junghans <tobias.doerffel@gmail.com>
Dave French <dave.french3@googlemail.com>
Paul Giblock <drfaygo@gmail.com> <pgib@users.sf.net>
Paul Giblock <drfaygo@gmail.com> <p@pgiblock.net>
Andrew Kelley <superjoe30@gmail.com> <andrew.r.kelley@gmail.com>
@@ -6,6 +8,26 @@ Andrew Kelley <superjoe30@gmail.com> <andy@debian.superjoesoftware>
Janne Sinisalo <janne.m.sinisalo@gmail.com> <janne@janne-desktop.(none)>
Raine M. Ekman <raine@iki.fi> <raine@raine.(none)>
Raine M. Ekman <raine@iki.fi> <raine@raine.damex.fi>
Lukas W <lukaswhl@googlemail.com> <lukaswhl@gmail.com>
Lukas W <lukaswhl@gmail.com> <lukaswhl@googlemail.com>
Vesa <contact.diizy@nbl.fi> <vesa@isokone.(none)>
Vesa <contact.diizy@nbl.fi> <diizy@users.noreply.github.com>
Tres Finocchiaro <tres.finocchiaro@gmail.com>
Tres Finocchiaro <tres.finocchiaro@gmail.com> <tres@ubuntu-1204.(none)>
Tres Finocchiaro <tres.finocchiaro@gmail.com> <ubuntu@ubuntu-1204.(none)>
Tres Finocchiaro <tres.finocchiaro@gmail.com> <tresf@github.com>
Rüdiger Ranft <rudi@qzzq.de> <_rdi_@web.de>
Spekular <Spekularr@gmail.com> <Spekular@users.noreply.github.com>
unfa <unfa00@gmail.com> <unfa@unfa.(none)>
mikobuntu <chrissy.mc.1@hotmail.co.uk> <mikobuntu@mikobuntu-Aspire-5332.(none)>
Jonathan Aquilina <eagles051387@gmail.com>
midi-pascal <midi-pascal@videotron.ca>
midi-pascal <midi-pascal@videotron.ca> <pascal@TDE.(none)>
Thomas Clark <the.thomas.j.clark@gmail.com>
Thomas Clark <the.thomas.j.clark@gmail.com> <tjclark@wpi.edu>
anonymous <support@lmms.io> Locale updater <>
grejppi <grejppi@gmail.com>
Johannes Lorenz <j.git@lorenz-ho.me> <johannes89@mailueberfall.de>
Johannes Lorenz <j.git@lorenz-ho.me> <1042576+JohannesLorenz@users.noreply.github.com>
Noah Brecht <noahb2713@gmail.com>
Olivier Humbert <trebmuh@tuxfamily.org> <trebmuh@users.noreply.github.com>
Hussam al-Homsi <sawuare@gmail.com> Hussam Eddin Alhomsi <hussameddin.alhomsi@gmail.com>

View File

@@ -1,6 +0,0 @@
Makefile.in
*.moc
.libs
embedded_resources.h
.deps
Makefile

View File

@@ -1,6 +0,0 @@
language: cpp
compiler: gcc
before_install: sudo apt-get update
install: sudo apt-get install libqt4-dev libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libasound2-dev libjack-dev libsdl-dev libsamplerate0-dev libstk0-dev libfluidsynth-dev portaudio19-dev wine-dev g++-multilib libfltk1.3-dev
before_script: mkdir build && cd build
script: cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. && make -j8 VERBOSE=1

11
.tx/config Normal file
View File

@@ -0,0 +1,11 @@
[main]
host = https://www.transifex.com
minimum_perc = 51
#Need to finish at least 51% before merging back
[lmms.lmms]
file_filter = data/locale/<lang>.ts
source_file = data/locale/en.ts
source_lang = en
type = QT

87
AUTHORS
View File

@@ -1,87 +0,0 @@
Tobias Doerffel
<tobydox/at/users/dot/sourceforge/dot/net>
Development Manager
Jonathan Aquilina
<eagles051387/at/gmail/dot/com>
Project Manager
Paul Giblock
<drfaygo/at/gmail/dot/com>
Development
Danny McRae
<khjklujn/at/yahoo.com>
Development
Javier Serrano Polo
<jasp00/at/terra/dot/es>
Development
Lukas Wohlschläger
<lukaswhl/at/gmail/dot/com>
Development
Andrew Kelley
<superjoe30/at/gmail/dot/com>
Development
Wong Cho Ching
<chwongie/hyphen/banana/at/yahoo/dot/com>
Development
Andreas Brandmaier
<andy/at/brandmaier/dot/de>
BitInvader plugin
Juan Fabián Simón
<treees@gmail.com>
Version 0.4 plugin artwork
Sebastian Tilsch
<djcompilation/at/gmx/dot/de>
Recording of many samples
Gabriel
<kryos1/at/shaw/dot/ca>
Additional artwork
Vesa Kivimäki
<contact/dot/diizy/at/nbl/dot/fi>
UI Lead developer
Gurjot Singh
<bhattigurjot/at/gmail/dot/com>
Developer
Hannu Haahti
<grejppi/at/gmail/dot/com>
Developer
Uroš Maravić
<uros/dot/maravic/at/gmail/dot/com>
UI Developer
Tobiasz Karoń (unfa)
<unfa/at/unfamusic/dot/com>
UI Developer
Johannes Lorenz
<johannes89/at/mailueberfall/dot/de>
Developer
Rubén Ibarra Pastor
<pastorrub/at/msn/dot/com>
Developer
LocoMatt
<samozelko123/at/gmail/dot/com>
3osc skin developer
Chrissy McManus
<chrissy/dot/mc/dot/1/at/hotmail/dot/co/dot/uk>
UI developer
Oskar Wallgren
<oskar/dot/wallgren13/at/gmail/dot/com>
Development

20
Brewfile Normal file
View File

@@ -0,0 +1,20 @@
brew "carla"
brew "ccache"
brew "fftw"
brew "fltk"
brew "fluid-synth"
brew "jack"
brew "lame"
brew "libgig"
brew "libogg"
brew "libsamplerate"
brew "libsndfile"
brew "libsoundio"
brew "libvorbis"
brew "lilv"
brew "lv2"
brew "pkg-config"
brew "portaudio"
brew "qt@5"
brew "sdl2"
brew "stk"

File diff suppressed because it is too large Load Diff

33
INSTALL
View File

@@ -1,33 +0,0 @@
Building LMMS got quite simple since 0.4.0 as everything is managed
by cmake now. Therefore make sure you have CMake (>= 2.6.0 recommended) and
then run
mkdir build
cd build
cmake ../
make
sudo make install
If your system does not have "sudo", become root with your preferred mechanism
and run the "make install" command.
With the above commands an out-of-tree build is performed. You can also run
"cmake ." directly in the root of source tree although this is not recommended.
When performing an out-of-tree build after there's already an in-tree build,
make sure to run "make distclean" before running cmake inside build-directory.
If you want to use custom compiler flags simply set the environment variables
CFLAGS and CXXFLAGS.
After running cmake (the 3rd command above) you can see a summary of things
that are going to be built into LMMS or built as plugins. Install the
according libraries and development files if a certain feature is not enabled.
Then remove CMakeCache.txt and run cmake again.
If you want to supply an install prefix to cmake, add the flag:
-DCMAKE_INSTALL_PREFIX=<prefix>
Where <prefix> can be /usr, /usr/local, /opt, etc. The default is /usr/local.

67
INSTALL.txt Normal file
View File

@@ -0,0 +1,67 @@
This project uses git submodules and several are required for a successful
build. If this tarball was NOT provided with submodules (default), some source
dependencies will need to be manually added to src/3rdparty.
If this project WAS provided with submodules, there are detailed dependencies
(e.g. supported compilers, cmake requirements, cross-compilation) at
doc/wiki/Compiling.md including platform-specific build instructions (e.g.
apt-get, dnf, pacman, etc).
Online documentation:
https://github.com/LMMS/lmms/wiki/
Live online chat via Discord (similar to IRC):
https://lmms.io/chat, Channel #programming
Basic build steps:
mkdir build
cd build
cmake ../
make
sudo make install
# or alternately: su -c 'make install'
With the above commands an out-of-tree build is performed. You can also run
"cmake ." directly in the root of source tree although this is not recommended.
When performing an out-of-tree build after there's already an in-tree build,
make sure to run "make distclean" before running cmake inside build-directory.
If you want to use custom compiler flags simply set the environment variables
CFLAGS and CXXFLAGS.
After running cmake (the 3rd command above) you can see a summary of things
that are going to be built into LMMS or built as plugins. Install the
according libraries and development files if a certain feature is not enabled.
Then remove CMakeCache.txt and run cmake again.
For non-root installs, or to install to a non-standard location, provide an
install prefix to cmake, using the flag:
-DCMAKE_INSTALL_PREFIX=<prefix>
The Compilation tutorial (see docs/wiki/Compilation.md)
specifically uses <prefix> as "../target" for all non-root installations. This
is strongly recommended if developing a patch or a feature. For root
installations, <prefix> can be /usr, /usr/local, /opt, etc. For most systems,
the default is /usr/local.
If your Qt5 installation does not reside in standard installation paths,
additionally pass:
-DCMAKE_PREFIX_PATH=<prefix>
Where <prefix> is the location to Qt5 installation, usually /opt/qt5/, etc.
Important wiki sections:
doc/wiki/Compiling.md:
Dependencies Detailed
- Build Toolchain (cmake)
- Compiler (gcc, clang)
- Libraries (required and optional dependencies)
doc/wiki/Dependencies-<platform>.md
Platform-specific dependencies (Windows, Ubuntu, Fedora, macOS, etc.)

104
README
View File

@@ -1,104 +0,0 @@
LMMS 1.0.93
===========
Copyright (c) 2004-2014 by LMMS developers
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
What is LMMS?
--------------
LMMS is a free cross-platform alternative to commercial programs like FL Studio (R), which allow you to produce music with your computer. This includes the creation of melodies and beats, the synthesis and mixing of sounds, and arranging of samples. You can have fun with your MIDI-keyboard and much more; all in a user-friendly and modern interface.
Features
---------
* Song-Editor for composing songs
* A Beat+Bassline-Editor for creating beats and basslines
* An easy-to-use Piano-Roll for editing patterns and melodies
* An FX mixer with 64 FX channels and arbitrary number of effects allow unlimited mixing possibilities
* Many powerful instrument and effect-plugins out of the box
* Full user-defined track-based automation and computer-controlled automation sources
* Compatible with many standards such as SoundFont2, VST(i), LADSPA, GUS Patches, and full MIDI support
* Import of MIDI and FLP (Fruityloops(R) Project) files
Requirements
------------
The most important requirement is for sure a fast computer, so don't try to get
LMMS working on a pentium I with 60 MHz... ;-) Therefore you should have at
least 500 MHz, but for really enjoying LMMS less than 1 GHz makes no sense...
Required libraries:
- Qt >= 4.3.0 with devel-files (4.4.x recommended)
Optional, but strongly recommended:
- JACK with devel-files
- libvorbis & libogg with devel-files
- libalsa with devel-files
- SDL with devel-files
- libsamplerate >= 0.1.7 with devel-files
- libsndfile with devel-files
- WINE + WINE-devel-files
- stk, libstk + libstk-dev
- libfluidsynth with devel files
- fftw3 with devel-files
- libfltk1.3 with devel-files (needed by ZynAddSubFx)
For compiling you should have an up to date GCC with g++.
If you have problems with compiling or running LMMS, find any bug or have
suggestions and so on, please feel free to e-mail me (for mail-address see
below)!
Building
---------
See INSTALL for information on how to build LMMS.
Join LMMS-development
----------------------
If you are interested in LMMS, it's programming, artwork, testing, writing
demo-songs, (and improving this README...) or something like that,
you're welcome to participate on the development of LMMS!
The project-homepage of LMMS, mailingslists and a list of things you can do
can be found at
http://lmms.sourceforge.net
Details on development can be found in the Wiki:
https://github.com/LMMS/lmms/wiki
Before coding a new big feature, please ALWAYS post your idea and suggestions
about your feature and about the intended implementation to the
LMMS-devel-mailinglist (lmms-devel@lists.sourceforge.net) and wait for replies!
Maybe there're different ideas, improvements, hints or maybe your feature is
not welcome/needed at the moment.

View File

@@ -1,37 +1,58 @@
Linux MultiMedia Studio
=======================
[![Build Status](https://travis-ci.org/LMMS/lmms.png)](https://travis-ci.org/LMMS/lmms)
# ![LMMS Logo](https://raw.githubusercontent.com/LMMS/artwork/master/Icon%20%26%20Mimetypes/lmms-64x64.svg) LMMS
[![Build status](https://github.com/LMMS/lmms/actions/workflows/build.yml/badge.svg)](https://github.com/LMMS/lmms/actions/workflows/build.yml)
[![Latest stable release](https://img.shields.io/github/release/LMMS/lmms.svg?maxAge=3600)](https://lmms.io/download)
[![Overall downloads on Github](https://img.shields.io/github/downloads/LMMS/lmms/total.svg?maxAge=3600)](https://github.com/LMMS/lmms/releases)
[![Join the chat at Discord](https://img.shields.io/badge/chat-on%20discord-7289DA.svg)](https://discord.gg/3sc5su7)
[![Localise on transifex](https://img.shields.io/badge/localise-on_transifex-green.svg)](https://www.transifex.com/lmms/lmms/)
What is LMMS?
--------------
LMMS is a free cross-platform alternative to commercial programs like FL Studio (R), which allow you to produce music with your computer. This includes the creation of melodies and beats, the synthesis and mixing of sounds, and arranging of samples. You can have fun with your MIDI-keyboard and much more; all in a user-friendly and modern interface.
LMMS is a free cross-platform alternative to commercial programs like
FL Studio®, which allow you to produce music with your computer. This includes
the creation of melodies and beats, the synthesis and mixing of sounds, and
arranging of samples. You can have fun with your MIDI-keyboard and much more;
all in a user-friendly and modern interface.
[Homepage](https://lmms.io)<br>
[Downloads/Releases](https://github.com/LMMS/lmms/releases)<br>
[Developer Wiki](https://github.com/LMMS/lmms/wiki)<br>
[Artist & User Wiki/Documentation](https://lmms.io/documentation)<br>
[Sound Demos](https://lmms.io/showcase/)<br>
[LMMS Sharing Platform](https://lmms.io/lsp/) Share your songs!
Features
---------
* Song-Editor for composing songs
* A Beat+Bassline-Editor for creating beats and basslines
* Pattern-Editor for creating beats and patterns
* An easy-to-use Piano-Roll for editing patterns and melodies
* An FX mixer with 64 FX channels and arbitrary number of effects allow unlimited mixing possibilities
* A Mixer with unlimited mixer channels and arbitrary number of effects
* Many powerful instrument and effect-plugins out of the box
* Full user-defined track-based automation and computer-controlled automation sources
* Compatible with many standards such as SoundFont2, VST(i), LADSPA, GUS Patches, and full MIDI support
* Import of MIDI and FLP (Fruityloops(R) Project) files
* MIDI file importing and exporting
Building
---------
See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling-lmms) on our wiki for information on how to build LMMS.
See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling) on our
wiki for information on how to build LMMS.
Join LMMS-development
----------------------
If you are interested in LMMS, it's programming, artwork, testing, writing demo-songs, (and improving this readme…) or something like that, you're welcome to participate on the development of LMMS!
If you are interested in LMMS, its programming, artwork, testing, writing demo
songs, (and improving this README...) or something like that, you're welcome
to participate in the development of LMMS!
Information about what you can do and how can be found in the [wiki](https://github.com/LMMS/lmms/wiki).
Information about what you can do and how can be found in the
[wiki](https://github.com/LMMS/lmms/wiki).
Before coding a new big feature, please _always_ [file an issue](https://github.com/LMMS/lmms/issues/new) for your idea and suggestions about your feature and about the intended implementation on GitHub or post to the LMMS-devel-mailinglist (lmms-devel@lists.sourceforge.net) and wait for replies! Maybe there're different ideas, improvements, hints or maybe your feature is not welcome/needed at the moment.
Before coding a new big feature, please _always_
[file an issue](https://github.com/LMMS/lmms/issues/new) for your idea and
suggestions about your feature and about the intended implementation on GitHub,
or ask in one of the tech channels on Discord and wait for replies! Maybe there are different ideas, improvements, or hints, or
maybe your feature is not welcome/needed at the moment.

32
TODO
View File

@@ -1,32 +0,0 @@
Version 0.4.x
=============
- save tco-settings in trackContentWidget::saveSettings() etc. instead of
track::...
- resample sample-track-tcos when exporting at different samplerate
- message to user when importing unsupported MIDI-file (track-count = 0)
- piano roll: mouse cursor isn't updated correctly in selection mode
(from resizing note edit area)
- when you add vestige, have it automatically pop the find VST plugin dialog
- try to make vestige-plugin-dlls relative
- select all MIDI devices by default when you bring up the "connect to controller"
window and wait for first event - then uncheck all other MIDI devices that no
events were detected from
- load asdlol.mmpz. if you render it without playing it, or if you play it
the first time, you hear unwanted artifacts. (solution: apply automation
before playing)
- autosave every 30s (configurable!) and offer recovery at startup after crash
- speed up painting of sampleTCO
- do not process effects when playing frozen patterns
- copy-pasted automation patterns have to be manually linked back to
their knob for some reason
- improve TrackLabelButton: split 80%-20% (80%=name, 20%=button showing a popup
menu with track operations, make the midi input a top-level menu item)
- when you click and drag a mixer bar, it doesn't click and drag, it sets
absolutely. this is annoying
See TODO file in master branch and/or the TODO list in the Wiki for details
regarding the development series.

View File

@@ -1,7 +0,0 @@
MINGW=/opt/mingw32
export PATH=$PATH:$MINGW/bin
#export CFLAGS="-march=pentium3 -mtune=generic -mpreferred-stack-boundary=5 -fno-tree-vectorize"
export CFLAGS="-march=pentium3 -mtune=generic -mpreferred-stack-boundary=5"
export CXXFLAGS="$CFLAGS"
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win32Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/

View File

@@ -1,6 +0,0 @@
MINGW=/opt/mingw64
export PATH=$PATH:$MINGW/bin
#export CFLAGS="-fno-tree-vectorize"
export CXXFLAGS="$CFLAGS"
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win64Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/

View File

@@ -1,212 +0,0 @@
/*
* bin2res.cpp - generate embedded resources from binary data (based on qembed)
*
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
static void embedData( const char * _input, int _size, std::ostream & _output );
static std::string convertFileNameToCIdentifier( const std::string & _s );
struct embed
{
unsigned int size;
std::string name;
std::string cname;
} ;
typedef std::vector<std::string> stringlist;
const int MAX_FILE_SIZE = 256*256*256; // = 16 MB
int main( int argc, char * * argv )
{
if( argc < 2 )
{
std::cerr << "Usage:" << std::endl << "\t" << argv[0] <<
" files" << std::endl;
return( 1 );
}
std::cout << "// Generated by bin2res" << std::endl;
std::vector<embed *> embedded_data;
std::cout << "#ifndef _EMBEDDED_RESOURCES_H" << std::endl;
std::cout << "#define _EMBEDDED_RESOURCES_H" << std::endl;
stringlist files;
for( int i = 1; i < argc; ++i )
{
files.push_back( std::string( argv[i] ) );
}
for( stringlist::iterator it = files.begin(); it != files.end(); ++it )
{
std::ifstream f( it->c_str(), std::ios::binary );
if( f.fail() )
{
std::cerr << "Cannot open file " << *it <<
", ignoring it" << std::endl;
continue;
}
f.seekg( 0, std::ios::end );
int fsize = f.tellg();
f.seekg( 0 );
if( fsize == 0 || fsize > MAX_FILE_SIZE )
{
std::cerr << "File " << *it << " has zero size or is "
"too large to be processed with bin2res." <<
std::endl;
}
char * data = new char[fsize];
f.read( data, fsize );
embed * e = new embed;
e->size = fsize;
if( it->rfind( '/' ) != std::string::npos )
{
e->name = std::string( it->c_str() +
it->rfind( '/' ) + 1 );
}
else
{
e->name = *it;
}
e->cname = convertFileNameToCIdentifier( e->name );
embedded_data.push_back( e );
std::string s;
std::cout << "static const unsigned char " << e->cname <<
"_data[] = {";
embedData( data, fsize, std::cout );
std::cout << std::endl << "};" << std::endl << std::endl;
delete[] data;
}
if( embedded_data.size() > 0 )
{
std::cout << "static const unsigned char dummy_data[] ="
"{ 0x00 };" << std::endl << std::endl;
embed * dummy = new embed;
dummy->size = 1;
dummy->name = "dummy";
dummy->cname = convertFileNameToCIdentifier(
std::string( "dummy" ) );
embedded_data.push_back( dummy );
std::cout << "#include <string.h>" << std::endl << std::endl;
std::cout << "#include \"embed.h\"" << std::endl << std::endl;
std::cout << "static embed::descriptor embed_vec[] = {" << std::endl;
/* << "{" << std::endl
<< " int size;" << std::endl
<< " const unsigned char * data;" <<
std::endl
<< " const char * name;" << std::endl
<< "} embed_vec[] = {" << std::endl;*/
while( embedded_data.size() > 0 )
{
embed * e = embedded_data[0];
std::cout << " { " << e->size << ", " << e->cname <<
"_data, " << "\"" << e->name <<
"\" }," << std::endl;
delete e;
embedded_data.erase( embedded_data.begin() );
}
std::cout << " { 0, 0, 0 }" << std::endl << "};" << std::endl
<< std::endl
<< "static const embed::descriptor & "
"findEmbeddedData( const char * _name )"
<< std::endl << "{" << std::endl
<< " for( int i = 0; embed_vec[i].data; "
"i++ )" << std::endl
<< " {" << std::endl
<< " if( strcmp( embed_vec[i].name, "
"_name ) == 0 )" << std::endl
<< " {" << std::endl
<< " return( "
"embed_vec[i] );" << std::endl
<< " }" << std::endl
<< " }" << std::endl
/* << " printf( \"warning: embedded resource "
"%s not found!\\n\", _name );"
<< std::endl*/
<< " return( findEmbeddedData( "
"\"dummy\" ) );" << std::endl
<< "}" << std::endl << std::endl;
}
std::cout << "#endif" << std::endl;
return( 0 );
}
std::string convertFileNameToCIdentifier( const std::string & _s )
{
std::string r = _s;
int len = r.length();
if ( len > 0 && !isalpha( (char)r[0] ) )
{
r[0] = '_';
}
for ( int i = 1; i < len; i++ )
{
if ( !isalnum( (char)r[i] ) )
{
r[i] = '_';
}
}
return( r );
}
void embedData( const char * _input, int _nbytes, std::ostream & _output )
{
static const char hexdigits[] = "0123456789abcdef";
std::string s;
for( int i = 0; i < _nbytes; i++ )
{
if( ( i%14 ) == 0 )
{
s += "\n ";
_output << s;
s = "";
}
unsigned int v = _input[i];
s += "0x";
s += hexdigits[(v >> 4) & 15];
s += hexdigits[v & 15];
if( i < _nbytes-1 )
{
s += ',';
}
}
if ( s.length() )
{
_output << s;
}
}

71
buildtools/update_locales Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/bash
aberr(){ printf "[\e[31mERROR\e[0m]: \e[1m%s\e[0m\n" "$*" >&2; }
abinfo(){ printf "[\e[96mINFO\e[0m]: \e[1m%s\e[0m\n" "$*" >&2; }
function upload_to_tx() {
if ! which tx > /dev/null; then
aberr "You don't have Transifex client installed. \n Run \`pip install transifex-client\` to install it."
exit 1
fi
abinfo "Uploading to transifex..."
if ! tx push -s; then
aberr "Problems occurred when uploading strings to Transifex."
printf "\t Either there are syntax errors in source file or you don't have permission to update the source file."
exit 1
fi
exit 0
}
function validate() {
ERR_LANG=""
ERR_BUF=""
for i in data/locale/*.ts; do
if ! ERR_BUF=$(lconvert-qt5 -i "${i}" -o "/tmp/test.qm" -of qm 2>&1); then
ERR_LANG+="\e[96m$(basename "${i}")\e[0m: \e[93m${ERR_BUF}\e[0m "
printf "\e[31mx\e[0m"
continue
fi
printf "\e[32m.\e[0m"
done
echo ""
if [[ "x${ERR_LANG}" != "x" ]]; then
aberr "The following files failed the validation: "
echo -e "${ERR_LANG}"
fi
}
abinfo "Checking for your environment..."
if ! which lupdate-qt5 > /dev/null; then
aberr "You don't seem to have Qt i18n tools installed."
printf "\tUsually this comes with your Qt installation, or you need to\n"
printf "\tinstall extra packages like \`qt5-tools\` or similar.\n"
exit 1;
fi
abinfo "Scanning directories..."
if test -d src/3rdparty/qt5-x11embed/3rdparty/ECM/; then
# prevent from collecting strings in ECM
rm -rf src/3rdparty/qt5-x11embed/3rdparty/ECM/
fi
if ! lupdate-qt5 -I include/ src/ plugins/ -ts data/locale/en.ts; then
aberr "There are some problems when collecting the strings."
exit 1
fi
abinfo "Validating translations..."
validate
abinfo "Translations successfully updated."
printf "Do you want to upload translations to Transifex? [y/N]: "
read -n 1 -r TX
echo ""
if [[ "$TX" == "y" || "$TX" == "Y" ]]; then
upload_to_tx
fi
abinfo "No upload as required."
exit 0

30
cmake/CMakeLists.txt Normal file
View File

@@ -0,0 +1,30 @@
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
SET(CPACK_PACKAGE_VENDOR "${PROJECT_AUTHOR}")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${VERSION_RELEASE}")
IF(VERSION_STAGE)
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${VERSION_STAGE}")
ENDIF()
IF(VERSION_BUILD)
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${VERSION_BUILD}")
ENDIF()
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME_UCASE}")
SET(CPACK_SOURCE_GENERATOR "TBZ2")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}")
IF(NOT DEFINED WIN32)
SET(CPACK_STRIP_FILES "bin/${CMAKE_PROJECT_NAME};${PLUGIN_DIR}/*.so")
SET(CPACK_PACKAGE_EXECUTABLES "${CMAKE_PROJECT_NAME}" "${PROJECT_NAME_UCASE} binary")
ENDIF()
IF(LMMS_BUILD_WIN32)
ADD_SUBDIRECTORY(nsis)
ELSEIF(LMMS_BUILD_APPLE)
ADD_SUBDIRECTORY(apple)
ELSE()
ADD_SUBDIRECTORY(linux)
ENDIF()
INCLUDE(CPack)

View File

@@ -0,0 +1,35 @@
SET(MACOSX_BUNDLE_ICON_FILE "icon.icns")
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_NAME_UCASE}")
SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME_UCASE}")
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}")
SET(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}")
SET(MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}")
SET(MACOSX_BUNDLE_MIMETYPE "application/x-lmms-project")
SET(MACOSX_BUNDLE_MIMETYPE_ICON "project.icns")
SET(MACOSX_BUNDLE_MIMETYPE_ID "io.lmms")
SET(MACOSX_BUNDLE_PROJECT_URL "${PROJECT_URL}")
SET(MACOSX_BUNDLE_DMG_TITLE "${MACOSX_BUNDLE_BUNDLE_NAME} ${MACOSX_BUNDLE_LONG_VERSION_STRING}")
# FIXME: appdmg won't allow volume names > 27 char
# See also https://github.com/LinusU/node-appdmg/issues/48
STRING(SUBSTRING "${MACOSX_BUNDLE_DMG_TITLE}" 0 27 MACOSX_BUNDLE_DMG_TITLE)
CONFIGURE_FILE("lmms.plist.in" "${CMAKE_BINARY_DIR}/Info.plist")
CONFIGURE_FILE("install_apple.sh.in" "${CMAKE_BINARY_DIR}/install_apple.sh" @ONLY)
CONFIGURE_FILE("package_apple.json.in" "${CMAKE_BINARY_DIR}/package_apple.json" @ONLY)
# DMG creation target
SET(DMG_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}.dmg")
FILE(REMOVE "${DMG_FILE}")
ADD_CUSTOM_TARGET(removedmg
COMMAND touch "\"${DMG_FILE}\"" && rm "\"${DMG_FILE}\""
COMMENT "Removing old DMG")
ADD_CUSTOM_TARGET(dmg
COMMAND appdmg "\"${CMAKE_BINARY_DIR}/package_apple.json\"" "\"${DMG_FILE}\""
DEPENDS "${CMAKE_BINARY_DIR}/package_apple.json"
COMMENT "Generating DMG")
ADD_DEPENDENCIES(dmg removedmg)
# see also ../postinstall/CMakeLists.txt

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
cmake/apple/icon.icns Normal file

Binary file not shown.

View File

@@ -0,0 +1,104 @@
#!/bin/bash
# Creates Apple ".app" bundle for @PROJECT_NAME_UCASE@
# Note:
# Examine linkings using `otool -L somelib.so`
# Debug the loading of dynamic libraries using `export DYLD_PRINT_LIBRARIES=1`
set -e
# Place to create ".app" bundle
APP="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.app"
MSG_COLOR='\x1B[1;36m'
COLOR_RESET='\x1B[0m'
echo -e "$MSG_COLOR\n\nCreating App Bundle \"$APP\"...$COLOR_RESET"
qtpath="$(dirname "@QT_QMAKE_EXECUTABLE@")"
export PATH="$PATH:$qtpath"
# Remove any old .app bundles
rm -Rf "$APP"
# Copy/overwrite Info.plist
command cp "@CMAKE_BINARY_DIR@/Info.plist" "@CMAKE_INSTALL_PREFIX@/"
# Create .app bundle containing contents from CMAKE_INSTALL_PREFIX
mkdir -p "$APP/Contents/MacOS"
mkdir -p "$APP/Contents/Frameworks"
mkdir -p "$APP/Contents/Resources"
cd "@CMAKE_INSTALL_PREFIX@"
cp -R ./* "$APP/Contents"
cp "@CMAKE_SOURCE_DIR@/cmake/apple/"*.icns "$APP/Contents/Resources/"
# Make all libraries writable for macdeployqt
cd "$APP"
find . -type f -print0 | xargs -0 chmod u+w
lmmsbin="MacOS/@CMAKE_PROJECT_NAME@"
zynbin="MacOS/RemoteZynAddSubFx"
# Move lmms binary
mv "$APP/Contents/bin/@CMAKE_PROJECT_NAME@" "$APP/Contents/$lmmsbin"
# Fix zyn linking
mv "$APP/Contents/lib/lmms/RemoteZynAddSubFx" "$APP/Contents/$zynbin"
# Replace @rpath with @loader_path for Carla
# See also plugins/CarlaBase/CMakeLists.txt
# This MUST be done BEFORE calling macdeployqt
install_name_tool -change @rpath/libcarlabase.dylib \
@loader_path/libcarlabase.dylib \
"$APP/Contents/lib/lmms/libcarlapatchbay.so"
install_name_tool -change @rpath/libcarlabase.dylib \
@loader_path/libcarlabase.dylib \
"$APP/Contents/lib/lmms/libcarlarack.so"
# Link lmms binary
_executables="${_executables} -executable=$APP/Contents/$zynbin"
# Build a list of shared objects in target/lib/lmms
for file in "$APP/Contents/lib/lmms/"*.so; do
_thisfile="$APP/Contents/lib/lmms/${file##*/}"
_executables="${_executables} -executable=$_thisfile"
done
# Build a list of shared objects in target/lib/lmms/ladspa
for file in "$APP/Contents/lib/lmms/ladspa/"*.so; do
_thisfile="$APP/Contents/lib/lmms/ladspa/${file##*/}"
_executables="${_executables} -executable=$_thisfile"
done
# Finalize .app
# shellcheck disable=SC2086
macdeployqt "$APP" $_executables
# Carla is a standalone plugin. Remove library, look for it side-by-side LMMS.app
# This MUST be done AFTER calling macdeployqt
#
# For example:
# /Applications/LMMS.app
# /Applications/Carla.app
carlalibs=$(echo "@CARLA_LIBRARIES@"|tr ";" "\n")
# Loop over all libcarlas, fix linking
for file in "$APP/Contents/lib/lmms/"libcarla*; do
_thisfile="$APP/Contents/lib/lmms/${file##*/}"
for lib in $carlalibs; do
_oldpath="../../Frameworks/lib${lib}.dylib"
_newpath="Carla.app/Contents/MacOS/lib${lib}.dylib"
# shellcheck disable=SC2086
install_name_tool -change @loader_path/$_oldpath \
@executable_path/../../../$_newpath \
"$_thisfile"
rm -f "$APP/Contents/Frameworks/lib${lib}.dylib"
done
done
# Cleanup
rm -rf "$APP/Contents/bin"
# Codesign
codesign --force --deep --sign - "$APP"
echo -e "\nFinished.\n\n"

View File

@@ -143,5 +143,11 @@
</dict>
</dict>
</array>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>NSRequiresAquaSystemAppearance</key>
<string>False</string>
</dict>
</plist>

View File

@@ -0,0 +1,9 @@
{
"title": "@MACOSX_BUNDLE_DMG_TITLE@",
"background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png",
"icon-size": 128,
"contents": [
{ "x": 139, "y": 200, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" },
{ "x": 568, "y": 200, "type": "link", "path": "/Applications" }
]
}

BIN
cmake/apple/project.icns Normal file

Binary file not shown.

40
cmake/build_win32.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Accomodate both linux windows mingw locations
if [ -z "$ARCH" ]; then
ARCH=32
fi
MINGW=/mingw$ARCH
if [ -z "$MSYSCON" ]; then
MINGW=/opt$MINGW
DISTRO=$(lsb_release -si)
DISTRO_VERSION=$(lsb_release -sr)
if [ "$DISTRO" != "Ubuntu" ]; then
echo "This script only supports Ubuntu"
exit 1
fi
if [ "$DISTRO_VERSION" == "14.04" ]; then
TOOLCHAIN="$DIR/toolchains/Ubuntu-MinGW-X-Trusty-$ARCH.cmake"
else
TOOLCHAIN="$DIR/toolchains/Ubuntu-MinGW-W64-$ARCH.cmake"
fi
else
TOOLCHAIN="$DIR/toolchains/MSYS-$ARCH.cmake"
fi
export PATH=$MINGW/bin:$PATH
export CXXFLAGS="$CFLAGS"
if [ "$ARCH" == "32" ]; then
export CFLAGS="-march=pentium3 -mtune=generic -mpreferred-stack-boundary=5 -mfpmath=sse"
fi
CMAKE_OPTS="-DCMAKE_PREFIX_PATH=$MINGW $CMAKE_OPTS"
# shellcheck disable=SC2086
cmake "$DIR/.." -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" $CMAKE_OPTS

3
cmake/build_win64.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
ARCH=64 "$DIR/build_win32.sh"

View File

@@ -0,0 +1,56 @@
SET(PLUGIN_FILES "")
IF(LMMS_BUILD_WIN32)
INSTALL(FILES $<TARGET_FILE:Qt5::QWindowsIntegrationPlugin> DESTINATION platforms)
ENDIF()
IF(LMMS_BUILD_WIN32 OR LMMS_INSTALL_DEPENDENCIES)
include(InstallTargetDependencies)
# Collect directories to search for DLLs
GET_FILENAME_COMPONENT(QTBIN_DIR "${QT_QMAKE_EXECUTABLE}" PATH)
set(LIB_DIRS "${QTBIN_DIR}")
GET_PROPERTY(PLUGINS_BUILT GLOBAL PROPERTY PLUGINS_BUILT)
IF(LMMS_BUILD_WIN32)
SET(LMMS_DEP_DESTINATION ${BIN_DIR})
SET(PLUGIN_DEP_DESTINATION ${BIN_DIR})
ELSE()
SET(LMMS_DEP_DESTINATION ${LIB_DIR})
SET(PLUGIN_DEP_DESTINATION ${LIB_DIR})
ENDIF()
INSTALL_TARGET_DEPENDENCIES(
NAME "main_binary"
TARGETS lmms
DESTINATION "${LMMS_DEP_DESTINATION}"
LIB_DIRS ${LIB_DIRS}
)
INSTALL_TARGET_DEPENDENCIES(
NAME "plugins"
TARGETS ${PLUGINS_BUILT}
DESTINATION ${PLUGIN_DEP_DESTINATION}
LIB_DIRS ${LIB_DIRS} "${PLUGIN_DIR}" "${PLUGIN_DIR}/optional"
SEARCH_PATHS "${PLUGIN_DIR}" "${PLUGIN_DIR}/optional"
)
ENDIF()
# Install STK rawwaves
if(LMMS_HAVE_STK AND (LMMS_BUILD_WIN32 OR LMMS_BUILD_APPLE))
if(STK_RAWWAVE_ROOT)
file(GLOB RAWWAVES "${STK_RAWWAVE_ROOT}/*.raw")
install(FILES ${RAWWAVES} DESTINATION "${DATA_DIR}/stk/rawwaves")
else()
message(WARNING "Can't find STK rawwave root!")
endif()
endif()
IF(LMMS_BUILD_APPLE)
INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x ${CMAKE_BINARY_DIR}/install_apple.sh)")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_BINARY_DIR}/install_apple.sh RESULT_VARIABLE EXIT_CODE)
IF(NOT EXIT_CODE EQUAL 0)
MESSAGE(FATAL_ERROR \"Execution of install_apple.sh failed\")
ENDIF()
")
ENDIF()

View File

@@ -0,0 +1,23 @@
# List of DLLs considered to be system libraries.
# This is needed when cross-compiling for Windows.
ADVAPI32.dll
COMCTL32.dll
comdlg32.dll
dwmapi.dll
GDI32.dll
IMM32.dll
KERNEL32.dll
MPR.DLL
msvcrt.dll
ole32.dll
OLEAUT32.dll
OPENGL32.DLL
SHELL32.dll
USER32.dll
UxTheme.dll
VERSION.dll
WINMM.DLL
WS2_32.dll
RPCRT4.dll
dsound.dll
SETUPAPI.dll

View File

@@ -0,0 +1,19 @@
INSTALL(DIRECTORY icons/ DESTINATION "${DATA_DIR}/icons/hicolor")
INSTALL(FILES lmms.desktop DESTINATION "${DATA_DIR}/applications")
INSTALL(FILES lmms.xml DESTINATION "${DATA_DIR}/mime/packages")
# AppImage creation target
SET(APPIMAGE_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-linux-${CMAKE_SYSTEM_PROCESSOR}.AppImage")
CONFIGURE_FILE("package_linux.sh.in" "${CMAKE_BINARY_DIR}/package_linux.sh" @ONLY)
FILE(REMOVE "${APPIMAGE_FILE}")
ADD_CUSTOM_TARGET(removeappimage
COMMAND rm -f "${APPIMAGE_FILE}"
COMMENT "Removing old AppImage")
ADD_CUSTOM_TARGET(appimage
COMMAND chmod +x "${CMAKE_BINARY_DIR}/package_linux.sh"
COMMAND "${CMAKE_BINARY_DIR}/package_linux.sh"
COMMENT "Generating AppImage"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
ADD_DEPENDENCIES(appimage removeappimage)

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg4034"
version="1.1"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
inkscape:export-filename="64x64@2.png"
inkscape:export-xdpi="192"
inkscape:export-ydpi="192"
sodipodi:docname="lmms.svg">
<defs
id="defs4036">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4173"
x="-0.011714286"
width="1.0234286"
y="-0.0123"
height="1.0246">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.205"
id="feGaussianBlur4175" />
</filter>
<linearGradient
gradientTransform="translate(0,32)"
inkscape:collect="always"
xlink:href="#linearGradient4244-6"
id="linearGradient866"
x1="35"
y1="-14"
x2="35"
y2="27"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient4244-6"
inkscape:collect="always">
<stop
id="stop4428"
offset="0"
style="stop-color:#27ab5f;stop-opacity:1" />
<stop
id="stop4430"
offset="1"
style="stop-color:#249a56;stop-opacity:1" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4142135"
inkscape:cx="210.86487"
inkscape:cy="3.375495"
inkscape:current-layer="svg4034"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1366"
inkscape:window-height="705"
inkscape:window-x="253"
inkscape:window-y="1072"
inkscape:window-maximized="1"
showguides="false"
inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid4042" />
<sodipodi:guide
position="37,4"
orientation="0,1"
id="guide4951"
inkscape:locked="false" />
<sodipodi:guide
position="38,60"
orientation="0,1"
id="guide4955"
inkscape:locked="false" />
<sodipodi:guide
position="-19,32"
orientation="0,1"
id="guide4957"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata4039">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<rect
rx="4"
y="4"
x="4"
height="56"
width="56"
id="rect5093"
style="display:inline;opacity:0.98999999;fill:#34d07b;fill-opacity:1;stroke:none;stroke-opacity:1" />
<rect
rx="3"
y="5"
x="5"
height="54"
width="54"
id="rect5095"
style="display:inline;opacity:1;fill:url(#linearGradient866);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccccccccccccc"
inkscape:connector-curvature="0"
id="path5085-3-6"
d="M 32,13 11,25 v 24 l 7,4 7,-4 v -8 l -7,-4 v -8 l 14,-8 14,8 v 8 l -7,4 v 8 l 7,4 7,-4 V 25 Z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.15;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4173);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="ccccccccccccccccc"
inkscape:connector-curvature="0"
id="path5085-3"
d="M 32,11 11,23 v 24 l 7,4 7,-4 v -8 l -7,-4 v -8 l 14,-8 14,8 v 8 l -7,4 v 8 l 7,4 7,-4 V 23 Z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5497);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -0,0 +1,173 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg4034"
version="1.1"
inkscape:version="0.91 r13725"
inkscape:export-filename="/home/umcaruje/d/Dropbox/lmms icons/project-256x256.png"
inkscape:export-xdpi="360"
inkscape:export-ydpi="360"
sodipodi:docname="application-x-lmms-project.svg"
enable-background="new">
<defs
id="defs4036">
<linearGradient
id="linearGradient4244-6"
inkscape:collect="always">
<stop
id="stop4428"
offset="0"
style="stop-color:#27ab5f;stop-opacity:1" />
<stop
id="stop4430"
offset="1"
style="stop-color:#249a56;stop-opacity:1" />
</linearGradient>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4400"
x="-0.024"
width="1.048"
y="-0.024"
height="1.048">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.14999999"
id="feGaussianBlur4402" />
</filter>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4244-6"
id="linearGradient4432"
gradientUnits="userSpaceOnUse"
x1="9.8838835"
y1="-9.8994951"
x2="10.275496"
y2="27.930717" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4442"
x="-0.0116"
width="1.0232"
y="-0.012428571"
height="1.0248571">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.145"
id="feGaussianBlur4444" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568542"
inkscape:cx="4.2102935"
inkscape:cy="18.651114"
inkscape:current-layer="g4263"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1366"
inkscape:window-height="740"
inkscape:window-x="339"
inkscape:window-y="1080"
inkscape:window-maximized="1"
showguides="false"
inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
id="grid4042" />
<sodipodi:guide
position="37,4"
orientation="0,1"
id="guide4951" />
<sodipodi:guide
position="38,60"
orientation="0,1"
id="guide4955" />
<sodipodi:guide
position="-19,32"
orientation="0,1"
id="guide4957" />
</sodipodi:namedview>
<metadata
id="metadata4039">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="g4263"
inkscape:label="mimetype"
style="display:inline">
<g
id="g4189">
<path
sodipodi:nodetypes="ssssssccccs"
inkscape:connector-curvature="0"
id="path4273"
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"
style="display:inline;opacity:1;fill:#34d07b;fill-opacity:1;stroke:none;stroke-opacity:1"
transform="translate(0,32)" />
<path
sodipodi:nodetypes="sssssscccs"
inkscape:connector-curvature="0"
id="path4275"
d="m 10,-29 c -0.554,0 -1,0.446 -1,1 l 0,56 c 0,0.554 0.446,1 1,1 l 44,0 c 0.554,0 1,-0.446 1,-1 l 0,-43 -13,-1 -1,-13 z"
style="display:inline;opacity:1;fill:url(#linearGradient4432);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="translate(0,32)" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path4339-5"
d="m 40,-29 0,11.999999 c 0,2 1,3 3,3 l 11.999999,0 0,-1 L 41,-29 Z"
style="display:inline;opacity:0.12999998;fill:#222222;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4400)"
transform="translate(0,32)" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path4339"
d="m 41,-29 0,12 c 0,1.03125 0.9375,2 2,2 l 12,0 0,-1 -13,-13 z"
style="display:inline;fill:#34d07b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(0,32)" />
<path
sodipodi:nodetypes="ccccccccccccccccc"
inkscape:connector-curvature="0"
id="path4436"
d="m 32,22 -15,8 0,17.5 5,2.5 4.999999,-2.5 0,-6 L 22,39 l 0,-6 10,-5.5 10,5.5 0,6 -4.999999,2.5 0,6 L 42,50 47,47.5 47,30 Z"
style="display:inline;color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;overflow:visible;visibility:visible;opacity:0.15;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4442);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5497);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 32,20 -15,8 0,17.5 5,2.5 4.999999,-2.5 0,-6 L 22,37 l 0,-6 10,-5.5 10,5.5 0,6 -4.999999,2.5 0,6 L 42,48 47,45.5 47,28 Z"
id="path4265"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export PATH="$PATH:/sbin"
if command -v carla > /dev/null 2>&1; then
CARLAPATH="$(command -v carla)"
CARLAPREFIX="${CARLAPATH%/bin*}"
echo "Carla appears to be installed on this system at $CARLAPREFIX/lib[64]/carla so we'll use it." >&2
export LD_LIBRARY_PATH=$CARLAPREFIX/lib/carla:$CARLAPREFIX/lib64/carla:$LD_LIBRARY_PATH
else
echo "Carla does not appear to be installed. That's OK, please ignore any related library errors." >&2
fi
export LD_LIBRARY_PATH=$DIR/usr/lib/:$DIR/usr/lib/lmms:$LD_LIBRARY_PATH
# Prevent segfault on VirualBox
if lsmod |grep vboxguest > /dev/null 2>&1; then
echo "VirtualBox detected. Forcing libgl software rendering." >&2
export LIBGL_ALWAYS_SOFTWARE=1;
fi
if ldconfig -p | grep libjack.so.0 > /dev/null 2>&1; then
echo "Jack appears to be installed on this system, so we'll use it." >&2
else
echo "Jack does not appear to be installed. That's OK, we'll use a dummy version instead." >&2
export LD_LIBRARY_PATH=$DIR/usr/lib/lmms/optional:$LD_LIBRARY_PATH
fi
QT_X11_NO_NATIVE_MENUBAR=1 "$DIR"/usr/bin/lmms.real "$@"

4
cmake/linux/lmms Normal file
View File

@@ -0,0 +1,4 @@
?package(lmms):needs="X11" section="Apps/Sound" \
title="LMMS" hints="Audio" command="/usr/bin/lmms" \
longtitle="LMMS" \
icon="/usr/share/icons/hicolor/scalable/apps/lmms.svg"

17
cmake/linux/lmms.desktop Normal file
View File

@@ -0,0 +1,17 @@
[Desktop Entry]
Name=LMMS
GenericName=Music production suite
GenericName[ca]=Programari de producció musical
GenericName[de]=Software zur Musik-Produktion
GenericName[fr]=Suite de production musicale
GenericName[pl]=Narzędzia do produkcji muzyki
Comment=Music sequencer and synthesizer
Comment[ca]=Producció fàcil de música per a tothom!
Comment[fr]=Séquenceur et synthétiseur de musique
Comment[pl]=Prosta produkcja muzyki dla każdego!
Icon=lmms
Exec=lmms %f
Terminal=false
Type=Application
Categories=Qt;AudioVideo;Audio;Midi;
MimeType=application/x-lmms-project;

View File

@@ -1,6 +1,6 @@
# Configuration variables
%define name lmms
%define version 0.3.0
%define version ${LMMS_VERSION}
%define rel 1
%define release %{rel}%{?disttag}%{?repotag}
@@ -13,7 +13,7 @@
%define with_sf 1%{nil}
# Build by setting these defines on the command line, for example:
# rpmbuild --define 'disttag .EL' --define 'repotag .fc6'
# rpmbuild --define 'disttag .EL' --define 'repotag .fc6'
%{!?desktop_vendor: %{expand: %%define desktop_vendor rpmfarm}}
# This can be changed at build time:
# rpmbuild --define 'desktop_vendor RPMfarm'
@@ -26,11 +26,11 @@ Release: %{release}
Summary: powerful sequencer-, synthesizer- and sample-studio for Linux
Summary(de): Leistungsfaehiges Sequenzer-, Synthesizer- und Sample-Studio fuer Linux
License: GPL
URL: http://lmms.sourceforge.net/
URL: https://lmms.io/
Group: Applications/Multimedia
Provides: lmms = %{version}-%{release}
BuildRequires: gcc gcc-c++ libstdc++-devel autoconf automake libtool make
BuildRequires: alsa-lib-devel
BuildRequires: alsa-lib-devel
BuildRequires: qt-devel > 3.0
# ------------- BuildRequires:
%if %{with_vorbis}
@@ -40,7 +40,7 @@ BuildRequires: libvorbis libvorbis-devel
BuildRequires: SDL SDL-devel SDL_sound
%endif
%if %{with_sr}
BuildRequires: libsamplerate libsamplerate-devel
BuildRequires: libsamplerate libsamplerate-devel
%endif
%if %{with_sf}
BuildRequires: libsndfile libsndfile-devel
@@ -57,7 +57,7 @@ Requires: qt >= 3.0 alsa-lib
Requires: libsamplerate
%endif
%if %{with_sf}
Requires: libsndfile
Requires: libsndfile
%endif
%if %{with_jack}
Requires: jack-audio-connection-kit
@@ -116,13 +116,13 @@ Group: Applications/Multimedia
Provides: lmms-data = %{version}-%{release}
%description data
This package contains platform-independent data and resources for Linux
MultiMedia Studio (LMMS), e.g. samples, presets and demo-projects.
This package contains platform-independent data and resources for LMMS, e.g.
samples, presets and demo-projects.
%description data -l de
Dieses Paket beinhaltet plattform-unabhaengige Daten und Resourcen fuer Linux
MultiMedia Studio (LMMS), wie z.B. Samples, Presets und Demo-Projekte.
Dieses Paket beinhaltet plattform-unabhaengige Daten und Resourcen fuer LMMS,
wie z.B. Samples, Presets und Demo-Projekte.
%prep
@@ -156,7 +156,7 @@ MultiMedia Studio (LMMS), wie z.B. Samples, Presets und Demo-Projekte.
# Create a desktop menu entry
%{__cat} > %{name}.desktop << EOF
[Desktop Entry]
Name=Linux MultiMedia Studio
Name=LMMS
Comment=Powerful sequencer-, synthesizer- and sample-studio for Linux
Exec=lmms
Icon=%{_datadir}/%{name}/themes/default/icon.png
@@ -194,23 +194,7 @@ desktop-file-install \
%dir %{_datadir}/lmms
%{_datadir}/lmms/*
%changelog
* Fri Apr 13 2007 Eric Lassauge <lassauge@users.fr.net> - 0.2.1-1
- build for FC6
- added dependencies and build configuration
- added .desktop file
* Tue Sep 20 2005 Tobias Doerffel
- added JACK-dependencies
* Fri Jul 22 2005 Tobias Doerffel
- added more dependencies for builds under SuSE
* Sat Jun 25 2005 Tobias Doerffel
- splitted package into lmms and lmms-data
- additional requirements
- updated project-homepage and email-address of packager
* Thu May 12 2005 Tobias Doerffel
- created lmms.spec.in
-%changelog
-* Please see release notes (viewable online):
-- https://github.com/LMMS/lmms/releases/tag/v${LMMS_VERSION}
-

10
cmake/linux/lmms.xml Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-lmms-project">
<sub-class-of type="application/xml"/>
<comment>LMMS project</comment>
<comment xml:lang="ca">Projecte LMMS</comment>
<glob pattern="*.mmpz"/>
<glob pattern="*.mmp"/>
</mime-type>
</mime-info>

View File

@@ -0,0 +1,213 @@
#!/usr/bin/env bash
# Creates Linux ".AppImage" for @PROJECT_NAME_UCASE@
#
# Depends: linuxdeployqt
#
# Notes: Will attempt to fetch linuxdeployqt automatically (x86_64 only)
# See Also: https://github.com/probonopd/linuxdeployqt/blob/master/BUILDING.md
VERBOSITY=2 # 3=debug
LOGFILE="@CMAKE_BINARY_DIR@/appimage.log"
APPDIR="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.AppDir/"
DESKTOPFILE="${APPDIR}usr/share/applications/lmms.desktop"
STRIP=""
# Don't strip for Debug|RelWithDebInfo builds
# shellcheck disable=SC2193
if [[ "@CMAKE_BUILD_TYPE@" == *"Deb"* ]]; then
STRIP="-no-strip"
fi
# Console colors
RED="\\x1B[1;31m"
GREEN="\\x1B[1;32m"
YELLOW="\\x1B[1;33m"
PLAIN="\\x1B[0m"
function error {
echo -e " ${PLAIN}[${RED}error${PLAIN}] ${1}"
return 1
}
function success {
echo -e " ${PLAIN}[${GREEN}success${PLAIN}] ${1}"
}
function skipped {
echo -e " ${PLAIN}[${YELLOW}skipped${PLAIN}] ${1}"
}
# Exit with error message if any command fails
trap "error 'Failed to generate AppImage'; exit 1" ERR
# Run a command silently, but print output if it fails
function run_and_log {
echo -e "\n\n>>>>> $1" >> "$LOGFILE"
output="$("$@" 2>&1)"
status=$?
echo "$output" >> "$LOGFILE"
[[ $status != 0 ]] && echo "$output"
return $status
}
# Blindly assume system arch is appimage arch
ARCH=$(uname -m)
export ARCH
# Check for problematic install locations
INSTALL=$(echo "@CMAKE_INSTALL_PREFIX@" | sed 's/\/*$//g')
if [ "$INSTALL" == "/usr/local" ] || [ "$INSTALL" == "/usr" ] ; then
error "Incompatible CMAKE_INSTALL_PREFIX for creating AppImage: @CMAKE_INSTALL_PREFIX@"
fi
# Ensure linuxdeployqt uses the same qmake version as cmake
PATH="$(dirname "@QT_QMAKE_EXECUTABLE@"):$PATH"
export PATH
# Use linuxdeployqt from env or in PATH
[[ $LINUXDEPLOYQT ]] || LINUXDEPLOYQT="$(which linuxdeployqt 2>/dev/null)" || true
[[ $APPIMAGETOOL ]] || APPIMAGETOOL="$(which appimagetool 2>/dev/null)" || true
# Fetch portable linuxdeployqt if not in PATH
if [[ -z $LINUXDEPLOYQT || -z $APPIMAGETOOL ]]; then
filename="linuxdeployqt-continuous-$ARCH.AppImage"
url="https://github.com/probonopd/linuxdeployqt/releases/download/continuous/$filename"
echo " [.......] Downloading: ${url}"
wget -N -q "$url" && err=0 || err=$?
case "$err" in
0) success "Downloaded $PWD/$filename" ;;
# 8 == server issued 4xx error
8) error "Download failed (perhaps no package available for $ARCH)" ;;
*) error "Download failed" ;;
esac
# Extract AppImage and replace LINUXDEPLOYQT variable with extracted binary
# to support systems without fuse
# Also, we need to set LD_LIBRARY_PATH, but linuxdepoyqt's AppRun unsets it
# See https://github.com/probonopd/linuxdeployqt/pull/370/
chmod +x "$filename"
./"$filename" --appimage-extract >/dev/null
success "Extracted $filename"
# Use the extracted linuxdeployqt and appimagetool
PATH="$(pwd -P)/squashfs-root/usr/bin:$PATH"
[[ $LINUXDEPLOYQT ]] || LINUXDEPLOYQT="$(which linuxdeployqt)"
[[ $APPIMAGETOOL ]] || APPIMAGETOOL="$(which appimagetool)"
fi
# Make skeleton AppDir
echo -e "\nCreating ${APPDIR}..."
rm -rf "${APPDIR}"
mkdir -p "${APPDIR}usr"
success "Created ${APPDIR}"
# Clone install to AppDir
echo -e "\nCopying @CMAKE_INSTALL_PREFIX@ to ${APPDIR}..."
cp -R "@CMAKE_INSTALL_PREFIX@/." "${APPDIR}usr"
rm -rf "${APPDIR}usr/include"
success "${APPDIR}"
# Copy rawwaves directory for stk/mallets
mkdir -p "${APPDIR}usr/share/stk/"
cp -R /usr/share/stk/rawwaves/ "${APPDIR}usr/share/stk/"
# Create a wrapper script which calls the lmms executable
mv "${APPDIR}usr/bin/lmms" "${APPDIR}usr/bin/lmms.real"
cp "@CMAKE_CURRENT_SOURCE_DIR@/launch_lmms.sh" "${APPDIR}usr/bin/lmms"
chmod +x "${APPDIR}usr/bin/lmms"
# Per https://github.com/probonopd/linuxdeployqt/issues/129
unset LD_LIBRARY_PATH
# Ensure linuxdeployqt can find shared objects
export LD_LIBRARY_PATH="${APPDIR}"usr/lib/lmms/:"${APPDIR}"usr/lib/lmms/optional:"$LD_LIBRARY_PATH"
# Move executables so linuxdeployqt can find them
ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx"
VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so"
VSTLIB64="${APPDIR}usr/lib/lmms/RemoteVstPlugin64.exe.so"
ZYNBIN="${APPDIR}usr/bin/RemoteZynAddSubFx"
VSTBIN32="${APPDIR}usr/bin/RemoteVstPlugin32.exe.so"
VSTBIN64="${APPDIR}usr/bin/RemoteVstPlugin64.exe.so"
mv "$ZYNLIB" "$ZYNBIN"
mv "$VSTLIB32" "$VSTBIN32" || true
mv "$VSTLIB64" "$VSTBIN64" || true
# Handle wine linking
if [ -d "@WINE_32_LIBRARY_DIR@" ] && \
ldd "$VSTBIN32" | grep "libwine\.so" | grep "not found"; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_32_LIBRARY_DIRS@"
fi
if [ -d "@WINE_64_LIBRARY_DIR@" ] && \
ldd "$VSTBIN64" | grep "libwine\.so" | grep "not found"; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_64_LIBRARY_DIRS@"
fi
# Patch the desktop file
sed -i 's/.*Exec=.*/Exec=lmms.real/' "$DESKTOPFILE"
echo "X-AppImage-Version=@VERSION@" >> "$DESKTOPFILE"
# Fix linking for soft-linked plugins
for file in "${APPDIR}usr/lib/lmms/"*.so; do
thisfile="${APPDIR}usr/lib/lmms/${file##*/}"
executables="${executables} -executable=$thisfile"
done
executables="${executables} -executable=${ZYNBIN}"
executables="${executables} -executable=${VSTBIN32}"
executables="${executables} -executable=${VSTBIN64}"
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/imp_1199.so"
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/imbeq_1197.so"
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale_1193.so"
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale_1194.so"
echo -e "\nWriting verbose output to \"${LOGFILE}\""
echo -n > "$LOGFILE"
# Bundle both qt and non-qt dependencies into appimage format
echo -e "\nBundling and relinking system dependencies..."
# shellcheck disable=SC2086
run_and_log "$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP
success "Bundled and relinked dependencies"
# Link to original location so lmms can find them
ln -sr "$ZYNBIN" "$ZYNLIB"
ln -sr "$VSTBIN32" "$VSTLIB32" || true
ln -sr "$VSTBIN64" "$VSTLIB64" || true
# Remove wine library conflict
rm -f "${APPDIR}/usr/lib/libwine.so.1"
# Use system-provided carla
rm -f "${APPDIR}usr/lib/"libcarla*.so
rm -f "${APPDIR}usr/lib/lmms/optional/"libcarla*.so
# Remove bundled jack in LD_LIBRARY_PATH if exists
if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then
rm "${APPDIR}/usr/lib/libjack.so.0"
fi
# Bundle jack out of LD_LIBRARY_PATH
JACK_LIB=$(ldd "${APPDIR}/usr/bin/lmms.real" | sed -n 's/\tlibjack\.so\.0 => \(.\+\) (0x[0-9a-f]\+)/\1/p')
if [ -e "$JACK_LIB" ]; then
mkdir -p "${APPDIR}usr/lib/lmms/optional/"
cp "$JACK_LIB" "${APPDIR}usr/lib/lmms/optional/"
fi
# Point the AppRun to the shim launcher
rm -f "${APPDIR}/AppRun"
ln -sr "${APPDIR}/usr/bin/lmms" "${APPDIR}/AppRun"
# Add icon
ln -srf "${APPDIR}/lmms.png" "${APPDIR}/.DirIcon"
# Create AppImage
echo -e "\nFinishing the AppImage..."
run_and_log "$APPIMAGETOOL" "${APPDIR}" "@APPIMAGE_FILE@"
success "Created @APPIMAGE_FILE@"
echo -e "\nFinished"

View File

@@ -0,0 +1,93 @@
# A wrapper around pkg-config-provided and cmake-provided bash completion that
# will have dynamic behavior at INSTALL() time to allow both root-level
# INSTALL() as well as user-level INSTALL().
#
# See also https://github.com/scop/bash-completion
#
# Copyright (c) 2018, Tres Finocchiaro, <tres.finocchiaro@gmail.com>
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
# Usage:
# INCLUDE(BashCompletion)
# BASHCOMP_INSTALL(foo)
# ... where "foo" is a shell script adjacent to the CMakeLists.txt
#
# How it determines BASHCOMP_PKG_PATH, in order:
# 1. Uses BASHCOMP_PKG_PATH if already set (e.g. -DBASHCOMP_PKG_PATH=...)
# a. If not, uses pkg-config's PKG_CHECK_MODULES to determine path
# b. Fallback to cmake's FIND_PACKAGE(bash-completion) path
# c. Fallback to hard-coded /usr/share/bash-completion/completions
# 2. Final fallback to ${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions if
# detected path is unwritable.
# - Windows does not support bash completion
# - macOS support should eventually be added for Homebrew (TODO)
IF(WIN32)
MESSAGE(STATUS "Bash completion is not supported on this platform.")
ELSEIF(APPLE)
MESSAGE(STATUS "Bash completion is not yet implemented for this platform.")
ELSE()
INCLUDE(FindUnixCommands)
# Honor manual override if provided
IF(NOT BASHCOMP_PKG_PATH)
# First, use pkg-config, which is the most reliable
FIND_PACKAGE(PkgConfig QUIET)
IF(PKGCONFIG_FOUND)
PKG_CHECK_MODULES(BASH_COMPLETION bash-completion)
PKG_GET_VARIABLE(BASHCOMP_PKG_PATH bash-completion completionsdir)
ELSE()
# Second, use cmake (preferred but less common)
FIND_PACKAGE(bash-completion QUIET)
IF(BASH_COMPLETION_FOUND)
SET(BASHCOMP_PKG_PATH "${BASH_COMPLETION_COMPLETIONSDIR}")
ENDIF()
ENDIF()
# Third, use a hard-coded fallback value
IF("${BASHCOMP_PKG_PATH}" STREQUAL "")
SET(BASHCOMP_PKG_PATH "/usr/share/bash-completion/completions")
ENDIF()
ENDIF()
# Always provide a fallback for non-root INSTALL()
SET(BASHCOMP_USER_PATH "${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions")
# Cmake doesn't allow easy use of conditional logic at INSTALL() time
# this is a problem because ${BASHCOMP_PKG_PATH} may not be writable and we
# need sane fallback behavior for bundled INSTALL() (e.g. .AppImage, etc).
#
# The reason this can't be detected by cmake is that it's fairly common to
# run "cmake" as a one user (i.e. non-root) and "make install" as another user
# (i.e. root).
#
# - Creates a script called "install_${SCRIPT_NAME}_completion.sh" into the
# working binary directory and invokes this script at install.
# - Script handles INSTALL()-time conditional logic for sane ballback behavior
# when ${BASHCOMP_PKG_PATH} is unwritable (i.e. non-root); Something cmake
# can't handle on its own at INSTALL() time)
MACRO(BASHCOMP_INSTALL SCRIPT_NAME)
# A shell script for wrapping conditionl logic
SET(BASHCOMP_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/install_${SCRIPT_NAME}_completion.sh")
FILE(WRITE ${BASHCOMP_SCRIPT} "\
#!${BASH}\n\
set -e\n\
if [ -w \"${BASHCOMP_PKG_PATH}\" ]; then\n\
BASHCOMP_PKG_PATH=\"${BASHCOMP_PKG_PATH}\"\n\
else \n\
BASHCOMP_PKG_PATH=\"\$DESTDIR${BASHCOMP_USER_PATH}\"\n\
fi\n\
echo -e \"\\nInstalling bash completion...\\n\"\n\
mkdir -p \"\$BASHCOMP_PKG_PATH\"\n\
cp \"${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}\" \"\$BASHCOMP_PKG_PATH\"\n\
chmod a+r \"\$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
echo -e \"Bash completion for ${SCRIPT_NAME} has been installed to \$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x \"install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )")
INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"./install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )")
MESSAGE(STATUS "Bash completion script for ${SCRIPT_NAME} will be installed to ${BASHCOMP_PKG_PATH} or fallback to ${BASHCOMP_USER_PATH} if unwritable.")
ENDMACRO()
ENDIF()

View File

@@ -1,98 +1,98 @@
# BuildPlugin.cmake - Copyright (c) 2008 Tobias Doerffel
#
# description: build LMMS-plugin
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> )
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> LINK <SHARED|MODULE>)
MACRO(CAR var)
SET(${var} ${ARGV1})
ENDMACRO(CAR)
INCLUDE(GenQrc)
MACRO(CDR var junk)
SET(${var} ${ARGN})
ENDMACRO(CDR)
MACRO(BUILD_PLUGIN PLUGIN_NAME)
CMAKE_PARSE_ARGUMENTS(PLUGIN "" "LINK;EXPORT_BASE_NAME" "MOCFILES;EMBEDDED_RESOURCES;UICFILES" ${ARGN})
SET(PLUGIN_SOURCES ${PLUGIN_UNPARSED_ARGUMENTS})
MACRO(LIST_CONTAINS var value)
SET(${var})
FOREACH (value2 ${ARGN})
IF (${value} STREQUAL ${value2})
SET(${var} TRUE)
ENDIF (${value} STREQUAL ${value2})
ENDFOREACH (value2)
ENDMACRO(LIST_CONTAINS)
MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
SET(DEFAULT_ARGS)
FOREACH(arg_name ${arg_names})
SET(${prefix}_${arg_name})
ENDFOREACH(arg_name)
FOREACH(option ${option_names})
SET(${prefix}_${option} FALSE)
ENDFOREACH(option)
SET(current_arg_name DEFAULT_ARGS)
SET(current_arg_list)
FOREACH(arg ${ARGN})
LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
IF (is_arg_name)
SET(${prefix}_${current_arg_name} ${current_arg_list})
SET(current_arg_name ${arg})
SET(current_arg_list)
ELSE (is_arg_name)
LIST_CONTAINS(is_option ${arg} ${option_names})
IF (is_option)
SET(${prefix}_${arg} TRUE)
ELSE (is_option)
SET(current_arg_list ${current_arg_list} ${arg})
ENDIF (is_option)
ENDIF (is_arg_name)
ENDFOREACH(arg)
SET(${prefix}_${current_arg_name} ${current_arg_list})
ENDMACRO(PARSE_ARGUMENTS)
MACRO(BUILD_PLUGIN)
PARSE_ARGUMENTS(PLUGIN "MOCFILES;EMBEDDED_RESOURCES;UICFILES" "" ${ARGN} )
CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS})
CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/gui)
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}/include")
ADD_DEFINITIONS(-DPLUGIN_NAME=${PLUGIN_NAME})
LIST(LENGTH PLUGIN_EMBEDDED_RESOURCES ER_LEN)
IF(ER_LEN)
SET(ER_H ${CMAKE_CURRENT_BINARY_DIR}/embedded_resources.h)
ADD_CUSTOM_COMMAND(OUTPUT ${ER_H}
COMMAND ${BIN2RES}
ARGS ${PLUGIN_EMBEDDED_RESOURCES} > ${ER_H}
DEPENDS ${BIN2RES})
# Expand and sort arguments to avoid locale dependent sorting in
# shell
SET(NEW_ARGS)
FOREACH(ARG ${PLUGIN_EMBEDDED_RESOURCES})
FILE(GLOB EXPANDED "${ARG}")
LIST(SORT EXPANDED)
FOREACH(ITEM ${EXPANDED})
LIST(APPEND NEW_ARGS "${ITEM}")
ENDFOREACH()
ENDFOREACH()
SET(PLUGIN_EMBEDDED_RESOURCES ${NEW_ARGS})
ADD_GEN_QRC(RCC_OUT "${PLUGIN_NAME}.qrc" PREFIX artwork/${PLUGIN_NAME} ${PLUGIN_EMBEDDED_RESOURCES})
ENDIF(ER_LEN)
QT4_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
QT4_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
QT5_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
QT5_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
FOREACH(f ${PLUGIN_SOURCES})
ADD_FILE_DEPENDENCIES(${f} ${ER_H} ${plugin_MOC_out} ${plugin_UIC_out})
ADD_FILE_DEPENDENCIES(${f} ${RCC_OUT} ${plugin_UIC_out})
ENDFOREACH(f)
IF(LMMS_BUILD_APPLE)
LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
LINK_LIBRARIES(${QT_LIBRARIES})
LINK_DIRECTORIES("${CMAKE_BINARY_DIR}")
LINK_LIBRARIES(${QT_LIBRARIES})
ENDIF(LMMS_BUILD_APPLE)
IF(LMMS_BUILD_WIN32)
LINK_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
LINK_LIBRARIES(-llmms ${QT_LIBRARIES})
LINK_DIRECTORIES("${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}")
LINK_LIBRARIES(${QT_LIBRARIES})
ENDIF(LMMS_BUILD_WIN32)
IF(LMMS_BUILD_MSYS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
# Override Qt debug libraries with release versions
SET(QT_LIBRARIES "${QT_OVERRIDE_LIBRARIES}")
ENDIF()
ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES})
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}")
IF (NOT PLUGIN_LINK)
SET(PLUGIN_LINK "MODULE")
ENDIF()
ADD_LIBRARY(${PLUGIN_NAME} ${PLUGIN_LINK} ${PLUGIN_SOURCES} ${plugin_MOC_out} ${RCC_OUT})
target_link_libraries("${PLUGIN_NAME}" lmms Qt5::Widgets Qt5::Xml)
INSTALL(TARGETS ${PLUGIN_NAME}
LIBRARY DESTINATION "${PLUGIN_DIR}"
RUNTIME DESTINATION "${PLUGIN_DIR}"
)
IF(LMMS_BUILD_APPLE)
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/lmms")
IF ("${PLUGIN_LINK}" STREQUAL "SHARED")
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
ENDIF()
ENDIF(LMMS_BUILD_APPLE)
IF(LMMS_BUILD_WIN32)
add_custom_command(
TARGET "${PLUGIN_NAME}"
POST_BUILD
COMMAND "${STRIP_COMMAND}" "$<TARGET_FILE:${PLUGIN_NAME}>"
VERBATIM
COMMAND_EXPAND_LISTS
)
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES PREFIX "")
ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.dll)
ENDIF(LMMS_BUILD_WIN32)
ENDIF()
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ER_H} ${plugin_MOC_out}")
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${RCC_OUT} ${plugin_MOC_out}")
IF(NOT PLUGIN_EXPORT_BASE_NAME)
SET(PLUGIN_EXPORT_BASE_NAME "PLUGIN")
ENDIF()
GENERATE_EXPORT_HEADER(${PLUGIN_NAME}
BASE_NAME ${PLUGIN_EXPORT_BASE_NAME}
)
TARGET_INCLUDE_DIRECTORIES(${PLUGIN_NAME}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
)
SET_PROPERTY(GLOBAL APPEND PROPERTY PLUGINS_BUILT ${PLUGIN_NAME})
GET_PROPERTY(PLUGINS_BUILT GLOBAL PROPERTY PLUGINS_BUILT)
ENDMACRO(BUILD_PLUGIN)

View File

@@ -0,0 +1,22 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,33 @@
macro(CHECK_CXX_PREPROCESSOR VAR DIRECTIVE)
string(RANDOM DEFINED_KEY)
string(RANDOM UNDEFINED_KEY)
set(TMP_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CxxTmp/src.cpp")
SET(SRC "
#if ${DIRECTIVE}
#error ${DEFINED_KEY}
#else
#error ${UNDEFINED_KEY}
#endif
")
file(WRITE ${TMP_FILENAME} "${SRC}")
try_compile(RESULT_VAR
${CMAKE_CURRENT_BINARY_DIR}
${TMP_FILENAME}
OUTPUT_VARIABLE OUTPUT_VAR
)
if(OUTPUT_VAR MATCHES ${DEFINED_KEY})
set(${VAR} ON)
elseif(OUTPUT_VAR MATCHES ${UNDEFINED_KEY})
set(${VAR} OFF)
else()
message(FATAL_ERROR "Can't determine if \"${DIRECTIVE}\" is true.")
endif()
endmacro()
macro(CHECK_CXX_DEFINE VAR DEFINE)
CHECK_CXX_PREPROCESSOR(${VAR} "defined(${DEFINE})")
endmacro()

View File

@@ -0,0 +1,213 @@
# Utility for validating and, if needed, cloning all submodules
#
# Looks for a .gitmodules in the root project folder
# Loops over all modules looking well-known configure/build scripts
#
# Usage:
# INCLUDE(CheckSubmodules)
#
# Options:
# SET(PLUGIN_LIST "ZynAddSubFx;...") # skips submodules for plugins not explicitely listed
#
# Or via command line:
# cmake -PLUGIN_LIST=foo;bar
#
# Copyright (c) 2019, Tres Finocchiaro, <tres.finocchiaro@gmail.com>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# Files which confirm a successful clone
SET(VALID_CRUMBS "CMakeLists.txt;Makefile;Makefile.in;Makefile.am;configure.ac;configure.py;autogen.sh;.gitignore;LICENSE;Home.md;license.txt")
OPTION(NO_SHALLOW_CLONE "Disable shallow cloning of submodules" OFF)
# Try and use the specified shallow clone on submodules, if supported
SET(DEPTH_VALUE 100)
# Number of times git commands will retry before failing
SET(MAX_ATTEMPTS 2)
MESSAGE("\nChecking submodules...")
IF(NOT EXISTS "${CMAKE_SOURCE_DIR}/.gitmodules")
MESSAGE("Skipping the check because .gitmodules not detected."
"Please make sure you have all submodules in the source tree!"
)
RETURN()
ENDIF()
FILE(READ "${CMAKE_SOURCE_DIR}/.gitmodules" SUBMODULE_DATA)
# Force English locale
SET(LC_ALL_BACKUP "$ENV{LC_ALL}")
SET(LANG_BACKUP "$ENV{LANG}")
SET(ENV{LC_ALL} "C")
SET(ENV{LANG} "en_US")
# Submodule list pairs, unparsed (WARNING: Assumes alpha-numeric paths)
STRING(REGEX MATCHALL "path = [-0-9A-Za-z/]+" SUBMODULE_LIST_RAW ${SUBMODULE_DATA})
STRING(REGEX MATCHALL "url = [.:%-0-9A-Za-z/]+" SUBMODULE_URL_RAW ${SUBMODULE_DATA})
# Submodule list pairs, parsed
SET(SUBMODULE_LIST "")
SET(SUBMODULE_URL "")
FOREACH(_path ${SUBMODULE_LIST_RAW})
# Parse SUBMODULE_PATH
STRING(REPLACE "path = " "" SUBMODULE_PATH "${_path}")
# Grab index for matching SUBMODULE_URL
LIST(FIND SUBMODULE_LIST_RAW "${_path}" SUBMODULE_INDEX)
LIST(GET SUBMODULE_URL_RAW ${SUBMODULE_INDEX} _url)
# Parse SUBMODULE_URL
STRING(REPLACE "url = " "" SUBMODULE_URL "${_url}")
SET(SKIP false)
# Loop over skipped plugins, add to SKIP_SUBMODULES (e.g. -DPLUGIN_LIST=foo;bar)
IF(${SUBMODULE_PATH} MATCHES "^plugins/")
SET(REMOVE_PLUGIN true)
FOREACH(_plugin ${PLUGIN_LIST})
IF(_plugin STREQUAL "")
CONTINUE()
ENDIF()
IF(${SUBMODULE_PATH} MATCHES "${_plugin}")
SET(REMOVE_PLUGIN false)
ENDIF()
ENDFOREACH()
IF(REMOVE_PLUGIN)
LIST(APPEND SKIP_SUBMODULES "${SUBMODULE_PATH}")
ENDIF()
ENDIF()
# Finally, loop and mark "SKIP" on match
IF(SKIP_SUBMODULES)
FOREACH(_skip ${SKIP_SUBMODULES})
IF("${SUBMODULE_PATH}" MATCHES "${_skip}")
MESSAGE("-- Skipping ${SUBMODULE_PATH} matches \"${_skip}\" (absent in PLUGIN_LIST)")
SET(SKIP true)
BREAK()
ENDIF()
ENDFOREACH()
ENDIF()
IF(NOT SKIP)
LIST(APPEND SUBMODULE_LIST "${SUBMODULE_PATH}")
LIST(APPEND SUBMODULE_URL "${SUBMODULE_URL}")
ENDIF()
ENDFOREACH()
# Once called, status is stored in GIT_RESULT respectively.
# Note: Git likes to write to stderr. Don't assume stderr is error; Check GIT_RESULT instead.
MACRO(GIT_SUBMODULE SUBMODULE_PATH FORCE_DEINIT FORCE_REMOTE NO_DEPTH)
FIND_PACKAGE(Git REQUIRED)
# Handle missing commits
SET(FORCE_REMOTE_FLAG "${FORCE_REMOTE}")
SET(NO_DEPTH_FLAG "${NO_DEPTH}")
IF(FORCE_REMOTE_FLAG)
MESSAGE("-- Adding remote submodulefix to ${SUBMODULE_PATH}")
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" remote rm submodulefix
COMMAND "${GIT_EXECUTABLE}" remote add submodulefix ${FORCE_REMOTE}
COMMAND "${GIT_EXECUTABLE}" fetch submodulefix
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/${SUBMODULE_PATH}"
OUTPUT_QUIET ERROR_QUIET
)
# Recurse
GIT_SUBMODULE(${SUBMODULE_PATH} false false ${NO_DEPTH_FLAG})
ELSEIF(${FORCE_DEINIT})
MESSAGE("-- Resetting ${SUBMODULE_PATH}")
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" submodule deinit -f "${CMAKE_SOURCE_DIR}/${SUBMODULE_PATH}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_QUIET
)
MESSAGE("-- Deleting ${CMAKE_SOURCE_DIR}/.git/${SUBMODULE_PATH}")
FILE(REMOVE_RECURSE "${CMAKE_SOURCE_DIR}/.git/modules/${SUBMODULE_PATH}")
# Recurse without depth
GIT_SUBMODULE(${SUBMODULE_PATH} false false true)
ELSE()
# Try to use the depth switch
IF(NO_SHALLOW_CLONE OR GIT_VERSION_STRING VERSION_LESS "1.8.4" OR NO_DEPTH_FLAG)
# Shallow submodules were introduced in 1.8.4
MESSAGE("-- Fetching ${SUBMODULE_PATH}")
SET(DEPTH_CMD "")
SET(DEPTH_VAL "")
ELSE()
MESSAGE("-- Fetching ${SUBMODULE_PATH} @ --depth ${DEPTH_VALUE}")
SET(DEPTH_CMD "--depth")
SET(DEPTH_VAL "${DEPTH_VALUE}")
ENDIF()
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" submodule update --init --recursive ${DEPTH_CMD} ${DEPTH_VAL} "${CMAKE_SOURCE_DIR}/${SUBMODULE_PATH}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE GIT_RESULT
OUTPUT_VARIABLE GIT_STDOUT
ERROR_VARIABLE GIT_STDERR
)
SET(GIT_MESSAGE "${GIT_STDOUT}${GIT_STDERR}")
MESSAGE("${GIT_MESSAGE}")
ENDIF()
ENDMACRO()
SET(MISSING_COMMIT_PHRASES "no such remote ref;reference is not a tree;unadvertised object")
SET(RETRY_PHRASES "Failed to recurse;cannot create directory;already exists;${MISSING_COMMIT_PHRASES}")
# Attempt to do lazy clone
FOREACH(_submodule ${SUBMODULE_LIST})
STRING(REPLACE "/" ";" PATH_PARTS "${_submodule}")
LIST(REVERSE PATH_PARTS)
LIST(GET PATH_PARTS 0 SUBMODULE_NAME)
MESSAGE("-- Checking ${SUBMODULE_NAME}...")
SET(CRUMB_FOUND false)
FOREACH(_crumb ${VALID_CRUMBS})
IF(EXISTS "${CMAKE_SOURCE_DIR}/${_submodule}/${_crumb}")
SET(CRUMB_FOUND true)
MESSAGE("-- Found ${_submodule}/${_crumb}")
BREAK()
ENDIF()
ENDFOREACH()
IF(NOT CRUMB_FOUND)
GIT_SUBMODULE("${_submodule}" false false false)
SET(COUNTED 0)
# Handle edge-cases where submodule didn't clone properly or re-uses a non-empty directory
WHILE(NOT GIT_RESULT EQUAL 0 AND COUNTED LESS MAX_ATTEMPTS)
MATH(EXPR COUNTED "${COUNTED}+1")
SET(MISSING_COMMIT false)
FOREACH(_phrase ${MISSING_COMMIT_PHRASES})
IF("${GIT_MESSAGE}" MATCHES "${_phrase}")
SET(MISSING_COMMIT true)
BREAK()
ENDIF()
ENDFOREACH()
FOREACH(_phrase ${RETRY_PHRASES})
IF(${MISSING_COMMIT} AND COUNTED LESS 2)
LIST(FIND SUBMODULE_LIST ${_submodule} SUBMODULE_INDEX)
LIST(GET SUBMODULE_URL_LIST ${SUBMODULE_INDEX} SUBMODULE_URL)
MESSAGE("-- Retrying ${_submodule} using 'remote add submodulefix' (attempt ${COUNTED} of ${MAX_ATTEMPTS})...")
GIT_SUBMODULE("${_submodule}" false "${SUBMODULE_URL}" false)
BREAK()
ELSEIF("${GIT_MESSAGE}" MATCHES "${_phrase}")
MESSAGE("-- Retrying ${_submodule} using 'deinit' (attempt ${COUNTED} of ${MAX_ATTEMPTS})...")
GIT_SUBMODULE("${_submodule}" true false false)
BREAK()
ENDIF()
ENDFOREACH()
ENDWHILE()
IF(NOT GIT_RESULT EQUAL 0)
MESSAGE(FATAL_ERROR "${GIT_EXECUTABLE} exited with status of ${GIT_RESULT}")
ENDIF()
ENDIF()
ENDFOREACH()
MESSAGE("-- Done validating submodules.\n")
# Reset locale
SET(ENV{LC_ALL} "${LC_ALL_BACKUP}")
SET(ENV{LANG} "${LANG_BACKUP}")

View File

@@ -0,0 +1,27 @@
INCLUDE(CheckCXXSourceCompiles)
FUNCTION(CheckWineGcc BITNESS WINEGCC_EXECUTABLE RESULT)
FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx" "
#include <iostream>
#define USE_WS_PREFIX
#include <windows.h>
int main(int argc, const char* argv[]) {
return 0;
}
")
EXECUTE_PROCESS(COMMAND ${WINEGCC_EXECUTABLE} "-m${BITNESS}"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx"
"-o" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test"
OUTPUT_QUIET ERROR_QUIET
RESULT_VARIABLE WINEGCC_RESULT
)
FILE(REMOVE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.exe.so"
)
IF(WINEGCC_RESULT EQUAL 0)
SET(${RESULT} True PARENT_SCOPE)
ELSE()
SET(${RESULT} False PARENT_SCOPE)
ENDIF()
ENDFUNCTION()

View File

@@ -0,0 +1,40 @@
option(USE_COMPILE_CACHE "Use a compiler cache for compilation" OFF)
# Compatibility for old option name
if(USE_CCACHE)
set(USE_COMPILE_CACHE ON)
endif()
if(NOT USE_COMPILE_CACHE)
return()
endif()
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "(GNU|AppleClang|Clang|MSVC)")
message(WARNING "Compiler cache only available with MSVC or GNU")
return()
endif()
set(CACHE_TOOL_NAME ccache)
find_program(CACHE_TOOL "${CACHE_TOOL_NAME}")
if(NOT CACHE_TOOL)
message(WARNING "USE_COMPILE_CACHE enabled, but no ${CACHE_TOOL_NAME} found")
return()
endif()
if(MSVC)
# ccache doesn't support debug information in the PDB format. Setting the
# debug information format requires CMP0141, introduced with CMake 3.25, to
# be set to NEW prior to the initial `project` command.
if(CMAKE_VERSION VERSION_LESS "3.25")
message(WARNING "Use of compiler cache with MSVC requires at least CMake 3.25")
return()
endif()
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
endif()
message(STATUS "Using ${CACHE_TOOL} for compiler caching")
# TODO CMake 3.21: Use CMAKE_<LANG>_<COMPILER|LINKER>_LAUNCHER variables instead
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CACHE_TOOL}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CACHE_TOOL}")

View File

@@ -0,0 +1,21 @@
function(CreateTempFilePath)
set(options CONFIG_SUFFIX)
set(oneValueArgs OUTPUT_VAR TAG)
set(multiValueArgs CONTENT)
cmake_parse_arguments(TEMP "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN} )
# Use hash to create a unique identifier
# for this file.
string(SHA1 hashed_content "${TEMP_CONTENT}")
set(file_name "${CMAKE_BINARY_DIR}/${TEMP_TAG}_${hashed_content}")
set(${TEMP_OUTPUT_VAR} "${file_name}" PARENT_SCOPE)
if(TEMP_CONFIG_SUFFIX)
set(file_name "${file_name}_$<CONFIG>")
endif()
file(GENERATE OUTPUT "${file_name}"
CONTENT "${TEMP_CONTENT}")
endfunction()

View File

@@ -0,0 +1,31 @@
# This functions forwards a variable to
# the install stage.
# Parameters:
# CONTENT: Variable content.
# NAME: Variable name.
# Options:
# GENERATOR_EXPRESSION: Support generator expression for CONTENT.
function(DEFINE_INSTALL_VAR)
set(options GENERATOR_EXPRESSION)
set(oneValueArgs NAME )
set(multiValueArgs CONTENT)
cmake_parse_arguments(VAR "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN} )
# install(CODE) does not support generator expression in ver<3.14
if(VAR_GENERATOR_EXPRESSION AND ${CMAKE_VERSION} VERSION_LESS "3.14.0")
include(CreateTempFile)
if(CMAKE_CONFIGURATION_TYPES) # in case of multi-config generators like MSVC generators
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}" CONFIG_SUFFIX)
install(CODE "file(READ \"${file_path}_\${CMAKE_INSTALL_CONFIG_NAME}\" \"${VAR_NAME}\")")
else()
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}")
install(CODE "file(READ \"${file_path}\" \"${VAR_NAME}\")")
endif()
else()
if(VAR_GENERATOR_EXPRESSION)
cmake_policy(SET CMP0087 NEW) # install(CODE) and install(SCRIPT) support generator expressions.
endif()
install(CODE "set(\"${VAR_NAME}\" \"${VAR_CONTENT}\")")
endif()
endfunction()

View File

@@ -1,40 +1,149 @@
IF(WIN32)
SET(LMMS_BUILD_WIN32 1)
ELSE(WIN32)
IF(APPLE)
SET(LMMS_BUILD_APPLE 1)
ELSE(APPLE)
SET(LMMS_BUILD_LINUX 1)
ENDIF(APPLE)
ELSEIF(APPLE)
SET(LMMS_BUILD_APPLE 1)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
SET(LMMS_BUILD_OPENBSD 1)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
SET(LMMS_BUILD_FREEBSD 1)
ELSEIF(HAIKU)
SET(LMMS_BUILD_HAIKU 1)
ELSE()
SET(LMMS_BUILD_LINUX 1)
ENDIF(WIN32)
# LMMS_BUILD_MSYS also set in build_winXX.sh
IF(LMMS_BUILD_WIN32 AND CMAKE_COMPILER_IS_GNUCXX AND DEFINED ENV{MSYSCON})
SET(LMMS_BUILD_MSYS TRUE)
ENDIF()
MESSAGE("PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
SET(LMMS_HOST_X86 FALSE)
SET(LMMS_HOST_X86_64 FALSE)
SET(LMMS_HOST_ARM32 FALSE)
SET(LMMS_HOST_ARM64 FALSE)
SET(LMMS_HOST_RISCV32 FALSE)
SET(LMMS_HOST_RISCV64 FALSE)
IF(NOT DEFINED WIN64 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
# TODO: This seems a bit presumptous
SET(WIN64 ON)
ENDIF()
IF(WIN32)
IF(WIN64)
SET(IS_X86_64 TRUE)
SET(LMMS_BUILD_WIN64 TRUE)
ELSE(WIN64)
SET(IS_X86 TRUE)
ENDIF(WIN64)
ELSE(WIN32)
EXEC_PROGRAM( ${CMAKE_C_COMPILER} ARGS "-dumpmachine" OUTPUT_VARIABLE Machine )
if(MSVC)
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
# Detect target architecture
IF(CMAKE_GENERATOR_PLATFORM)
STRING(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" MSVC_TARGET_PLATFORM)
ELSE()
STRING(TOLOWER "${CMAKE_VS_PLATFORM_NAME_DEFAULT}" MSVC_TARGET_PLATFORM)
ENDIF()
IF(MSVC_TARGET_PLATFORM MATCHES "x64")
SET(IS_X86_64 TRUE)
SET(LMMS_BUILD_WIN64 TRUE)
ELSEIF(MSVC_TARGET_PLATFORM MATCHES "win32")
SET(IS_X86 TRUE)
ELSEIF(MSVC_TARGET_PLATFORM MATCHES "arm64")
SET(IS_ARM64 TRUE)
ELSEIF(MSVC_TARGET_PLATFORM MATCHES "arm")
SET(IS_ARM32 TRUE)
ELSEIF(CMAKE_CXX_COMPILER MATCHES "amd64/cl.exe$" OR CMAKE_CXX_COMPILER MATCHES "x64/cl.exe$")
SET(IS_X86_64 TRUE)
SET(LMMS_BUILD_WIN64 TRUE)
ELSEIF(CMAKE_CXX_COMPILER MATCHES "bin/cl.exe$" OR CMAKE_CXX_COMPILER MATCHES "x86/cl.exe$")
SET(IS_X86 TRUE)
ELSEIF(CMAKE_CXX_COMPILER MATCHES "arm64/cl.exe$")
SET(IS_ARM64 TRUE)
ELSEIF(CMAKE_CXX_COMPILER MATCHES "arm/cl.exe$")
SET(IS_ARM32 TRUE)
ELSE()
MESSAGE(WARNING "Unknown target architecture: ${MSVC_TARGET_PLATFORM}")
ENDIF()
IF(MSVC_VER VERSION_GREATER 19.30 OR MSVC_VER VERSION_EQUAL 19.30)
SET(LMMS_MSVC_GENERATOR "Visual Studio 17 2022")
SET(LMMS_MSVC_YEAR 2022)
ELSEIF(MSVC_VER VERSION_GREATER 19.20 OR MSVC_VER VERSION_EQUAL 19.20)
SET(LMMS_MSVC_GENERATOR "Visual Studio 16 2019")
SET(LMMS_MSVC_YEAR 2019) # Qt only provides binaries for MSVC 2017, but 2019 is binary compatible
ELSEIF(MSVC_VER VERSION_GREATER 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
SET(LMMS_MSVC_GENERATOR "Visual Studio 15 2017")
SET(LMMS_MSVC_YEAR 2017)
ELSEIF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
SET(LMMS_MSVC_GENERATOR "Visual Studio 14 2015")
SET(LMMS_MSVC_YEAR 2015)
ELSE()
MESSAGE(SEND_WARNING "Can't detect MSVC version: ${MSVC_VER}")
ENDIF()
unset(MSVC_VER)
else()
# Cross-compiled
# TODO: Handle Windows ARM64 targets
IF(WIN64)
SET(IS_X86_64 TRUE)
SET(LMMS_BUILD_WIN64 TRUE)
ELSE(WIN64)
SET(IS_X86 TRUE)
ENDIF(WIN64)
endif()
ELSE()
# Detect target architecture based on compiler target triple e.g. "x86_64-pc-linux"
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine ${CMAKE_C_FLAGS} OUTPUT_VARIABLE Machine)
MESSAGE("Machine: ${Machine}")
STRING(REGEX MATCH "i.86" IS_X86 "${Machine}")
STRING(REGEX MATCH "86_64" IS_X86_64 "${Machine}")
ENDIF(WIN32)
STRING(REGEX MATCH "86_64|amd64" IS_X86_64 "${Machine}")
IF(Machine MATCHES "arm|aarch64")
IF(Machine MATCHES "arm64|aarch64")
SET(IS_ARM64 TRUE)
ELSE()
SET(IS_ARM32 TRUE)
ENDIF()
ELSEIF(Machine MATCHES "rv|riscv")
IF(Machine MATCHES "rv64|riscv64")
SET(IS_RISCV64 TRUE)
ELSE()
SET(IS_RISCV32 TRUE)
ENDIF()
ELSEIF(Machine MATCHES "ppc|powerpc")
IF(Machine MATCHES "ppc64|powerpc64")
SET(IS_PPC64 TRUE)
ELSE()
SET(IS_PPC32 TRUE)
ENDIF()
ENDIF()
ENDIF()
IF(IS_X86)
MESSAGE("-- Target host is 32 bit")
MESSAGE("-- Target host is 32 bit, Intel")
SET(LMMS_HOST_X86 TRUE)
ELSEIF(IS_X86_64)
MESSAGE("-- Target host is 64 bit")
MESSAGE("-- Target host is 64 bit, Intel")
SET(LMMS_HOST_X86_64 TRUE)
ELSE(IS_X86)
ELSEIF(IS_ARM32)
MESSAGE("-- Target host is 32 bit, ARM")
SET(LMMS_HOST_ARM32 TRUE)
ELSEIF(IS_ARM64)
MESSAGE("-- Target host is 64 bit, ARM")
SET(LMMS_HOST_ARM64 TRUE)
ELSEIF(IS_RISCV32)
MESSAGE("-- Target host is 32 bit, RISC-V")
SET(LMMS_HOST_RISCV32 TRUE)
ELSEIF(IS_RISCV64)
MESSAGE("-- Target host is 64 bit, RISC-V")
SET(LMMS_HOST_RISCV64 TRUE)
ELSEIF(IS_PPC32)
MESSAGE("-- Target host is 32 bit, PPC")
SET(LMMS_HOST_PPC32 TRUE)
ELSEIF(IS_PPC64)
MESSAGE("-- Target host is 64 bit, PPC")
SET(LMMS_HOST_PPC64 TRUE)
ELSE()
MESSAGE("Can't identify target host. Assuming 32 bit platform.")
ENDIF(IS_X86)
ENDIF()
IF(CMAKE_INSTALL_LIBDIR)
SET(LIB_DIR "${CMAKE_INSTALL_LIBDIR}")
@@ -55,4 +164,23 @@ ELSE(LMMS_BUILD_WIN32)
SET(LMMS_DATA_DIR ${DATA_DIR}/lmms)
ENDIF(LMMS_BUILD_WIN32)
IF(LMMS_BUILD_APPLE)
# Detect Homebrew versus Macports environment
EXECUTE_PROCESS(COMMAND brew --prefix RESULT_VARIABLE DETECT_HOMEBREW OUTPUT_VARIABLE HOMEBREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
IF(${DETECT_HOMEBREW} EQUAL 0)
SET(HOMEBREW 1)
SET(APPLE_PREFIX "${HOMEBREW_PREFIX}")
ELSEIF(${DETECT_MACPORTS} EQUAL 0)
SET(MACPORTS 1)
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
SET(APPLE_PREFIX "${MACPORTS_PREFIX}")
LINK_DIRECTORIES(${LINK_DIRECTORIES} ${APPLE_PREFIX}/lib)
ENDIF()
# Detect OS Version
EXECUTE_PROCESS(COMMAND sw_vers -productVersion OUTPUT_VARIABLE APPLE_OS_VER ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING(REGEX REPLACE "\\.[0-9]*$" "" APPLE_OS_VER "${APPLE_OS_VER}")
SET(CMAKE_MACOSX_RPATH 1)
ENDIF()

View File

@@ -0,0 +1,47 @@
# FindFFTW.cmake - Try to find FFTW3
# Copyright (c) 2018 Lukas W <lukaswhl/at/gmail.com>
# This file is MIT licensed.
# See http://opensource.org/licenses/MIT
# Try pkgconfig for hints
find_package(PkgConfig QUIET)
if(NOT FFTW_FIND_COMPONENTS)
set(FFTW_FIND_COMPONENTS fftw3f fftw3 fftwl)
endif()
if(PKG_CONFIG_FOUND)
pkg_check_modules(FFTW_PKG QUIET fftw>=3.0.0)
pkg_check_modules(FFTW3_PKG QUIET fftw3>=3.0.0)
endif()
find_path(FFTW_INCLUDE_DIR
NAMES fftw3.h
PATHS ${FFTW_PKG_INCLUDE_DIRS} ${FFTW3_PKG_INCLUDE_DIRS}
)
set(check_list)
foreach(comp ${FFTW_FIND_COMPONENTS})
string(TOUPPER ${comp} COMP)
if(PKG_CONFIG_FOUND)
pkg_check_modules(${COMP}_PKG QUIET ${comp}>=3.0.0)
endif()
find_library(${COMP}_LIBRARY
NAMES ${comp}
PATHS ${comp}_PKG_LIBRARY_DIRS
)
list(APPEND check_list ${COMP}_LIBRARY)
set(${COMP}_LIBRARIES ${${COMP}_LIBRARY} CACHE FILEPATH "${COMP} library path")
set(${COMP}_INCLUDE_DIRS ${FFTW_INCLUDE_DIR} CACHE PATH "${COMP} include path")
mark_as_advanced(${COMP}_LIBRARIES ${COMP}_INCLUDE_DIRS)
endforeach()
find_package(PackageHandleStandardArgs)
find_package_handle_standard_args(FFTW DEFAULT_MSG FFTW_INCLUDE_DIR ${check_list})
set(FFTW_INCLUDE_DIRS ${FFTW_INCLUDE_DIR})
mark_as_advanced(FFTW_LIBRARY FFTW_LIBRARIES FFTW_INCLUDE_DIR FFTW_INCLUDE_DIRS ${check_list})

View File

@@ -0,0 +1,73 @@
# Copyright (c) 2022 Dominic Clark
#
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# Return if we already have FluidSynth
if(TARGET fluidsynth)
set(FluidSynth_FOUND 1)
return()
endif()
# Attempt to find FluidSynth using PkgConfig
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(FLUIDSYNTH_PKG fluidsynth)
endif()
# Find the library and headers using the results from PkgConfig as a guide
find_path(FluidSynth_INCLUDE_DIR
NAMES "fluidsynth.h"
HINTS ${FLUIDSYNTH_PKG_INCLUDE_DIRS}
)
find_library(FluidSynth_LIBRARY
NAMES "fluidsynth"
HINTS ${FLUIDSYNTH_PKG_LIBRARY_DIRS}
)
if(FluidSynth_INCLUDE_DIR AND FluidSynth_LIBRARY)
add_library(fluidsynth UNKNOWN IMPORTED)
set_target_properties(fluidsynth PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${FluidSynth_INCLUDE_DIR}"
)
if(VCPKG_INSTALLED_DIR)
include(ImportedTargetHelpers)
get_vcpkg_library_configs(FluidSynth_IMPLIB_RELEASE FluidSynth_IMPLIB_DEBUG "${FluidSynth_LIBRARY}")
else()
set(FluidSynth_IMPLIB_RELEASE "${FluidSynth_LIBRARY}")
endif()
if(FluidSynth_IMPLIB_DEBUG)
set_target_properties(fluidsynth PROPERTIES
IMPORTED_LOCATION_RELEASE "${FluidSynth_IMPLIB_RELEASE}"
IMPORTED_LOCATION_DEBUG "${FluidSynth_IMPLIB_DEBUG}"
)
else()
set_target_properties(fluidsynth PROPERTIES
IMPORTED_LOCATION "${FluidSynth_IMPLIB_RELEASE}"
)
endif()
if(EXISTS "${FluidSynth_INCLUDE_DIR}/fluidsynth/version.h")
file(STRINGS
"${FluidSynth_INCLUDE_DIR}/fluidsynth/version.h"
_version_string
REGEX "^#[\t ]*define[\t ]+FLUIDSYNTH_VERSION[\t ]+\".*\""
)
string(REGEX REPLACE
"^.*FLUIDSYNTH_VERSION[\t ]+\"([^\"]*)\".*$"
"\\1"
FluidSynth_VERSION_STRING
"${_version_string}"
)
unset(_version_string)
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(FluidSynth
REQUIRED_VARS FluidSynth_LIBRARY FluidSynth_INCLUDE_DIR
VERSION_VAR FluidSynth_VERSION_STRING
)

View File

@@ -0,0 +1,31 @@
# Copyright (c) 2023 Dominic Clark
#
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(ImportedTargetHelpers)
find_package_config_mode_with_fallback(mp3lame mp3lame::mp3lame
LIBRARY_NAMES "mp3lame"
INCLUDE_NAMES "lame/lame.h"
PREFIX Lame
)
determine_version_from_source(Lame_VERSION mp3lame::mp3lame [[
#include <iostream>
#include <lame/lame.h>
auto main() -> int
{
auto version = lame_version_t{};
get_lame_version_numerical(&version);
std::cout << version.major << "." << version.minor;
}
]])
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Lame
REQUIRED_VARS Lame_LIBRARY Lame_INCLUDE_DIRS
VERSION_VAR Lame_VERSION
)

View File

@@ -1,86 +1,68 @@
# - Try to find the OggVorbis libraries
# Once done this will define
# Copyright (c) 2023 Dominic Clark
#
# OGGVORBIS_FOUND - system has OggVorbis
# OGGVORBIS_VERSION - set either to 1 or 2
# OGGVORBIS_INCLUDE_DIR - the OggVorbis include directory
# OGGVORBIS_LIBRARIES - The libraries needed to use OggVorbis
# OGG_LIBRARY - The Ogg library
# VORBIS_LIBRARY - The Vorbis library
# VORBISFILE_LIBRARY - The VorbisFile library
# VORBISENC_LIBRARY - The VorbisEnc library
# Copyright (c) 2006, Richard Laerkaeng, <richard@goteborg.utfors.se>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(ImportedTargetHelpers)
include (CheckLibraryExists)
find_package_config_mode_with_fallback(Ogg Ogg::ogg
LIBRARY_NAMES "ogg"
INCLUDE_NAMES "ogg/ogg.h"
PKG_CONFIG ogg
)
find_path(VORBIS_INCLUDE_DIR vorbis/vorbisfile.h)
find_path(OGG_INCLUDE_DIR ogg/ogg.h)
find_package_config_mode_with_fallback(Vorbis Vorbis::vorbis
LIBRARY_NAMES "vorbis"
INCLUDE_NAMES "vorbis/codec.h"
PKG_CONFIG vorbis
DEPENDS Ogg::ogg
)
find_library(OGG_LIBRARY NAMES ogg)
find_library(VORBIS_LIBRARY NAMES vorbis)
find_library(VORBISFILE_LIBRARY NAMES vorbisfile)
find_library(VORBISENC_LIBRARY NAMES vorbisenc)
find_package_config_mode_with_fallback(Vorbis Vorbis::vorbisfile
LIBRARY_NAMES "vorbisfile"
INCLUDE_NAMES "vorbis/vorbisfile.h"
PKG_CONFIG vorbisfile
DEPENDS Vorbis::vorbis
PREFIX VorbisFile
)
find_package_config_mode_with_fallback(Vorbis Vorbis::vorbisenc
LIBRARY_NAMES "vorbisenc"
INCLUDE_NAMES "vorbis/vorbisenc.h"
PKG_CONFIG vorbisenc
DEPENDS Vorbis::vorbis
PREFIX VorbisEnc
)
if (VORBIS_INCLUDE_DIR AND VORBIS_LIBRARY AND VORBISFILE_LIBRARY AND VORBISENC_LIBRARY)
set(OGGVORBIS_FOUND TRUE)
determine_version_from_source(Vorbis_VERSION Vorbis::vorbis [[
#include <iostream>
#include <string_view>
#include <vorbis/codec.h>
set(OGGVORBIS_LIBRARIES ${OGG_LIBRARY} ${VORBIS_LIBRARY} ${VORBISFILE_LIBRARY} ${VORBISENC_LIBRARY})
auto main() -> int
{
// Version string has the format "org name version"
const auto version = std::string_view{vorbis_version_string()};
const auto nameBegin = version.find(' ') + 1;
const auto versionBegin = version.find(' ', nameBegin) + 1;
std::cout << version.substr(versionBegin);
}
]])
set(_CMAKE_REQUIRED_LIBRARIES_TMP ${CMAKE_REQUIRED_LIBRARIES})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${OGGVORBIS_LIBRARIES})
check_library_exists(vorbis vorbis_bitrate_addblock "" HAVE_LIBVORBISENC2)
set(CMAKE_REQUIRED_LIBRARIES ${_CMAKE_REQUIRED_LIBRARIES_TMP})
if (HAVE_LIBVORBISENC2)
set (OGGVORBIS_VERSION 2)
else (HAVE_LIBVORBISENC2)
set (OGGVORBIS_VERSION 1)
endif (HAVE_LIBVORBISENC2)
else (VORBIS_INCLUDE_DIR AND VORBIS_LIBRARY AND VORBISFILE_LIBRARY AND VORBISENC_LIBRARY)
set (OGGVORBIS_VERSION)
set(OGGVORBIS_FOUND FALSE)
endif (VORBIS_INCLUDE_DIR AND VORBIS_LIBRARY AND VORBISFILE_LIBRARY AND VORBISENC_LIBRARY)
if (OGGVORBIS_FOUND)
if (NOT OggVorbis_FIND_QUIETLY)
message(STATUS "Found OggVorbis: ${OGGVORBIS_LIBRARIES}")
endif (NOT OggVorbis_FIND_QUIETLY)
else (OGGVORBIS_FOUND)
if (OggVorbis_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find OggVorbis libraries")
endif (OggVorbis_FIND_REQUIRED)
if (NOT OggVorbis_FIND_QUITELY)
message(STATUS "Could NOT find OggVorbis libraries")
endif (NOT OggVorbis_FIND_QUITELY)
endif (OGGVORBIS_FOUND)
#check_include_files(vorbis/vorbisfile.h HAVE_VORBISFILE_H)
#check_library_exists(ogg ogg_page_version "" HAVE_LIBOGG)
#check_library_exists(vorbis vorbis_info_init "" HAVE_LIBVORBIS)
#check_library_exists(vorbisfile ov_open "" HAVE_LIBVORBISFILE)
#check_library_exists(vorbisenc vorbis_info_clear "" HAVE_LIBVORBISENC)
#check_library_exists(vorbis vorbis_bitrate_addblock "" HAVE_LIBVORBISENC2)
#if (HAVE_LIBOGG AND HAVE_VORBISFILE_H AND HAVE_LIBVORBIS AND HAVE_LIBVORBISFILE AND HAVE_LIBVORBISENC)
# message(STATUS "Ogg/Vorbis found")
# set (VORBIS_LIBS "-lvorbis -logg")
# set (VORBISFILE_LIBS "-lvorbisfile")
# set (VORBISENC_LIBS "-lvorbisenc")
# set (OGGVORBIS_FOUND TRUE)
# if (HAVE_LIBVORBISENC2)
# set (HAVE_VORBIS 2)
# else (HAVE_LIBVORBISENC2)
# set (HAVE_VORBIS 1)
# endif (HAVE_LIBVORBISENC2)
#else (HAVE_LIBOGG AND HAVE_VORBISFILE_H AND HAVE_LIBVORBIS AND HAVE_LIBVORBISFILE AND HAVE_LIBVORBISENC)
# message(STATUS "Ogg/Vorbis not found")
#endif (HAVE_LIBOGG AND HAVE_VORBISFILE_H AND HAVE_LIBVORBIS AND HAVE_LIBVORBISFILE AND HAVE_LIBVORBISENC)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OggVorbis
REQUIRED_VARS
Ogg_LIBRARY
Ogg_INCLUDE_DIRS
Vorbis_LIBRARY
Vorbis_INCLUDE_DIRS
VorbisFile_LIBRARY
VorbisFile_INCLUDE_DIRS
VorbisEnc_LIBRARY
VorbisEnc_INCLUDE_DIRS
# This only reports the Vorbis version - Ogg can have a different version,
# so if we ever care about that, it should be split off into a different
# find module.
VERSION_VAR Vorbis_VERSION
)

View File

@@ -1,36 +1,34 @@
# - Try to find Portaudio
# Once done this will define
#
# PORTAUDIO_FOUND - system has Portaudio
# PORTAUDIO_INCLUDE_DIRS - the Portaudio include directory
# PORTAUDIO_LIBRARIES - Link these to use Portaudio
# PORTAUDIO_DEFINITIONS - Compiler switches required for using Portaudio
#
# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
# Copyright (c) 2023 Dominic Clark
#
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
include(ImportedTargetHelpers)
if (PORTAUDIO_LIBRARIES AND PORTAUDIO_INCLUDE_DIRS)
# in cache already
set(PORTAUDIO_FOUND TRUE)
else (PORTAUDIO_LIBRARIES AND PORTAUDIO_INCLUDE_DIRS)
include(FindPkgConfig)
pkg_check_modules(PORTAUDIO portaudio-2.0)
if (PORTAUDIO_FOUND)
if (NOT Portaudio_FIND_QUIETLY)
message(STATUS "Found Portaudio: ${PORTAUDIO_LIBRARIES}")
endif (NOT Portaudio_FIND_QUIETLY)
else (PORTAUDIO_FOUND)
if (Portaudio_FIND_REQUIRED)
message(FATAL_ERROR "Could not find Portaudio")
endif (Portaudio_FIND_REQUIRED)
endif (PORTAUDIO_FOUND)
find_package_config_mode_with_fallback(portaudio portaudio
LIBRARY_NAMES "portaudio"
INCLUDE_NAMES "portaudio.h"
PKG_CONFIG portaudio-2.0
PREFIX Portaudio
)
# show the PORTAUDIO_INCLUDE_DIRS and PORTAUDIO_LIBRARIES variables only in the advanced view
mark_as_advanced(PORTAUDIO_INCLUDE_DIRS PORTAUDIO_LIBRARIES)
determine_version_from_source(Portaudio_VERSION portaudio [[
#include <iostream>
#include "portaudio.h"
endif (PORTAUDIO_LIBRARIES AND PORTAUDIO_INCLUDE_DIRS)
auto main() -> int
{
// Version number has the format 0xMMmmpp
const auto version = Pa_GetVersion();
std::cout << ((version >> 16) & 0xff)
<< "." << ((version >> 8) & 0xff)
<< "." << ((version >> 0) & 0xff);
}
]])
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Portaudio
REQUIRED_VARS Portaudio_LIBRARY Portaudio_INCLUDE_DIRS
VERSION_VAR Portaudio_VERSION
)

View File

@@ -0,0 +1,118 @@
# This module defines
# SDL2::SDL2, a target providing SDL2 itself
# SDL2_LIBRARY, the name of the library to link against
# SDL2_FOUND, if false, do not try to link to SDL2
# SDL2_INCLUDE_DIR, where to find SDL.h
#
# On OSX, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of
# SDL2_LIBRARY to override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.
#
# $SDL2DIR is an environment variable that would
# correspond to the ./configure --prefix=$SDL2DIR
# used in building SDL2.
#
# Modified by Eric Wing, l.e.galup, and Dominic Clark
#
#=============================================================================
# Copyright 2003-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file COPYING-CMAKE-SCRIPTS for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Try config mode first - anything SDL2 itself provides is likely to be more
# reliable than our guesses.
find_package(SDL2 CONFIG QUIET)
if(TARGET SDL2::SDL2)
# Extract details for find_package_handle_standard_args
get_target_property(SDL2_LIBRARY SDL2::SDL2 LOCATION)
get_target_property(SDL2_INCLUDE_DIR SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
else()
set(SDL2_SEARCH_PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
${SDL2_PATH}
)
find_path(SDL2_INCLUDE_DIR
NAMES SDL.h
HINTS $ENV{SDL2DIR} ${SDL2_INCLUDE_DIRS}
PATH_SUFFIXES SDL2 include/SDL2 include
PATHS ${SDL2_SEARCH_PATHS}
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(PATH_SUFFIXES lib64 lib/x64 lib)
else()
set(PATH_SUFFIXES lib/x86 lib)
endif()
find_library(SDL2_LIBRARY
NAMES SDL2
HINTS $ENV{SDL2DIR} ${SDL2_LIBDIR}
PATH_SUFFIXES ${PATH_SUFFIXES}
PATHS ${SDL2_SEARCH_PATHS}
)
# SDL2 may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
if(NOT APPLE)
find_package(Threads)
endif()
if(SDL2_LIBRARY AND SDL2_INCLUDE_DIR)
add_library(SDL2::SDL2 UNKNOWN IMPORTED)
set_target_properties(SDL2::SDL2 PROPERTIES
IMPORTED_LOCATION "${SDL2_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}"
)
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
if(APPLE)
set_property(TARGET SDL2::SDL2 APPEND PROPERTY
INTERFACE_LINK_OPTIONS "-framework Cocoa"
)
endif()
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
if(NOT APPLE AND Threads_FOUND)
set_property(TARGET SDL2::SDL2 APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "Threads::Threads"
)
endif()
if(EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h")
file(READ "${SDL2_INCLUDE_DIR}/SDL_version.h" _sdl_version_h)
string(REGEX REPLACE ".*#[\t ]*define[\t ]+SDL_MAJOR_VERSION[\t ]+([0-9]+).*" "\\1" SDL2_VERSION_MAJOR "${_sdl_version_h}")
string(REGEX REPLACE ".*#[\t ]*define[\t ]+SDL_MINOR_VERSION[\t ]+([0-9]+).*" "\\1" SDL2_VERSION_MINOR "${_sdl_version_h}")
string(REGEX REPLACE ".*#[\t ]*define[\t ]+SDL_PATCHLEVEL[\t ]+([0-9]+).*" "\\1" SDL2_VERSION_PATCH "${_sdl_version_h}")
set(SDL2_VERSION "${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH}")
unset(_sdl_version_h)
endif()
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SDL2
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION
)

View File

@@ -1,20 +1,27 @@
FIND_PATH(STK_INCLUDE_DIR Stk.h /usr/include/stk /usr/local/include/stk ${CMAKE_INSTALL_PREFIX}/include/stk ${CMAKE_FIND_ROOT_PATH}/include/stk)
include(ImportedTargetHelpers)
FIND_LIBRARY(STK_LIBRARY NAMES stk PATH /usr/lib /usr/local/lib ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_FIND_ROOT_PATH}/lib)
# TODO CMake 3.18: Alias this target to something less hideous
find_package_config_mode_with_fallback(unofficial-libstk unofficial::libstk::libstk
LIBRARY_NAMES "stk"
INCLUDE_NAMES "stk/Stk.h"
LIBRARY_HINTS "/usr/lib" "/usr/local/lib" "${CMAKE_INSTALL_PREFIX}/lib" "${CMAKE_FIND_ROOT_PATH}/lib"
INCLUDE_HINTS "/usr/include" "/usr/local/include" "${CMAKE_INSTALL_PREFIX}/include" "${CMAKE_FIND_ROOT_PATH}/include"
PREFIX STK
)
IF (STK_INCLUDE_DIR AND STK_LIBRARY)
SET(STK_FOUND TRUE)
ENDIF (STK_INCLUDE_DIR AND STK_LIBRARY)
# Find STK rawwave path
if(STK_INCLUDE_DIRS)
list(GET STK_INCLUDE_DIRS 0 STK_INCLUDE_DIR)
find_path(STK_RAWWAVE_ROOT
NAMES silence.raw sinewave.raw
HINTS "${STK_INCLUDE_DIR}/.."
PATH_SUFFIXES share/stk/rawwaves share/libstk/rawwaves
)
endif()
include(FindPackageHandleStandardArgs)
IF (STK_FOUND)
IF (NOT STK_FIND_QUIETLY)
MESSAGE(STATUS "Found STK: ${STK_LIBRARY}")
SET(HAVE_STK TRUE)
ENDIF (NOT STK_FIND_QUIETLY)
ELSE (STK_FOUND)
IF (STK_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find STK")
ENDIF (STK_FIND_REQUIRED)
ENDIF (STK_FOUND)
find_package_handle_standard_args(STK
REQUIRED_VARS STK_LIBRARY STK_INCLUDE_DIR
# STK doesn't appear to expose its version, so we can't pass it here
)

View File

@@ -0,0 +1,35 @@
# Copyright (c) 2023 Dominic Clark
#
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(ImportedTargetHelpers)
find_package_config_mode_with_fallback(SampleRate SampleRate::samplerate
LIBRARY_NAMES "samplerate" "libsamplerate" "libsamplerate-0"
INCLUDE_NAMES "samplerate.h"
PKG_CONFIG samplerate
PREFIX Samplerate
)
determine_version_from_source(Samplerate_VERSION SampleRate::samplerate [[
#include <iostream>
#include <string_view>
#include <samplerate.h>
auto main() -> int
{
// Version string has the format "name-version copyright"
const auto version = std::string_view{src_get_version()};
const auto begin = version.find('-') + 1;
const auto end = version.find(' ', begin);
std::cout << version.substr(begin, end - begin);
}
]])
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Samplerate
REQUIRED_VARS Samplerate_LIBRARY Samplerate_INCLUDE_DIRS
VERSION_VAR Samplerate_VERSION
)

View File

@@ -0,0 +1,34 @@
# Copyright (c) 2023 Dominic Clark
#
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(ImportedTargetHelpers)
find_package_config_mode_with_fallback(SndFile SndFile::sndfile
LIBRARY_NAMES "sndfile" "libsndfile" "libsndfile-1"
INCLUDE_NAMES "sndfile.h"
PKG_CONFIG sndfile
)
determine_version_from_source(SndFile_VERSION SndFile::sndfile [[
#include <iostream>
#include <string_view>
#include <sndfile.h>
auto main() -> int
{
// Version string has the format "name-version", optionally followed by "-exp"
const auto version = std::string_view{sf_version_string()};
const auto begin = version.find('-') + 1;
const auto end = version.find('-', begin);
std::cout << version.substr(begin, end - begin);
}
]])
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SndFile
REQUIRED_VARS SndFile_LIBRARY SndFile_INCLUDE_DIRS
VERSION_VAR SndFile_VERSION
)

View File

@@ -0,0 +1,34 @@
# sndio check, based on FindAlsa.cmake
#
# Copyright (c) 2006, David Faure, <faure@kde.org>
# Copyright (c) 2007, Matthias Kretz <kretz@kde.org>
# Copyright (c) 2009, Jacob Meuser <jakemsr@sdf.lonestar.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(CheckIncludeFiles)
include(CheckIncludeFileCXX)
include(CheckLibraryExists)
# Already done by toplevel
find_library(SNDIO_LIBRARY sndio)
set(SNDIO_LIBRARY_DIR "")
if(SNDIO_LIBRARY)
get_filename_component(SNDIO_LIBRARY_DIR ${SNDIO_LIBRARY} PATH)
endif(SNDIO_LIBRARY)
check_library_exists(sndio sio_open "${SNDIO_LIBRARY_DIR}" HAVE_SIO_OPEN)
find_path(SNDIO_INCLUDE_DIR sndio.h)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SNDIO DEFAULT_MSG SNDIO_LIBRARY SNDIO_INCLUDE_DIR HAVE_SIO_OPEN)
if(SNDIO_FOUND)
set(SNDIO_INCLUDE_DIRS "${SNDIO_INCLUDE_DIR}")
set(SNDIO_LIBRARIES "${SNDIO_LIBRARY}")
endif()
mark_as_advanced(SNDIO_INCLUDE_DIR SNDIO_LIBRARY SNDIO_INCLUDE_DIRS SNDIO_LIBRARIES)

View File

@@ -0,0 +1,16 @@
# Copyright (c) 2015 Andrew Kelley
# This file is MIT licensed.
# See http://opensource.org/licenses/MIT
# SOUNDIO_FOUND
# SOUNDIO_INCLUDE_DIR
# SOUNDIO_LIBRARY
find_path(SOUNDIO_INCLUDE_DIR NAMES soundio/soundio.h)
find_library(SOUNDIO_LIBRARY NAMES soundio)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SOUNDIO DEFAULT_MSG SOUNDIO_LIBRARY SOUNDIO_INCLUDE_DIR)
mark_as_advanced(SOUNDIO_INCLUDE_DIR SOUNDIO_LIBRARY)

View File

@@ -3,18 +3,120 @@
#
# WINE_FOUND - System has wine
# WINE_INCLUDE_DIRS - The wine include directories
# WINE_LIBRARIES - The libraries needed to use wine
# WINE_DEFINITIONS - Compiler switches required for using wine
#
FIND_PATH(WINE_INCLUDE_DIR windows/windows.h PATH_SUFFIXES wine)
FIND_LIBRARY(WINE_LIBRARY NAMES wine PATH_SUFFIXES wine)
FIND_PROGRAM(WINE_CXX NAMES wineg++)
MACRO(_findwine_find_flags output expression result)
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}")
FOREACH(FLAG ${WINEBUILD_FLAGS})
IF("${FLAG}" MATCHES "${expression}")
LIST(APPEND ${result} "${FLAG}")
ENDIF()
ENDFOREACH()
ENDMACRO()
set(WINE_INCLUDE_DIRS ${WINE_INCLUDE_DIR} )
set(WINE_LIBRARIES ${WINE_LIBRARY} )
MACRO(_regex_replace_foreach EXPRESSION REPLACEMENT RESULT INPUT)
SET(${RESULT} "")
FOREACH(ITEM ${INPUT})
STRING(REGEX REPLACE "${EXPRESSION}" "${REPLACEMENT}" ITEM "${ITEM}")
LIST(APPEND ${RESULT} "${ITEM}")
ENDFOREACH()
ENDMACRO()
LIST(APPEND CMAKE_PREFIX_PATH /opt/wine-stable /opt/wine-devel /opt/wine-staging /usr/lib/wine/)
FIND_PROGRAM(WINE_CXX
NAMES wineg++ winegcc winegcc64 winegcc32 winegcc-stable
PATHS /usr/lib/wine
)
FIND_PROGRAM(WINE_BUILD NAMES winebuild)
# Detect wine paths and handle linking problems
IF(WINE_CXX)
execute_process(COMMAND ${WINE_CXX} -m32 -v /dev/zero OUTPUT_VARIABLE WINEBUILD_OUTPUT_32)
execute_process(COMMAND ${WINE_CXX} -m64 -v /dev/zero OUTPUT_VARIABLE WINEBUILD_OUTPUT_64)
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem/usr/include$" BUGGED_WINEGCC)
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem" WINEGCC_INCLUDE_DIR)
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "libwinecrt0\\.a.*" WINECRT_32)
_findwine_find_flags("${WINEBUILD_OUTPUT_64}" "libwinecrt0\\.a.*" WINECRT_64)
_regex_replace_foreach("^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}")
_regex_replace_foreach("/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}")
STRING(REGEX REPLACE "wine/libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}")
STRING(REGEX REPLACE "wine/libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}")
IF(BUGGED_WINEGCC)
MESSAGE(WARNING "Your winegcc is unusable due to https://bugs.winehq.org/show_bug.cgi?id=46293,\n
Consider either upgrading or downgrading wine.")
RETURN()
ENDIF()
IF(WINE_32_LIBRARY_DIR STREQUAL WINE_64_LIBRARY_DIR)
MESSAGE(STATUS "Old winegcc detected, trying to use workaround linking")
# Fix library search directory according to the target bitness
IF(WINE_32_LIBRARY_DIR MATCHES "/lib/(x86_64|i386)-")
# Debian systems
STRING(REPLACE "/lib/x86_64-" "/lib/i386-" WINE_32_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}")
STRING(REPLACE "/lib/i386-" "/lib/x86_64-" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/(lib|lib64)/wine/$")
# WineHQ (/opt/wine-stable, /opt/wine-devel, /opt/wine-staging)
STRING(REGEX REPLACE "/lib64/wine/$" "/lib/wine/" WINE_32_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}")
STRING(REGEX REPLACE "/lib/wine/$" "/lib64/wine/" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib32/")
# Systems with old multilib layout
STRING(REPLACE "/lib32/" "/lib/" WINE_64_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}")
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib64/")
# We need to test if the corresponding 64bit library directory is lib or lib32
STRING(REPLACE "/lib64/" "/lib32/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
IF(NOT EXISTS "${WINE_32_LIBRARY_DIR}")
STRING(REPLACE "/lib64/" "/lib/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
ENDIF()
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib/")
# Test if this directory is for 32bit or 64bit
STRING(REPLACE "/lib/" "/lib32/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
IF(NOT EXISTS "${WINE_32_LIBRARY_DIR}")
SET(WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
STRING(REPLACE "/lib/" "/lib64/" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
ENDIF()
ELSE()
MESSAGE(WARNING "Can't detect wine installation layout. You may get some build errors.")
ENDIF()
SET(WINE_LIBRARY_FIX "${WINE_32_LIBRARY_DIR} and ${WINE_64_LIBRARY_DIR}")
ENDIF()
ENDIF()
FIND_PATH(WINE_INCLUDE_DIR wine/exception.h
HINTS ${WINE_INCLUDE_HINT}
)
SET(_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE})
SET(CMAKE_LIBRARY_ARCHITECTURE ${_ARCHITECTURE})
SET(WINE_INCLUDE_DIRS ${WINE_INCLUDE_DIR} )
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Wine DEFAULT_MSG WINE_LIBRARIES WINE_INCLUDE_DIRS)
find_package_handle_standard_args(Wine DEFAULT_MSG WINE_CXX WINE_INCLUDE_DIRS)
mark_as_advanced(WINE_INCLUDE_DIR WINE_LIBRARY)
mark_as_advanced(WINE_INCLUDE_DIR WINE_LIBRARY WINE_CXX WINE_BUILD)
IF(WINE_32_LIBRARY_DIR)
IF(WINE_32_LIBRARY_DIR MATCHES "wine*/lib")
SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR} -L${WINE_32_LIBRARY_DIR}../")
SET(WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIR}:${WINE_32_LIBRARY_DIR}/..")
ELSE()
SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR} -L${WINE_32_LIBRARY_DIR}wine/")
SET(WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIR}:${WINE_32_LIBRARY_DIR}wine/")
ENDIF()
ENDIF()
IF(WINE_64_LIBRARY_DIR)
IF(WINE_64_LIBRARY_DIR MATCHES "wine*/lib")
SET(WINE_64_FLAGS "-L${WINE_64_LIBRARY_DIR} -L${WINE_64_LIBRARY_DIR}../")
SET(WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIR}:${WINE_64_LIBRARY_DIR}/..")
ELSE()
SET(WINE_64_FLAGS "-L${WINE_64_LIBRARY_DIR} -L${WINE_64_LIBRARY_DIR}wine/")
SET(WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIR}:${WINE_64_LIBRARY_DIR}wine/")
ENDIF()
ENDIF()
# Create winegcc wrapper
configure_file(${CMAKE_CURRENT_LIST_DIR}/winegcc_wrapper.in winegcc_wrapper @ONLY)
SET(WINEGCC "${CMAKE_CURRENT_BINARY_DIR}/winegcc_wrapper")

View File

@@ -0,0 +1,80 @@
# GenQrc.cmake - Copyright (c) 2015 Lukas W <lukaswhl/at/gmail.com>
# Generates a simple qrc file named ${QRC_NAME} containing the given resource
# files ${ARGN}, rccs it, and returns Qt's output file.
# Must only be run once per CMakeLists.txt.
# Usage example:
# add_gen_qrc(RCC_OUTPUT resources.qrc artwork.png icon.png PREFIX /icons)
# add_executable(myexe main.cpp ${RCC_OUTPUT})
# Files may also be added using a pattern with the GLOB keyword, e.g.:
# add_gen_qrc(RCC_OUTPUT resources.qrc GLOB *.png)
function(add_gen_qrc RCC_OUT QRC_NAME)
cmake_parse_arguments(RC "" "PREFIX;GLOB" "" ${ARGN})
# Get the absolute paths for the generated files
if(IS_ABSOLUTE "${QRC_NAME}")
set(QRC_FILE "${QRC_NAME}")
else()
set(QRC_FILE "${CMAKE_CURRENT_BINARY_DIR}/${QRC_NAME}")
endif()
get_filename_component(RESOURCE_NAME "${QRC_FILE}" NAME_WE)
get_filename_component(OUTPUT_DIR "${QRC_FILE}" DIRECTORY)
set(CPP_FILE "${OUTPUT_DIR}/qrc_${RESOURCE_NAME}.cpp")
# Set the standard prefix to "/" if none is given
if(NOT DEFINED RC_PREFIX)
set(RC_PREFIX "/")
endif()
# Determine input files
set(FILES ${RC_UNPARSED_ARGUMENTS})
if(DEFINED RC_GLOB)
file(GLOB GLOB_FILES "${RC_GLOB}")
list(APPEND FILES ${GLOB_FILES})
endif()
# Add the command to generate the QRC file
set(GENQRC_SCRIPT "${CMAKE_SOURCE_DIR}/cmake/scripts/GenQrc.cmake")
add_custom_command(
OUTPUT "${QRC_FILE}"
COMMAND "${CMAKE_COMMAND}"
-D "OUT_FILE=${QRC_FILE}"
-D "RC_PREFIX=${RC_PREFIX}"
-D "FILES:list=${FILES}"
-D "DIR=${CMAKE_CURRENT_SOURCE_DIR}"
-P "${GENQRC_SCRIPT}"
DEPENDS "${GENQRC_SCRIPT}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
VERBATIM
)
# Add the command to compile the QRC file
# Note: we can't use `qt5_add_resources` or `AUTORCC` here; we have to add
# the command ourselves instead. This is in order to handle dependencies
# correctly: the QRC file is generated at build time, so the dependencies
# of the compiled file can't be automatically determined at configure time.
# Additionally, `qt5_add_resources` adds unnecessary dependencies for
# generated QRC files, which can cause dependency cycles with some
# generators. See issue #6177.
add_custom_command(
OUTPUT "${CPP_FILE}"
COMMAND Qt5::rcc
--name "${RESOURCE_NAME}"
--output "${CPP_FILE}"
"${QRC_FILE}"
DEPENDS "${QRC_FILE}" ${FILES}
VERBATIM
)
# Flag the generated files to be ignored by automatic tool processing
set_source_files_properties("${QRC_FILE}" PROPERTIES
SKIP_AUTORCC ON # We added the rcc command for this manually
)
set_source_files_properties("${CPP_FILE}" PROPERTIES
SKIP_AUTOMOC ON # The rcc output file has no need for moc or uic
SKIP_AUTOUIC ON
)
# Return the rcc output file
set("${RCC_OUT}" "${CPP_FILE}" PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1,228 @@
# ImportedTargetHelpers.cmake - various helper functions for use in find modules.
#
# Copyright (c) 2022-2023 Dominic Clark
#
# Redistribution and use is allowed according to the terms of the New BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# If the version variable is not yet set, build the source linked to the target,
# run it, and set the version variable to the output. Useful for libraries which
# do not expose the version information in a header where it can be extracted
# with regular expressions, but do provide a function to get the version.
#
# Usage:
# determine_version_from_source(
# <output variable> # The cache variable in which to store the computed version
# <target> # The target which the source will link to
# <source> # The source code to determine the version
# )
function(determine_version_from_source _version_out _target _source)
# Return if we already know the version, or the target was not found
if(NOT "${${_version_out}}" STREQUAL "" OR NOT TARGET "${_target}")
return()
endif()
# Return with a notice if cross-compiling, since we are unlikely to be able
# to run the compiled source
if(CMAKE_CROSSCOMPILING)
message(
"${_target} was found but the version could not be determined automatically.\n"
"Set the cache variable `${_version_out}` to the version you have installed."
)
return()
endif()
# Write the source code to a temporary file
string(SHA1 _source_hash "${_source}")
set(_source_file "${CMAKE_CURRENT_BINARY_DIR}/${_source_hash}.cpp")
file(WRITE "${_source_file}" "${_source}")
# Build and run the temporary file to get the version
# TODO CMake 3.25: Use the new signature for try_run which has a NO_CACHE
# option and doesn't require separate file management.
try_run(
_dvfs_run_result _dvfs_compile_result "${CMAKE_CURRENT_BINARY_DIR}"
SOURCES "${_source_file}"
LINK_LIBRARIES "${_target}"
CXX_STANDARD 17
RUN_OUTPUT_VARIABLE _run_output
COMPILE_OUTPUT_VARIABLE _compile_output
)
# Clean up the temporary file
file(REMOVE "${_source_file}")
# Set the version if the run was successful, using a cache variable since
# this version check may be relatively expensive. Otherwise, log the error
# and inform the user.
if(_dvfs_run_result EQUAL "0")
set("${_version_out}" "${_run_output}" CACHE INTERNAL "Version of ${_target}")
else()
message(DEBUG "${_compile_output}")
message(
"${_target} was found but the version could not be determined automatically.\n"
"Set the cache variable `${_version_out}` to the version you have installed."
)
endif()
endfunction()
# Search for a package using config mode. If this fails to find the desired
# target, use the specified fallbacks and add the target if they succeed. Set
# the variables `prefix_LIBRARY`, `prefix_INCLUDE_DIRS`, and `prefix_VERSION`
# if found for the caller to pass to `find_package_handle_standard_args`.
#
# Usage:
# find_package_config_mode_with_fallback(
# <package_name> # The package to search for with config mode
# <target_name> # The target to expect from config mode, or define if not found
# LIBRARY_NAMES names... # Possible library names to search for as a fallback
# INCLUDE_NAMES names... # Possible header names to search for as a fallback
# [PKG_CONFIG <pkg_config_name>] # The pkg-config name to search for as a fallback
# [LIBRARY_HINTS hints...] # Locations to look for libraries
# [INCLUDE_HINTS hints...] # Locations to look for headers
# [DEPENDS dependencies...] # Dependencies of the target - added to INTERFACE_LINK_LIBRARIES, and will fail if not found
# [PREFIX <prefix>] # The prefix for result variables - defaults to the package name
# )
function(find_package_config_mode_with_fallback _fpcmwf_PACKAGE_NAME _fpcmwf_TARGET_NAME)
# Parse remaining arguments
set(_options "")
set(_one_value_args "PKG_CONFIG" "PREFIX")
set(_multi_value_args "LIBRARY_NAMES" "LIBRARY_HINTS" "INCLUDE_NAMES" "INCLUDE_HINTS" "DEPENDS")
cmake_parse_arguments(PARSE_ARGV 2 _fpcmwf "${_options}" "${_one_value_args}" "${_multi_value_args}")
# Compute result variable names
if(NOT DEFINED _fpcmwf_PREFIX)
set(_fpcmwf_PREFIX "${_fpcmwf_PACKAGE_NAME}")
endif()
set(_version_var "${_fpcmwf_PREFIX}_VERSION")
set(_library_var "${_fpcmwf_PREFIX}_LIBRARY")
set(_include_var "${_fpcmwf_PREFIX}_INCLUDE_DIRS")
# Try config mode if possible
find_package("${_fpcmwf_PACKAGE_NAME}" CONFIG QUIET)
if(TARGET "${_fpcmwf_TARGET_NAME}")
# Extract package details from existing target
get_target_property("${_library_var}" "${_fpcmwf_TARGET_NAME}" LOCATION)
get_target_property("${_include_var}" "${_fpcmwf_TARGET_NAME}" INTERFACE_INCLUDE_DIRECTORIES)
if(DEFINED "${_fpcmwf_PACKAGE_NAME}_VERSION")
set("${_version_var}" "${${_fpcmwf_PACKAGE_NAME}_VERSION}")
endif()
else()
# Check whether the dependencies exist
foreach(_dependency IN LISTS _fpcmwf_DEPENDS)
if(NOT TARGET "${_dependency}")
return()
endif()
endforeach()
# Attempt to find the package using pkg-config, if we have it and it was requested
set(_pkg_config_prefix "${_fpcmwf_PKG_CONFIG}_PKG")
if(DEFINED _fpcmwf_PKG_CONFIG)
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules("${_pkg_config_prefix}" QUIET "${_fpcmwf_PKG_CONFIG}")
if("${${_pkg_config_prefix}_FOUND}")
set("${_version_var}" "${${_pkg_config_prefix}_VERSION}")
endif()
endif()
endif()
# Find the library and headers using the results from pkg-config as a guide
find_library("${_library_var}"
NAMES ${_fpcmwf_LIBRARY_NAMES}
HINTS ${${_pkg_config_prefix}_LIBRARY_DIRS} ${_fpcmwf_LIBRARY_HINTS}
)
find_path("${_include_var}"
NAMES ${_fpcmwf_INCLUDE_NAMES}
HINTS ${${_pkg_config_prefix}_INCLUDE_DIRS} ${_fpcmwf_INCLUDE_HINTS}
)
# Create an imported target if we succeeded in finding the package
if(${_library_var} AND ${_include_var})
add_library("${_fpcmwf_TARGET_NAME}" UNKNOWN IMPORTED)
set_target_properties("${_fpcmwf_TARGET_NAME}" PROPERTIES
IMPORTED_LOCATION "${${_library_var}}"
INTERFACE_INCLUDE_DIRECTORIES "${${_include_var}}"
INTERFACE_LINK_LIBRARIES "${_fpcmwf_DEPENDS}"
)
endif()
mark_as_advanced("${_library_var}" "${_include_var}")
endif()
# Return results to caller
if(DEFINED "${_version_var}")
set("${_version_var}" "${${_version_var}}" PARENT_SCOPE)
else()
unset("${_version_var}" PARENT_SCOPE)
endif()
set("${_library_var}" "${${_library_var}}" PARENT_SCOPE)
set("${_include_var}" "${${_include_var}}" PARENT_SCOPE)
endfunction()
# Given a library in vcpkg, find appropriate debug and release versions. If only
# one version exists, use it as the release version, and do not set the debug
# version.
#
# Usage:
# get_vcpkg_library_configs(
# <release library> # Variable in which to store the path to the release version of the library
# <debug library> # Variable in which to store the path to the debug version of the library
# <base library> # Known path to some version of the library
# )
function(get_vcpkg_library_configs _release_out _debug_out _library)
# We want to do all operations within the vcpkg directory
file(RELATIVE_PATH _lib_relative "${VCPKG_INSTALLED_DIR}" "${_library}")
# Return early if we're not using vcpkg
if(IS_ABSOLUTE _lib_relative OR _lib_relative MATCHES "^\\.\\./")
set("${_release_out}" "${_library}" PARENT_SCOPE)
return()
endif()
string(REPLACE "/" ";" _path_bits "${_lib_relative}")
# Determine whether we were given the debug or release version
list(FIND _path_bits "debug" _debug_index)
if(_debug_index EQUAL -1)
# We have the release version, so use it
set(_release_lib "${_library}")
# Try to find a debug version too
list(FIND _path_bits "lib" _lib_index)
if(_lib_index GREATER_EQUAL 0)
list(INSERT _path_bits "${_lib_index}" "debug")
list(INSERT _path_bits 0 "${VCPKG_INSTALLED_DIR}")
string(REPLACE ";" "/" _debug_lib "${_path_bits}")
if(NOT EXISTS "${_debug_lib}")
# Debug version does not exist - only use given version
unset(_debug_lib)
endif()
endif()
else()
# We have the debug version, so try to find a release version too
list(REMOVE_AT _path_bits "${_debug_index}")
list(INSERT _path_bits 0 "${VCPKG_INSTALLED_DIR}")
string(REPLACE ";" "/" _release_lib "${_path_bits}")
if(NOT EXISTS "${_release_lib}")
# Release version does not exist - only use given version
set(_release_lib "${_library}")
else()
# Release version exists, so use given version as debug
set(_debug_lib "${_library}")
endif()
endif()
# Set output variables appropriately
if(_debug_lib)
set("${_release_out}" "${_release_lib}" PARENT_SCOPE)
set("${_debug_out}" "${_debug_lib}" PARENT_SCOPE)
else()
set("${_release_out}" "${_release_lib}" PARENT_SCOPE)
unset("${_debug_out}" PARENT_SCOPE)
endif()
endfunction()

Some files were not shown because too many files have changed in this diff Show More