Commit Graph

1763 Commits

Author SHA1 Message Date
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
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
Michael Gregorius
02a36d1387 Add copyright info to the file OutputSettings.h 2017-04-30 11:19:57 +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
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
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
Lukas W
96a00300e8 Fix automation processing in BB tracks (#3481)
Fixes #3464
2017-04-06 23:10:00 +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
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
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
a5aa5e7d08 Clarify usage of Mixer->audioDevName() 2017-03-23 12:40:26 +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
David CARLIER
7f97516683 Fix build for OpenBSD/sndio and licence updates. (#3442) 2017-03-20 06:14:18 +00: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
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
Lukas W
d82b852434 ValueBuffer: Add missing EXPORT 2017-03-08 23:26:20 +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
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
Oskar Wallgren
e4474af091 'Off beat' beat notes to MelodyPattern 2017-02-27 08:17:24 +01:00
Lukas W
4404b6f29c Remove explicit MidiTime constructor and operator 2017-02-24 11:33:11 +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
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
901fea51d0 Auto-save - Fix double negations and some cleanup 2017-02-13 22:19:01 +01:00
Oskar Wallgren
f367604af7 No extra bar with beat note near end 2017-02-09 02:46:47 +01:00
grejppi
9e85d7c66e update all copyright headers to the proper url (#3326) 2017-02-06 02:41:15 +02: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
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
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
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
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
Karmo Rosental
674a2fb50c Fixed #3047 and #3180. (#3184) 2017-01-09 15:46:37 +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
Oskar Wallgren
b9534f4271 m_arpDirectionModel sort element order (#3171) 2016-12-21 01:36:51 +01:00
Oskar Wallgren
e1c598ba21 Set default suffix (#2230) 2016-12-14 15:41:30 +01:00
liushuyu
89bfd3259d Fix several i18n-related defects (#3111) 2016-11-12 11:53:43 -07: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
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
Umcaruje
d4fb937423 Fader redesign (#3056) 2016-09-30 11:50:50 -07: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