Commit Graph

1821 Commits

Author SHA1 Message Date
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
Hyunin Song
e0bd797876 Merge branch 'stable-1.2' 2017-10-03 15:56:16 +09:00
David CARLIER
e7e24935b3 catching-up for openbsd sndio support + applying abs call fix (#3839) 2017-10-03 00:47:45 +02:00
Dominic Clark
9407e84ffa Stop some autosave crashes (#3841) 2017-10-01 22:01:38 +02: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
DomClark
fb5a58a526 Don't use VST-provided memory when loading chunks (#3805) 2017-09-21 00:00:19 +02: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
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
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
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
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
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
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
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
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
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
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
Hyunin Song
cc3822141e Merge branch 'stable-1.2' into master (@liushuyu) 2017-07-15 08:08:07 +09: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
Alexandre Almeida
aa6d528c98 Cancel track rename with Escape key 2017-07-08 19:42:13 -03: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
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
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
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
Michael Gregorius
c2f26a76d4 Implement MP3 encoding support
Implement MP3 encoding support
2017-06-12 13:57:08 -04: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
Steffen Baranowsky
cee68c773e fixes position marker height on startup (#3587)
Fixes position marker height on startup
2017-06-01 21:36:36 -04: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