Compare commits

...

6446 Commits

Author SHA1 Message Date
Your Name
c39da2f8cc vibefix disintegrator
Some checks failed
build / linux-arm64 (push) Has been cancelled
build / macos-arm64 (push) Has been cancelled
build / macos-x86_64 (push) Has been cancelled
build / mingw64 (push) Has been cancelled
checks / scripted-checks (push) Has been cancelled
build / linux-x86_64 (push) Has been cancelled
build / msvc-x64 (push) Has been cancelled
checks / shellcheck (push) Has been cancelled
build / windows-arm64 (push) Has been cancelled
checks / yamllint (push) Has been cancelled
2026-03-15 04:50:00 +01:00
Your Name
bec763a179 Merge branch 'disintegrator' 2026-03-15 03:20:19 +01:00
Kevin Zander
83313e737d Remove GUI menu items for global automation (#5230)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Fawn <rubiefawn@gmail.com>
2026-03-12 12:03:09 -06:00
Sotonye Atemie
a45a2b86a0 Refactor and improve Tap Tempo (#8098)
Improves the tap tempo algorithm and usage, as well refactoring the code for better maintainability.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2026-03-10 23:31:37 -04:00
Yohanan
6c75b30dca Add search bar for the soundfont player (#8193) 2026-03-10 19:57:19 +01:00
Dalton Messmer
5916a0b477 Auto-quit rework (#8070)
This reworks the auto-quit feature by introducing a new AudioBuffer class which keeps track of which channels are currently silent as audio flows through the effects chain.

When track channels going into an effect's input are not marked as quiet, it is assumed a signal is present and the plugin needs to wake up if it is asleep due to auto-quit. After a plugin processes a buffer, the silence status is updated.

When the auto-quit setting is disabled (that is, when effects are always kept running), effects are always assumed to have input noise (a non-quiet signal present at the plugin inputs), which should result in the same behavior as before.

Benefits:

- The auto-quit system now closely follows how it is supposed to function by only waking plugins which have non-zero input rather than waking all plugins at once whenever an instrument plays a note or a sample track plays. This granularity better fits multi-channel plugins and pin connector routing where not all plugin inputs are connected to the same track channels. This means a sleeping plugin whose inputs are connected to channels 3/4 would not need to wake up if a signal is only present on channels 1/2.
- Silencing channels that are already known to be silent is a no-op
- Calculating the absolute peak sample value for a channel already known to be silent is a no-op
- The silence flags also could be useful for other purposes, such as adding visual indicators to represent how audio signals flow in and out of each plugin
- With a little more work, auto-quit could be enabled/disabled for plugins on an individual basis
- With a little more work, auto-quit could be implemented for instrument plugins
- AudioBuffer can be used with SharedMemory
- AudioBuffer could be used in plugins for their buffers

This new system works so long as the silence flags for each channel remain valid at each point along the effect chain. Modifying the buffers without an accompanying update of the silence flags could violate assumptions. Through unit tests, the correct functioning of AudioBuffer itself can be validated, but its usage in AudioBusHandle, Mixer, and a few other places where track channels are handled will need to be done with care.

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2026-03-09 02:32:45 -04:00
Lost Robot
f5688e9bad Add Frequency Shifter effect (not a pitch shifter) (#8140) 2026-03-01 09:04:51 -06:00
Lukas W
5d5f319942 Detachable windows (#3532)
Allows detaching a window from LMMS's main window, making things like working on multiple screens easier.

The behavior of detached windows can be customized in the Settings.

Closes #1259

---------

Signed-off-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: SpomJ <mihail_a_m@mail.ru>
2026-02-27 00:20:36 -05:00
Yohanan
6854a655a4 Fix empty value returned by FileRevealer::getSelectCommand() (#8281)
Changes `FileRevealer::getSelectCommand` to return an empty `QStringList` as a fallback, not an empty `std::optional`.
2026-02-25 09:04:25 -05:00
regulus79
f7acf0ed4b Add Info TextFloat for Piano Roll Knife Tool (and make cut notes auto selected) (#7953)
* Adds an informative "TextFloat::displayMessage" when the knife tool is enabled.
* Automatically selects short ends if shift is not held down.
2026-02-24 08:49:55 +01:00
Johannes Lorenz
d36f3f019e CMake: Check for PERL's List::MoreUtils (#8180) 2026-02-22 10:44:17 +01:00
Sotonye Atemie
a8423c1e4a Emit the playbackPositionJumped signal only when the active timeline jumps (#8256)
Only emit the playbackPositionJumped signal when the timeline responsible for the current play mode jumps.
2026-02-15 12:14:45 -05:00
Sotonye Atemie
441fd905be Improve performance when moving channels in the Mixer (#8235)
Improves performance when moving mixer channels to the left or right using simple Qt layout operations and swapping of values. This commit also addresses a deadlock in Mixer::mixToChannel by ensuring we lock and unlock the same channel regardless of any move operations occurring simultaneously on another thread.
2026-02-09 11:57:28 -05:00
regulus79
84f691cafc Fix PianoRoll Timeline Constantly Emitting positionJumped During Record-Play (#8252)
When #7454 was merged, Timelines were refactored to emit a positionJumped signal whenever their internal tick position was changed via Timeline::setTicks. This was meant as an easy way to account for all situations where the user might drag or click or somehow forcefully set the position of a timeline mid-playback.
However, the current way timeline syncing is implemented between the song editor and piano roll (when doing record-play in the piano roll) is by constantly calling setTicks on the piano roll's timeline whenever the song editor's timeline moves. This inadvertantly means that positionJumped is being emitted, even when the timeline is tracking smoothly.

This PR attempts to address this issue by adding an optional parameter to Timeline::setTicks which allows the caller to opt out of emitting positionJumped. Ideally, we would have a better system for syncing timelines together, one which does not rely on forcefully calling setTicks. But for now, this should work.

---------

Co-authored-by: Sotonye Atemie <satemiej@gmail.com>
2026-02-08 15:22:20 -05:00
WeakOstra
f35a1dfca8 Fix Pattern Editor UI updates when adjusting note volume via scrolling (#8196)
Closes #7806
2026-02-08 11:50:58 -05:00
ExternStat
a74339f89b Fix AutomatableSlider Creating Too Many Journal Entries (#8223)
---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2026-02-07 17:21:36 -05:00
regulus79
937c8b9d5d Increase Clip Resize Grip Width (#8169)
Requested by a user on the forum. Sometimes, it can get tricky when two clips are right next to each other, and you're trying to resize one of them. Either you resize the right one, or the other one starts resizing behind the other, so you end up having to move one over, then resize it, then move it back. And it's just not awesome.

However, this can be mitigated by simply increasing the clip resize grip width. Currently, it is at 4 px, but increasing it to 8 px makes it easier to specifically target which clip you want to resize. It also probably makes it easier to resize clips in general for users who may struggle to aim the mouse perfectly within that 4 pixel gap.
2026-02-07 13:57:43 -05:00
regulus79
ff9c29d189 Fix Hardcoded Max dB Value When Double-Clicking Knobs (#8189)
Partially addresses #8188

For some reason, when a knob is set to be a "volume knob", the max volume allowed via double-clicking and typing in a value is 6.0 dB. For knobs such as the amplifier knob in Audio File Processor which go up to 500% (~14 db), this is not enough.

This PR makes it so that the dialog shows the actual max dB value based on the underlying model's max value, instead of being hardcoded to 6.0 dB. This PR does not address the minimum value.
2026-02-07 13:57:00 -05:00
Petar Katić
7147caa37a Fix clips not retaining colors or names after using "Clear notes out of bounds" (#8234) 2026-02-07 13:08:04 -05:00
Andrew Wiltshire
c62b42a7c9 Clarify VST support to VST2 and mention LV2 support in README (#8233)
* Clarify VST support to VST2 in README

Updated VST support mention from VST(i) to VST2 in features section for clarity.

* Update README.md

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

* mention LV2 support

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2026-02-02 23:10:39 +01:00
Sotonye Atemie
c14a327d31 Refactor PortAudio backend (#7444)
Refactors the PortAudio backend to fix issues with DirectSound and MME crackling and not loading properly, as well as to improve code quality and maintainability.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2026-02-01 14:23:44 -05:00
regulus79
f504204ef1 Fix Pitch Bending, Strum, and Knife Tools Affecting Per-Note Velocity/Panning (#8243) 2026-02-01 12:55:26 -05:00
regulus79
eb46e6f8de Fix Right-click Remove Node Precision with Pitch Bending (#8242) 2026-02-01 12:53:57 -05:00
Yohanan
ed1e29adfd Fix velocity/panning change affecting unselected notes (#8201)
Fixes #8200. Scrolling to change velocity/panning can affect unselected notes if hovering over them in the bottom section of the piano roll. This PR addresses that.
2026-02-01 11:00:27 -05:00
Sotonye Atemie
e076446fd3 Set file format combo box unconditionally (#8237) 2026-01-31 23:39:34 +01:00
Sotonye Atemie
13ea2ee480 Refactor ExportProjectDialog (#8215)
This refactors the export dialog to no longer use the export_project.ui file and moves it into standard C++ Qt code. This also brings minor changes to the dialog, such as horizontal labels instead of vertical ones.
2026-01-22 19:07:25 -05:00
Andrey
64c346d513 Vibed: fixed regression caused by fastRandInc (#8225) 2026-01-21 21:24:21 -05:00
Yohanan
a4d252186f AudioFileProcessor: update amp model when new sample is loaded (#8198) 2026-01-19 10:58:14 -05:00
Itreza2
f4f85e1f33 Avoid adding journal checkpoints when initially creating volume knobs (#8214)
* reimplement getter and setter of FloatModelEditorBase::m_volumeKnob to avoid undo checkpoint creation

* convert FloatModelEditorBase::m_volumeKnob from BoolModel to bool

* clean up

* remove unnecessary inline keywords and fix formatting

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2026-01-19 10:53:10 -05:00
Daniel Kristiansson
dab06be491 Bump project year (#8207) 2026-01-18 14:57:11 -05:00
Fawn
5e3a67c9d1 Improve lmms::fastRand() and use it instead of std::rand() (#7741) 2026-01-15 17:12:04 -07:00
Itreza2
b390fa414a Add Horizontal Scroll Bar to the File Browser (#8184) 2026-01-14 14:39:59 -05:00
Dalton Messmer
248acbf9a4 Improve strum tool LMB event (#8195) 2026-01-08 13:52:39 -05:00
regulus79
d4cabd5650 Fix Sample Clip Loop Exporting (#8192)
Fixes #8190

When #7454 was merged, I added a check before emitting playbackPositionJumped to only emit when the song was playing, to prevent LFOs from being reset when the user dragged the timeline while the song was paused. However, I used Song::isPlaying(), which only returns true when the song is not exporting. This caused sample clips to not be updated when the playback position jumped back every loop, which means they just kept playing, ignoring the loop. To fix this, I have changed it to use m_playing, which is true for both exporting and normal playing.
2026-01-06 06:34:38 -05:00
Sotonye Atemie
ed0f288c8a Remove SampleLoader (#8186)
Removes `SampleLoader`. File dialog functions were moved into `FileDialog`. Creation functions were moved into `SampleBuffer`.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2026-01-04 21:18:37 -05:00
regulus79
11b4a9bddc Pitch Bending Directly in the Piano Roll (#7759)
This PR modifies how the Detuning tool works in the piano roll to let the user modify the automation curve right on the notes. This is actually fairly simple, as automation clips already contain the functions for dragging and removing points like in the Automation Editor. So essentially all that's being done is calculating the relative pos of the mouse to the nearest note, and setting the drag value in the automation clip to that position and key.

You can still access the old automation editor version by shift-click

messmerd asked if the code could be made general for any future note parameter besides detuning, in preparation for CLAP per-note parameter automation. I have refactored the relevant functions to accept an enum type for the kind of note parameter, although currently only detuning is supported.

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
Co-authored-by: Sotonye Atemie <satemiej@gmail.com>
Co-authored-by: szeli1 <143485814+szeli1@users.noreply.github.com>
2026-01-04 14:18:06 -05:00
regulus79
2db75bd5d9 Fix Sample Clips Getting Out of Sync (#8183)
Fixes #8182

When #7454 was merged, the frameOffset variable inside Song::PlayPos which kept track of the actual frame position which the song was playing at relative to the last tick, was moved to Timeline. In the process, the type was inadvertently changed from float to f_cnt_t.

This caused the frame offset to be truncated ever time it was updated in Song::processNextBuffer, causing the song playback to slowly drift back ever so slightly, just a handful of frames every bar. This caused any new sample clips spawned to be created slightly late, becoming out of sync with any existing playing samples.

This PR fixes the issue by reverting the frameOffset variable type to be float again, allowing it to track sub-sample offsets over time.
2025-12-29 09:29:19 -05:00
Alex
e731231c62 Update translations (#8149)
* Pull translations from Transifex
2025-12-27 17:58:05 +05:30
regulus79
5e8f220b9c Fix AudioFileProcessor Wrong Beat Length Depending on Sample Rate (#8176)
Fixes #8138

Essentially, when playing beat notes in the pattern editor, technically, they have an internal length of 0. However, when the NotePlayHandle is created and recieves that value of 0, it realizes it's supposed to be a beat note, so it asks the instrument track what the default length of note should be. For most instruments, that defaults to whatever the length of the envelope is (no matter whether the envelope is enabled or not. Is that a good system? I don't know.) However, AudioFileProcessor does it custom and returns the length of its sample in frames.

However, the frame count it returned did not take into account that the sample rate of lmms could be different from the sample rate of the sample. This PR fixes that issue by multiplying by the correct sample rate ratio.
2025-12-23 14:59:17 -05:00
szeli1
69f7c3243d Fix knob linking / refactor linking (#7883)
Closes #7869

This PR aims to fix linking bugs and it aims to make linking code faster. In the future I would like to replace controller and automation code with linked models, so it is essential for this feature to work as efficiently as possible.

Before this PR:

- AutomatableModels store a list of AutomatableModels that they are linked to.
- setValue() and other functions make recursive calls to themself resulting in the #7869 crash.
- Each AutomatableModel can unlink from other AutomatableModels, unlinking is the inverse operation to linking.

After this PR:

- AutomatableModels store a pointer to an other AutomatableModel making a linked list. The end is connected to the first element resulting in a "ring".
- setValue() and others are now recursion free, the code runs for every linked model, more efficiently than before.
- Each AutomatableModel can NOT unlink form other AutomatableModels, unlinking is NOT the inverse operation to linking. AutomatableModels can unlink themself from the linked list, they can not unlink themself from single models.

---------

Co-authored-by: allejok96 <allejok96@gmail.com>
2025-12-22 17:37:40 -05:00
regulus79
c92741f567 Fix Pattern Editor Not Updating (#8175)
The TrackContentWidgets in the pattern editor rely on the positionChanged signal to be sent when the pattern index changes so that they know when to update. This signal was removed in #7454, but this PR puts it back.
2025-12-17 18:04:07 -05:00
regulus79
0fe7d6f679 Refactor to move positionChanged signal to Timeline (#7454)
Previously, this PR simply added a new signal to the Timeline class and had it emitted by the TimeLineWidget class in order to solve #7351.

However, as messmerd pointed out in his review comments, that was quite a hacky solution, and ideally the positionChanged signal would be solely managed by the backend Timeline class, while the frontend TimeLineWidget class would connect to those signals, instead of the other way around.

This PR is no longer a simple bugfix, but instead a refactoring of the Timeline/TimeLineWidget signal/slots.

Changes
- The positionChanged signal and updatePosition slot were removed from TimeLineWidget and moved to Timeline.
- Removed PlayPos, and instead store the timeline position in a TimePos along with a separate frame offset counter variable. The functions to set the ticks/timepos in Timeline emit the positionChanged signal. (Also, may emit positionJumped signal if the ticks were forcefully set--see below)
- The pos() method and PlayPos m_pos were removed from TimeLineWidget;
- The constructor for TimeLineWidget no longer requires a PlayPos reference.
- Since each TimeLineWidget stores a reference to its Timeline, a new method was added, timeline(), for other classes to access it.
- Removed array of PlayPos'es in Song. Now each Timeline holds their respective TimePos.
- Song's methods for getPlayPos were changed to return the TimePos of the respective Timeline. The non-const versions of the methods were removed because Timeline does not expose its TimePos to write.
- All of the places where Timelines are used were updated, along with their calls to access/modify the PlayPos. For example, occurrences of m_timeline->pos() were replaced with m_timeline->timeline()->pos(), and calls to m_timeline->pos().setTicks(ticks) were changed to m_timeline->timeline()->setTicks(ticks).
- ALSO: Removed m_elapsedMilliseconds, m_elapsedBars, and m_elapsedTicks from Song. The elapsed milliseconds is now handled individually by each Timeline.
- NEW: The m_jumped variable has been removed from Timeline. Now jumped events emit Timeline::positionJumped automatically whenever the ticks are forcefully set. This means it is no longer necessary to call timeline->setJumped(true) or timeline->setFrameOffset(0) whenever the playhead position is forcefully set. Many places in the codebase were already missing these calls, so this may fix some unknown bugs.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: saker <sakertooth@gmail.com>
Co-authored-by: Alex <allejok96@gmail.com>
2025-12-17 06:31:36 -05:00
Andrew Wiltshire
8a33dd7afe Add help message & icon to empty automation editor (#8171)
This PR brings the changes from #8148 into the automation editor

---------

Co-authored-by: Andrew Wiltshire <AW1534@users.noreply.github.com>
2025-12-17 05:30:30 -05:00
jefrecantuledesma
ec8efde28a Fix Shift+Space corrupting playback state when used on stopped editors (#8154)
* Fix Shift+Space corrupting playback state when used on stopped editors

Shift+Space (togglePause) was allowing state corruption by modifying
m_playing and m_paused without checking m_playMode. This created an
impossible state where m_playing=true while m_playMode=None, causing
the regular Space key to stop working.

Added a guard to ensure togglePause() only operates when something is
actually playing (m_playMode != PlayMode::None). This prevents the
corrupted state and maintains proper play/pause/stop behavior.

Fixes #8036

---------

Co-authored-by: regulus79 <117475203+regulus79@users.noreply.github.com>
2025-12-15 20:42:35 -05:00
Alex
0ffcfe3bff Allow PianoRoll to open empty again, but with a help icon (#8148)
Fixes #8152

Revert PianoRoll closing when empty (caused issues with detached windows)
Remove TextFloat warning when there are no instruments/multiple clips (showed up when reloading project)
(Keep clip creation for empty projects)
Add an icon and updated message in empty PianoRoll.
Mark PianoRollWindow invalid when there is no clip, making buttons impossible to click

---------

Co-authored-by: Fawn <rubiefawn@gmail.com>
2025-12-14 08:40:35 -05:00
Andrew Wiltshire
8627616175 Make playhead red when recording (#7847)
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: Fawn <rubiefawn@gmail.com>
Co-authored-by: Andrew Wiltshire <AW1534@users.noreply.github.com>
2025-12-12 10:02:25 -05:00
Lisa Magdalena Riedler
f0cb32ff08 Fix AFP reverse mode desync on new sample load (#8158)
Previously, loading a new sample in an AFP instance with reverse enabled would desync the button from the model, such that the button would indicate the sample was reversed despite the new sample not actually being reversed.

This commit fixes this behavior so that samples loaded into an AFP instance with reverse enabled are actually reversed.
2025-12-08 16:17:47 -07:00
Lisa Magdalena Riedler
dd9afe7c23 Fix unknown arch+os info in versioninfo (#8159) 2025-12-08 16:07:33 -07:00
jefrecantuledesma
f12c54ca9e Fix truncated OGG exports (#8156)
This fixes a regression in commit f44aa3e that caused OGG exports to not flush any remaining data properly when finalizing the export, leading to truncated outputs with a different duration.

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-12-07 02:44:50 -05:00
jefrecantuledesma
02a0367a4b Fix Clang compiler misidentification in About dialog (#8153)
Clang was incorrectly displayed as 'GCC Clang' because __GNUC__ is
defined by Clang for compatibility. Reordered preprocessor checks in
versioninfo.h to test for __clang__ before __GNUC__.

Fixes #8120
2025-12-07 01:44:29 -05:00
regulus79
0187e64ceb Fix Track Moving not Updating PatternClipView (#8155)
This bug was noticed when testing out #7559, but the PR had been open for over a year, so it was decided to merge it and fix it in this one.

Basically, when adding or removing a track, the TrackContainer sends out signals such as trackAdded or trackRemoved which PatternClipView uses to know when to update.

However, it does not send out a signal when a track has been moved.

This is because for some reason, it's done by the GUI TrackContainerView instead of the core TrackContainer.

This PR changes that by moving the core code to the core where it probably belongs, adding an appropriate trackMoved signal to TrackContainer, and connecting that to PatternClipView to update properly.

---------

Co-authored-by: Fawn <rubiefawn@gmail.com>
2025-12-03 16:29:12 -05:00
regulus79
94f3b9704a Add Beat Preview to PatternClipView (#7559)
This PR changes the way PatternClips are drawn in include a simple "beat preivew," where each note in any non-empty instrument tracks within the pattern are drawn as short little rectangles on the ClipView. SampleClips and AutomationClips within patterns are not currently supported.

The height of the note boxes changes depending on how many tracks there are in the pattern, and how many of them actually have notes (empty tracks are only drawn half as tall).

There is also some padding at the top and bottom along with a little bit of spacing between each note, both vertically and horizontally. This can be edited in the css, along with the note color.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: Fawn <rubiefawn@gmail.com>
2025-12-02 17:34:50 -05:00
Jan125
58a4a8a909 Add platform identifier to save files (#8116)
Adds `creatorplatform` and `creatorplatformtype` attributes to save files, which is useful for troubleshooting among other things.
2025-12-02 13:37:44 -07:00
Petar Katić
91517282c8 Fix missing icon in Slew Distortion help window (#8151) 2025-11-30 21:55:24 -05:00
regulus79
b01980d2fb Add Setting for Default Autoscroll State (#7851)
Previously, the autoscroll state of the song editor and piano roll (continuous, stepped, none) was not saved. This can be an issue for users who want to permanently set their autoscroll settings, without having to change them every time they start up LMMS.

This PR adds an option in the settings window to change the default autoscroll state.
2025-11-30 15:11:57 -05:00
Lost Robot
f0b3c2e251 Fix help menu crashes upon program close in Xpressive and Slew Distortion (#8150) 2025-11-30 11:08:30 -08:00
Lost Robot
f50b047684 Fix untoggleable buttons not updating models (#8144) 2025-11-28 19:55:13 -07:00
Sotonye Atemie
69e1db58a8 Fix mute/solo icons not matching initial mixer channel state
Correct the button initialization order so mixer channels show the proper mute and solo states when they first appear. This applies to channels loaded from a project and channels created during the session, ensuring the UI reflects the actual underlying state properly.
2025-11-28 20:33:53 -05:00
Fawn
bfa04c987d Centralize standard LMMS plugin logo (#8124)
* Centralize standard LMMS plugin logo

Previously, every single plugin would have its own copy of this image.
Now, these plugins pull it from the theme. I'm not sure it's valuable
for this to be themeable, but AFAIK it's the place all the other
non-plugin resources are stored, so that's where it goes for now.
2025-11-23 13:23:08 -05:00
regulus79
f093bde60c Fix Note Quantization Resetting Clip Length (#8131)
Fixes an issue where quantizing notes in a midi clip with auto-resize disabled would cause the length to be reset, in cases where there is only a single note in the clip. This was due to how quantization removes and re-adds each note, so for a moment, the clip would be empty, thus treated as a beat clip. Beat clips were mistakenly always automatically resized no matter whether auto-resize was enabled or not. This PR fixes that by only auto-resizing beat clips when they have auto-resize enabled.

Co-authored-by: Fawn <rubiefawn@gmail.com>

---------

Co-authored-by: Fawn <rubiefawn@gmail.com>
2025-11-23 12:34:41 -05:00
Fawn
eb41051bc5 Make arrow "stepper" buttons themeable and use SVG assets (#8123)
* SVG-ify arrow buttons

These buttons are used in the instrument window, Vestige, and VST
effects. Separate versions of the arrow icons are used for the classic
theme.

* Fix some unrelated SVG formatting and metadata

* Revert accidental change to classic border radius

* Add some XML stuff back to appease Github

LMMS renders these SVGs just fine, but apparently the removal of the
XML declaration completely breaks Github's ability to render the image,
so I am adding these back for the sake of those who want to actually
look at the diff on the website lmao

* Attempt to fix Github SVG previews again (`xmlns`)

* Fix crossover eq band mute button icon size

You may ask, "what does this have to do with the arrow buttons?" and you
would be right to assume this is unrelated. However, I'm already
touching the relevant lines of the stylesheet so I may as well sneak it
in there.

* Add missing metadata to fader_knob.svg

And fix mixed indentation in headphones.svg

* Add missing `xmlns` to fader_knob.svg

GRADIENTS!!!!!!!!!!!!

* Fix classic theme arrow buttons

The originals were right angle chevrons

* Remove unused getters
2025-11-21 01:26:00 -05:00
Fawn
31f86bc282 Use SVG asset for knife tool icon (#8128)
See lmms/lmms-artwork#23

Co-authored-by: Spekular <Spekular@users.noreply.github.com>
2025-11-19 19:14:39 -05:00
Fawn
dc2a461922 Fix microtuning warning text widening instruments (#7805)
The culprit was the little text warning under the instrument tuning view informing the user that MIDI-based instruments do not support the microtuner. The entire instrument window was expanding horizontally to accommodate this. This commit solves this by setting the width of the other tabs to be no wider than the instrument they belong to.
2025-11-13 13:01:32 -07:00
Tres Finocchiaro
db4523aa5d Make apprun-hooks POSIX compliant (#8121)
Remove bash-ishms, make apprun-hooks POSIX compliant per #8105
2025-11-11 13:00:10 -05:00
Dalton Messmer
478f5345dd Bump minimum Qt version to 5.15 (#8129) 2025-11-11 12:57:14 -05:00
Alex
c79d6af3ab Only show Piano Roll when editable (#6295)
- Display a message when a user attempts to open the piano roll in a project with no MIDI clips instead of opening a non-functional piano roll.
- Create a MIDI clip in the first instrument track when the piano roll is opened in an empty project.
2025-11-07 15:36:45 -07:00
Tres Finocchiaro
51529cefb1 Add Qt6 Support (#7339)
* Rebase against master

Co-authored-by: michaelgregorius <michael.gregorius.git@arcor.de>
Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>

* Fix Qt6 DMG on Apple (#7240)

- Fix linking issues with Qt Framework files
- Fix qmake detection

* Fixes after rebase

* Fix embed.cpp compilation

Fix implicit conversion from int when using QString.arg(...)

* Fix Qt6 signature change for nativeEventFilter (#7254)

* Adds win32EventFilter a wrapper for nativeEventFilter on Windows
* win32EventFilter is currently used to intercept top-level Window events (currently, to avoid VSTs setting transparency of the parent application)

* fix broken signal slot connections (#7274)

QComboBox activated() replaced with textActivated() since Qt 5.14

* Enabled VSTs on Qt 6 (#7273)

* enabled VST support for Qt 6 builds
* Note : Embedding on QT6 will be buggy on linux as a result of using qt embedding, which unfortunately is a qt bug which hasn't been resolved.

* Changed bar lines to follow snap size (#7034)

* Added lines in between bars
* Changed bar lines to follow snap size
* Changed default zoom and quantization value
* Added constants for line widths
* Added QSS configuration for new grid line colors
* Tied line widths to QSS properties
* Changed default quantization to 1/4
* Removed clear() from destructor model
* Removed destructor in ComboBoxModel.h
* Changed member set/get functions to pass by value
* Updated signal connection with newer syntax

* Fix compilation

* Fix MSVC builds

* fix nullptr deref in AudioFileProcessor (qt6 branch) (#7532)

* ensured mouse event != nullptr before deref

* separation of concerns: AFP WaveView updateCursor

extract check to pointerCloseToStartEndOrLoop()

* marked some function parameters as const

* Remove Core5Compat usage

* Fix bad merge

* Fixes after rebase

* Simplify QTX_WRAP_CPP call

* Remove comments that are obvious to a developer

* Whitespace

* Try using Qt 6 for MSVC CI

I chose Qt 6.5 because it's the last Qt LTS release with declared
support for Visual Studio 2019. Once we upgrade to Visual Studio 2022,
we could upgrade Qt as well.

* Fix MSVC build

Also fixes two memory leaks in MidiWinMM

* Fix GuiApplication on MSVC

* Fix interpolateInRgb

* Try building with patched Calf

* Fix submodule

* Fix OpulenZ build

* Try to fix zyn

* Fix comment

* Ty to fix zyn (again)

* Ty to fix RemotePluginBase

* Revert "Ty to fix RemotePluginBase"

This reverts commit 92dac44ffb11e19d1d5a21d9155369f017bd59e9.

* Update plugins/ZynAddSubFx/CMakeLists.txt

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

* Fix vertical & horizontal scroll wheel in SongEditor

* AppImage: Fix finding of Qt6 libs

* Fix implicit QString --> QFileInfo conversion

* Point submodule to lmms

* Fix multiple deprecation warnings

* Fix for Clang compiler

* Build with latest Qt LTS version now that we use MSVC 2022

* Update jurplel/install-qt-action to v4.3.0

* Bump minimum Qt6 version for MSVC

* Fix incorrect Qt version checks

Some comparisons were using ">" rather than ">="

* `QSize()` != `QSize(0, 0)`

* Fix more deprecation warnings

* Fix style

* Simplify Spectrum Analyzer mouse events

The Qt bug that used to be present appears to have been fixed, so the
workaround can be removed

* Minor changes

* Fix deprecated QCheckBox signal

* Fix setContent helper functions

* Remove QMultiMap usage from ControlLayout

* Remove SIGNAL and SLOT macros

* Revert TrackView.cpp changes

* Remove Q_DISABLE_MOVE usage since it does not seem to be available in Qt6

---------

Co-authored-by: michaelgregorius <michael.gregorius.git@arcor.de>
Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>
Co-authored-by: BoredGuy1 <66702733+BoredGuy1@users.noreply.github.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Lisa Magdalena Riedler <git@riedler.wien>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-11-03 11:58:15 -06:00
Jan125
fcb356df3d PathUtil: Serialization and Formatting (#8103)
PathUtil: Serialization and Formatting
* Serialize all operations to use / instead of platform specific paths.
* Formatting changes for consistency.
* Reorder functions, add serialization enforcement to the other two functions.
2025-10-31 12:06:34 -04:00
Fawn
0fe697c4e5 Remove fastMemCpy() from RemotePluginBase (#8114) 2025-10-29 16:32:29 -07:00
Fawn
6cec90cabb Use system cursors instead of embedded raster images where possible (#7838)
Given these changes, the knife tool now uses `Qt::SplitHCursor`, but `Qt::IBeamCursor` is also a a viable option. I am noting this should substantial concern arise over the appearance of `Qt::SplitHCursor` due to cursor themes, such as the default one applied to applications running under WSL.
2025-10-28 13:14:46 -06:00
Fawn
b1e6d180c7 Make portsmf a git submodule (#7755)
Instead of including the files directly in plugins/MidiImport/portsmf,
that path is now a git submodule (https://github.com/portsmf/portsmf).

Several other changes have been made to clean up MidiImport as well.
2025-10-24 16:24:46 -06:00
Sotonye Atemie
0c69da7233 Improve search behavior in the file browser (#7679) 2025-10-24 10:10:34 -04:00
Fawn
0fcd67f911 Use length-bounded string/memory functions (#7709)
Resolves #3949 by replacing all calls to sprintf() and strcpy() in first-party code with calls to snprintf() or some other reasonable alternative.
2025-10-23 13:58:32 -06:00
Sotonye Atemie
44a68b8b01 Fix audio resampling functionality (#7858)
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-10-22 08:34:07 -04:00
Tres Finocchiaro
38ceac80dd Remove custom winebuild task (#8077)
Remove custom winebuild task; leverage wine 10.14+ directly instead

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-10-21 11:19:52 -04:00
luzpaz
8c12e47b11 Fix several typos (#8090)
This cleans up typos in source comments and some user-facing strings.

Found via `codespell -q 3 -S "./plugins,./src/3rdparty,./data/locale,*.in,*.xpf" -L continous,currenty,globaly,inports,localy,nd,ot,sie,te,trough`
2025-10-20 22:20:01 -04:00
Petar Katić
872426bfc9 Added opening samples in SlicerT from the file browser (#8100)
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-10-20 16:07:47 -07:00
Dalton Messmer
4d10474d91 Update macOS runner image and XCode version (#8092) 2025-10-17 19:58:23 -04:00
Lost Robot
a809c03f87 Add SlewDistortion effect and oversampling support (#7641) 2025-10-13 12:18:34 -07:00
Tres Finocchiaro
807751dc4d AppImage: Un-pollute /usr/lib (#8053)
Refactor to un-pollute `$APP/usr/lib`
* Adds `usr/lib/suil-0` and `usr/lib/lmms/32` to `--deploy-deps-only` flags
* Simplifies libjack handling
* Removes outdated `LMMS_EXCLUDE_LADSPA` entry (carla no longer shares a parent folder with LADSPA plugins)
2025-10-06 11:03:16 -04:00
Dalton Messmer
db6fc2948c Fix null pointer deref when getting VST window size (#8051)
* Fix null pointer deref when getting VST window size
2025-09-28 00:25:10 -04:00
Dalton Messmer
912f4c2c50 Set minimum deployment target for macOS builds (#8004)
Set minimum deployment target for macOS builds
- Calculates MACOSX_DEPLOYMENT_TARGET based on qmake's minos value
- Echo's Lowest SDK supported for information purposes
---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2025-09-23 10:46:50 -04:00
Alex
2eea79bdd3 Glue all notes if none are selected (#8018) 2025-09-09 23:37:39 -04:00
crystalreef22
04b27eee50 Allow Tempo Sync Knobs and Bars to be logarithmic (#8058)
* Allow Tempo Sync Knobs to be logarithmic

* Allow Tempo Sync Bars to be logarithmic
2025-09-08 00:37:31 -04:00
Fastigium
fbac56fdcc Fix VST crashes on Linux (#7987)
Pass winebuild param to disable dynamicbase/aslr
Requires bleeding-edge wine version
See also https://gitlab.winehq.org/wine/wine/-/merge_requests/8786

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2025-08-27 14:03:46 -04:00
SameExpert
dec6a04574 OpulenZ: Fix compilation error (#8040)
This patch fixes the error: "invalid conversion from 'const unsigned char*' to 'unsigned char*'".
2025-08-18 04:05:37 -04:00
Fastigium
4aed2a8e5b Disable ASLR when building RemoteVstPlugin on Windows (#7976)
Disable ASLR when building RemoteVstPlugin executables on Windows in order to fix crashes when using certain VSTs

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-08-14 16:07:45 -04:00
regulus79
981e266613 Refactor Global Spacebar Play (#7926)
This PR simplifies #7762 by removing the editor-specific code from MainWindow and m_lastPlayMode from Song, and instead uses a static variable in Editor which keeps track of the last played editor.

This PR also removes the spacebar shortcut from MixerChannelView for changing the volume, as multiple users have noticed that it clashes with their intuition after getting used to the spacebar working everywhere else.
2025-08-14 10:08:04 -04:00
Monospace-V
0d6cbbdf5e Fix crash01, cello01, and e-organ01 sample lengths (#7948) 2025-08-11 00:44:07 -04:00
Alex
4dc7784331 PianoRoll: fix getKey and remove dead code (#8008)
- Fixes: when right clicking on a piano key close to the lower edge of the screen, "Mark semitone" will mark the wrong key because it uses the upper edge of the context menu as reference.
- Fixes: getKey() is off by 2 pixels
- Introduces: yCoordOfKey() which is the reverse of getKey()
- Removes: section of code that can never be reached

---------

Co-authored-by: Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com>
2025-08-09 15:37:15 -04:00
Michael Gregorius
ab050b88e5 Fix several problems (#8032)
## Fix problems with lifetime of `QByteArray`

Fix a problem with the lifetime of a `QByteArray` in
`attemptToReconnectOutput` and `attemptToReconnectInput`.

The method `constData` was called on a temporary which gets destroyed
before `targetName` and `sourceName` are used, thus leading to undefined
behavior.

## Fix index checks

Fix index checks in `attemptToReconnectOutput` and
`attemptToReconnectInput`.

The previous code would have allowed an index to be `size` of the
underlying vector which would access out-of-bounds memory.

## Braces for one-liner if statements

Add braces for one-liner if statements.
2025-08-07 12:12:18 +02:00
Michael Gregorius
88ed51edb9 Fix a segfault if JACK libs are missing (#8026)
Fix a segmentation fault that occurs if the JACK libraries are not
installed. In that case `jack_client_open` which is called through
`lib_weakjack` will return a `nullptr` for the client. Subsequent calls
to `jack_client_open` do not check for `nullptr` in the library so we
have to do this ourselves to prevent the segmentation fault. The check
is added to `AudioJack::setupWidget::getAudioPortNames`.

Extract the printing of the JACK status into the function
`printJackStatus` as its functionality is needed several times.

Print a warning and the status in `AudioJack::setupWidget::setupWidget`.

## Code review changes

Use `std::printf` and `std::fprintf`and print to `stderr` whenever fitting.

---------

Co-authored-by: Andrew Wiltshire <62200778+AW1534@users.noreply.github.com>
2025-08-06 18:12:56 +02:00
Dalton Messmer
dabfe6f95b Audio buffer view improvements (#8016)
- Add `SampleType` concept
- Make `channels()` static when possible
- Add `dataSizeBytes()` and `dataView()` to `InterleavedBufferView`
- Support conversions between `std::span<SampleFrame>` and `InterleavedBufferView<float, 2>`
- Support iteration over frames of `InterleavedBufferView`
- Add `subspan` method
- Add `AudioBufferView` concept

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-08-06 04:01:21 -04:00
Dalton Messmer
c86fe784c7 Remove the Gate knob from effects (#8011)
Major changes:
- Remove Gate knob from effects, effectively hard coding its value to zero
- Replace effect RMS calculations with a more efficient way of detecting silent buffers
- Only perform silent buffer detection when `ProcessStatus::ContinueIfNotQuiet` is returned from a plugin AND auto-quit is enabled

Minor changes:
- Remove gate from presets
- Remove gate from .mmp projects
- Move `Effect::processorCount()` to `LadspaEffect`
- Rename `Effect::checkGate` to `Effect::handleAutoQuit`
- Adjust silence threshold for better compatibility with old RMS calculations
- Remove some unnecessary methods from `Effect`
- Reset quiet buffer count in `stopRunning`
- Use positive name for auto-quit boolean
- Simplify `m_autoQuitEnabled` initialization
2025-07-22 17:01:48 -04:00
Johannes Lorenz
71ce49d7ba Remove lots of useless/misplaced includes (#7999)
Follow-Up of 7db3fa94a1 .

This was done by setting `CMAKE_C_INCLUDE_WHAT_YOU_USE` and
`CMAKE_CXX_INCLUDE_WHAT_YOU_USE` to (broken down into multiple lines here,
note, all below `FL/x.h` is not required for C):

```
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;
    -Xiwyu;--keep=*/OpulenZ/adplug/*;
    -Xiwyu;--keep=QPainterPath;
    -Xiwyu;--keep=QtTest
```

FAQ:

* Q: Does this speed-up a completely fresh compile?
* A: No, I measured it.

* Q: Does it speed up anything else?
* A: Yes. If you change one header, it can reduce the number of CPP files
     that your compiler needs to recompile, or your IDE has to re-scan.

* Q: What other reasons are for this PR?
* A: It's idiomatic to only include headers if you need them. Also, it will
     reduce output for those who want to use IWYU for new PRs.

Background:

This is just a remainder PR of what I planned. My original idea was to setup
a CI which warns you of useless includes (but not of all issues that IWYU
complains about). However, I could not see that this was favored on Discord.
A full IWYU CI also has the problem that it (possibly??) needs to compile
with `make -j 1`, which would make CI really slow.

However, for that plan, I had to fix the whole code base to be IWYU
compliant - which it now is.
2025-07-21 23:39:17 +02:00
regulus79
e79945ffc5 Remove m_resizable from Clips (#7954)
Minor refactor of `Clip` methods related to resizing
2025-07-21 09:39:14 -04:00
Michael Gregorius
997764a0dc Inputs and Outputs Selection for Jack Driver (#7919)
# GUI

## Present inputs/outputs in hierarchical menu

Present the available inputs and outputs in a hierarchical sorted menu
which shows clients with their ports.

The heavy lifting of creating the menu for the tool button is done in the
new method `buildMenu`.

It takes the input/output names in Jack's "Client name:Port name" format.
If an input/output name can be successfully split into the client name
and port name then a sub menu with the client name is created (if it was
not already created before) and the port name is added as an entry.

If the name cannot be split into exactly two components then it is simply
added to the top level menu as is.

Ports of the LMMS client are filtered out to prevent loops.

The menu starts with the client's sub menus in alphabetical order. Then
the top level entries are added in alphabetical order as well.

The callbacks for the `QAction` instances are implemented with lambdas
because MOC does not support nested classes like the setup widget is. For
now the used lambda only sets the text of the `QToolButton` as these are
used for persisting the configuration anyway.

## Disconnected state

Add the option to keep inputs/outputs disconnected.

The disconnected state is represented by the string "-" which is also
what is saved into the configuration in this case. For now the
representation in the GUI and of the save state is the same as it has the
advantage that no translation is necessary and thus not mapping between
display text and save state is necessary.

## Show technical output/input names

Show the technical output and input port names used by LMMS in the setup
dialog. Note: these are the names that are shown in tools like `qjackctl`
or `qpwgraph`.

This was proposed in a review. Personally I like the non-technical names
better but let's see what's accepted.

## Let the tool buttons use available space

Let the tool buttons stretch so that they look uniform and use all the
available space.

# Driver

## Reconnect inputs and outputs

Attempt to reconnect the inputs and outputs from the configuration during
startup of the Jack driver. Nothing will be done for inputs and outputs
that are not available at startup. Example: the users might have saved
some inputs when a device was available. The device is then disconnected
and LMMS restarted. The stored inputs cannot be used anymore. To give the
users the least surprise nothing is done.

`AudioJack::attemptToConnect` does the actual reconnection and also
prints some information for now.

`attemptToReconnectOutput` and `attemptToReconnectInput` delegate to
`attemptToConnect` with the right parameters.

# Technical details

## Generalized number of inputs/outputs

Generalize the number of inputs and outputs by using for loops. This
affects the number of widgets that are created and the amount of
configuration that is stored.

This change is a result of a code review discussion. In my opinion it
adds unnecessary complexity to something that should later be implemented
completely different anyway. It is for example now necessary to compute
the key names that are used during the saving of the configuration based
on the channel number. The commit exists so that its changes can be
discussed further. It might be reverted in one of the next commits.

## Collecting input and output names

Add `AudioJack::setupWidget::getAudioPortNames` which takes the type of
port and then collects all port names which match. Make
`getAudioOutputNames` and `getAudioInputNames` delegate to that method
with the appropriate type. This also hides the different terminologies a
bit.

## Separate Jack client in the GUI

The separate Jack client is necessary because the setup dialog does not
have any access to the actual driver. So a new client is created when the
dialog is opened and deleted when it is closed, i.e. when the dialog is
deleted itself.

## Repeated strings

Repeatedly used hard-coded strings are defined as static constant
variables in the anonymous namespace. This should prevent subtle mistakes
when working with the configuration values of the Jack driver.

## Saving the settings

`AudioJack::setupWidget::saveSettings` saves the selections that have
been made from the widgets right into the configuration.
2025-07-16 22:31:01 +02:00
Alex
344fdd5b1f Remove currentPatternChanged() that has no effect (#7989) 2025-07-15 09:17:51 +02:00
Sotonye Atemie
48f3a84206 Set the sample rate for MP3 exports (#7998)
Sets the MP3 export sample rate to that of the engine's rate.


Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-07-10 05:55:45 -04:00
Dalton Messmer
1641f5f95f Use C++20 in RemoteVstPlugin (#7916)
- Build RemoteVstPlugin in C++20 mode
- Avoids using std::wstring due to strange issues with it when built
with wineg++. See https://bugs.winehq.org/show_bug.cgi?id=58465
- Fix some memory leaks + minor cleanup of RemoteVstPlugin code
- Rename `F_OPEN_UTF8` to `fopenUtf8`
- Use C++20 in our `determine_version_from_source` CMake function
- Update ZynAddSubFX submodule
2025-07-10 02:08:42 -04:00
Michael Gregorius
4c3f8191af Remove Knob::setHtmlLabel (#7993)
* Remove Knob::setHtmlLabel

Remove the unused method `Knob::setHtmlLabel` and its associated members.
This removes some unnecessary complexity from the code.

* Public label methods

Make `Knob::setLabel` public. Add `Knob::getLabel` for completeness.

* Delegate in KnobControl::setText

Make `KnobControl::setText` delegate to the `Knob` instance now that `Knob::setLabel` is public again.
2025-07-07 20:16:24 -04:00
Abel Umenhoffer
a1da660741 Fix Carla breaking GUI on Wayland #7582 (#7966) 2025-07-06 21:08:31 -04:00
Michael Gregorius
5c7131aa45 Allow export of only the selected notes (#7991)
Users can now choose if they only want to export the selected notes when
exporting a MIDI clip as an `xpt` or `xptz` file in the piano roll. The
export file dialog now shows a checkbox with the label "Export only
selected notes".

## Technical details
Add the new public method `exportToXML` to `MidiClip`. Compared to
`saveSettings` it has an additional parameter `onlySelectedNotes` which
controls which notes are exported. The default is to export all notes.
The method `saveSettings` now simply delegates to `exportToXML` using the
default.

`PianoRollWindow::exportMidiClip` now adds a check box to the export
dialog which lets users select if they only want to export the selected
notes or all notes. The default is to export all notes. The method now
uses the new method `exportToXML` for the export and passes the state of
the check box into the method.
2025-07-06 08:42:54 +02:00
Michael Gregorius
05a5264870 Fix import of xpt and xptz files (#7986) (#7990)
Fix the import of `xpt` and `xptz` files by adding upgrade code to
`DataFile::type`. The new code maps the old textual representation
"pattern" to the enum `Type::MidiClip`.

Without the extra upgrade code the text "pattern" is mapped to
`Type::Unknown`. This then leads to problems at the end of
`DataFile::loadData` where the enum representation is mapped back to the
textual representation again to retrieve the root element from the
upgraded XML.

So without the upgrade it's:
* Map "pattern" to `Type::Unknown`
* Upgrade XML from "pattern" to "midiclip"
* `Type::Unknown` does not map to "midiclip" and fetching the root
  element fails.

With the upgrade it's:
* Map "pattern" to `Type::MidiClip`
* Upgrade XML from "pattern" to "midiclip"
* `Type::MidiClip` is mapped to "midiclip" and fetching the root element
  succeeds.
2025-07-05 19:03:05 +02:00
regulus79
00d5abc930 Recording logarithmic automation hotfix (#7621)
When you record an automation clip with a logarithmic knob (for example, a freq knob in the equalizer) the recorded values in the automation editor are correct.....

....But, for whatever reason, lmms tries to scale the recorded values back to linear when playing the automation, which causes the recorded frequency to be much lower.

This pr does not fix the underlying issue, but instead just scales the recorded values so that everything works.
2025-07-04 11:52:04 -04:00
regulus79
bbdfeff5e1 Add Playhead and Timeline to Pattern Editor (#7794)
Adds a visual indicator to show the pattern editor playing, along with a timeline widget to allow the user to skip forward/backward in a pattern.
2025-07-02 18:04:16 -04:00
Fawn
186beec156 Fix effect gate logic (#7971)
Reverts a mistake from #7696
2025-06-25 16:17:53 -04:00
Alex
346ee60cd2 Update clip length after clearing all notes (#7960)
When clearing notes from a long melody clip in pattern editor, it looks like the clip becomes short, but it actually remains the same length (despite empty), and that affects the length of the whole pattern. This PR fixes this issue.
2025-06-21 20:53:34 -04:00
Fawn
2806a31e4c Use vector assets for Dispersion plugin (#7773) 2025-06-15 20:23:52 -06:00
Alex
76dddd8c66 Don't undo zoom! (#7943)
Makes it so that editor zoom, automation tension, along with quantization, note length, and all other combo boxes are not added to the undo history.

---------

Co-authored-by: szeli1 <143485814+szeli1@users.noreply.github.com>
2025-06-15 14:41:23 -04:00
regulus79
45ab56dd71 Fix Auto Resize when Dragging Sample Files onto Sample Clips (#7952)
Changes things so that only sample clips with auto-resize enabled will automatically resize to the sample length when dragging-dropping a sample from the sidebar onto a sample clip. Non-auto-resize clips will keep their original length, but still update so that their start time offset is 0.
2025-06-13 21:30:11 -04:00
Alex
a505f570e9 Fix TextFloat flickering (#7942)
Fixes TextFloat flickering which occurs when scrolling on knobs, faders, and note volume in the piano roll.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-06-10 19:04:45 -04:00
Dalton Messmer
53d30d8b91 Audio buffer views (#7945)
Adds two non-owning views for audio buffers: `InterleavedBufferView` and `PlanarBufferView`.

The channel count can be specified at either compile-time or runtime. Specifying at compile-time provides both performance and space optimizations. The way this works is the same as `std::span` except this uses the new `DynamicChannelCount` constant rather than `std::dynamic_extent`.
2025-06-08 20:15:16 -04:00
Petar Katić
0dfd2d5597 Init commit (#7940)
Fixes a bug where the "Init" button in LOMM visually behaves as a toggle button instead of a push button.
2025-06-07 20:09:54 -06:00
Sotonye Atemie
3a18276136 Use complete basename in PathUtil::cleanName instead of basename (#7934)
Use `completeBaseName()` in `PathUtill::cleanName` instead of the `baseName()`. Needed for handling filenames with periods correctly.
2025-06-06 16:55:26 -04:00
Bimal Poudel
889a2f8aac Fix quick access letter conflict with Export and Export Tracks (#7927)
Update shortcut `T` for exporting Tracks, so that `x` is default export.

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
Co-authored-by: Andrew Wiltshire <62200778+AW1534@users.noreply.github.com>
2025-06-05 08:32:38 -04:00
regulus79
ce3439b079 Fix Piano Roll key events from leaking to other instrument windows (#7915) 2025-06-04 21:26:41 -04:00
regulus79
8acc4ed3ae Fix Position Line gradient appearing in all editors no matter which one is playing (#7882) 2025-06-03 23:10:13 -04:00
Michael Gregorius
2c1d402255 Flanger: connect "Invert" to model (#7929)
Connect the Flanger's "Invert" check box to the model.

Before this commit it was a placebo effect. ;)
2025-06-03 16:51:30 -04:00
regulus79
25e8b640d8 Update Sample Length when Loading New Sample via Double-Click (#7898)
This PR makes it so that when you double-click on a sample clip and select a new sample, it will automatically update the length of the clip, as long as the clip has auto-resize enabled.
2025-06-02 00:42:02 -04:00
Andrew Wiltshire
2747b402a0 Rename some include guards (#7924)
---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-06-01 12:19:34 -04:00
Andrew Wiltshire
fd1a4c1b6e Move FileRevealer into the lmms::gui namespace (#7923) 2025-06-01 09:46:00 -04:00
Sotonye Atemie
2d2c26d501 Remove m_inBuf from AudioJack (#7922)
Extra variable in `AudioJack` that can be removed, as `m_inputFrameBuffer` is currently being used instead.
2025-06-01 04:45:43 -04:00
Andrew Wiltshire
3f8b86a559 Ignore "Keep plugin windows on top" setting when on wayland (#7901)
Fix a crash that occurs when running under Wayland and when loading a VST
plugin with the option "Keep plugin windows on top when not embedded"
enabled.
2025-05-31 19:58:08 +02:00
mmeeaallyynn
352ef8c25e Sample Track Recording with Jack backend (#7567)
Enable the `AudioJack` to take recorded input and push it to the `AudioEngine`. This adds functionality for `AudioJack` which already exists for `AudioSdl` and `AudioPortAudio`. Note that sample track recording in the LMMS core is not completed before #7786 .

This PR also removes the reading and saving of the channel number configuration in several places as it will default to `DEFAULT_CHANNELS` all the time anyway.

Co-authored-by: Johannes Lorenz <j.git@lorenz-ho.me>
Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
2025-05-31 12:49:14 +02:00
Michael Gregorius
b6d6509068 Individual knob labels rendered using the widget's font size (#7525)
Adjust the `Knob` class so that it defaults to taking the font size of
the knob's font into account when rendering its label. This allows to
use labels of different sizes for different knobs. Previously all knob
labels throughout the whole application were rendered with the same fixed
font size. Hence it was not possible to adjust the label size for a
single knob because this would have affected all other knobs as well.

The new implementation also allows the knobs to pick up CSS rules.

To be able to control the knob behavior two new constructors have been
added to the `Knob` class. Both constructors are concerned with creating
knobs with labels and therefore they directly take the label text as a
parameter. This removes numerous explicit calls to `setLabel` in the
code.

There is only one constructor that allows to switch between the new
behavior of taking the widget's font size into account and the old legacy
behavior of always rendering with the same fixed font size of
`SMALL_FONT_SIZE`. The parameter was modelled as an enum to make it
easier to find the remaining knob instances that use the legacy behavior.
This makes it easier to find them in case they should be removed as well.
In that case the string `LegacyFixedFontSize` can be searched.

The other new constructor allows to directly set the knob's (and
therefore the label's) font size to a pixel value.

Corresponding constructors have been added to `TempoSyncKnob`. The
constructors of `KnobControl` and `CustomTextKnob` have been adjusted to
take advantage of the new constructors. An usused constructor was removed
in `CustomTextKnob`.

The method `Knob::setLabel` has been made protected because labels should
now be set through the new constructors.

A new property called `m_fixedFontSizeLabelRendering` was added to the
`Knob` class. It controls how the labels are rendered. Fixed font size
legacy rendering can be activated by calling the protected method
`setFixedFontSizeLabelRendering`. The current setting can be queried via
`fixedFontSizeLabelRendering`.

## Changes in the plugins

Some plugins have been switched to using layouts to organize their
widgets so that they can accommodate for knobs with label sizes set by
the application font.

The fixed font size (legacy) rendering mode is still used in the
following places:
* EnvelopeAndLfoView
* InstrumentSoundShapingView
* InstrumentFunctionViews
* EffectView
* InstrumentTrackView
* SampleTrackView
* Delay plugin
* Carla plugin


# individual commit messages

What follows are the individual commit messages of the commits that have been squashed into one commit. They might help in case of more detailed investigations of how things came to be.

* Knob with correct label rendering

Enable the knob to render the label correctly at arbitrary sizes if it's configured to do so. Otherwise it will render like before. The used mode is determined when a label is set for the knob because as long as the label is not set a knob does not have one anyway.

The painting code now always renders the label with the font that's set for the widget.

The are now two methods to set the label text. The new method `setLabelLegacy` renders the label as before albeit in a slightly adjusted implementation. It now sets the widget font to a fixed pixel size font and then calculates the new widget size as before, i.e. not really taking the size of the font into account. This might lead to overlaps if the font of the knob is large.

The method `setLabel` now has an additional (temporary) parameter called `legacyMode`. It is by default set to `true` so that all knobs still render like they did before. This is implemented by delegating to `setLabelLegacy` if it's set to `true`. Otherwise the method calculates the new size of the widget by taking the pixmap and the label with the current font into account.

Please note that as of now you must set the knob font before calling any of the methods that sets the label. This is because the new size is only calculated via these code paths. However, this is already much better than only being able to use one hard-coded label size for all knobs.

* Switch from `setLabel` to `setLabelLegacy`

Switch all callers of `setLabel` to `setLabelLegacy` so that it becomes
obvious in which places the old knob implementation is used.

* Remove parameter `legacyMode` from `setLabel`

Remove the parameter `legacyMode` from `setLabel`. Add the member
`m_legacyMode` as it is needed in `Knob::changeEvent` so that we do not
switch the behavior when the knob is enabled/disabled.

* Extract methods

Extract `setLegacyMode` and `updateFixedSize`. Also add the getter `legacyMode`.

* Introduce legacy knob builders

Introduce legacy knob builders and apply them to the plugins. There are three new methods which encapsulate how to create a corresponding legacy knob:
* `Knob::buildLegacyKnob`
* `CustomTextKnob::buildLegacyKnob`
* `TempoSyncKnob::buildLegacyKnob`

These methods set the knob they build to legacy mode and also set a label in legacy mode. The idea is to concentrate the relevant legacy code in these methods. They will later also be useful to quickly find all the places in the application where legacy knobs are used.

The three methods are applied to the plugins directory. Most plugins use the build methods to build their knobs which also enables the removal of the explicit calls to `setLabelLegacy` from their code.

For some plugins their implementations were adjusted so that they can deal with showing the labels in the applicaiton font, i.e. in the font size of the widget their are contained in. Most of the times this involved removing the fixed size and putting the elements in a layout (while also removing move calls). The following LMMS plugins use the application font now and are thus better readable:
* Amplifier
* BassBooster
* Dispersion
* Flanger
* Peak Controller
* ReverbSC
* StereoEnhancer Effect

The Vectorscope now shows the "Persist." label in the same size as the label of the check boxes.

Setting an empty label was removed for Lb302.

* Legacy knob builders in GUI

Apply the legacy knob builders in the GUI components. Most components use the legacy knobs until they can be redesigned:
* Effect view ("W/D", "DECAY", "GATE")
* LFO Controller
* Instrument window

Everything related to the instrument window is for now kept to use the legacy knobs and should be adjusted at a later point to be more flexible:
* Envelope and LFO
* Functions
* Sound Shaping

The Instrument and sample track both use the legacy knobs for the "VOL" and "PAN" knobs. This might be adjusted later.

The following components now render the labels of their knobs with the application font size:
* MIDI CC Rack
* The class `LadspaControlView`, which is not in used anymore

Some vertical spacing was added to the MIDI CC Rack for slightly improved separation of the elements. The knobs are center aligned in the layout so that the transition between element under and over "CC 100" is cleaner. Setting the models in an explicit loop was removed and is now done when the knobs are created.

## Technical details
Extend `Knob::buildLegacyKnob` with the option to also set the name of the knob. This is needed for some changes in this PR.

The method `KnobControl::setText` now needs to distinguish between legacy mode and non-legacy mode.

* Remove `Knob::setLabelLegacy`

Remove `Knob::setLabelLegacy`. Instead make sure that the `Knob` updates its size in the following situations:
* The label is set.
* The font changes.
* Legacy mode is set or unset (already implemented).

The handling of font changes has been added to `Knob::changeEvent`. The update in case of a changed label is added to `Knob::setLabel`.

Every client that called `setLabelLegacy` now also sets the legacy font in size `SMALL_FONT_SIZE` as this was previously done in `setLabelLegacy`. The label is set via `setLabel` now. Both actions should result in an up-to-date size.

The method `KnobControl::setText` now only sets the label via `setLabel`, assuming that the wrapped knob was already configured correctly to either be a legacy knob or not.

* Use descent to calculate base line

Use the descent of the font to calculate the distance of the base line from the bottom of the knob widget if we are not in legacy mode. In legacy mode we still assume the descent to have a value of 2, i.e. the base line will always have a distance of 2 from the bottom of the knob widget regardless of the used font.

Also refactor the code a bit to make it more manageable.

* Extract `Knob::drawLabel`

Extract the method `Knob::drawLabel` which draws the label. It is called from `paintEvent`.

* Use non-legacy knobs for instrument and sample track

Use non-legacy knobs for the "VOL" and "PAN" knobs of the instrument and sample track. This gives a bit more separation between the knob and the label but to make this work the font size had to be decreased by one pixel.

* Introduce `buildKnobWithSmallPixelFont`

Introduce the builder method `buildKnobWithSmallPixelFont` in `Knob` and `TempoSyncKnob`. It creates a non-legacy knob with a small pixel sized font, i.e. it still uses the small font but with a corrected size computation and corrected space between the knob and the label. It is mostly used in places with manual layouts where there's enough space to have the bit of extra space between the knob and the label.

The following plugins use these knobs:
* Bitcrush
* Crossover EQ
* Dual Filter
* Dynamics Processor
* Multitap Echo
* Spectrum analyzer
* Mallets
* Waveshaper
* ZynAddSubFx

The "IN" and "OUT" label of the Bitcrush plugin use the default fixed font size now because the plugin uses a pixel based layout. Using the point based application font looked off.

They are also used in the following component:
* Effect view, i.e. the "W/D", "DECAY", "GATE" knobs of an effect
* LFO Controller

* Non-legacy knobs for VSTs

Use non-legacy knobs with small pixel fonts for the parameter lists of VST instruments and effects.

This is accomplished by renaming `CustomTextKnob::buildLegacyKnob` to `buildKnobWithSmallPixelFont` and removing the call to `setLegacyMode`.

* Fix styled knobs

Fix the handling of styled knobs which are created in non-legacy mode. Styled knobs do not use pixmaps and have no labels. Their size is set from the outside and they are painted within these limits. Hence we should not compute a new size from a pixmap and/or label in `Knob::updateFixedSize`.

This fixes the following plugins:
* FreeBoy
* Kicker
* Monstro
* Nescaline
* Opulenz
* Organic
* Sf2 Player
* sfxr
* SID
* SlicerT
* Triple
* Watsyn
* Xpressive

The functionality broke with commit defa8c0180e.

An alternative would have been to check for a styled knob in the contructor or `initUI` method and to set the legacy flag for these.

The best solution would likely be to create an own class for styled knobs and to pull that functionality out of `Knob` because they somewhat clash in their handling.

* Code review changes

Parameter whitespaces in the builder methods of `Knob`.

Use `adjustedToPixelSize` in `InstrumentTrackView` and `SampleTrackView`.

* Code review changes

Make the code that computes the new fixed size in legacy more readable
even if it is just legacy code that's was not touched. Add some code
documentation.

Other cosmetic changes:
* Whitespace adjustments
* Remove unused parameter in `paintEvent`
* Rename `knob_num` to `knobNum`

* Add documentation for legacy mode

Add some documentation which explains what the effects of legacy mode
are.

* Code review

Remove unnecessary dereference.

Also remove unncessary code repetition by introducing
`currentParamModel`.

* Decrease the label size of some knobs

Decrease the size of the following knob labels to 8 pixels:
* "VOL" and "PAN" in the instrument and sample track views
* "W/D", "DECAY" and "GATE" in the effect view

Technically this is accomplished by introducing
`Knob::buildKnobWithFixedPixelFont` and
`TempoSyncKnob::buildKnobWithFixedPixelFont`.

Both versions of `buildKnobWithSmallPixelFont` now also delegate to
the new methods.

* Adjustments to CrossoverEQControlDialog

Commit the adjustments that were done to `CrossoverEQControlDialog` which I had forgotten to add after fixing the merge.

* Fix formatting of CrossoverEQControlDialog

Fix the formatting of `CrossoverEQControlDialog` which got messed up after copying the code from the current version on GitHub.

* Code review changes

Use `std::max` instead of `qMax`. Remove some unnecessary whitespace.

* Protected legacy mode methods

Make `legacyMode` and `setLegacyMode` protected to ensure that legacy knobs can only be built using the factory method `buildLegacyKnob`. In the long term legacy mode should be removed.

* Code review: remove indexed access

The original request in the code review was to use `size_t` instead of
`uint32_t` in the for-loop. However it is possible to completely remove
the indexed access and to turn it into a simple iterated for-loop.

Also remove code repetition in the calculation of the maximum knob width
of the group. Use std::max instead of manual management.

* Fix u_int16_t to uint16_t

This should hopefully fix the WIndows builds.

* Fix AudioFileProcessor knobs

Fix a problem with the `AudioFileProcessorWaveView::knob` which is caused
by the fact the this knob uses the pixmap based knob type `Bright26`
without a label. Most other knobs that inherit from `Knob` set their knob
type to `Styled` which means that no pixmap is used to render the knob.

In the specific case the knob instance is created and the contructor
runs. In the constructor the AFP knob is set to a fixed size of (37,47).
However, at a later point the method `Knob::changeEvent` is triggered by
Qt due to a font change. This in turn calls `Knob::updateFixedSize` which
then recomputes the fixed size and effectively changes the width of the
knob to the width of the pixmap which is 27. Because the knob previously
was rendered centered with a width of 37 this means that the knob is now
effectively shifted by five pixels to the left.

This commit counters this effect by moving the affected AFP knobs five
pixels to the right. A visual difference between the fixed version and
the current master showed no differences. So this should fix the problem.

Because setting the knob to a fixed size of (37,47) does not have any
lasting effect anyway the code is removed from the constructor of the AFP
knob.

* Use legacy knobs in EffectView

* Legacy knobs for instrument & sample

Use legacy knobs for the instrument and sample track view ("VOL", "PAN").

* Add documentation to Knob builder methods

Add some documentation to the `Knob` builder methods. Mark `buildLegacyKnob` as deprecated and note that it should not be used in new code.

* Ensure legancy rendering for legacy knobs

Ensure that legacy knobs are always rendered at a size of 12 pixels,
i.e. `SMALL_FONT_SIZE`.

The previous implementation used the font metrics of the knob's current
font to compute the new fixed size and to render the label. It assumed
that the knob was created using `Knob::buildLegacyKnob` and that
therefore the font is set to 12 pixels. However, this meant that legacy
knobs can still be affected by style sheet settings. The following CSS
rule for example resulted in legacy knobs with a larger font size:
```
* { font-size: 18px; }
```

The fix is to use a font with a size of `SMALL_FONT_SIZE` when
calculating the fixed size of the `Knob` widget and when rendering it if
we are in legacy mode. This ensures that a legacy knob is unaffected by
CSS rules.

The non-legacy knob still uses the widget's font size and therefore it is
affected by CSS rules. However, this is a feature and not a bug because
when for example using a rule like the one above the knob does exactly
what it's asked to do.

* Remove unused constructor

Remove an unused constructor from CustomTextKnob

* Remove Knob::buildKnobWithSmallPixelFont

Remove the builder method `Knob::buildKnobWithSmallPixelFont` and replace
it with an equivalent new contstructor which takes the same arguments as
the build method.

* Remove Knob::buildKnobWithFixedPixelFont

Remove `Knob::buildKnobWithFixedPixelFont` as it is not used anymore.
Previously it was delegated to by the now removed method
`Knob::buildKnobWithSmallPixelFont`.

* Constructor for knobs with pixel size labels

Remove `TempoSyncKnob::TempoSyncKnob` and add an equivalent constructor.

Make `buildKnobWithSmallPixelFont` use the new constructor.

* Remove TempoSyncKnob::buildKnobWithSmallPixelFont

Remove `TempoSyncKnob::buildKnobWithSmallPixelFont` and make clients use
the new constructor.

* Remove CustomTextKnob::buildKnobWithSmallPixelFont

Remove `CustomTextKnob::buildKnobWithSmallPixelFont` and extend the
constructor so that it also takes a label. Previously all constructions
went through the build method and now all constructions use the extended
constructor.

* Knob constructors whichKnob constructors which take labels

Add constructors for `Knob` and `TempoSyncKnob` which also take the label
text. Make setLabel protected as most knobs should know their labels at
construction time.

This prevents "chatty" code like the following example:
```
Knob* knob = new Knob(KnobType::Bright26, this);
knob->setLabel("My label");
```

This now becomes a simple a one-liner:
```
Knob* knob = new Knob(KnobType::Bright26, "My label", this);
```

The constructor of `KnobControl` also had to be extended with the label
text because it cannot access the setLabel of the Knob that it manages.
However, it can pass the text during construction. Its implementation of
the virtual method `Control::setText` becomes empty due to this. The
`KnobControl` is currently only used in `Lv2ViewProc::Lv2ViewProc`. Here
the `KnobControl` is created by passing the port name into the
constructor. However, the virtual method `setText` is still called in
line 91 for all other implementations.

Add documentation for the constructors.

* Remove Knob::buildLegacyKnob

Remove `Knob::buildLegacyKnob` by extending the very similar constructor
with an enum that indicates whether the constructed `Knob` should be in
legacy mode or not. The default is to build a non-legacy `Knob`.

Wherever `Knob::buildLegacyKnob` was called the constructor is now called
with `Knob::Mode::Legacy` as the parameter. In some places where the
onject name is set `Knob::Mode::NonLegacy` has to be added explicitly.

* Remove TempoSyncKnob::buildLegacyKnob

Remove `TempoSyncKnob::buildLegacyKnob` by extending the very similar
constructor with an enum that indicates whether the constructed
`TempoSyncKnob` should be in legacy mode or not. The default is to
build a non-legacy `TempoSyncKnob`.

Wherever `TempoSyncKnob::buildLegacyKnob` was called the constructor is
now called with `Knob::Mode::Legacy` as the parameter.

* Vertical spacing for Peak Controller

Add a vertical spacing of 10 pixel between the knobs of the Peak Controller.

* Peak Controller: use default margins

Remove the specific call to `setContentsMargins` from the Peak Controller so that the main layout uses Qt's default margins.

Also remove the spacing again.

* Rename the enum `Knob::Mode`

Rename the enum `Knob::Mode` and its values so that they better describe
what they influence.

`Knob::Mode` is renamed to `Knob::LabelRendering` to indicate that its
value affects the label rendering.

The value `NonLegacy` is now called `WidgetFont` to indicate that the
knob uses the font settings of the widget when rendering the label.

The value `Legacy` is now called `LegacyFixedFontSize` to indicate that
it's a legacy behavior which uses a fixed font size that does not adhere
to the font size that's set for the widget's font.

Adjust all callers accordingly.

* Add TempoSyncKnob documentation

Document the constructor of `TempoSyncKnob` that can be used to set the
label rendering to lecacy mode.

* Name adjustments and parameter removal

Rename `m_legacyMode` to `m_fixedFontSizeLabelRendering`.

Rename the method `legacyMode` to `fixedFontSizeLabelRendering`.

Rename `setLegacyMode` to `setFixedFontSizeLabelRendering`. Also remove
the boolean parameter from the method as it was only called with `true`
anyway.
2025-05-29 19:35:48 +02:00
regulus79
7e02795f47 Don't copy DetuningHelper in Note copy constructor (#7888)
Reworks how note detuning copying works so as not to perform a clip duplication and allocation by default in the constructors

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-05-28 19:28:13 -04:00
Dalton Messmer
cb84fce599 Upgrade to Windows 2022 / Visual Studio 2022 (#7897)
Upgrade to Windows 2022 build runner and Visual Studio 2022 for MSVC builds.

Continue installing Qt 5.15.2 with the Visual Studio 2019 option since it doesn't provide a VS 2022 option.
2025-05-20 12:04:46 -04:00
regulus79
6bde3fb492 Fix Crash when Reversing Empty MIDI Clip (#7893) 2025-05-15 22:45:17 -04:00
Petar Katić
e50f312818 Add option to clear all notes in SlicerT (#7850) 2025-05-05 19:03:53 -04:00
regulus79
61736a97b6 Ensure clips have auto-resizing enabled by default (#7874)
A follow up to #7477, which ensures clips have auto-resizing enabled by default. This is needed because auto-resizing was the default behavior, but the code tried to use this newly added attribute with a default of 0 (i.e., auto resizing is not enabled).
2025-05-04 16:42:43 -04:00
regulus79
06d897bc4d Fix crash when playing Pattern Editor without Pattern Track (#7862)
Fixes a crash that occurs when attempting to play within the Pattern Editor with no Pattern Track created.

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-05-04 15:59:16 -04:00
regulus79
1c62638696 Fix issue with Mixer key events and Track Label Button focus (#7870)
A follow up to #7762 to fix various issues involving key events and focus grabbing problems.
2025-05-04 15:50:33 -04:00
cyberrumor
41093efcbe Revert "Fix PeakController attack/decay (#7566)" (#7871)
Prior to commit b5de1d50e, audible zipper artifacts were present when
using the PeakController on a bus to control the volume of another bus
for sidechain compression. The bus that had its volume reduced was the
one which produced audible artifacts.

Commit b5de1d50e introduced LERP to PeakController to smooth out its
signal, which eliminated the zipper artifacts. However, this had the
side effect of increased latency even when both attack and decay
settings were set to zero.

Until a more robust solution is implemented, reverting this change
eliminates the latency by eliminating the lerp, but reintroduces audible
zipper artifacts.
2025-05-02 11:04:47 -04:00
Tres Finocchiaro
928b72ab36 Add Windows arm64 builds (#7848)
* Add Windows arm64 builds
2025-04-30 15:26:35 -04:00
regulus79
679f9b848e Add splitting (and resizing) to all types of clips (#7477)
Allow for splitting and resizing all types of clips (automation, MIDI, sample, pattern, etc) using the knife tool in the Song Editor.

---------

Co-authored-by: szeli1 <143485814+szeli1@users.noreply.github.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-04-29 17:56:13 -04:00
Michael Gregorius
c91c81eee7 Update src/3rdparty/qt5-x11embed to latest version (#7825)
Update the submodule https://github.com/Lukas-W/qt5-x11embed.git to commit 499d737c8e8.

This is done to enable LMMS to build with CMake 4 and newer.
2025-04-28 19:21:20 +02:00
Andrew Wiltshire
d403a54140 Add option to favorite items in the file browser (#7753)
Added the ability to favorite items. This gets added to its own tab named "My Favorites".

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-04-27 21:34:37 -04:00
regulus79
510fbf6ffc Global Spacebar Play (#7762)
This PR refactors how the spacebar is handled by the editors and the MainWindow to allow it to play/stop (Shift+Space for play/pause) the last played editor, no matter if it is in focus or not.

---------

Co-authored-by: Fawn <rubiefawn@gmail.com>
Co-authored-by: Sotonye Atemie <satemiej@gmail.com>
2025-04-26 18:26:26 -04:00
Petar Katić
8b5297f914 Zyn filter FREQ brought back to 64, fix lowpass issues (#7844) 2025-04-22 07:06:06 +02:00
regulus79
32c427eab4 Add Midi Reversing (#7606)
Adds the ability to reverse the selected midi notes in the PianoRoll.

The tool is located under the wrench icon in the PianoRoll and can also be triggered with Shift-R.

---------

Co-authored-by: szeli1 <143485814+szeli1@users.noreply.github.com>
2025-04-19 15:40:21 -04:00
regulus79
cb8badc0bb Fix Clip Creation Quantization in Song Editor (#7763)
Previously, clicking on a track or dragging in a sample would always create a clip on the closest/previous bar, no matter what the Song Editor's snap size was. This fixes that issue by using the Song Editor's quantization when placing new clips, so for example if the snap size is 1/4 bar, the clip will be added at the closest/previous 1/4 bar mark.
2025-04-19 15:08:15 -04:00
TgeorgeT
d06c5941f2 Fix memory leak in RemoteVstPlugin::loadPresetFile (#7827) 2025-04-19 11:08:23 -04:00
Cas Pascal
64053342d8 [Follow up] Improve performance when rendering sample waveforms (#7695)
A follow up to 786088baec to fix rendering issues and crashes.

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-04-15 23:40:16 -04:00
Fawn
795d513c7f Add clangd cache to .gitignore (#7846)
* Add /.cache/ to .gitignore

Normally clangd's .cache exists in /build/, which is already in the .gitignore, but if cmake is run in the repository root instead of /build/ the cache is in turn generated in the repository root.

* Also add compile_commands.json to .gitignore
2025-04-15 11:52:43 -04:00
Andrew Wiltshire
c2912b89ee Auto assign MIDI device when track is created (#7835)
Newly created MIDI tracks were not automatically assigned to the desired MIDI device when the option to do so was specified in settings. This commit fixes that.
2025-04-12 23:42:15 -04:00
Tres Finocchiaro
3f0044dc7f Handle SIGINT (#7698)
Handle SIGINT
Allows Ctrl + C to close LMMS for unix-like environments that 
---------

Co-authored-by: Fawn Sannar <rubiefawn@gmail.com>
2025-04-11 10:25:27 -04:00
Fawn
17215343e4 Upgrade Stereo Matrix plugin assets to SVG (#7803)
Upgrade Stereo Matrix plugin assets to SVG
* Use QHBoxLayout for StereoMatrix
2025-04-05 22:45:40 -04:00
qnebra
2482842daa Vestige and VST Effect assets replacement (#7791)
Replace VST instrument and effect assets with SVG
2025-04-02 15:16:59 -04:00
SpomJ
9cb3ae7de1 Add build flags to output of lmms --version (#7780) 2025-03-31 10:36:29 -04:00
Dalton Messmer
16296c1dfb Fix Vestige file browser filter (#7816)
- Remove pointless *.exe option
- Add an "All VST files" option on Linux when there is both LinuxVST and Wine VST support
- Remove *.dll option from Linux builds without Wine VST support (i.e. LinuxVST-only builds)
2025-03-26 21:31:38 -04:00
Fawn
8afe95aeaf Fix track operations button alignment, size, and style (#7779)
Make the track ops button consistently sized and style it and the solo & mute buttons using CSS instead of SVG assets
2025-03-25 19:02:08 -06:00
Sotonye Atemie
1d5f2c0050 Add ability to change sample rate in the settings menu (#7719)
Add a slider in the audio settings menu to allow users to select a few standard sample rates, those being 44100, 48000, 88200, 96000, and 192000.
2025-03-25 16:27:00 -04:00
Tres Finocchiaro
498315ef48 Make buttons automatable on macOS (#7813) 2025-03-24 13:34:28 -04:00
Rossmaxx
7367750823 [Code Cleanup] Cleaned up some header files and move a bit of debugging logic to cmake (#7677)
* Renamed lmms_basics.h to LmmsTypes.h and scoped it down for that purpose.

* Shifted the LMMS_STRINGIFY macro to it's own header.

* Removed the debug.h header file and use cmake to handle the macro logic.

* Remove some unused headers and include directives
2025-03-24 19:07:46 +05:30
regulus79
db9ccbeb56 Add Strum Tool to Piano Roll (#7725)
Adds a complex strum tool to the Piano Roll, allowing the user to take a selection of chords, and drag around the notes to shape the strum exactly how they want it.

---------

Co-authored-by: szeli1 <143485814+szeli1@users.noreply.github.com>
Co-authored-by: Sotonye Atemie <satemiej@gmail.com>
2025-03-22 05:54:40 -04:00
Fawn
91233e6a73 Enable CMAKE_EXPORT_COMPILE_COMMANDS (#7804)
This setting instructs CMake to generate compile_commands.json for use
with clangd.
2025-03-21 23:32:49 -04:00
Fawn
6af3ab5875 Fix missing update to mixer channel name when created (#7795)
Fixes a regression from 07baf9e27a, in
which a channel that was created through a tracks "Assign track to new
mixer channel" context menu would display an incorrect name until it was
renamed by a user.
2025-03-21 06:07:15 -04:00
StakeoutPunch
23efcf456b Update Classic Theme (#7799)
Created and replaced missing/mismatched assets, fixed mixer send arrows causing mixer height to be wrong, tweaked CSS stylesheet to fix active mixer channel being black
2025-03-20 12:20:03 -04:00
Fawn
953f6b7351 Rework Crossover EQ plugin GUI (#7781)
* Switches to SVG assets
* Fixes layout issues
* Refactors redundant code

---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2025-03-20 01:30:29 -04:00
regulus79
b9cb343d8b Revert "Change tooltip window flags (#7613)" (#7761)
This reverts commit b21a2696a9.
2025-03-19 21:29:44 -04:00
Fawn
f09d56cdd0 Upgrade Dual Filter plugin PNG assets to SVG (#7774) 2025-03-19 15:16:05 -04:00
Fawn
fc29682b90 Upgrade Bitcrusher plugin PNG assets with SVG (#7772) 2025-03-19 15:12:00 -04:00
cyberrumor
fd32158861 Fix crash when switching opened projects (#7797)
* Fix crash when switching opened projects #7793

When the DAW is already running with an open project and you attempt to
open another project via File > Open, a segfault used to occur.

The crash seems to have been caused by model()->value(), which was
called in Fader::getModelValueAsDbString(). The model() function
looked like it should return a pointer to an AutomatableModel.

I suspect that when a model was dropped in favor of loading models for
a new project, the AutomatableModel pointer became a null pointer.

Add a check to the AutomatableModel pointer so getModelValueAsDbString
returns early (before accessing member functions) if the pointer is
null. This fixes the crash.
2025-03-19 13:23:53 -04:00
Fawn
5960a4e792 Upgrade Peak Controller plugin PNG assets to SVG (#7776) 2025-03-18 23:28:22 -04:00
Fawn
0b709dc1af Upgrade Flanger plugin PNG assets to SVG (#7775) 2025-03-18 23:15:26 -04:00
Fawn
953c6843cd Upgrade ReverbSC plugin PNG assets to SVG (#7777) 2025-03-18 23:07:02 -04:00
Fawn
10c428b7a0 Upgrade Bass Booster plugin PNG assets with SVG (#7771) 2025-03-18 23:04:10 -04:00
szeli1
f72ae32fd3 Ensure hidden full-screen windows are restored in the correct position (#7752)
Fix bug introduced with #7595 where drag-moving the MDI canvas background would break the show/hide behavior of a fullscreen window.

Closes #7751
2025-03-17 15:35:28 -04:00
Fawn
919f9a1c0a Upgrade Amplifier plugin PNG assets with SVG (#7770)
Replaces the .png raster assets for the native Amplifier plugin with .svg vector assets.
2025-03-16 18:04:53 -06:00
Johannes Lorenz
d4fe398fff Update CALF to 0.90.4 (#7783) 2025-03-15 22:15:31 +01:00
Andrew Wiltshire
b0f9480d3c Fix SVG Scaling; Allow SVGs to be rendered at sizes other than their natural size. (#7769)
Allow embed.cpp to load SVG assets at screen DPI by leveraging QPixmap::setDevicePixelRatio

---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
Co-authored-by: Fawn <rubiefawn@gmail.com>
2025-03-14 15:05:45 -04:00
John Hunt
2cd4810755 Optimize PNG images using ImageOptim (#7384) 2025-03-13 16:08:41 -04:00
Fawn
91f750d2c2 Fix track operations widget vertical alignment (#7765)
In #7708, the track operations widget was given a centered vertical alignment in order to fix an aesthetic layout issue. This is being reverted, since it is possible to resize tracks, and all the other track interface elements are top-aligned.
2025-03-13 11:12:33 -06:00
Tres Finocchiaro
768b3b253b Fix stk/rawwaves for msys2 (#7736) 2025-03-12 22:30:26 -04:00
Fawn
7f2761df9b Fix incorrect graph step size behavior (#7703)
The y-axis quantization for graph values was being calculated
incorrectly. This would have gone unnoticed since the only step sizes
currently used are 0 (continuous) or 1. Any other values produce
"sloped" quantization. This fix prevents this error from affecting
any future uses of graphModel.
2025-03-11 16:53:29 -06:00
Fawn
6233c5b9e4 Update mute and solo buttons, add them to instrument windows (#7708)
* Add mute and solo buttons to instrument windows
* Change mute and solo buttons to optimized CC0 SVG assets
* Icons provided by @StakeoutPunch, button backgrounds provided by
@RebeccaDeField

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
Co-authored-by: Rebecca Noel Ati <contactme@rebeccadefield.com>
Co-authored-by: Stakeout Punch <StakeoutPunch@users.noreply.github.com>
2025-03-11 14:30:04 -04:00
Michael Gregorius
8821d88c09 InstrumentSoundShaping refactoring (#7229)
* Accessors for volume, cutoff, resonance

Add private accessors for the volume, cutoff and resonance parameters (envelope and LFO).

This makes the code less technical and more readable as it for example removes lots of static casts. The casts are now done in a special helper method that returns the parameters for a given target.

* Remove EnvelopeAndLfoParameters array

Remove the `EnvelopeAndLfoParameters` array and use explicit instances for volume, cutoff, resonance. This simplifies construction and initialization of the instances.

Besides the array this also removes the `Target` enum and the `NumTargets` value.

To simplify storage and retrieval of the parameters three private methods have been added which provide the node names of the volume, cutoff and resonance parameters.

Adjust `InstrumentSoundShapingView` to the removed `NumTargets` property.

* Use references instead of pointers

Use references to the volume, cutoff and resonance parameters instead of pointers.

* Remove friend relationship

Remove the friend relationship between `InstrumentSoundShaping` and its related view by providing the models via getters.

* Get rid of targetNames

Get rid of `InstrumentSoundShaping::targetNames` by using translations and strings directly. Move the remaining stuff into `InstrumentSoundShapingView` until it is removed there as well.

* Explicit EnvelopeAndLfoViews

Remove the array of EnvelopeAndLfoViews and use dedicated instances instead.

This also enables the final removal of the remaining `targetNames`.

* Move the code of some getters

Move the code of some getters into the header file.

* Several code review changes

Apply some code review proposals.

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

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-03-09 11:25:00 +01:00
Sotonye Atemie
f44aa3edc3 Refactor OGG export and always use VBR (#7697)
Refactors `AudioFileOgg`, a class used to export to OGG files. There were problems reported of the exported OGG file failing to be played back on some systems. To fix this issue as well as to improve code quality, the class was refactored. In addition, VBR (variable bit rate) is always used, with the quality of the export being determined by a ratio of the selected bit rate and the maximum bit rate allowed. This change naturally occurred when refactoring, though the libvorbisenc documentation recommend VBR for improved audio quality.
2025-03-07 10:23:30 -05:00
regulus79
c12fd571f5 Allow cutting multiple notes at once in Piano Roll (#7715)
Adds the ability to cut multiple notes at once in the Piano Roll. Users can select the Knife tool and create a cut line by holding the mouse and dragging it across the notes that should be cut. This also allows cutting the notes at an angle. When releasing the mouse, the Shift key can be pressed to remove the shorter end of the notes that were cut. If any notes are selected, only they will be considered for the cut, even if the cut line covers more notes.
2025-03-02 18:29:29 -05:00
szeli1
5fa01e7dbc Navigate workspace in the main window by dragging the mouse (#7595)
The scroll bars shown in the main window were removed in favor of a new navigation feature that utilizes dragging the mouse instead. Users can now hold the mouse down on an empty part of the workspace and drag the mouse around to navigate where necessary.
2025-03-02 18:03:37 -05:00
Oskar Wallgren
ef1d86fa41 ExportProjectDialog: Remove arbitrary loop count limit (#7724)
Increases the number of max loops when exporting above 99
2025-03-02 20:37:26 +01:00
Andrew Wiltshire
9159533814 FileBrowser: "Open containing folder" automatically selects file in the OS's file manager (#7700)
Introduces a new class FileRevealer to manage file selection across different platforms (Windows, macOS, Linux, and other *nix operating systems with xdg). Includes methods to open and select files or directories using the default file manager on the respective platform.

---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-03-01 19:38:51 -05:00
Rossmaxx
050df381b0 Fix Clang warning due to implicit conversion from int to float for the RAND_MAX macro (#7717)
* fix compiler warning due to implicit conversion

* fix warnings from plugins too
2025-03-01 16:48:37 -05:00
Michael Gregorius
3c3441bb0c Faders with a dB scale (instead of linear/percentage) (#7636)
* Use dbFS scale for the faders

Make the faders use a linear dbFS scale. They now also change position on first click and can then be dragged.

The `Fader` class now has a new property called `m_faderMinDb`. It's the minimum value before the amplification drops down fully to 0. It is needed because we cannot represent a scale from -inf to maxDB.

Rename `knobPosY` to `calculateKnobPosYFromModel` and move the implementation into the cpp file. The method now first converts the model's current amplification value to dbFS and then computes a ratio based on that values and the minimum and maximum dbFS values.

Add the method `setVolumeByLocalPixelValue` which takes a local y coordinate of the widget and sets the amplification of the model based on a dbFS scale.

Adjust `mousePressEvent` and `mouseMoveEvent` so that they mostly take the local y coordinate of the event and use that to adjust the model via `setVolumeByLocalPixelValue`.

Remove `m_moveStartPoint` and `m_startValue` and they are not needed anymore.

* Apply curve to faders

Apply a curve, i.e. the cube function and its inverse, to the fader
positions to that we have more space to work with in the "interesting"
areas around 0 dB and less space in the area where we tend to "-inf dB".

Set the minimum dB value of the fader to -120 dB to increase the potential
headroom.

* Support for dB models

Add support for models that are in dB.

There's a new member `m_modelIsLinear` which can be set via the
constructor. The default value in the constructor is `true`.

Add the method `modelIsLinear` which can be used to query the parameter.
It is used in `calculateKnobPosYFromModel` and
`setVolumeByLocalPixelValue`. Both methods got extended to deal with
models in dB. They were also refactored to extract code that is common
for both cases.

Ensure that the constructor of `Fader` is called with `false` for
`CrossoverEQControlDialog` and `EqFader` because these use models that
are in dB.

* Show current dB value of fader in tool tip

Show the current value of the fader in its tool tip. Please note that
this value is always shown in dB because the goal should be to get rid
of the linear values for the faders.

Some of the code is extracted into the new method
`Fader::getModelValueAsDbString` which is shared by
`Fader::modelValueChanged` (also new) and `Fader::updateTextFloat`.

Please note that `getModelValueAsDbString` will use "dB" instead of
"dBFS" as the unit and that it will format "-inf dB" instead of "-∞ dB".
These changes will also be visible in the text float that is used to
show the new values as the fader is being dragged.

* Let users enter values in dB

Let users enter values in dB in the dialog that opens with a double
click.

The minimum value that can be entered is the minimum value that the
fader allows to set, i.e. -120 dB. The maximum value is the maximum
value of the model converted to dB. As of now this is ~6 dB. The
current value is converted to dB. If it corresponds to "-inf dB", i.e.
if the amplification is 0 then the minimum value is used.

* Remove option "Display volume as dBFS"

Remove the option "Display volume as dBFS" from the settings dialog and
the check box option "Volume as dBFS" from the "View" menu. Volumes are
now always treated as dB, i.e. all evaluations of the property
"displaydbfs" have been removed which results in assuming that this
option is always true.

The upgrade code in `ConfigManager::upgrade_1_1_91` was left as is.
However, a note was added which informs the reader that the value of
"displaydbfs" is not evaluated anymore.

* Extend Fader::wheelEvent

Extend `Fader::wheelEvent` for the case where the model is not a dB
model (`modelIsLinear() == true`), e.g. for the mixer faders. In that
case it works as follows. Each step increments or decrements by 1 dB if
no modifier is pressed. With "Shift" pressed the increment value is 3 dB.
With "STRG" ("CTRL") pressed the increment value is reduced to 0.1 dB. If
the value goes below the minimum positive dB value that is allowed by the
fader then the fader is set to "-inf dB", i.e. zero amplification. If the
fader is set to "-inf dB" and the users want to increase the value then
it is first set to the minimum positive value that is allowed by the
fader.

If the model is a dB model then the same behavior as before is used.
Although it should be considered to adjust this case as well. These
models are used by the faders of the Crossover Equalizer, Equalizer,
Compressor and Delay and they are not very usable with the mouse wheel.

* Adjust the wheel behavior for faders with dB models

Make the faders of the Crossover Equalizer, Equalizer, Compressor and
Delay behave like the mixer faders, i.e. step in sizes of 3 dB, 1dB and
0.1 dB depending on whether a modifier key is pressed or not.

Extract some common code to do so and add some `const` keywords.

* Less "jumpy" knobs

Implement a more stable knob behavior.

Remove the jumping behavior if the users directly click on a volume
knob. By storing the offset from the knob center and taking it into
account during the changes it now also feels like the users are
dragging the knob.

Changes to the amplification are now only applied when the mouse is
moved. This makes the double click behavior much more stable, i.e. if
users click on the knob when it is at 0 dB the dialog will also show
0 dB and not something like 0.3 dB because the first click is already
registered as a change of volume.

If the users click next to the knob the amplification will still be
changed immediately to that value.

## Technical details

To make the knobs more stable a variable called `m_knobCenterOffset` was
introduced. It stores the offset of the click from the knob center so
that this value can be taken into account for in the method
`setVolumeByLocalPixelValue`.

* Make MSVC happy

Add an indication that a float value is assigned to a float variable.

* Introduce constexpr for scaling exponent

Introduce the `constexpr c_dBScalingExponent` which describes the
scaling exponent that's used to scale the dB scale in both directions.
This will simplify potential adjustments by keeping the values
consistent everywhere.

* Draw fader ticks

Draw fader ticks in case the model is a linear one. This means that for
now they should only be painted for the mixer faders but not for the
faders of the Compressor, Delay, etc.

Extract the computation of the scaled ratio between the maximum model dB
value and the minimum supported fader dB value into the new private
method `computeScaledRatio`. This is necessary because it is needed to
paint the fader knob at the correct position (using the knob bottom as
the reference) and to paint the fader ticks at the correct position
(using the knob center).

Introduce the private method `paintFaderTicks` which paints the fader
ticks.

Note: to paint some non-evenly spaced fader ticks replace the `for`
expression in `paintFaderTicks` with something like the following:
```
for (auto & i : {6.f, 0.f, -6.f, -12.f, -24.f, -36.f, -48.f, -60.f, -72.f, -84.f, -96.f, -108.f, -120.f})
```

* Fader adjustments via keyboard

Allow the adjustment of the faders via the keyboard. Using the up or
plus key will increment the fader value whereas the down or minus key
will decrement it. The same key modifiers as for the wheel event apply:
* No modifier: adjust by 1 dB
* Shift: adjust by 3 dB
* Control: adjust by 0.1 dB

Due to the very similar behavior of the mouse wheel and key press
handling some common functionality was factored out:
* Determinination of the (absolute) adjustment delta value by
  insprecting the modifier keys of an event. Factored into
  `determineAdjustmentDelta`.
* Adjustment of the model by a given dB delta value. Factored into
  `adjustModelByDBDelta`.

* Move the fader of the selected channel

Move the fader of the selected channel instead of the fader that has
focus when the up/plus or down/minus keys are pressed. Doing so also
feels more natural because users can already change the selected
channel via the left and right keys and now they can immediately adjust
the volume of the currently selected channel while doing so.

Key events are now handled in `MixerView::keyPressEvent` instead of
`Fader::keyPressEvent` and the latter is removed. `MixerChannelView`
now has a method called `fader` which provides the associated fader.
This is needed so that the event handler of `MixerView` can act upon
the currently selected fader.

## Changes in Fader
The `Fader` class provides two new public methods.

The `adjust` method takes the modifier key(s) and the adjustment
direction and then decides internally how the modifier keys are mapped
to increment values. This is done to keep the mapping between modifier
keys and increment values consistent across different clients, e.g. the
key event of the `MixerView` and the wheel event of the `Fader` itself.
The direction is provided by the client because the means to determine
the direction can differ between clients and cases, e.g. a wheel event
determines the direction differently than a key event does.

The method `adjustByDecibelDelta` simply adjusts the fader by the given
delta amount. It currently is not really used in a public way but it
still makes sense to provide this functionality in case a parent class
or client wants to manipulate the faders by its very own logic.

Because the `Fader` class does not react itself to key press events
anymore the call to `setFocusPolicy` is removed again.

* Enter fader value when space key pressed

Let the users enter the fader value via dialog when the space key is
pressed.

Extract the dialog logic into the new method `adjustByDialog` and call
it from `MixerView::keyPressEvent`.

Make `Fader::mouseDoubleClickEvent` delegate to `adjustByDialog` and
also fix the behavior by accepting the event.

* More prominent fader ticks around 0 dB

Make the fader ticks around 0 dB more prominent but drawing them
slightly wider and with a more opaque color.

* Work around a Qt bug

Work around a Qt bug in conjunction with the scroll wheel and the Alt
key. Simply return 0 for the fader delta as soon as Alt is pressed.

* Fix wheel events without any modifier

Fix the handling of wheel events without any modifier key being pressed.

Commit ff435d551b accidentally tested against Alt using a logical OR
instead of an AND.

* Code review changes

First set of code review changes:
* Use Doxygen style documentation comments
* Remove comment about `displaydbfs` from upgrade routine
* White-space changes for touched lines.

* Make minimum dB value a constexpr

Make the minimum dB value a constexpr in the implementation file because
currently it's an implementation detail that should not be of any
interest to any other client.

So `m_faderMinDb` becomes `c_faderMinDb`.

* More flexible painting of fader ticks

Paint the fader ticks in a more systematic and flexible way. This also
removes some "magic numbers", e.g. by using `c_faderMinDb` instead of
`-120.f` as the lower limit.

The upper limit, i.e. the "starting point" is now also computed using
the maximum value of the model so that the fader will still paint
correctly if it ever changes.

* Make the zero indicator bolder

Make the zero indicator tick of the fader bolder.

* Make rendering of fader ticks a preference

Make rendering of fader ticks a preference which is off by default.

Introduce the new option "Show fader ticks" to the setup dialog and save
it to the UI attribute `showfaderticks`.

The configuration value is currently evaluated in `Fader::paintEvent`.
If this leads to performance problems it might be better to introduce a
boolean member to the `Fader` class which caches that value.

* Move constexprs to anonymous namespace
2025-03-01 20:08:04 +01:00
regulus79
3417dfe86d Fix Envelope and LFO Graph Size on Resizeable Instruments (#7738) 2025-02-28 22:13:00 -05:00
Johannes Lorenz
3aa1a5dafa Rename AudioPort -> AudioBusHandle (#7712)
No functional changes.
2025-02-28 23:44:58 +01:00
regulus79
cf4b492292 Fix logarithmic behavior when dragging knobs and sliders (#7647)
* Initial fix

* Remove stray m_leftOver reference

* Fix shift-dragging

* Revert to relative mouse control. I realize now that the maths don't actually change.

* Change qRound to std::round

* Fix scrolling behavior

* Fix mouse relative position buildup at values < minValue

* Use approximatelyEqual
2025-02-28 17:02:52 -05:00
superpaik
a4c91f8ba0 Recursively unmute channels when soloing in the mixer (#6746)
* unmute related FX channels

When soled one FX channel, unmute send and receive channels, to allow complex FX channel routing (BUS, SENDs, etc.)

* Comment change

* SEND channels

Activate also SEND channels recursively

* Remove unnecessary whitespace

* Encapsulate mixer channel index

Make the mixer channel index `m_channelIndex` private and add getters and
setters. Also add a method to determine if the channel is the master
channel.

Move `m_channelIndex` to the end of the initialization list of the
`MixerChannel` constructor because it is now the last member in the
header.

Adjust all clients to make use of the new methods.

* Replace const int& getIndex() with int index() const

* Format changes

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-02-28 09:52:41 -05:00
Kevin Zander
9b04e29c4e Remove song import global automation (#5229)
Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
2025-02-22 14:24:29 +05:30
Tres Finocchiaro
055e0ba576 Fix additional warnings when Carla is missing (#7722)
Fix additional warnings when Carla is missing
Adds new env var LMMS_EXCLUDE_LADSPA

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-02-21 00:56:04 -05:00
Sotonye Atemie
ea02b3aba0 Do not set Qt::WA_OpaquePaintEvent (#7643)
Attempts to fix child widgets -- such as clips from the song editor -- drawing on top on other
2025-02-19 19:24:27 -05:00
Tres Finocchiaro
b440a029df Update FLTK in the AppImage (#7710)
Bump fltk 1.3.x->1.4.1
Closes #5386
2025-02-18 18:41:28 -05:00
Tres Finocchiaro
24bda4fa58 AppImage: Initial support for wayland (#7704)
Adds opt-in wayland support to the AppImage
2025-02-18 03:31:12 -05:00
Tres Finocchiaro
7725d0024e Allow plugins to be skipped at runtime (#7691)
Allows plugins (such as carla) to be skipped when not installed
2025-02-18 01:37:54 -05:00
Tres Finocchiaro
bfacdd29f7 VersionInfo: Mimic github's hash styling (#7694) 2025-02-18 01:22:54 -05:00
Tres Finocchiaro
d145f78332 AppImage: Use fully qualified path when calling appimagetool (#7707)
AppImage: Use fully qualified path when calling appimagetool
2025-02-13 17:01:40 -05:00
Fawn
e328a136fc Use C++20 std::numbers, std::lerp() (#7696)
* use c++20 concepts and numbers for lmms_constants.h

* replace lmms::numbers::sqrt2 with std::numbers::sqrt2

* replace lmms::numbers::e with std::numbers::e
Also replace the only use of lmms::numbers::inv_e with a local constexpr instead

* remove lmms::numbers::pi_half and lmms::numbers::pi_sqr
They were only used in one or two places each

* replace lmms::numbers::pi with std::numbers::pi

* add #include <numbers> to every file touched so far
This is probably not needed for some of these files. I'll remove those later

* Remove lmms::numbers

Rest in peace lmms::numbers::tau, my beloved

* Add missing #include <numbers>

* replace stray use of F_EPSILON with approximatelyEqual()

* make many constants inline constexpr
A lot of the remaining constants in lmms_constants.h are specific to
SaProcessor. If they are only used there, shouldn't they be in SaProcessor.h?

* ok then, it's allowed to be signed

* remove #include "lmms_constants.h" for files that don't need it
- And also move F_EPSILON into lmms_math.h
- And also add an overload for fast_rand() to specify a higher and lower bound
- And a bunch of other nonsense

* ok then, it's allowed to be inferred

* ok then, it can accept an integral

* fix typo

* appease msvc

* appease msvc again

* Replace linearInterpolate with std::lerp()

As well as time travel to undo several foolish decisions and squash tiny
commits together

* Fix msvc constexpr warnings

* Fix msvc float to double truncation warning

* Apply two suggestions from code review

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

* Apply suggestions from code review

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

* fix silly mistake

* Remove SlicerT's dependence on lmms_math.h

* Allow more type inference on fastRand() and fastPow10f()

* Apply suggestions from code review

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

* Clean up fastRand() a little bit more

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-02-13 13:15:08 -05:00
Tres Finocchiaro
e615046d78 Add VST64 targets for Linux ARM64 (#7687)
Initial support for winegcc on ARM64
2025-02-13 01:23:37 -05:00
Dalton Messmer
7d271e4f39 Fix vcpkg builds (#7702)
* Try to fix MSVC linker error related to lilv

* Remove temporary workaround

* Temporary debugging messages

* oops

* Temporary debugging

* Try to find FluidSynth using Config mode first

* Try again to fix lilv

* Fix FluidSynth installed with vcpkg on Windows

* Fix lilv from vcpkg

* Remove debug flag

* Fix for when lilv is not found (*-NOTFOUND evaluates to false)

* Use lowercase package name for lv2

* Try using only pkg_check_modules for lv2

* Use Lilv::lilv

* Add pkg-config guard back in

* Fix package name

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>

* Fix Lilv_INCLUDE_DIRS

* Rename vcpkg cache key

---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2025-02-12 20:19:13 -05:00
Tres Finocchiaro
67d4a1ca61 Improve Qt5 detection on macOS (#7699)
* Improve Qt5 detection on macOS
2025-02-10 02:06:21 -05:00
Tres Finocchiaro
30216aac51 macOS: Change drag copy shortcut from Command to Option (#7325)
macOS: Replace Command + Drag shortcut key with Option + Drag
Add new header `KeyboardShortcuts.h` for platform-specific keyboard mappings

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
2025-02-09 02:50:38 -05:00
Fawn
4a089a19dc Update math functions to C++ standard library (#7685)
* use c++ std::* math functions
This updates usages of sin, cos, tan, pow, exp, log, log10, sqrt, fmod, fabs, and fabsf,
excluding any usages that look like they might be part of a submodule or 3rd-party code.
There's probably some std math functions not listed here that haven't been updated yet.

* fix std::sqrt typo

lmao one always sneaks by

* Apply code review suggestions
- std::pow(2, x) -> std::exp2(x)
- std::pow(10, x) -> lmms::fastPow10f(x)
- std::pow(x, 2) -> x * x, std::pow(x, 3) -> x * x * x, etc.
- Resolve TODOs, fix typos, and so forth

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>

* Fix double -> float truncation, DrumSynth fix

I mistakenly introduced a bug in my recent PR regarding template
constants, in which a -1 that was supposed to appear outside of an abs()
instead was moved inside it, screwing up the generated waveform. I fixed
that and also simplified the function by factoring out the phase domain
wrapping using the new `ediv()` function from this PR. It should behave
how it's supposed to now... assuming all my parentheses are in the right
place lol

* Annotate magic numbers with TODOs for C++20

* On second thought, why wait?

What else is lmms::numbers for?

* begone inline

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>

* begone other inline

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>

* Re-inline function in lmms_math.h

For functions, constexpr implies inline so this just re-adds inline to
the one that isn't constexpr yet

* Formatting fixes, readability improvements

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

* Fix previously missed pow() calls, cleanup

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

* Just delete ediv() entirely lmao

No ediv(), no std::fmod(), no std::remainder(), just std::floor().
It should all work for negative phase inputs as well. If I end up
needing ediv() in the future, I can add it then.

* Simplify DrumSynth triangle waveform

This reuses more work and is also a lot more easy to visualize.

It's probably a meaningless micro-optimization, but it might be worth changing it back to a switch-case and just calculating ph_tau and saw01 at the beginning of the function in all code paths, even if it goes unused for the first two cases. Guess I'll see if anybody has strong opinions about it.

* Move multiplication inside abs()

* Clean up a few more pow(x, 2) -> x * x

* Remove numbers::inv_pi, numbers::inv_tau

* delete spooky leading 0

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

---------

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-02-08 23:50:02 -05:00
Dominic Clark
cb7c6d16cb Reload stylesheet when CSS file changes (#6331)
* Reload stylesheet when CSS file changes

---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2025-02-08 23:33:44 -05:00
Cas Pascal
786088baec Improve performance when rendering sample waveforms (#7366)
This PR attempts a number of improvements to the sample rendering (in the song editor, automation editor, AudioFileProcessor, SlicerT, etc) in LMMS:

Thumbnails: Samples are aggregated into a set of thumbnails of multiple resolutions. The smallest larger thumbnail is then chosen for rendering during sample drawing. Each set of thumbnails is stored with its sample file metadata in an unordered_map, so that duplicate samples will use the same set of thumbnails.

Partial rendering: additionally, this PR only renders the portions of the sample clips visible to the viewer to save rendering time.

* Experimental sample thumbnail

* Rename some classes and type aliases. Make some type declarations explicit

* Use a combination of audioFile name and shared_ptrs to track samples; refactor some loops

* That weird line at the end of the sample is now gone

* Small changes to the code; Add comments

* Add missing word to comment; Fix typo

* Track `SharedSampleThumbnailList`s instead

* Major refactor; implement thumbnailing for SlicerT, AFP and Automation editor

* Code clean up, renames and documenting

* Add the namespace lmms comments

* More code updates and documentation

* Fix error in comment

* Comment out `qDebug`s

* Fix formatting

* Use alternative initialization of `SampleThumbnailVisualizeParameters`

* Remove commented code

* Fix style and simplify code

* Use auto

* Draw lines using floating point

* Merge the classes into one nested class
+ Replace while loop with std::find_if

* Fix comparison of different signedness

* Include memory header

* Fix a logic error when selecting samples; Rename a const

* Fix more issues with signedness

* Fix sample drawing error in `visualizeOriginal`

* Only render regions in view of the sample

* Allow partial repaints of sample clips

* Remove unused variable

* Limit most of the painting to the visible region

* Revert back to using rect() in some places

* Partial rendering for AutomationEditor

* Don't redraw painted regions; allowHighResolution; remove `visualizeOriginal`; Remove s_sampleThumbnailCacheMap

* Add s_sampleThumbnailCacheMap back for testing convenience

* Minor change to the way `thumbnailSizeDivisor` is calculated

* Extend update region by an amount

* forgot about this

* Adapt to master; Redesign VisualizeParameters; Don't rely entirely on needsUpdate()

* Don't try to preserve painted regions

* Allow for a bit more thumbnails; Fix incorrect rendering when vertically scrolling

* Fix missing include statement

* Remove the unused variable

* Code optimization; Remove RMS member from Bit; Rename viewRect to drawRect

* More code optimizations

* Fix formatting

* Use begin instead of cbegin

* Improve generation of thumbnails

* Improve expressiveness of the draw code

* Add support for reversing

* Fix drawing code

* Fix draw code (part 2)

* Apply more fixes and simplifications

* Undo some out of scope changes

* Remove SampleWaveform

* Improve documentation

* Use size_t for some counters

* Change width parameter to be size_t

* Remove temporary aggregated peak variable

* Bump up AggregationPerZoomStep to 10

* Zoom out only requested range of thumbnail instead of clipping it separately

* Rename targetSampleWidth to targetThumbnailWidth

* Handle reversing for AFP; Iterate in reverse instead of reversing the entire thumbnail

* Change names to be more accurate

* Improve implementation of sample thumbnail cache map

* Move AggregationPerZoomStep back down to 2, do not cap smallest thumbnail width to display width
To improve performance with especially long
samples (~20 minutes)

* Simplify sample thumbnail cache handling in constructor

* Call drawLines instead of drawLine in a loop

QPainter::drawLine calls drawLines with a line count of 1. Therefore, calling drawLine in a loop means we are simply calling drawLines a lot more times than necessary.

* Bump up AggregationPerZoomStep to 10 again
Thought using 2 would help performance (when rendering). Maybe it does, but it's still quite slow when rendering a bunch of thumbnails at once.

* Fix off-by-one error when constructing Thumbnail from buffer

* Fix crash when viewport is not in bounds

* Apply performance improvements

Performance in the zoomOut function was bad because of the dynamic memory allocation. Huge chunks of memory were being allocated quite often, casuing a ton of cache misses and all around slower performance. To fix this, all the necessary downsampling is now done within the for loop and handled one pixel after another, instead of all at once.

To further avoid allocations in the draw call, the change to use drawLines has been reverted.

We now pass VisualizeParameters by value (it is only 64 bytes, which will fit quite nicely in a cache line, which is more benefical than reaching for that data by reference to some other part of the code).

After applying these changes, we are now practically only bounded by the painting done by Qt (according to profiling done by Valgrind). Proper use of OpenGL could resolve this issue, which should finally make the performance quite optimal in  variety of situations.

* Apply minor changes

Update copyright and unused functions. Move in newly created thumbnail into the cache instead of copying it.

* Use C++20's designated initializers

* Create param right before visualizing

* Fix regressions with reversing

* Fix incorrect rendering in AFP and SlicerT

* Move MaxSampleThumbnailCacheSize and AggregationPerZoomStep into implementation file

* Remove static keyword

* Remove getter and setter for peak data

---------

Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-02-08 20:05:19 -05:00
Tres Finocchiaro
fe0e8ba379 Remove libgallium from the appimage (#7693)
* Remove libgallium from the appimage
* Remove "optional" directory from AppImage
2025-02-08 17:13:07 -05:00
Tres Finocchiaro
c81d497cda Fix libjack.so.0 detection for openSUSE (#7690)
Fix libjack.so.0 detection for openSUSE
Add libdb-5.so to optional as symlink
2025-02-08 15:11:55 -05:00
Tres Finocchiaro
6a0a4cd2b2 AppImage: Don't set LD_LIBRARY_PATH (#7686)
Don't set LD_LIBRARY_PATH
Move launch_lmms.sh to dedicated apprun-hooks
2025-02-05 12:22:08 -05:00
firewall1110
516b8dbca8 Fix dropout with SID instrument when used for the first time (#7673)
Co-authored-by: Sotonye Atemie <sakertooth@gmail.com>
2025-02-03 19:02:06 -05:00
Tres Finocchiaro
f38c649923 SharedMemory: Make key optional, default to shorter UID on macOS (#7681)
* SharedMemory: Make key optional, shorter on macOS
* Add getters for shared memory size
* macOS: Fix linking regression for RemoteZynAddSubFx introduced with #7252 

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-02-03 14:18:02 -05:00
Tres Finocchiaro
36c1deae42 CI: Switch mingw64 to Ubuntu 24.04 (#7682)
Switch mingw64 from Ubuntu 20.04 to Ubuntu 24.04
2025-02-03 12:52:33 -05:00
Fawn
9aa937d391 Use templates for common geometric constants (#7558)
* add templates for common geometric constants

* oops missed one

* LD_2PI -> LD_PI

i re-added the wrong constant ffs

* CamelCase names and also verify compilation without -DLMMS_MINIMAL

* C++20 stuff

Updated to account for `<numbers>` and C++20:
- Marked all `lmms_constants.h` constants with an exact equivalent in `<numbers>` as deprecated
- Removed all `lmms_constants.h` constants where no variant is currently in use
- Using `inline constexpr`
- Using `std::floating_point` concept instead of `typename`

* add lmms::numbers namespace

* Remove panning_constants.h

Moves the four constants in panning_constants.h into panning.h, then
removes panning.h.

* Use std::exp(n) instead of powf(numbers::e, n)

* Use C++ std math functions

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

* Use overloaded std math functions

An attempt to fix compiler warnings on some platforms

* Remove uses of __USE_XOPEN

And also update two functions I missed from the previous commit

* Missed a few

* Fix ANOTHER std math function use

Of course there's another one

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-02-03 11:52:13 -05:00
Tres Finocchiaro
fc125bc7ba CI: Switch linux-x86_64 to Ubuntu 22.04 (#7678)
Switches nightly builds from 20.04 to 22.04
Switches from container to actions-native runner
2025-02-03 02:03:41 -05:00
Tres Finocchiaro
10bdf122f8 CPack: Refactor AppImage and Apple DMG Generation (#7252)
* CPack: Refactor AppImage and Apple DMG Generation
* Switch from linuxdeployqt to linuxdelpoy
* Add ARM64 AppImage support
* Add support for `.run` installers using `makeself`, an alternative to AppImage
* Refactor BashCompletion.cmake
* Enable CPack debugging via `WANT_DEBUG_CPACK`
* Add `download_binary`, `create_symlink` macros
* Qt6: Fix @rpath bug on macOS
* Detect and bundle LV2 UI Suil modules (Related #7201)
* Allow remote plugins to honor `LMMS_PLUGIN_DIR`
* Add .github/workflows/deps-ubuntu-24.04-gcc.txt
* Fix waveforms FileDialog

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2025-02-01 04:02:19 -05:00
Sotonye Atemie
77ca0f8994 Improve mono compatibility with LADSPA plugins (#7674) 2025-01-31 00:58:37 -05:00
Tres Finocchiaro
2c674eca3a Fix icons in Spectrum Analyzer (#7667)
Make Qt::Svg mandatory; bundle svg libraries
2025-01-27 21:58:15 -05:00
slidey-wotter
6259561fc7 Add VST support for Gentoo linux (#7665)
Gentoo wine uses the eselect system; support /etc/eselect/wine/bin
2025-01-25 13:59:58 -05:00
Michael Gregorius
501011e573 Vectorscope render fix (#7652)
* Fix rendering for Vectorscope

The rendering of the Vectorscope is broken on Wayland if the size of the
Vectorscope is increased. This is caused by using a `QImage` to render
the scope traces which is then scaled up.

Introduce a new way to paint the vector scope (goniometer) which simply
paints lines or points that progressively get dimmer and which does not
make use of a QImage anymore.

It supports the following features:
* Log mode
* Zooming
* Rendering the drawing performance
* Selecting a different color for the traces

It does not support:
* HQ Mode: The new implementation provides a performance that's
  equivalent to Non-HQ mode and look similar or better than the HQ mode.
* Blurring of old data
* Persistence: Might be implemented by using a factor for the dimming

Rendering of the samples/trances uses the composition mode "Plus" so
that overlapping elements will appear like adding brightness. Painting
the grid and lines is done using the normal composition mode "Source
Over" so that it simply replaces existing pixels.

Painting of the lines/points and the grids and lines is done in a
"signal space", i.e. a transform where elements in the interval of
[-1, 1] feel "natural". The text is painted in "widget space".

* Remove old implementation

Remove HQ mode and persistence. Also remove the legacy option again.
This removes the models, loading, saving and the GUI controls.

Remove all unnecessary members from `VectorView`, adjust the
constructor. Move the implementation of `paintLinesMode` into
`paintEvent`. Remove methods `paintLegacyMode` and `paintLinesMode`.

* Move colors into VectorView

Move the colors out of `VecControls` into `VectorView` as they are
related to presentation.

* Remove friend relationship to VectorView

Remove a friend relationship to `VectorView` from `VecControls` by
introducing  const getters for the models.

* Remove VectorView::m_visible

Remove the unnecessary member `m_visible` from `VectorView`. It was not
initialized and only written to but never read.

* Make Vectorscope themeable

Make the Vectorscope themeable by introducing Qt properties for the
relevant colors.

The default theme gets the values from the code whereas the classic
theme gets a trace with amber color.

* Rename m_colorFG

Rename `m_colorFG` to `m_colorTrace`. Adjust the Qt property
accordingly.

Remove local variable `traceColor` from paint method and use member
`m_colorTrace` directly.

* Remove m_colorOutline

Remove unused member `m_colorOutline`.

* Fix horizontal lines on silence

Fix the horizontal lines that are rendered on silence. They seem to be
produced when rendering lines that start and end at the same point.

Therefore we only draw a point if the current and last point are the
same.

* Add some margin to the VectorView

Add some margin to the rendering of the `VectorView` so that the circle
does not touch the bounary of the widget.

* Clean up the layout of the Vectorscope

Clean up the layout of the Vectorscope. The checkboxes are not put on
top of the vector view anymore but are organized in a horizontal layout
beneath it. This gives a much tidier look.
2025-01-22 22:40:17 +01:00
Rossmaxx
80a46d3c76 Add gprof profiling support. (#7547) 2025-01-20 11:20:04 +05:30
regulus79
b21a2696a9 Change tooltip window flags (#7613)
* Change tooltip window flags
2025-01-17 07:35:43 +05:30
Daniel Iisak Mikael Kristiansson
0b0833bf54 Bump project year (#7645) 2025-01-10 19:34:21 +05:30
Tres Finocchiaro
3ee0afb2a1 Add support for MSYS2 CLANGARM64
Adds initial Windows ARM64 support
2025-01-09 23:34:33 -05:00
Michael Gregorius
303215f8b1 Maximize button for resizable instruments (#7514)
* Maximize button for resizable instruments

Show the maximize button for resizable instruments.

Most other changes have the character of refactorings and code
reorganizations.

Remove the negation in the if condition for resizable instruments to
make the code better readable.

Only manipulate the system menu if the instrument is not resizable.

Add a TODO to the special code that sets a size.

* Fix rendering of maximized sub windows

In `SubWindow::paintEvent` don't paint anything if the sub window is
maximized . Otherwise some gradients are visible behind the maximized
child content.

In `SubWindow::adjustTitleBar` hide the title label and the buttons if the
sub window is maximized. Always show the title and close button if not
maximized. This is needed to reset the state correctly after
maximization.

* Add SubWindow::addTitleButton

Add the helper method `SubWindow::addTitleButton` to reduce code
repetition in the constructor.

* Only disable the minimize button

Disable the minimize button by taking the current flags and removing
the minimize button hint from them instead of giving a list which might
become incomplete in the future. So only do what we want to do.

* Remove dependency on MdiArea

Remove a dependency on the `MdiArea` when checking if the sub window is
the active one. Query its own window state to find out if it is active.

* Clear Qt::MSWindowsFixedSizeDialogHint

Clear the `Qt::MSWindowsFixedSizeDialogHint` flag for resizable
instruments (symmetric to the `else` case).

* Update the sub window title bar of exchanged instruments

Update the title bar of an instrument's sub window if the model changes, e.g. if an instrument is exchanged via drag & drop.

The main fix is to call the new method `updateSubWindowState` in `InstrumentTrackWindow::modelChanged`. It contains mostly the code that was previously executed in the constructor of `InstrumentTrackWindow`. The constructor now simply calls this method after it has put the constructed instance into a sub window.

With the current implementation the sub window needs to be explicitly triggered to update its title bar once the flags have been adjusted in `updateSubWindowState`. This is done with the new public method `SubWindow::updateTitleBar`. Please note that such an explicit update is not needed if the instrument windows are managed by a `QMdiSubWindow` instead of a `SubWindow`. This means that the implementation of `SubWindow` is still missing something that `QMdiSubWindow` does. However, debugging also showed that setting the window flags of the sub window does not seem to lead to an event that could be caught in `SubWindow::changeEvent`. This was found out by simply dumping the event types of all events that arrive in that method and exchanging an instrument.

The method `updateSubWindowState` uses the added method `findSubWindowInParents` to find the sub window it is contained in. The latter method should be considered to be moved into a templated helper class because it might be useful in other contexts as well.

## Technical details

If you want to experiment with using QMdiSubWindows then simply add the following method to `MainWindow` (right next to `addWindowedWidget`):
```
QMdiSubWindow* MainWindow::addQMdiSubWindow(QWidget *w, Qt::WindowFlags windowFlags)
{
	// wrap the widget in our own *custom* window that patches some errors in QMdiSubWindow
	auto win = new QMdiSubWindow(m_workspace->viewport(), windowFlags);
	win->setAttribute(Qt::WA_DeleteOnClose);
	win->setWidget(w);

	m_workspace->addSubWindow(win);
	return win;
}
```

Then call that method instead of `addWindowedWidget` in the constructor of `InstrumentTrackWindow`:
```
QMdiSubWindow* subWin = getGUI()->mainWindow()->addQMdiSubWindow( this );
```

You can then comment out the cast and the call of `updateTitleBar` in `updateSubWindowState` and everything will still work.

* Update the system menu

Show or hide the "Size" and "Maximize" entries in the system menu
depending on whether the instrument view is resizable or not.

* Show non-resizable instruments as normal

Show the sub windows of non-resizable instruments as normal if the sub
window is maximized because it was previously used with a resizable
instrument.

* Fix typo

* Rename updateSubWindowState

Rename `updateSubWindowState` to `updateSubWindow`.
2025-01-01 14:25:40 +01:00
Niyonkuru-AI-Crazy
3fcbb4ca77 Fix 3 minor typos (#7635) 2024-12-26 18:34:06 +00:00
Rossmaxx
23db892d55 Remove 32 bit CI support for windows builds (#7619)
* remove 32 bit from msvc ci

* remove 32 bit from mingw builds

* remove fail fast
2024-12-24 18:06:18 +05:30
saker
6b494bd7a3 Revert "Major German translation rework (01/12/2024) (#7612)" (#7628) 2024-12-20 17:30:39 -05:00
Petar Katić
99ab0e2070 Update Zyn submodule (#7625) 2024-12-19 09:52:58 -05:00
Wuzzy
088a2cbcfd Major German translation rework (01/12/2024) (#7612) 2024-12-19 07:46:54 -05:00
saker
248b6b92d9 Downgrade RemoteVstPlugin build back to C++17 (#7624) 2024-12-18 16:20:34 -05:00
regulus79
7590bc03d7 Revise README (#7545)
* Initial revision of README.md

* Make logo and link placements more professional (thanks to thismoon), along with otehr minor changes
2024-12-08 08:37:28 +05:30
Dalton Messmer
d9737881cf Revert pkgconf removal (#7605)
* Revert "Remove pkg-config from Brewfile (#7593)"

This reverts commit 72b30b1d00.

* Replace pkg-config with pkgconf
2024-12-01 13:33:17 -05:00
regulus79
f579750608 Fix coarse gridlines being half as wide every 8 bars (#7610) 2024-12-01 08:19:00 +05:30
Oskar Wallgren
3562bbed3c Open up some gui elements to theming (#7314)
* Theming for current step note

* Theming for EnvelopeGraph

* Theming for LfoGraph

* curStepNoteColor - don't break old themes

* EnvelopeGraph - don't break old themes

* LfoGraph - don't break old themea

* currentStepNoteColor
2024-11-30 19:24:45 +05:30
regulus79
e311832ffb Fix styling on message boxes (#7608) 2024-11-29 23:05:18 -05:00
saker
5acc7965c2 Disable focus for new channel button in Mixer (#7597) 2024-11-27 17:14:35 -05:00
SpomJ
95a0518085 Remove obsolete workaround for Qt4 (#7590) 2024-11-23 20:37:07 +05:30
Dalton Messmer
c21a7cd487 Upgrade to C++20 (#7554)
* Compile in C++20 mode

* Fix implicit lambda captures of `this` by `[=]`

Those implicit captures were deprecated in C++20

* Silence MSVC atomic std::shared_ptr warning

Unfortunately std::atomic<std::shared_ptr> (P0718R2) is not supported by
GCC until GCC 12 and still is not supported by Clang or Apple Clang, so
it looks like we will continue using std::atomic_load for the time being

* Use C++20 in RemoteVstPlugin

* Simplification

* Add comment

* Fix bitwise operations between different enumeration types

* Revert "Fix bitwise operations between different enumeration types"

This reverts commit d45792cd72.

* Use a helper function to combine keys and modifiers

* Remove AnalyzeTemporaryDtors from .clang-tidy

AnalyzeTemporaryDtors was deprecated in clang-tidy 16 and fully removed
in clang-tidy 18

* Use C++20 in .clang-format

* Use bitwise OR

Prevents issues if any enum flags in `args` have bits in common
2024-11-22 23:11:39 -05:00
Dalton Messmer
72b30b1d00 Remove pkg-config from Brewfile (#7593)
* Update pkg-config to pkgconf

* Remove pkg-config/pkgconf

Should already be installed by GitHub Actions runner image
2024-11-22 22:47:37 -05:00
Arash Partow
bf54568ac6 Update ExprTk (#7571) 2024-11-22 10:15:46 -05:00
Rossmaxx
26d5241dd7 Optimise usage of pow using fast equivalent and exp2 (#7548)
* replace std::pow with better performing equivalents

* revert one instance where I swapped to fastPow10f

* Negative slope instead of multiplying -1

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

---------

Co-authored-by: saker <sakertooth@gmail.com>
2024-11-21 14:29:51 +05:30
SpomJ
7e65a87ba8 Fix unrestricted splash screen geometry (#7588) 2024-11-20 14:08:27 -05:00
Rossmaxx
0d7749d944 Fix the MSVC CI fail happening due to outdated vcpkg (#7589)
* switch to version 1 for msvc-dev-cmd github action

* bump msvc build year

* try refreshing vcpkg cache msvc

* Revert "try refreshing vcpkg cache msvc"

This reverts commit e8814f8cbd.

* try updating vcpkg manually

* Revert "bump msvc build year"

This reverts commit a95c75ee95.

* messmerd's review comments

* revert the version bump for msvc-dev-cmd

* Fix `cd` command

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-11-20 13:33:58 -05:00
Kapandaria
ada836c989 Fix crash on Xpressive when using integrate function (#7499)
* Fixed a bug in the integrate function, that was caused by warning fixes session.

* Xpressive - fixed code style issues.
2024-11-08 16:15:34 -05:00
Dalton Messmer
e36463ce77 Update macOS CI (#7572)
* Use macOS 13

See: https://github.com/actions/runner-images/issues/10721

* Upgrade to XCode 15.2

XCode 15.2 is the default on macOS 13

* Fix unqualified call to std::move warning

* Fix sprintf deprecated warnings

* Upgrade macOS 14 ARM64 builds to XCode 15.4

See: https://github.com/actions/runner-images/issues/10703

* Fix unused lambda capture warnings in Fader.cpp

* Fix unused variable warnings

* Fix formatting warning

Cannot format `const void*` as a string

* Force lambda conversion to function pointer
2024-11-06 17:46:12 -05:00
saker
07baf9e27a Tidy up MixerChannelView (#7527) 2024-11-03 02:13:55 -05:00
Rossmaxx
9912fd88e3 Add member variable for base sample rate and inline sample rate getter functions (#7552)
Co-authored-by: saker <sakertooth@gmail.com>
2024-10-30 19:55:11 -04:00
cyberrumor
b5de1d50e1 Fix PeakController attack/decay, use linear interpolation between samples (#7566)
Historically, the PeakController has had issues like attack/decay knobs
acting like on/off switches, and audio artifacts like buzzing or
clicking. This patch aims to address those issues.

The PeakController previously used lerp (linear interpolation) when
looping through the sample buffer, which was in updateValueBuffer. This
lerp utilized attack/decay values from control knobs. This is not the
correct place to utilize attack/decay because the only temporal data
available to the function is the frame and sample size. Therefore the
coefficient should simply be the sample rate instead.

Between each sample, processImpl would set m_lastSample to the RMS
without any sort of lerp. This resulted in m_lastSample producing
stair-like patterns over time, rather than a smooth line.

For context, m_lastSample is used to set the value of whatever is
connected to the PeakController. The basic lerp formula is:

m_lastSample = m_lastSample + ((1 - attack) * (RMS - m_lastSample))

This is useful because an attack of 0 sets m_lastSample to RMS, whereas
an attack of 1 would set m_lastSample to m_lastSample. This means our
attack/decay knobs can be used on a range from "snap to the next value
immediately" to "never stray from the last value".

* Remove attack/decay from PeakController frame lerp.
* Set frame lerp coefficient to 100.0 / sample_rate to fix buzzing.
* Add lerp between samples for PeakController to fix stairstep bug.
* The newly added lerp utilizes (1 - attack or decay) as the
  coefficient, which means the knobs actually do something now.
2024-10-28 15:01:08 -04:00
saker
1f37c9ba7c Inline TimePos and TimeSig functions to improve performance (#7549)
* Inline TimeSig functions

* Inline TimePos functions
2024-10-26 12:41:46 -04:00
Dalton Messmer
e6776bcfe5 Remove usage of QTextCodec in Hydrogen Import plugin (#7562)
* Remove QTextCodec

QTextCodec was removed from Qt6 and is only available through the
Qt5Compat module.

QTextCodec was only used by the HydrogenImport plugin when importing old
Hydrogen files that were saved using TinyXML before it supported UTF-8.
HydrogenImport would use QTextCodec to try to get the current encoding
from the locale, and then use that as a best guess for interpreting the
XML data in the unspecified encoding it was saved in. None of this was
ever reliable, since the encoding of the computer that saved the
Hydrogen file might not be the same as the computer running LMMS and
importing that file.

There is no good solution here, so I decided to simply assume the old
Hydrogen files are UTF-8 encoded. The worst that can happen is someone's
ancient Hydrogen files containing non-ASCII text of some random encoding
becomes mojibake'd after importing into LMMS, which is something that
already could have happened.

* Clean up a little
2024-10-23 13:17:14 -04:00
Lost Robot
b8b1dae407 Optimize dBFS/amplitude conversion functions (#7535)
* Optimize dBFS <-> amplitude functions
2024-10-15 17:59:47 +05:30
Johannes Lorenz
97b61bbd9a Make PluginView::isResizable a virtual (#7541)
Remove the member `PluginView::m_isResizable` and it's associated method `setResizable`. Turn `isResizable` into a virtual method.

The reasoning is that whether or not an effect can be resized depends on its implementation. Therefore does not make sense to have a method like `setResizable`. If the underlying implementation does not support resizing then it would not make sense to call `setResizable(true)`. So `isResizable` now describes the underlying ability of a plugin to resize. It's then up to the clients of that method to decide how to treat the result of `isResizable`, i.e. if they want to make use of the ability to resize or not.
2024-10-12 10:39:42 +02:00
Michael Gregorius
fb5516cfdc Track operations widget with layout (#7537)
Put the elements of the `TrackOperationsWidget` into layouts. These are:
* The grip that can be used to move tracks
* The gear icon that opens the operations menu
* The mute button
* The solo button

The grip that can be used to move tracks around is extracted into its own class called `TrackGrip`. This has several advantages:
* It can be put into a layout.
* It can render itself at arbitrary sizes by simply repeating its pattern pixmap.
* It can be used in a much more object-oriented way because it emits signals when it is grabbed and released.
* It is responsible for locally updating its cursor state.

The default cursor of the grip now is an open hand which indicates to the users that it can be grabbed. While being grabbed the cursor now is a closed hand.

## Technical details
The class `TrackOperationsWidget` now holds an instance of `TrackGrip` and provides a getter to retrieve it. This getter is used by `TrackView` to connect to the two new signals `grabbed` and `released`. The method `TrackOperationsWidget::paintEvent` now only paints the background as it does not need to paint the grip anymore.

The `TrackView` now handles the grabbing and release of the grip in `TrackView::onTrackGripGrabbed` and `TrackView::onTrackGripReleased`. Because the events and cursor states are now handled by `TrackGrip` this code could be removed from `TrackView::mousePressEvent`.

There was a comment in `TrackView` which indicated that the `TrackOperationsWidget` had to be updated when the track is moved and released because it would hide some elements during the move. The comment and the corresponding code was removed because the operations widget does not hide its elements during moves (this was already the state before the changes made by this commit).

Adjust the style sheets of the classic and default themes with regards to the `QPushButton` that's used to show the gear menu in the `TrackOperationsWidget`. The `>` has been removed because the `QPushButton` is not a direct decendent of the `TrackOperationsWidget` anymore.

### Wrapping of `PixmapButton` in `QWidget`
The PixmapButtons that are used in `TrackOperationsWidget` current have to be wrapped into a `QWidget`. This is necessary due to some strange effect where the PixmapButtons are resized to a size that's larger than their minimum/fixed size when the method `show` is called in `TrackContainerView::realignTracks`. Specifically, with the default theme the buttons are resized from their minimum size of (16, 14) to (26, 26). This then makes them behave not as expected in layouts.

The resizing is not done for QWidgets. Therefore we wrap the PixmapButton in a QWidget which is set to a fixed size that will be able to show the active and inactive pixmap. We can then use the QWidget in layouts without any disturbances.

The resizing only seems to affect the track view hierarchy and is triggered by Qt's internal mechanisms. For example the buttons in the mixer view do not seem to be affected.

If you want to debug this simply override "PixmapButton::resizeEvent" and trigger a break point in there, e.g. whenever the new size is not (16, 14).

### More layout-friendly PixmapButton

Make the `PixmapButton` more friendly for layouts by implementing `minimumSizeHint`. It returns a size that accommodate to show the active and the inactive pixmap.

Also make `sizeHint` return the minimum size hint. The previous implementation would have made layouts jump when the pixmap is toggled with pixmaps of different sizes.
2024-10-12 10:02:56 +02:00
Michael Gregorius
378ff8bab0 Fix the maximization of sub windows (#7530)
## Fix rendering of maximized sub windows

### Adjustments in paintEvent
In `SubWindow::paintEvent` don't paint anything if the sub window is
maximized . Otherwise some gradients are visible behind the maximized
child content.

### Adjustments in adjustTitleBar
In `SubWindow::adjustTitleBar` hide the title label and the buttons if the
sub window is maximized. Always show the title and close button if not
maximized. This is needed to reset the state correctly after
maximization.

Remove some calls to `isMaximized` where we already know that the sub
window is not maximized, i.e. where these calls would always return
`false`.

One adjustment would have resulted in a call to `setHidden(false)`. This
was changed to `setVisible(true)` to get rid of the double negation.

The other `false` would have gotten in an or statement and thus could be
removed completely.

### Add method addTitleButton
Add the helper method `SubWindow::addTitleButton` to reduce code
repetition in the constructor.

### Other changes
Remove a dependency on the `MdiArea` when checking if the sub window is
the active one. Query its own window state to find out if it is active.

When calling `setWindowFlags` in the constructor only adjust the existing
flags with the changes that we actually want to do. It was ensured that
all other flags that have been set before still apply with this change.
2024-10-10 10:36:25 +02:00
Steffen Baranowsky
066f6b5e95 Align the rename line edit for tracks (#7414)
Align the rename line edit for tracks.

Make sure that the rename line edit of the `TrackLabelButton` has the
same font size as the widget itself. Because the font size is defined
via style sheets the font size of the line edit has to be set when the
actual renaming starts and not in the constructor. The reason is that
style sheets are set after the constructor has run.

Rename the local variable `txt` to the more speaking name `trackName`.

Ensure that the line edit is moved to the correct place for different
icon sizes by taking the icon size into account. To make this work this
also has to be done in the `rename` method.

## Other changes

Streamline the default style sheet of `TrackLabelButton` by removing
repeated properties that are inherited from the "main" style sheet, i.e.
that are already part of `lmms--gui--TrackLabelButton`.

Interestingly, the `background-color` property had to be repeated for
`lmms--gui--TrackLabelButton:hover`.

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
2024-10-07 13:25:11 +02:00
Rossmaxx
79eac411a0 Removed dead code using #if 0 (#7521)
Removed code that's has been deactivated using `#if 0`.
2024-10-07 13:21:18 +02:00
firewall1110
639e122efe Fix empty editor windows (#7515)
Fix the problem with empty windows as described in issue #7412.

The `refocus` method in `MainWindow` is made public so that it can be called from `Editor::closeEvent`. It has also been refactored for better readability.

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-10-07 13:15:07 +02:00
regulus79
7dbc80926d Adding proportional scrolling (#7476)
Add proportional scrolling to the song editor, piano roll and automation editor. Proportional scrolling means that if for example a certain measure is on the right side of the song editor then it will take a certain number of mouse wheel moves to get it to the left side of the editor. It is the same number of wheel moves regardless of the zoom level.
2024-10-06 21:27:39 +02:00
Lisa Magdalena Riedler
0363ee6d16 fix various AudioFileProcessor bugs (#7533)
* fix out-of-bounds crash in AudioFileProcessor

by correctly setting m_from and m_to without them interfering with each other

* fixed flattened wave caused by inaccurate math

see PR for before/after

* simply stop drawing AFP waveform when there's no more data

this fixes the single point at the end of waveforms that sometimes shows up

* fixed seemingly insignificant type confusion (?)

execution seemed fine but my debugger started freaking out,
and if gdb is telling me I got a negative-sized vector,
I'd rather fix this issue than speculate "it's probably fine"

* fixed data offset for AFP waveform vis

the data itself isn't reversed, so we have to account for that
2024-10-06 11:26:57 +02:00
LMMS Service
e0ae8a1cec locale: Update translations 2024-10-02 10:57:13 -06:00
liushuyu
a83130f8c9 .tx/config: migrate the configuration to v2 format 2024-10-02 10:57:13 -06:00
Dalton Messmer
121d608c3a Reintroduce fast math functions (#7495)
* Add fast fma functions

* Use fast fma functions

* Add fast pow function

* Use fast pow function

* Fix build

* Remove fastFma

* Avoid UB in fastPow

On GCC with -O1 or -O2 optimizations, this new implementation generates
identical assembly to the old union-based implementation
2024-10-01 14:35:15 -04:00
saker
860749a8a1 Reformat MixerChannelView classes (#7431) 2024-09-30 19:32:21 -04:00
Rossmaxx
729593c022 Fix hardcoded fonts scaling issues (#7493)
* changed font sizes to better values

* rename gui_templates.h to FontHelper.h

* replace hardcoded values with constants

* make knob labels use small font

* code review from michael

* more consolidation

* Fix text problem in Vectorscope

Fix a problem with cutoff text in Vectorscope. During the constructor
call of `LedCheckBox` the method `LedCheckBox::onTextUpdated` is
triggered which sets a fixed size that fits the pixmap and the text.
After instantiating the two instances in `VecControlsDialog` the
constructor then set a minimum size which overrode the fixed size that
was previously set. This then led to text that was cutoff.

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
2024-09-28 13:18:02 +05:30
saker
6a7b23b278 Partially revert #7453 (#7519) 2024-09-26 08:56:34 -04:00
Dalton Messmer
18252088ba Refactor Effect processing (#7484)
* Move common effect processing code to wrapper method

- Introduce `processImpl` and `sleepImpl` methods, and adapt each effect
plugin to use them
- Use double for RMS out sum in Compressor and LOMM
- Run `checkGate` for GranularPitchShifterEffect
- Minor changes to LadspaEffect
- Remove dynamic allocations and VLAs from VstEffect's process method
- Some minor style/formatting fixes

* Fix VstEffect regression

* GranularPitchShifterEffect should not call `checkGate`

* Apply suggestions from code review

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

* Follow naming convention for local variables

* Add `MAXIMUM_BUFFER_SIZE` and use it in VstEffect

* Revert "GranularPitchShifterEffect should not call `checkGate`"

This reverts commit 67526f0ffe.

* VstEffect: Simplify setting "Don't Run" state

* Rename `sleepImpl` to `processBypassedImpl`

* Use `MAXIMUM_BUFFER_SIZE` in SetupDialog

* Pass `outSum` as out parameter; Fix LadspaEffect mutex

* Move outSum calculations to wrapper method

* Fix Linux build

* Oops

* Apply suggestions from code review

Co-authored-by: Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com>

* Apply suggestions from code review

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

---------

Co-authored-by: saker <sakertooth@gmail.com>
Co-authored-by: Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com>
2024-09-20 20:00:36 -04:00
saker
1d7ed16dc9 Make the send button and receive arrow occupy the same space in mixer channels (#7503) 2024-09-19 12:53:40 -04:00
saker
c952d56591 Restore some whitespace to the mixer channel layout (#7507) 2024-09-19 12:00:16 -04:00
saker
01294192c8 Fix Lb302 silence (#7504)
This problem seem to arise due to casting _n->framesLeft() and _n->offset() from an unsigned type (size_t) to a signed type (int). The fix is to use size_t as the type for std::max across the board.
2024-09-18 11:25:47 -04:00
saker
4803bbb73a Shrink mixer channel strip (#7502)
Remove all content margins and spacing between child widgets for each mixer channel strip.
2024-09-18 04:45:46 -04:00
DanielKauss
7d35d4225e SlicerT UI update (#7453)
* Update SlicerT UI

* Style review

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>

* Style fixes

---------

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>
2024-09-17 11:35:01 +05:30
Lost Robot
588aab3389 Replace Compressor infinite ratio icons (#7501) 2024-09-15 21:40:05 +05:30
regulus79
48314959b8 Fix sample clip position when reversing (#7446) 2024-09-13 18:54:00 -04:00
saker
d703f39153 Process metronome every MIDI tick (#7483) 2024-09-04 12:58:36 -04:00
Grzegorz Pruchniakowski
b81f806d63 Fix: unnecessary space in Update EqControlsDialog.cpp (#7485)
* Fix: unnecessary space in Update EqControlsDialog.cpp

Fix: unnecessary space in Update EqControlsDialog.cpp

Greetings,
Gootector

* Style fix from Ross

---------

Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>
2024-09-03 18:00:28 +05:30
Grzegorz Pruchniakowski
9a76d31732 Fix typo in DataFile.cpp (#7478) 2024-09-02 10:44:44 -04:00
Rossmaxx
35f350eeff Remove Noise class from flanger (#7473) 2024-08-28 15:46:48 -04:00
Rossmaxx
a992019626 Cleanup lmms_math.h (#7382)
* simplified fraction and absfraction functions

* removed unused fastSqrt() and fastPow()  
functions

* unused absMin() and absMax()

* move roundAt to math header

* Code review from saker

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

* use std::trunc()

* fixup after fixing merge conflicts

* remove unused fastFma and fastFmal functions.

* remove lmms_basics include, not needed

* use signedPowf from lmms_math in NES

* removed fastRand function, unused

* remove unused sinc function

* cleanup signedPowf

* code review

* further simplify random number math

* removed static from lmms_math file

---------

Co-authored-by: saker <sakertooth@gmail.com>
2024-08-28 12:48:56 +05:30
saker
ff8c47062f Continue processing Song even when no tracks are found (#7458) 2024-08-20 14:32:46 -04:00
Michael Gregorius
88ee83bb4a Do not save MIDI connections in presets (#7445)
Ensure that no MIDI information (connected inputs, outputs, etc.) is
stored in presets. This main fix can be found in
`InstrumentTrack::saveTrackSpecificSettings` where the state of the
MIDI ports are now only saved if we are not in preset mode.

The remaining changes are concered with a refactoring of the code
that's related to saving and loading presets.

The refactoring mainly revolves around the removal of the member
`m_simpleSerializingMode` and the method `setSimpleSerializing` in
`Track`.

This is accomplished by introducing two new methods `saveTrack` and
`loadTrack`. These methods have a similar interface to `saveSettings`
and `loadSettings` but they additionally contain a boolean which
indicates if a preset is saved/loaded or a whole track. Both new
methods contain the previous code of `saveSettings` and `loadSettings`.
The latter two now only delegate to the new methods assuming that the
full track is to be stored/loaded if called via the overridden methods
`saveSettings` and `loadSettings`.

The methods `savePreset` and `loadPreset` are added as well. They call
`saveTrack` and `loadTrack` with the preset boolean set to `true`.
These methods are now used by all places in the code where presets are
saved or loaded which makes the code more readable. Clients also do not
need to know any implementation details of `Track`, e.g. like having to
call `setSimpleSerializing`.

Adjust `saveTrackSpecificSettings` so that it also passes information
of whether a preset or a whole track is stored. This leads to changes
in the interfaces of `AutomationTrack`, `InstrumentTrack`,
`PatternTrack` and `SampleTrack`. Only the implementation of
`InstrumentTrack` uses the new information though.
2024-08-20 19:50:39 +02:00
szeli1
5e697f01c8 Fix zooming and sliding of the waveform view in AudioFileProcessor (#7377) 2024-08-19 13:20:19 -04:00
Alex
58ce9b476a Fix track handles dissapearing (#6338) 2024-08-16 22:20:39 +05:30
szeli1
bda1a9c37e Add input dialog to the mixer channel LCD spin box (#7399)
Co-authored-by: saker <sakertooth@gmail.com>
2024-08-11 11:14:43 -04:00
Michael Gregorius
d8e4d8c115 Remove support for SDL1 (#7443)
Remove the fallback code in `CMakeLists.txt`. Keep the message that's shown when SDL is wanted but not found. Remove the specific `LMMS_HAVE_SDL2` define.

Just print "OK" if SDL is found.

Remove several ifdefs which check for SDL2 or SDL1. Remove all code related to SDL1.
2024-08-11 12:20:02 +02:00
regulus79
0e96c267cd Fix bug with continuous autoscrolling when smooth scrolling is enabled (#7433) 2024-08-10 22:39:55 -04:00
Michael Gregorius
74c73e5848 SDL driver's input and output device configuration via combo box (#7421)
* Enable configuration of input device for SDL

Up to now the SDL audio driver attempted to use the default recording
device. This might not be what users want or expect, especially since the
actually used device is not visible anywhere. So if recording does not
work for the users they have no way to find out what's wrong.

Extend the settings screen of the SDL driver with a combo box that allows
to select the input device to be used. Store the selected device name in
a new attribute called "inputdevice" in the "audiosdl" section of the
configuration file.

Use the information from the configuration when attempting to inialize
the input device. Fall back to the default device if that does not work.

(cherry picked from commit 33139b9f4c)

* Provide a setting for system default input

Provide the setting "[System Default]" which instructs the SDL driver to
use the default device of the system as the input device. In the
configuration file this option is represented as an empty string. This
should play well with the current existing configuration of the users.

(cherry picked from commit 29c43c2bb6)

* Configuration of output device for SDL

Let users configure the output device that's used by the SDL driver.
Code-wise the implementation is very similar to the input device
configuration.

Use a `QComboBox` instead of a `QLineEdit` for `m_device` and rename it
to `m_playbackDeviceComboBox`.

Rename `s_defaultInputDevice` to `s_systemDefaultDevice` because it is
used in the context of playback and input devices.

(cherry picked from commit 1ab45e4994)

* Ensure label visibility

Make sure that labels are always shown by setting the row wrap policy of
the form layout to wrap long rows.

(cherry picked from commit a123d0e3cb)

* Rename "Device"

Rename "Device" to "Playback device" to make clear what the setting
refers to.

(cherry picked from commit 1f0cda4983)

* Remove repeated strings

Introduce const expressions to get rid of repeated strings with a risk
of typos.

(cherry picked from commit f9ea9705b8)

* Apply some more changes

Apply some more changes that have been made to `AudioSdl` in the
recording branch.

* Conditional ternary operator

Also use a conditional ternary operator for the input device setup.

* Methods for population of combo boxes

Move the population of the input and playback device combo boxes into
the methods `populatePlaybackDeviceComboBox` and
`populateInputDeviceComboBox`.

* Sort devices in combo box

Sort the devices names alphabetically in the input and playback combo
boxes. The default devices is always shown as the first entry.

* Code review fixes

Use `AudioDeviceSetupWidget` instead of `QObject` to translate "[System
Default]".

Fix copy/paste error in comment.

* Simplify some constexpr statements
2024-08-10 22:33:52 +02:00
Johannes Lorenz
44a8b038f5 Fix #5851: Implement EffectRackView::sizeHint() (#7428)
* Fix #5851: Implement `EffectRackView::sizeHint()`

This fixes `EffectRackView` to have a permanent size hint instead of
resizing the widget once in `InstrumentTrackWindow`. The size hint tells
the `InstrumentTrackWindow` to not increase with a growing number of
effects in the `EffectRackView`.
2024-08-10 09:00:06 +05:30
saker
632966caee Do not put the main thread in realtime or high priority (#7436) 2024-08-07 13:12:37 -04:00
Rossmaxx
6c7fecd8d7 Fix build regression from #7380 (#7437) 2024-08-06 23:23:17 -04:00
Rossmaxx
828cefb4ea Remove typeInfo struct from lmms_basics.h (#7380)
* remove typeInfo struct from lmms_basics.h

* Code review

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

* converted epsilon to a constant

* renamed to approximatelyEqual and moved to top

---------

Co-authored-by: saker <sakertooth@gmail.com>
2024-08-07 07:33:10 +05:30
szeli1
c16616cca4 Fix duplication of solo state when cloning tracks (#7391) 2024-08-05 07:16:03 -04:00
saker
5b366cfe3c Revert "Switch to libsamplerate's callback API in Sample (#7361)" (#7410)
This reverts commit 2f5f12aaae.
2024-08-04 11:01:26 -04:00
Johannes Lorenz
735e483d9f Fix memleaks in help/version (#7423)
* Fix memleaks in help/version

These memory leaks caused help and version to crash at the end, due to
rpmalloc's memleak detection.
2024-08-04 19:51:34 +05:30
Johannes Lorenz
1f224ad765 Add yamllint checks (#7424) 2024-08-04 15:47:43 +02:00
Michael Gregorius
b7548b7b7a Warn about LADSPA problems (#7267)
Introduce a method which checks if a file that's loaded has the LADSPA
controls saved in an old format that was written with a version before
commit e99efd541a.

The method is run at the end so that problems in all file versions are
detected. If a real upgrade was to be implemented it would have to run
between `DataFile::upgrade_0_4_0_rc2` and `DataFile::upgrade_1_0_99`.

See #5738 for more details.

If a problematic file is encountered a warning dialog that provides the number of affected LADSPA plugins is shown.
2024-08-04 15:30:42 +02:00
regulus79
ce17c95636 Add Continuous Auto-Scrolling (#7396)
* Initial Commit

* Refactor code and add new icons

* Fix logical error

* Add smooth scrolling to Song Editor

* Remove unused variable

* Fix scrolling speed and scrollbar width

* Remove QDebug and re-add a newline I deleted in an unrelated file

* Forgot to add files to commit

* Remove unused variable

* Fix Styling

* Fix Styling Again

* Fix Styling Again

* Fix Styling Again

* Add icons for classic theme

* Accidentally committed varying scroll speed with zoom -- removing

* Change abs to std::abs

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

* Change qMax to std::max and use static_cast

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

* Simplify stepped auto scrolling

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

* Remove unnecessary parentheses

* Remove return statement causing the play head line to stop

* Add specific tooltips to auto scrolling button states

* Remove `== true` from SongEditor.cpp

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

* Make tooltips translatable

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

* Fix zooming position calculation

* Rename bars to ticks

* Fix rubberband rect size

---------

Co-authored-by: saker <sakertooth@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2024-08-04 10:30:42 +02:00
Johannes Lorenz
1c865843f7 Lv2: Improve plugin description (#7357) 2024-07-28 15:55:41 +02:00
Johannes Lorenz
0d3c43d237 Fixup of #7381 (#7401)
Fixup of commit 9c0fc8fc69
2024-07-28 15:54:17 +02:00
Dominic Clark
627209ad1d Apply warning flags to RemoteVstPlugin too (#7389) 2024-07-27 17:23:34 +01:00
Michael Gregorius
592da1cac7 Fix include of array in BasicFilters.h (#7398)
Fix a missing include of `array` in `BasicFilters.h`.
2024-07-27 18:02:05 +05:30
szeli1
99c30ea1ab Fixed alt + left or right causing a crash in PianoRoll (#7390) 2024-07-24 19:00:28 -04:00
saker
2f5f12aaae Switch to libsamplerate's callback API in Sample (#7361) 2024-07-24 18:50:47 -04:00
Dominic Clark
851c884f58 Re-enable disabled GCC warnings where possible (#7379) 2024-07-21 22:34:34 +01:00
Petar Katić
9c0fc8fc69 Made it so ZynAddSubFx isn't lowpassed by default (#7381)
In this repo, the only changes made are updating the according submodule
and changing the FREQ knob in ZynAddSubFx's LMMS GUI.
2024-07-20 13:06:51 +02:00
Rossmaxx
12632e6b5e Remove BufferManager::clear (#7378) 2024-07-13 17:01:31 -04:00
saker
1420a1f7e8 Define fpp_t and f_cnt_t to be of size_t (#7363)
Defines `fpp_t` and `f_cnt_t` to be of `size_t` within `lmms_basics.h`.  Most of the codebase used `fpp_t` to represent the size of an array of sample frames, which is incorrect, given that `fpp_t` was only 16 bits when sizes greater than 32767 are very possible. `f_cnt_t` was defined as `size_t` as well for consistency.

---------

Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
2024-07-09 06:27:33 -04:00
Johannes Lorenz
f2c815b214 Remove term "blacklist" (#7365)
About the PR:

* We use "blocked" as an abstract term, when there may be different reasons
* If there is a concrete reason, we use a more concrete word like "unstable"
  or "not useful"
* Double negations like "don't block" or "block unstable" are avoided

Besides this, this PR

* Lets `Lv2Manager` hide the full `std::set` of plugin URIs
* Fixes occurences of "BuffersizeLessThan32" - it is less or equal
* Moves `enableBlockedPlugins` from Engine to `ConfigManager`
2024-07-08 23:02:49 +02:00
Dominic Clark
bdd94ec215 Run CMake with -Werror=dev in CI (#7322) 2024-07-06 14:14:51 +01:00
Michael Gregorius
0384813ae4 Fix buzz in Monstro's 2nd oscillator (#7334) (#7368)
Fix a buzzing sound in Monstro's 2nd oscillator. It was introduced with
commit c2f2b7e0d7.

The problem was caused by checking if `len_r` is not equal to 0 instead of
checking `pd_r`.
2024-07-05 20:17:44 +05:30
saker
538572a3c5 Change fpp_t usage in SampleFrame to use size_t instead (#7362) 2024-07-02 12:02:34 -04:00
saker
449e669067 Revert "Reduce Memory Leaks (#7345)" (#7360)
This reverts commit 0bc911e266.
2024-07-01 13:43:05 -04:00
Andrew Wiltshire
0bc911e266 Reduce Memory Leaks (#7345) 2024-07-01 10:29:15 -04:00
Andrew Wiltshire
fb5268ebae Adds "Show Hidden Content" checkbox (#7309)
* Adds "Show Hidden Content Dialogue"

* Update FileBrowser.cpp

* Automatically rearrange layout to fit check boxes

* check if files are hidden in a cross platform manner

* put the hidden files checkbox below the user and factory check boxes at all times

* removed layout rearrangement code

* moved checkbox code to FileBrowser

* Removed unused include

* Cleanup in FileBrowser

Move the method `addContentCheckBox` to the other private methods.
Remove the method parameters because it can use the members.

Remove the conditional when adding the "Hidden content" checkbox because
it was always true.

---------

Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
2024-06-30 22:23:19 +02:00
FyiurAmron
edf6bf8dfe Remove mingw-std-threads from 3rd party deps and use native libs/headers instead (#7283)
* Remove mingw-std-threads from 3rd party deps

 and use native libs/headers instead

* switch MinGW to POSIX in CI
2024-06-30 15:49:06 -04:00
saker
13a05b99d3 Use recursive mutex for requestChangeInModel/doneChangeInModel (#7359)
* Make model change mutex recursive

* Initialize s_renderingThread
2024-06-30 14:54:20 -04:00
Michael Gregorius
286e62adf5 Simplify sample frame operations (make it a class) (#7156)
* Remove the struct StereoSample

Remove the struct `StereoSample`. Let `AudioEngine::getPeakValues` return a `sampleFrame` instead.

Adjust the calls in `Mixer`  and `Oscilloscope`.

* Simplify AudioEngine::getPeakValues

* Remove surroundSampleFrame

Some code assumes that `surroundSampleFrame` is interchangeable with `sampleFrame`. Thus, if the line `#define LMMS_DISABLE_SURROUND` is commented out in `lmms_basics.h` then the code does not compile anymore because `surroundSampleFrame` now is defined to be an array with four values instead of two. There also does not seem to be any support for surround sound (four channels instead of two) in the application. The faders and mixers do not seem to support more that two channels and the instruments and effects all expect a `sampleFrame`, i.e. stereo channels. It therefore makes sense to remove the "feature" because it also hinders the improvement of `sampleFrame`, e.g. by making it a class with some convenience methods that act on `sampleFrame` instances.

All occurrences of `surroundSampleFrame` are replaced with `sampleFrame`.

The version of `BufferManager::clear` that takes a `surroundSampleFrame` is removed completely.

The define `SURROUND_CHANNELS` is removed. All its occurrences are replaced with `DEFAULT_CHANNELS`.

Most of the audio devices classes, i.e. classes that inherit from `AudioDevice`, now clamp the configuration parameter between two values of `DEFAULT_CHANNELS`. This can be improved/streamlined later.

`BYTES_PER_SURROUND_FRAME` has been removed as it was not used anywhere anyway.

* Make sampleFrame a class

Make `sampleFrame` a class with several convenience methods. As a first step and demonstration adjust the follow methods to make use of the new functionality:
* `AudioEngine::getPeakValues`: Much more concise now.
* `lmms::MixHelpers::sanitize`: Better structure, better readable, less dereferencing and juggling with indices.
* `AddOp`, `AddMultipliedOp`, `multiply`: Make use of operators. Might become superfluous in the future.

* More operators and methods for sampleFrame

Add some more operators and methods to `sampleFrame`:
* Constructor which initializes both channels from a single sample value
* Assignment operator from a single sample value
* Addition/multiplication operators
* Scalar product

Adjust some more plugins to the new functionality of `sampleFrame`.

* Adjust DelayEffect to methods in sampleFrame

* Use composition instead of inheritance

Using inheritance was the quickest way to enable adding methods to `sampleFrame` without having to reimpement much of `std::array`s interface.

This is changed with this commit. The array is now a member of `sampleFrame` and the interface is extended with the necessary methods `data` and the index operator.

An `average` method was added so that no iterators need to be implemented (see changes in `SampleWaveform.cpp`).

* Apply suggestions from code review

Apply Veratil's suggestions from the code review

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

* Fix warnings: zeroing non-trivial type

Fix several warnings of the following form:

Warnung: »void* memset(void*, int, size_t)« Säubern eines Objekts von nichttrivialem Typ »class lmms::sampleFrame«; use assignment or value-initialization instead [-Wclass-memaccess]

* Remove unnecessary reinterpret_casts

Remove some unnecessary reinterpret_casts with regards to `sampleFrame` buffers.

`PlayHandle::m_playHandleBuffer` already is a `sampleFrame*` and does not need a reinterpret_cast anymore.

In `LadspaEffect::processAudioBuffer` the `QVarLengthArray` is now directly initialized as an array of `sampleFrame` instances.

I guess in both places the `sampleFrame` previously was a `surroundSampleFrame` which has been removed.

* Clean up zeroSampleFrames code

* Fix warnings in RemotePlugin

Fix some warnings related to calls to `memcpy` in conjunction with`sampleFrame` which is now a class.

Add the helper functions `copyToSampleFrames` and `copyFromSampleFrames` and use them. The first function copies data from a `float` buffer into a `sampleFrame` buffer and the second copies vice versa.

* Rename "sampleFrame" to "SampleFrame"

Uppercase the name of `sampleFrame` so that it uses UpperCamelCase convention.

* Move SampleFrame into its own file

Move the class `SampleFrame` into its own class and remove it from `lmms_basics.h`.

Add forward includes to all headers where possible or include the `SampleFrame` header if it's not just referenced but used.

Add include to all cpp files where necessary.

It's a bit surprising that the `SampleFrame` header does not need to be included much more often in the implementation/cpp files. This is an indicator that it seems to be included via an include chain that at one point includes one of the headers where an include instead of a forward declaration had to be added in this commit.

* Return reference for += and *=

Return a reference for the compound assignment operators `+=` and `-=`.

* Explicit float constructor

Make the  constructor that takes a `float` explicit.

Remove the assignment operator that takes a `float`. Clients must use the
explicit `float` constructor and assign the result.

Adjust the code in "BitInvader" accordingly.

* Use std::fill in zeroSampleFrames

* Use zeroSampleFrames in sanitize

* Replace max with absMax

Replace `SampleFrame::max` with `SampleFrame::absMax`.

Use `absMax` in `DelayEffect::processAudioBuffer`. This should also fix
a buggy implementation of the peak computation.

Add the function `getAbsPeakValues`. It  computes the absolute peak
values for a buffer.

Remove `AudioEngine::getPeakValues`. It's not really the business of the
audio engine. Let `Mixer` and `Oscilloscope` use `getAbsPeakValues`.

* Replace scalarProduct

Replace the rather mathematical method `scalarProduct` with
`sumOfSquaredAmplitudes`. It was always called on itself anyway.

* Remove comment/TODO

* Simplify sanitize

Simplify the `sanitize` function by getting rid of the `bool found` and
by zeroing the buffer as soon as a problem is found.

* Put pointer symbols next to type

* Code review adjustments

* Remove "#pragme once"
* Adjust name of include guard
* Remove superfluous includes (leftovers from previous code changes)

---------

Co-authored-by: Kevin Zander <veratil@gmail.com>
2024-06-30 20:21:19 +02:00
Lost Robot
a0fbd7e7b4 Initialize LOMM arrays (#7355)
Fixes LOMM distortion and delay bug.
2024-06-30 17:07:38 +05:30
FyiurAmron
118ca4e9a2 Cleanup of MinGW-related scripts (#7327)
Consolidate and simplify mingw-related scripts.
Remove support for outdated Ubuntu versions.
2024-06-28 11:16:44 -04:00
Andrew Wiltshire
7c74fbc8c5 Capitalise root sidebar widget (#7350)
Co-authored-by: Rossmaxx <74815851+Rossmaxx@users.noreply.github.com>
2024-06-27 20:59:33 +05:30
Lost Robot
f2fbcecc50 Fix bad Granular Pitch Shifter init values (#7354) 2024-06-26 22:18:24 -07:00
Lost Robot
9a0db6a17c Fix pitch shifter glide 0 division (#7348) 2024-06-26 11:41:54 -07:00
Lost Robot
6634cec127 Add Granular Pitch Shifter effect (#7328) 2024-06-26 11:00:27 +05:30
Lost Robot
1036144738 Fix uninitialized compressor values (#7343) 2024-06-24 09:17:48 -07:00
Rossmaxx
aaca5fbd0e Remove MemoryHelper (#7335)
* remove memory helper and replace alignedMalloc with stl version

* it's aligned_alloc

* forgot about destructor

* switch to unique pointers

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

* compile fix

---------

Co-authored-by: saker <sakertooth@gmail.com>
2024-06-24 21:22:19 +05:30
Dominic Clark
a1f7753a94 Fix MSVC warnings up to level 2 (#7329)
* Fix MSVC warnings up to /W2

* Fix large shift UB warning
2024-06-22 02:05:14 -04:00
Monospace-V
26646c653c Style format DrumSynth (#7189)
Co-authored-by: saker <sakertooth@gmail.com>
2024-06-22 10:38:01 +05:30
Dominic Clark
39b7d16f15 Fix caching for macOS CI jobs (#7326)
* Add architecture to macOS cache keys

* Only save Homebrew cache if lock file has changed
2024-06-18 16:56:19 -04:00
notaz
e400d81ecc set "child subreaper" process attribute on Linux (#7315)
When launching the wine VST process various wrappers may be involved,
when they exit the VST process becomes orphaned. This breaks the
PollParentThread mechanism which is responsible for cleaning up
processes in case of a crash. Because of this 64bit VST process exits
prematurely, in other words 64bit VST is currently broken in a typical
wine configuration.

A solution suggested by Lukas W is to set the PR_SET_CHILD_SUBREAPER
flag which makes the kernel reparent such process to lmms and
PollParentThread then works as intended.

Co-authored-by: Lukas W <lukaswhl@gmail.com>
2024-06-18 14:51:07 +05:30
Dominic Clark
e76a99ee76 Suppress warnings in third-party code (#7319) 2024-06-17 22:48:04 +01:00
szeli1
2adbb166b5 arpeggiator sorted mode fixed (#7025)
Fixes an issue where sorted arpeggios over multiple notes used a largely
unusable algorithm. piano-octave-arp instead of octave-arp-piano.

Fixes #6499
Fixes #4491
2024-06-17 16:11:55 +02:00
saker
01ffa95578 Use src_set_ratio to fix artifacts within Sample playback (#7321) 2024-06-15 18:34:10 -04:00
Rossmaxx
68ea3f5bf2 Remove debian folder (#7311)
* removed debian folder

* removed debian entries from check-strings

* fixup verify script too
2024-06-15 08:29:14 +05:30
Michael Gregorius
beedbc18a6 Add support for "factorysample:" prefix / Fix "bassloopes" typo (#7236)
## Add support for "factorysample:" prefix
Add support to upgrade files with `src` tags that are prefixed with "factorysample:".

## Fix "bassloopes" typo
Fix projects that still reference files with the typo "bassloopes" in their name.

The upgrade is implemented in its own method because it is unrelated to the BPM renaming even if it is technically very similar in its solution.

Introduce the helper method `mapSrcAttributeInElementsWithResources` which replaces the `src` attribute in elements with resources (samples and AFP) if it can be found in a map.
2024-06-14 16:22:39 +02:00
Lost Robot
b1ee626633 Fix noise generator (#7318)
This noise generator doesn't work properly when multiple noise sources are being generated simultaneously.
2024-06-13 15:18:36 -07:00
Rossmaxx
43fbcca9cb Modernize compiler and linker flags (#7255) 2024-06-02 10:52:51 +01:00
Andrew Wiltshire
969943b335 Change the wording of Instrument Plugin Dialogue (#7301)
Drag an instrument into either the Song Editor, the Pattern Editor or ~~into~~ an existing instrument track.

The word "into" seems redundant
2024-06-01 11:23:21 -04:00
Michael Gregorius
042f8ac325 Add peak indicators (#7295)
Add peak indicators to the mixer strips. They show the maximum peak value
that was observed and can be reset by clicking on them.

## Implementation details
The implementation works via a signal/slot mechanism. The `Fader` class
has a new signal `peakChanged` which reports peak values as
amplifications. A new class `PeakIndicator` is added which has a slot
`updatePeak` which is connected to the new signal in `Fader`.

The `PeakIndicator` inherits from `QLabel` and mainly deals with updating
the label text from the current peak value.

Add a `PeakIndicator` instance to `MixerChannelView`. Add a `reset`
method to `MixerChannelView` so that the mixer channel can be reset on
the loading of new projects, etc. The current implementation resets the
peak indicator back to -inf dbFS. The `reset` method is called in
`MixerView::clear`.

Remove the clamping in `Fader::setPeak` so that all peaks are reported.
Emit the new signal if the peak changes.
2024-06-01 12:09:47 +02:00
Michael Gregorius
4e93f51b75 Adjust rendering of BarModelEditor (#7299)
Adjust the rendering of BarModelEditor to make it respect logarithmic
and linear models. The code now uses `inverseScaledValue` instead of
`value` just like the `Knob` class does when calculating the angle.
2024-05-31 23:39:09 +02:00
Michael Gregorius
37795ae20a Resizable mixer channels/strips (#7293)
## Make mixer channels resizable
Make the mixer channels resizable within the mixer view.

Remove the setting of the size policy from `MixerChannelView`. Add the
`Fader` widget with a stretch factor so that it is resized within the
layout of the mixer channel/strip. Remove the stretch that was added to
the layout because the fader now stretches.

In `MixerView` remove the top alignments when widgets are added to the
layout so that they can resize. Set the channel layout to align to the
left so that it behaves correctly when it is resized by the scroll area
it is contained in. Make the widget resizable in the scroll area so that
it always fills the space. Set the minimum height of the scroll area to
the minimum size of the widget plus the scrollbar height so that the
channel strips are never overlapped by the scrollbar.

Set the size policy of the "new channel" button so that it grows
vertically with the mixer view. Set a fixed size so that it is as wide as
a mixer strip.

## Enable maximization for mixer view

Enable the maximize button for the mixer view now that it is fully
resizable.
2024-05-31 13:11:45 +02:00
BoredGuy1
94b1a382dd fixed position line disappearing when zoomed out (#7296) 2024-05-31 08:19:34 +02:00
Tres Finocchiaro
a85c98648c Add macOS arm64 builds (#7285)
Add macOS arm64 builds
2024-05-30 22:41:26 -04:00
Raine M. Ekman
6ec1ced49c Don't recalculate the song length for every added TCO while loading (#5236)
Don't make LMMS calculate the song length for every added TCO when a new project is created or a project is loaded. Instead do it only once afterwards. This is accomplished by preventing any calculations in `Song::updateLength` if a song is currently loaded. `Song::updateLength` is then called immediately after the loading flag has been set to `false` in both cases.

---------

Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
2024-05-30 18:37:08 +02:00
saker
bfeb781dc0 Redesign file browser searching (#7130) 2024-05-29 21:46:58 -04:00
FyiurAmron
e82e3f573a update veal submodule 2024-05-30 00:53:51 +02:00
Dalton Messmer
7197f1de39 Update upload-artifacts actions (#7263) 2024-05-29 20:47:25 +01:00
Raine M. Ekman
a262956ed3 Update CPU to Pentium 4 for win32 builds (#6155)
The CPU feature requirements for any currently supported 32-bit version of Windows (8.1 and 10) are PAE, NX and SSE2. That should mean a green light for bumping the CPU we build for to the minimum one with SSE2.
2024-05-29 17:46:35 +05:30
FyiurAmron
948bb4ac69 Fix to allow NSIS packaging to work for non-MSVC Windows builds (#7287) 2024-05-28 19:28:58 -04:00
FyiurAmron
d1a15e5ff8 Fix for Werror=self-move in test for GCC >= 13 (#7288) 2024-05-28 16:39:38 -04:00
Oskar Wallgren
4033406430 Automation Editor - Fix automation point forced snapping to integer value. (#7282)
* Revert "Fix glitch with automation points (#7269)"

This reverts commit d60fd0d022.

* Fix glitch in Automation Editor. This reverts the earlier fix and tries to solve the issue by instead rounding off the values of the top/bottom levels before comparison with the automation point value.

---------

Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-05-28 14:31:09 +02:00
Oskar Wallgren
0a93e1777b Bump SWH submodule to fix a crash with Reverse Delay (#7277) 2024-05-24 14:24:10 -04:00
Dalton Messmer
2e6545328c Update MinGW CI to Ubuntu 20.04 (#7259)
Update MinGW CI to Ubuntu 20.04
* Use ghcr.io/lmms/linux.mingw:20.04
* Fix deprecation in ClipView.cpp
* Fix ccache and simplify git configuration
* Apply patch by @DomClark for MinGW's SDL2 target
* Update excludelist-win
2024-05-23 13:21:57 -04:00
Rossmaxx
e9848dbbbb A few accessibility changes in default theme (#7202)
* some css tweaks for accessibility

* suggestions from review

* classic theme focus

* fix bug where button color disappears on focus

* More scrollbar color changes on hover.

* Commented the hover effect for now.

* Remove handle "hover" effect.

* scrollbar

* revert button active state
2024-05-23 17:46:15 +05:30
Rossmaxx
b803e92d63 Add menu option and hotkeys to move controllers/effects (#7139)
* added controller rack modules

* remove this-> from setFocusPolicy() and obsolete comment

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

* Use std::swap

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

* some more cleanup

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

* Replace slots with function pointers

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

* Apply fixes

---------

Co-authored-by: ejaaskel <esa.jaaskela@suomi24.fi>
Co-authored-by: saker <sakertooth@gmail.com>
2024-05-23 17:38:47 +05:30
Tres Finocchiaro
bd2362a8c0 FindWine improvements (#7268)
Improve WineHQ detection
Closes #7169 

---------

Co-authored-by: Rossmaxx <mrroshan127@gmail.com>
2024-05-23 01:25:18 -04:00
Tres Finocchiaro
c66af602ad Fix fftw linking when cross-compiling (#7276) 2024-05-22 23:52:53 -04:00
Johannes Lorenz
fa5f2aa41a Lv2Proc: Fix all code-style issues with {} 2024-05-23 00:34:00 +02:00
Tres Finocchiaro
32fe3e50e7 Add "natural" scrolling support for trackpads (#5510)
Adds QWheelEvent::inverted() support to spinboxes, knobs, sliders
2024-05-21 11:32:28 -04:00
Michael Gregorius
75d6be2eac Fix missing initialization (#7271)
Fix the missing initialization of some variables in `TrackContentWidget`.
This led to some performances issues when the widget was painted because
a for loop was executed for which the variable started at a very large
negative number and was then incremented.
2024-05-20 18:46:52 +02:00
BoredGuy1
a527427abf Changed bar lines to follow snap size (#7034)
* Added lines in between bars
* Changed bar lines to follow snap size
* Changed default zoom and quantization value
* Added constants for line widths
* Added QSS configuration for new grid line colors
* Tied line widths to QSS properties
* Changed default quantization to 1/4
* Removed clear() from destructor model
* Removed destructor in ComboBoxModel.h
* Changed member set/get functions to pass by value
* Updated signal connection with newer syntax
2024-05-20 12:37:18 +02:00
Oskar Wallgren
d60fd0d022 Fix glitch with automation points (#7269)
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-05-20 00:18:11 +02:00
szeli1
76d8f65485 Fix lost connections when restoring automation clip (#7002) 2024-05-19 22:03:07 +01:00
Pascal
0071cb6f63 Fix UI freeze when zooming in on long samples (#7253) 2024-05-19 22:36:30 +02:00
wujekbrezniew
ca109f94f4 Migrate to new LV2 header paths (#6990) 2024-05-19 14:39:20 +01:00
Pascal
0ee05f5ad8 Fix crash in AFP when playing with loop while no sample is loaded (#7266) 2024-05-18 18:40:29 -04:00
Bimal Poudel
f891bb30eb Update widths of combo boxes (#7262)
* Update widths of combo boxes

* Update src/gui/editors/PianoRoll.cpp

no space right after brace

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

* Update src/gui/editors/PianoRoll.cpp

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

* Update src/gui/editors/PianoRoll.cpp

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

* Update src/gui/editors/PianoRoll.cpp

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

---------

Co-authored-by: saker <sakertooth@gmail.com>
2024-05-17 21:32:59 -04:00
Tres Finocchiaro
7859f1c72d Fix macOS CI builds (#7261) 2024-05-16 16:23:32 -04:00
Rossmaxx
321b2b4167 Remove the missing spoken.flac file in unfa - Spoken (#7208)
Remove spoken.flac using LMMS 1.0.3
---------

Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
2024-05-16 15:51:46 -04:00
Tres Finocchiaro
a66d212221 Fix native linux VST on ARM64 (#7257) 2024-05-16 15:05:12 -04:00
Rossmaxx
36786dd83d Enable LADSPA plugins on MSVC (#6973)
Co-authored-by: Tres Finocchiaro <tres.finocchiaro@gmail.com>
Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
Co-authored-by: Dalton Messmer <messmer.dalton@gmail.com>
2024-05-13 08:44:42 +01:00
Dominic Clark
95e5f97150 Revamp resource embedding (#7241) 2024-05-12 17:38:14 +01:00
Tres Finocchiaro
6d100d1bba Remove support for msys2 (#7251) 2024-05-12 01:35:10 -04:00
Alexander Medvedev
acdf05f347 Update zynaddsubfx (#7250)
Update instrument submodule
2024-05-11 15:40:54 -04:00
Oskar Wallgren
b71d4f2aab Remove demo project Greshz-CoolSnip.mmpz (#7248) 2024-05-09 15:25:51 +02:00
Dalton Messmer
d71116b82a Update Linux CI to Ubuntu 20.04 (#7015)
- Switch to Ubuntu 20.04 Docker image ghcr.io/lmms/linux.gcc:20.04
- Linux packages have migrated from Docker Hub to https://github.com/orgs/lmms/packages
- Built using the Dockerfiles from Update Linux images lmms-ci-docker#15
- Updated the veal submodule to the latest commit on the default ladspa branch
- Fixed an error when catching a polymorphic type with GCC 9. See: LMMS/veal@0ae9287
- Added GCC flag -Wno-format-truncation for ZynAddSubFx build.
- Adds GCC flag -Wno-format-overflow for calf/veal build.

Closes #6993
2024-05-08 13:06:54 -04:00
Tres Finocchiaro
acefd06f9b Bump veal submodule (#6771)
- Add MSVC support
- Sync upstream changes
2024-05-08 01:06:03 -04:00
saker
20102c4ae4 Replace processingSampleRate with outputSampleRate in Lb302 (#7239) 2024-05-05 05:44:25 -04:00
saker
9b6e33aa5c Remove global oversampling (#7228)
Oversampling can have many different effects to the audio signal such as latency, phase issues, clipping, smearing, etc, so this should really be an option on a per-plugin basis, not globally across all of LMMS (which, in some places, shouldn't really need to oversample at all but were oversampled anyways).
2024-05-05 04:37:43 -04:00
Michael Gregorius
9bdc8adf33 Inform effects about changes in enabled model (#7237)
Add the virtual method `Effect::onEnabledChanged` which can be overridden by effects so that they can react to state changes with regards to being enabled or bypassed. The call of this methods is connected to state changes of the enabled model in the constructor of `Effect`.

Implement the method in `DualFilterEffect` by resetting the history of the two filters. This is done to prevent pops that have been reported in #4612.
2024-05-05 10:05:22 +02:00
Pascal
d5f5d00a6f Fix shifting of sample waveform during zoom (#7222)
The original code was doing division in `int`, which causes lost of accuracy and results in the waveform randomly shifting when zooming in and out.

This should fix it by casting variables to `float` before dividing, as well as keeping the values in `float` type.

The pull request also changes some type declaration to explicit to increase readability
2024-05-01 20:13:55 -04:00
Michael Gregorius
9ca9143f5b Fix upgrade routine for BPM renamings (#7235)
Fix the upgrade routine that was introduced with pull request #6747 which added the BPM value to some file names.

This also simplifies the implementation by using a map.

Note: this also removes the code about the prefix `factorysample:`. If it is used in some files these entries will also have to be added to the map.
2024-05-01 18:03:35 +02:00
Michael Gregorius
bb6a77aa0f Only set sample clips for valid files (#7224)
Check if a non-empty buffer was loaded and only set the sample clip if that's the case.

## Other changes

Move setting the song to modified towards the core in the context of `SampleClip`. Previously the `SampleClipView` did this but it's none of it's business.

Introduce `SampleClip::changeLengthToSampleLength` which changes the length of the clip to the length of the sample. This was also previously done by the view which is again the wrong place to do the necessary calculations. An unnecessary `static_cast` was removed while carrying over the code.

Add the method `SampleClip::hasSampleFileLoaded` which checks if the loaded sample corresponds to a given file name.

Fix code formatting.
2024-04-29 19:22:37 +02:00
Michael Gregorius
c0a4df49a2 Lb302: Consistent decay in time (#7230)
The previous implementation of Lb302`s decay used a fixed decay factor that was multiplied with the signal until the minimum threshold of 1/65536 was crossed. This fixed factor resulted in different lengths in time for different sample rates.

This is fixed by computing the decay factor by taking the sample rate into account as well. The new static method `computeDecayFactor` computes the factor that is needed to make a signal decay from 1 to a given attenuation over a given time.

The parameters used in the call to that method in `Lb302Synth::process` have been fine-tuned such that, at a sample rate of 44.1 kHz, they result in a factor very close to the previous hard-coded factor of 0.99897516.
2024-04-29 16:47:17 +02:00
Michael Gregorius
86363819c5 Fix Kicker's release stage (#7226)
When applying its release stage Kicker did not take the frames before the release into account but instead always applied the release to the full buffer. This potentially lead to a jump in the attenuation values instead of a clean linear decay.

See #7225 for more details.
2024-04-27 21:17:12 +02:00
Michael Gregorius
5c0db46a60 Streamline instrument flags (#7227)
## Instrument flags as a property of an instrument
The instruments flags (single streamed, MIDI based, not bendable) are properties of an instrument that do not change over time. Therefore the flags are made a property of the instrument which is initialized at construction time.

Adjust the constructors of all instruments which overrode the `flags` method to pass their flags into the `Instrument` constructor.

## Add helper methods for flags
Add helper methods for the flags. This makes the code more concise and readable and clients do not need to know the technical details on how to evaluate a flag.

## Remove the flags methods
Remove the flags methods to make it an implementation detail on how the flags are managed.
2024-04-27 17:45:55 +02:00
Rossmaxx
6c846684cd Replace call QT5_WRAP_UI with CMAKE_AUTOUIC (#7200) 2024-04-27 16:21:09 +01:00
saker
a53e5ba2f6 Remove high quality mode from codebase (#7219)
Many, many years ago (93a456c), high quality mode was merely disabled after it was noted that it can be problematic rather than being completely removed. Remove it from the codebase so we can get rid of some code and clean things up a bit.
2024-04-27 07:59:02 -04:00
Michael Gregorius
71dd300f43 Instrument release time in milliseconds (#7217)
Make instruments report their release time in milliseconds so that it becomes independent of the sample rate and sounds the same at any sample rate.

Technically this is done by removing the virtual keyword from `desiredReleaseFrames` so that it cannot be overridden anymore. The method now only serves to compute the number of frames from the given release time in milliseconds.

A new virtual method `desiredReleaseTimeMs` is added which instruments can override. The default returns 0 ms just like the default implementation previously returned 0 frames.

The method `computeReleaseTimeMsByFrameCount` is added for instruments that still use a hard coded release in frames. As of now this is only `SidInstrument`.

Add the helper method `getSampleRate` to `Instrument`.

Adjust several instruments to report their release times in milliseconds. The times are computed by taking the release in frames and assuming a sample rate of 44.1 kHz. In most cases the times are rounded to a "nice" next value, e.g.:
*  64 frames -> 1.5 ms (66 frames)
* 128 frames -> 3.0 ms (132 frames)
* 512 frames -> 12. ms (529 frames)
* 1000 frames -> 23 ms (1014 samples)

In parentheses the number of frames are shown which result from the rounded number of milliseconds when converted back assuming a sample rate of 44.1 kHz. The difference should not be noticeable in existing projects.

Remove the overrides for instruments that return the same value as the base class `Instrument` anyway. These are:
* GigPlayer
* Lb302
* Sf2Player

For `MonstroInstrument` the implementation is adjusted to behave in a very similar way. First the maximum of the envelope release times is computed. These are already available in milliseconds. Then the maximum of that value and 1.5 ms is taken and returned as the result.
2024-04-24 20:23:36 +02:00
Kevin Zander
62e2a39a7e SlicerT::findSlices - check if lower_bound did not find anything 2024-04-23 17:02:23 -05:00
Dominic Clark
bda042e1eb Add native system semaphore and Windows shared memory (#7212) 2024-04-20 23:21:29 +01:00
Rossmaxx
df11a98902 Bump Qt minimum version to 5.9 (#7204)
* bump qt minimum version to 5.9

* cleanup cmake checks

* Remove the obsoleted check.

* Missed this while removing the check.
2024-04-17 21:51:58 -04:00
Michael Gregorius
d5e1d9e853 Move icon determination into TrackLabelButton again (#7209)
Move icon determination into TrackLabelButton again

Fully undo the changes made in commit 88e0e94dcd because the intermediate revert made in commit 04ecf73395 seems to have led to a performance problem due to the icon being set over and over again in `TrackLabelButton::paintEvent`.

The original intention of the changes made in pull request #7114 was to remove the painting code that dynamically determines the icon over and over again. Ideally the icon that is used by an instrument should be somewhat of a "static" property that should be known very early on when an instrument view is created. There should not be any need to dynamically resolve the icon over and over, especially not in a button class very far down in the widget hierarchy. However, due to technical reasons this is not the case in the current code. See pull request #7132 for more details.
2024-04-17 19:21:23 +02: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
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
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
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
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
Robert Daniel Black
88ea50dd3e Optimize 2020-12-27 20:10:19 -07:00
Robert Daniel Black
5384c5d286 Fix more stuff 2020-12-27 20:05:58 -07:00
Robert Daniel Black
5665902ce0 Fix Amount knob units 2020-12-27 11:59:32 -07:00
Robert Daniel Black
1235e419d3 Fix stuff 2020-12-27 11:21:51 -07: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
Hyunjin Song
fa0f436683 Apply suggestions from code review 2020-12-10 13:18:48 +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
root
ee0420a67f Make effect work correctly with sample rate changes 2020-04-19 08:21:23 -06:00
root
7e231b8b2d Remove newline in untouched file 2020-04-18 14:50:16 -06:00
root
624b2f24df Put some duplicate code into for loops 2020-04-18 14:48:29 -06:00
root
89f05018c3 Resolve code/style reviews 2020-04-18 14:43:26 -06: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
Lost Robot
06024b85e7 Fix knob ranges 2019-11-23 18:06:03 -07:00
Lost Robot
d2cb54f6e6 Hippity hoppity squash and merge hides this probably 2019-11-23 17:45:19 -07:00
Lost Robot
ee442e8fdc Merge branch 'master' into disintegrator 2019-11-23 17:40:28 -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
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
root
02b9a2e6d6 Minor CPU boost I missed 2019-09-03 21:12:45 -06: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
root
4556151c03 Clip modulator at 0db for self-modulation mode 2019-08-30 12:00:45 -06:00
root
6b09fce36d Add self-modulation mode 2019-08-30 11:31:26 -06:00
root
328c7654ab Increase buffer size to correct amount 2019-08-30 10:23:30 -06:00
root
5a4670eac2 Changed filters to use BasicFilters.h, fixed crashing bug (caused by last commit). 2019-08-30 07:34:36 -06:00
root
6a44a51b5a Resolve code/style reviews 2019-08-29 21:08:52 -06:00
root
2fce224480 Added comments, removed unnecessary detuneWithOctaves function. 2019-08-29 20:44:49 -06:00
root
a630f32f21 Add Disintegrator effect 2019-08-29 19:59:24 -06:00
root
e83d44a56e Add Disintegrator effect 2019-08-29 19:59:03 -06:00
Lost Robot
a332d471c9 Merge pull request #12 from LMMS/master
Master
2019-08-29 19:47:29 -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
Lost Robot
0bb50a8604 Merge pull request #11 from LMMS/master
Master
2019-08-07 08:29:09 -06: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
Lost Robot
7f1c954f5a Merge pull request #8 from LMMS/master
Master
2019-06-21 15:09:34 -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
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
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
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
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
Tres Finocchiaro
1df461d64d Fix VSTs on Fedora 27 (#4276) 2018-03-30 14:13:31 -04: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
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
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
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
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
1b4b34d96b Bump version 1.0.93 2014-08-16 10:05:46 +03: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 V
7e7d4d7bfd Merge pull request #1074 from cubician/stable-1.1
Project Files
2014-08-16 09:57:06 +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
Ian Sannar
0e95a8ceab Remove OldStuff
Got rid of all but 2 of the songs in OldStuff.
Kept Skeissi-RandomProject12345 because it's cool.
Kept TobyDox-Psycho because it was the first song made in LMMS.
2014-08-14 11:24:33 -06: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
Ian Sannar
ce0a56a482 Project Files
Organized, Debugged and Converted everything so it's ready to go for
LMMS 1.1.
2014-08-14 08:42:12 -06: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 V
4a0c78387e Merge pull request #1060 from diizy/midifix
Fix autodetect of midicontroller
2014-08-07 11:38:10 +03:00
Vesa
a138b71ab5 Fix autodetect of midicontroller
Fix #999
2014-08-07 11:36:28 +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
5add4eece4 Merge pull request #1046 from tresf/patch-2
Allow uppercase letters in ladspa file names
2014-07-30 18:49:34 +03:00
Tres Finocchiaro
e1b1270695 Allow uppercase letters in ladspa file names
Per #1041

Tested against unfa-spoken.mmpz (uses dozens of LADSPA effects).
2014-07-30 10:53:47 -04:00
Vesa V
3bbb81cf24 Merge pull request #1036 from LMMS/stable-1.1
sync
2014-07-27 19:36:37 +03:00
Vesa V
35798119af Merge pull request #1035 from diizy/stable-1.1
Monstro: optimize
2014-07-27 19:36:08 +03:00
Vesa
c266e7b88e Monstro: optimize
Rewrote handling of modulators so that we don't have to allocate extra buffers for every note - should improve performance and make cpu usage more consistent
2014-07-27 19:34:41 +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
e8b4b6aa75 Merge pull request #1031 from DeRobyJ/stable-1.1
Italian Localization Update
2014-07-27 01:15:41 +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
DeRobyJ
5788e70d47 Italian Localization Update
All the strings present in the source are updated.
2014-07-26 16:02:44 +02:00
Vesa V
07a0f46c82 Merge pull request #1030 from LMMS/stable-1.1
sync
2014-07-26 16:28:01 +03:00
Vesa V
04a3806e23 Merge pull request #1029 from diizy/stable-1.1
AFP improvements
2014-07-26 16:27:15 +03:00
Vesa
9562f68277 AFP improvements
- Stop pointlessly reloading the sample everytime the amp knob is changed
- Also draw the amplitude of the waveform correctly (used to be it was drawn as 2x too "quiet")
2014-07-26 16:25:01 +03:00
Vesa V
ea50d7c011 Merge pull request #1028 from diizy/stable-1.1
Change redo shortcut from ctrl-r to ctrl-y
2014-07-26 14:47:57 +03:00
Vesa
37fa46792a Change redo shortcut from ctrl-r to ctrl-y
Ctrl-y is more standard and used in many applications, ctrl-r is used pretty much nowhere.
2014-07-26 14:46:30 +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
Vesa V
925d29934d Merge pull request #1023 from grejppi/stable-1.1-recentlist
configManager: save config every time recent project list is updated
2014-07-25 11:46:58 +03:00
Hannu Haahti
be2e235c7a configManager: save config every time recent project list is updated
fixes #1014
2014-07-25 10:42:50 +03:00
Tobias Doerffel
1b8243ccac Updated ZynAddSubFX instrument presets
Taken from upstream repository with HEAD at 7e14a008bdc671341843ea720ed.
2014-07-24 00:06:51 +02:00
Vesa V
7e5359af96 Merge pull request #1019 from diizy/gfx
Fix bbtrack undo/redo bug
2014-07-23 12:32:07 +03:00
Vesa
cf3862ec5c Fix bbtrack undo/redo bug
Fix #790
2014-07-23 12:29:45 +03:00
Vesa V
64dc7bb58e Merge pull request #1016 from diizy/gfx
Monstro: add newlines to helptexts
2014-07-22 20:16:18 +03:00
Vesa
2469196c33 Monstro: add newlines to helptexts 2014-07-22 20:13:06 +03: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
Vesa V
ec67d6b40a Merge pull request #1005 from diizy/stable-1.1
Add "clear track" option, fix copying of tracks from song ed -> bb ed
2014-07-18 11:23:06 +03:00
Vesa
dacb8adc4c Add "clear track" option, fix copying of tracks from song ed -> bb ed
- Tracks copied from song->bb will no longer be unusable
- Since doing this required creating a "delete TCOs from track" function, I also added the option to trackops menu to clear a track
Fix #757
2014-07-18 11:18:10 +03: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
d014c2bb2e Merge pull request #997 from diizy/mixer-opt2
Improve performance of effect processing, fix autoquit bugs
2014-07-17 02:01:53 +03:00
Vesa
1a2351bbd0 Improve performance of effect processing, fix autoquit bugs
Also a slight NPH tweak
2014-07-17 01:48:24 +03:00
Tobias Doerffel
7b279d3f85 Pattern: add undo/redo support for "Clear all notes" operation in context menu
Simply add a journal checkpoint before clearing pattern.
2014-07-16 23:46:47 +02:00
Tobias Doerffel
a12774f50d ZynAddSubFX: imported current head
Imported current head of LMMS-specific ZynAddSubFX source code.

The current code is based on version 2.4.4 of ZynAddSubFX.

HEAD: 9a993c4936ce987bb30f93eee2a573466ece3712
2014-07-16 23:36:05 +02:00
Vesa V
330ff65f62 Merge pull request #996 from ruggiero/stable-1.1
Bug that prevented compilation in Debian testing (jessie)
2014-07-15 23:45:11 +03:00
Rafael Ruggiero
ad35c553b3 Update surround_encoder_1401.c 2014-07-15 17:42:01 -03:00
Rafael Ruggiero
f91925f34a Update bode_shifter_cv_1432.c 2014-07-15 17:41:07 -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 V
dbb1418ad6 Merge pull request #991 from diizy/stable-1.1
Mixer: optimize peak value measuring functions
2014-07-14 21:56:17 +03:00
Vesa
5ed8f70633 Mixer: optimize peak value measuring functions 2014-07-14 21:49:34 +03:00
Vesa V
6c72804aa4 Merge pull request #990 from diizy/stable-1.1
InstrumentSoundShaping: ensure that release time is never longer than th...
2014-07-14 18:41:51 +03:00
Vesa
8a35a57efa InstrumentSoundShaping: ensure that release time is never longer than the volume envelope, if volume envelope is active
This saves CPU on certain instruments, like Monstro.
There's no point in running the note beyond the end of the volume envelope, ever, so let's not do that.
2014-07-14 18:17:02 +03:00
Vesa V
1eed43c55e Merge pull request #988 from diizy/stable-1.1
Add safeguard for beat pattern wheelevent
2014-07-14 00:39:07 +03:00
Vesa
d4e30d5ff8 Add safeguard for beat pattern wheelevent
Fix #963
2014-07-14 00:37:43 +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
5978cd597e Merge pull request #986 from diizy/stable-1.1
Sanitize master output
2014-07-13 22:13:45 +03:00
Vesa
e06c281132 Sanitize master output
Replace any inf/nan in master output with zero, to prevent corrupted files/audio.
2014-07-13 22:11:17 +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
e8d80c1ddf Merge pull request #969 from tresf/patch-1
Fix relative VST paths on Windows
2014-07-11 01:10:51 +03:00
Vesa V
59b6df467e Merge pull request #966 from diizy/stable-1.1
ProjectJournal: cap the number of undo states to prevent infinite memory...
2014-07-10 14:25:44 +03:00
Vesa
4855634bf4 ProjectJournal: cap the number of undo states to prevent infinite memory buildup
The cap is hardcoded to 100 for now, TODO: make this number configurable (or even better: use a max. memory amount instead of max number of states)
2014-07-10 14:22:40 +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
Vesa V
31c8ea4394 Merge pull request #964 from diizy/stable-1.1
Effect plugins: don't set modified flag on control changes
2014-07-10 12:42:02 +03:00
Vesa
a82bcb1759 Effect plugins: don't set modified flag on control changes
Fixing a bit of a silly error made by me, all control changes on my effect plugins were flagging the project as modified, which is annoying with automations etc. So I'm disabling it. Maybe later we can have flagging only when knobs are modified manually.
2014-07-10 12:39:02 +03:00
Tobias Doerffel
5a28f4ada0 Merge remote-tracking branch 'origin/stable-1.1' 2014-07-09 23:02:28 +02:00
Tobias Doerffel
1b4ce136c9 Merge branch 'stable-1.0' into stable-1.1 2014-07-09 23:01:36 +02:00
Tobias Doerffel
e0779fa6f8 VstBase: include 32 bit version of libwinpthread DLL for RemoteVstPlugin32
This is required with latest mingw-x-runtime packages.
2014-07-09 23:00:44 +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
Ubuntu
858033c0c7 Fix relative VST paths on Windows 2014-07-08 15:56:20 -04: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
26d1d3b077 Merge pull request #952 from tresf/patch-1
Prevent changing vertical size on fx mixer
2014-07-08 19:45:29 +03:00
Tres Finocchiaro
27b7d36181 Prevent changing vertical size on fx mixer 2014-07-08 12:43:52 -04: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
Tobias Doerffel
97bb80b9b1 Merge branch 'stable-1.0' into stable-1.1
Conflicts:
	CMakeLists.txt
	README
	lmms.rc.in
2014-07-06 13:56:44 +02:00
Tobias Doerffel
8122041d65 Install winpthreads DLL
Install winpthreads DLL for inclusion in Win32/Win64 installer. Requires
latest version of mingw-x-runtime packages (>=3.1.0).
2014-07-06 13:52:51 +02:00
Tobias Doerffel
6711f5d291 Added support for winpthreads library
Recent builds of MinGW64 runtime include the winpthreads library which
is not linked statically anymore and thus doesn't required non-portable
(de-)initialization function calls.
2014-07-06 13:52:32 +02:00
Tobias Doerffel
ab55b26e4b SWH/BodeShifterCV: fix out-of-bounds array access
The xcoeffs array only has 100 elements and thus accessing xcoeffs[100]
leads to undefined behaviour.
2014-07-05 17:47:49 +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
ddae5a8446 Merge pull request #932 from diizy/stable-1.1
SF2: Remove superfluous API call that sets period size for audio backend
2014-07-05 16:31:37 +03:00
Vesa
88c546275b SF2: Remove superfluous API call that sets period size for audio backend
We don't use any audio backend with fluidsynth, so there's no need to set a period size for it.
2014-07-05 16:29:59 +03:00
Vesa V
bc888f6e4c Merge pull request #931 from diizy/gfx
LB302: Remove the non-functional Accent button from the UI, pending real...
2014-07-05 11:48:58 +03:00
Vesa
066a9c9f92 LB302: Remove the non-functional Accent button from the UI, pending real implementation 2014-07-05 11:46:53 +03:00
Tobias Doerffel
b9d99c9c19 Merge pull request #928 from tresf/stable-1.0
Backport to 1.0 branch - Fix Zyn GUI hard crash on Win32
2014-07-03 22:55:45 +02:00
Tres Finocchiaro
71a9f94a4b Fix Zyn GUI hard crash on Win32
I can't explain why @tobydox doesn't have to do this in his builds but committing to push ahead with 1.0.3
2014-07-03 14:21:14 -04:00
Vesa V
0a97406c80 Merge pull request #926 from diizy/stable-1.1
Fix styling of textFloat & whatsthis, make text floats consistent in sty...
2014-07-03 14:12:38 +03:00
Vesa
06b47a52a2 Fix styling of textFloat & whatsthis, make text floats consistent in style with tooltips
Should fix #925
2014-07-03 14:09:31 +03:00
Vesa V
6ae2a11c53 Merge pull request #923 from diizy/stable-1.1
Update Zyn from repo, bump version
2014-07-02 23:40:51 +03:00
Vesa V
3c3d43c6e8 Merge pull request #922 from diizy/stable-1.0
Bump version to 1.0.3
2014-07-02 23:40:16 +03:00
Vesa
3ca971f9e7 Update Zyn from repo, bump version 2014-07-02 23:32:41 +03:00
Vesa
67a56c6f48 Bump version to 1.0.3 2014-07-02 21:38:19 +03:00
Vesa V
f3419648cf Merge pull request #916 from diizy/stable-1.1
Sync with Zyn repository - includes a GUI fix, also a fix to RemoteZynAd...
2014-07-02 09:44:10 +03:00
Vesa V
dca67b4313 Merge pull request #919 from tresf/stable-1.1
CMake/NSIS copy missing dlls
2014-07-02 09:43:28 +03:00
Tres Finocchiaro
d3a1a2a441 Fix win32 missing dlls
For bug #892 on `stable-1.1`
2014-07-01 17:57:59 -04:00
Vesa
bcbf54150f Add zyn makefiles to gitignore 2014-07-02 00:12:25 +03:00
Vesa V
5aa5b64b52 Merge pull request #918 from tresf/stable-1.1
Fix win32 build error caused by #913
2014-07-01 09:34:35 +03:00
Tres Finocchiaro
63a5a16cd0 isinf and isnan declarations win32/apple 2014-06-30 23:21:17 -04:00
Tres Finocchiaro
20b63ea6c4 Moved isnan/isinf compat code to lmms_math.h 2014-06-30 23:19:04 -04:00
Vesa
71c1bf7dd8 Sync with Zyn repository - includes a GUI fix, also a fix to RemoteZynAddSubFx 2014-06-30 15:18:41 +03:00
Vesa V
e99be7fb77 Merge pull request #914 from diizy/stable-1.1
Trailing spaces
2014-06-30 13:07:09 +03:00
Vesa
ec495716f4 Trailing spaces 2014-06-30 13:04:48 +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 V
4143fc95e4 Merge pull request #912 from LMMS/stable-1.0
Syncing...
2014-06-30 12:47:24 +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 V
7429e752f0 Merge pull request #910 from diizy/stable-1.1
Math, Monstro
2014-06-29 13:28:27 +03:00
Vesa
dd65d48318 Monstro: improve accuracy of env release 2014-06-29 13:27:29 +03:00
Vesa
005bf69705 Lmms_math: add dBV conversion functions (for future use) 2014-06-29 13:08:49 +03:00
Vesa V
fd6747a177 Merge pull request #909 from diizy/stable-1.1
Some fixes: StereoEnhancer, Midievents
2014-06-29 10:42:44 +03:00
Vesa
fe3c5a9aa4 Use channel -1 for GUI-generated MIDI events, fixes #807 2014-06-29 10:19:28 +03:00
Vesa
edc97edb9e DspEffectLibrary: fix stereoenhancer 2014-06-29 09:55:16 +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
Tobias Doerffel
0447e0fe44 Merge pull request #895 from diizy/filters
basic_filters: optimize RC highpass & bandpass filters
2014-06-28 11:55:47 +02:00
Tobias Doerffel
e6ffb6cd35 Merge pull request #902 from diizy/fxmixer
FxMixer: rewrite mixer routing
2014-06-28 11:55:18 +02:00
Vesa
0058b1064f Update channel send model names properly 2014-06-28 10:06:52 +03:00
Vesa
31b82fe50b Receive arrow 2014-06-27 23:19:06 +03:00
Vesa
9243d94484 Fix qstring arg 2014-06-27 23:17:21 +03:00
Vesa
d9d085d14e FxMixer: rewrite mixer routing 2014-06-27 18:21:18 +03:00
Vesa V
82ee04c406 Merge pull request #897 from diizy/whatsthis
What's this strings for Monstro
2014-06-26 19:23:47 +03:00
Vesa
92544a7932 What's this strings for Monstro 2014-06-26 19:21:16 +03:00
Vesa
27383f91b7 basic_filters: replace div with mul 2014-06-26 13:18:00 +03:00
Vesa
ba700399da basic_filters - even more optimization
Use more efficient interpolation, optimize some calculations
2014-06-26 13:15:20 +03:00
Vesa
d6809b45c1 basic_filters: further optimization
Use qBound in formant, and return early from calcFilterCoeffs so we don't do needless calculations
2014-06-26 12:41:35 +03:00
Vesa
d166212d49 basic_filters: optimize RC highpass & bandpass filters
For both RC12 and RC24 filter types: handle lowpass separately, because we can then calculate highpass & bandpass with less operations.
This shouldn't affect the performance of lowpass, but probably will make highpass and bandpass a bit faster.
2014-06-25 20:43:34 +03:00
Raine M. Ekman
7921a326f7 Add loading of artwork in other formats as well as .png 2014-06-24 22:44:47 +03:00
Tobias Doerffel
5659aa10e1 Merge pull request #886 from diizy/gfx
FxMixerView, FxLine: graphics & layout fixes
2014-06-24 20:56:06 +02:00
Vesa
a463594bb2 FxMixerView, FxLine: graphics & layout fixes 2014-06-24 21:07:15 +03:00
Vesa V
77230c07da Merge pull request #885 from diizy/gfx
Monstro waveform icons updated
2014-06-24 20:28:37 +03:00
Vesa
61cca2b513 Monstro waveform icons updated 2014-06-24 20:27:25 +03:00
Tobias Doerffel
c1d2b96c8c Merge pull request #882 from DeRobyJ/stable-1.0
Italian Localization Update
2014-06-23 23:14:18 +02:00
Vesa
4185eac023 Merge branch 'stable-1.1'
Conflicts:
	src/core/AutomatableModel.cpp
2014-06-23 22:10:27 +03:00
DeRobyJ
46bb1411d4 Italian Localization Update
I've updated the Italian translation of the program using Qt linguist.
2014-06-23 20:31:36 +02:00
Tobias Doerffel
1287aec800 Merge pull request #875 from diizy/logs
Logscale models: fix all issues and finalize the implementation
2014-06-21 23:43:05 +02:00
Tobias Doerffel
54f1beb056 Merge pull request #877 from diizy/stable-1.0
SF2 player: fix playback issues
2014-06-21 23:39:57 +02:00
Yann Collette
86e584474a when using gcc-4.8.2, desactivate -Werror due to a regression 2014-06-21 23:33:39 +02: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
6d8890b4ff Merge remote-tracking branch 'origin/stable-1.0' into stable-1.1 2014-06-21 23:29:32 +02:00
Vesa
87c4f9c7f2 SF2 player: fix playback issues
Changing the velocity after noteon doesn't really seem to work on fluidsynth (may be dependent on soundfont file) - seems like the panning changes when velocity is changed.
So I disabled that, after which everything works fine.
2014-06-21 11:21:25 +03:00
Vesa
f7042977a9 Logscale: Fix negative ranges
This fixes errors that happen on models that have both logarithmic scale and a range that goes to the negative.
2014-06-21 10:56:28 +03:00
Vesa
8da423412c Remove unneeded function 2014-06-20 23:01:38 +03:00
Vesa
14909bdf1b Log scales finalized 2014-06-20 22:46:10 +03:00
Tobias Doerffel
737839164a Merge pull request #868 from diizy/gfx
FxMixer GUI updates, fix disappearing effects
2014-06-20 11:42:25 +02:00
Vesa V
fbcd436066 Merge pull request #870 from diizy/watsyn
Watsyn updates
2014-06-20 02:59:29 +03:00
Vesa
b4f0c73beb Watsyn updates 2014-06-20 02:57:33 +03:00
Vesa
83cc446807 FxMixerView: fix disappearing effects 2014-06-19 22:17:59 +03:00
Vesa
4bcbb1abcc FxMixer GUI updates: code 2014-06-19 17:59:37 +03:00
Vesa
29c7894993 FxMixer GUI updates: graphics
Also fixed size of whatsthis
2014-06-19 17:59:36 +03:00
Tobias Doerffel
e0dcd1c352 Merge pull request #863 from tresf/stable-1.1
Allow vertical resize for VST Plugin Control Window
2014-06-19 09:55:07 +02:00
Tobias Doerffel
ceec0b175c Merge pull request #861 from diizy/lb302
LB302: Correct slide for samplerate
2014-06-19 09:54:52 +02:00
Tobias Doerffel
b24fa4757c Merge pull request #866 from diizy/stable-1.1
Fix stuck notes on notestacking
2014-06-19 09:54:31 +02:00
Vesa
0237da44b5 ... somehow didn't notice the already existing engine::mixer()->lock() there... 2014-06-19 00:38:48 +03:00
Vesa
0f03219c93 Fix stuck notes on notestacking
Fixes #865. Added a check so we don't add subnotes to a note that is already released (can happen with very short midinotes, eg. sliding the mouse accross the gui piano).
I also added a mutex to incoming midievent handling in instrumenttrack. Not sure if strictly necessary, but seems like this would prevent problems in the long run.
Also fixed a glitch in noteplayhandle where silent master notes got stuck playing indefinitely ( isMasternote() returns true even if the nph just hadChildren, so it never gets ended if it did - instead we check if we still have subnotes).
2014-06-19 00:30:48 +03:00
tresf
73bd963a3f Allow vertical resize for VST Plugin Control Window 2014-06-18 02:54:29 -04:00
Vesa
c93f6587e6 LB302: Correct slide for samplerate 2014-06-17 14:35:53 +03:00
Tobias Doerffel
4ef5b5fef3 Merge pull request #860 from diizy/gfx
Graphics updates
2014-06-17 11:59:52 +02:00
Vesa
0d2249828d Graphics updates 2014-06-17 12:39:52 +03:00
Tobias Doerffel
41197a949a Merge pull request #852 from diizy/sf2fix
SF2 player: fix playback issues
2014-06-15 23:32:14 +02:00
Tobias Doerffel
3de952e9c1 Merge pull request #844 from grejppi/stable-1.1-kicker
kicker: keep start note behaviour for old presets
2014-06-15 23:31:52 +02:00
Tobias Doerffel
3ab6a7ac0f Merge pull request #846 from diizy/stable-1.1
FxMixer: Fix channel delete and other bugs
2014-06-15 23:31:02 +02:00
Tobias Doerffel
e1fc2a21bb Merge pull request #841 from tresf/stable-1.1
NSIS fixes #385, #831
2014-06-15 23:30:27 +02:00
Tobias Doerffel
c7f29c19c8 Merge pull request #840 from sarahkeefe/stable-1.0
Fix for issue #837 - Compile issue on OS X - include file Qt/qglobal.h not found
2014-06-15 23:29:46 +02:00
Tobias Doerffel
86a4a98d2f Merge pull request #848 from diizy/midioffset
5-in-1 bugfix special
2014-06-15 23:29:21 +02:00
Vesa V
2a1da2a6bd Merge pull request #855 from diizy/monstro
Monstro: fix another silly error...
2014-06-15 22:40:13 +03:00
Vesa
9d3c8a98ae Monstro: fix another silly error... 2014-06-15 22:38:25 +03:00
Vesa V
5425488e4c Merge pull request #854 from diizy/monstro
Monstro: oops... corrected an error
2014-06-15 17:30:52 +03:00
Vesa
dcfa4ebe43 Monstro: oops... corrected an error 2014-06-15 17:29:24 +03:00
Vesa V
4b31294a85 Merge pull request #853 from diizy/monstro
Monstro updates
2014-06-15 16:05:18 +03:00
Vesa
b5d9286fdc Monstro - additional small fix... 2014-06-15 16:01:12 +03:00
Vesa
8a2aeaa595 Monstro updates
- Fix FM (use PM-based FM to prevent pitch drift)
- Bunch of codepath optimizations
- Somewhat saner min/max values for PW
2014-06-15 15:58:07 +03:00
Vesa
585f8b6d93 SF2 player: fix playback issues
Changing the velocity after noteon doesn't really seem to work on fluidsynth (may be dependent on soundfont file) - seems like the panning changes when velocity is changed.
So I disabled that, after which everything works fine.
2014-06-14 20:36:21 +03:00
Vesa
ad1c6957b0 AutomatableModel: prevent linking of model to itself
There's no need to ever link a model to itself, allowing it can cause weird issues and crashes, plus it's easy to do by accident if you start a ctrl-drag and end it while still on the same widget
2014-06-14 18:36:17 +03:00
Vesa
e733042cdb FxMixer: clearChannel had the same erroneous for loop as deleteChannel 2014-06-14 17:42:00 +03:00
Vesa
24bf336bf8 FxMixer: fix crashes on modifying sends
Added a mutex so that the GUI thread can't change the sends around during the rendering loop.
2014-06-14 14:53:22 +03:00
Vesa
3319380cf6 FxMixer: Fix channel delete 2014-06-14 14:37:27 +03:00
Vesa
9c584778d2 5th: fix #563 - do not destroy IPH's on "All Notes Off" MIDI commands 2014-06-14 14:37:07 +03:00
Vesa
d1eb9886fd Make that 4: Fix stuck midi notes on changing master pitch 2014-06-14 14:37:07 +03:00
Vesa
3f19478b87 Further safeguards needed... 2014-06-14 14:37:07 +03:00
Vesa
a172783cd0 3-in-1 bugfix special
Fixes bugs: #568, #289 and the incorrect timing for midi-noteoffs (see mailing list)
2014-06-14 14:37:07 +03:00
Vesa V
32cfe84dfd Merge pull request #850 from diizy/lb302
LB302: one last fix...
2014-06-14 14:36:51 +03:00
Vesa
c45163f936 LB302: one last fix... 2014-06-14 14:32:15 +03:00
Vesa V
dd13b26696 Merge pull request #849 from diizy/mixeriph2
A fix to IPH waiting code: don't wait for already finished notes, plus a...
2014-06-13 19:50:45 +03:00
Vesa
a0d6115482 A fix to IPH waiting code: don't wait for already finished notes, plus a bit of optimization 2014-06-13 19:47:48 +03:00
Hannu Haahti
ebc9da8c71 kicker: keep start note behaviour for old presets 2014-06-12 16:20:26 +03:00
tresf
64289f5953 nsis_branding.bmp, 256 color version to fix #831 2014-06-12 02:17:03 -04:00
Tres Finocchiaro
13d0bc73d9 HKCR registry cleanup per #385 2014-06-12 00:43:18 -04:00
sarahkeefe
940fb0d3d5 Updating include to QtCore/QtGlobal 2014-06-11 17:16:28 -04:00
sarahkeefe
91519898d0 Replacing <Qt/global.h> includes with <QtGlobal> to fix compile issue on OS X 2014-06-11 13:21:01 -04:00
Vesa V
66c05f60ff Merge pull request #839 from diizy/lb302
Last LB302 fixes for now (I hope!)
2014-06-11 15:30:41 +03:00
Tobias Doerffel
3a3cbe4f4e Merge pull request #830 from tresf/stable-1.1
Updated logo for NSIS installer
2014-06-11 14:08:17 +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
Vesa
11209593e0 Last LB302 fixes for now (I hope!) 2014-06-11 15:05:07 +03: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
Vesa V
77a919d24c Merge pull request #833 from diizy/stable-1.1
LB302: further fixes
2014-06-10 09:05:34 +03:00
Vesa
9af0d7af93 LB302: further fixes
- My earlier fixes caused some new issues, now I'm fixing them, this time I'm pretty sure there won't be anything I missed
2014-06-10 09:02:20 +03:00
Tres Finocchiaro
045353735f Updated logo for NSIS installer 2014-06-09 11:12:01 -04:00
Tobias Doerffel
5fdc8e63d9 Merge pull request #819 from diizy/mixeriph2
Ensure that NotePlayHandles get processed before the InstrumentPlayHandl...
2014-06-09 13:43:51 +02:00
Tobias Doerffel
82720472c9 Merge pull request #820 from diizy/lb302fix
LB302: Fix playback bugs (sticking pitch), add bandlimited waves
2014-06-09 13:42:25 +02:00
Tobias Doerffel
019c438668 Merge pull request #817 from diizy/bbtrack-ui
Make BB-tracks themeable
2014-06-09 13:41:55 +02:00
Tobias Doerffel
ca29057d54 Merge pull request #829 from ycollet/update_fr_1.1
Update fr for stable-1.1
2014-06-09 13:40:25 +02:00
Tobias Doerffel
1d6a456b47 Merge pull request #827 from DanWin/master
Updated German translation
2014-06-09 13:40:06 +02:00
Tobias Doerffel
34a4c27761 Merge pull request #826 from DanWin/stable-1.0
Updated German translation
2014-06-09 13:39:59 +02:00
Tobias Doerffel
dc9804f7b6 Merge pull request #823 from diizy/automation
Fix drag/drop for automation patterns
2014-06-09 13:38:31 +02:00
Yann Collette
72e194044d update fr translation 2014-06-09 11:08:26 +02:00
Daniel Winzen
22cf0db03d Updated German translation 2014-06-08 17:49:04 +02:00
Daniel Winzen
2b261b0020 Updated German translation 2014-06-08 17:45:45 +02:00
Vesa V
bf824f2a60 Merge pull request #825 from diizy/qbrush
Use QBrush instead of QColor on some theme properties
2014-06-08 18:18:08 +03:00
Vesa
2fa7892542 Use QBrush instead of QColor on some theme properties
Apparently, we can use QBrush -typed properties in the CSS. This just never occured to me before!
So, this has several benefits. A QColor property only allows a singular RGB value, but a QBrush allows the same plus also qgradients, RGBA-colours and maybe even bitmap patterns. So I'm changing some properties to QBrush, where it makes sense to allow this additional functionality - no need to enable it for simple things like text colours or such.

- Song editor background: instead of the earlier hack with 7 qproperties just to set a limited background gradient, we can use only 2 properties and allow much more flexibility with Qt's own qgradient syntax
- Automation editor: background, graph colour, and the sidebar colour - @musikBear recently complained not seeing the grid through the graph, so transparency can help there, and qlineargradients in the graph can produce very cool visual effects. Grid is pointless to change, it should stay single-colour for now.
- Piano roll: here, I only made the background use QBrush - we don't really have much else here that can utilize QBrush, the notes have their own gradient system... maybe the 2nd colour of the note gradient could be customizable though.

There are probably more places where this change makes sense...
2014-06-08 18:06:09 +03:00
Vesa
9cc3344756 Fix drag/drop for automation patterns
There was some apparently legacy code that was entirely unnecessary and interfering with model drops.
Closes #814
2014-06-08 12:28:43 +03:00
Vesa
40407f6ce6 LB302: Fix playback bugs (sticking pitch), add bandlimited waves 2014-06-07 14:39:45 +03:00
Vesa
bad08a2632 Ensure that NotePlayHandles get processed before the InstrumentPlayHandle on instruments that use both NotePlayHandles and InstrumentPlayHandle, such as LB302 and SF2-Player
Issue: Currently, we use threads to process all PlayHandles, so there's no guarantee of the order they are processed in. This causes timing inaccuracy and jitter: notes of instruments that use both NPH's and IPH's can get randomly delayed by one entire period.
The issue is solved thusly:
- When processing an IPH, we check if the instrument is midi-based. If yes, we just process it normally (no NPH's to worry about).
- If it's not, then it also uses NPH's, so we'll have the IPH wait until all NPH's belonging to same instrument have been processed. There's some similar code in the new FX mixer, I pretty much just copied how we do it there.
2014-06-06 14:24:51 +03:00
Vesa
910f89a5d3 Make BB-tracks themeable
- This allows defining a default colour for BB-track patterns in the CSS
- The default colour is used for all bb-patterns which don't have a custom colour set by the user: in other words, the colour of a pattern can be any rgb-value OR "style colour"
- By default, all created bb-patterns use the style colour
- You can also reset colourized patterns to use style colour again
- Backwards compatibility: old projects will be loaded so that any pattern using either of the old default colours will be converted to use style colour

TODO: add a settings option that can disable custom colours (ie. always use style colour), and/or an option to reset all patterns in a project to style colour. This is needed, since themes can now change the song editor background, which can lead to unfortunate colour combinations with custom colours...
2014-06-06 11:06:12 +03:00
Tobias Doerffel
dba1e75a53 Merge pull request #808 from tresf/stable-1.1
SF2/VST Title Fixes, Export Dialog Fixes
2014-06-06 00:07:54 +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
Tres Finocchiaro
922ab25217 Fast forward vesa's sample-accurate changes 2014-06-04 09:03:19 -04:00
Tres Finocchiaro
e06759d0d8 Formatting fixes 2014-06-04 08:58:06 -04:00
tresf
7a03353fb6 Export dialog append wav/ogg #764 w/ #779 recommendations 2014-06-04 08:55:30 -04:00
tresf
f42196315c SF2/VST title rename #462 w/ #774 recommendations 2014-06-04 08:52:12 -04:00
Tobias Doerffel
ab493ea27f Merge pull request #804 from diizy/midioffset
Make MIDI timing sample-accurate
2014-06-04 09:35:11 +02:00
Tobias Doerffel
96da8717f3 Merge pull request #802 from zonkmachine/random-wave-icon
Random wave icon
2014-06-04 09:34:06 +02: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
Vesa
06be5bba82 Make MIDI timing sample-accurate
- currently only affects Vestige
- no idea whether this can also be used for Zyn and OpulenZ, I'm not sure if Zyn has any kind of mechanism for communicating frame offset to the synth, as for OpulenZ, @softrabbit would know the answer better
- basically, I made it happen by simply adding an extra parameter in the processMidi{In|Out} functions, which is 0 by default, and made the necessary changes in instrumentTrack and nph to utilize it
- I based this against 1.1 because I didn't think it's a very big change, and I don't see much possibility for things going wrong here, since we're basically just using the existing functionality in Vestige (there already was a frame offset being communicated to the remote plugin, just that it was always set to 0). However, if @tobydox thinks this is better to bump up to 1.2, I can rebase it for master...
2014-06-04 04:23:16 +03:00
Oskar Wallgren
a61d0284f2 Fix Instrument LFO, random wave icon 2014-06-02 04:01:27 +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
Tobias Doerffel
b28e995316 Merge pull request #797 from softrabbit/issue780
Issue780
2014-06-01 10:09:54 +02: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
Raine M. Ekman
f0556cbc3b InstrumentTrack: Fix issue #780 by showing the m_pitchRangeSpinBox too, in case it's been hidden. 2014-05-31 20:41:50 +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
Tobias Doerffel
a2e61a7a08 Merge pull request #789 from diizy/pianoroll
PianoRoll: CSS stylability, mousewheel improvements
2014-05-31 15:12:07 +02:00
Tobias Doerffel
146ae64342 Merge pull request #792 from diizy/autoeditor
AutomationEditor: improve zoom, CSS
2014-05-31 12:46:43 +02:00
Vesa
3a1e447d7b PianoRoll: wheelevent improvements, similar to AutomationEditor
- ctrl+alt+wheel changes q (as in auto)
- ctrl+shift+wheel changes note length
- changed note lock functionality slightly, it no longer changes itself to 1/16 because this would cause annoying infinite scrolling with the wheel, instead it just acts like 1/16 when notelength is last note
2014-05-31 07:06:58 +03:00
Vesa
7a19654ab9 AutomationEditor - fix previous 2014-05-31 04:05:58 +03:00
Vesa
310ac28009 AutomationEditor: CSS stylability 2014-05-31 03:32:55 +03:00
Vesa
5652043185 AutomationEditor: improve zoom functionality
- entire wheelevent code was written very... weirdly, I simplified it
- fix bug with x zoom with mousewheel, no more getting stuck between 25/50
- ctrl+shift+mousewheel now zooms y-axis
- ctrl+alt+mousewheel now changes quantization
2014-05-31 01:47:59 +03:00
Vesa
f43678cbae PianoRoll: CSS stylability
Most parts of piano roll are now stylable:
- background color
- note color
- bar color (for volume bars)
- grid color
2014-05-30 23:00:20 +03: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
Tobias Doerffel
a309ba077c Bumped version number to 1.0.91
We can now distinguish between the new stable 1.1 branch and the master branch.
2014-05-30 15:24:07 +02:00
Tobias Doerffel
ef0ccb4094 Merge pull request #778 from diizy/pianoroll
PianoRoll: Note Quick Resize
2014-05-30 15:15:28 +02:00
Tobias Doerffel
b170ab18f6 Merge pull request #787 from diizy/master
FxMixerView: fix crash when loading project while selected channel != 0
2014-05-30 15:11:29 +02:00
Vesa
51194453f1 FxMixerView: fix crash when loading project while selected channel != 0
Fixes #782
2014-05-30 08:19:54 +03:00
Vesa V
6dfd6de8d2 Merge pull request #785 from diizy/nes
Nes updates
2014-05-29 22:59:37 +03:00
Vesa
8bb5733ee5 Nes: Fix previous - forgot to add new models to load/save funcs 2014-05-29 22:57:14 +03:00
Vesa
50c5b0db03 Nes: added pitch sweep for noise channel, freq.quantize mode (constrain frequencies to preset values when using note frequency)
Also added a handful of neat presets that mimick Nes sound effects
2014-05-29 22:48:13 +03:00
Vesa V
fe88806bd5 Merge pull request #784 from diizy/nes
Nes: implement vibrato, also: make main pitch update at 60hz frequency r...
2014-05-29 19:36:48 +03:00
Vesa
19d105dc86 Nes: implement vibrato, also: make main pitch update at 60hz frequency regardless of period size or samplerate (guarantees consistency in sound for combined pitch sweep + pitch automation) 2014-05-29 19:32:22 +03:00
Vesa
adea08d5b9 PianoRoll: Note Quick Resize
Basically, this works as such:
- if you click shift *after* starting a note move OR after creating a new note, the note move action is switched into resize mode, so you can quickly resize the note you just created, or the note you just moved. This saves time and improves workflow - at least based on my own experience: I've always wished I could do this, this is a huge time saving when you want to quickly jot down notes of differing lengths.
- if shift is already pressed when you click, the above will not happen, because that would mess with the note copy function. Copying notes with shift-dragging works the same as before.
- note test playback is halted when you click shift while moving. This is purely because it was causing some crackling noise, probably because of the changing length of a note that is currently playing. Maybe that can be fixed later, although it's arguably better not to hear the note while resizing - it's consistent with the other resize.
- works on group of notes as well, if you start moving a group of notes and then click shift, it will go into resize. Exception is notes copied with shift-drag... for obvious reasons.
- that should be all. Testing appreciated.
2014-05-28 03:38:59 +03:00
Steve Leonard
af56ea5849 Copy+Paste for rubberband selections in track editor 2014-05-26 15:53:08 -04:00
Vesa V
957aed4b80 Merge pull request #773 from diizy/master
NES: fix dc offset and distortion
2014-05-26 18:04:13 +03:00
Vesa
6e516a358c NES: fix dc offset and distortion 2014-05-26 18:02:55 +03:00
Tobias Doerffel
1567bd8d09 Merge pull request #752 from tresf/master
Drag-and-drop support for VST, SF2
2014-05-26 10:28:44 +02:00
Tobias Doerffel
7dcf9a1ffa Merge pull request #719 from ycollet/stable-1.0
add lib64 directories to search for ladspa plugins
2014-05-26 10:27:58 +02:00
Tobias Doerffel
c3af25e54a Merge pull request #758 from grejppi/master-samplebuffer
SampleBuffer: fix amplification
2014-05-26 10:26:59 +02:00
Tobias Doerffel
54531f5144 Merge pull request #761 from zonkmachine/random-wave-2
Random wave for instrument plugin LFO
2014-05-26 10:26:09 +02:00
Tobias Doerffel
3d61b6df9e Merge pull request #768 from diizy/master
FxMixerView: prevent mixer from being loaded with improper send buttons ...
2014-05-26 10:25:18 +02:00
Tobias Doerffel
d857f0e272 Merge pull request #771 from diizy/nes
NES instrument
2014-05-26 10:22:40 +02:00
Vesa
750be17b56 Nes: fix sweep 2014-05-26 05:46:53 +03:00
Vesa
8b51e29467 New NES instrument 2014-05-26 03:25:15 +03:00
Vesa
592b4aeb1a New NES instrument 2014-05-26 03:24:36 +03:00
Vesa
eaf0f15d3f FxMixerView: prevent mixer from being loaded with improper send buttons which cause crashes when clicked, fixes #766 2014-05-25 13:55:05 +03:00
Oskar Wallgren
2e78e65d59 Code simplifed 2014-05-24 20:02:18 +02:00
Hannu Haahti
d715c18b65 SampleBuffer: amplify in post 2014-05-23 21:50:47 +03:00
Oskar Wallgren
768f0e54b0 Random graph approximation and cleanup 2014-05-23 03:46:40 +02:00
Hannu Haahti
904370ec34 SampleBuffer: fix amplification 2014-05-22 23:48:05 +03:00
Oskar Wallgren
3d61768538 Gui button fix, test backward compatibility 2014-05-22 19:25:04 +02:00
Tobias Doerffel
00e7fe236c ZynAddSubFX: imported current head
Imported current head of LMMS-specific ZynAddSubFX source code.

HEAD: c38c705ea40914f6bd63f799ab8dad91411a93c0
2014-05-22 11:33:39 +02:00
Oskar Wallgren
85c02cddfe Random wave first commit, pixmap button defect 2014-05-22 07:17:55 +02:00
Tres Finocchiaro
71f6b1b205 Drag-and-drop support for VST, SF2 2014-05-21 16:39:02 -04:00
Vesa V
3e02a15908 Merge pull request #748 from diizy/master
Fix globalautomationvalueat and coding style
2014-05-21 17:45:02 +03:00
Vesa
9742becb81 Fix globalautomationvalueat and coding style 2014-05-21 17:37:30 +03:00
Tobias Doerffel
bfe2f0cf11 InstrumentFunctions: fix base note playback in chords
As of 6650dd356d base notes are not played
anymore when chords are enabled. Therefore create a separate NotePlayHandle
for the base note like we do for all other notes in the chord.
2014-05-20 23:13:13 +02:00
Tobias Doerffel
1decf5d6ea Merge pull request #739 from diizy/master
Removal of the "sample-exact controllers" and "anti-aliasing oscillators...
2014-05-18 22:27:37 +02:00
Vesa
97ff5e99e0 Removal of the "sample-exact controllers" and "anti-aliasing oscillators" qualitysettings. 2014-05-18 21:36:49 +03:00
Yann Collette
6a5e7b18de add lib64 directories to search for ladspa plugins 2014-05-18 19:22:29 +02:00
Tobias Doerffel
465aa1afbc EffectChain: remember original effect plugin data when loading dummy plugin
We don't want to loose the settings of an effect plugin even if it's not
available and thus can't be instantiated. Therefore remember original
settings data and save them back properly.

Partly closes #733.
2014-05-18 15:53:18 +02:00
Tobias Doerffel
1b0264f501 DummyEffect: removed inline specifiers, fixed header guard identifiers 2014-05-18 15:27:49 +02:00
Tobias Doerffel
a71749af08 Merge pull request #720 from diizy/master
Initial implementation for two additional methods in AutomatableModel, A...
2014-05-18 15:15:49 +02:00
Tobias Doerffel
6b6bfa2666 Merge pull request #734 from diizy/bandlimit
Move the initialization of BandLimitedWaves into engine.cpp
2014-05-18 15:11:51 +02:00
Tobias Doerffel
28fa95ae56 Merge pull request #727 from diizy/kicker
Kicker: new UI / graphics, also some additions:
2014-05-18 15:11:06 +02:00
Tobias Doerffel
cc8cb50efa Merge pull request #729 from tresf/stable-1.0
swh plugins:  Fix SWH destructors
2014-05-18 15:10:12 +02:00
Tobias Doerffel
aa8eea2fb1 Merge pull request #736 from diizy/powerchord
InstrumentFunctions: Add power chord
2014-05-18 15:09:47 +02:00
Vesa
c854f1d0ec InstrumentFunctions: Add power chord
Aka. 5-chord, simple 5th interval chord. A very simple addition and something I've always wondered why it's missing from the very extensive huge list of chords and scales.
2014-05-18 13:14:52 +03:00
Vesa
bf54852062 Move the initialization of BandLimitedWaves into engine.cpp
Since we now provide the wavetables as pre-generated files, there's no delay caused by their initialization
so we can move it to the startup of the software. I thought engine.cpp is the best place for this, it makes
conceptually more sense than main.cpp IMO.
This way each instrument that wants to use them in the future won't have to call the initialization function
separately, making things a bit easier.
2014-05-17 23:32:34 +03:00
Vesa
bbcb8635e2 Kicker: a bit of an additional GUI tweak 2014-05-16 20:33:53 +03:00
Tres Finocchiaro
313977ebfd swh plugins: Fix SWH destructors
The constructors had been fixed with commit #83c2019, but I had missed
the destructors.  This corrects the `_fini()` destructors as well.
2014-05-16 13:11:26 -04:00
Vesa
2ff70e6aba Kicker: new UI / graphics, also some additions:
- Envelope length is now temposyncable and has higher maximum
- Distortion is divided to start/end knobs for a simple distortion envelope
- Everything backwards compatible
2014-05-16 15:48:36 +03:00
Tobias Doerffel
1e6cd3c6a1 Merge pull request #714 from tresf/stable-1.0
Fix font colors on Apple #527
2014-05-15 22:44:56 +02:00
Vesa
aefc9832f8 Initial implementation for two additional methods in AutomatableModel, AutomationPattern:
These methods are used to fetch the automated value of a model at a given MidiTime
These are still untested but that shouldn't be a problem since they aren't actually used by anything yet... but I'll be doing some testing and bugfixing (if needed) for them later.
These will be an important step in making sampletracks eventually be reliably playable from any position, and more generically, being able to reliably convert MidiTime to real time. Of course they can be useful for other things too (not sure what though, yet).
2014-05-15 03:02:42 +03:00
Vesa V
fd89e4c5e6 Merge pull request #717 from Umcaruje/master-betterorganic
Tweaked the color of the organic logo
2014-05-14 00:55:58 +03:00
Umcaruje
05517aefc4 Tweaked the color of the organic logo 2014-05-13 22:02:43 +02:00
Tres Finocchiaro
7404eef34a Revert changes 2014-05-12 22:10:28 -07:00
Tres Finocchiaro
e401ac5c9d Revert changes 2014-05-12 22:09:47 -07:00
Tres Finocchiaro
959db3d7ac Revert changes 2014-05-12 22:08:34 -07:00
Tres Finocchiaro
5bb5ffc152 Revert changes 2014-05-12 22:06:44 -07:00
Tres Finocchiaro
9abfbd6c94 #527 2014-05-12 21:37:01 -07:00
Tobias Doerffel
28cf4a5f8d Merge remote-tracking branch 'origin/stable-1.0'
Conflicts:
	CMakeLists.txt
	data/CMakeLists.txt
	include/SampleBuffer.h
	plugins/CMakeLists.txt
	plugins/zynaddsubfx/zynaddsubfx/src/Params/PADnoteParameters.cpp
	src/core/SampleBuffer.cpp
2014-05-12 21:57:10 +02:00
Tobias Doerffel
7dd9ee04e1 Bump version to 1.0.90
This is the master branch which is going to end up in the 1.1.x series
therefore bump version now as a preparation.
2014-05-12 21:44:57 +02:00
Tobias Doerffel
0e2451bd6e Watsyn: link against libsamplerate
Fixes Win32/Win64 build.
2014-05-12 21:44:26 +02:00
Tobias Doerffel
cf7acc382d BandLimitedWave: export class in LMMS binary
Fixes Win32/Win64 build of Monstro plugin.
2014-05-12 21:43:44 +02:00
Tobias Doerffel
2edb5ed2c6 ZynAddSubFX: added update script
Added script to pull in latest ZynAddSubFX sources from LMMS-ZynAddSubFX
repository.
2014-05-12 19:58:25 +02:00
Tobias Doerffel
105cb8c195 Merge branch 'master' of github.com:LMMS/lmms 2014-05-12 19:23:43 +02:00
Tobias Doerffel
e4beaf0074 ZynAddSubFX: imported current head
Imported current head of LMMS-specific ZynAddSubFX source code.

HEAD: c920930cce09b4f691f585d93a19eac85672e50e
2014-05-12 19:17:51 +02:00
Tobias Doerffel
66c2d620ef ZynAddSubFX: removed submodule 2014-05-12 19:15:30 +02:00
Tres Finocchiaro
5aa6779108 Fix incorrect path to libZynAddSubFxCore.dylib 2014-05-09 08:45:10 -07:00
Tres Finocchiaro
3a1bc2a7ae Fix "Use of undeclared identifier 'getpid'"
Troubleshooting RemoteZynAddSubFX.
2014-05-09 08:41:07 -07:00
Tobias Doerffel
90496600f2 SWH: fixed Win32 compilation
The recent adaptions for OS X broke build for Win32.
2014-05-08 21:59:30 +02:00
Tobias Doerffel
25204abdab Merge remote-tracking branch 'tresf/stable-1.0' into stable-1.0
Conflicts:
	plugins/opl2/fmopl.c
2014-05-08 21:53:03 +02:00
Tres Finocchiaro
049a88fe8e Fix SWH contructors (Apple)
@tobydox, please advise as I cannot easily test the win32 impact of this
change.
2014-05-08 15:36:51 -04:00
Tres Finocchiaro
7fb434c26d #ifdef indent corrections 2014-05-08 11:05:54 -07:00
Tres Finocchiaro
72620542c0 OpulenZ/opl2 build fixes (Apple)
- Cleaned up many non-bracketed sections for stricter compilers.
- Remove custom `INLINE` keyword when building on clang.
- Renable opl2 via plugins\CMakeLists.txts

https://cloud.githubusercontent.com/assets/6345473/2919394/c474d668-d6da-11e3-82db-778a7ce6014d.png
2014-05-08 14:01:27 -04:00
Tres Finocchiaro
e979ac06c5 Update lmms.plist.in 2014-05-07 19:06:40 -07:00
Tobias Doerffel
14815728ee Merge pull request #691 from eagles051387/stable-1.0
updated README to give link to github wiki instead of SF
2014-05-07 23:28:58 +02:00
Tres Finocchiaro
52e76c66b4 Update lmms.plist.in 2014-05-07 13:50:45 -07:00
Tres Finocchiaro
6ac9c28fee Update CMakeLists.txt 2014-05-07 13:28:10 -07:00
Tres Finocchiaro
26a48e1c3a Update lmms.plist.in 2014-05-07 13:26:04 -07:00
Tres Finocchiaro
3e2fea65dc Apple mimetype support 2014-05-07 13:12:07 -07:00
Tres Finocchiaro
2037f082d2 Update CMakeLists.txt 2014-05-07 12:46:58 -07:00
Jonathan Aquilina
76a990dbdc updated README to give link to github wiki instead of SF 2014-05-07 18:17:24 +02:00
Tobias Doerffel
b9d51f0a40 Merge pull request #685 from tresf/stable-1.0
SWH Clang Fixes, Apple Installer Fixes
2014-05-06 09:39:22 +02:00
Tres Finocchiaro
1c4ab566d9 Fix "No documents could be created" when opening (Apple) 2014-05-05 21:51:46 -07:00
Tres Finocchiaro
3b0fd9dfca Apple Bundle Fix : Move Bundle Declarations #2 2014-05-05 09:54:12 -04:00
Tres Finocchiaro
a88b89682a Apple Bundle Fix : Move Info.plist task to /data
Also ADD_SUBDIRECTORY /data/scripts for recent Apple Installer changes.
2014-05-05 09:48:22 -04:00
Tres Finocchiaro
6b5f3565d8 Apple Bundle Fix : Move tasks from / to /data/scripts 2014-05-05 09:47:06 -04:00
Tres Finocchiaro
ca778dd487 Apple DMG Fix : Fix %VARS% for DMG Script 2014-05-05 09:45:32 -04:00
Tres Finocchiaro
bc81274fa8 Apple Bundle Fix : Allow %VARS% for Bundle Script 2014-05-05 09:45:01 -04:00
Tres Finocchiaro
478cef528a Apple Bundle Fix : Move Bundle Declarations
The "MACOSX_BUNDLE..." declarations must occur before
ADD_SUBDIRECTORY(plugins) in order for the child CMake to inherit the
properties from the parent.

This is needed for scripts/create_apple_dmg.sh to inherit
"MACOS_BUNDLE_BUNDLE_VERSION", etc.
2014-05-05 09:43:19 -04:00
Tres Finocchiaro
83e8a9e1b9 Apple Bundle Fix 2014-05-04 21:04:55 -07:00
Vesa V
31268a0b6b Merge pull request #684 from diizy/autorec
Automation recording: remove unnecessary hasAutomation() - the pattern d...
2014-05-05 01:02:21 +03:00
Vesa
dbe69c74ec Automation recording: remove unnecessary hasAutomation() - the pattern doesn't need to already have automation in
order to record more...
2014-05-05 00:57:32 +03:00
Tobias Doerffel
117714abd1 Merge pull request #683 from diizy/autorec
Automation recording: add option to trackops to switch on/off recording ...
2014-05-04 23:49:56 +02:00
Vesa
6b7a3c0041 Automation recording: add option to trackops to switch on/off recording in all TCOs on the track
I still had time to implement this convenient little thing, so here you go...
The same code can be reused in the future for sampletracks as well.
2014-05-05 00:37:39 +03:00
Tobias Doerffel
06a6407b60 Merge pull request #682 from diizy/autorec
Automation Recording
2014-05-04 22:55:27 +02:00
Vesa
62068684c2 Fix to previous - use value<float>() instead of making an unnecessary new function... also accidentally didn't upload the new image last time 2014-05-04 22:54:06 +03:00
Vesa
4564ed14cd Automation Recording 2014-05-04 21:59:39 +03:00
Tres Finocchiaro
42f7a5fb1e Apple Bundle Fix 2014-05-04 00:36:33 -07:00
Tres Finocchiaro
1be0823f5b Apple Bundle Fix 2014-05-04 00:12:22 -07:00
Tres Finocchiaro
3e9314bb63 Apple Bundle Fix 2014-05-04 02:13:05 -04:00
Tres Finocchiaro
9a0f930416 Apple Bundle Work 2014-05-04 01:40:10 -04:00
Tres Finocchiaro
bca86d9c1a Apple Bundle fixes 2014-05-04 01:10:52 -04:00
Tres Finocchiaro
3d274078ce New Info.plist resource for Apple Bundle 2014-05-04 00:49:54 -04:00
Tres Finocchiaro
245a223924 Add/Fix Apple specific VARS for Bundle
Added MIMETYPE, Changed ICON_FILE, dynamically builds shell scripts
using CMake @VARS@
2014-05-04 00:49:09 -04:00
Tres Finocchiaro
de89f683af Rename apple scripts for automatic configure
Renamed from create_apple_x.sh to create_apple_x.sh.in
Changed vars to use CMake @PARAMS@
2014-05-04 00:46:26 -04:00
Vesa V
1371b5b0fd Merge pull request #679 from diizy/master
PianoRoll: allow shift-right-click in addition to middle-click in vol/pa...
2014-05-03 23:53:50 +03:00
Vesa
d66d5870fd PianoRoll: allow shift-right-click in addition to middle-click in vol/pan bars 2014-05-03 23:52:24 +03:00
Tobias Doerffel
55217ac637 Made 1.0.2 release
This is a maintenance release of the 1.0.x series.
Bumped version number to 1.0.2 in CMakeLists.txt, README and lmms.rc.in.
2014-05-03 21:55:23 +02:00
Tobias Doerffel
06799b132e Merge pull request #677 from zonkmachine/whatsthis2
Whatsthis2
2014-05-03 20:46:59 +02:00
Tres Finocchiaro
a80dbd67e4 Replace LMMS_BULD_APPLE with __clang__ 2014-05-03 11:46:02 -07:00
Tres Finocchiaro
b987d3ed04 Replace LMMS_BULD_APPLE with __clang__ 2014-05-03 11:44:58 -07:00
Tres Finocchiaro
b0ffa45011 Include lmmsconfig.h for OS #ifdef 2014-05-03 11:34:16 -07:00
Oskar Wallgren
348315845a Add new toolbutton, whatsthis, to MainWindow 2014-05-03 20:32:58 +02:00
Tres Finocchiaro
ae67c792fe Remove inline function declaration for Apple
Typo :)
2014-05-03 09:30:15 -07:00
Tres Finocchiaro
19130e5fce Apple specific build path
Remove another offending inline function declaration for Apple compat.
2014-05-03 09:00:32 -07:00
Vesa V
f00fec8b69 Merge pull request #675 from diizy/master
Monstro, PianoRoll improvements
2014-05-03 00:14:53 +03:00
Vesa
b18d80e0b5 Pianoroll vol/pan UI - further improvements of earlier improvements 2014-05-03 00:12:18 +03:00
Tres Finocchiaro
3d95f82f30 Remove inline function recursion for Apple
q_sort is an inline function which recurses upon itself.  Some compilers such as MSVC limit this which can be overridden with a parameter.  Since I could find no such parameter for clang, this #IFDEF allows the sifter plugin to compile successfully.

If this approach has negative side effects, it should only affect apple.  If there's a better approach to this, please reject the pull request and submit your own.
2014-05-02 14:01:59 -07:00
Vesa
8ea5222793 Monstro: remove useless cast 2014-05-02 22:55:16 +03:00
Vesa V
0695a911c8 Merge pull request #674 from diizy/master
Monstro bugfixes, again...
2014-05-02 21:43:44 +03:00
Vesa
7a4395aabb ... oops 2... 2014-05-02 21:40:07 +03:00
Vesa
ca36fb141d oops.. 2014-05-02 21:37:49 +03:00
Vesa
a218a033b5 Monstro: more bugfixes
Fixes a bug caused by fastPow which was causing hangups in very specific situations only
2014-05-02 21:33:55 +03:00
Tres Finocchiaro
96e41491ad Fix incorrect C99 loop declaration 2014-05-02 10:51:42 -07:00
Tres Finocchiaro
a5d773cfce Re-enabled SWH for Apple 2014-05-01 22:15:23 -07:00
Tres Finocchiaro
e2c3e65767 Clang comp. fix unnecessary else 2014-05-01 22:13:14 -07:00
Tres Finocchiaro
d0c072b372 Copy project.icns to Resources directory 2014-05-01 19:48:16 -07:00
Tres Finocchiaro
2835c99783 Mimetype icon, Apple formatted 2014-05-01 22:44:25 -04:00
Tres Finocchiaro
8fb260317b Create mimetype for mmp,mmpz
Using Info.plist, register the mmp and mmpz mimetypes with the LMMS application.
2014-05-01 19:37:37 -07:00
Vesa V
8df5bb507b Merge pull request #673 from diizy/master
Monstro: envelope bugfixes
2014-05-02 03:58:26 +03:00
Vesa
a2233edfa6 Monstro: envelope bugfixes 2014-05-02 03:57:09 +03:00
Tobias Doerffel
059ddc2875 CMake/FindWine: search for wineg++ executable
Instead of relying on wineg++ being in PATH search for it as it might
reside somewhere else.
2014-05-02 00:17:42 +02:00
Vesa V
ef966c649f Merge pull request #672 from diizy/master
Another small monstro change
2014-05-02 00:59:36 +03:00
Vesa
7da1c5e09f Another small monstro change 2014-05-02 00:57:31 +03:00
Tobias Doerffel
83c2019611 LadspaEffect/TAP: fix instantiation/destruction
Instead of relying on naming the init functions _init() and _fini()
declare them as constructors/destructors and use a different name so
there's no double destruction

Closes #668.
2014-05-01 23:33:40 +02:00
Tobias Doerffel
036d2eede5 Merge pull request #670 from diizy/master
PianoRoll: improvements for note/panning widget
2014-05-01 23:06:44 +02:00
Vesa
23f1634f96 PianoRoll: improvements for note/panning widget 2014-05-01 23:15:28 +03:00
Vesa V
d6d88f6100 Merge pull request #667 from diizy/master
Monstro: very slight change to integrator code
2014-05-01 20:41:20 +03:00
Vesa
787d4e9832 Monstro: very slight change to integrator code 2014-05-01 20:40:11 +03:00
Tobias Doerffel
a7161ffce0 Merge pull request #666 from diizy/master
FXLine: add context menu with options to remove, move & rename FX channe...
2014-05-01 17:17:57 +02:00
Vesa
ed19009d29 FXLine: add context menu with options to remove, move & rename FX channels
- Uses existing functionality in FxMixer & FxMixerView to manipulate channels
- Instruments sending to the manipulated channels get automatically updated
- In the future I hope to implement a drag/drop functionality instead of the clunky context menu but this is a good first step until then
- Also added in a little QWhatsThis help message for the FX line, also accessible from context menu

That lmms_math thing got mixed in accidentally, but it's also a good change: always include math.h in lmms_math - that way, other parts of the software can just #include lmms_math, and won't have to #include both math.h and lmms_math, also the yet unused sinc function in it seems to need it so this prevents problems down the line
2014-05-01 18:10:05 +03:00
Tobias Doerffel
5325e635c3 CMake/FindWine: add suffix for finding library on Debian Testing
On Debian Testing the WINE libraries reside in /usr/lib/<arch>/wine.
Therefore add according suffix to search in as well.
2014-05-01 00:41:24 +02:00
Tres Finocchiaro
6a0952dc34 Add LADSPA default path for Apple 2014-04-30 10:49:07 -07:00
Tres Finocchiaro
6191a64325 Remove Content/bin directory from .app
Fixes "..LMMS.app/Contents/bin" directory not empty message which occasionally occurs when bin has hidden OS X files in it.
2014-04-30 10:22:55 -07:00
Tobias Doerffel
b069cd61ce Made 1.0.1 release
First maintenance release of the 1.0.x series.
Bumped version number to 1.0.1 in CMakeLists.txt, README and lmms.rc.in.
2014-04-30 15:33:15 +02:00
Tobias Doerffel
9c27956414 ZynAddSubFX: allocate spectrum on heap instead of stack
When loading some presets the PADnoteParameters spectrum size is 524288
or even bigger resulting in a stack allocation of 2 MB or more.
This results in a stack overflow on Win32 and thus crashes LMMS. Fix this
by allocating the spectrum on the heap instead.

Closes #543.
2014-04-30 15:20:44 +02:00
Tobias Doerffel
d58a4d8804 SampleBuffer: more sanity checks in getSampleFragment()
Despite of the previously introduced sanitizing it still sometimes happens
that an end frame variable is not greater than the corresponding start
frame variable. Make sure we don't crash by adding more sanity checks in
getSampleFragment().

Closes #629.
2014-04-30 11:34:34 +02:00
Tobias Doerffel
09fb597af4 SampleBuffer: always sanitize start and end frame settings
An end frame variable always has to be greater than a start frame in
order to prevent crashes due to negative frame counts being calculated
in getSampleFragment() otherwise.

Closes #629.
2014-04-30 11:33:18 +02:00
Tobias Doerffel
e9073c88bc PianoRoll: reset last note volume/panning when clearing project
In order to get a uniform behaviour when starting with a new project or
opening another project, reset volume and panning of last edited note so
new placed notes have default volume and panning.

Closes #644.
2014-04-30 10:48:42 +02:00
Tobias Doerffel
9fa4eae7ce Merge pull request #659 from diizy/organic
Organic: update artwork, add harmonic knobs to control harmonic of each ...
2014-04-29 23:56:01 +02:00
Vesa
63747787e4 Organic: fix detuning
The detuning scale was incorrectly calculated: instead of measuring in cents as it claims to, it was actually
in 1/100th octaves, so I fixed it so that I set the units to actual cents (1/100 seminote). Then I set the
range to +/-1200 cents and added compat code so that old values get multiplied by 12, to maintain backwards compat.
2014-04-29 22:54:42 +03:00
Vesa
dce6a26eb3 Organic: update artwork, add harmonic knobs to control harmonic of each oscillator 2014-04-29 20:13:05 +03:00
Tobias Doerffel
46b4fe0302 Merge pull request #658 from grejppi/master-fxrange
InstrumentTrack: fix FX channel range
2014-04-29 16:19:05 +02:00
Hannu Haahti
436b3a9e63 InstrumentTrack: fix FX channel range
Because it is set to INT_MAX by default and never corrected for
cloned instruments, it could go over the maximum and cause a
segmentation fault.
2014-04-29 15:32:41 +03:00
Tobias Doerffel
f02570b261 Merge pull request #654 from grejppi/master-songeditor
SongEditor: change middle click to shift+right click, fix #621
2014-04-28 21:28:21 +02:00
Tobias Doerffel
bdec1023e4 Merge pull request #653 from Umcaruje/master-fixpresets
Fixed broken delay/reverb on various presets
2014-04-28 21:27:12 +02:00
Tobias Doerffel
5552fc110a Merge pull request #657 from LMMS/flp-break
flp import: add missing break statement
2014-04-28 21:26:50 +02:00
Andrew Kelley
bff016dec8 flp import: add missing break statement 2014-04-28 11:35:23 -07:00
Hannu Haahti
885b52cfa8 keep deletion with middle click 2014-04-28 01:07:36 +03:00
Umcaruje
e9d31d6f8d Fixed broken delay/reverb on various presets 2014-04-27 23:38:58 +02:00
Hannu Haahti
cdcba9f685 SongEditor: change middle click to shift+right click, fix #621 2014-04-28 00:38:00 +03:00
Tobias Doerffel
c0b7fbaf93 Merge pull request #651 from diizy/master
Optimizations for Monstro & Watsyn
2014-04-27 22:57:30 +02:00
Vesa
08b2cdba29 Revert partially one of the previous optimizations, was causing some unwanted noisy stuff 2014-04-27 23:10:20 +03:00
Vesa
41f3722e5b Fix previous.. 2014-04-27 21:31:42 +03:00
Vesa
eaebb40986 Optimizations for Monstro & Watsyn 2014-04-27 21:29:25 +03:00
Tobias Doerffel
e1164c4a67 Merge pull request #648 from diizy/master
Interpolation, MemoryHelper - fixes
2014-04-27 00:09:37 +02:00
Vesa
37b9df3458 Monstro: fix LFO att. on random smooth mode 2014-04-26 19:56:21 +03:00
Vesa
e638bb8ae1 MemoryHelper: update coding style 2014-04-26 18:10:36 +03:00
Vesa
ff3e94bd75 Fix a typo in interpolation.h 2014-04-26 16:16:38 +03:00
Tobias Doerffel
c98a60111e Merge pull request #647 from diizy/mixer
FxMixer: turn off effects
2014-04-26 10:06:58 +02:00
Vesa
0f37bd13ee FxMixer - Further optimization: skip copying buffers if we know the sender has no meaningful input to copy 2014-04-26 07:30:23 +03:00
Vesa
7d5250b93a FxMixer: turn off effects 2014-04-26 06:16:51 +03:00
Tobias Doerffel
2505c770bb AutomationEditor: removed useless assertion
As suggested by wongcc966422 and others, the assertion at this place
is superfluous and just causes unneccessary crashes.

Closes #540.
2014-04-25 23:43:05 +02:00
Tobias Doerffel
e4d21ad5f9 Merge pull request #645 from diizy/master
BandLimitedWave: provide wavetables as pre-generated "bin" files, these ...
2014-04-25 23:30:46 +02:00
Vesa
9b9e175925 BandLimitedWave: provide wavetables as pre-generated "bin" files, these will be installed under datadir/wavetables
The runtime-generation is still there as a fallback, and the file generation code is left in as commented-out, because
it might be needed in the future
2014-04-25 19:17:41 +03:00
Tobias Doerffel
f4a8df7c67 Merge pull request #639 from diizy/master
Monstro changes
2014-04-25 11:46:21 +02:00
Vesa
b36f905547 Monstro: Explicitly initialize LFO values with random, so that smooth random reliably starts from a random value 2014-04-24 23:25:12 +03:00
Vesa
060063f5a8 Monstro changes 2014-04-24 13:31:51 +03:00
Tobias Doerffel
9a3ab692e9 ZynAddSubFX: update 2014-04-24 09:54:56 +02:00
Tobias Doerffel
cf35a58629 Merge pull request #638 from tresf/stable-1.0
STK Mallet support (Apple)
2014-04-24 09:11:45 +02:00
Tres Finocchiaro
53e67bae00 Copy rawwaves to Apple bundle 2014-04-23 20:33:19 -07:00
Tres Finocchiaro
ec708aa967 Update config_mgr.cpp 2014-04-23 20:31:02 -07:00
Tres Finocchiaro
85fbffb947 Fix relative path for stk rawwaves on OSX 2014-04-23 20:28:37 -07:00
Tobias Doerffel
cdbbbaf559 Merge pull request #635 from diizy/master
Samplebuffer/AFP: coding style, remove redundant inlines
2014-04-23 21:24:49 +02:00
Vesa
4dece979c6 Samplebuffer/AFP: coding style, remove redundant inlines 2014-04-23 19:15:59 +03:00
Tobias Doerffel
0e6f6eef12 Merge pull request #633 from diizy/master
AFP: Add interpolation selector, fix segfault-causing bug with reverse m...
2014-04-23 11:36:31 +02:00
Vesa
fa67d0b436 AFP: Add interpolation selector, fix segfault-causing bug with reverse mode 2014-04-23 12:18:35 +03:00
Tobias Doerffel
8ca38c4b48 Merge remote-tracking branch 'origin/stable-1.0' 2014-04-22 19:22:40 +02:00
Tobias Doerffel
5168c50325 Merge pull request #624 from oeai/stable-1.0
new translation ru
2014-04-22 19:22:22 +02:00
Tobias Doerffel
42b7b09973 Merge pull request #617 from psyomn/local-master
Move align-mem functions to Class
2014-04-22 19:20:44 +02:00
Tobias Doerffel
a6937d4021 Merge remote-tracking branch 'origin/stable-1.0' 2014-04-22 11:09:20 +02:00
Hannu Haahti
b8476b742e RemoteVstPlugin: really close the plugin
(cherry picked from commit d50d376b2a)
2014-04-22 11:08:56 +02:00
Hannu Haahti
ad3884c8f3 Effect: change minimum gate to FLT_MIN
This helps reverbs (for example) to not get cut too soon (#424)

(cherry picked from commit f8773b8978)
2014-04-22 11:08:40 +02:00
Vesa V
ddf54fe5a0 Merge pull request #632 from grejppi/master-fxgate
Effect: change minimum gate to FLT_MIN
2014-04-21 16:03:32 +03:00
Hannu Haahti
f8773b8978 Effect: change minimum gate to FLT_MIN
This helps reverbs (for example) to not get cut too soon (#424)
2014-04-21 15:40:26 +03:00
ra
01d611db6b +.qm +1tw. 2014-04-20 19:28:07 +04:00
ra
43f2090b67 more tweaks 2014-04-20 18:03:26 +04:00
ra
389405b90d new .qm if needed 2014-04-19 16:06:03 +04:00
Vesa V
98f49e274b Merge pull request #622 from grejppi/master-vst
RemoteVstPlugin: really close the plugin
2014-04-19 14:48:47 +03:00
Ra
3d2020555b Update ru.ts 2014-04-19 15:40:08 +04:00
ra
ceefef8029 new translation ru 2014-04-19 15:26:59 +04:00
Hannu Haahti
d50d376b2a RemoteVstPlugin: really close the plugin 2014-04-19 13:32:48 +03:00
psyomn
bb7209b894 mem-helper.cpp: add license information 2014-04-17 02:25:07 -04:00
psyomn
32e6e9edce mem-helper: move align-mem functionality to class
There was some memory alignment logic inside the Mixer cpp file. To break down
the code and separate things into smaller modules, the aligned memory stuff
was crammed into a new class called MemoryHelper.

The MemoryHelper can be reused for any other aligned memory that may be needed
by another component.
2014-04-17 02:19:53 -04:00
Vesa V
87e9718a9c Merge pull request #616 from grejppi/master-arpdir
backwards compatibility fix for #579
2014-04-17 04:24:38 +03:00
Hannu Haahti
33aafbf3aa backwards compatibility fix for #579 2014-04-17 03:18:42 +03:00
Vesa V
c767d849b1 Merge pull request #611 from JohannesLorenz/master
Default ctors for LED checkbox and LCD spinbox. Fixes for knob.
2014-04-16 13:20:13 +03:00
Johannes Lorenz
51ed1105df Default ctors for LED checkbox and LCD spinbox. Fixes for knob. 2014-04-15 13:43:23 +02:00
Vesa V
f32f7689b4 Merge pull request #609 from diizy/wavetablesynth
Watsyn: use fast sinc instead of medium quality (not much diff in this c...
2014-04-14 14:18:28 +03:00
Vesa
49d05f466d Watsyn: use fast sinc instead of medium quality (not much diff in this case), increase oversampling to 32 because why not
Graph: optimize graph widget codepaths so that we don't send redundant samplesChanged signals, which in watsyn cause recalculation of the wavetable
2014-04-14 14:15:08 +03:00
Vesa V
fb1febe299 Merge pull request #608 from diizy/wavetablesynth
Watsyn updates: use sinc instead of cubic for oversampling of the wavegr...
2014-04-14 12:48:58 +03:00
Vesa
79120eb0b1 Watsyn updates: use sinc instead of cubic for oversampling of the wavegraph 2014-04-14 12:45:07 +03:00
Vesa V
9df4dfc087 Merge pull request #599 from diizy/master
Add some more interpolation algorithms
2014-04-13 18:51:24 +03:00
Vesa V
3a8f68d259 Merge pull request #600 from softrabbit/master
Organic: make mixing of oscillators independent of lower oscs
2014-04-13 18:50:46 +03:00
Vesa V
6de80921d7 Merge pull request #598 from tresf/stable-1.0
Additional Portuguese locale data
2014-04-13 18:04:19 +03:00
Vesa
26553cab17 Updates to bandlimitedwave code (using new interpolation) and Monstro 2014-04-13 12:48:38 +03:00
Raine M. Ekman
4b1952d90c Organic: make mixing of oscillators independent of lower oscs 2014-04-13 12:11:06 +03:00
Vesa
b150ea2a0d Add some fancy new interpolation algorithms 2014-04-13 10:34:38 +03:00
Tres Finocchiaro
a3dca970bc Renamed to fix country designation bug 2014-04-12 22:19:14 -04:00
Tres Finocchiaro
c8b243f49b Updated Portugese by Esteban Viveros
Second translation attempt.
2014-04-12 21:30:16 -04:00
Tres Finocchiaro
6b7d833215 Delete pt_br.qm 2014-04-12 21:23:08 -04:00
Tres Finocchiaro
e7ebca02c7 Update #2 by Esteban Viveros 2014-04-12 21:16:47 -04:00
Tobias Doerffel
1f661be72c Merge remote-tracking branch 'origin/stable-1.0'
Conflicts:
	plugins/CMakeLists.txt
	plugins/zynaddsubfx/src/Effects/Alienwah.cpp
	src/core/track.cpp
2014-04-12 11:08:27 +02:00
Tres Finocchiaro
fea7510f09 Brazilian Portuguese release translation file (QM)
The TS file is the "source", the QM file is the "binary".
2014-04-11 23:13:34 -04:00
Tres Finocchiaro
b5fff0e230 Delete pt_br.qm 2014-04-11 23:06:58 -04:00
Tobias Doerffel
b09d4f5f5d Merge pull request #592 from diizy/palette
LmmsPalette
2014-04-11 23:53:18 +02:00
Tobias Doerffel
b31c7fcf07 Merge pull request #593 from tresf/stable-1.0
Portuguese translation by Esteban Viveros
2014-04-11 23:52:09 +02:00
Tres Finocchiaro
6d9c8c0f3b Portuguese translation by Esteban Viveros 2014-04-11 09:04:36 -04:00
Vesa
4b9f8c070f Forgot some cleanup 2014-04-11 11:20:04 +03:00
Vesa
43d503003e LmmsPalette: finally a working implementation 2014-04-11 11:07:49 +03:00
Vesa
ec69c48e5f LmmsPalette - continuing... still not working yet 2014-04-11 07:14:37 +03:00
Vesa
43cb962ae1 Initial implementation of LmmsPalette (doesn't work yet) 2014-04-10 10:51:06 +03:00
Tobias Doerffel
b32e602af5 Merge pull request #589 from diizy/master
AFP: add updated artwork, fix the bug where opening the plugin w/o sampl...
2014-04-09 23:53:22 +02:00
Vesa
2599370d53 AFP: add updated artwork, fix the bug where opening the plugin w/o samplebuffer glitches the wavegraph
Samplebuffer: use qualitysettings for interpolation (currently defaults to SINC_FASTEST on playback), also: in visualize, draw both channels instead of averaging them into one graph (otherwise, samplebuffers with counter-phase content show up as flatline)
2014-04-10 00:25:25 +03:00
Tobias Doerffel
d3aff6e1fb Merge pull request #583 from diizy/bandlimit
Monstro/Bandlimit updates
2014-04-09 22:02:07 +02:00
Tobias Doerffel
0068be62c0 Merge pull request #586 from JohannesLorenz/def_ctor_widgets
Def ctor for knob + logscale patch
2014-04-09 22:01:18 +02:00
Johannes Lorenz
63f6f2eab6 Final patch for logscales and knob with def ctors. 2014-04-09 13:18:01 +02:00
Johannes Lorenz
d08857bba8 knob without def ctors. 2014-04-09 12:31:53 +02:00
Johannes Lorenz
3d0ce057d6 Small fixes. Compiling, but stereo linking does still not work (see mailing list). 2014-04-09 12:31:21 +02:00
Johannes Lorenz
2b8e5c3992 Logscales, merged. 2014-04-09 12:31:21 +02:00
Vesa
2bfd19cc44 Move waveform generation away from main 2014-04-09 13:30:17 +03:00
Vesa
d5fa2568ed Further improvements to bandlimited waves 2014-04-09 13:03:34 +03:00
Tobias Doerffel
f824b87e3a Merge pull request #582 from softrabbit/stable-1.0
Fix broken command line rendering.
2014-04-09 09:48:16 +02:00
Tobias Doerffel
d6445b34b3 Merge pull request #581 from softrabbit/master
Fix broken command line rendering.
2014-04-09 09:48:10 +02:00
Vesa
7b0d829cc4 More fixes 2014-04-08 23:07:16 +03:00
Raine M. Ekman
2c19290fab Fix broken command line rendering. Should always check that editor windows exist before using them. 2014-04-08 21:44:19 +03:00
Raine M. Ekman
93693fcd4b Fix broken command line rendering. Should always check that editor windows exist before using them. 2014-04-08 21:34:24 +03:00
Tobias Doerffel
024d62d574 Merge pull request #580 from diizy/master
Track: depointerize qproperties
2014-04-08 11:38:34 +02:00
Vesa
7b6d237a89 Track: depointerize qproperties 2014-04-08 12:24:55 +03:00
Vesa
5397bbeaf4 Bandlimit changes/algorithm tweaking, add sinc function to lmms_math 2014-04-08 12:06:39 +03:00
Tobias Doerffel
7596a58b6d Merge pull request #578 from diizy/bandlimit
Bandlimited waveform generation
2014-04-08 09:02:22 +02:00
Tobias Doerffel
2457990da9 Merge pull request #579 from zonkmachine/arpDownUp
Arpeggio - Down, up
2014-04-08 09:00:28 +02:00
Vesa
13237f9c8e Monstro: use phase delta instead of frequency for deciding which wavetable to use 2014-04-08 09:48:43 +03:00
Oskar Wallgren
dbd865d879 Merge branch 'master' into arpDownUp 2014-04-08 01:38:32 +02:00
Vesa
e10bbeb84e Bandlimited wave generation implemented for LMMS, currently only utilized by Monstro 2014-04-07 22:55:44 +03:00
Tobias Doerffel
1d7794e02a Merge pull request #576 from diizy/master
FxMixerView: fix the fx chain UI (so we'll be able to see more than 2/3 ...
2014-04-07 11:16:10 +02:00
Vesa
9024647f32 FxMixerView: fix the fx chain UI (so we'll be able to see more than 2/3 of an fx) 2014-04-07 04:54:42 +03:00
Vesa
0956270dd9 FxMixerView: fix the fx chain UI (so we'll be able to see more than 2/3 of an fx) 2014-04-07 02:54:32 +03:00
Tobias Doerffel
138bc79941 Merge pull request #574 from BaraMGB/songeditor
corrects the drag'n'drop behavior in the song editor.
2014-04-06 22:29:56 +02:00
Steffen Baranowsky
61c5738582 corrects the drag'n'drop behavior in the song editor. 2014-04-06 22:18:33 +02:00
Tobias Doerffel
b1062173fc Merge pull request #571 from grejppi/kicker
kicker: fix oversight in version check
2014-04-06 21:58:05 +02:00
Tobias Doerffel
e97bb1dd39 Merge pull request #570 from diizy/stable-1.0
Fix crash on close patch rebased for stable
2014-04-06 21:57:44 +02:00
Tobias Doerffel
f21fbf1946 Merge pull request #569 from diizy/loops
AFP, Samplebuffer updates
2014-04-06 21:57:17 +02:00
Tobias Doerffel
46b7f7f1c4 Merge pull request #567 from diizy/master
CSS styling features, Monstro updates
2014-04-06 21:55:29 +02:00
Vesa
445a31e54a Monstro: tweak the constants a bit 2014-04-06 22:14:54 +03:00
Vesa
a21928fe39 Monstro updates: fixes, improvements, optimizations 2014-04-06 20:58:09 +03:00
Vesa
e11c1cb8fc For consistency, define text colour of bb-tracks in CSS too 2014-04-06 11:38:12 +03:00
Vesa
994dcd3964 TCOView: Make patternviews foreground elements stylable with qproperties 2014-04-06 11:38:12 +03:00
Vesa
3bcffcdf5b Track: make the song editor background CSS-stylable with qproperties 2014-04-06 11:38:12 +03:00
Hannu Haahti
13b6c834d6 kicker: fix oversight in version check 2014-04-06 02:48:17 +03:00
Vesa
5b29142c28 Fix crash on close patch rebased for stable 2014-04-05 23:57:12 +03:00
Vesa
59794b35a8 AFP: fix loadsettings 2014-04-05 21:50:55 +03:00
Johannes Lorenz
554323dcb6 Current logscales fix. 2014-04-05 09:05:22 +02:00
Johannes Lorenz
1f5ef70d2c Logscales temporary commit. 2014-04-05 08:15:35 +02:00
Tobias Doerffel
bd691e6d68 Merge pull request #564 from diizy/master
Optimize linear interpolation function
2014-04-05 07:43:11 +02:00
Tobias Doerffel
4455faceb6 Merge pull request #565 from grejppi/master
move fastPow() to lmms_math.h
2014-04-05 07:42:52 +02:00
Vesa
e8eaa1f2c2 Monstro fixes: envelope accuracy betterified 2014-04-05 04:20:48 +03:00
Hannu Haahti
6c33b4af80 moved fastPow() to lmms_math.h 2014-04-05 03:32:54 +03:00
Vesa
9bef55c7f5 Add usage of linearInterpolate() to several places (mostly my plugins for now but i'll add more if i find them) 2014-04-05 02:23:17 +03:00
Vesa
5ced0c083f Optimize linear interpolation function 2014-04-05 01:18:15 +03:00
Vesa
55f678b80d Samplebuffer changes - we can just directly read floats from libsndfile, seems to work (faster) this way 2014-04-05 00:56:21 +03:00
Tobias Doerffel
b0cdcc639e Merge pull request #559 from diizy/loops
SampleBuffer: fix a segfault when moving a loop point while playing a no...
2014-04-04 09:21:18 +02:00
Vesa
afa1275af9 SampleBuffer: fix a segfault when moving a loop point while playing a note, also do some sptring cleanup (some unused/redundant variables removed)
Also, some codepath optimization: add a method to SampleBuffer for setting all loop/start/endpoints at once, so we don't have to wait for mutex unlocks 4 times in a row. Then make AFP utilize this method.
2014-04-04 02:48:04 +03:00
Tobias Doerffel
19aec58abc Merge pull request #558 from diizy/fixclosecrash
Fix close on crash patch which was  posted on the mailing list by Filipe...
2014-04-04 00:30:30 +02:00
Vesa
7730f4821d Fix close on crash patch which was posted on the mailing list by Filipe Coelho 2014-04-04 01:19:44 +03:00
Tobias Doerffel
647240624d Merge pull request #557 from diizy/loops
SampleBuffer, AFP: implement ping-pong loop mode
2014-04-03 23:44:55 +02:00
Vesa
0442be3729 Finish ping pong loop implementation in AFP 2014-04-04 00:40:03 +03:00
Vesa
7350f983b0 Ping-pong loop implementation: done, starting on AFP changes... 2014-04-04 00:40:03 +03:00
Vesa
0cfda7d1f4 Initial ping-pong loop implementation 2014-04-04 00:40:03 +03:00
Tobias Doerffel
49cfbda916 Merge pull request #554 from tresf/stable-1.0
OSX Mavericks Support
2014-04-02 11:27:46 +02:00
Tres Finocchiaro
1ac0c51744 Force white QLabels per #527
#527
2014-04-02 00:55:58 -04:00
Tres Finocchiaro
63e8f7e2b1 Update create_apple_dmg.sh 2014-04-02 00:42:11 -04:00
Tres Finocchiaro
7539791d13 Echo comment to drag/drop dmg script to terminal 2014-04-01 20:12:27 -07:00
Tres Finocchiaro
4bfb989151 Replaced SET(LIBRARY_PATH) with LINK_DIRECTORIES 2014-04-01 20:07:44 -07:00
Tres Finocchiaro
77b2261630 Added custom target, build and src variables 2014-04-01 19:04:59 -07:00
Tres Finocchiaro
7f5b2f0a3d Change to single-line echos for Info.plist 2014-04-01 18:57:19 -07:00
Tres Finocchiaro
b5ea738a45 Fix #include <QtXml> on Apple/MacPorts 2014-04-01 14:20:02 -07:00
Tres Finocchiaro
7782c3ad38 Clang comp. fix, out.real()+= syntax error 2014-04-01 14:12:40 -07:00
Tres Finocchiaro
7669a1612f Added isnan(), etc declarations for Apple 2014-04-01 14:09:32 -07:00
Tres Finocchiaro
ec32ce10fa Omit OpulenZ plugin directory on Apple 2014-04-01 13:03:09 -07:00
Tres Finocchiaro
6bce7abc40 Added Apple specific compile options 2014-04-01 15:40:44 -04:00
Tobias Doerffel
61569864b4 Merge pull request #553 from diizy/master
Timeline: Change loop points into different graphics
2014-04-01 19:57:48 +02:00
Tres Finocchiaro
46c1cbc85f Added Apple specific packaging/installation scripts 2014-04-01 13:10:55 -04:00
Tres Finocchiaro
93689f758f Added Apple specific artwork 2014-04-01 13:03:35 -04:00
Vesa
030f9566c8 Finish previous 2014-04-01 19:24:48 +03:00
Vesa
0140e94f79 Make loop points different 2014-04-01 19:13:36 +03:00
Tobias Doerffel
9916febb66 Merge pull request #549 from softrabbit/stable-1.0
OpulenZ: code improvements (C99 compatibility)
2014-04-01 16:12:04 +02:00
Tobias Doerffel
80aa502e36 Merge pull request #550 from diizy/vsttest
Update aeffectx.h
2014-04-01 16:11:43 +02:00
Vesa
4355a2f0bb Remove comment 2014-04-01 01:27:24 +03:00
Vesa
95ecb51b51 Update aeffectx.h 2014-04-01 00:02:21 +03:00
Raine M. Ekman
b9e33736de OpulenZ: changed some __inline functions to "static inline",
which is more in line with later C dialects
2014-03-31 20:54:48 +03:00
Tobias Doerffel
174eb18062 Merge pull request #547 from diizy/master
New FX Mixer: GUI improvements - better icons for send button, fade the ...
2014-03-31 15:51:01 +02:00
Vesa
12c6ec25c9 New FX Mixer: GUI improvements - better icons for send button, fade the arrow a bit, use smaller knob that fits better 2014-03-31 16:42:27 +03:00
Tobias Doerffel
114e2f71ee Merge pull request #545 from grejppi/kicker
Kicker: backwards compatibility and some presets
2014-03-31 14:25:29 +02:00
Tobias Doerffel
ebd8d247d8 Merge pull request #544 from diizy/monstro
Monstro
2014-03-31 14:25:22 +02:00
Hannu Haahti
643de68907 kicker: add some presets to demonstrate its new features 2014-03-31 06:41:56 +03:00
Hannu Haahti
243c66e0e8 kicker: backwards compatibility 2014-03-31 06:34:58 +03:00
Oskar Wallgren
df6fa14bf3 New arpeggio direction - Down, up 2014-03-31 00:50:05 +02:00
Vesa
8f065c198a Monstro: add sync mechanism, make LFOs running, fix remaining small bugs 2014-03-31 01:37:38 +03:00
Tobias Doerffel
2a237c7c74 Merge pull request #542 from grejppi/master-browser
fileBrowser: keep filter after refresh
2014-03-30 23:14:55 +02:00
Hannu Haahti
d2a0723e14 fileBrowser: keep filter after refresh 2014-03-30 21:59:42 +03:00
Vesa
fc7c985c54 Monstro - envelope fix 2014-03-30 16:11:12 +03:00
Vesa
3b80ec74d1 Monstro - fixes, new waveforms 2014-03-30 15:18:29 +03:00
Tobias Doerffel
bbe6ee226e Merge pull request #539 from grejppi/kicker
Improvements to Kicker (work in progress)
2014-03-30 12:45:25 +02:00
Tobias Doerffel
d6efd028e1 TrackContainerView: disable undo/redo for track creation/removal
Due to the complex implementation of BB tracks it's hard to implement
a reliable undo/redo journalling for whole TrackContainerViews.

Closes #531.
2014-03-30 12:40:05 +02:00
Tobias Doerffel
75d8ab54be TrackContainerView: add journal checkpoints in view rather than model 2014-03-30 12:39:12 +02:00
Tobias Doerffel
bd1d9356b5 TrackContentObjectView: add journal checkpoint in remove() rather than close()
The remove() slot is only called upon user interaction (i.e. right click)
and thus the correct place where to make checkpoints.
2014-03-30 12:37:28 +02:00
Tobias Doerffel
118fb5122e Merge remote-tracking branch 'origin/stable-1.0' 2014-03-30 12:30:02 +02:00
Tobias Doerffel
083d1889ee BbEditor: use foreach() loop 2014-03-30 12:29:25 +02:00
Tobias Doerffel
e924888eb6 BbTrack: replaced static numOfBBTrack() by proper index() method 2014-03-30 12:28:53 +02:00
Tobias Doerffel
1adbac9009 Song: revert accidental change 2014-03-30 12:27:23 +02:00
Tobias Doerffel
445bdb69e3 Song: cleanup and coding style improvements 2014-03-30 12:21:37 +02:00
Vesa
32e981a518 Monstro - more alg. tweaks - getting better 2014-03-30 04:08:26 +03:00
Vesa
9f594268c8 Monstro - More fixes.. 2014-03-30 01:43:20 +02:00
Vesa
252e0609fa Monstro: fix again... 2014-03-30 00:32:26 +02:00
Vesa
c892c7a819 Monstro: Fix previous stupidity... 2014-03-30 00:29:03 +02:00
Vesa
8aad594cbd Monstro: algorithm tweaks, fixes, optimizations 2014-03-30 00:21:07 +02:00
Vesa
460bb0420c Negative volume env. fix 2014-03-29 23:23:04 +02:00
Vesa
8eaf629439 Add applyrelease 2014-03-29 23:08:25 +02:00
Vesa
78bcb8423f New instrument... Codename: Monstro. May be subject to a rename later. 2014-03-29 23:01:44 +02:00
Hannu Haahti
09630f1d56 kicker: reordered knobs 2014-03-29 21:18:01 +02:00
Hannu Haahti
b4421700fa kicker: some cleanup 2014-03-29 16:14:30 +02:00
Hannu Haahti
29c2d3fb1a kicker: possible to play notes too 2014-03-29 16:14:29 +02:00
Hannu Haahti
0967d91f44 paranoid 2014-03-29 16:14:29 +02:00
Hannu Haahti
8d987aabd4 kicker: noise improvements, decay -> length 2014-03-29 16:14:29 +02:00
Hannu Haahti
f1f6c71aa1 kicker: noise option + artwork 2014-03-29 16:14:29 +02:00
Hannu Haahti
172cffa3c5 kicker: envelope slope 2014-03-29 16:14:29 +02:00
Hannu Haahti
f53ecdf023 kicker: click param 2014-03-29 16:14:29 +02:00
Hannu Haahti
a4f0707939 slope param for kicker 2014-03-29 16:14:29 +02:00
Tobias Doerffel
ebc11f8558 ZynAddSubFX: update 2014-03-29 10:08:53 +01:00
Tobias Doerffel
f06119e787 Merge pull request #526 from diizy/loops
AFP: Add loopback point
2014-03-28 22:43:25 +01:00
Tobias Doerffel
66f5915425 Merge pull request #530 from softrabbit/bugs_283_303
AutomationEditor: horizontal grid drawing improvements
2014-03-28 22:41:54 +01:00
Vesa
8c0b22eca8 Forgot to clean some debug code... 2014-03-28 21:27:05 +02:00
Vesa
5c142cb2a4 AFP: add a separate loopback point, and knob to control it. 2014-03-28 21:27:05 +02:00
Raine M. Ekman
166a493eef Removed an unnecessary QDebug include 2014-03-28 19:14:53 +02:00
Tobias Doerffel
78337e5ac6 ZynAddSubFX: integrated latest version 2014-03-27 20:51:47 +01:00
Tobias Doerffel
9738b6ffce Merge remote-tracking branch 'origin/stable-0.4-zynaddsubfx-update'
Conflicts:
	plugins/zynaddsubfx/src/DSP/AnalogFilter.h
	plugins/zynaddsubfx/src/Effects/EffectLFO.h
	plugins/zynaddsubfx/src/Effects/Reverb.h
	plugins/zynaddsubfx/src/UI/EffUI.fl
	plugins/zynaddsubfx/src/UI/EffUI.h
	plugins/zynaddsubfx/src/UI/EnvelopeUI.fl
	plugins/zynaddsubfx/src/UI/EnvelopeUI.h
	plugins/zynaddsubfx/src/UI/FilterUI.fl
	plugins/zynaddsubfx/src/UI/FilterUI.h
	plugins/zynaddsubfx/src/UI/PartUI.cc
2014-03-27 20:34:49 +01:00
Tobias Doerffel
255b2a2f49 Merge pull request #513 from diizy/wavetablesynth
Wavetablesynth
2014-03-26 13:03:10 +01:00
Vesa
b272581632 Remove unnecessary if clauses 2014-03-26 13:38:07 +02:00
Vesa
1d30222b90 Watsyn: further optimizations, add two presets 2014-03-26 13:25:14 +02:00
Tobias Doerffel
c00926e777 Merge branch 'master' of github.com:LMMS/lmms 2014-03-26 11:40:55 +01:00
Tobias Doerffel
6650dd356d NotePlayHandle, InstrumentFunctions: reworked stacking and arpeggio handling
Instead of having various flags for realizing the arpeggion functionality
use a more generic approach here using the recently introduced "origin"
property.
2014-03-26 11:40:32 +01:00
Tobias Doerffel
89dc820d7b Merge remote-tracking branch 'origin/stable-0.4-new-fx-mixer'
Conflicts:
	include/PlayHandle.h
	src/core/FxMixer.cpp
	src/core/Mixer.cpp
	src/gui/FxMixerView.cpp
	src/tracks/InstrumentTrack.cpp
2014-03-26 11:21:15 +01:00
Tobias Doerffel
8e4d66d707 Merge branch 'stable-1.0' 2014-03-26 11:06:57 +01:00
Tobias Doerffel
f0b6d34b3a Removed old ChangeLog 2014-03-26 11:06:24 +01:00
Tobias Doerffel
1b08cc0649 CALF: do not compile with -finline-limit=80 when building for OS X 2014-03-26 10:57:04 +01:00
Tobias Doerffel
55396dc981 Merge pull request #511 from diizy/wavetablesynth
Watsyn: Add smart oversampling interpolation
2014-03-26 09:30:34 +01:00
Vesa
07d37e0fbc Forgot to change phasemod constant 2014-03-26 00:39:27 +02:00
Vesa
19b56779e9 Add smart oversampling interpolation 2014-03-26 00:22:14 +02:00
Tobias Doerffel
4c2bf8982f CALF: fixed compilation with clang 2014-03-25 20:09:41 +01:00
Tobias Doerffel
99e1a1b658 Merge pull request #510 from diizy/wavetablesynth
Watsyn: Switch back to linear interpolation...
2014-03-25 10:44:00 +01:00
Vesa
1168dc0558 Switch back to linear interpolation... 2014-03-25 10:45:50 +02:00
Tobias Doerffel
e1eb54cf6f Merge pull request #508 from diizy/wavetablesynth
Watsyn wavetablesynth
2014-03-25 08:58:24 +01:00
Vesa
b118c23123 Rename & refactor to Watsyn, add logo, tweak some algorithms 2014-03-25 02:15:03 +02:00
Vesa
8109d38f2e I forgot how to think... fix all stupidity of the last commit 2014-03-24 21:43:29 +02:00
Vesa
bfa73aa5a5 Changes again - moved frequency calculations to a static method... for some reason this saves a lot of cpu. 2014-03-24 21:43:29 +02:00
Vesa
7f98215c29 Add crosstalk knob, some code changes 2014-03-24 21:43:29 +02:00
Vesa
e38ef81e03 Add waveform load button, better button graphics 2014-03-24 21:43:29 +02:00
Vesa
6eca2b422c fix env tempo sync 2014-03-24 21:43:29 +02:00
Vesa
badd8339f5 fix previous 2014-03-24 21:43:28 +02:00
Vesa
e58e55660a Add hold knob 2014-03-24 21:43:28 +02:00
Vesa
ea8744b2ce Adjust previous 2014-03-24 21:43:28 +02:00
Vesa
ed2b63b1ff Added simple mix envelope 2014-03-24 21:43:28 +02:00
Vesa
10994e3ae5 Copy wavegraphs to synthobject at note start, prevent hangups if wave edited while playing 2014-03-24 21:43:28 +02:00
Vesa
b574e1c1ca Revert earlier 2014-03-24 21:43:28 +02:00
Vesa
f7e107ea2c Add some mixer locks 2014-03-24 21:43:28 +02:00
Vesa
4924dadaa5 Graphics 2014-03-24 21:43:28 +02:00
Vesa
89089886fa Correct phase mod algo (add below-bounds check) 2014-03-24 21:43:27 +02:00
Vesa
861a7d1ce1 Fix mixing / modulation behaviour, add some more buffer safeguards 2014-03-24 21:43:27 +02:00
Vesa
d8d9ac21cd Move stream buffers to the synth object 2014-03-24 21:43:27 +02:00
Vesa
42e44b739f Fixed multiplier weirdness 2014-03-24 21:43:27 +02:00
Vesa
95bf833ace Updates, fixes etc 2014-03-24 21:43:27 +02:00
Vesa
9b394b3660 Changes... now it seems to work 2014-03-24 21:43:27 +02:00
Vesa
da2a26572f Changes 2014-03-24 21:43:27 +02:00
Vesa
23b3179e1f WTSynth files 2014-03-24 21:43:27 +02:00
Vesa
0fa2908f7f Start wavetable synth 2014-03-24 21:43:27 +02:00
Tobias Doerffel
7b8eaa6835 Merge remote-tracking branch 'origin/stable-0.4-undo-redo'
Conflicts:
	include/AutomatableModel.h
	include/MidiPort.h
	include/TrackContainerView.h
	include/surround_area.h
	include/track.h
	src/core/AutomatableModel.cpp
	src/core/TrackContainer.cpp
	src/core/note.cpp
	src/core/track.cpp
	src/gui/PianoRoll.cpp
	src/gui/TrackContainerView.cpp
	src/gui/widgets/LcdSpinBox.cpp
2014-03-24 19:37:26 +01:00
Tobias Doerffel
d32377845b ComboBoxModel: coding style fixes 2014-03-24 19:21:18 +01:00
Tobias Doerffel
2ab5b1da0c AutomatableModel: always fit value from linked model
When using value from linked model, make sure to fit it into own range
as otherwise this can cause out-of-boundary accesses e.g. in ComboBoxModel.

Closes #505.
2014-03-24 19:21:12 +01:00
Tobias Doerffel
02219d908c Merge pull request #507 from diizy/stable-0.4
Compat code to make LMMS compile on Qt <4.8
2014-03-24 19:02:40 +01:00
Vesa
d80a8436c0 Remove spaces 2014-03-24 19:49:33 +02:00
Vesa
11a76c45fc Compat code to make LMMS compile on Qt <4.8 2014-03-24 17:11:42 +02:00
Tobias Doerffel
794e697e22 Made 1.0.0 release
After almost exactly 10 years of development, we proudly bump the version
number to 1.0.0.
2014-03-23 23:55:21 +01:00
Tobias Doerffel
2f4d9c6c66 InstrumentSoundShapingView: display info about single-streamed instruments
Until we have a solution for hiding the ENV/LFO tab, display a sensible
message at least.
2014-03-23 23:52:04 +01:00
Tobias Doerffel
752f48f51c Revert "Do not display ENV/LFO tab in plugin window if controls are disabled in it (SF2 Player and OpulenZ)"
This does not work well if you open an instrument window of a single
streamed instrument, close it afterwards and open an instrument window
of a regular instrument due to widget caching/reuse. We therefore have
to find a better solution which allows dynamically showing/hiding tabs
in the TabWidget class. Until then restore the previous behaviour.

This reverts commit ed29f2b6f6.
2014-03-23 23:44:30 +01:00
Tobias Doerffel
565ebee7d1 Merge pull request #500 from diizy/stable-0.4
Piano widget: fix velocity, Opulenz: increase volume
2014-03-23 09:35:58 +01:00
Vesa
33b9524346 Envelope: fix drawing of envelope graph, scale to fit view if graph gets too long
(also fix typo in last pianoview commit)
2014-03-22 19:09:42 +02:00
Vesa
e4340c630d Do the opl amplification smarter 2014-03-22 13:33:42 +02:00
Vesa
f986f099da Piano widget: make keypresses (gui and keyboard) based on the MIDI base velocity spinner 2014-03-22 12:32:43 +02:00
Vesa
22cb12d066 Increase the volume of OpulenZ, because it is very very quiet and it's better to correct this now before 1.0.0 is released 2014-03-22 12:31:34 +02:00
Tobias Doerffel
6c920df328 Merge pull request #486 from midi-pascal/stable-0.4
Do not display ENV/LFO tab in plugin window if controls are disabled in ...
2014-03-22 08:39:19 +01:00
Paul Giblock
25f2eae67f Revert LB302 db24 switch
Invert it so 3-pole is used for DB24 mode again. Fixes #477
2014-03-22 01:03:28 -04:00
Tobias Doerffel
b02c351fe1 Merge pull request #483 from softrabbit/bug468
basic_filters.h: Saner limits for frequency
2014-03-21 17:24:22 +01:00
Tobias Doerffel
69e02fc37d VeSTige: removed unused array 2014-03-21 17:23:25 +01:00
Tobias Doerffel
e4dd6938cc CMakeLists: updated libpng DLL file name 2014-03-21 17:23:11 +01:00
Tobias Doerffel
13a41b5bff VstEffectControlDialog: remove unused variable 2014-03-21 11:16:45 +01:00
Tobias Doerffel
6a1a295cec More CLANG compiler warning fixes 2014-03-21 11:14:22 +01:00
Tobias Doerffel
6bb16951ad Main: fixed various CLANG compiler warnings 2014-03-21 11:13:30 +01:00
Tobias Doerffel
8e4417e5d9 Mixer: fixed various CLANG compiler warnings 2014-03-21 11:13:20 +01:00
Tobias Doerffel
890993bff0 Vibed: fixed various CLANG compiler warnings 2014-03-21 11:13:05 +01:00
Tobias Doerffel
71eaa4f5e3 TripleOscillator: fixed various CLANG compiler warnings 2014-03-21 11:12:52 +01:00
Tobias Doerffel
1153e85c0c StereoEnhancer: fixed various CLANG compiler warnings 2014-03-21 11:12:39 +01:00
Tobias Doerffel
6e4fbbed87 Papu: fixed various CLANG compiler warnings 2014-03-21 11:12:29 +01:00
Tobias Doerffel
b2c1a04df8 OPL2: fixed various CLANG compiler warnings 2014-03-21 11:12:17 +01:00
Tobias Doerffel
33ea001c31 LB302: fixed various CLANG compiler warnings 2014-03-21 11:12:08 +01:00
Tobias Doerffel
117ca99c85 BitInvader: fixed various CLANG compiler warnings 2014-03-21 11:11:50 +01:00
Tobias Doerffel
9aa6a3fbeb AudioFileProcessor: fixed various CLANG compiler warnings 2014-03-21 11:11:39 +01:00
Tobias Doerffel
bdf234aeb8 ZynAddSubFX: fixed various CLANG compiler warnings 2014-03-21 11:11:15 +01:00
Tobias Doerffel
cce942e5d5 Graph: removed unused member variable 2014-03-21 10:48:43 +01:00
Tobias Doerffel
d4bbaa58b4 SerializingObject: made saveSettings() and loadSettings() pure virtual
All classes inheriting from SerializingObject should also provide
according functionality, therefore ensure, they implement methods for
loading and saving settings.
2014-03-21 10:47:05 +01:00
Tobias Doerffel
729838fa08 ModelView, Model: coding style improvements 2014-03-21 10:46:42 +01:00
Tobias Doerffel
b5eb4f1f7a ControllerView: remove unused member variable 2014-03-21 10:44:56 +01:00
Tobias Doerffel
585f95741c AutomationPattern: define constants outside class declarations 2014-03-21 10:44:22 +01:00
Tobias Doerffel
9ffeae441d AutomatableModel: avoid hiding virtual functions by overload 2014-03-21 10:43:26 +01:00
Tobias Doerffel
6f5a47342b AutomatableModel: coding style improvements 2014-03-21 10:43:07 +01:00
Tobias Doerffel
e1bebbfcad Removed obsolete pch.h include 2014-03-21 10:08:02 +01:00
Tobias Doerffel
246572489b Merge pull request #494 from diizy/stable-0.4
Desktop file modification to correct ubuntu behavior, icon file copied t...
2014-03-20 18:58:47 +01:00
Vesa
9c107f3860 Desktop file modification to correct ubuntu behavior, icon file copied to data/ as lmms.png because it's needed for packaging 2014-03-20 16:44:35 +02:00
Tobias Doerffel
40c67ac5dd Merge pull request #492 from diizy/stable-0.4
GraphModel: fix/improve normalize() function - remove bias before maximi...
2014-03-20 11:40:23 +01:00
Vesa
7a7c9abd9b GraphModel: fix/improve normalize() function - remove bias before maximizing, also add some new slots for future use (which I plan to use for something neat in the future ;) ) 2014-03-20 12:19:55 +02:00
Raine M. Ekman
450bf3a35a basic_filters.h: Tweaked limits for cutoff. 2014-03-19 23:21:48 +02:00
Raine M. Ekman
87d62a6a73 Merge https://github.com/LMMS/lmms into bug468 2014-03-19 23:21:23 +02:00
Tobias Doerffel
2a0f268a89 Merge pull request #484 from grejppi/stable-0.4-sf2velocity
Fix for #481
2014-03-19 09:08:36 +01:00
Tobias Doerffel
376765526a Merge pull request #487 from diizy/stable-0.4
Dual Filter fix: make more efficient -  don't calculate coefficients unn...
2014-03-19 07:42:39 +01:00
Vesa
34ba29cfcd Change Linux Multimedia etc. to LMMS in desktop/package files 2014-03-19 03:26:36 +02:00
Vesa
0b46aa4506 Dual Filter fix: make more efficient - don't calculate coefficients unnecessarily 2014-03-19 03:19:02 +02:00
pascal
ed29f2b6f6 Do not display ENV/LFO tab in plugin window if controls are disabled in it (SF2 Player and OpulenZ) 2014-03-18 21:09:32 -04:00
Hannu Haahti
9ab6699a26 sf2_player: fix #481 2014-03-19 00:31:29 +02:00
Tobias Doerffel
41c154dc95 Control play/pause buttons in slot of MainWindow via signal in Song class
The engine class as the component instance manager is the wrong place to
control the play/pause buttons. Instead emit a signal in the Song class
and update the buttons in a slot in MainWindow. This fixes problems with
GUI/pixmap operations happening outside the GUI thread when exporting a
project.

Closes #435.
2014-03-18 20:39:52 +01:00
Tobias Doerffel
b45c0c5f02 MainWindow: coding style improvements 2014-03-18 20:39:01 +01:00
Raine M. Ekman
194088db5f basic_filters.h: Saner limits for frequency 2014-03-18 21:26:08 +02:00
Tobias Doerffel
a4b328e28f Merge pull request #480 from dnl-music/patch-1
Update PianoView.cpp
2014-03-18 20:15:10 +01:00
Tobias Doerffel
78e14739f0 Fixed FX channel of Erazzor preset
Thanks to Tres for pointing out this issue.
2014-03-18 20:04:10 +01:00
Tobias Doerffel
547e6dcc95 Merge pull request #479 from diizy/stable-0.4
Disable Sfxr preview for now, possibly reimplement after 1.0.0
2014-03-18 11:50:17 +01:00
Vesa
66ba074554 Disable Sfxr preview for now, possibly reimplement after 1.0.0 2014-03-18 11:08:34 +02:00
Tobias Doerffel
5e2d299360 MidiPort: introduced internal base velocity property
In order to keep compatibility with projects created with LMMS < 1.0.0
we maintain a property specifying the base velocity (i.e. the velocity
sent to MIDI-based instruments at volume=100%). For new projects this
always will be 64 while compat code enforces a value of 127 for old
projects.

We can also think about hiding the new groupbox in order to hide
complexity from the user.

Closes #430.
2014-03-17 22:30:52 +01:00
Tobias Doerffel
f32c89bd13 InstrumentMidiIOView: coding style improvements 2014-03-17 21:25:50 +01:00
Tobias Doerffel
ab4cebeea0 MidiPort: remove unneccessary line breaks 2014-03-17 21:08:55 +01:00
Raine M. Ekman
23165043c8 Merge https://github.com/LMMS/lmms into bugs_283_303 2014-03-17 20:59:05 +02:00
Tobias Doerffel
a1e7d9e42d LB302: flag as single stream instrument
LB302 doesn't produce per-note-sound, therefore return proper flags in
the virtual flags() method.

Closes #470.
2014-03-16 23:05:35 +01:00
Tobias Doerffel
fb161d5b69 Merge pull request #474 from diizy/effects
Dual Filter
2014-03-16 23:01:13 +01:00
Vesa
719d39df76 Dual Filter: forgot to set volume knobs 2014-03-16 23:29:59 +02:00
Vesa
a585650904 Dual Filter 2014-03-16 23:26:44 +02:00
Raine M. Ekman
16ea5d7f52 Merge https://github.com/LMMS/lmms into bugs_283_303 2014-03-16 10:13:52 +02:00
Tobias Doerffel
ce9cfa6821 Merge pull request #467 from diizy/effects
Amplifier plugin
2014-03-16 09:03:31 +01:00
Tobias Doerffel
91e9802993 Merge pull request #463 from diizy/stable-0.4
Knob: add volumeRatio property to allow showing knobs with ratios other ...
2014-03-15 23:12:55 +01:00
Vesa
a666df0e56 Fix incorrect loading/saving of models on all native effect plugins. Backwards compatible. 2014-03-15 21:37:35 +02:00
Vesa
d269cfe6db BassBooster artwork 2014-03-15 21:16:06 +02:00
Vesa
0ed2b5c4a7 Cmakelist 2014-03-15 21:15:39 +02:00
Vesa
eb63f04f55 Amplifier 2014-03-15 21:14:55 +02:00
Raine M. Ekman
5600d98661 Merge https://github.com/LMMS/lmms into bugs_283_303 2014-03-15 21:06:23 +02:00
Vesa
cf925d7c5b Knob: add volumeRatio property to allow showing knobs with ratios other than 100 in dBV
Waveshaper, Dynamics processor: make input/output knobs respect the show in dBV setting
2014-03-15 17:19:31 +02:00
Vesa
7dac1137bc Knob: add volumeRatio property to allow showing knobs with ratios other than 100 in dBV
Waveshaper, Dynamics processor: make input/output knobs respect the show in dBV setting
2014-03-15 10:45:55 +02:00
Tobias Doerffel
5e3d7fa720 Merge pull request #461 from diizy/stable-0.4
Graph widget: fix off-by-one error in drawing code, inconsistency in smo...
2014-03-14 22:15:02 +01:00
Vesa
cf341c7bdf Graph widget: fix off-by-one error in drawing code, inconsistency in smoothing algorithm 2014-03-14 22:52:19 +02:00
Raine M. Ekman
eeb8ebdf4e Merge https://github.com/LMMS/lmms into bugs_283_303 2014-03-14 20:44:27 +02:00
Tobias Doerffel
325a8cf842 Merge pull request #460 from diizy/stable-0.4
SampleBuffer: Remove mp3 from the list of supported files
2014-03-14 17:34:12 +01:00
Vesa
cea7394e86 SampleBuffer: Remove mp3 from the list of supported files 2014-03-14 17:34:41 +02:00
Tobias Doerffel
3637359506 Merge pull request #456 from diizy/stable-0.4
Improve pattern name text visibility
2014-03-14 13:54:46 +01:00
Vesa
daa0476205 Improve pattern name text visibility 2014-03-14 13:21:59 +02:00
Tobias Doerffel
847edd624c Merge pull request #449 from diizy/stable-0.4
Fix sfxr crashing on very high notes
2014-03-13 18:12:59 +01:00
Tobias Doerffel
a54e665e7a Merge pull request #450 from zonkmachine/capitalization
Fix capitalization in some plugins description
2014-03-13 18:12:48 +01:00
Oskar Wallgren
dbea815931 Fix capitalization in some plugins description 2014-03-13 17:37:36 +01:00
Vesa
b8e2f3f785 Fix sfxr crashing on very high notes 2014-03-13 18:23:43 +02:00
Tobias Doerffel
7af2930a45 Merge pull request #436 from softrabbit/bug433
LB302: make filter selection sync with GUI
2014-03-12 21:58:05 +01:00
Tobias Doerffel
1725498bef Merge pull request #442 from softrabbit/bug440
Export: check for end of export in ticks, not in tacts.
2014-03-12 21:57:48 +01:00
Raine M. Ekman
fab41306ac Export: check for end of export in ticks, not in tacts.
This works better with time signature changes.
2014-03-12 20:18:39 +02:00
Tobias Doerffel
6a86fccfa1 Merge pull request #439 from diizy/stable-0.4
Fixes for Triple osc, LB302 logos
2014-03-12 09:36:36 +01:00
Vesa
24c5b2367e Fixes for Triple osc, LB302 logos 2014-03-12 10:32:19 +02:00
Tobias Doerffel
a394bb099c Merge pull request #438 from diizy/stable-0.4
Highlight the currently selected instrument/automation patterns in the s...
2014-03-12 09:21:06 +01:00
Vesa
ba7e5e5f5c Highlight the currently selected instrument/automation patterns in the song editor 2014-03-12 07:14:29 +02:00
dnl-music
6a6711b088 Update PianoView.cpp
Add new keys to control (Windows, Linux), replace Windows "/" key.
2014-03-12 09:58:40 +07:00
Raine M. Ekman
ab69c2d44b LB302: make filter selection sync with GUI on initialisation and preset load 2014-03-11 21:57:31 +02:00
Tobias Doerffel
288a3162c5 Third release candidate for 1.0.0
Bumped version number to 0.9.92 in CMakeLists.txt, README and lmms.rc.in.
2014-03-10 19:19:32 +01:00
Tobias Doerffel
06289781e4 AutomationEditor: update pause icon manually
As we have a special semantic for automation pattern playback (i.e. we
don't playback the pattern itself but its container component like
Song Editor, Piano Roll etc.).

Closes #292.
2014-03-10 19:12:50 +01:00
Tobias Doerffel
ed6ccddc6c Song: do not stop playback twice
Otherwise we reset data which doesn't need to be reset when stopped
already.

Closes #255.
2014-03-10 18:50:33 +01:00
Tobias Doerffel
9e86990f41 Song: reset milli seconds counter when looping BB or pattern
Closes #252.
2014-03-10 18:45:19 +01:00
Raine M. Ekman
b7410f81d0 Merge https://github.com/LMMS/lmms into bugs_283_303 2014-03-10 18:42:00 +02:00
Tobias Doerffel
8d52387926 Merge pull request #428 from diizy/stable-0.4
Graphics updates
2014-03-10 15:15:44 +01:00
Vesa
fd681b5c51 GUI: Lots of icon updates 2014-03-10 14:16:43 +02:00
Vesa
86564e11fb Change icon of bb-editor window to one that fits better, also: remove add_controller.png which isn't used anywhere 2014-03-10 11:46:27 +02:00
Vesa
2bca23bddc GUI: improvements on icon graphics, missing updated setup dialog icons 2014-03-10 11:38:46 +02:00
Tobias Doerffel
0674e1434c SongEditor: renamed class and file name to match current coding style 2014-03-09 23:25:38 +01:00
Tobias Doerffel
24a9ef01f9 PianoRoll: renamed class and file name to match current coding style 2014-03-09 23:19:46 +01:00
Tobias Doerffel
5b0ddf7e5c Projects: install sample project templates
Also install sample project templates in order to make the open-from-
template button usable per default.

Closes #425.
2014-03-09 22:48:39 +01:00
Tobias Doerffel
66da544ceb PianoRoll: don't play test notes while recording
This is a partial revert of 2e799718d6.
As playing test notes generate MIDI events as well, they get recorded
like any other notes resulting in undesired behaviour.

Closes #368.
2014-03-09 22:42:48 +01:00
Tobias Doerffel
27ea577ed5 Merge pull request #427 from diizy/stable-0.4
Waveshaper, Dynamics processor: some code improvements
2014-03-09 15:38:30 +01:00
Vesa
bcd604edc6 Waveshaper, Dynamics processor: some code improvements 2014-03-09 15:31:03 +02:00
Raine M. Ekman
84f1e1a6da AutomationEditor: fix grid drawing, now both time signatures other than 4/4 and scrolling should work quite a bit better. 2014-03-09 14:51:19 +02:00
Tobias Doerffel
d834131645 Merge pull request #423 from diizy/stable-0.4
Triple osc: make buttons more visible (fix #306)
2014-03-09 02:09:30 +01:00
Vesa
f2b2a8c4be Triple osc: make buttons more visible (fix #306) 2014-03-09 00:39:54 +02:00
Tobias Doerffel
7c685bdd18 Merge pull request #421 from diizy/stable-0.4
More bug fixes: #419, #286
2014-03-08 19:42:32 +01:00
Tobias Doerffel
56ee27ed9b Midi: added MidiDefaultVelocity to be used for test notes etc. 2014-03-08 13:22:51 +01:00
Tobias Doerffel
b01f093e37 InstrumentTrack: hide sound shaping widgets for single-streamed instruments
We currently don't apply envelopes/LFOs and filters to single-streamed
instruments, therefore hide the GUI.
2014-03-08 13:17:55 +01:00
Tobias Doerffel
4803c3542d InstrumentSoundShaping: coding style improvements 2014-03-08 13:17:11 +01:00
Tobias Doerffel
3d0c5e9f48 InstrumentTrack: another explicit for single stream property 2014-03-08 13:15:27 +01:00
Tobias Doerffel
ba324f4aa8 InstrumentTrack: scale output volume by 2 for MIDI-based instruments
As of 0ca3901ab8 MIDI-based instruments are
played at velocity 63 for volume=100%.  In order to get the same output
volume, we need to scale it by 2.
2014-03-08 12:56:40 +01:00
Tobias Doerffel
ae105c22cc InstrumentTrack: explicitely test for single streamed instrument
...instead of implicitely assuming that the instrument is single-streamed
just because it did not pass a NotePlayHandle.
2014-03-08 12:53:57 +01:00
Tobias Doerffel
1c66bb9d66 Instrument: introduced flags to replace virtual property getters
There'll be more and more flags for instruments. Handling them using
virtual and overloaded getter functions doesn't scale well and adds
unneccessary overhead.
2014-03-08 12:47:42 +01:00
Tobias Doerffel
83af61836f Sf2Player: corrected MIDI velocity calculation for pseudo envelopes 2014-03-08 12:46:52 +01:00
Vesa
ee043f9b68 Fix previous 2014-03-08 13:14:21 +02:00
Tobias Doerffel
0ca3901ab8 Normalize volume 100% to MIDI velocity 63
Furthermore moved midiVelocity() to Note and removed global volumeToMidi()
helper method.

Closes #280.
2014-03-08 12:13:42 +01:00
Vesa
0947bcf70f Song editor: fix jittery tracks bug (issue #286) 2014-03-08 11:43:05 +02:00
Vesa
31fa7ca061 AutomationPattern: fix a bug I accidentally introduced in length() 2014-03-07 11:54:17 +02:00
Vesa
aff2987a43 Patternview: improve note drawing code, fix bugs (fixes #419) 2014-03-07 10:26:47 +02:00
Tobias Doerffel
0b0d905214 Merge pull request #418 from diizy/stable-0.4
AutomationPattern: fix values after last value
2014-03-06 13:29:24 +01:00
Vesa
eb81e6b9d6 AutomationPattern: fix values after last value 2014-03-06 10:37:27 +02:00
Tobias Doerffel
0b387b0f72 Merge pull request #417 from diizy/stable-0.4
Pattern: fix bb-track mousewheeling (bit of an oversight on my part, for...
2014-03-06 09:04:05 +01:00
Vesa
e40c70ff8c Pattern: fix bb-track mousewheeling (bit of an oversight on my part, forgot about mousewheel in the last bb-editor fix) 2014-03-06 09:14:54 +02:00
Tobias Doerffel
192484fa28 Merge pull request #413 from diizy/stable-0.4
Pattern: Refactor getNoteAtStep -> noteAtStep
2014-03-05 09:58:13 +01:00
Vesa
b49f4e483e Pattern: Refactor getNoteAtStep -> noteAtStep 2014-03-05 10:39:08 +02:00
Tobias Doerffel
10b1f12e7e Merge pull request #411 from zonkmachine/Envelope_time
Envelope time
2014-03-05 09:33:42 +01:00
Tobias Doerffel
4fb81c1af7 Merge pull request #412 from diizy/stable-0.4
Pattern: fix beat pattern behaviour with different time signatures
2014-03-05 09:32:37 +01:00
Tobias Doerffel
780f4c1481 Merge pull request #410 from mikobuntu/stable-0.4
fix for #405 . fixes bad placement of Automation_editor and piano_roll w...
2014-03-05 09:11:34 +01:00
Vesa
5d1e864417 Pattern: fix beat pattern behaviour with different time signatures 2014-03-05 05:28:46 +02:00
Oskar Wallgren
5d2100c965 Revert accidental change 2014-03-05 03:29:07 +01:00
Oskar Wallgren
81aa00c978 Increased envelope times 2014-03-05 03:10:53 +01:00
mikobuntu
0485ef8da6 Update AutomationEditor.cpp 2014-03-04 23:13:01 +00:00
mikobuntu
5f9a202d42 fix for #405 . fixes bad placement of Automation_editor and piano_roll windows on initial opening. 2014-03-04 22:58:33 +00:00
Tobias Doerffel
fcf5c054ac Merge pull request #406 from softrabbit/stable-0.4
Drumsynth: make rendering use mixer samplerate instead of hard coded 44100
2014-03-04 23:39:14 +01:00
Tobias Doerffel
8027decdb0 Merge pull request #408 from diizy/stable-0.4
Fix bug in AutomatableModel, also: save as icon
2014-03-04 23:38:51 +01:00
Vesa
06421005dd AutomatableModel: fix error in loading connected controllers 2014-03-04 23:51:45 +02:00
Vesa
5d1eb8a687 Set "save as" icon the same as save icon, for now (for theme consistency) 2014-03-04 23:46:21 +02:00
Raine M. Ekman
fed2c6b4ac Drumsynth: make rendering use the mixer samplerate instead of hard coded 44100. 2014-03-04 22:00:02 +02:00
Tobias Doerffel
16a3248aa1 Merge pull request #404 from diizy/stable-0.4
Sidebar updates
2014-03-04 12:12:46 +01:00
Vesa
549f8eb536 New computer icon 2014-03-04 12:35:48 +02:00
Vesa
b1e653060a Sidebar: rotate icons to normal orientation, fixes #183 2014-03-04 12:11:04 +02:00
Tobias Doerffel
8363e262cf AutomatableModel: eliminate return statement
There's no need for the return statement anymore when changing the
branching logic.
2014-03-04 00:05:43 +01:00
Tobias Doerffel
21b5396253 AutomatableModel: load connection settings before automation link
Controller connections got lost in case the control had automation
patterns attached and thus the loadSettings() function returned
prematurely.
2014-03-04 00:05:36 +01:00
Tobias Doerffel
e99efd541a LadspaControl: save to dedicated DOM element
Instead of cluttering parent's attribute list, we created a dedicated
DOM element for each LadspaControl. This gives us the possibility to
save further information later.

Closes #401.
2014-03-03 23:59:33 +01:00
Tobias Doerffel
2981a5994c ZynAddSubFX: update buffer size when opening GUI
When opening the ZynAddSubFX GUI the buffer size information was not
retrieved properly and caused problems when setting a low global buffer
size in LMMS. We update the buffer size in ZynAddSubFX manually now as
as a temporary workaround until the VST synchronization feature gets
stripped out of the RemotePluginClient class.

Closes #335.
2014-03-03 22:55:52 +01:00
Tobias Doerffel
b5183fdd5f ZynAddSubFX: added pitch range support
Even though ZynAddSubFX does not support updating its pitch wheel range
via MIDI events we can set it manually using provided internal functions.

Closes #394.
2014-03-03 22:37:00 +01:00
Tobias Doerffel
46ca257c14 Merge pull request #396 from diizy/stable-0.4
A bunch of bugfixes
2014-03-03 09:44:16 +01:00
Vesa
1c5106ee3b When saving new version of a project, skip already existing version numbers 2014-03-03 10:26:08 +02:00
Vesa
dd8fa5d80c Make LcdSpinBox double-clickable to enter value 2014-03-01 23:44:58 +02:00
Vesa
5586141bf5 Small tweak to the knob code, make the acceleration curve smoother and less "sudden" 2014-03-01 23:17:13 +02:00
Vesa
9b8d396d82 Make sfxr use noteplayhandle, to enable velocity and env/lfo tab 2014-03-01 22:59:48 +02:00
Vesa
de77ae38da Fix #397 (presets with input velocity = 1) 2014-03-01 19:28:55 +02:00
Vesa
82b1c2f882 Zyn fix: export now fully works with GUI either open/closed 2014-03-01 15:53:34 +02:00
Tobias Doerffel
c9f460b03d Merge pull request #395 from diizy/stable-0.4
Fix zynaddsubfx export with higher samplerates
2014-03-01 13:00:26 +01:00
Vesa
cd9709d855 Fix zynaddsubfx export with higher samplerates 2014-03-01 13:41:24 +02:00
Lukas W
17d62dad63 Merge pull request #393 from Lukas-W/stable-0.4
Fix #386; Add target to gitignore
2014-03-01 08:57:31 +01:00
Lukas W
e4cd692e91 SaveDialog: Switch order of mmp and mmpz
Fixes #386.
When selecting the filter in the file save dialog, the file name used to change to *.mmp. As this is not desired, this commit changes it to '.mmpz'.
2014-02-28 18:06:32 +01:00
Lukas W
b511344bad .gitignore: Add /target 2014-02-28 17:37:16 +01:00
Tobias Doerffel
62a8275f87 Merge pull request #392 from diizy/stable-0.4
Fix for sfxr export problem
2014-02-28 09:28:48 +01:00
Vesa
56747ab9a7 Fix for sfxr export problem 2014-02-28 08:09:16 +02:00
Tobias Doerffel
382a76773d Merge pull request #390 from wongcc966422/issue360
sf2 plugin: fixes naming issue
2014-02-27 16:05:10 +01:00
Wong Cho Ching
d76e3dd301 sf2 plugin:fixes naming issue 2014-02-27 19:47:20 +08:00
Tobias Doerffel
d98570a34b Merge pull request #384 from diizy/stable-0.4
Make all pattern colours CSS-stylable
2014-02-25 22:47:39 +01:00
Vesa
a89b131eca Fix a bug where copied instrument tracks appear grey 2014-02-25 23:35:46 +02:00
Vesa
103ac21922 Some cleanup (remove temporary comments) 2014-02-25 21:35:01 +02:00
Vesa
e7b097d255 Define all pattern colours in CSS and make them stylable
also coding style improvements (remove leading underscores from header guards)
2014-02-25 21:30:39 +02:00
Tobias Doerffel
2100bf8c0c Merge pull request #382 from grejppi/stable-0.4-bbcolour
Automatically change old B&B default colour to the new one
2014-02-25 08:22:08 +01:00
Hannu Haahti
fcfcee1895 one hardcoded default colour less 2014-02-25 03:56:11 +02:00
Tobias Doerffel
5b5feca4eb Note: use qBound() instead of tLimit() 2014-02-25 00:29:19 +01:00
Tobias Doerffel
9eafca3615 Note, NotePlayHandle: no default arguments for setVolume() and setPanning() 2014-02-25 00:27:11 +01:00
Tobias Doerffel
b5c713e0ea Removed traces of old SurroundArea implementation 2014-02-25 00:26:03 +01:00
Tobias Doerffel
7db99cc04c NotePlayHandle: coding style fixes 2014-02-24 23:29:01 +01:00
Tobias Doerffel
b28b00ff23 NotePlayHandle: emit midiNoteOff() signal in noteOff()
Instead of emitting InstrumentTrack::midiNoteOff() in destructor of
NotePlayHandle do this where it actually happens -> noteOff().

Fixes length of recorded notes when there's e.g. a long release.

Closes #378.
2014-02-24 23:24:11 +01:00
Tobias Doerffel
a18604d574 Merge pull request #379 from diizy/stable-0.4
Updated knob code, now everything seems to work really smoothly regardle...
2014-02-24 21:18:41 +01:00
Vesa
ab73c0c133 Updated knob code, now everything seems to work really smoothly regardless of knob type or range.
Also some graphics tweaks here and there.
2014-02-24 22:14:54 +02:00
Tobias Doerffel
a0c6f958fc Merge pull request #377 from diizy/stable-0.4
Knob behaviour fix
2014-02-24 18:36:22 +01:00
Vesa
867afc6ffb Coding style.. 2014-02-24 18:39:25 +02:00
Vesa
3e22c747d7 Coding style.. 2014-02-24 18:38:37 +02:00
Vesa
79edbf7f52 Knob behaviour fix 2014-02-24 18:33:16 +02:00
Tobias Doerffel
154742f203 Merge pull request #373 from diizy/stable-0.4
More updates to song editor graphics based on feedback and IRC discussio...
2014-02-24 09:19:38 +01:00
Tobias Doerffel
5c19d3ef4c Merge pull request #374 from grejppi/stable-0.4-vst
Little things in RemoteVstPlugin behaviour
2014-02-24 08:12:06 +01:00
Vesa
7c585c9dd8 Fix display of too long names in instrument windows 2014-02-24 04:15:01 +02:00
Vesa
3ccc0685b7 More updates to song editor graphics based on feedback and IRC discussions
also fixed the automation pattern rendering which had some slightly bad behaviour
2014-02-24 01:52:03 +02:00
Hannu Haahti
a34a0932d1 RemoteVstPlugin: don't mess with plugin internals 2014-02-24 00:57:03 +02:00
Hannu Haahti
1e3dcdec0d RemoteVstPlugin: close the plugin properly 2014-02-24 00:56:40 +02:00
Tobias Doerffel
8b138202ca SpectrumAnalyzer: fixed spectrum painting
Variable aliasing due to code style fixes introduced a regression in the
darken() method.
2014-02-23 18:51:04 +01:00
Tobias Doerffel
05e4cdaaef Revert "FxMixer: no need to check for master channel"
This reverts commit 1adc8f8ba3.

Closes #279.
2014-02-23 18:31:08 +01:00
Tobias Doerffel
4903190759 Removed old ladspa_effect directory
Something went wrong with the rename in 9c9372f0c8.
2014-02-23 17:35:22 +01:00
Tobias Doerffel
dd1a227963 EffectSelectDialog: sort effect keys instead of plugin names
Commit 360bfe5089 broke mapping between
displayed and internal effect list. Fix this by sorting the effect key
list itself.
2014-02-23 17:34:40 +01:00
Tobias Doerffel
ed973bd8be LadspaEffect, VstEffect: shortened plugin name
In order to display less redundancy in EffectSelectDialog, the plugin
names were shortened to "LADSPA" and "VST".
2014-02-23 15:24:15 +01:00
Tobias Doerffel
9c9372f0c8 LadspaEffect: renamed source directory to match coding style 2014-02-23 15:23:57 +01:00
Tobias Doerffel
360bfe5089 EffectSelectDialog: sort plugin names
Sort plugin names and make sure that effects without sub plugins (i.e.
native LMMS effects) are listed first in order to better advertise our
cool plugins.

Closes #331.
2014-02-23 15:20:16 +01:00
Tobias Doerffel
feecf52b57 DynamicsProcessor: fix e758f80536 2014-02-23 15:19:47 +01:00
Tobias Doerffel
408c98f473 VstEffect: fixed some messages 2014-02-23 15:08:19 +01:00
Tobias Doerffel
67d363ef79 SpectrumAnalyzer: coding style / naming conventions improvements 2014-02-23 14:58:51 +01:00
Tobias Doerffel
e758f80536 DynamicsProcessor: no underscore in plugin filename 2014-02-23 14:42:19 +01:00
Tobias Doerffel
3be2e89d37 DspEffectLibrary: renamed from effectLib 2014-02-23 14:41:23 +01:00
Tobias Doerffel
cde708fe06 LadspaSubPluginFeatures: also show file name for plugin details 2014-02-23 14:41:23 +01:00
Tobias Doerffel
e0837726b0 BassBooster: coding style / naming conventions improvements 2014-02-23 14:41:22 +01:00
Tobias Doerffel
c121cf8906 Merge pull request #370 from diizy/stable-0.4
Song editor, Bitinvader UI tweaks
2014-02-23 01:04:30 +01:00
Vesa
df18a989d9 Bitinvader changes 2014-02-22 22:30:55 +02:00
Tobias Doerffel
b0c662591d ZynAddSubFX: less line breaks / coding style 2014-02-22 20:55:14 +01:00
Tobias Doerffel
b9384c52bb ZynAddSubFX: delete LocalZynAddSubFX instance in destructor
This is a really embarrassing leak causing LMMS to never cleanup internal
instances of ZynAddSubFX.

Closes #357.
2014-02-22 20:55:14 +01:00
Tobias Doerffel
49a28a7960 Merge pull request #369 from softrabbit/stable-0.4
Timer display widget: cosmetic fixes
2014-02-22 20:38:00 +01:00
Raine M. Ekman
92c2491846 Timer display widget: change bar:ticks:milliseconds to bar:beat:ticks, 1-based instead of 0-based 2014-02-22 21:03:33 +02:00
Vesa
490a71313a Slight change to song editor background 2014-02-22 19:18:28 +02:00
Tobias Doerffel
0db83c6ede Merge pull request #366 from diizy/stable-0.4
Dynamics processor peak release fix, also more updates to song editor style
2014-02-22 08:44:46 +01:00
Vesa
9f64e6f428 More tweaks on song editor style 2014-02-22 02:34:26 +02:00
Vesa
3f3cde8332 Dynamics processor peak release fix 2014-02-21 23:01:38 +02:00
Tobias Doerffel
987fdc2e01 Sf2Player: less line breaks and a few other coding style improvements 2014-02-21 20:43:23 +01:00
Tobias Doerffel
7cd7ca46f8 Sf2Player: use qDebug() rather than QTextStream on stdout 2014-02-21 20:43:23 +01:00
Tobias Doerffel
a34f8e722b Merge pull request #365 from diizy/stable-0.4
Updates to song editor style. Also couple of fixes to SID layout.
2014-02-21 20:43:13 +01:00
Vesa
9896d94b09 Updates to song editor style. Also couple of fixes to SID layout. 2014-02-21 21:13:07 +02:00
Tobias Doerffel
418a5e6a75 Merge pull request #361 from diizy/stable-0.4
SID artwork
2014-02-21 13:32:08 +01:00
Vesa
cd2850dcdc SID artwork 2014-02-21 03:03:08 +02:00
Tobias Doerffel
087a8ac159 Revert "Papu: fixed out-of-bounds array access due to too small data types"
This reverts commit ea5f5c4f00 as the actual
off-by-one error has been fixed.
2014-02-20 23:29:43 +01:00
Tobias Doerffel
29fcb9d7b9 Freeboy/Gb_Apu: fixed require() statement
Classical off-by-one error.
2014-02-20 23:28:35 +01:00
Tobias Doerffel
2591378818 LcdSpinBox: adopt naming style convention 2014-02-20 22:17:28 +01:00
Tobias Doerffel
0e8d47cfe0 LADSPA/SWH/Vocoder: fixed instantiation on Win32
Due to the nature of DLL files LADSPA plugins need a little extra care
when building for Win32, otherwise they can't be instantiated and won't
be available.

Closes #356.
2014-02-20 22:01:58 +01:00
Tobias Doerffel
e6883e7743 LcdSpinBox: check for mouse button in mouseReleaseEvent()
Otherwise we restore things that were never changed when releasing right
or middle mouse button.

Closes #358.
2014-02-20 21:53:48 +01:00
Vesa
2e799718d6 Allow piano roll playing while playing, fixes #21 2014-02-20 10:35:26 +02:00
Tobias Doerffel
2049e00901 Merge pull request #155 from 8tab/warning
Some code cleanup
2014-02-20 08:10:28 +01:00
Paul Giblock
fc1475bf75 Fix leak in last commit
Sorry dudes. This one really fixes #353
2014-02-19 21:25:31 -05:00
Paul Giblock
b19522c55a Hopefully fix race-condition in lb302 db24 switch
So, we were swapping out some pointer mid-process at times.  Instead,
use an atomic pointer, and just have the process function grab the
current value and use it through the entire processing period.

Still has a sound glitch when switching, but this switch was never
intended to be used "live".

Closes #353
2014-02-19 21:21:17 -05:00
Tobias Doerffel
41ce88b68c CMakeLists: added doc directory to dist target 2014-02-19 22:10:28 +01:00
Tobias Doerffel
7daf4f7543 Second release candidate for 1.0.0
Bumped version number to 0.9.90 in CMakeLists.txt, README and lmms.rc.in.
2014-02-19 19:11:16 +01:00
Tobias Doerffel
8b84526dc5 Pattern: removed freeze functionality
Since addition of automation, controllers etc. the freeze functionality
has been rather broken and thus adds no value anymore. In order to not
confuse users with broken functionality, remove it at all.

Closes #345.
2014-02-19 19:07:47 +01:00
Tobias Doerffel
7d965e251c RemotePlugin: always use installation directory as working directory
On Windows the working directory is not set to the installation directory
when launching LMMS by opening an associated project file. Because of this
the RemotePlugin programs can't be launched as the required DLL files are
missing.

Closes #351.
2014-02-19 18:31:48 +01:00
Tobias Doerffel
e84b537a60 NSIS/FileAssociation: do not write DefaultIcon registry key
Setting the DefaultIcon registry key uses LMMS' logo instead of a file
icon with the logo inside.

Thanks to Tres Finocchiaro for spotting the issue.
2014-02-19 18:09:27 +01:00
Tobias Doerffel
d39a79220a Travis: remove duplicate libsamplerate0-dev dependency 2014-02-19 17:34:27 +01:00
Tobias Doerffel
3f6ff1deb0 Removed libsamplerate from source tree
Drop another 3rdparty component and rely on system libraries instead.
2014-02-18 23:40:40 +01:00
Tobias Doerffel
0ee88252bb DynamicsProcessor: fixed Win32 build issue
For some reason isnanf() is not defined when building with recent MinGW64
toolchain, therefore define it manually if neccessary.
2014-02-18 23:33:17 +01:00
Tobias Doerffel
f512c63017 LadspaEffect: fixed default value if hints are sample rate dependent
When hints are sample rate dependent we also need to scale default
value accordingly as well.

Closes #334.
2014-02-18 23:03:36 +01:00
Tobias Doerffel
7d6f661590 ZynAddSubFX: update submodule reference 2014-02-18 23:00:54 +01:00
Tobias Doerffel
989361e859 Merge pull request #330 from diizy/stable-0.4
New icon and splash images
2014-02-18 20:57:02 +01:00
Tobias Doerffel
1cf3daed93 ZynAddSubFX: update submodule reference 2014-02-18 20:54:39 +01:00
Tobias Doerffel
296a1585bd ZynAddSubFX: update submodule reference 2014-02-18 20:48:50 +01:00
Tobias Doerffel
66ca51bf43 RemoteZynAddSubFX: start/stop NIO system
Fixes crash when showing GUI of ZynAddSubFX.
2014-02-18 20:48:21 +01:00
Tobias Doerffel
df53432289 ZynAddSubFX: define PLUGINVERSION macro
Removes exit confirmation dialogs etc. in MasterUI.fl
2014-02-18 20:47:54 +01:00
Tobias Doerffel
a5f21cf61b ZynAddSubFX: initialize IO engine after setting up synth instance 2014-02-18 20:28:34 +01:00
Tobias Doerffel
71103a71ba VeSTige: adapt rename of MidiMaxKey constant 2014-02-18 20:24:36 +01:00
Tobias Doerffel
ed56bdc47d ZynAddSubFX: Use upstream icon file 2014-02-18 20:03:41 +01:00
Tobias Doerffel
9209ef59e3 Initial integration of updated ZynAddSubFX 2014-02-18 19:59:40 +01:00
Tobias Doerffel
f969bd4650 Added separate ZynAddSubFX repository as submodule 2014-02-18 19:59:26 +01:00
Vesa
33a924d45b New icon and splash images 2014-02-18 17:48:26 +02:00
Tobias Doerffel
db305c1d1d Merge pull request #329 from diizy/stable-0.4
AudioFileProcessor knob fix
2014-02-18 08:05:27 +01:00
Vesa
a2484bc9c0 AudioFileProcessor knob fix 2014-02-18 01:42:28 +02:00
Tobias Doerffel
34ee048fd8 Merge pull request #327 from diizy/stable-0.4
Vestige artwork retouch
2014-02-17 22:45:37 +01:00
Vesa
ec7e4e044b Vestige: Change text "Preset" dark grey 2014-02-17 21:47:59 +02:00
Vesa
e9baa33706 Updated LMMS icon 2014-02-17 21:44:44 +02:00
Vesa
11af0635ef New scale/note icons by John, afp knobs back to non-styled 2014-02-17 21:38:27 +02:00
Vesa
6841a694b8 Vestige artwork retouch 2014-02-17 17:59:09 +02:00
Tobias Doerffel
b25e2150a9 Merge pull request #324 from diizy/waveshaper
Dynamics processor
2014-02-17 16:21:59 +01:00
Vesa
0dd96faf59 Layout fix 2014-02-16 19:51:52 +02:00
Vesa
4eacba7e3b Some fixes 2014-02-16 13:38:22 +02:00
Vesa
289f498737 Dynamics processor, first commit 2014-02-16 11:15:25 +02:00
Lukas W
7ec2c5e683 README: Add libfltk as build dependency
Needed since 0f4182e084
[skip ci]
2014-02-15 10:24:36 +01:00
Tobias Doerffel
d59ee225be Merge pull request #313 from diizy/stable-0.4
Waveshaper updates: added amplitude +/- buttons, toggle led to clip inpu...
2014-02-14 22:19:14 +01:00
Vesa
45625d2a34 Slight fix to the wavegraph: grow height by 1 px to make default state look better 2014-02-14 19:48:29 +02:00
Vesa
9265913b73 Waveshaper updates: added amplitude +/- buttons, toggle led to clip input to 0dB, more helpful gridlines in wavegraph
Mallets: artwork update by Bill Y.
New knob: knob_vintage32, currently only used in Mallets, can be used for other things in the future (maybe if we get some more vintage-style synths/effects?)
Graph widget: added new drawing mode (bar style graph) for future use, currently unused anywhere, have plans
2014-02-14 18:22:04 +02:00
Tobias Doerffel
6b54cf90d1 Merge pull request #310 from wongcc966422/issue309
AFP: revert changes
2014-02-14 13:53:19 +01:00
Wong Cho Ching
9d913d13b1 AFP: revert changes 2014-02-14 15:44:32 +08:00
Tobias Doerffel
b05c3ee283 SideBar: add tooltips to buttons
Closes #259.
2014-02-13 17:13:38 +01:00
Tobias Doerffel
7e680abf13 InstrumentTrack, NotePlayHandle: ignore volume of InstrumentTrack for MIDI events
The volume of an InstrumentTrack is applied separately when post-processing
the audio buffer and is not related to MIDI processing. It therefore should
not be included into MIDI velocity calculation.

Closes #301.
2014-02-13 01:35:49 +01:00
Tobias Doerffel
a87c206e31 volumeToMidi(): limit to MidiMaxVelocity 2014-02-13 01:35:38 +01:00
Tobias Doerffel
cdb8197c5d AutomatableModel: use nearbyintf() for rounding
For some reason roundf() causes an exception on Win32 when calling with
negative values. This caused LMMS to crash when turning an external MIDI
pitch wheel downwards.

Closes #281.
2014-02-13 01:14:06 +01:00
Tobias Doerffel
f329bccb6b AutomatableModel: remove bogus assigment if step size is 0
No idea why we set value to m_minValue in case the step size is 0. There
shouldn't be models with step size 0 nevertheless.
2014-02-13 01:13:22 +01:00
Tobias Doerffel
592ab25c57 Merge pull request #297 from Lukas-W/stable-0.4-doc
Add CMake doc target
2014-02-12 23:23:51 +01:00
Tobias Doerffel
20c86b7fe5 Merge pull request #302 from diizy/waveshaper
Waveshaper
2014-02-12 23:23:35 +01:00
Vesa
bb145b4b53 Higher range in gain knobs 2014-02-12 22:21:12 +02:00
Vesa
cc1dea42bb Final fixes and tweaks: old bugs fixed in graph behaviour, more responsive and accurate now 2014-02-12 22:13:36 +02:00
Vesa
58e451925e Graph code improvements, graphics 2014-02-12 20:58:30 +02:00
Vesa
4b125abc0e Added reset & smooth buttons, graphics, fixed graph smoothing behaviour 2014-02-12 16:21:46 +02:00
Vesa
201fa1d89a Waveshaper: added bg image for graph, made graph larger
Graph widget: added new functionality - ability to draw straight lines with shift-click
2014-02-12 13:21:55 +02:00
Lukas W
5b13a11748 Add CMake doc target
* Added doc/CMakeLists.txt with doxygen target
* Moved Doxyfile to doc/
* Updated Doxyfile (removed obsolete variables)
2014-02-11 21:58:23 +01:00
Vesa
2405a6a25e Waveshaper, first working version... 2014-02-11 15:19:04 +02:00
Vesa
30940fc112 Initial commit - copied files from bassbooster to modify into new plugin 2014-02-11 10:11:29 +02:00
Vesa
a612deee24 Resize zoom & quantize comboboxes in piano roll to conserve space 2014-02-11 10:02:00 +02:00
Vesa
b66f83dff0 Betterified the icon in zyn artwork 2014-02-11 10:02:00 +02:00
Tobias Doerffel
0f4182e084 ZynAddSubFX: removed FLTK source code
As FLTK 1.3 is available in all recent Linux distributions as well as
our MinGW-X PPA there's no need to maintain a copy of the FLTK source
code inside LMMS.
2014-02-11 00:27:54 +01:00
Andrew Kelley
e0e5aa3c58 Merge pull request #295 from unfa/stable-0.4
Removed the dependancy of "AMP_GCIA" plugin.
2014-02-10 17:53:49 -05:00
unfa
21a2d585e4 Removed the dependancy of "AMP_GCIA" plugin. 2014-02-10 23:46:45 +01:00
Tobias Doerffel
0c63d7cf5e Merge pull request #294 from Lukas-W/stable-0.4
Fix wrong quoting in CMake
2014-02-10 15:32:57 +01:00
Lukas W
c41f8e6528 Fix a CMake quote sign problem
Caused by 95b0a4305e
2014-02-10 15:23:54 +01:00
Lukas W
58796a6d15 Add verbose make output to Travis CI 2014-02-10 14:45:18 +01:00
Lukas W
568d0de8e5 Revert ab44ef221e
libfreetype6-dev is not necessary, it is already part of other dependencies.
2014-02-10 14:44:45 +01:00
Tobias Doerffel
c6a6feb588 Merge pull request #290 from M374LX/stable-0.4
Better way to update play button icons
2014-02-09 22:38:39 +01:00
Tobias Doerffel
ab44ef221e Travis: added libfreetype6-dev as build dependency
We need libfreetype6-dev for building ZynAddSubFX/FLTK.
2014-02-09 22:37:33 +01:00
Alexandre Almeida
def1154971 Update AutomationEditor.h 2014-02-09 19:04:34 -02:00
Alexandre Almeida
e6ec932848 Update bb_editor.cpp 2014-02-09 19:02:07 -02:00
Alexandre Almeida
f10d856290 Update engine.cpp
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:57:03 -02:00
Alexandre Almeida
64e1c2080c Update bb_editor.h
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:55:29 -02:00
Alexandre Almeida
2a1f4a61fa Update piano_roll.h
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:54:23 -02:00
Alexandre Almeida
10b8990ac5 Update song_editor.h
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:52:11 -02:00
Alexandre Almeida
40c35f2092 Update AutomationEditor.cpp
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:47:51 -02:00
Alexandre Almeida
5239afb3e4 Update piano_roll.cpp
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:46:39 -02:00
Alexandre Almeida
774d09b7a1 Update song_editor.cpp
A better way to update the play button icons, which requires less "if" checks and method calls in total.
2014-02-09 18:44:51 -02:00
Tobias Doerffel
0e5f148dce Merge pull request #231 from elfring/Complete_quoting_for_parameters_of_some_CMake_commands
Complete quoting for parameters of some CMake commands.
2014-02-09 18:57:51 +01:00
Tobias Doerffel
a522e42562 Merge pull request #288 from softrabbit/stable-0.4
AutomationEditor: fixed calculation of Y-coordinates for grid and values...
2014-02-09 18:14:32 +01:00
Raine M. Ekman
c14d19409c AutomationEditor: fixed calculation of Y-coordinates for grid and values. 2014-02-09 16:00:08 +02:00
Tobias Doerffel
9419ed71bc Merge pull request #285 from diizy/stable-0.4
AFP artwork, Zyn artwork update
2014-02-09 13:49:10 +01:00
Vesa
d29b5fa5e8 AFP artwork, Zyn artwork update 2014-02-09 12:29:48 +02:00
Tobias Doerffel
3125a7a954 EffectChain: remove unused and broken isRunning()
isRunning() is neither used nor is it correct in terms of semantic, so
we can remove it safely.
2014-02-07 00:34:32 +01:00
Tobias Doerffel
124ce9823b ZynAddSubFX: commented out debug messages 2014-02-07 00:34:03 +01:00
Tobias Doerffel
1adc8f8ba3 FxMixer: no need to check for master channel
The m_used property will always be true for the master channel as soon
as data was received from at least one FX channel.
2014-02-06 23:43:01 +01:00
Tobias Doerffel
8c06cb60f4 InstrumentTrack: always process silence at least one time
As of commit 1266278229 silent buffers
from InstrumentPlayHandle-driven instruments are ignored. This is a good
thing but can beak PeakController instances attached to e.g. ZynAddSubFX.

Fixes playback of unfa-Spoken.mmpz.
2014-02-06 23:40:50 +01:00
Tobias Doerffel
1266278229 InstrumentTrack: skip processing for IPH-driven instruments when silent
InstrumentPlayHandle-driven instruments (i.e. instruments producing only
one sound stream for all notes) are running all the time even if no notes
are running. The plugin itself usually does not consume much CPU time
while silent but all effects afterwards inside LMMS unneccessarily
consume lots of CPU time for processing silent buffer.

Typical case: a song with lots of instruments like ZynAddSubFX.

With this change, all processing is skipped on silent buffers which
notably decreases CPU load for many projects. All effects in following
effect chains continue to run until they're silent as well.

Closes #267.
2014-02-06 22:59:14 +01:00
Tobias Doerffel
be5e17c29c MixHelpers: added isSilent()
A simple function for testing whether a given sample buffer is silent.
Maybe we have to adjust/lower the threshold.
2014-02-06 22:59:02 +01:00
Tobias Doerffel
f01c90b6a5 EffectChain: new argument hasInputNoise for processAudioBuffer()
Use the extra information to determine whether we need to process input
at all if plugin is not running anymore.

In FX mixer we now omit starting effects if no data has been mixed to
a certain FX channel. Instead let effects running until they finished.

First of multiple fixes for #267.
2014-02-06 22:20:23 +01:00
Tobias Doerffel
6c1835bdd1 FxMixer, Mixer, AudioPort: minor coding style fixes 2014-02-06 22:18:58 +01:00
Tobias Doerffel
f44843d95c VstEffect: added NULL pointer check in closePlugin()
We must not call methods on m_plugin in case there's no valid instance
e.g. due to missing DLL files.

Closes #245.
2014-02-06 20:58:30 +01:00
Tobias Doerffel
eccfc0c688 SongEditor: remove unused messing with engine's pointer to SongEditor
Back in time we obviously didn't manage to get construction dependencies
sorted so we needed to mess with the pointer to the SongEditor instance in
the engine class.

Thanks to Alexandre Almeida for pointing out this issue.

Closes #261.
2014-02-06 20:51:16 +01:00
Tobias Doerffel
7cddb23fbf Merge pull request #271 from zonkmachine/chromatic-scale
Added scales (chromatic scale again)
2014-02-06 20:45:19 +01:00
Tobias Doerffel
b661c9b369 Merge pull request #270 from zonkmachine/ghost-files
Remove remaining files from Covers. Fixes #264
2014-02-06 20:44:15 +01:00
Tobias Doerffel
92bfd71c63 ComboBox: more checks for valid model + coding style
Before accessing the model, we have to check whether it is valid at all
in order to avoid a crash.

Closes #273.
2014-02-06 20:42:29 +01:00
Tobias Doerffel
2f4fb1a173 Merge pull request #278 from M374LX/stable-0.4
Fix a segmentation fault
2014-02-06 08:19:29 +01:00
Alexandre Almeida
5550377fe2 Fix a segmentation fault
Fix the segmentation fault caused by clicking on the "Cancel" button of the export dialog, as in issue #249.
2014-02-05 23:26:32 -02:00
Tobias Doerffel
cf5ecc052b Refreshed all translation files 2014-02-05 23:40:20 +01:00
Tobias Doerffel
ea0c6cc775 Merge pull request #274 from diizy/stable-0.4
Adding MIME-type icon to the data directory for packagers to use
2014-02-04 23:02:55 -08:00
Tobias Doerffel
9f78d541bd Merge pull request #275 from wongcc966422/issue273
Fixes crashes on ctrl+drag
2014-02-04 22:58:06 -08:00
Wong Cho Ching
6fca8814cb Fixes crashes on ctrl+drag.~ 2014-02-05 13:05:59 +08:00
Vesa
d8e41d9818 Adding MIME-type icon to the data directory for packagers to use 2014-02-05 05:35:56 +02:00
Tobias Doerffel
2f0cd8b7c4 InstrumentTrack: load pitch range model before pitch model
As the pitch range model defines the range of the pitch model we have
to load it first so the range of m_pitchModel gets adjusted accordingly.

Closes #272.
2014-02-04 23:45:23 +01:00
Tobias Doerffel
056e63416f Merge pull request #268 from softrabbit/stable-0.4
Cleaned Bubbly_days.xpf of solo and FX channel settings
2014-02-04 14:15:43 -08:00
Oskar Wallgren
c7e7748bc3 Added scales 2014-02-04 20:12:46 +01:00
Oskar Wallgren
330f7c0000 Remove remaining files from Covers. 2014-02-04 19:29:12 +01:00
Raine M. Ekman
69212f2bda Cleaned Bubbly_days.xpf of solo and FX channel settings 2014-02-04 18:14:33 +02:00
Tobias Doerffel
4a7a922e9a Merge pull request #244 from softrabbit/stable-0.4
Add Doxyfile and doc directory
2014-02-04 00:07:18 -08:00
Tobias Doerffel
a2bb484058 First release candidate for 1.0.0
Bumped version number to 0.9.90 in CMakeLists.txt, README and lmms.rc.in.
2014-02-03 21:47:03 +01:00
Tobias Doerffel
2e7733eaa1 DataFile: renamed from old multimediaProject class + coding style fixes 2014-02-03 21:21:36 +01:00
Raine M. Ekman
c4b34b4368 Added Doxyfile. 2014-02-03 22:10:32 +02:00
Raine M. Ekman
a5c3febfb8 Merge https://github.com/LMMS/lmms into stable-0.4 2014-02-03 22:09:56 +02:00
Tobias Doerffel
3837ea0087 Merge pull request #243 from diizy/stable-0.4
Bill's setup icons
2014-02-03 11:57:45 -08:00
Tobias Doerffel
7500c98f8d MidiPort: do not change key of MIDI note events
There's no need to transpose MIDI events inside a MidiPort instance. Any
correction to the outer world should (if at all) happen in the according
MIDI backends.

Closes #242.
2014-02-03 20:56:23 +01:00
Vesa
f333ce2e65 Bill's setup icons 2014-02-03 21:47:51 +02:00
Tobias Doerffel
8da3c78f62 Song: update VstSyncController in new playback control methods
As of commit c60e7ba8d1 the whole playback
control has been revised. As this was an old patch, it didn't take care
of the VST sync functionality. This is fixed now for the most part.

Closes #184.
2014-02-03 20:13:36 +01:00
Tobias Doerffel
e23d5838e7 Song: removed old action array
As of commit c60e7ba8d1 we no longer queue
playback actions and process them later, therefore remove old remains.
2014-02-03 20:11:18 +01:00
Tobias Doerffel
fd971ee3a2 VstSyncController: print a warning if VST sync support is not enabled
Users might wonder why VST sync does not work as they didn't notice the
option in the configuration dialog.
2014-02-03 20:05:51 +01:00
Tobias Doerffel
5a9e0bdcef Moved VST sync functionality into new VstSyncController class
First attempt to clean up the mess in the Song class by moving the VST sync
functionality into its own class and just calling a few functions from it.
2014-02-03 20:04:57 +01:00
Raine M. Ekman
faac9af1fe Merge https://github.com/LMMS/lmms into stable-0.4 2014-02-02 20:41:59 +02:00
Tobias Doerffel
5e6066e6b6 Merge pull request #239 from zonkmachine/stable-0.4
Added myself to the author list. :)
2014-02-02 06:37:00 -08:00
Oskar Wallgren
496e8dc5dc Added myself to the author list. :) 2014-02-02 15:18:59 +01:00
Tobias Doerffel
101e41186e Merge pull request #236 from mikobuntu/stable-0.4
Fix compact track bug in BB_Editor fixes #73
2014-02-02 05:48:48 -08:00
Tobias Doerffel
539d0f4a9e Merge pull request #237 from wongcc966422/issue27
Automation Tweaks and Bugfixes
2014-02-02 05:41:45 -08:00
Wong Cho Ching
0f746d8163 Preserves automation scale when everything is disconnected 2014-02-02 20:25:24 +08:00
Wong Cho Ching
f7963d5b3b Rendering tweak and fixes #234 2014-02-02 19:40:00 +08:00
mikobuntu
65b1c99d13 Fix compact track bug in BB_Editor fixes #73 2014-02-02 11:39:10 +00:00
Tobias Doerffel
a14b9b46ca Merge pull request #235 from wongcc966422/issue225
Fixes crash on loading instrument with peak controller
2014-02-02 02:45:00 -08:00
Wong Cho Ching
287276db6f Automation: No longer getting destroyed after exporting PLUS rendering bugfix 2014-02-02 18:29:16 +08:00
Wong Cho Ching
64195eb645 Fixes crash on loading instrument with peak controller 2014-02-02 10:28:24 +08:00
Tobias Doerffel
ed148306f0 Merge pull request #230 from diizy/stable-0.4
Added mikobuntu to AUTHORS file, edited my email in same
2014-02-01 17:07:31 -08:00
Tobias Doerffel
34600c7a8a Merge pull request #228 from wongcc966422/sfxr
Fixes sfxr labeling
2014-02-01 17:06:32 -08:00
Markus Elfring
95b0a4305e Bug #175: Completed quoting for parameters of some CMake commands
A Wiki article pointed out that whitespace will only be preserved for parameters
in CMake commands if passed strings will be appropriately quoted or escaped.
http://cmake.org/Wiki/CMake/Language_Syntax#CMake_splits_arguments_unless_you_use_quotation_marks_or_escapes.

Quoting was added so that more places should also handle file names correctly
which contain space characters eventually.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
2014-02-01 15:20:27 +01:00
Vesa
c1de8b52cc Added mikobuntu to AUTHORS file, edited my email in same 2014-02-01 14:38:26 +02:00
Wong Cho Ching
fb924166c4 Fixes sfxr labeling 2014-02-01 20:26:32 +08:00
Tobias Doerffel
518bd90fd4 Merge pull request #225 from wongcc966422/issue220
Fixes crash when opening file with Peak Controller
2014-02-01 03:45:11 -08:00
Tobias Doerffel
71b9b585c7 Merge pull request #224 from wongcc966422/hideRange
Hide RANGE spinbox when the instrument is not bendable
2014-02-01 03:44:10 -08:00
Tobias Doerffel
353b6e27a2 Merge pull request #219 from diizy/stable-0.4
Sfxr logo, custom waveforms
2014-02-01 03:42:06 -08:00
Tobias Doerffel
bfdf8feaf5 Merge pull request #218 from wongcc966422/issue1
render circles on automation points; Increased INITIAL_WIDTH
2014-02-01 03:41:08 -08:00
Tobias Doerffel
571bdeb053 Timeline: additionally allow moving left loop point with middle mouse button
Commit 3a53473d10 aimed at allowing users
without a middle mouse button (like on touchpads) to move the left loop
point. However nothing stops us from keeping the old behaviour as well,
so here we go!
2014-02-01 12:39:03 +01:00
Tobias Doerffel
5504c9c9cf Merge pull request #227 from wongcc966422/patch-1
May I be added to the author list?
2014-02-01 02:13:38 -08:00
Wong Cho Ching
c2a753f4b8 Merge branch 'issue220' of https://github.com/wongcc966422/lmms into issue220 2014-02-01 18:10:42 +08:00
Wong Cho Ching
c4b6a41aea Further fixes backward compatibility issue 2014-02-01 18:09:46 +08:00
wongcc966422
5507410c35 May I be added to the author list?
Thanks. :)
2014-02-01 16:59:23 +08:00
wongcc966422
9b2d620dc8 Replace spaces with tab 2014-02-01 14:50:10 +08:00
Wong Cho Ching
7d96a2d533 Fixes crash when opening file with Peak Controller 2014-02-01 14:46:15 +08:00
Wong Cho Ching
edbe8336cc Hide RANGE spinbox when the instrument is not bendable 2014-02-01 10:42:21 +08:00
Vesa
75c8e903da Fixed load/save of custom waveform settings on LFO controllers. 2014-02-01 00:14:34 +02:00
Vesa
cc810effda Fix cancel button behaviour on waveform open dialog 2014-02-01 00:01:42 +02:00
Vesa
37ad60a704 Set default directory to the waveform directory when opening an audio file for a user-defined waveform 2014-02-01 00:01:42 +02:00
Vesa
4bcc31a80c Added custom waveforms to sample directory 2014-02-01 00:01:42 +02:00
Vesa
a7f41d7487 Updated sfxr logo 2014-02-01 00:01:42 +02:00
Raine M. Ekman
67314f0622 Move version details into .h file and add them to main.cpp 2014-01-31 21:39:03 +02:00
Wong Cho Ching
b37ce31bc3 render circles on automation points; Inceased INITIAL_WIDTH 2014-01-31 23:18:14 +08:00
Tobias Doerffel
694c861318 Merge pull request #215 from wongcc966422/issue174
AudioFileProcessor: Fixed wave view rendering; added validation
2014-01-31 06:42:01 -08:00
Tobias Doerffel
9fe1f32ec8 Merge pull request #216 from wongcc966422/issue204
Exporting: fixes LFO sync
2014-01-31 06:41:16 -08:00
Wong Cho Ching
8483acb705 Exporting: fixes LFO sync 2014-01-31 21:17:57 +08:00
Wong Cho Ching
3985dffb21 Fixed wave view rendering; added validation 2014-01-31 21:08:49 +08:00
Tobias Doerffel
76b0562bae Merge pull request #213 from wongcc966422/issue174
[not ready]Temporary fix for audio file processor knobs
2014-01-31 04:08:27 -08:00
Wong Cho Ching
0ecb1e05df temporary fix for audio file processor knobs 2014-01-31 19:15:30 +08:00
Tobias Doerffel
4ecc6cb6db Merge pull request #211 from wongcc966422/issue208
Fixes #208
2014-01-31 01:52:00 -08:00
Tobias Doerffel
403f8d0b91 Merge pull request #209 from wongcc966422/issue204
Makes LFO sync with the timeline of the song
2014-01-30 22:12:51 -08:00
Tobias Doerffel
e06bf2551f Merge pull request #212 from wongcc966422/issue210
Stutter playback mode now save state
2014-01-30 22:05:41 -08:00
Wong Cho Ching
d4a2a48a1e Stutter playback mode now save state 2014-01-31 12:52:25 +08:00
Wong Cho Ching
df69bffdb3 Fixes #208 2014-01-31 12:41:47 +08:00
Wong Cho Ching
fc44b7902f Resolve conflicts 2014-01-31 12:08:49 +08:00
Wong Cho Ching
37dd8fc5ac Makes LFO sync with the timeline of the song 2014-01-31 12:05:15 +08:00
Tobias Doerffel
673ddfe36d Merge pull request #205 from wongcc966422/issue204
[NOT ready]reset LFO controllers when playing is started
2014-01-30 15:39:39 -08:00
Tobias Doerffel
9266bc328d Merge pull request #206 from diizy/stable-0.4
Artwork
2014-01-30 11:28:24 -08:00
Tobias Doerffel
abc05d209e Merge pull request #203 from wongcc966422/issue1
Automation points are now draggable
2014-01-30 11:27:38 -08:00
Tobias Doerffel
9f6b894351 Merge pull request #200 from wongcc966422/issue28
Fixes removing controller in controller rack bug
2014-01-30 11:26:38 -08:00
wongcc966422
f707f3f665 Update song.cpp 2014-01-31 03:13:44 +08:00
Wong Cho Ching
c484ee8345 reset LFO controllers when playing is started 2014-01-31 03:07:18 +08:00
Vesa
b4f78fdcb3 Fixes: Sfxr artwork, triple osc + lb302 logos 2014-01-30 21:01:18 +02:00
Wong Cho Ching
f1c46e3bea Automation points are now draggable 2014-01-31 02:29:03 +08:00
Wong Cho Ching
7196d67a82 getEffectChain() => effectChain() 2014-01-30 20:50:17 +08:00
Vesa
9e1a3af55e Sfxr artwork updates 2014-01-30 13:14:30 +02:00
Wong Cho Ching
e19e763120 Added title for the confirm message 2014-01-30 16:40:11 +08:00
Tobias Doerffel
c83115d0d6 Merge pull request #191 from zonkmachine/stable-0.4
Fixed envelope sustain response
2014-01-30 00:36:57 -08:00
Tobias Doerffel
988218f06e Merge pull request #199 from wongcc966422/bitInvaderSmoothGraphic
Bit Invader: added active and inactive graphic for smooth button
2014-01-30 00:32:50 -08:00
Wong Cho Ching
600232967a Fixes removing controller in controller rack bug 2014-01-30 16:32:25 +08:00
Wong Cho Ching
e7df29d2e6 Bit Invader smooth button active and inactive graphic 2014-01-30 13:54:56 +08:00
Oskar Wallgren
1e98cb7b58 Envelope graph shooting over target 2014-01-30 03:44:37 +01:00
Oskar Wallgren
ba69e70bdb More envelope sustain respon fixes 2014-01-30 01:01:58 +01:00
Tobias Doerffel
0ff636b363 RemoteVstPlugin: fixed handling of MIDI pitch bend events
Fix a regression introduced with commit 94f991848e.

Closes #172.
2014-01-30 00:00:44 +01:00
Tobias Doerffel
9852cb9a57 NotePlayHandle, InstrumentTrack: removed obsolete singerbot support
The singerbot plugin doesn't exist anymore and thus any support in the
code base just adds complexity and confusion, therefore remove it.
2014-01-29 23:56:07 +01:00
Tobias Doerffel
ca0e413fd3 Renamed PlayHandle classes and some functions with bool return values
Next big coding style update - this time all PlayHandle classes are
affected. Functions like done() and released() were renamed to
isFinished() and isReleased().
2014-01-29 23:54:47 +01:00
Tobias Doerffel
b4c4b293a0 sfxr: use instrumentTrack() instead of maintaining own variable
No need to maintain instrument track on our own here. Furthermore minor
coding style improvements.
2014-01-29 22:49:45 +01:00
Tobias Doerffel
b1b5c56d0f Merge pull request #198 from softrabbit/stable-0.4
Check for TTY app before updating icons
2014-01-29 13:48:02 -08:00
Tobias Doerffel
f872bb2fab Merge pull request #195 from wongcc966422/sfxr
Added sound preview when button is clicked
2014-01-29 13:47:43 -08:00
Tobias Doerffel
83476c3481 Merge pull request #192 from wongcc966422/ghostPeakController
Fixed duplicate controllers issue
2014-01-29 13:45:48 -08:00
Raine M. Ekman
8945f95d21 Merge https://github.com/LMMS/lmms into stable-0.4 2014-01-29 19:30:00 +02:00
Wong Cho Ching
e81423949a updated include file 2014-01-30 00:16:08 +08:00
Wong Cho Ching
cdedd34474 remove stdio.h 2014-01-30 00:05:42 +08:00
Wong Cho Ching
3500cde6a4 fixes compiler error, 2nd attempt 2014-01-30 00:04:45 +08:00
Wong Cho Ching
fa1b337517 Merge remote-tracking branch 'origin/stable-0.4' into sfxr 2014-01-30 00:02:54 +08:00
Wong Cho Ching
277ff5b99e fix strict compiler error 2014-01-29 23:51:35 +08:00
Wong Cho Ching
20eb81c955 bug fix 2014-01-29 23:48:34 +08:00
Wong Cho Ching
575494361b Added sound preview when button is click 2014-01-29 22:21:49 +08:00
Wong Cho Ching
207bd9974f checkout fltk-config 2014-01-29 19:58:36 +08:00
Wong Cho Ching
39a3b4c6cb set m_effectId to random value when it is not loaded from project. 2014-01-29 19:57:13 +08:00
Wong Cho Ching
6cf825ca99 randomize PeakControllerEffect::m_effectId 2014-01-29 19:31:10 +08:00
Wong Cho Ching
997c2114f4 Merge remote-tracking branch 'origin/stable-0.4' into ghostPeakController 2014-01-29 19:02:49 +08:00
Wong Cho Ching
8d4b467ddc Fixed duplicate controllers issue 2014-01-29 18:44:52 +08:00
Oskar Wallgren
4a1417821f Fixed envelope sustain response 2014-01-29 02:29:19 +01:00
Tobias Doerffel
daad00e822 Merge pull request #186 from softrabbit/stable-0.4
OpulenZ: LGPL added in sources, a handful of presets added
2014-01-28 15:39:46 -08:00
Tobias Doerffel
a16942603e Merge pull request #190 from diizy/stable-0.4
UI: small fixes, improvements, clean-up & requested changes
2014-01-28 15:39:34 -08:00
Vesa
f6ee1dd25d New files 2014-01-29 00:49:46 +02:00
Vesa
c267265148 Retouched transport icons, commented stylesheet for better documentation, fixed faint line in bitinvader knob 2014-01-29 00:45:03 +02:00
Vesa
f7d58114b2 Added object names for transport buttons (for theming purposes), fixed alignment issues on track labels 2014-01-28 22:17:44 +02:00
Raine M. Ekman
4c39f839ce song.cpp: Check for TTY app before calling engine::updatePlayPauseIcons() 2014-01-28 21:54:31 +02:00
Raine M. Ekman
554c78b583 Merge https://github.com/LMMS/lmms into stable-0.4 2014-01-28 20:53:00 +02:00
Raine M. Ekman
a36f59ab35 Moved LGPL to OpulenZ source dir, added presets. 2014-01-28 20:39:03 +02:00
Tobias Doerffel
65252d3f40 Merge pull request #182 from wongcc966422/sfxr
sfxr: reduced CPU usage
2014-01-28 00:55:47 -08:00
Wong Cho Ching
ec71c08816 Reduced CPU usage 2014-01-28 11:21:46 +08:00
Tobias Doerffel
8fba196897 CMakeLists: removed deprecated win32-pkg target
We've been using CPack for ages so there's really no need for the old
win32-pkg target.
2014-01-28 00:27:59 +01:00
Tobias Doerffel
b8149c1d88 EffectView: fix crash when removing dummy effect plugin
If a certain effect plugin fails to load a dummy plugin is inserted
instead which has no sub window and thus caused a crash in EffectView
destructor.
2014-01-28 00:26:29 +01:00
Tobias Doerffel
2a1ec97113 Merge pull request #178 from zonkmachine/stable-0.4
Removed copyrighted material and moved some files to CoolSongs.
2014-01-27 13:01:13 -08:00
Raine M. Ekman
1b5c2a0112 Added LGPL text, as needed by the OPL2 emulator used in OpulenZ 2014-01-27 21:12:54 +02:00
Oskar Wallgren
0195bbaf7f Removed copyrighted material and moved some files to CoolSongs.
Directory Covers removed.
2014-01-27 20:01:32 +01:00
Tobias Doerffel
f2c4d144c8 FxMixerView: set minimum width for EffectRackView
The EffectRackView was a little bit too small in Win32 build, therefore
explicitely set minimum width.
2014-01-27 00:34:55 +01:00
Tobias Doerffel
bc4b83f443 LADSPA/CMT: fixed global initialization on Win32
Global initialization happens via a global startup/shutdown handler
instance. For some reason this does not work properly when building
a DLL file, therefore create this startup/shutdown handler instance
as a static variable in ladspa_descriptor().

Furthermore marked ladspa_descriptor as extern-C.
2014-01-27 00:31:22 +01:00
Tobias Doerffel
6217201184 Added initial versions of new logo 2014-01-27 00:08:36 +01:00
Tobias Doerffel
ea5f5c4f00 Papu: fixed out-of-bounds array access due to too small data types
Build failed on Win32 with GCC 4.8.
2014-01-26 23:45:49 +01:00
Tobias Doerffel
d5113d0059 MidiWinMM: fixed MidiPort API calls 2014-01-26 23:45:29 +01:00
Tobias Doerffel
84f57b776d ZynAddSubFX: fixed compiler warning on Win32 2014-01-26 23:45:09 +01:00
Tobias Doerffel
e68f88b698 Export PresetPreviewPlayHandle class
The PresetPreviewPlayHandle is referenced by the PeakController plugin
now and therefore needs to be exported.
2014-01-26 23:44:36 +01:00
Tobias Doerffel
ef4f9b1b60 InstrumentTrack: partly revert ad27039b9b
Even though there are probably not many old projects out there, at least
old presets didn't load properly anymore as of ad27039b9b.
Fix this by reintroducing compat code.
2014-01-26 23:18:59 +01:00
Tobias Doerffel
db0570b130 InstrumentSoundShaping: more sanity checking 2014-01-26 23:14:59 +01:00
Tobias Doerffel
09395a2f3e NotePlayHandle: stop properly when arpeggio is played via MIDI
If a note is played via MIDI (e.g. with infinite frame count) and arpeggio
is enabled the NotePlayHandle never got deleted as framesLeft() always
returned a big value even after release.

Closes #169.
2014-01-26 19:09:11 +01:00
Tobias Doerffel
4b340f7d5f InstrumentTrack: manage MIDI note recording in NotePlayHandle
We must not record notes when receiving external MidiNoteOff events
as e.g. the sustain pedal still might be pressed. State tracking for
features like these is done inside NotePlayHandle so move the recording-
related signal emission from InstrumentTrack to NotePlayHandle.

Closes #168.
2014-01-26 16:48:35 +01:00
Tobias Doerffel
725ff59f0e NotePlayHandle: added property to track origin
Using the origin property we can track where a NotePlayHandle instance
originates from (Pattern, MIDI, ...) and build new functions around this.
2014-01-26 16:44:54 +01:00
Tobias Doerffel
7103bb31d6 InstrumentTrack: more coding style improvements 2014-01-26 16:02:35 +01:00
Tobias Doerffel
ad27039b9b InstrumentTrack: removed compat code for loading old projects
We should not need compat code for project files < 0.4.x anymore.
Anybody who wants to load project files made before 2008 is advised to
open them in LMMS 0.4.x first and save them so they get upgraded.
2014-01-26 15:56:10 +01:00
Tobias Doerffel
1fae0ce74a Merge pull request #166 from wongcc966422/fileDialogSegfaultFix
Fixes segfault when clearSelection() is called with a new instance of FileDialog
2014-01-26 06:49:41 -08:00
Tobias Doerffel
6dfc4b77aa Merge pull request #167 from softrabbit/stable-0.4
OpulenZ: added pitch bend range MIDI message handling
2014-01-26 06:48:58 -08:00
8tab
869229025c restored fltk-config 2014-01-26 15:44:51 +01:00
Raine M. Ekman
29f04d8056 OpulenZ: added pitch bend range MIDI message handling 2014-01-26 16:33:43 +02:00
Tobias Doerffel
20700b1c71 InstrumentTrack: fixed range for pitch model 2014-01-26 14:22:41 +01:00
Tobias Doerffel
a5588d2f75 ZynAddSubFX: default pitch wheel bend range to 100
Even though ZynAddSubFX does not support pitch wheel sensitivity RPN
events and thus we can't update the pitch range from LMMS automatically,
at least default to 100 semitones pitch wheel bend range so behaviour
is consistent with default pitch range in LMMS.
2014-01-26 14:11:42 +01:00
Tobias Doerffel
43f76f5357 Sf2Player: update pitch wheel sensitivity based on pitch range
Fluidsynth supports setting the pitch wheel sensitivity, therefore make
use of it and set values from the recently introduced pitch range model.
2014-01-26 14:09:05 +01:00
Tobias Doerffel
0a5665ae16 InstrumentTrack: send RPN update in updatePitchRange()
When changing the pitch range all we can do for MIDI is to update the
MIDI pitch bend sensitivity RPN even though this is only supported by
some MIDI instruments.

Closes #129.
2014-01-26 14:07:15 +01:00
Tobias Doerffel
52d2274e19 InstrumentTrack: coding style fixes 2014-01-26 14:07:06 +01:00
Tobias Doerffel
0e00fc6aa1 InstrumentTrack: replaced numbers by newly introduced constants 2014-01-26 14:06:46 +01:00
Tobias Doerffel
8c9778c945 AutomatableModel: do not change init value when adjusting range
This causes e.g. the default value of the pitch model to be changed
when changing the pitch range.
2014-01-26 14:05:22 +01:00
Tobias Doerffel
c77531fef2 Midi: added constants for Register Parameter Numbers (RPN) support 2014-01-26 14:03:43 +01:00
Tobias Doerffel
99ea20463e InstrumentTrack: fixed midiPitch() and added midiPitchRange() 2014-01-26 14:03:25 +01:00
Tobias Doerffel
a3c7f983a3 New header file Pitch.h for pitch-related data types and helpers 2014-01-26 14:02:51 +01:00
Tobias Doerffel
bd6fb03d44 Midi: added constants for pitch bend 2014-01-26 14:02:05 +01:00
Wong Cho Ching
e4cca6a0b3 Added semi-colon to make it build 2014-01-26 20:45:34 +08:00
Wong Cho Ching
91d73bba2b Fixes segfault when clearSelection() is called with a new instance of FileDialog 2014-01-26 19:40:52 +08:00
Tobias Doerffel
f519bec995 MainWindow: remove undo/redo actions from edit menu for the time being
As undo/redo are not working properly at the moment, do not expose
according menu items to the user. This will be fixed in upcoming releases.

Closes #152.
2014-01-26 12:34:12 +01:00
Tobias Doerffel
4ba5edc32c InstrumentTrack: generally do not forward NoteOn/NoteOff/KeyPressure events
If we receive MidiNoteOn, MidiNoteOff or MidiKeyPressure events we always
kind of handle them in processInEvent() so do not forward them to the
instrument.

This fixes a freeze when loading VST plugins as PianoView::focusOutEvent()
tried to send MIDI events to the not yet completely loaded and thus locked
VST plugin.

Closes #160.
2014-01-26 10:17:10 +01:00
Tobias Doerffel
5d1335f390 RemoteVstPlugin: fix build failure due to out-of-bounds-array-access-warning
Newer versions of GCC seem to assume an array size of 0 for arrays whose
size is not specified explicitely. This causes a warning about an
out-of-bounds array access.
2014-01-26 10:04:03 +01:00
Tobias Doerffel
80a58df124 MidiPort: coding style improvements 2014-01-26 10:01:54 +01:00
Tobias Doerffel
c05826b6eb Merge pull request #165 from eagles051387/stable-0.4
added another author to the file
2014-01-26 00:51:27 -08:00
Tobias Doerffel
78ac2d6d2c Merge pull request #162 from wongcc966422/opulenzInitializeVoices
Fixed OpulenZ segfault bug when it is dropped on another instrument.
2014-01-26 00:49:17 -08:00
Tobias Doerffel
c5ab13e5c5 InstrumentTrack: check for instrument instance in processOutEvent()
There are situations where processOutEvent() is being called while
loading instrument track settings e.g. when loading the pitch model
whose dataChanged() signal is connected to InstrumentTrack::updatePitch()
which in turn calls processOutEvent(). At this time we do not have an
instrument instance and therefore have to skip processing.

Closes #164.
2014-01-26 09:48:15 +01:00
Jonathan Aquilina
20333ad4ca added another author to the file 2014-01-26 09:46:06 +01:00
Wong Cho Ching
b502ae9da4 Changed the placement of code 2014-01-26 14:23:32 +08:00
Wong Cho Ching
b15942d120 Amended initialize code 2014-01-26 14:19:33 +08:00
Wong Cho Ching
5816a2ae5d Fixed OpulenZ segfault bug when it is dropped on another instrument. 2014-01-26 13:29:52 +08:00
Andrew Kelley
13917973c5 Merge pull request #161 from wongcc966422/sfxr
sfxr plugin: Reduced the volume
2014-01-25 21:03:43 -08:00
Wong Cho Ching
d4e5648dca Reduced the volume 2014-01-26 12:37:26 +08:00
Andrew Kelley
31c0f77248 fix incorrect type; makes smooth knobs actually smooth 2014-01-25 23:04:05 -05:00
Andrew Kelley
c2124fe1dd Merge pull request #159 from wongcc966422/sfxr
sfxr plugin: Added pitch support
2014-01-25 19:53:39 -08:00
Wong Cho Ching
959d5e98e6 remove debug message 2014-01-26 11:38:52 +08:00
Wong Cho Ching
12b153a275 Added pitch support: Now the pitch knob and the key being pressed have effect on the pitch produced. 2014-01-26 11:37:43 +08:00
Andrew Kelley
15aaf6f4ca add TIMEOUT 1 to git shortlog in configure script
For some reason executing git shortlog in Qt Creator cmake project
import hangs. This is a workaround so that it is still possible to
use Qt Creator without changing the normal build, in which git shortlog
will certainly complete in 1 second.
2014-01-25 22:20:34 -05:00
Andrew Kelley
186aedda93 add another mailmap entry 2014-01-25 21:54:00 -05:00
Andrew Kelley
143c801c71 add .mailmap to make git shortlog more accurate 2014-01-25 21:33:33 -05:00
Andrew Kelley
ba826e4aca clearer configure output for libsamplerate 2014-01-25 20:42:56 -05:00
Tobias Doerffel
ad554ff1e8 sfxr: fixed Win32 build
Need time.h for the time() function.
2014-01-26 02:03:29 +01:00
Tobias Doerffel
52270aebc1 MidiWinMM: adapted MIDI changes
Fixes build failure after recent API changes.
2014-01-26 01:49:33 +01:00
Tobias Doerffel
417a1566a0 LADSPA/SWH: fixed compiler warnings resulting in Win32 build failure 2014-01-26 01:48:53 +01:00
Tobias Doerffel
0063b891a8 FileDialog: add EXPORT macro
The FileDialog class is used by plugins and therefore needs to be exported
for platforms like Win32.
2014-01-26 01:48:15 +01:00
Tobias Doerffel
94f991848e RemoteVstPlugin: adapted MIDI changes
Fixes build failure after recent API changes.

Closes #157.
2014-01-26 01:47:29 +01:00
Tobias Doerffel
519a29e608 SampleBuffer: define OV_EXCLUDE_STATIC_CALLBACKS
Define OV_EXCLUDE_STATIC_CALLBACKS in order to suppress compiler warnings
about unused static instances when building Win32 version.
2014-01-26 01:18:19 +01:00
Tobias Doerffel
049951438a Do not pass default time to processInEvent()
We introduced default parameters for MidiTime parameters so there's no
need to construct them manually.
2014-01-26 01:15:43 +01:00
Tobias Doerffel
c144a2baa2 Instrument: return true in default implementation of handleMidiEvent()
Supress warnings about unhandled MIDI events e.g. on PianoView focus out
by returning true in Instrument::handleMidiEvent().
2014-01-26 01:10:18 +01:00
Tobias Doerffel
5808c8b786 NotePlayHandle: fixed minor auto replace typo 2014-01-26 00:59:12 +01:00
8tab
eb8fb3134a tap_rotspeak - cleanup 2014-01-26 00:56:30 +01:00
Tobias Doerffel
d2aab11130 InstrumentTrack: work with transposed MIDI event and key in processOutEvent()
In processOutEvent() initialize and use a MidiEvent object with transposed
key as well as the key variable.
2014-01-26 00:38:23 +01:00
Tobias Doerffel
b6e4860fdb InstrumentTrack: do not set state of piano in processInEvent()
As processInEvent() is responsible for starting/stopping notes, we do
not have to set the state of the piano. This is done in processOutEvents()
already.
2014-01-26 00:33:51 +01:00
Tobias Doerffel
1fddc81c04 InstrumentTrack: removed option for disabling activity indicators
Probably never used by anyone and just makes code unneccessarily complex.
2014-01-26 00:25:32 +01:00
Tobias Doerffel
7d395c00fa InstrumentTrack: removed option for disabling PianoView visual feedback
Probably never used by anyone and just makes code unneccessarily complex.
2014-01-26 00:19:16 +01:00
Tobias Doerffel
3a827f061f Reworked MIDI event handling in InstrumentTrack and renamed MIDI classes
The MIDI event handling in InstrumentTrack was complex and buggy. It has
been simplified now such that processInEvent() tries to handle note on,
note off and key pressure events. The actions taken should result in
equivalent calls to processOutEvent() by NotePlayHandle instances. The
processOutEvent() function sends according MIDI events to the attached
instruments. All unhandled MIDI events are directly forwarded to the
instrument in processInEvent().

It's possible that some corner-cases are not handled yet with the new code
and we have regressions now.

Furthermore renamed midiTime/midiEvent to MidiTime/MidiEvent to match
coding style.

Closes #72.
2014-01-26 00:08:12 +01:00
Tobias Doerffel
790266f0c1 Merge pull request #154 from softrabbit/stable-0.4
OpulenZ improvements: pitch bend, velocity, aftertouch
2014-01-25 14:32:26 -08:00
8tab
3dad5f2940 fixed code formatting 2014-01-25 21:31:55 +01:00
8tab
592adf19e1 fixed some errors from static analyzer 2014-01-25 21:04:07 +01:00
8tab
3f41759677 gitignore updated 2014-01-25 21:04:07 +01:00
8tab
b1ec5e1b6c more warnings 2014-01-25 21:04:06 +01:00
Tobias Doerffel
1f35143927 Fader: fixed drawing of peaks
As the fader background graphics recently have changed, the code for
drawing the peaks had to be fixed as well.
2014-01-25 20:49:02 +01:00
Raine M. Ekman
2116cf840b OpulenZ: Velocity works OK now. 2014-01-25 21:48:24 +02:00
Raine M. Ekman
46a38b7245 Merge https://github.com/LMMS/lmms into stable-0.4 2014-01-25 21:43:43 +02:00
Tobias Doerffel
fa0201ffd7 AUTHORS: small updates & typo fixes 2014-01-25 20:41:20 +01:00
Tobias Doerffel
7e552f92a5 Merge pull request #153 from wongcc966422/sfxr
LMMS port of sfxr
2014-01-25 11:30:16 -08:00
Wong Cho Ching
a8d7f1e4a8 added artworks 2014-01-26 03:20:21 +08:00
Tobias Doerffel
e268c4627a Merge pull request #151 from Hexasoft/stable-0.4
Added a vocoder LADSPA plugin into the tree.
2014-01-25 11:18:33 -08:00
Tobias Doerffel
628ec62ee8 Merge pull request #149 from diizy/stable-0.4
Final UI updates
2014-01-25 11:17:03 -08:00
Wong Cho Ching
139db3d57a Ported synth function 2014-01-26 03:13:27 +08:00
Tobias Doerffel
8b4e2fc216 Merge pull request #145 from wongcc966422/ghostPeakController
Fixes Ghost Peak Controller Bug
2014-01-25 11:13:13 -08:00
Tobias Doerffel
021b9229ad Merge pull request #143 from Lukas-W/stable-0.4
Fix a mismatched delete, update authors
2014-01-25 11:10:27 -08:00
Hexasoft
14e9694ecc Added a vocoder LADSPA plugin into the tree. 2014-01-25 17:37:05 +01:00
Vesa
dbe80e9f2b Peak controller artwork fix 2014-01-25 18:20:48 +02:00
Vesa
8a508eff27 Graphics tweaks here and there. Lots of palette adjustments, rest of the most important icons done. CPULoad widget fix to allow transparent background without glitching. 2014-01-25 17:40:21 +02:00
Vesa
84926cae4c Oscilloscope, tripleosc gfx fix 2014-01-25 17:40:21 +02:00
Vesa
485d4fc595 New Zyn plugin artwork 2014-01-25 17:40:21 +02:00
Wong Cho Ching
6cda610f48 Fixes build issue 2014-01-25 22:49:41 +08:00
Raine M. Ekman
d515c4e573 Merge https://github.com/LMMS/lmms into stable-0.4 2014-01-25 16:05:45 +02:00
Wong Cho Ching
5fb9afc15a GUI Completed. 2014-01-25 21:42:22 +08:00
Lukas W
3f26fdfbf1 Update AUTHORS: Add Lukas W [skip ci]
Adding myself to the author list somehow feels awkward.
2014-01-25 14:42:03 +01:00
Lukas W
4d306c3855 Fix mismatched delete
delete was called on memory allocated with malloc() which results in
undefined behaviour. Fixed by using free() instead of delete.
2014-01-25 14:40:09 +01:00
eagles051387
304f36fac8 Merge pull request #140 from eagles051387/stable-0.4
Updating Authors file with new contributors
2014-01-25 05:34:33 -08:00
Jonathan Aquilina
cbc5fb56c9 Updating Authors file with new contributors 2014-01-25 13:44:45 +01:00
Wong Cho Ching
5ffc36ea68 Copied readme file and make it compile 2014-01-25 11:45:55 +08:00
Wong Cho Ching
f34be7bf16 Create dummy files 2014-01-25 11:34:41 +08:00
Tobias Doerffel
89f5359ddc Merge pull request #138 from grejppi/stable-0.4-rdudr
another new demo song
2014-01-24 16:36:16 -08:00
Tobias Doerffel
e95d32ed67 Merge pull request #137 from Lukas-W/stable-0.4-iss130
Issue #130: Controllers Naming: Prevent duplicate names
2014-01-24 16:34:45 -08:00
Tobias Doerffel
ec45c381c3 Renamed instrument function classes and instances
Arpeggiator got InstrumentFunctionArpeggio and ChordCreator got
InstrumentFunctionNoteStacking. All related views and instances have
been renamed for better consistency.
2014-01-25 01:27:28 +01:00
Hannu Haahti
dc63bb28fd added a demo song and reorganized LICENSES.TXT alphabetically 2014-01-25 02:11:57 +02:00
Tobias Doerffel
c6b7ccd9f7 InstrumentFunctionViews: manage widgets using layouts 2014-01-25 01:10:47 +01:00
Tobias Doerffel
730ba403cd TempoSyncKnob, Knob: allow construction without parent 2014-01-25 01:10:25 +01:00
Tobias Doerffel
ddf63cb924 ComboBox: added sizeHint() + coding style 2014-01-25 01:10:09 +01:00
Tobias Doerffel
c12afd53d5 FileDialog: added music folder and working directory to sidebar 2014-01-25 00:05:16 +01:00
Tobias Doerffel
7b4aaa6dfa Merge pull request #98 from Lukas-W/stable-0.4-iss90
Update file open/save dialogs
2014-01-24 14:56:23 -08:00
Tobias Doerffel
84b3c5b8df Merge pull request #127 from wongcc966422/LFOBitinvaderVibedCustomWaveforms
Make LFO controller, Bit Invader and Vibed accept custom waveforms
2014-01-24 14:56:04 -08:00
Tobias Doerffel
e6338c9583 Merge pull request #125 from wongcc966422/timelineDoc
Loop marker: Changed tooltip text.
2014-01-24 14:54:31 -08:00
Lukas W
2aeecda9ad Controllers Naming: Prevent duplicate names
For this, iterate through all given names and use the next name that's available.
2014-01-24 23:54:21 +01:00
Tobias Doerffel
37b6393893 Merge pull request #132 from Lukas-W/stable-0.4
Update about window
2014-01-24 14:54:03 -08:00
Tobias Doerffel
9f39867256 Merge pull request #134 from Lukas-W/stable-0.4-travis
Set build type to RelWithDebInfo
2014-01-24 14:53:28 -08:00
Tobias Doerffel
2567dab873 Merge pull request #135 from Lukas-W/stable-0.4-iss106
Plugin browser: Sort plugins by display name
2014-01-24 14:51:12 -08:00
Tobias Doerffel
f0b4ec7120 Merge pull request #136 from unfa/stable-0.4
Added unfa-Static.mmpz to /data/projects/CoolSongs and updatet LICENSES....
2014-01-24 14:50:29 -08:00
unfa
5dd38f0685 Added unfa-Static.mmpz to /data/projects/CoolSongs and updatet LICENSES.txt file there. 2014-01-24 22:42:39 +01:00
Lukas W
4200662e98 Plugin browser: Sort plugins by display name 2014-01-24 22:38:11 +01:00
Lukas W
ac54fcdac2 Fix some warnings 2014-01-24 22:04:37 +01:00
Raine M. Ekman
67382654eb OpulenZ: added velocity & aftertouch, cleaned up some unneeded code 2014-01-24 22:37:36 +02:00
Lukas W
b1835c99d3 Travis: Set build mode to RelWithDebInfo
This may lead to build errors, as variables that are only used in asserts
will get optimized out and because of -Werror being set (unused variables).
2014-01-24 20:02:11 +01:00
Lukas W
da65f629e2 #67: Add list of all committers to about window 2014-01-24 19:28:18 +01:00
Lukas W
e94cec5ffc About window: Update copyright year to 2014 2014-01-24 19:28:18 +01:00
Lukas W
453290f1b9 About window: Make homepage link clickable 2014-01-24 19:28:18 +01:00
Wong Cho Ching
b7e6200433 Fixes Ghost Peak Controller Bug https://github.com/LMMS/lmms/issues/115 2014-01-25 01:56:44 +08:00
Raine M. Ekman
fc23839f6c Merge https://github.com/LMMS/lmms into stable-0.4 2014-01-24 17:49:03 +02:00
Raine M. Ekman
842d4ee74c Merge https://github.com/LMMS/lmms into stable-0.4
Conflicts:
	plugins/opl2/opl2instrument.cpp
2014-01-24 17:48:26 +02:00
Wong Cho Ching
9237a1d015 Tooltip: Changed tooltip text of LFOControllDialog of custom waveform 2014-01-24 23:10:18 +08:00
Wong Cho Ching
c45aafc748 Make LFO controller accept custom waveforms 2014-01-24 22:55:32 +08:00
Lukas W
84a6d0bf02 Add "Save as new version" action to project menu
Use Shortcut Ctrl+Alt+S. Part of issue #86
2014-01-24 15:45:13 +01:00
Lukas W
5c186eba0e Add new class VersionedSaveDialog
A file save dialog (inherits FileDialog) that provides buttons to
increment or decrement a version which is appended to the file name.
(e.g. "MyProject-01.mmpz")
2014-01-24 15:37:41 +01:00
Lukas W
2e7bfe17e6 Update code to use FileInfo instead of QFileInfo
Also removed all blocks similar to
```
#if QT_VERSION >= 0x040806
	filedialog.setOption( QFileDialog::DontUseCustomDirectoryIcons );
#endif
```
as this now takes place in the new subclass's constructor.
2014-01-24 15:37:41 +01:00
Lukas W
0bbfd907ae MainWindow: Moved FileDialog to own subclass 2014-01-24 15:37:26 +01:00
wongcc966422
b136eee573 Update timeline.cpp 2014-01-24 19:26:34 +08:00
Wong Cho Ching
3b8214bab8 Loop marker: Changed tooltip text. 2014-01-24 18:39:00 +08:00
Tobias Doerffel
9435cfd8b8 Merge pull request #122 from diizy/stable-0.4
Some UI stuff
2014-01-24 01:42:07 -08:00
Vesa
772491b9fb Revert knob dots, make knob arc use palette, remove bb-editor image... bye bye TR-808 :( 2014-01-24 01:58:51 +02:00
Vesa
34d67da5a1 Knob dots by Tobiasz 2014-01-24 01:23:26 +02:00
Tobias Doerffel
39922df115 EnvelopeAndLfoParameters: added center values for amount models 2014-01-24 00:16:32 +01:00
Tobias Doerffel
7c1baa016f Knob: draw arc + arc background for all unstyled knobs 2014-01-24 00:16:02 +01:00
Tobias Doerffel
e9347ade61 InstrumentTrack: set center values for pitch and panning 2014-01-23 23:36:32 +01:00
Tobias Doerffel
f2bfa3b4d2 Knob: draw arc around knob
Initial work on improved knob usability by drawing an arc around knob
indicating current state as well.
2014-01-23 23:35:44 +01:00
Tobias Doerffel
5540a356f7 AutomatableModel: added centerValue property
The optional centerValue property can be used by views to display the
center somehow. It defaults to minimum value.
2014-01-23 23:35:26 +01:00
Tobias Doerffel
4e69e05a7d Integrated new splash screen
Also removed ugly code for displaying translucent splash images.
2014-01-23 22:33:34 +01:00
Tobias Doerffel
a701b5f8f3 Merge pull request #114 from diizy/stable-0.4
Graphics update
2014-01-23 11:16:29 -08:00
Vesa
5ed8491c66 Icons. 2014-01-23 21:14:19 +02:00
Vesa
51fd06b837 More icons 2014-01-23 21:14:19 +02:00
Vesa
56bd9d300f Stylesheet, wrench icon, 3osc logo 2014-01-23 21:14:19 +02:00
Tobias Doerffel
df650c6298 Merge pull request #111 from grejppi/stable-0.4-pitchautomation
Increase detuning interval to 0.5 semitones
2014-01-23 10:59:07 -08:00
Andrew Kelley
f9c0f63bff add -Wno-strict-compare. closes #112 2014-01-23 13:56:28 -05:00
Hannu Haahti
e453b38d02 increase detuning interval to 0.5 semitones 2014-01-23 19:21:10 +02:00
Tobias Doerffel
031b93d830 Merge pull request #102 from LMMS/warnings
fix all warnings and add -Werror
2014-01-23 00:36:34 -08:00
Tobias Doerffel
243c441b6b Merge pull request #108 from groboclown/stable-0.4
Add "stutter" capability to the audio file processor.
2014-01-23 00:34:48 -08:00
Andrew Kelley
52d4f0fd3f fix all warnings and add -Werror 2014-01-22 22:09:36 -05:00
groboclown
b7b361414a Add "stutter" capability to the audio file processor. 2014-01-22 20:05:10 -06:00
Tobias Doerffel
3a53473d10 Timeline: use right click + shift to move left loop point
Moving the left loop point is now possible using right click + shift
instead of the middle mouse button (which is difficult on laptops).

Furthermore some coding style improvements.

Closes #81.
2014-01-22 23:15:53 +01:00
Tobias Doerffel
12149d5089 LedCheckBox: fixed label alignment
After switching to wide rectangular LED pixmaps and increasing the font
size we need to adjust aligment of label.
2014-01-22 23:02:51 +01:00
Tobias Doerffel
8ecaef1f30 InstrumentSoundShapingView: shorter label for filter frequency knob 2014-01-22 22:57:29 +01:00
Tobias Doerffel
68fd7edfd8 InstrumentTrack: shorter label for FX channel spinbox 2014-01-22 22:57:19 +01:00
Tobias Doerffel
aaad405f99 UI: increased font sizes
As texts were not readable on high resolution screens the font size for
many widgets has been changed.

Closes #82.
2014-01-22 22:55:20 +01:00
Tobias Doerffel
27fab982ec Merge pull request #104 from diizy/stable-0.4
Lots of UI stuff again
2014-01-22 13:09:20 -08:00
Tobias Doerffel
c8eccff4cd Merge pull request #103 from JohannesLorenz/stable-0.4
Fixes and improvements for FR 144 (SF version). Tested and working.
2014-01-22 13:05:07 -08:00
Tobias Doerffel
4ca85d8d87 AudioJack: replaced old Uint32 type 2014-01-22 22:03:56 +01:00
Tobias Doerffel
2dc02001b7 Instrument: also render sound for MIDI-based instruments when muted
In order to provide smooth muting functionality (i.e. immediate proper
sound when unmuting) always render audio buffers for MIDI-based
instruments. This is more important than potentially reduced CPU usage
while muted.

Closes #69.
2014-01-22 21:55:33 +01:00
Vesa
322e44f907 More new icons, triple osc artwork, scrollbars, etc. 2014-01-22 22:36:55 +02:00
Vesa
8a5e0ede01 More artwork updates. New LCD numbers, triple osc artwork, lots of icons, some colour changes. 2014-01-22 22:36:55 +02:00
Raine M. Ekman
9a9a867e7d Added pitch bend 2014-01-22 20:57:02 +02:00
Raine M. Ekman
110a5d85d6 Merge https://github.com/LMMS/lmms into stable-0.4
Conflicts:
	plugins/opl2/logo.png
2014-01-22 20:55:39 +02:00
Tobias Doerffel
3ff6d8499a Organic: fixed tooltips for knobs that do not need a unit
For some knobs it doesn't make sense to use a percentage sign as unit.

Thanks to Tobiasz Karoń for pointing out this issue.
2014-01-22 18:35:58 +01:00
Tobias Doerffel
42cc2fd18c Merge pull request #99 from Lukas-W/stable-0.4
Add Markdown Readme for display on GitHub
2014-01-22 09:07:02 -08:00
Lukas W
eadc829a2d Add Markdown Readme for display on GitHub [skip ci] 2014-01-22 17:54:37 +01:00
Lukas W
f073c6d11b Added two standard paths to file open/save dialog
In particular Desktop and Downloads have been added.
Also introduced a new function to create a file dialog
in order to prevent code duplication.
2014-01-22 17:52:02 +01:00
Johannes Lorenz
ebc111e7f7 Fixes and improvements for FR 144 (SF version). Tested and working. 2014-01-22 16:25:54 +01:00
Tobias Doerffel
03ab3a3b7d Merge pull request #77 from LMMS/smooth-knob
UI: smoother knobs
2014-01-21 15:19:40 -08:00
Tobias Doerffel
a6b3f2a123 ZynAddSubFX: fixed logical error
Fixed logical nonsense reported when compiling with -Wlogical-op

Closes #80.
2014-01-22 00:11:12 +01:00
Tobias Doerffel
b1a47db7d8 CMakeLists.txt: fixed shortcut names generated by NSIS installer
Use "LMMS" instead of "Linux MultiMedia Studio" as shortcut name. This
allows to search for LMMS in the start menu on Win32.

Closes #88.
2014-01-21 23:09:15 +01:00
Tobias Doerffel
d9203b2cbc PianoRoll: increase start key by one octave
When opening the Piano Roll for the first time and clicking on "A", you
would expect the same note that is previewed in the preview pane (A5),
but it is instead one octave lower (A4).

Fixed this by adusting INITIAL_START_KEY.

Closes #94.
2014-01-21 23:07:25 +01:00
Andrew Kelley
bd16700dd9 Merge pull request #95 from Lukas-W/stable-0.4-travis
Update .travis.yml: Install g++-multilib for VST
2014-01-21 12:19:26 -08:00
Lukas W
17ba5caeef Update .travis.yml: Install g++-multilib for VST 2014-01-21 20:29:42 +01:00
Tobias Doerffel
054abf79f7 Mixer: try PortAudio backend after SDL
As there were reports about problems with PortAudio try SDL backend first.

Closes #89.
2014-01-21 18:09:20 +01:00
Tobias Doerffel
6920de4f61 Merge pull request #79 from diizy/stable-0.4
More graphics
2014-01-21 09:07:00 -08:00
Tobias Doerffel
533bf39073 Merge pull request #93 from Lukas-W/stable-0.4-travis
Add .travis.yml for continuous integration
2014-01-21 09:05:41 -08:00
Lukas W
5b810474f9 Add .travis.yml for continuous integration 2014-01-21 18:01:41 +01:00
Vesa
4e7522194c Applying new colour palette 2014-01-21 17:38:05 +02:00
Vesa
ec65319869 gfx fixes 2014-01-21 14:59:45 +02:00
Vesa
db84c38cc9 More artwork updates 2014-01-21 11:16:55 +02:00
Vesa
53d3961647 New gfx for fx panel 2014-01-21 11:16:55 +02:00
Tobias Doerffel
419da0715b PeakControllerEffectControlDialog: fixed layouts 2014-01-21 00:11:30 +01:00
Andrew Kelley
15e85494bd UI: smoother knobs
This updates knobs to feel smoother and allow the user to have finer
control over the value of the knob by multiplying the mouse drag delta
by a smoothness factor.

Also since it is significantly easier to point the knob where you want
it, I removed the magnet effect. This can easily be put back in; try it
out and see what you think.
2014-01-20 18:04:50 -05:00
Andrew Kelley
9e5ed88d25 add CMakeLists.txt.user to .gitignore
This file is generated if you edit lmms with Qt Creator.
2014-01-20 18:03:57 -05:00
Tobias Doerffel
11e3e2b3a1 Default style: do not add extra borders and backgrounds to FX chain
The FX chain background should look consistently and not change with
various numbers of inserted effects. Also IMHO we don't need extra
frames here. The drop shadow for the effects should be fixed as well.
2014-01-20 23:58:44 +01:00
Tobias Doerffel
fbdf4eca40 Merge pull request #76 from diizy/stable-0.4
Another UI branch merge...?
2014-01-20 14:52:46 -08:00
Tobias Doerffel
9854ebc128 Note: create DetuningHelper objects on-demand
Instead of creating a DetuningHelper instance for every note (which sums
up to thousands of AutomationPatterns) create them on-demand when opening
automation editor or loading settings.
2014-01-20 23:37:45 +01:00
Vesa
fc61899c43 Slight colour tweak! 2014-01-21 00:37:27 +02:00
Tobias Doerffel
2bc8d12826 NotePlayHandle: only use detuning automation if it exists at all 2014-01-20 23:37:20 +01:00
Tobias Doerffel
80b8e91fd1 InlineAutomation: improved hasAutomation()
Pprevent saving inline automation if there's just one value which equals
value of model which is going to be saved anyways.
2014-01-20 23:34:46 +01:00
Tobias Doerffel
1aea884821 AutomationPattern: coding style 2014-01-20 23:31:34 +01:00
Vesa
8c881bb928 Layout & bg artwork for peak controller, matching bg artwork for lfo controller & bass booster 2014-01-21 00:28:37 +02:00
Tobias Doerffel
cc35373241 AutomationPattern: do not put initial value if model is at init value
There's no need to initialize an automation pattern with the value of the
model if it's default already. This fixes tons of dummy automation patterns
being saved for every note (as part of the note detuning feature).
2014-01-20 23:06:24 +01:00
Tobias Doerffel
1a99ed8e2f AutomatableModel: added isAtInitValue() 2014-01-20 23:05:45 +01:00
Vesa
d8367d7496 Oops! Missing parenthesis in knob.cpp :P 2014-01-20 23:59:50 +02:00
Vesa
f11ab7957b Effect panel & effect window style, new knob images, knobs use palette 2014-01-20 23:59:50 +02:00
Vesa
eb1b306da3 New style & gfx for master vol/pitch sliders, fx front panel artwork 2014-01-20 23:59:50 +02:00
Tobias Doerffel
67b99ac48f MMP: write to temporary file first and then rename
In order to avoid data loss because of full disks or other storage
failures write a temporary file first, rename current file to backup
file and rename temporary file to current file.

Closes #26.
2014-01-20 22:34:42 +01:00
Tobias Doerffel
f0d6d44545 AutomatableModel: renamed to controllerConnection() + coding style fixes
Renamed getControllerConnection() to controllerConnection().
2014-01-20 22:11:58 +01:00
Tobias Doerffel
7644d2c559 Revert "Revert "Extensions for peak controller. Fulfills request 144.""
Now that we solved the problem with wrong default values in newly
introduced models when loading older projects we can safely implement
the new PeakController features.

This reverts commit 9cb52ccf0d.
2014-01-20 21:28:10 +01:00
Tobias Doerffel
44d0e7a48f AutomatableModel: reset value to default if data is unavailable in loadSettings()
When loading older projects where a particular model did not exist and
thus did not save any data do not load the possibly invalid default data
but reset to default value of model.
2014-01-20 21:26:12 +01:00
Tobias Doerffel
f8a1ffccb0 EffectRackView: added layouts for widget management
Also tweaked overall appearance a bit so that we have less nested frames.
2014-01-20 00:09:58 +01:00
Tobias Doerffel
f326ae670a InstrumentMidiIOView: rebase all values in SpinBoxes to 1
To keep consistency rebase all displayed values to 1 like we had for
MIDI channel and program already.
2014-01-19 23:36:04 +01:00
Tobias Doerffel
a85ec65c19 LcdSpinBox: added displayOffset property
The new displayOffset property is an offset which is always added to the
value of model so we can display values in a user-friendly way if they
internally start at 0.
2014-01-19 23:35:18 +01:00
Tobias Doerffel
adfb85c15f InstrumentTrack: set minimum size for save settings button
Set minimum size of 32x32 pixels for an appropriate appearance.
2014-01-19 23:25:24 +01:00
Tobias Doerffel
bde8422d33 InstrumentMidiIOView: added layouts for widget management
Instead of manually moving and resizing widgets, manage this using
appropriate layouts.
2014-01-19 23:24:25 +01:00
Tobias Doerffel
ec5e9f16d5 Track: allow resizing TrackContentObjects to less than one bar
As per popular demand, allow resizing TrackContentObjects to less than
one bar if appropriate subclass supports it.
2014-01-19 22:58:32 +01:00
Tobias Doerffel
aeefec9ac3 Merge pull request #66 from diizy/stable-0.4
UI changes so far
2014-01-19 02:55:42 -08:00
Tobias Doerffel
91a98d07da Merge pull request #63 from Lukas-W/stable-0.4
Fix for #42: Make search path for plugins relative
2014-01-19 02:55:10 -08:00
Vesa
589a435b81 Fix lb302 text (Umcaruje) 2014-01-19 09:52:47 +02:00
Vesa
502e1f4bd7 LB302 artwork, tweaks to transport icons 2014-01-19 01:11:57 +02:00
Lukas W
7f602cd6c0 Fix for #42: Make search path for plugins relative
Makes the search path that is compiled into the lmms executable relative.
2014-01-18 21:31:20 +01:00
Vesa
c455981595 New simple transport button icons + some slight UI code tweaks 2014-01-18 20:53:15 +02:00
Tobias Doerffel
e2575fe0fe Merge pull request #58 from bhattigurjot/stable-0.4
[Patch] Save solo states for tracks
2014-01-18 08:41:23 -08:00
Gurjot Singh
c1d5730c30 save solo states for tracks 2014-01-18 22:02:26 +05:30
Vesa
12c5885445 Fader changes 2014-01-18 16:40:41 +02:00
Vesa
f35732b5a3 refactor... 2014-01-18 16:36:27 +02:00
Vesa
c894e0f68a LB302 artwork, OPL2 logo 2014-01-18 16:36:27 +02:00
Vesa
ab5ecfee8f Update to fx fader knob, changed fade_button (the blinky thing in instrument tracks) to comply with palette 2014-01-18 16:36:26 +02:00
Vesa
684326a1ff New graphics for FX faders, some stylesheet changes. The changes in fader.cpp are just colour changes 2014-01-18 16:36:26 +02:00
Vesa
9097993973 Trackoperations widgets, stylesheet changes, fix of the bug where palette goes all white if stylesheet has no palette 2014-01-18 16:36:26 +02:00
Tobias Doerffel
9cb52ccf0d Revert "Extensions for peak controller. Fulfills request 144."
The change breaks existing projects that use PeakController (i.e. they
sound completely different which is not acceptable) as there's no sane
default value for the new amount multiply model (why do we need it at all
BTW instead of just advancing the range of the existing amount model?) and
the changed math results in calculation of completely different RMS values.

This reverts commit 5e8dbb6157.
2014-01-18 14:01:26 +01:00
Tobias Doerffel
3841e05427 InstrumentTrack: added pitch range spinbox 2014-01-18 13:40:40 +01:00
Tobias Doerffel
1f52feae8a InstrumentTrackView: manage general settings widget using layouts 2014-01-18 13:38:35 +01:00
Tobias Doerffel
5726939697 InstrumentView: include QIcon header file
Otherwise implicit conversion fails when calling setWindowIcon().
2014-01-18 13:35:42 +01:00
Tobias Doerffel
68177a1fdc Vestige: remove additional compile flag
The git logs do not indicate why we need to set _FORTIFY_SOURCE, therefore
remove it in order to fix a compiler warning.
2014-01-18 11:56:49 +01:00
tobydox
f5f2b97eeb Merge pull request #56 from grejppi/stable-0.4-bb_usability
B&B editor: adding and removing steps
2014-01-18 02:55:10 -08:00
Tobias Doerffel
e65fe4b323 ZynAddSubFX/CMakeLists: fix Freetype2 detection for older versions 2014-01-18 11:52:40 +01:00
Tobias Doerffel
9748897a43 Fix build when building without SDL
Commit f2590c24df was incomplete and thus
LMMS failed to build when building without SDL support.
2014-01-18 11:39:58 +01:00
Tobias Doerffel
b10a254d12 VstBase: workaround for broken wineg++ in WINE 1.4 2014-01-18 11:33:28 +01:00
Tobias Doerffel
04602c93de CMakeLists: remove SVN cleanup from dist target
Fixes CMake warning as well.
2014-01-18 09:22:16 +01:00
Hannu Haahti
ae3273faf9 check track type first before adding or removing steps 2014-01-18 10:04:30 +02:00
Hannu Haahti
7e6642db4e add new steps to all tracks at once 2014-01-18 09:59:44 +02:00
Hannu Haahti
19dc1aa913 b&b editor: always add and remove so many steps as there are in one bar 2014-01-18 07:52:10 +02:00
Tobias Doerffel
f2590c24df Replaced [S/U]int[8/16/32] with types from stdint.h or plain integers 2014-01-18 02:56:38 +01:00
Tobias Doerffel
c521b2865e VstPlugin: use regular int for version property 2014-01-18 02:13:42 +01:00
Tobias Doerffel
a356fadb5b RemoteVstPlugin: use intptr_t for X11 window ID 2014-01-18 02:13:37 +01:00
tobydox
2f9ddeffd0 Merge pull request #53 from JohannesLorenz/stable-0.4
Extensions for peak controller. Fulfills request 144.
2014-01-17 16:42:51 -08:00
Raine M. Ekman
ce6dc80c9e OpulenZ: new logo, some refactoring. 2014-01-17 23:21:54 +02:00
Johannes Lorenz
5e8dbb6157 Extensions for peak controller. Fulfills request 144. 2014-01-17 20:47:03 +01:00
tobydox
ce50313b72 Merge pull request #44 from grejppi/stable-0.4-pitchautomation
Change default detuning type to linear
2014-01-17 11:07:00 -08:00
Tobias Doerffel
12939c24df InstrumentTrack: set range of FX channel model to infinite when loading settings
When loading a project, instrument tracks usually are instantiated/loaded
before the FX mixer settings are loaded which results in an empty FX mixer
and thus 0 FX channels. The actual FX channel value for the instrument track
would be lost that way. Therefore set a big value which is being corrected
later by the FxMixerView for all instruments.
2014-01-17 20:01:24 +01:00
Tobias Doerffel
c868d691ab Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
Conflicts:
	src/core/FxMixer.cpp
	src/gui/FxMixerView.cpp
2014-01-17 19:56:51 +01:00
Tobias Doerffel
dddf5eb61c FxMixer: ignore mute state in addChannelLeaf() to fix lockup
Even if we do not process the FX chain later, we at least have to enqueue
all related FX channels to the job queue in order to prevent a lockup.
2014-01-17 19:53:05 +01:00
Tobias Doerffel
4b5b0fa4fa FxMixer, FxMixerView: cache maximum peak until next display update
We lost short peaks because the display update rate usually is much lower
than the number of audio buffers processed per second which lead to lost
peaks. We mitigate this issue by caching the maximum peak value until the
next display update where it is reset.
2014-01-17 19:35:14 +01:00
Tobias Doerffel
dc1f9c6050 Merge branch 'stable-0.4' of github.com:LMMS/lmms into stable-0.4 2014-01-17 19:34:54 +01:00
Paul Giblock
218f478909 Merge pull request #45 from grejppi/stable-0.4-pianorollresize
Prevent piano roll window from being resized to 0px height
2014-01-17 07:47:00 -08:00
Hannu Haahti
bad3ed60df Prevent piano roll window from being resized to 0px height (http://sourceforge.net/p/lmms/patches/43/) 2014-01-17 15:44:43 +02:00
Hannu Haahti
6b2d6fe8d6 changed default detuning type to linear -- probably best for that purpose 2014-01-17 15:07:31 +02:00
tobydox
6d0c54443b Merge pull request #41 from grejppi/stable-0.4-pitchautomation
WIP: Pitch automation improvements in Piano Roll
2014-01-17 01:32:16 -08:00
Hannu Haahti
dfd5753032 draw discrete and linear differently 2014-01-17 10:46:52 +02:00
Hannu Haahti
3d0749ad67 points are shown in the correct scale 2014-01-17 09:50:30 +02:00
Hannu Haahti
a183fb2504 pitch automation in piano roll doesn't require first point to be 0 2014-01-17 09:49:35 +02:00
Tobias Doerffel
bbe686e290 LmmsStyle: adopted new coding style and renamed class 2014-01-16 23:45:54 +01:00
Tobias Doerffel
dffaa6abe0 LmmsStyle: initial port of scrollbar drawing code from CusisStyle
Colors still need to be made configurable via CSS and tuned for the
default theme.
2014-01-16 23:40:57 +01:00
Tobias Doerffel
abc3c8080f Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer 2014-01-16 23:08:04 +01:00
tobydox
2d4e769bd8 Merge pull request #38 from grejppi/stable-0.4-defaultpresetnames
"Default preset" is not descriptive; change it to the actual plugin name
2014-01-16 14:07:26 -08:00
tobydox
e7c24767bb Merge pull request #37 from Lukas-W/stable-0.4
ZynAddSubFX/FLTK: The last freetype fix, I promise.
2014-01-16 14:05:50 -08:00
Lukas W
79b31a9926 ZynAddSubFX/FLTK: The last freetype fix, I promise.
Using FREETYPE_INCLUDE_DIRS turned out to break the build as it is a list consisting of two paths.
During configuring, the list is then concatenated to "path1 path2". This makes cmake to think of the second path as the directory to configure.
Fixed by manually concatenating the strings with a ";" character.
2014-01-16 19:21:13 +01:00
Tobias Doerffel
ee9160c024 Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer 2014-01-16 18:25:39 +01:00
tobydox
0030486c82 Merge pull request #35 from softrabbit/stable-0.4
Make cancelling an export work immediately
2014-01-16 09:08:42 -08:00
tobydox
7f604dfd52 Merge pull request #36 from Lukas-W/stable-0.4
ZynAddSubFX/FLTK: Yet another fix for finding freetype
2014-01-16 09:07:56 -08:00
Lukas W
3a456cd1e3 ZynAddSubFX/FLTK: Yet another fix for finding freetype
Revert changes of commit 17babf6abc as commit 26665dde55 was complete indeed regarding the FIND_PACKAGE statement.
Add REQUIRED statement to FIND_PACKAGE(Freetype)
Use FREETYPE_INCLUDE_DIRS instead of FREETYPE_INCLUDE_DIR_freetype2 or FREETYPE_INCLUDE_DIR_ft2build
2014-01-16 17:55:55 +01:00
Hannu Haahti
5849157435 Changed "Default preset" to the actual plugin name 2014-01-16 18:11:03 +02:00
Raine M. Ekman
664f109cb5 Export dialog: Make cancelling an export work immediately 2014-01-16 17:33:07 +02:00
tobydox
c57664d6a8 Merge pull request #33 from grejppi/stable-0.4-pianorollsegfaultfix
fixed segfault in piano roll when no pattern is open
2014-01-16 06:26:13 -08:00
Hannu Haahti
4f0a73e9fa fixed segfault in piano roll when no pattern is open 2014-01-16 16:20:48 +02:00
Raine M. Ekman
a482c8101c Merge pull request #1 from LMMS/stable-0.4
pulling changes
2014-01-16 06:13:00 -08:00
tobydox
302a04f0ef Merge pull request #31 from grejppi/stable-0.4-displaywaveform
config option to enable waveform display by default
2014-01-16 04:58:48 -08:00
tobydox
f37e69a383 Merge pull request #30 from softrabbit/stable-0.4
PianoRoll: fix odd time signature issues (bugs 274 and 172 at SF)
2014-01-16 04:58:13 -08:00
Hannu Haahti
9fc64418bd config option to enable waveform display by default 2014-01-16 12:01:35 +02:00
Raine M. Ekman
50a49c52fe PianoRoll: fix odd time signature issues (bugs #274 and #172 at Sourceforge) 2014-01-16 07:55:54 +02:00
Tobias Doerffel
b4030478c3 AutomatableModelView: adopted new coding style 2014-01-16 00:01:47 +01:00
Tobias Doerffel
17c1ede50c AutomatableModelView/ContextMenu: option for unlinking all controls
Integrated patch by Rodrigo Rodrigues da Silva which adds an option
to all AutomatableModelView's context menu allowing to unlink all
linked controls.
2014-01-15 23:50:13 +01:00
Tobias Doerffel
17babf6abc ZynAddSubFX/FLTK: fixed detection of freetype2 include path once more
Commit 26665dde55 was not complete as we have
to find the Freetype package and also look for freetype2 include path.
2014-01-15 23:11:59 +01:00
Tobias Doerffel
6993eda404 Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
Conflicts:
	src/gui/FxMixerView.cpp
2014-01-15 22:59:49 +01:00
tobydox
4728fb425a Merge pull request #25 from diizy/stable-0.4-new-fx-mixer
Ported the FX mixer UI changes from stable-0.4
2014-01-15 13:20:21 -08:00
Vesa
037b977137 Ported the FX mixer UI changes from stable-0.4 2014-01-15 21:51:35 +02:00
tobydox
8e165bdbcf Merge pull request #24 from diizy/stable-0.4
Merge for now and let's fix things later.
2014-01-15 10:29:03 -08:00
Vesa
7d534eaabc Fixed typo :P 2014-01-15 20:24:08 +02:00
Vesa
cf2fb230a2 Stylesheet changes, added palette customizability, fx mixer obeys palette, etc... 2014-01-15 20:08:33 +02:00
tobydox
14e6b71150 Merge pull request #22 from Lukas-W/stable-0.4
Fix build problems: Find wine and freetype headers
2014-01-15 08:58:54 -08:00
Lukas W
22ca7acb81 Add FindWine module and use it in main CMakeLists.txt
Old CheckLibraryExists implementation didn't work on my system.
A find module should be better and also easier to maintain.
2014-01-15 17:17:29 +01:00
Lukas W
26665dde55 ZynAddSubFx: Fixed fltk not finding freetype header files.
In cases where the freetype headers are not in /usr/include, fltk wouldn't find ft2build.h.
2014-01-15 15:56:06 +01:00
Vesa
1b8e2b003b New led graphics, initial style sheet changes (work still in progress), other theme changes 2014-01-15 11:45:46 +02:00
Vesa
00346d5ec1 Final tweaks to SF2 artwork (based on feedback), moved chorus & reverb buttons a bit to fit them better with new artwork 2014-01-15 11:45:46 +02:00
Vesa
2b336d6cf4 New SF2 plugin artwork 2014-01-15 11:45:46 +02:00
Tobias Doerffel
31e712a675 PianoRoll: fixed typo leading to big white key at wrong position when pressed 2014-01-14 23:36:27 +01:00
Tobias Doerffel
df76921226 PianoRoll: always use the PianoModel for note on/off + other improvements 2014-01-14 23:34:49 +01:00
Tobias Doerffel
8c8763721c Piano: added optional velocity argument to handleKeyPress() 2014-01-14 23:34:03 +01:00
Tobias Doerffel
7dfaf2d44b Added volumeToMidi() helper function 2014-01-14 23:33:49 +01:00
Tobias Doerffel
7e4db63de5 PianoRoll: coding style improvements 2014-01-14 23:19:37 +01:00
Tobias Doerffel
c40b8350ef Piano: refactored class to be usable without friend classes 2014-01-14 23:12:43 +01:00
tobydox
340789c191 Merge pull request #17 from bhattigurjot/stable-0.4
PianoRoll: added support for pressed keys
2014-01-14 13:52:46 -08:00
Tobias Doerffel
dbb4a8e6ab FxMixerView: fixed clear()
Before calling refreshDisplay() we have to actually clear the backend model.
2014-01-14 18:18:59 +01:00
Tobias Doerffel
27b51c2508 Song: added missing refresh of FxMixerView when loading project
Missed this call when backporting.
2014-01-14 18:17:51 +01:00
Tobias Doerffel
5b480dd898 FxMixer: rewrote loop for adjusting FX channel models in deleteChannel() 2014-01-14 18:04:51 +01:00
Tobias Doerffel
af693c562c Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer 2014-01-14 18:02:13 +01:00
Tobias Doerffel
9a7ad0264f SampleBuffer, SamplePlayHandle, SampleRecordHandle, SampleTrack: new coding style
Renamed file and class names.
2014-01-14 18:01:14 +01:00
Tobias Doerffel
4e5507a30a TrackContainer, TrackContainerView: adopted coding style
Renamed file and class names.
2014-01-14 17:39:02 +01:00
Gurjot Singh
61ac073cc2 Merge branch 'stable-0.4' of https://github.com/bhattigurjot/lmms into stable-0.4 2014-01-14 22:02:50 +05:30
Gurjot Singh
d4a2e33bf5 adds piano_roll key presses 2014-01-14 21:58:43 +05:30
tobydox
7105c8ac90 Merge pull request #14 from diizy/fix32
SampleBuffer: fix import of 32-bit floating point samples
2014-01-14 00:30:39 -08:00
Vesa
79119149ef Fix import of 32-bit floating point samples 2014-01-14 03:32:33 +02:00
Tobias Doerffel
39f904117f DetectMachine.cmake: do not use lib64 as LIB_DIR anymore
Installing to $prefix/lib64 is not usual anymore and thus we change it here
to just install all libraries to $prefix/lib.
2014-01-12 18:20:32 +01:00
Tobias Doerffel
fc7cd1bd40 Song: use Kicker as default instrument in B+B-Editor
Using TripleOscillator as default instrument in B+B-Editor doesn't
make much sense so use Kicker instead.
2014-01-12 15:36:06 +01:00
Tobias Doerffel
e8190dc01e Merge remote-tracking branch 'ranft/notelabels-2' into stable-0.4 2014-01-09 23:23:34 +01:00
Tobias Doerffel
a955fb755a FxMixer, Mixer, FxMixerView: backported FX send support from master branch
There once have been huge efforts to implement FX send support in the
master branch. In order to make it available on a stable base here's
a backport which is non-trivial as there have been major rewrites of
the mixer's worker thread architecture.

There still seem to be bugs which we have to fix before merging into
stable branch.

Thanks to Andrew Kelley for the original work.
2014-01-08 23:21:41 +01:00
Tobias Doerffel
0ff1f91c1b Mixer: renamed class and file name
The mixer class is now named "Mixer" and accessible via engine::mixer().
2014-01-08 22:35:14 +01:00
Tobias Doerffel
40290117ff Song: fixed tracking of elapsed milliseconds
After merging play/pause button corrections there are a few other places
where we have to take care of m_elapsedMilliseconds.
2014-01-08 22:07:25 +01:00
Tobias Doerffel
9f35042e3e Mixer: use MixHelpers for mixing buffers of AudioPort 2014-01-08 22:01:33 +01:00
Tobias Doerffel
4a99b953b5 MixHelpers: helper functions for mixing buffers
Introduced central helper functions for mixing buffers in order to
reduce local loops all around LMMS.
2014-01-08 21:58:03 +01:00
Tobias Doerffel
6f7b6978bd FxMixerView: use LcdWidget for FX lines
We only need to display numbers in LCD style, therefore use new LcdWidget
class instead of LcdSpinBox.

Fixes display problems introduced in commit f568a81c7a.

Thanks to Vesa for pointing out this issue.
2014-01-08 00:27:50 +01:00
Tobias Doerffel
c9ea6a559d SongEditor: do not add extra spacing
In commit a73e8636eb we introduced an extra
spacing which is not neccessary and causes layout problems.

Thanks to Vesa for pointing out this issue.
2014-01-08 00:22:42 +01:00
Tobias Doerffel
3c1e3c17b4 TimeDisplayWidget: expand all LcdWidgets to 3 digits
Most songs have more than 99 bars and in some situations also more
than 99 ticks.

Thanks to Vesa for pointing out this issue.
2014-01-08 00:20:14 +01:00
Joel Muzzerall
6249b23f1f AutomationEditor: add option for smooth lines and curves
Besides discrete automation it's now possible to setup interpolation
modes such as linear and cubic-hermite.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2014-01-08 00:08:21 +01:00
Tobias Doerffel
4f9ec51d7a JournallingObject: header cleanups
No need to include various QtCore header files anymore. Fix resulting
missing headers in some other files.
2014-01-07 23:51:31 +01:00
Tobias Doerffel
4641a8001b JournallingObject, ProjectJournal: global checkpoint management
There's no need for having each JournallingObject maintain it's own
checkpoints and build a complex (and buggy) logic in ProjectJournal
in order to manage all the JournallingObject with their checkpoints.

Instead do it the simple way: in ProjectJournal maintain a stack for
undo checkpoints and a stack for redo checkpoints. On each undo or redo
operation simply push and pop to/from the according stacks and save
and load states of the concerned JournallingObject.

This basically strips most functionality from JournallingObject. All
what's left is the management of its ID which unluckily is still
required in order to properly implement undo/redo of additions and
removals of JournallingObject.
2014-01-07 23:50:27 +01:00
Tobias Doerffel
1f203a10f9 Widgets/Knob: only restore journalling state on release of left mouse button
Do not try to restore the journalling state of the underlying model when
releasing e.g the right mouse button as this causes a crash otherwise.
2014-01-07 23:49:07 +01:00
Tobias Doerffel
d0f6eaef3b PianoRoll: initial undo/redo support
Most editing operations in PianoRoll are now tracked by the revised
journalling and thus are included in global undo/redo.
2014-01-07 23:48:48 +01:00
Tobias Doerffel
a5c3cf6a99 Revised journalling (undo/redo) to record full states instead of changes
Recording single changes of objects or their specific properties is
completely superfluous as we have full implemented state tracking in all
objects already. Therefore use SerializingObject::saveState() and
SerializingObject::restoreState() in order to implement the undo/redo
functionality.

This is just an initial commit and needs some further work (especially
regarding stability). However even things like undo/redo of
addition/removal of Tracks and TrackContentObjects do work already.
2014-01-07 23:48:09 +01:00
Tobias Doerffel
ddad2da162 Merge remote-tracking branch 'origin/next' into stable-0.4 2014-01-07 23:24:26 +01:00
Mike Choi
d82227aefb Vestige: Path to VST plugins stored as relative, if opened from default VST plugin path
Path to VST plugin will be stored as relative, if plugin is opened
from default VST plugin path. Should remain compatible with project saves
from old releases or vice versa.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2014-01-07 23:11:02 +01:00
Raine M. Ekman
440da8ba15 OpulenZ: fixed export problems 2014-01-07 23:06:47 +01:00
Tobias Doerffel
c0c10cf9d8 Merge remote-tracking branch 'origin/stable-0.4-test' into stable-0.4
Conflicts:
	include/song.h
	src/core/song.cpp
2014-01-07 23:04:21 +01:00
Raine M. Ekman
8fa4866ff8 Added OpulenZ, an FM synth for LMMS
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2014-01-06 21:29:13 +01:00
Tobias Doerffel
90024c3699 LcdWidget: decreased spacing between text label and LCD label 2014-01-06 21:18:20 +01:00
Tobias Doerffel
a73e8636eb SongEditor: integrated new TimeDisplayWidget 2014-01-06 21:17:48 +01:00
Tobias Doerffel
8a4440936c TimeDisplayWidget: new widget for displaying current playback time
This new widget displays current playback times in LCD style. An initial
basic implementation has been provided by by Rubén Ibarra Pastor.
2014-01-06 21:15:28 +01:00
Tobias Doerffel
5cc2483958 Song: added functions to maintain playback time information
We now also maintain information about playback time in order to display
it later.

Most of the code provided by Rubén Ibarra Pastor <pastorrub/at/msn/dot/com>.
Further improvements by Raine M. Ekman <raine/at/iki/dot/fi>.
2014-01-06 20:46:46 +01:00
Tobias Doerffel
f568a81c7a LcdSpinBox: use LcdWidget as base class
We can now use the new LcdWidget class as base class for actually
displaying our model's values.
2014-01-06 20:40:28 +01:00
Tobias Doerffel
ec6c30549a LcdWidget: new class for displaying numbers in LCD style
Code based on LcdSpinBox implementation.
2014-01-06 20:39:50 +01:00
Tobias Doerffel
5c7b32cf51 AutomatableModelView: removed deprecated setValue() helper
The setValue() helper method dates back to when we introduced model/view
separation. It's not required anymore.
2014-01-06 20:38:24 +01:00
Tobias Doerffel
f17285581d EnvelopeAndLfoView: directly alter models instead of views
Do not make use of deprecated AutomatableModelView::setValue() method
anymore and alter the models directly instead.
2014-01-06 20:36:41 +01:00
Tobias Doerffel
87cf991c32 MidiAlsaSeq: protect concurrent sequencer accesses with mutex
The ALSA sequencer interface is not reentrant and thus we can't queue
MIDI events for output from different threads (which happens with multicore
rendering as processOutEvent() is being called by individual note play
handles). We therefore have to care that we don't call the ALSA sequencer
functions concurrently.

Thanks to Benjamin Kusch for providing a testcase.

Closes #531.
2013-11-20 23:54:31 +01:00
Ruediger Ranft
dc86474589 Added an option do en/disable the note labels. 2013-10-27 17:05:18 +01:00
Ruediger Ranft
11402b49b7 Refactoring: Calculate the size of the tab widget based on the number of items. 2013-10-27 16:41:18 +01:00
Ruediger Ranft
f63600b3fe Added the drawing of the note names. 2013-10-15 20:43:29 +02:00
Tobias Doerffel
e4d18e76d5 Added Galician localization files
Thanks to Xosé <xosecalvo/at/gmail/dot/com> for the contribution!
2013-09-13 23:46:22 +02:00
Tobias Doerffel
03931e8b17 Added Progressive House preset and demo project
Preset and demo project provided as public domain by
Salehen Shovon Rahman <salehen/dot/rahman/at/gmail/dot/com>.
2013-09-13 23:07:36 +02:00
Raine M. Ekman
d43eb46d81 PianoRoll: fix crash when trying to mark octave chord 2013-09-13 22:43:20 +02:00
Tobias Doerffel
7633affa20 Use new QFileDialog::DontUseCustomDirectoryIcons flag for faster file dialogs
In Qt 4.8.6 there's a new option QFileDialog::DontUseCustomDirectoryIcons
promising much better performance when there are many folders.

Closes #511.
2013-09-13 21:29:53 +02:00
Tobias Doerffel
3fce2dd666 ZynAddSubFx: finalize controller connections in toggleUI()
As controller connections are not fully restored via
AutomatableModel::loadSettings(), a call to
ControllerConnection::finalizeConnections() is neccessary to do so.
Normally this function is called at the end when loading a project but
when the user just toggles ZASF's UI settings are saved/loaded without
finalizing connections which results in connected knobs which are not
reacting to the controller they are connected to.

Closes #544.
2013-07-25 22:22:43 +02:00
Tobias Doerffel
05f1b45ab7 Made 0.4.15 release
Bumped version number to 0.4.15 in CMakeLists.txt, README and lmms.rc.in.
2013-06-11 17:46:42 +02:00
Tobias Doerffel
7eafca807b AudioFileWave: do not use UTF-8 filenames on Windows
As libsndfile does not seem to have an UTF8-compatible implementation
on Windows we have to pass the filename as local 8 bit encoding in order
to make the file written properly.

Closes #530.
2013-06-11 16:29:58 +02:00
Tobias Doerffel
0aaed00cc1 AutomationPattern: initialize with current value of first object
When attaching a control object to an AutomationPattern initialize the
value at position 0 with the current value of the control object.

This is similiar to the behaviour found in LMMS < 0.4.14 and has been
reintroduced as requested by some users.

Closes #535.
2013-06-11 14:50:51 +02:00
Tobias Doerffel
f83b9b04a3 AutomationPattern: removed unused member variable
The variable m_hasAutomation is not required anymore and thus can be
dropped.
2013-06-11 14:50:27 +02:00
Tobias Doerffel
005f2dde50 InstrumentFunctions/ChordCreator: fixed major pentatonic
The last key of the major pentatonic chord was wrong and has been fixed.

Thanks to Mike804 for reporting the issue.

Closes #538.
2013-06-11 13:48:58 +02:00
Tobias Doerffel
d4478461a3 AudioFileOgg: test for properly opened output file
Do not pretend things gone right if output file could not be opened
for some reason.

Closes #539.
2013-06-11 13:38:07 +02:00
Tobias Doerffel
4bdc94c608 AudioFileWave: test for properly opened output file
Do not pretend things gone right if output file could not be opened
for some reason.

Closes #539.
2013-06-11 13:37:07 +02:00
Tobias Doerffel
44c37775a4 Sf2Player: preserve custom track name when loading settings
Commit a184bc039e introduced a regression
which causes a custom track name not being preserved when loading
setings.

Closes #534.
2013-06-11 13:25:18 +02:00
Raine M. Ekman
8e2ec9e48f AudioFileProcessor: Make AFP cursor configurable
Add possibility to turn off playback cursor in AFP. Might be good
for weaker systems.

Closes Patch #40.
2013-06-11 13:19:00 +02:00
Raine M. Ekman
0f3851d597 AudioFileProcessor: fix crash with reversed samples
AudioFileProcessorWaveView::slideSampleByFrames() gets called before the
knobs are created and/or after they are destroyed if the sample is
reversed. Added checks for nonexistant knobs.

Closes Patch #41 and Bug #525.
2013-06-11 13:18:05 +02:00
Tobias Doerffel
e29de773b3 InstrumentTrack: fix freeze when forwarding MIDI events to instrument
In commit a3abcdb2e0 we introduced
multitimbral MIDI support. However the new code path causes the mixer
not being unlocked at exit and thus causes a freeze of LMMS.

Thanks to nuio for pointing out this issue and providing a patch.

Closes #532.
2013-05-01 21:51:37 +02:00
Paul Giblock
bedba617f4 Merge branch 'upgrade-preset' into next 2013-02-27 17:34:49 -05:00
Paul Giblock
b6b7cc11f5 Merge branch 'stable-0.4' into next 2013-02-27 17:34:21 -05:00
Tobias Doerffel
92ce4ad3da Made 0.4.14 release
Bumped version number to 0.4.14 in CMakeLists.txt, README and lmms.rc.in.
2013-02-27 22:29:42 +01:00
Tobias Doerffel
8bc7f8ce54 Updated chord and scale icon based on new note icons 2013-02-27 22:29:06 +01:00
Tobias Doerffel
fe35743ef0 Default theme: new graphics for note icons
Thanks to John Serafino <lzrblade/at/gmail/dot/com> for the creative work.
2013-02-27 22:13:52 +01:00
Tobias Doerffel
9268398626 AboutDialog: updated copyright year 2013-02-27 21:48:49 +01:00
Paul Giblock
867b13691d Add support for upgrading to standard output
Useful for me to initially import LMMS presets for use in lmms-lv2.
2013-02-27 15:46:48 -05:00
Paul Giblock
8bbbdacfcb Add support for upgrading presets
This is in addition to songs.  Simply use multimediaProject.  Don't
screw around with Song().  Also, needed to move creation of xml
preamble (processing instruction) due to duplicate entry when
doing a load/save.

Conflicts:
	src/core/main.cpp
2013-02-27 15:36:12 -05:00
Paul Giblock
b2dc6375b9 Update copyright date to 2013 in usage
Conflicts:
	src/core/main.cpp
2013-02-27 15:36:12 -05:00
Paul Giblock
e5b3975b12 Initialize line-drawer in AutomationEditor
Possible endless loop if these two state variables are not intialized.
Now a line will have the origin of (0,0) if drawn (shift-click) without
previously clicking on a starting spot.  Perhaps not the best fix, but
it works. And I think allowing this first line (instead of blocking it)
is better for the enabling the user to accidently discover the feature.

Conflicts:
	src/gui/AutomationEditor.cpp
2013-02-27 15:36:12 -05:00
NoiseByNorthwest
2375b7f0a0 Fixes #3604316: LMMS crashes using AudioFileProcessor
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-27 17:30:40 +01:00
Mike Choi
50c2242caa VST sync patch: compatibility fix for 64bit builds
It seems 64bit builds for some reason have problems with VST Sync feature on,
workaround seems to be converting VST sync patch from double to floats,
which does work both with 32 and 64bit builds. Double precision
seems to produce odd numbers with 64bit build. (tested on VirtualBox Linux
Mint 14.1 64 bit OS)
(cherry picked from commit 011f87e6e60cccd16f3783e9c4885e03d95c1e56)

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-27 17:29:00 +01:00
Mike Choi
0b39426953 VST Effects: Open each effect only once, when loaded from project file
Folowing change should ensure VST effect is opened just once, once
loaded from project file.

Double opening seems to trace back to commit 184ddc4d1c
from 2006, when this VST effect save / load feature was introduced as new.

Anyway VST effect parameters seems to load corectly in
VstEffectControls::loadSettings, from project file even without double
VST effect opening.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-09 12:35:01 +01:00
Mike Choi
7084ec0be6 VST Effects: preserve effect name after LMMS project reload
This patch will set plugin name (information which is not stored with lmms
project file) according plugin file, without *.dll, when is LMMS project
loaded from the file.

Future verion could maybe use PluginBrowser or EffectSellectDialog for the
same.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-09 12:34:53 +01:00
Mike Choi
0ef2997ece VST to host sync
This patch should bring VST to host synchronization for LMMS.
 (e.g. for plugins like dBlue Glitch, TAL Filters).

Synchronization is done via shared memory, missing song time
positions are reccalculated and added to PPQ position sync values
(SHM - common input interface for sync of all VST plugins)
2013-02-09 12:33:22 +01:00
Tobias Doerffel
7682bc6ef9 Song: added h2song file extension to file import dialog
After we added the HydrogenImport plugin we should also change the
file import dialog such that the user can chose h2song files.
2013-02-09 12:29:45 +01:00
Frank Mather
0acfff036f Added HydrogenImport plugin
This is a new plugin that imports hydrogen drum machine songs.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-09 12:29:34 +01:00
Tobias Doerffel
26625b137f InstrumentTrack: do not evaluate realOutputChannel() for the time being
When deciding whether to forward a MIDI event directly to the instrument
plugin do not evaluate realOutputChannel() for the time being as it is
ranged from 0 to 15 and has no don't-care-state like the input channel.

This is a workaround - we need a better solution here.
2013-01-23 23:26:23 +01:00
Tobias Doerffel
a3abcdb2e0 InstrumentTrack: directly forward MIDI events under special circumstances
In the special case that a MIDI event comes from a MIDI port, the
instrument is MIDI based (VST plugin, Sf2Player etc.) and the user did
not set dedicated MIDI output channel, directly forward the MIDI event
to the instrument plugin so properties such as MIDI channels are kept.

Based on patch by nuio <numa_shsk/at/mail/dot/goo/dot/ne/dot/jp>, 2013-01-20
2013-01-23 23:12:04 +01:00
Tobias Doerffel
2327581da7 MidiPort: coding style fixes 2013-01-23 23:11:47 +01:00
Tobias Doerffel
8a6aecfbdc MidiPort: set fromMidiPort-flag of MidiEvent instances
This completes the functionality introduced with commit
edf93d04cb.

Based on patch by nuio <numa_shsk/at/mail/dot/goo/dot/ne/dot/jp>, 2013-01-20
2013-01-23 23:10:13 +01:00
Tobias Doerffel
edf93d04cb Midi: added new property fromMidiPort
This new property is going to signal whether a specific event comes from
a MIDI port is was generated internally.

Based on patch by nuio <numa_shsk/at/mail/dot/goo/dot/ne/dot/jp>, 2013-01-20
2013-01-23 23:08:03 +01:00
Mike Choi
c1a2c6b1fa VST effects: secure master channel freezing
Master channel keeps freezing, when VST effects are placed directly
into Master channels FxChain, on slower computers.

Provided solution prolongs VST initialisation phase, by waiting on two extra messages,
which usually follows initialisation and are possibly not yet implemented well.

IdSampleRateInformation,
IdBufferSizeInformation

This seems to prevent Master channel freezes e.g. on VST effects like Tiny-Q.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-23 22:46:16 +01:00
Mike Choi
32e9ddc6e4 VST effect control window re-design
New outlook for VST effect control window

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-23 22:45:20 +01:00
Mike Choi
1c9c76f399 VST GUI fixes, improvements
Various fixes improvements:

+ Added support for VST parameters control for windows.
+ New `Close` button for VST parameter controls.
+ Faster GUI for all instruments, effects-loading, not only VSTs,
  and both one-instrument track window mode and normal window
  mode should be supported.
+ Better integration for VST GUIs on Linux, e.g. plugin window
  should not stay always on top of other windows.
+ VST GUI overlook should remain same with different wine setups
  ( except for whole virtual desktops emulations ).
+ VST effect control window merged with VST effect editor window
  should be more easier to control.
+ Little corections at effectviews model updates of instrument
  tracks effect chains.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-16 23:52:04 +01:00
Tobias Doerffel
a184bc039e Sf2Player: update track name after loading file
For consistent behaviour with other plugins such as AudioFileProcessor
and ZynAddSubFX update the track name after loading a file.
2013-01-14 23:13:21 +01:00
Tobias Doerffel
071358bd98 PixmapButton: added parentheses to fix ambiguity
Fixes compiler warning.
2013-01-14 23:06:02 +01:00
Tobias Doerffel
d943182a6c ZynAddSubFX: increased polyphony to 128
It occured to me that ZASF reported polyphony overflows when using it
in combination with LMMS' arpeggio and chord functionality.
2013-01-13 19:07:12 +01:00
Mike Choi
b784d3daf0 VST Effects: fix for uncontrollable plugin window
Supposed fix for 3595560, see also
http://sourceforge.net/apps/phpbb/lmms/viewtopic.php?f=7&t=778
http://sourceforge.net/tracker/?func=detail&aid=3595560&group_id=105168&atid=640434

VST effects pluginWidget is not deleted, when we close General Settings of instrument track,
on which are directly attached VST effects, but only when we remove this VST effects or tracks itself.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-13 18:56:47 +01:00
Tobias Doerffel
99efe8aef3 LocalZynAddSubFx: include/forward MIDI channel information
When sending MIDI events to the ZynAddSubFX engine do not statically
send them on channel 0 but on the MIDI channel which is set as output
MIDI channel of the instrument track. This adds some flexibility when
it comes to multipart ZynAddSubFX presets which are connected to
different MIDI channels.
2013-01-13 18:48:35 +01:00
Tobias Doerffel
6940ceca44 InstrumentFunctions: added natural minor scale
A natural minor scale was missing which lead to some irritations about
the harmonic and melodic minor scales. Had to add the new scale at the
end of the chord table in order to not break existing projects and
presets in which simple chord table indices are saved.

Closes #3594824.
2013-01-13 18:13:18 +01:00
Tobias Doerffel
4a1642abc7 InstrumentFunctions/ChordCreator: fixed wrong 6add9 chord
Various seventh chords were wrong and have been fixed.

Thanks to Mike804 for pointing out issues with some chords.

Closes #3600618.
2013-01-13 17:45:51 +01:00
Tobias Doerffel
1a981f50c8 InstrumentFunctions/ChordCreator: fixed wrong 6add9 chord
The 6add9 played a normal major chord which is wrong and has been fixed.

Thanks to Mike804 for reporting this bug.

Closes #3600618.
2013-01-13 16:57:35 +01:00
Tobias Doerffel
128d94b261 German localization: fixed wrong chord name translation
The chord name 6add9 should stay 6add9.
2013-01-13 16:56:49 +01:00
Tobias Doerffel
27e2b5e4ea BbTrack: fixed openInBBEditor() to reliably show the BB Editor
Use the function provided by MainWindow to reliably show the BB Editor.

Thanks to Tres Finocchiaro for pointing out this issue.
2013-01-07 22:07:52 +01:00
Tobias Doerffel
e3e2e48b71 MainWindow: pass optional parameter to toggleWindow() to force showing window
There are use cases where we want to force to show a certain window.
2013-01-07 22:06:37 +01:00
Raine M. Ekman
9ec7613678 InstrumentTrack: Add support for more MIDI commands
MIDI commands All Notes Off, All Sound Off and Omni/Mono/Poly mode will
now silence all playing notes, as they should.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-07 21:14:04 +01:00
Raine M. Ekman
174037c31a ExportProjectDialog: fix static file extension on multitrack export
When using the multitrack export feature the output files always had
the extension ".wav", even if exported as OGG. This patch fixes this
issue.

Closes #3595157.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-07 20:28:15 +01:00
Tobias Doerffel
59300906d7 AutomationEditor: fixed drawing of empty automation patterns
Due to recent changes to AutomationPattern the inner draw loop needs
to be adjusted.
2013-01-07 00:36:43 +01:00
Tobias Doerffel
80106138c8 AutomationPattern: removed magic value at position zero
In automation patterns there always had to be a value at position zero
which also had a special semantic concerning the initial values of
connected objects. However that logic was buggy and confusing.
I therefore completely removed the neccessity for a value at position
zero (automated value will be 0 until the first set point).
2013-01-07 00:36:27 +01:00
Tobias Doerffel
99091e9ce3 AutomatableModelView: added context menu action for removing song-global automation
Up to now there was no possibility to remove song-global automation from
a control once created. Overcome this issue by adding an according action
in the context menu of all AutomatableModelView instances.
2013-01-06 23:42:33 +01:00
Tobias Doerffel
1612a25349 ExportProjectDialog: fixed broken cancel button
The cancel button functionality was lost during introduction of the
multi track export functionality.

Closes #3598342.
2013-01-06 23:13:59 +01:00
Mike Choi
b9c926dabd VST parametr control window: window title as trackname
Window title for VSTi parameter controlling window should be set according to
actual track name, not from VST plugin name as its now, it is hard to get to know
which window belongs to where when same plugin is e.g. opened several times, so
with the same name. Now this is handled in paint event, but TBD whenever is
that track name changed. tbd, temporary solution.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:02:08 +01:00
Mike Choi
f4cc037321 VST Control: Right window title for parameter manual edit
When you double-click on some knob to change its VST parameter value
manually, new dialog window now has same title as what was that knobs
name. (instead of "lmms" title string)

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:01:52 +01:00
Mike Choi
5b6fa164e7 VST Automation: Filter for automated parameters
Filter to display only automated / all knobs (new button) on LMMS VST parametr control window.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:01:27 +01:00
Mike Choi
ba03b70457 State of VST controls in LMMS control wrapper is reloaded after Save/Load, from plugins state
After project save/load unsaved VST control parameters in LMMS VST control wrapper are not set to zero now, but reloaded according plugins saved state.

No need to sync values manualy again, after project save, load.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:01:13 +01:00
Mike Choi
e8bdc7b3c1 VST Automation: Sync button fix
Only not automated values are synced from VST plugin, no need to sync already automated values.

Synced values are now not trackable with undo / redo, before all changes were tracked individualy,
but user could lose ability to undo easily changes before sync buton was pressed.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:59:47 +01:00
Mike Choi
c2e9918c8a VST Automation: crash prevention
Fixed destuctors for various types of VST automation panel removal.

Automated signals correct disconection on panel removal.

When you load new VST plugin in the place of old one, while automation
is already connected and active there, this should not result in LMMS crash
or reuse of that old automation connections and automation window destructor
should not leave zombie VST plugins on application exit.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:59:40 +01:00
Mike Choi
3cc01560be VST Automation: lock prevention
src/core/RemotePlugin.cpp @ RemotePlugin::process

Above function should be now more thread safe, but functionality remains.
This prevent lmms locks, when automation is connected to lmms VST plugin wrappers controler / knob on Linux.
On win32 build whenever is lmms wrapper parameter controler / knob  amended.

plugins/vst_base/VstPlugin.cpp @ VstPlugin::setParam
plugins/vst_base/RemoteVstPlugin.cpp @ RemoteVstPlugin::processMessage

In above functions we dont wait for message confirmation when parameter setter function finish, and dont send such confirmations.
This workaround prevent locks on Linux, whenever there is automation connected and if you try to move with VST plugin
(not via lmms plugins wrapper, but with VSTs internal window) than it freezes, on win32 build it will freeze whenever you connect
automation and than if you move your mouse above this VST plugin window.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:57:45 +01:00
NoiseByNorthwest
2960f67beb AudioFileProcessor: fixed crash for samples with zero length
This is a fix for #3598536.

Closes #3598536.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:53:59 +01:00
Tobias Doerffel
716146848c ZynAddSubFx: when loading a preset set preset name as track name
Based upon the suggestion of Tres Finocchiaro we use the filename of a
ZASF preset for determining the preset name and set it as track name.
2013-01-06 22:48:41 +01:00
Tobias Doerffel
dcf7245fe8 Presets: fixed track names to reflect actual preset names
Thanks to Tres Finocchiaro for pointing out this issue and many thanks
to Mike Choi for providing a helper script for automatically fixing
the preset files.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:41:19 +01:00
Paul Giblock
750b01500b Add .gitignore and .gitattributes 2012-12-18 21:57:40 -05:00
Paul Giblock
487335a4ec Fix drag-drop for buttonGroups
Previously a boolean model would be dragged when Ctrl-Dragging on a
button belonging to a button group.  This fix causes the integer-model
of the group to be dragged instead.

The original behavior would allow the user to toggle multiple values
simultaneously by using several automation tracks.  Plus, I would think
this new behavior is more convenient.

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1968 0778d3d1-df1d-0410-868b-ea421aaaa00d

Conflicts:
	ChangeLog.old
	src/gui/widgets/automatable_button.cpp
2012-12-18 21:25:30 -05:00
Paul Giblock
642aa97198 Attempt to fix caching bug in track backgrounds
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1933 0778d3d1-df1d-0410-868b-ea421aaaa00d

Conflicts:
	ChangeLog.old
	src/core/track.cpp
2012-12-18 20:59:22 -05:00
Tobias Doerffel
70304f9800 Release candidate 1 for 0.4.14
Bumped version number to 0.4.14-rc1 in CMakeLists.txt.
2012-12-10 21:28:25 +01:00
Tobias Doerffel
639763dbb2 FxMixerView: do not set size constraint on parent MDI window
As reported by Mikobuntu on 2012-12-06 there's a problem when minimizing
the FX mixer window. The problem disappears when not setting a size
constraint on the mixer's MDI window.
2012-12-09 17:29:14 +01:00
Tobias Doerffel
c27c321778 RemotePlugin: increased SHM_FIFO_SIZE again
As there are plugins whose parameter dumps are bigger than 64 KB
increased SHM_FIFO_SIZE to 512 KB.
2012-12-09 17:25:59 +01:00
Tobias Doerffel
60017ae6e3 RemoteVstPlugin: decreased locking overhead in getParameterDump() 2012-12-03 00:07:56 +01:00
Tobias Doerffel
890a8a4ba9 RemoteVstPlugin: new method pluginDispatchNoLocking() 2012-12-03 00:07:32 +01:00
Tobias Doerffel
3bad03d56e RemotePlugin: improved management of shared memory keys 2012-12-03 00:06:25 +01:00
Tobias Doerffel
efe3b47810 RemotePlugin: return number of bytes sent in sendMessage() 2012-12-03 00:05:57 +01:00
Tobias Doerffel
a00a922119 RemotePlugin: smaller buffers for printing numbers 2012-12-03 00:05:36 +01:00
Tobias Doerffel
fdea64c0d6 RemotePlugin: more sanity checks 2012-12-03 00:05:06 +01:00
Tobias Doerffel
f28601db5d RemoteVstPlugin: less verbose debug message 2012-12-02 22:09:28 +01:00
Tobias Doerffel
5f298c0c48 RemoteVstPlugin: coding style fixes 2012-12-02 22:09:15 +01:00
Tobias Doerffel
ef68156c71 RemoteVstPlugin: compile with -O3 as otherwise incorrect code is generated
There seems to be a bug in current MinGW GCC which leads to incorrect
code (crash for no obvious reason) in RemoteVstPlugin process.
2012-12-02 22:09:06 +01:00
Tobias Doerffel
e864c8057a DrumSynth: removed unused variable 2012-12-02 19:04:45 +01:00
Tobias Doerffel
2cac30f495 RemoteVstPlugin: use size_t for loop index to fix compiler warning 2012-12-02 19:01:37 +01:00
Tobias Doerffel
c4e29da412 RemoteVstPlugin: fixed out-of-bound array access 2012-12-02 19:01:09 +01:00
Tobias Doerffel
40a92d8417 FlpImport/unrtf: renamed malloc.h to ur_malloc.h for not conflicting with system headers 2012-12-02 19:00:06 +01:00
Tobias Doerffel
8a75c40fd6 Widgets/Fader: open input dialog on double click
There have been requests to have an input dialog when double clicking
the fader (like we have it for knobs for ages already).

Closes #3588157.
2012-11-28 00:10:11 +01:00
Tobias Doerffel
8db0d0b0fa Widgets/Fader: improved usability by not jumping to mouse click position
The previous behaviour was very annoying because starting to drag the
knob almost always resulted in a value change. This has been changed
by a rewritten logic for mouse click and move behaviour.

Closes #3588157.
2012-11-28 00:07:56 +01:00
Tobias Doerffel
3739ef82c6 Widgets/Fader: generic knob drawing code
Instead of hard-coding pixmap sizes, calculate everything dynamically.
2012-11-27 23:58:10 +01:00
Tobias Doerffel
3b72f1e9d9 Widgets/Fader: increment/decrement by 1 via scroll wheel
As per popular demand, incrementing/decrement fader value by 1 instead
of 5 when using the scroll wheel.
2012-11-27 23:36:42 +01:00
Tobias Doerffel
0dc2060ea2 ExportProjectDialog: fixed non-multi-track export once more
There was another bug causing LMMS to crash when using regular export
feature.

Thanks to Mikobuntu for reporting this bug.
2012-11-27 23:29:55 +01:00
Jens Lang
da87fd4e55 RemotePlugin: use atomic operation for lock
Use GCC's builtin atomic add/subtract operation for incrementing/
decrementing the recursive lock variable. This is needed to avoid race
conditions and is much faster than using mutexes etc.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-26 22:59:02 +01:00
Tobias Doerffel
6817631c91 RemoteVstPlugin: more locking, range checking etc. 2012-11-26 20:49:31 +01:00
Tobias Doerffel
e43f34914f RemoteVstPlugin: renamed presetName() to programName() 2012-11-26 20:23:41 +01:00
Tobias Doerffel
bdaedcdf86 VstPlugin, RemoteVstPlugin: update program name via new idle update messages
Introduced new idle update messages for exchanging data periodically but
not inferring audio processing.
2012-11-26 20:16:06 +01:00
Tobias Doerffel
9d610e5108 RemoteVstPlugin: use pluginDispatch() everywhere for thread safety
Calling plugin dispatcher without lock is potentially dangerous.
2012-11-26 20:00:55 +01:00
Tobias Doerffel
533f086600 AutomatableModel: initialize m_value and m_initValue in constructor
Even though we call setInitValue() in AutomatableModel constructor,
initialize according class members before.
2012-11-26 19:48:37 +01:00
Tobias Doerffel
0d80f0c569 VstPlugin, RemoteVstPlugin: save/restore current program of VST plugin
Not all plugins save current program in their chunk (or do not restore
it properly). We therefore have to save and restore the current program
manually.

Closes #3581879.
2012-11-26 19:30:26 +01:00
Tobias Doerffel
56b07e29c2 RemoteVstPlugin: send updates of current program name if changed
Send current program name back to host if current program has changed.
2012-11-26 19:18:20 +01:00
Tobias Doerffel
1b7ae1f7a9 RemotePlugin, VstPlugin: reorganized and partly rewrote program/preset related functions
The code for managing programs/presets of RemotePlugin instances was
very confusing, mainly within the VstPlugin and RemoteVstPlugin class.
I therefore started to reorganize and rewrite functions.
2012-11-26 19:18:07 +01:00
Kristi
59732b05ed ExportProjectDialog: added option for exporting song as loop (backport)
This patch adds the option to remove the extra silence at the end,
so that the exported song can be seamlessly looped.

This is a backport of commit 8f1657164a.

Closes #3588890.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-25 12:01:15 +01:00
Tobias Doerffel
9e08849d63 ExportProjectDialog: fixed crash when exporting whole project as one track
We have to use the new semantics of the ProjectRenderer management when
exporting the whole project as one track as well. Otherwise the program
crashed as it tried to utilize the ProjectRenderer instance twice.
2012-11-25 11:47:18 +01:00
Tobias Doerffel
4a962c58d9 ExportProjectDialog: coding style fixes 2012-11-25 11:46:40 +01:00
Tobias Doerffel
3be675ac7b Vestige: send NoteOff events for all possible MIDI keys
In VestigeInstrumentView::noteOffAll() do not only send MIDI NoteOff
events for all LMMS keys but for the whole range of MIDI keys.
2012-11-11 23:40:48 +01:00
Tobias Doerffel
3842cb3d61 RemoteVstPlugin: fixed too short arrays for preset names
The dimension of preset name arrays was too small. Fixed this
by raising it from 30 to 64 characters.
2012-11-11 23:13:01 +01:00
Tobias Doerffel
295dd63b0e SetupDialog: turn off auto save per default
Due to various bug reports, I think we should turn off auto save per
default. Users who want this feature can turn it on explicitely (and
live with problems when they have big projects).
2012-11-11 22:55:38 +01:00
Tobias Doerffel
3a1c117a37 CMakeLists: make fftw3 a requirement and not optional anymore
We have too many components in LMMS relying on FFTW3. Building LMMS
without them cripples LMMS' functionality substantially, so simply
make fftw3 a requirement.

Closes #3495736.
2012-11-11 22:42:04 +01:00
Tobias Doerffel
d3d6d65836 Track: do not load height information if greater than default height
This is a workaround for issue #3585927. Once we found the source of
this issue, we can revert this commit.
2012-11-11 22:17:11 +01:00
Tobias Doerffel
c9d5c1dd06 Track: coding style fixes 2012-11-11 22:11:49 +01:00
Tobias Doerffel
37651dad20 AudioPort: made destructor virtual
It is recommended to make destructors virtual if the class is
polymorphic.
2012-11-11 19:45:24 +01:00
Tobias Doerffel
c39512403b InstrumentTrack, NotePlayHandled: added initial sustain pedal support 2012-11-11 19:39:27 +01:00
Tobias Doerffel
aae89e186c MidiEvent: added controllerNumber() and controllerValue() 2012-11-11 19:39:01 +01:00
Tobias Doerffel
b998ef6e13 Midi: added more controller related constants 2012-11-11 19:38:11 +01:00
Raine M. Ekman
3aa03da5af InstrumentMidiIOView: added support for fixed output notes
It came to me that having LMMS output one fixed note from a track could
be useful for controlling drum machines or something like that, so here's
a new spinbox for the MIDI tab.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-10 12:50:56 +01:00
Tobias Doerffel
6f7572b949 PianoView: do not include Xlib.h header file anymore
This file is a relict from times when we evaluated X11 events for the
virtual keyboard functionality.
2012-11-10 12:28:36 +01:00
Raine M. Ekman
3a59fdea58 InstrumentMidiIOView: fix number of digits for MIDI channel spinboxes
MIDI channels are in range 1 to 16, so there's no need for 3 digits
here.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-10 12:17:28 +01:00
Tobias Doerffel
075b7b354a ExportProjectDialog: remove obsolete header
No need for iostream header in LMMS.
2012-11-03 19:38:50 +01:00
Tobias Doerffel
2c3e7483aa MainWindow: fixed ambiguous hotkey for export operations
The new export operation had the same hotkey as the classical one. This
is not a good idea and is now fixed.
2012-11-03 19:37:28 +01:00
devin
929b44f14b Added individual BB tracks to multi export
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-03 19:37:16 +01:00
Devin Venable
eb60d9e06e Added multiple track export feature.
Here is the patchset for my multiple track export feature. It works now
the way I originally envisioned.

For example, after I export tracks on my little song, I see this in the
directory I created:

devin@devin-studio:~/lmms/projects/fff$ ls
0_Defaultpreset.wav  3_Defaultpreset.wav      6_csidSouwav.wav
1_Defaultpreset.wav  4_spacenoiseswavwav.wav  7_HHOPENwav.wav
2_Defaultpreset.wav  5_csidkickwav.wav        8_HHOPENwav.wav

Each instrument or sample track is exported individually, regardless of
whether in its own song track or playing as part of a BB track. The
name is taken from either the song track name or from the BB track name.
My goal was to get the tracks individually exported, so that I could
combine them with other tracks in Ardour.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-03 19:28:40 +01:00
Raine M. Ekman
69947a624b Track: allow smaller height
Here's one way to cram more stuff onto small screens, or otherwise help
reducing visual clutter: Allow tracks to be shift-dragged all the way
down to 8 px height.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-01 21:36:31 +01:00
Tobias Doerffel
e7605ea045 Localizations: renamed ir.* to fa.* for ISO 639 conformance
As proposed by Octosquidopus renamed translation files containing
Farsi translations from ir.* to fa.*
2012-10-27 23:01:37 +02:00
Tobias Doerffel
95e1ef1c78 InstrumentTrack: show FX mixer when double clicking FX line LCD spinbox
As proposed by Danil <baza-nsk@ya.ru> on 2012-03-12.
2012-10-27 22:50:16 +02:00
Tobias Doerffel
c1368ddb1a SetupDialog: added option for disabling auto save feature
As requested by various users, it should be configurable whether the
auto save feature is active or not.
2012-10-27 22:45:59 +02:00
NoiseByNorthwest
d448e6743d Ergonomic enhancements for AudioFileProcessor plugin (interactive wave view).
This patch includes:
* sampleBuffer::visualise(): add possibility to specified a range to visualize instead of the whole sample
* add sampleBuffer::sampleRate() and sampleBuffer::sampleLength() getters
* definition of AudioFileProcessorWaveView and AudioFileProcessorWaveView::knob classes for AudioFileProcessor plugin
* knob::getValue() specified “virtual” to allow redefinition in child class  AudioFileProcessorWaveView::knob
* delete audioFileKnob class (made obsolete by AudioFileProcessorWaveView::knob)
* add audioFileProcessor::isPlaying() signal, which is emitted in audioFileProcessor::playNote
* change type of AudioFileProcessorView::m_startKnob and AudioFileProcessorView::m_endKnob (AudioFileProcessorWaveView::knob instead of audioFileKnob)
* replace AudioFileProcessorView::m_graph (QPixmap) by AudioFileProcessorView::m_waveView (AudioFileProcessorWaveView)

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-10-27 22:32:09 +02:00
Tobias Doerffel
ad3af97798 MidiClientRaw: fixed parsing of MIDI events
A break was missing in the function where MIDI events are generated from
raw MIDI data. This always has been broken as of commit d188056683
but was not observed as the code for all switch-cases has been identical.
2012-10-27 22:22:23 +02:00
Jesse Dubay
4ba4d8b4e0 ControllerConnectionDialog: fix crash on autodetect when using raw MIDI client 2012-10-27 22:17:13 +02:00
Tobias Doerffel
370ff26c2b LocalZynAddSubFx: added missing header include
ZASF fails to build with GCC 4.7 due to missing header include.

Thanks to Alexander Liebendorfer for pointing out the issue.
2012-10-27 22:01:08 +02:00
Raine M. Ekman
04c1a0906f AutomationEditor: show tooltip with exact value
Added tooltip telling the exact value under the cursor when editing
automation.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-05-20 19:01:21 +02:00
Tobias Doerffel
8b66dfc860 ZynAddSubFX: fixed possible buffer overflow
bankdir could be overflowed in the strncat function since the length
limit is not correctly specified.

Closes #3510466.
2012-05-20 18:55:30 +02:00
Raine M. Ekman
02db2fbd2f Piano roll: fix scale marking algorithm and improve rendering
A patch to fix the scale marking algorithm and possibly improve on the
looks

Closes #3493928.
2012-05-20 18:50:27 +02:00
Alexandre Almeida
c60e7ba8d1 Song, SongEditor, BB-Editor, Piano-Roll: correction of play button problems
Initial implementation of corrected play buttons in individual editor
windows.
2012-05-20 18:25:28 +02:00
Tobias Doerffel
12221d221f Updated Polish localization files
Thanks to Radek Słowik <radek/at/vibender/dot/com> for the contribution!
2012-02-13 22:04:14 +01:00
NoiseByNorthwest
0b057ec5df Fixed bugs with magnetic knobs
The problem comes from AutomatableModel::m_initValue wich is not fitted
either in constructor or in setter. Idem for m_value in constructor, imo
this is not enough consistent.

I propose to:
- call fittedValue() in init value setter.
- always call setter to initialize current & init values.
2012-02-13 22:02:03 +01:00
Tobias Doerffel
5d5189b1f4 Updated Polish localization files
Thanks to Radek Słowik <radek/at/vibender/dot/com> for the contribution!
2012-02-03 00:18:21 +01:00
Tobias Doerffel
68861678f6 Made 0.4.13 release
Bumped version number to 0.4.13 in CMakeLists.txt, README and lmms.rc.in.
2012-02-02 23:22:12 +01:00
Tobias Doerffel
60b93e331e ZynAddSAubFX Microtonal: Fixing formatting of detune values
- Fixes bug that prints values like "4.0123" as "4.123"
(cherry picked from commit 5a1fa4f3c522f2f438e052273a544091133bb0eb)
2012-02-02 22:40:03 +01:00
Tobias Doerffel
59da243fed ZynAddSubFX: Pruning code from static analysis
Static analysis performed with cppcheck and clang
(cherry picked from commit 7540c6b46e2e6158a38464aeb9a8b35fefc3c9a9)
2012-02-02 22:28:44 +01:00
Tobias Doerffel
376f11a6c0 ZynAddSubFX: Env: fixing envelope scaling
Fixing bug introduced in 56d7e2e6ec
2012-02-02 22:21:50 +01:00
Tobias Doerffel
88d0c59903 CALF: revert upstream commit 460642bfae534679b4094e6887714828c90d8172
Upstream commit 460642bfae534679b4094e6887714828c90d8172 removes LADSPA
support from CALF which definitely is not desired for LMMS. Therefore
simply revert it in our sources.
2012-02-02 21:59:45 +01:00
Tobias Doerffel
c1db55c56a CALF: updated up to commit 657b36073cae77d9f0e191a7f09b6b8d2099aade 2012-02-02 21:45:36 +01:00
Tobias Doerffel
5f377ecdf2 German localization: updates and completions
Updated/completed various strings which have changed or not been
translated before.
2012-02-02 20:58:45 +01:00
Tobias Doerffel
6eb708ccee VeSTige/VstEffectControlDialog: fixed spelling error
Fixed minor spelling error.
2012-02-02 20:55:38 +01:00
Tobias Doerffel
edb540da52 AboutDialog: advanced copyright
We're living in 2012 now.
2012-02-02 20:55:19 +01:00
Tobias Doerffel
89078c09a2 3rdparty/libsamplerate: updated to version 0.1.8
Updated 3rdparty libsamplerate to version 0.1.8 and bumped requirement
to system's libsamplerate to version 0.1.8.
2012-02-02 20:45:02 +01:00
Tobias Doerffel
5662ef9d44 PianoRoll: fix minimum and initial width
The PR window always had a too small initial size. Fix this by setting
a proper minimum width and set initial width to this value as well.
2012-02-02 20:24:30 +01:00
Tobias Doerffel
2e7e09fd6b ZynAddSubFX: workaround for bug in Win64 GCC
When building LMMS with recent stable versions of GCC it generates
wrong code for the implicit REALTYPE specialization of the template
method stringFrom<T>() (problem in std::stringstream implementation).
By writing a custom template specialization which uses sprintf() the
bug can be circumvented.
2012-02-02 20:21:03 +01:00
Tobias Doerffel
2900e13dac CMakeLists.txt: include libpng15-15.dll for Win32/Win64 builds
The MinGW64 environment recently has been updated to ship an external
libpng library. The according DLL has to be shipped with LMMS as well.
2012-02-01 23:28:30 +01:00
Tobias Doerffel
03fcc1b5fc LVSL/RemoteVstPlugin: use big enough buffer when gathering preset names
The RemoteVstPlugin process crashed for plugins with lots of presets
as there was an overflow of the presName buffer. Chosing a bigger buffer
size fixes the problem.

Additionally initialize len variable in loadChunkFromPresetFile().
2012-02-01 23:26:28 +01:00
Tobias Doerffel
50bb56da05 InstrumentFunction/Arpeggiator: fixed upper loop boundary
The upper loop boundary was wrong as the size of a single chord was
taken instead of the whole chord table.
2012-02-01 17:22:27 +01:00
Tobias Doerffel
39010a12a3 InstrumentFunctions/ChordCreator: fixed localization support for chords
Recent commits broke localization support for chord names. Static strings
to be used with tr() have to be marked as QT_TRANSLATE_NOOP.
2012-02-01 17:21:05 +01:00
NoiseByNorthwest
59242adadc Piano-roll: bypass fixed initial width of the window
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-02-01 16:58:24 +01:00
NoiseByNorthwest
a6ae31a08e Piano-roll: scale & arpeggio combobox + micro refactoring of ChordCreator::Chord
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-02-01 16:58:24 +01:00
Tobias Doerffel
1a09828ad4 SID instrument plugin: fixed missing save/load for coarseModels
The coarseModel instances were not saved/loaded. Thanks to Mikobuntu for
pointing out the issue and providing a solution!

Closes #3394109.
2012-01-29 23:52:42 +01:00
Raine M. Ekman
14f41fe7b3 TrackViews: added compact mode
Added an option to shrink the track buttons horizontally, mainly by
moving the track name into a tooltip.

Closes #3459241.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-01-29 23:49:16 +01:00
Tobias Doerffel
6899c8378c AudioFileWave: add "LMMS" as software metadata string
By Mikobuntu:

I have created a patch ( tested on stable) that adds a metadata entry
"Software" with the value "LMMS (libsndfile-1.0.21)" I'm not quite sure
what calls in the libsndfile entry as my only field entered was LMMS,
but i guess it does no harm anyway to know ;)

Closes #3374272.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-01-29 20:02:36 +01:00
Tobias Doerffel
67ca4d73f6 AutomationPattern: fixed loadSettings() when there's just one value
If the settings for an AutomationPattern contain just one value at
position 0, this value was not loaded properly. Thanks to raine for
pointing out this issue and providing a patch.

Closes #3448562.
2012-01-29 19:54:41 +01:00
NoiseByNorthwest
0fc20dffd3 Add tone marking feature
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-01-29 19:42:23 +01:00
Tobias Doerffel
e5bc77f4c3 Mixer, Pattern: fixed pattern freeze with MIDI-based instruments
When freezing patterns the freezer hung forever as it checked for any
running play handles in order to render echoes etc. after the last note.
However if there are MIDI-based instruments such as LB302, ZASF,
Sf2Player etc. there will always be play handles (InstrumentPlayHandles)
in the mixer's play handle array. Therefore explicitely check for
remaining NotePlayHandles when freezing pattern. Furthermore added a
counter variable for safety reasons so rendering note tails will never
exceed 2000 buffer periods.

Thanks to Mikobuntu for reporting this issue!

Closes #3109262.
2012-01-29 13:07:17 +01:00
Tobias Doerffel
60758172b0 Standard filters: added 24 dB versions of RC filters as well as a vocal format filter
Thanks to Stefan Fendt!

(cherry picked from commit f5057ce6d2)
2012-01-29 12:12:50 +01:00
Paul Giblock
21f19f018b Fix off-by-one enum on new RC filters
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@2012 0778d3d1-df1d-0410-868b-ea421aaaa00d
(cherry picked from commit a48b0b6ce0)
2012-01-29 12:11:35 +01:00
Paul Giblock
4712804b28 Initial addition of Stefan Fendt's RC filters, updated and fixed code style.
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@2011 0778d3d1-df1d-0410-868b-ea421aaaa00d
(cherry picked from commit 46adbb2b34)
2012-01-29 12:07:17 +01:00
Tobias Doerffel
8c1019cdae MidiController: removed unused variable
The local "bytes" variable is never used and thus can be removed. Fixes
compiler warning.
2012-01-29 12:02:33 +01:00
Tobias Doerffel
3e4b824daf SampleTrack: set/update tooltip for samples when loading project
The tooltip for sample track object views was not restored properly
when loading projects. Thanks to Mikobuntu for pointing out this issue.
2012-01-29 12:01:21 +01:00
Tobias Doerffel
5977041b6e InstrumentTrack, NotePlayHandle: fixed note detuning processing
Note detuning did not work properly for patterns starting after the
first bar in the song editor. This has been fixed by introducing
additional information about parent's song-global offset to
NotePlayHandle objects.

Closes #3462555.
2012-01-29 11:36:24 +01:00
NoiseByNorthwest
132ab41e5d Replace static var by property, see "Add magnetic effect..." commit 2012-01-26 19:06:34 +01:00
NoiseByNorthwest
b3b290f6dd Piano-roll: preserve melody when resizing a note by holding shift 2012-01-26 19:06:34 +01:00
NoiseByNorthwest
7f63351ca6 Piano-roll: remove from selection feature (shift + left-click) 2012-01-26 19:06:34 +01:00
NoiseByNorthwest
9215800114 Add magnetic effect (for init value) on knobs 2012-01-26 19:06:34 +01:00
Tobias Doerffel
cacc0d6c3e Updated SWH plugins and added missing hermes_filter plugin
There were minor updates in SWH Git repository. Incorporated bug fixes
and added missing hermes_filter plugin.
2012-01-13 22:25:44 +01:00
Tobias Doerffel
0bcd267063 CALF: updated up to commit 022dbc37d9d4bf1af2f33a288844156bdc13d27f 2012-01-13 21:53:25 +01:00
Tobias Doerffel
9af89ec862 Updated Polish localization files
Thanks to Radek Słowik <radek/at/vibender/dot/com> for the contribution!
2011-11-24 08:46:20 +01:00
Tobias Doerffel
f4976adcd7 VstEffect: removed unused slot declaration
The openPlugin() slot in VstEffectControls class is not implemented,
therefore do not declare it as otherwise MOC references it.
2011-11-23 13:00:36 +01:00
Tobias Doerffel
774a97f31a Added Polish localization files
Thanks to Radek Słowik <radek/at/vibender/dot/com> for the contribution!
2011-11-23 12:55:29 +01:00
quadro
d57b20ff2f LVSL: improved preset support
Fixed various bugs and crashes.
2011-11-11 23:58:37 +01:00
Tobias Doerffel
63c1928f57 LVSL: fixed Win32 and Win64 build
Some minor tweaks were neccessary in order to properly build the updated
LVSL on Win32 and Win64.
2011-10-24 23:50:38 +02:00
Tobias Doerffel
b65cf661a2 MinGWCrossCompile.cmake: fix cross builds with recent versions of CMake
LMMS failed to build with recent versions of CMake if CMAKE_RC_COMPILER
was not set in MinGWCrossCompile.cmake. Furthermore PKG_CONFIG_FOUND
manually needs to be set to TRUE.
2011-10-22 20:40:06 +02:00
quadro
4d645b335d LVSL: added support for (automatable) VST controls and VST presets
LMMS VST Support Layer has been greatly advanced as it now features
(automatable) VST controls as well as support for VST presets. This
still needs some work as it crashes with various plugins (e.g. z3ta+).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-10-22 20:17:58 +02:00
Tobias Doerffel
c6051e76b4 ZynAddSubFX: fix crash in Echo effect when changing samplerate
As ZynAddSubFX still uses the horrible approach of storing global
settings (such as the currently used samplerate) in global static
variables the Echo effect will crash when the samplerate is changed
for a previously loaded ZynAddSubFX instance.

As a quick fix the original samplerate used for instantiating and
accessing internal arrays (whose size depends on global samplerate
variable) is saved for each instance and used everywhere instead of
SAMPLE_RATE.

Fixes crash when exporting e.g. Saber-FinalStep.mmpz at a higher
samplerate than LMMS normally runs with.
2011-07-10 01:01:42 +02:00
Tobias Doerffel
d60e4d48b3 ComboBoxModel: do not crash in currentText() if model is empty
Catch the case the model is empty in ComboBoxModel::currentText() and
return an empty string instead of crashing. Fixes crash with settings
dialog if no sound devices are accessible via PortAudio.
2011-07-06 10:51:00 +02:00
Tobias Doerffel
5a35d3289c Made 0.4.12 release
Bumped version number to 0.4.12 in CMakeLists.txt, README and lmms.rc.in.
2011-07-02 15:10:36 +02:00
Tobias Doerffel
14cfe77804 InstrumentTrack: make sure m_runningMidiNotes[x] does not become negative
Even though there's no known code path for this event to happen we
should always make sure m_runningMidiNotes[x] does not become negative
as this might mess up future key events.
2011-07-02 14:41:17 +02:00
Tobias Doerffel
83daa2d8fb SampleBuffer: do not use UTF-8 filenames on Windows
As libogg, libsndfile & friends do not seem to have an UTF8-compatible
implementation on Windows we have to pass the filename as local 8 bit
encoding in order to make the file being read properly.

Closes #2952858.
2011-07-02 14:15:52 +02:00
Tobias Doerffel
1e83b1e23b Reset filename when recovering project after unexpected exit
We must not use "recover.mmp" as regular filename after we recovered
the sesion from it as this causes following save cycles to go into
the recovery file. Instead load the recovery file via
song::createNewProjectFromTemplate() so the used will be asked for
a filename when saving the recovered project the first time.

Closes #3294122.
2011-07-02 13:52:44 +02:00
Tobias Doerffel
4d473a36fb ConfigMgr: properly write configuration file if it contains non-ASCII chars
There has been a problem UTF-8 characters in the configuration file
since 2006 (!), as the length of the data to be written was mis-
calculated. We can omit the specification of the data length at all
when just passing a QByteArray object to QFile::write().

Fixes setup dialog appearing each start if one of the configured paths
in the setup dialog contains non-ASCII characters.

Closes #3348920, #3017409, #2812054.
2011-07-02 13:37:36 +02:00
Tobias Doerffel
7b31be67ac ConfigMgr: do not silently fail to parse configuration file
Instead of failing silently when parsing configuration file show a
messagebox with helpful debugging information.
2011-07-02 13:28:02 +02:00
Tobias Doerffel
76a4d88fe4 Added missing plugins from the SWH LADSPA plugin collection
Once I added the SWH LADSPA plugins I just added a small selection of
them in order to improve clarity. However lots of projects use SWH
LADSPA plugins that are not shipped with LMMS and thus can't be
played properly e.g. on Windows. Fix this by adding missing plugins
(except the analog and FM oscillators).
2011-07-02 12:47:49 +02:00
Tobias Doerffel
ddf3d6fceb Data/Projects: completely revised shipped collection of projects
Most of the projects represented LMMS and it's capabilities from a few
years ago. Therefore removed most old projects and added fresh ones from
the sharing platform.

Also started to add licensing information about these files in each
project directory.
2011-07-02 12:44:53 +02:00
Tobias Doerffel
586ffe038e INSTALL: added note for systems without sudo support
Some people might not have sudo installed or configured. Added a note in
the INSTALL file for this case.

Closes #3299883.
2011-06-27 20:55:41 +02:00
Tobias Doerffel
e338b34faf Widgets classes: use "WindowTitle" property instead of "AccessibleName"
As the interface for the "AccessibleName" property might not be available
when Qt was built without accessibility support, use the "WindowTitle"
property instead where appropriate.

Closes #3300101.
2011-06-27 20:43:09 +02:00
Tobias Doerffel
1cc77b72e3 Do not apply FX mixer effects twice when playing frozen pattern
We must not process the FX mixer if we notice that currently a pattern
is frozen. Furthermore renamed some state-reading messages of the
pattern class.

Closes #3316495.
2011-06-27 20:27:03 +02:00
Tobias Doerffel
d4684f3ab1 Faders in FX mixer: added peak value indicator
Based on the patch by Thorsten Müller provided at #3307037, I continued
the work to display nice indicators for the peak value of the last 1500
ms.

Closes #3307037.
2011-06-23 10:53:39 +02:00
Thorsten Müller
ee0f6ccd10 Add tooltips to fxmixer faders
Added tooltips to show the actual value when moving the fader handle.
This works mostly like the same feature we already have for the volume
knobs. Depending on settings the value is shown in a range between
0% to 200% or -inf/-34dBV to 6.02 dBV. Again that's the same as for the
volume knob. Value range could be adjusted easily if necessary.

Closes #3305914.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-06-23 10:16:45 +02:00
Tobias Doerffel
8f9d90df5d LadspaManager: really only load shared library on Linux
Testing the last two characters of the filename against "so" is
insufficient as this might cover e.g. ISO files as well. Therefore
explicitely check for ".so".

Thanks to Mikobuntu for the contribution.

Closes #3289932.
2011-06-23 09:56:56 +02:00
Tobias Doerffel
66d36b3071 MainWindow: skip autosave while playing or exporting
It's a very bad idea to autosave while playing as this causes severe
underrun problems. Therefore instead of autosaving, trigger a re-try
timer for 10 seconds.

Closes #3317776.
2011-06-22 11:15:20 +02:00
Tobias Doerffel
34e61f0ea3 ZynAddSubFX: regenerated UI source code files with recent Fluid (2)
Forgot to include one file in commit 13d1e38f4b.
(cherry picked from commit 99113677c4)
2011-06-16 00:21:38 +02:00
Tobias Doerffel
6f00e6d6f3 ZynAddSubFX: regenerated UI source code files with recent Fluid
Now that we updated FLTK we also need to regenerate ZynAddSubFX'
UI source code files using recent Fluid tool. Indentation seems to
have been fixed.
(cherry picked from commit 13d1e38f4b)
2011-06-16 00:13:36 +02:00
Tobias Doerffel
b99d63eaf0 ZynAddSubFX/FLTK: updated to SVN revision 8805
Updated FLTK to SVN revision 8805 of branch-1.3.
(cherry picked from commit c2c315e11f)
2011-06-16 00:13:31 +02:00
Tobias Doerffel
56d7e2e6ec ZynAddSubFX: minor fixes from upstream
* Fixing Envelopes not going to zero
  * FLTK1.3: Applying patch to force code generation
(cherry picked from commit a1006f7a32)
2011-06-16 00:13:23 +02:00
Tobias Doerffel
f791b08840 lmms.rc.in: extended copyright notice
Extended copyright notice in lmms.rc.in which is used as resource file
when building win32/win64 executable.
2011-06-13 23:12:21 +02:00
Tobias Doerffel
ef516627e7 Made 0.4.11 release
Bumped version number to 0.4.11 in CMakeLists.txt and README.
2011-06-06 18:48:40 +02:00
Krzysztof Foltman
bd84a2ee64 CALF/Monosynth: only set frequency-related values in params_changed if note is played. 2011-06-06 18:45:38 +02:00
Tobias Doerffel
2721fbae95 CALF: updated up to commit b22ca910642433a4507f33ec08bcbf8e6d02e3ff
* Fix broken band issue in EQ plugins.
  * Persist extension 0.2
2011-04-25 11:35:00 +02:00
Tobias Doerffel
babf3edff8 Ask whether to recover session after unexpected exit
Instead of always loading the last auto-saved session (which might end
up in an endless cycle if recover.mmp is faulty or causes a crash) ask
the user whether to do so.
2011-04-06 18:35:20 +02:00
Tobias Doerffel
d98acff3bb CAPS: updated to version 0.4.5
Updated CAPS plugins to version 0.4.5 - changes:

  * Narrower plugin added
  * fixed 'configure.py' to work with python3
  * fixed Sin, Roessler and Lorenz gain smoothing on activation

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-04-05 14:33:08 +02:00
Tobias Doerffel
a90ffed0a8 SongEditor: made smoooth scrolling an optional feature
As smooth scrolling seems to cause problems for some users it now has
to be enabled explicitely in the settings dialog.

Closes #3194891.
2011-03-17 09:23:38 +01:00
Tobias Doerffel
dd9ba4b2ad AudioPulseAudio: do not initialize volume
Instead of passing an initialized pa_cvolume structure, pass NULL as
recommended by the documentation for pa_stream_connect_playback(). This
fixes the volume erroneously being set to 100% at startup.

Thanks to Thomas Moschny for forwarding the bug report.
2011-01-26 22:08:49 +01:00
Tobias Doerffel
c959b9bee3 Made 0.4.10 release
Bumped version number to 0.4.10 in CMakeLists.txt and README.
2011-01-26 21:52:29 +01:00
Tobias Doerffel
8d61675e3e CALF: updated up to commit 3889df5d1448faf5078b0a2bdd4c220823b82bf9
* Simplify exciter code. No functional change... I hope!
* Work in progress on rotary speaker. May contain bugs.
* Replace allpass vibrato in Calf Organ with a simulation of scanner vibrato.
* Implement switchable vibrato type.
* Initialise delta members in ramp classes.
2011-01-26 11:11:45 +01:00
Tobias Doerffel
4d13085940 Regenerated all localization files
Make minor string changes in LMMS take effect by regenerating all
localization files.
2011-01-24 16:50:40 +01:00
Tobias Doerffel
8a33f58451 German localization: various updates
Updated/completed various strings which have changed or not been
translated before.
2011-01-24 16:50:09 +01:00
Tobias Doerffel
71155e5e07 German localization: fixed typo
It has to be "diese Spur" instead of "dise Spur". Thanks to Capdan for
pointing this out.

Closes #3158102.
2011-01-24 16:36:02 +01:00
Tobias Doerffel
15fabc6a17 LB302: fixed typo
It has to be "imitation" instead of "immitation". Thanks to Capdan for
pointing this out.

Closes #3158102.
2011-01-24 16:35:46 +01:00
Tobias Doerffel
ec9658d205 PeakControllerEffect: properly save and load all settings
The settings for the new attack and decay controls weren't saved and
loaded at all while just the values of all other knobs were saved
(instead automation data, controllers etc.).
2011-01-24 16:02:50 +01:00
Tobias Doerffel
470fb87ae1 Win installer: do not append version to install directory anymore
Per default do not append the version to the installation directory
anymore as this causes unneccessary problems when not properly
uninstalling an older version. Instead files should be overwritten by
recent ones from now on.

Partially closes #3149779.
2011-01-23 23:56:21 +01:00
Tobias Doerffel
f67e8e0af7 ControllerRackView: fixed widget size issues after closing
There were some issues with the ControllerRackView when closing it
with recent Qt versions. Issue seems to be fixed by not setting a
size constraint policy for the QMdiSubWindow.

Partially closes #3149779.
2011-01-23 23:54:06 +01:00
Tobias Doerffel
b8ad5bf025 ControllerView: fixed minor artifacts at widget drop shadow
We must not set the Qt::WA_OpaquePaintEvent attribute when painting
semi-transparent a drop shadow for the ControllerView.
2011-01-23 23:52:59 +01:00
Tobias Doerffel
510f87bfcc Sf2Player: load default soundfont upon instantiation
When creating a new Sf2Player plugin instance, load the default
soundfont. Might decrease performance a little bit when loading projects
which make use of many other soundfonts but for the sake of improved
usability we should accept this.

Partially closes #3149779.
2011-01-23 23:19:31 +01:00
Tobias Doerffel
4cad9517aa Add BB track when adding track to empty BB editor
When there's no BB track but a track is added to the BB editor,
automatically create a BB track so that the user doesn't get confused
by new empty track (not even showing clickable beats).

Partially closes #3149779.
2011-01-23 23:10:04 +01:00
Tobias Doerffel
a494f4b160 PeakController: initial work on attack- and decay-support
The decay knob didn't actually do anything before. Now it's useful
together with newly introduced attack knob. One can do much better
sidechaining now without disturbing artifacts due to too responsive
volume changes.
(cherry picked from commit 9615ceabd5)
2011-01-16 22:49:47 +01:00
Tobias Doerffel
60970495b0 CMT LADSPA plugins: get rid of -nostartfiles linker flag
Using the -nostartfiles linker flag makes the CMT LADSPA plugin
library not being linked against neccessary libraries on recent Linux
systems. Therefore remove it.
2011-01-16 18:53:12 +01:00
Tobias Doerffel
4851839327 LadspaManager: print error string when failing to load LADSPA library
In order to ease debugging of problems with the LADSPA library loader
print QLibrary::errorString() if loading a library fails.
2011-01-16 18:50:01 +01:00
Andrew Kelley
7b7dc0bfb2 don't change the current project when auto-saving
every time auto-save ran, it would change the current project to
"recover.mmp". Now it doesn't do this because Song has
guiSaveProject(), guiSaveProjectAs(), and saveProjectFile().
(the latter is used for auto-save)
(cherry picked from commit 953522f34a)
2011-01-12 17:09:45 +01:00
Andrew Kelley
d75677b9d3 auto-saves every minute and recovers upon crash
auto-save time is not configurable yet. saves "recover.mmp" to
WORKING_DIR every 60 seconds. Deletes recover.mmp on successful
close of LMMS. If recover.mmp is found upon start, it loads that
project.
(cherry picked from comit f73ccadc17)
2011-01-12 17:09:14 +01:00
Tobias Doerffel
6280fd9faf Mixer: free m_inputBuffer[i] at exit
In Mixer::~Mixer make sure to free resources allocated in the
m_inputBuffer[] array.
(cherry picked from commit 1f6039340b)
2011-01-08 01:30:02 +01:00
Tobias Doerffel
cfce2bc827 Fixed various minor semantic glitches
There were various minor semantic glitches reported by cppcheck and
Andrei Smirnov.
(cherry picked from commit a4de8fa16a)
2011-01-08 00:19:11 +01:00
Tobias Doerffel
ea94e6aa32 SongEditor: added smooth autoscroll
Instead of flipping to next page when the play position marker reaches
the right edge, scroll to next page smoothly using the QTimeLine class.

Closes #3144318.
2011-01-05 12:36:14 +01:00
Tobias Doerffel
6be555d61a SongEditor: always bring up to front after loading a project
When just opening a song in order to listen to it, it's very annyoing to
manually bring up the song editor each time, therefore do it
automatically.
2011-01-05 11:53:56 +01:00
Tobias Doerffel
2bb08099b3 CALF: updated up to commit b9b6dc839c40cebbd632ca776817a11c2543265c
There were many changes in the CALF repository. Cherry picking all of
them individually would be lot's of work, that's why I just applied
a diff made up from the following commits:

 * Add ChangeLog entries of the remaining bugfix 0.0.18 releases.
 * First attempt to update ChangeLog with the changes from last 2 years.
 * Fluidsynth: set sample rate on a synth instance.
 * Monosynth: allow modulation matrix when configure is available.
 * Improve LADISH level 1 integration. Doxygenize host_session a little bit.
 * Avoid starting LASH just to display the help text.
 * Reuse instance IDs of removed plugins.
 * Don't crash on failure of the save operation.
 * Remove by pointer, not by position - better for rearranged lists.
 * Mark the reorder function as experimental. Print new plugin order to stdout.
 * Add channel number to internal MIDI API. Fix stack overflow in Calf Organ.
 * Ignore data type for now, to help diagnosing restore issue with Ardour.
(cherry picked from commit a6c6e18508)
2011-01-03 00:01:57 +01:00
Tobias Doerffel
a04df066bd ZynAddSubFX: fixed improved packaging of ZynAddSubFxCore library
When packaging the ZynAddSubFxCore library (Windows builds), there's no
need for including the DLL import library, so skip it. Furthermore make
sure to strip the ZynAddSubFxCore library which decreases its size from
8 MB to about 1 MB.
(cherry picked from commit 4616a53eb2)
2011-01-02 23:45:01 +01:00
Tobias Doerffel
aed2d69ff8 Build system: revised Qt4 detection for Win32/Win64 builds
I updated the MinGW cross compiling packages to come alogn with
Qt 4.7 and a revised build architecture. Qt's devel tools such as
qmake, moc & friends are now built natively and allow using them like
native Qt installations. This means there's less to hardcode in the
MinGWCrossCompile file.
2011-01-02 00:59:46 +01:00
Tobias Doerffel
a38c762730 Build system: removed FindPkgConfig.cmake
Removed FindPkgConfig.cmake as it's part of all even less recent
CMake installations.
2011-01-02 00:58:25 +01:00
Tobias Doerffel
4641fcc6d3 Audio: Re-enabled PortAudio backend
The PortAudio backend lay down broken for quite a while. However as it
offers much better realtime capabilities on Windows compared to SDL, I
started to resurrect it, removed support for PortAudio < 1.9 and fixed
various bugs and crashes.
2011-01-02 00:54:43 +01:00
Tobias Doerffel
a9717c0cc3 NotePlayHandle: send correct MidiNoteOff events if base note changed
When changing an InstrumentTrack's base note while NotePlayHandles are
active, they will send a wrong MidiNoteOff event due to the masterKey()
translation in InstrumentTrack::processOutEvent().

Therefore in NotePlayHandle remember the original base note value and
add the difference between original and current base note to the value
returned by NotePlayHandle::key(). Fixes hanging notes in MIDI-based
instruments such as ZynAddSubFX.

Furthermore some coding style improvements.

Closes #3146975.
2010-12-31 13:23:08 +01:00
Tobias Doerffel
65a0313807 Merge branch 'win64-vst'
* win64-vst:
  VST support layer: fixed non-working 64 bit VST plugins
  VST support layer: added 32 bit VST plugin support for Win64
  Win64Toolchain: added 32 bit compiler configuration
  ZynAddSubFX: use new RemotePlugin::init() method
  RemotePlugin: added support for running remote process multiple times
(cherry picked from commit 65c073ec63)
2010-12-26 11:25:54 +01:00
Tobias Doerffel
269234fd09 SpectrumAnalyzer: fixed multiple instantiations
When instantiating the SpectrumAnalyzer plugin more than once the
processed data somehow got invalid and caused all but the first
SpectrumAnalyzer instance not to work at all. This can be fixed easily
by clearing m_buffer in SpectrumAnalyzer's constructor.

Closes #3137877.
(cherry picked from commit ab814c03a7)
2010-12-24 00:37:58 +01:00
Tobias Doerffel
dc1c43bb0a Build system: fixed CPACK_NSIS_DISPLAY_NAME
Use "LMMS ${VERSION}" for the CPACK_NSIS_DISPLAY_NAME variable. This
affects the start menu entries on Windows where we want the user to be
able to distinct between various installed versions of LMMS easily.
2010-12-20 01:30:45 +01:00
Tobias Doerffel
482f89d03e Made 0.4.9 release
Bumped version number to 0.4.9 in CMakeLists.txt and README.
2010-12-15 00:20:18 +01:00
Tobias Doerffel
a352341080 CMakeLists.txt: new filename for Fluidsynth DLL
When packaging for Win32 use the new filename for the Fluidsynth DLL.
2010-12-14 10:38:15 +01:00
Tobias Doerffel
1590dd0d39 ZynAddSubFX: link against -lws2_32 on Win32
Once more explicit linking is required with recent MinGW toolchains.
2010-12-06 10:42:29 +01:00
Tobias Doerffel
49b6f25b2d Build system: explicitely link against WinMM library on Win32
When building for Win32 with recent MinGW64 runtime we have to link
against WinMM library explicitely.
2010-12-05 23:58:34 +01:00
Tobias Doerffel
8c4a8182ab MidiWinMM: fixed compiler warning
Pass 0 instead of NULL for 3rd and 4th argument of midiOutOpen().
2010-12-05 23:29:23 +01:00
Tobias Doerffel
625e70d50a Build system: fixed relative linker paths warnings
Fixed the warnings about relative linker paths issued by CMake >= 2.8.
2010-12-05 23:27:55 +01:00
Tobias Doerffel
b1b63364d5 Merge branch 'calf-updates'
* calf-updates:
  Reimplement modulation matrix (and tables in general) using configure variables. Slow and most likely incomplete, but a good start.
  Add extra checks to detect when param_count != param array size - 1.
  Fix another install-related crash, this time due to invalid params in fluidsynth. (cherry picked from commit 034e3a47cd40eb6bb7d221274fda2a5c1c79f42f)
  Fix the infamous crash on install. (cherry picked from commit f0568e2f8a4c7d0003cc5a15e300aa2ebb3f93cb)
  The range given in the comment wasn't really correct. (cherry picked from commit 292cdaa81dab7e7d948f597041cb86d70dc5ff92)
  Use symmetric dB range for EQ plugins.
  Fix a few bugs in compilation of limited versions (DSSI without GUI, no JACK host).
  Initialise the vintage delay properly... hopefully this time. (cherry picked from commit c96ff1d680148cc877fab3b641d666068eea06aa)
  Unbreak Monosynth by changing listview to use a 'key' attribute instead of 'param'.
(cherry picked from commit c562952800)
2010-12-05 23:11:43 +01:00
Tobias Doerffel
20d6852cda Refreshed French QM file
For some reason the "lrelease" utility produced an incomplete QM file.
Releasing from within the Qt Linguist seems to work.
2010-11-07 17:04:46 +01:00
Tobias Doerffel
884116e6a6 Updated French localization files
Thanks to Bernard Opic <bernard/dot/opic/at/media-tips/dot/com> for the
contribution!
2010-11-07 17:02:13 +01:00
André Hentschel
1ea719c7c4 vst_base: Fix winelib build on x86-64 2010-11-04 17:09:35 -04:00
Tobias Doerffel
af17d00821 Merge branch 'calf-updates'
* calf-updates:
  Make meters in compressor/EQ/distortion modules sample-rate-dependent. (cherry picked from commit 47a87c696223625d31cf106e12ed08cd3293be14)
(cherry picked from commit 6581a11a45)
2010-10-17 18:19:32 +02:00
Tobias Doerffel
60d302d09e InstrumentTrackView: use QMdiArea's window activation history
There's no need to implement an own (buggy) window activation history
for InstrumentTrackWindows. Use QMdiArea::subWindowList(...) instead.
Fixes buggy keyboard focus when switching between InstrumentTrackWindows.
(cherry picked from commit c05965117c)
2010-10-06 10:17:48 +02:00
Tobias Doerffel
3ae2b40eec InstrumentTrackView: added one-window-mode + global piano focus
Added a one-window-mode which allows to have only one instrument track
window open at a time. The content of this window is replaced each time
you open a different track.

Furthermore added global reception and forwarding of key events to the
piano widget of the top-most instrument track window. This for example
enables the user to play test sounds while tweaking some effects in a
different subwindow.
(cherry picked from commit 93681760d2)
2010-10-05 11:25:43 +02:00
Tobias Doerffel
384a024bae Fixed alternating row color in QTreeView (Sf2 patch selector)
With Qt 4.7 the alternating row color in the Sf2 patch selector dialog
somehow was messed up. Fixed this by explicitely setting the alternating
row color in the style's CSS files.
(cherry picked from commit fd40743772)
2010-09-29 16:33:53 +02:00
Tobias Doerffel
66b83dfaec SampleTrack: do not hide EffectRackView forever when closing subwindow
Whenever closing the sample track effects window using its own close
button and trying to open it again there was only a really small window
without functionality. Fixed this by explicitely also showing subwindow
content in showEffects().

Closes #3075205.
(cherry picked from commit 830c2cb975)
2010-09-29 16:10:52 +02:00
Tobias Doerffel
f1f5040ddc Merge branch 'calf-updates'
* calf-updates:
  LADSPA/CALF: removed unused file
  One table_edit_iface per table; start implementing a bridge class. (cherry picked from commit 2019ae2d8f9636b7d5cdb0c1fdd5f0d6f2b47e3d)
  Move the table_edit_iface out of plugin_metadata_iface, where it should have never been in first place. (cherry picked from commit 6907dc9670eae2313707b142c552a8d9e8b477b5)
  Fix organ crash in calfjackhost. (cherry picked from commit b2853103199b3f5f3a5d22271c5d89122514dd53)
  Remove the forgotten leftover references to the old extensions. (cherry picked from commit deb8b77bdb1e1648a38589b3be3d4d66175b4934)
  Replace string port/message context using persist extension. (cherry picked from commit b8e69ceb2ff7aca549efd939d04447e2f08ad5a8)
  Comment out the barfage when passing configure variables via message_run. (cherry picked from commit 1e767ff88578011c2f65466d5516953271e2cafd)
  Add a crude incomplete implementation of persist extension support. (cherry picked from commit 3ec11c04799fc08fd408c4ef2350df65f88ccfde)
  Add LV2 persist extension by paniq. (cherry picked from commit 1965282a28c6940164ffff7ebd106b27cafd7f2a)
  More refactoring of the VUs. The goal: to be able to add peak meters without major hassle. (cherry picked from commit 00ee132cc2ebe3b664c7d5760260d76dda37bf26)
  Fix handling of very short notes in Monosynth. (cherry picked from commit 5965d9922a0753e2dce4f743a23b9512be01a7ac)
(cherry picked from commit 01c91b6ce3)
2010-09-28 23:44:33 +02:00
Tobias Doerffel
79d6cff46f Made 0.4.8 release
Bumped version number to 0.4.8 in CMakeLists.txt and README.
2010-09-03 00:22:33 +02:00
Tobias Doerffel
49d833c2fd VstEffectControlDialog: fixed preprocessor macro logic
Fixed preprocessor macro logic that was messed up in commit
fa9e0f762c.
(cherry picked from commit 342ea2ba05)
2010-09-02 23:48:58 +02:00
Tobias Doerffel
1bf3768c1c VstEffectControlDialog: workaround for invisible GUI on Linux
For some reaons with recent versions of Qt we can't embed the VST FX
GUI into an existing EffectControlDialog anymore. As a workaround, embed
it into a new subwindow and added an additional show/hide button.

Closes #3028717.
(cherry picked from commit fa9e0f762c)
2010-09-02 17:38:05 +02:00
Tobias Doerffel
d396a29c06 ZynAddSubFX: only re-instantiate ZASF if m_hasGUI has changed
Do not re-instantiate ZynAddSubFX if m_hasGUI is different from the
value of the according push button.
(cherry picked from commit f05c510f4d)
2010-09-02 17:23:31 +02:00
Tobias Doerffel
bac2b28ad7 ZynAddSubFX: save which controllers were modified and restore them
We must not only restore the controller knobs but also send updates
to ZynAddSubFX. However this only applies to knobs that were modified.
Therefore save and remember which knobs this applies for.
(cherry picked from commit b2cc802528)
2010-09-02 17:23:28 +02:00
Tobias Doerffel
2c99688f91 ZynAddSubFX: fixed identifier for filter resonance controller
The filter resonance controller erroneously was labeled with something
like "cutoff" which is definitely wrong. Use "resonance" instead.
(cherry picked from commit 1546b7cec0)
2010-09-02 16:24:57 +02:00
Tobias Doerffel
1c4d1f4ed3 PianoView: send NoteOff MIDI events for all keys on focus out
Commit 491910357b was a first try to fix
bug #3052228 but it broke InstrumentPlayHandle-driven instruments.
When losing focus now simply send NoteOff MIDI events for all keys
regardless of the state indicated by Piano::m_pressedKeys.

Closes #3052228.
(cherry picked from commit f8e73c5293)
2010-09-02 01:54:20 +02:00
Tobias Doerffel
706201dd79 Revert "PianoView: call InstrumentTrack::silenceAllNotes() on focus out"
This reverts commit 491910357b.
2010-09-02 01:47:28 +02:00
Tobias Doerffel
a2a1277660 SID: improved artwork+logo once more
The first version of mikobuntu's logo had a white semitransparent
background. This has been fixed. Additionally the background artwork
of the SID plugin has been changed as well to include the new logo.
Thanks to pgib for preparing this.
(cherry picked from commit eb673c0ad5)
2010-09-02 00:07:07 +02:00
Tobias Doerffel
491910357b PianoView: call InstrumentTrack::silenceAllNotes() on focus out
If we lose focus, call InstrumentTrack::silenceAllNotes() after
explicitely sending NoteOff MIDI events for all keys for which presses
were recorded. In case the arpeggiator is enabled this is not
sufficient. Fixes hanging notes when switching active subwindow while
pressing keys in an instrument track window with arpeggiator enabled.

Closes #3052228.
(cherry picked from commit 2f921303eb)
2010-09-01 23:56:28 +02:00
Tobias Doerffel
18d3c886a6 ZynAddSubFX: properly load preset data if knobs are automated/controlled
Commit 534c4debb5 introduced a regression.
If knobs have a song-global automation or controllers attached, they
save these settings in a sub XML node which confused the ZASF preset
loader which assumed the first child node would always be the ZASF
preset data. Fix this by explicitely searching for an XML element named
"ZynAddSubFX-data".

Closes #3057275.
(cherry picked from commit 4e695a4ea8)
2010-09-01 23:29:30 +02:00
Tobias Doerffel
58462500d0 SID: added new logo by mikobuntu
Added a logo remake by mikobuntu. Thanks!
(cherry picked from commit 56ee4db565)
2010-09-01 23:29:28 +02:00
Tobias Doerffel
59f3d81d37 Mirror Commodore logo on SID instrument (v2)
This is an attempt to improve commit c17bb3ba18. The logo has
been mirrored using ImageMagick which doesn't seem to mess up the 8 bit
alpha channel.
(cherry picked from commit 4763da4daa)
2010-09-01 00:26:24 +02:00
Tobias Doerffel
3fae87ae3d CMakeLists.txt: explicitely search for pthread and link against it
On Linux and OS X search for pthread library and link against it
explicitely. This fixes link problems on recent Linux distributions
where indirect linking (by dependencies) is disabled. Thanks to thm
for pointing out this issue.
(cherry picked from commit 1b84b360f4)
2010-08-31 19:21:33 +02:00
Tobias Doerffel
bf595cf285 ZynAddSubFX: added LED checkbox to disable forwarding of MIDI CC events
After introducing the control knobs it's not always desired to forward
all MIDI Control Change events to ZynAddSubFX. Therefore added an LED
checkbox which allows to disable forwarding of such events.

Closes #3055332.
(cherry picked from commit 0b7e37ca6a)
2010-08-31 16:41:23 +02:00
Tobias Doerffel
1669daa788 ZynAddSubFX: forward all MIDI events but NoteOn if muted
There's no reason for not forwarding MIDI events such as NoteOff,
ControlChange etc. when muted. Therefore only do not forward NoteOn
when muted.
(cherry picked from commit 39918f8835)
2010-08-31 16:41:20 +02:00
Tobias Doerffel
611a36e56b MidiEvent: added read method for type property
Even if the type property of the MidiEvent class is still public, there
should be a method for reading it.
(cherry picked from commit 1d5b62d61a)
2010-08-31 16:41:16 +02:00
Paul Nasca
c407bbe15b Bugfix extra "for" in adsynth
(cherry picked from commit e6bc35ff98e3f430a4d091aae8f059b7925179f3)
(cherry picked from commit ab2e117ed8)
2010-08-31 11:48:12 +02:00
Tobias Doerffel
380b0bfa9b Merge branch 'calf-updates'
* calf-updates:
  Use generic single VU meter in some dynamics plugins as well. (cherry picked from commit 50505a2d304555bb3b766c43af5cd1a27de331e2)
  Refactor metering code out of distortion plugins. (cherry picked from commit 84d873861da7b4ad205061b00fcc9f73c47140b6)
  More variable initialisation. (cherry picked from commit 40bbe048f27fc7190001383f93097127119ee667)
  Initialise old-state variables to prevent "stuck" graphs. (cherry picked from commit 2a795084ee9e73712a4b690b84158cc745ff1d30)
(cherry picked from commit cb52114261)
2010-08-31 11:41:50 +02:00
Tobias Doerffel
8ebdee61f6 PianoRoll: respect stacking order of notes
Notes are always drawn on-top of each other starting from the left
to the right. However the behaviour when clicking notes was reverse,
which made it quite hard to edit notes sometimes. Now the top most
note is edited/selected/moved/resized if notes overlay.

Closes #2808603.
(cherry picked from comit 28eb7e00bf)
2010-08-24 18:47:39 +02:00
Tobias Doerffel
9288998686 Merge branch 'calf-updates'
* calf-updates:
  Add Sidechain Gate, rename Gate to Expander, cleanups etc.
(cherry picked from commit 80a1b6b8e8)
2010-08-24 09:34:05 +02:00
Tobias Doerffel
819e6392cd SampleBuffer: for OGG files try with OGG Vorbis decoder first
This is workaround for a bug in libsndfile or our libsndfile decoder
causing some OGG files to be distorted. Therefore try the OGG Vorbis
decoder first if filename extension matches "ogg".

Closes #2957937.
(cherry picked from commit 6e64bcfc42)
2010-08-22 02:22:45 +02:00
Tobias Doerffel
d91c703725 ZynAddSubFX/QtXmlWrapper: fixed loading of oddly formatted presets
Some ZynAddSubFX presets have one or more leading blank lines which
confuses the QtXml module. Therefore dynamically remove characters from
the beginning of the data until we encounter a '<' character.

Closes #3047560.
(cherry picked from commit 32dbda5b33)
2010-08-22 01:03:47 +02:00
Tobias Doerffel
3a79dc1741 PianoRoll: allow chaning volume and panning of step notes
There's no reason to not allow changing volume and panning of step notes
in PianoRoll. Therefore simply check whether the length is not equal to
zero (which might be disabled step notes) instead of checking for length
being greater than zero.

Closes #2836799.
(cherry picked from commit 8286c1031d)
2010-08-19 00:17:41 +02:00
Tobias Doerffel
4e3072137b PianoRoll: fixed messed up editing modes when pressing Ctrl
There were some bugs when pressing Ctrl while in SelectMode. Fix this
by always setting m_ctrlMode and m_editMode in keyPressEvent() when
Ctrl was pressed.

Closes #2854958 and #2836576.
(cherry picked from commit 46c20bdcbd)
2010-08-18 23:58:49 +02:00
Tobias Doerffel
9cf0f4932a Song: reset global models in clearProject()
We have to reset global models such as tempo, master volume etc. before
clearing the global automation patterns attached to them. Fixes bug with
persistent automation on these controls when clearing project.

Closes #3046039.
(cherry picked from commit 2614474246)
2010-08-16 23:40:48 +02:00
Tobias Doerffel
54ce5b96f6 MeterModel: clear global automation patterns in reset()
When resetting a MeterModel we also have to clear global automation
patterns attached to it. Fixes bug with persistent automation data on
e.g. time signature widget when clearing project.
(cherry picked from commit 23a3efcac0)
2010-08-16 23:40:44 +02:00
Tobias Doerffel
89eae05a16 Renamed all automation related files and classes to match new coding style
All automation-related files and classes have been renamed to match the
new coding style.
(cherry picked from commit 9b280ffb3e)
2010-08-16 23:40:33 +02:00
Tobias Doerffel
b16e81ebff ControllerRackView: do not loose focus when adding controller
For an unknown reason the ControllerRackView looses focus when adding
a new controller. Fix this by explicitely calling QWidget::setFocus()
at the end of ControllerRackView::addController().

Closes #3046041.
(cherry picked from commit 676a6fbad1)
2010-08-16 23:39:04 +02:00
Tobias Doerffel
564ef08127 InstrumentTrackWindow: correctly disconnect from track's signals
We used QObject::disconnect() the wrong way leading to multiple
connections from InstrumentTrack::instrumentChanged() to
InstrumentTrackWindow::updateInstrumentView(). This resulted in
loading times being doubled each time you loaded a preset on the same
InstrumentTrack.

Closes #2934099.
(cherry picked from commit 9acb47a7a8)
2010-08-15 14:22:38 +02:00
Tobias Doerffel
cd08109847 InstrumentTrack: do not try to load "libconnection.so" in compat code
In compat code of InstrumentTrack::loadTrackSpecificSettings() also
check for nodeName being equal to ControllerConnection::classNodeName().
This avoids trying to load the non-existing instrument "connection".
In master branch this has been fixed ugly in commit 22c877d4 before,
however implement a cleaner solution which is also suitable for
backporting.

Closes #3021259.
(cherry picked from commit 65311ef2b4)
2010-08-15 14:00:11 +02:00
Tobias Doerffel
b9f5795da6 EffectView: fixed artifacts with semitransparent widget shadow
We must not set the Qt::WA_OpaquePaintEvent attribute when using a
semitransparent background image in paintEvent(). Fixes artifacts
in EffectView's shadowed border.
(cherry picked from commit d830e7f622)
2010-08-15 12:44:29 +02:00
Tobias Doerffel
48891a7de3 VstPlugin: use guarded pointer for pluginWidget
The pluginWidget of a VstPlugin (i.e. the VST editor) might be destroyed
outside VstPlugin's control resulting in a dangling pointer. This leads
to crashes for example when changing the model of an EffectView where a
VST plugin is attached, i.e. when re-opening a InstrumentTrackWindow of
an InstrumentTrack with a VST effect inside.

This can be fixed easily by using QPointer.

Closes #3045102.
(cherry picked from commit f4b84a6058)
2010-08-15 12:44:27 +02:00
Tobias Doerffel
6a99bb11af SampleTrack: fixed non-functional solo and mute buttons
The SampleTrackView did not explicitely have a SampleTrack model
attached and thus trackView::modelChanged() was not called. This way
SampleTrackView's mute and solo buttons were not connected to the
according models of the SampleTrack model. Fix this by calling
setModel() in SampleTrackView::SampleTrackView() (as done in
constructors of other track types too) and overload the
SampleTrackView::modelChanged() method.

Closes #3043836.
(cherry picked from commit 311bc92bde)
2010-08-14 00:26:34 +02:00
Tobias Doerffel
0770bda441 Renamed PATH_SEPARATOR to LADSPA_PATH_SEPARATOR and fixed it
Commit 4e9ebd09c6 introduced PATH_SEPARATOR
but with wrong syntax. Fixed this and renamed it to LADSPA_PATH_SEPARATOR.
2010-08-12 10:30:59 +02:00
Paul Giblock
09b5bc906e Use proper path seperator for LADSPA_PATH
According to http://www.ladspa.org/ladspa_sdk/shared_plugins.html,
LADSPA_PATH is supposed to be delimited by colons.  This patch does so,
except on Windows.  On Windows we use ';' instead of ':' since colon is
a legal character for a path.
2010-08-12 09:12:04 +02:00
Tobias Doerffel
d8594fad15 TrackContainerView: fixed dragged presets into BB Editor
When dragging preset files into BB Editor the patterns were messed up
because simple serializing was not enabled (and thus newly created
patterns were removed again). Fix this by enabling simple serializing
mode before calling InstrumentTrack::loadSettings().

Closes #3041686.
2010-08-11 17:54:41 +02:00
Tobias Doerffel
1d50e6b42e Default theme: improved tooltip appearence
Thanks to mikobuntu for this patch.
(cherry picked from commit 2ed12b138d)
2010-08-11 17:31:51 +02:00
Tobias Doerffel
6c9dc19eb4 ZynAddSubFX: save and restore settings of new knobs
When adding the new knobs for automatable parameters of ZynAddSubFX,
I forgot to include them in the save/load routines.
(cherry picked from commit 534c4debb5)
2010-08-11 00:48:33 +02:00
Tobias Doerffel
3502bbccf8 CMakeLists: print warning about missing Mallets instrument instead of Stk
The Vibed plugin has nothing to do with STK. Instead the Mallets
instrument plugin is meant. Fixed.
(cherry picked from commit a0ef88908c)
2010-08-11 00:29:13 +02:00
Tobias Doerffel
ec19be69cd Added missing FileAssociation.nsh
Commit 07a7442758 includes the new file
FileAssociation.nsh which was not added in that commit. Fix this.
2010-08-06 01:38:10 +02:00
Tobias Doerffel
07a7442758 Win32/64 installer: associate LMMS project files with LMMS
Added some NSIS commands to associate LMMS project files with LMMS
during installation.
2010-08-06 01:33:49 +02:00
Tobias Doerffel
9e98dec0c4 Manpage: fixed duplicate help item and updated program description
Thanks to pgib who pointed out the duplicate help item for the
--interpolate option. Additionally updated the program description.
(cherry picked from commit 5f131f1a69)
2010-08-06 01:31:41 +02:00
Tobias Doerffel
12d2cd3064 Made 0.4.7 release
Bumped version number to 0.4.7 in CMakeLists.txt and README.
2010-08-02 16:36:34 +02:00
Tobias Doerffel
e1e36e6831 ZynAddSubFX/FLTK: added missing source file
The Windows builds of FLTK require Fl_GDI_Printer.cxx. Add it here.
2010-07-31 20:51:00 +02:00
Tobias Doerffel
eeaa13f7d0 CMakeLists.txt: copy zlib1.dll into Windows package
The MinGW packages have changed such that zlib is an external library
again (instead of built-in into QtCore), therefore we need to copy the
according DLL into the Windows package.
2010-07-31 20:48:41 +02:00
Tobias Doerffel
042dda146c CMakLists.txt: added lmmsconfig.h.in and build_mingw64 to dist target
Added lmmsconfig.h and build_mingw64 to dist target so they get packaged
into a release tarball.
2010-07-29 14:00:29 +02:00
Tobias Doerffel
f2b9c8e34f More MinGW64 fixes
Some more trivial fixes for successfully compiling for Win64.
(cherry picked from commit 7b85371a38)
2010-07-28 21:28:43 +02:00
Tobias Doerffel
632dee611d TextFloat: fixed size calculation in simple mode
The height of TextFloat objects was not sufficient e.g. when used as
tooltips for knobs (while changing their values). Fixed improper
geometry calculation and static values in TextFloat::paintEvent().
(cherry picked from commit db8de3450c)
2010-07-28 20:16:24 +02:00
Tobias Doerffel
ef6c3d45f8 ZynAddSubFX: added knobs for MIDI controls
Added knobs for some MIDI controls that are recognized by ZynAddSubFX.
This allows to automate some basic parameters of ZynAddSubFX inside LMMS.
(cherry picked from commit 7a4f110af3)
2010-07-28 20:01:24 +02:00
Tobias Doerffel
4b6de6b07b Default theme: replaced background artwork with a more decent one
The previous blurry background artwork was reported to be quite
annoying. Therefore replaced it with a more decent one.
(cherry picked from commit 4d532371e7)
2010-07-26 16:17:27 +02:00
Tobias Doerffel
2b73083100 AudioJack: do not use QVector in processCallback()
Using QVector involves calls to malloc & friends which are not RT safe
and thus must not be used in AudioJack::processCallback(). Instead
allocate the required array upon initialization.
(cherry picked from commit ae7a4e4c2f13432d39b13c25b66231bdd6a1cc65)
2010-07-26 15:59:32 +02:00
Tobias Doerffel
2ba532bf30 AudioJack: more optional code for AudioPort support
There's been some more code that is only required if AUDIO_PORT_SUPPORT
is set. Added according #ifdefs and fixed a typo in AudioPort support
code.
(cherry picked from commit e98726ae992c77fb2dfdb6668319b5521ff8aaef)
2010-07-26 15:59:27 +02:00
Tobias Doerffel
3929848ec4 Merge branch 'zynaddsubfx-master'
* zynaddsubfx-master:
  FLTK/CMakeLists.txt: fix CMAKE_MODULE_PATH, don't use 3rdparty code
  ZynAddSubFX/FLTK: updated to SVN revision 7680
  ZynAddSubFX: check whether QDomDocument::setContent() succeeded
  ZynAddSubFX: completely reinitialize config after changing working dir
  ZynAddSubFX: set working directory before setting preset directory
  ZynAddSubFX/CMakeLists.txt: use global binary dir as last include dir
  ZynAddSubFX/CMakeLists.txt: remove accidently added subdirectory
  ZynAddSubFX: resynced with upstream (version 2.4.1)
  ZynAddSubFX/FLTK: updated to SVN revision 6970
  Misc: Minor changes to filter_ to reduce warnings (cherry picked from commit e2b1eb9b1077e6516c0cc4e2283e5c886bed0e58)
  Cleanup: Separated Presets into Presets/PresetsArray
  ZynAddSubFX: fixed commit d61283ad93
  ZynAddSubFX/FLTK: updated to SVN revision 6943
  small changelog fix (cherry picked from commit c8d411b5f7e7a295286c1ac2c09ae22f15a1db51)
  VirKeyboard: Fixed possible segfault
  small changes on Bandwidth on Reverb (cherry picked from commit d0b0a4e00a44559a4e78035fd04568bd4bab9651)
  ZynAddSubFX: new QtXmlWrapper, a QtXml-based XML backend for ZASF
(cherry picked from commit 278b70384e)
2010-07-26 15:15:56 +02:00
Tobias Doerffel
e8c8054535 CMakeLists.txt: install libFLAC-8.dll for win32 build
After updating some external libraries, libFLAC-8.dll is now required
as well, so install it into the win32 package.
2010-07-25 19:29:13 +02:00
Tobias Doerffel
8561c3cc09 RemotePlugin: use debugMessages() instead of fprintf for error messages
Printing error messages using fprintf() does not help much with
RemotePlugins as their stdout/stderr usually is not redirected to the
parent process. Instead use the debugMessage() function.
(cherry picked from commit a55d71cf7f)
2010-07-25 19:27:58 +02:00
Tobias Doerffel
1513b0c437 Win32Toolchain: define CFLAGS/CXXFLAGS in top level build_mingw32 script
All flags which are used now for building Win32 version of LMMS are now
defined in the top level build_mingw32 script instead of the
Win32Toolchain cmake files.
2010-07-25 19:22:28 +02:00
Tobias Doerffel
6da391ea69 ZynAddSubFX: save configuration file in LMMS working directory
On non-Linux platforms configuration file was saved in the application
path which definitely is not desired and also will not work in many
situations. Therefore always save ZynAddSubFX configuration file in
LMMS working directory.
(cherry picked from commit 000f67d01d)
2010-07-25 19:21:49 +02:00
Tobias Doerffel
610f01b0f9 moved version information into separate header file to avoid the necessity of a complete recompile each time SVN revision changes
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1913 0778d3d1-df1d-0410-868b-ea421aaaa00d
(cherry picked from commit b25f6f3911)
2010-07-25 18:50:42 +02:00
Tobias Doerffel
ea4f034fa8 ZynAddSubFX: added window icon (win32 version only)
Added a window icon to ZynAddSubFX windows for better appearance.
This is currently only possible for the win32 version a lot more hacks
are required to achieve this for X as well :-(
(cherry picked from commit 30060e41b7)
2010-07-25 17:03:12 +02:00
Tobias Doerffel
9b39b483e9 CMakeLists.txt: rename config.to to src_config.h
Commit e07ed33827 renamed config.h to
src_config.h. Also reflect that change in CMakeLists.txt.
(cherry picked from commit a7aff505c1)
2010-07-25 16:54:40 +02:00
Tobias Doerffel
6203fdaa4f ZynAddSubFX: allow hiding UI by closing main window
It's now possible to hide the ZynAddSubFX UI by simply closing its main
window instead of going back to LMMS and toggle the "Show UI" button.

Furthermore moved code for GUI thread into a non-static member function
of RemoteZynAddSubFx and removed the old code for handling IdHideUI
messages.
(cherry picked from commit fe7486750b)
2010-07-25 15:21:20 +02:00
Tobias Doerffel
4689484ef7 lmms.rc.in: updated copyright year
Updated copyright year in win32 resource file.
(cherry picked from commit 5c2c356ba4)
2010-07-25 14:39:39 +02:00
Tobias Doerffel
ade301a51a 3rdparty/libsamplerate: renamed config.h to src_config.h
We must not have any file called config.h in directories which are added
to global include directories. For example when building the CALF plugin
the file config.h from libsamplerate was used rather than CALF's local
one. Fixes missing LADSPA symbols in CALF library if no usable
libsamplerate was found in the system at configure time.

Also bumped version number in src_config.h.
(cherry picked from commit e07ed33827)
2010-07-25 14:36:45 +02:00
Tobias Doerffel
08c0916916 RemoteVstPlugin: silence compiler warning
Initialize variable of type DWORD with 0 instead of NULL.
(cherry picked from commit 5f33f1ea77)
2010-07-25 11:35:35 +02:00
Tobias Doerffel
4b89814e3a TrackContentObject: keep position in paste()
When calling TrackContentObject::paste(), only the content should be
pasted, not the position. This fixes pasting for example note patterns
and is also a more generic solution for the bug fixed in commit
4ec5c6afe1.

Closes #3005649.
(cherry picked from commit 5306f7b0ca)
2010-07-25 01:27:23 +02:00
Tobias Doerffel
6990ecd829 When cloning BB track, indicate this fact in name of cloned BB track
Cloning a BB track can be rather confusing (e.g. two "Beat/Bassline 0").
Therefore prepend an indication to the name of the cloned BB track.
(cherry picked from commit 3b642271a8)
2010-07-25 01:14:16 +02:00
Tobias Doerffel
4ec5c6afe1 Fixed cloning of BB tracks
Not sure when it broke but cloning BB tracks erroneously cloned
positions of TCOs as well which made the source BB track have
two TCOs one upon the other while the destination BB did not have
any TCOs at all.

The fix is to save the position of the destination TCO before and
restore it manually after paste().
(cherry picked from commit c16e04c0dd)
2010-07-25 01:14:10 +02:00
Tobias Doerffel
74f4cb0368 ZynAddSubFX: on Linux link against libfontconfig
FLTK requires libfontconfig on Linux, therefore link against it.
(cherry picked from commit 7b0b932441)
2010-07-25 01:14:01 +02:00
Tobias Doerffel
7d78268f85 ExportProjectDialog: guess file format from extension
If we choose to export an OGG file in the first dialog, it's really
annoying having to select OGG a second time. Therefore guess file
format from extension (backport from master).
2010-07-25 00:33:48 +02:00
Tobias Doerffel
a2aafd79d0 NotePlayHandle: fix broken note detuning feature
Commit 884b9ca671 completely broke the
note detuning feature as the detuning value was not incoorporated into
the frequency calculation anymore. Fix this by adding the detuning value
to the pitch variable.
(cherry picked from commit b30e91042b)
2010-07-25 00:24:17 +02:00
Tobias Doerffel
199d78de59 Merge branch 'calf-updates'
* calf-updates:
  Fix incorrect plugin class (spotted by Luis Garrido).
  Add windowing-based antialiasing to hard sync in Monosynth; update last stretch even if synth is idle. (cherry picked from commit d64a0487d88f6730ef90dd6d79b892ad4a114138)
(cherry picked from commit 8ef98b63db)
2010-07-24 23:43:28 +02:00
Tobias Doerffel
47f56ed460 Do not use -ftree-vectorize per default anymore
The compiler flag -ftree-vectorize brings only little advantages in
some special cases. In all other cases either worse or even wrong code is
generated due to bugs in GCC (especially for Win32). Therefore remove it.
2010-07-24 23:32:19 +02:00
Tobias Doerffel
57540de703 AboutDialog: show correct copyright years
It's been two years that the copyright years were not updated in the
AboutDialog. Fix this.
2010-07-23 22:17:54 +02:00
Tobias Doerffel
f85898ba6e Plugins: export PluginDescriptors and lmms_plugin_main function
Various plugins were missing the PLUGIN_EXPORT declaration with their
PluginDescriptor instantiations and lmms_plugin_main implementation
which made some plugins not show up with latest Win32 build.
2010-07-23 22:16:06 +02:00
Tobias Doerffel
9b76a4b6b4 ZynAddSubFx: MinGW64-specific fixes
Some minor modifications were neccessary in order to build LMMS with
the latest MinGW64 environment.
(cherry picked from commit 456abc4cde)
2010-06-16 23:14:37 +02:00
Tobias Doerffel
48b0b1efb9 CALF: minor LMMS-specific updates
Silence a compiler warning introduced by custom changes and fix a
possible compile failure by including another header file in a header
file that we cleared before.
(cherry picked from commit 4393ec8281)
2010-06-16 23:11:11 +02:00
Janne Sinisalo
d1d0ac47b4 Newer ZynAddSubFX plugin tab background
Replaced the background for ZynAddSubFX plugin tab in the instrument window again.
(cherry picked from commit 401652a100)
2010-06-16 23:11:00 +02:00
Janne Sinisalo
4fc4f19093 New ZynAddSubFX plugin tab background
Replaced the background for ZynAddSubFX plugin tab in the instrument window.
(cherry picked from commit 45fc5c6ac7)
2010-06-16 23:10:54 +02:00
Tobias Doerffel
9af1112f33 Merge branch 'calf-updates'
* calf-updates:
  Cleanups/bugfixes in Monosynth.
(cherry picked from commit 1fd115afea)
2010-05-26 12:40:04 +02:00
Tobias Doerffel
d63270cd06 Themes: explicitely set background and text color for tooltips
As the colors of QToolTip depend on the desktop environment used,
explicitely set background and text color for fixing cases like
white text on bright yellow background.

Closes #3006955.
(cherry picked from commit d7ce7d485b)
2010-05-26 12:30:18 +02:00
Andrew Kelley
6a52e6430a Save/Discard instead of Yes/No
Integrates Sami Boukortt's patch described below:

I have made a patch for the “Save changes?” dialog box to let the user choose
between “Save”, “Discard” and “Cancel” instead of “Yes”, “No” and “Cancel”.

I find this way more intuitive, since it enables Qt to reorganize the buttons
properly according to the platform and to give them an icon (at least on X11).

It also allows users to know what is going to happen without having to read
the question.
(cherry picked from commit f9015ac945)
2010-05-25 08:58:27 +02:00
Tobias Doerffel
eab1153561 Merge branch 'calf-updates'
* calf-updates:
  CALF: Added missing config.h
(cherry picked from commit 9c856454d1)
2010-05-22 01:32:49 +02:00
Tobias Doerffel
6a1daf5bc8 Merge branch 'calf-updates'
* calf-updates:
  CALF: rebased to CALF master branch
  Moved CALF headers to  proper location
(cherry picked from commit d2a4a9dbd0)
2010-05-21 17:10:23 +02:00
Tobias Doerffel
c4b378c337 Improved .desktop and menu file
Thanks to Fryderyk Dziarmagowski for providing a patch for the .desktop
file of LMMS. It should be standard conform now. An icon is now
explicitely installed in /usr/share/pixmaps so the .desktop and menu
files can specify a generic icon name rather than an absolute file path
to a PNG file of LMMS' default theme.
(cherry picked from commit 4d3040297c)
2010-05-21 15:56:59 +02:00
Tobias Doerffel
908a917021 EnvelopeAndLfoParameters: moved global instances management into helper class
It's a bad style to manage global instances of an object in the object
itself. Therefore introduced a nested helper class which manages all
instances of EnvelopeAndLfoParameters globally. It is now responsible
for global reset/triggers of LFOs. In contrast to previous state, this
is now done thread-safe. Fixes crashes for example while importing
MIDI files.
(cherry picked from commit 5f6c42f19c)
2010-05-21 14:14:00 +02:00
Tobias Doerffel
488337f6eb Engine: introduced deleteHelper() function
The new deleteHelper() template function takes a pointer, saves it
to a temporary, sets the passed pointer to NULL and then deletes the
object it was referring to before. This way we can spot bugs caused by
undesired references to global objects at shutdown more easily.
(cherry picked from commit fe7d5e3d5a)
2010-05-21 14:13:11 +02:00
Tobias Doerffel
95b0c827d1 InlineAutomation: delete attached AutomationPattern immediately
It was not safe to immediately delete the AutomationPattern attached to
an InlineAutomation object before commit "InlineAutomation: delete
attached AutomationPattern immediately" as the AutomationPattern
destructor sometimes fiddles around with AutomationEditor (GUI!).
However this has changed now and this enables us to delete the
AutomationPattern immediately. This fixes some random crashes with
scheduling AutomationPatterns for later deletion.

Closes #2982696.
(cherry picked from commit a9abdc3e75)
2010-05-21 14:11:55 +02:00
Tobias Doerffel
aa992e8e1b AutomationEditor: thread-safe handling of AutomationPattern pointer
It was not possible to call any of the functions of AutomationEditor
from threads other than the main GUI thread as the m_pattern pointer
was not protected by a mutex. It is however desired to be able to call
for example AutomationEditor::setCurrentPattern(...) from different
threads (mainly required when deleting AutomationPatterns in other
threads). Thus made this method and all accesses to the m_pattern
pointer thread-safe.
(cherry picked from commit afba8a7ad4)
2010-05-21 14:11:32 +02:00
Tobias Doerffel
566a3334aa LadspaEffect/Controls: fixed non-working global channel link checkbox
The global channel link checkbox did not work as expected as of the
M/V-split during 0.3.x -> 0.4.x development. Connected the slot
responsible for updating individual ports after toggling checkbox and
fixed the logic behind.

Closes #2964800.
(cherry picked from commit ace2266529)
2010-05-21 01:08:55 +02:00
Tobias Doerffel
c59fe081ee Improved support for MinGW cross compile builds
Cross compile support for Win32 and Win64 has been unified,
simplified and adapted to the new MinGW64-based build environment.
This finally allows to produce working Win64 binaries.
(cherry picked from commit 51103bb674)
2010-05-17 23:43:52 +02:00
Tobias Doerffel
48fdc70893 Sf2Player: disable per-note-panning support for the time being
The per-note-panning support is broken (not sure whether this is a bug
in FluidSynth or our code) and leads to improperly panned sounds all
the time - even with all notes being panned to center. Thus disable it
until we have a proper fix for it.
(cherry picked from commit 22489ae321)
2010-05-17 23:37:29 +02:00
Tobias Doerffel
9b0925432a SpectrumAnalyzer: skip processing if UI is not visible
There's currently no need for analyzing the sound data if
SpectrumAnalyzer's view is not visible. This saves some CPU time
if SpectrumAnalyzer's view is not shown.
(cherry picked from commit 70b80efec1)
2010-05-17 23:36:54 +02:00
Tobias Doerffel
48bbfad53d EffectControl: store visibility information of attached EffectView
For some effects it is helpful to know whether their attached EffectView
is visible or not. This mainly concerns effects that actually do not
touch the sound data but analyze it and display the results.
(cherry picked from commit 9c9bca7098)
2010-05-17 23:36:46 +02:00
Tobias Doerffel
463d73ea48 Merge branch 'calf-updates'
* calf-updates:
  Simplify Multiband Compressor code and fix several bugs.
  Remove zombie small plugin code.
  Remove small plugins together with all the supporting infrastructure.
  Add Doxygen documentation for plugin_registry class.
  More refactoring.
  General refactoring. Start implementing external GUI.
  + LV2: add external UI header (not used for anything yet)
(cherry picked from commit ceacb484a1)
2010-04-03 13:10:54 +02:00
Tobias Doerffel
7c16094811 Fixed spelling errors
Fixed some spelling errors found by Lintian while checking the Debian
package of LMMS. Thanks to Patrick Winnertz for pointing out this issue.
(cherry picked from commit 9fd3dacb67)
2010-01-25 23:27:43 +01:00
Tobias Doerffel
1ad1c99e35 Merge branch 'calf-updates'
* calf-updates:
  CALF: resync source files due to forgotten commits
  + JACK host: implemented Save/Save as...; Open not implemented yet - who could possibly want THAT?
  + EQ: Fix adding EQ plugin using menu in calfjackhost
  Some changes in style, smaller h/v-scale added
  + LADSPA: make plugin IDs unique across Calf plugins, add an install-time check
  + EQ-5: refactoring to eliminate code duplication, side effect: stereo meters
  + EQ-n: shorter names for calfjackhost and others
  + Equalizers: convert lists of per-band parameters using macros (ugly, but effective)
  + EQ-8, EQ-12: reduce copypasta by using a class template
  + Compatibility: workaround for GStreamer crash bug in Ubuntu 9.10 (thanks to Stefan Kost for diagnosing the problem and suggesting the workaround)
  + Compressor simplification, added optional audio ports
(cherry picked from commit c8a444d026)
2010-01-04 00:46:49 +01:00
Tobias Doerffel
be2b6ec9b0 Merge branch 'calf-updates'
* calf-updates:
  + Deesser: use correct threshold
  + Equalizer: remove unused variables
  + Gain reduction module: clearer authorship information
  + Framework: placeholder for waveshaper class (need it to merge further changes from Markus)
(cherry picked from commit 774bd74c77)
2010-01-04 00:46:44 +01:00
Tobias Doerffel
595d50fc20 Merge branch 'calf-updates'
* calf-updates:
  New widget: Tube with light and falloff
  New Deesser, some minor bugs in sc-comp
  Sidechain compressor bugs/settings, 3 equalizer
  Minor bugs, sidechain frequency display
  New FX: Sidechain compressor
  New button (big mama), VU-meters with falloff and hold, bug in delay (value)
  In the middle of nowhere
  Fully redesigned
  Sidebars, GUI layouts, black buttons again, input knob for compressor
  Added 6 new LED's and peak hold function for VU-meters
  meter_gain in gain_reduction module with falloff
(cherry picked from commit 083c2e1b0b)
2010-01-04 00:46:37 +01:00
Tobias Doerffel
3348a4378f Base64: realize decode() as template function
In Base64::decode() we mess around with pointers so it's more type-safe
to realize everything as a template function. This also silences compiler
warning about dereferencing type-punned pointer in Vibed plugin.
(cherry picked from commit 81cea79c38)
2009-12-26 01:09:56 +01:00
5538 changed files with 999682 additions and 881007 deletions

84
.clang-format Normal file
View File

@@ -0,0 +1,84 @@
---
# Language
Language: Cpp
Standard: c++20
# 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
...

50
.clang-tidy Normal file
View File

@@ -0,0 +1,50 @@
---
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
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

5
.gitattributes vendored Normal file
View File

@@ -0,0 +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

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
---
custom: https://lmms.io/get-involved/#donate

91
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,91 @@
# 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

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
---
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,32 @@
# 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

3
.github/no-response.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
---
# Label requiring a response
responseRequiredLabel: "response required"

490
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,490 @@
---
name: build
'on': [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
linux-x86_64:
name: linux-x86_64
runs-on: ubuntu-22.04
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
-DWANT_DEBUG_CPACK=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Configure git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Clone fltk
uses: actions/checkout@v4
with:
repository: fltk/fltk
path: fltk
ref: 27d991f046bdebb12bfd58f7c05a19f135979c29
fetch-depth: 1
- name: Configure winehq
run: |
sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
wget -O - https://dl.winehq.org/wine-builds/winehq.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key -
sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources
- name: Install packages
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends \
$(xargs < .github/workflows/deps-ubuntu-24.04-gcc.txt)
sudo apt-get install -y --install-recommends g++-multilib gcc-multilib winehq-devel wine-devel-dev
sudo apt-get install -y --install-recommends \
$(xargs < .github/workflows/deps-ubuntu-24.04-fltk.txt)
- 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 fltk
run: |
cmake -S fltk -B fltk/build -DFLTK_BUILD_SHARED_LIBS=ON -DFLTK_BACKEND_WAYLAND=ON \
-DFLTK_USE_LIBDECOR_GTK=OFF -DFLTK_BUILD_TEST=OFF -DFLTK_BUILD_GL=OFF
- name: Install fltk
run: |
cmake --build fltk/build
sudo cmake --install fltk/build --prefix /usr
- name: Configure
run: |
ccache --zero-stats
source /opt/qt5*/bin/qt5*-env.sh || true
cmake -S . \
-B build \
$CMAKE_OPTS
- 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@v4
with:
name: linux
path: build/lmms-*.AppImage
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --show-config
echo "[ccache stats]"
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
linux-arm64:
name: linux-arm64
runs-on: ubuntu-24.04-arm
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
-DWANT_DEBUG_CPACK=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
DEBIAN_FRONTEND: noninteractive
steps:
- name: Configure git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Clone fltk
uses: actions/checkout@v4
with:
repository: fltk/fltk
path: fltk
ref: 27d991f046bdebb12bfd58f7c05a19f135979c29
fetch-depth: 1
- name: Install system packages
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends \
$(xargs < .github/workflows/deps-ubuntu-24.04-gcc.txt)
sudo apt-get install -y --install-recommends \
$(xargs < .github/workflows/deps-ubuntu-24.04-fltk.txt)
- 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 fltk
run: |
cmake -S fltk -B fltk/build -DFLTK_BUILD_SHARED_LIBS=ON -DFLTK_BACKEND_WAYLAND=ON \
-DFLTK_USE_LIBDECOR_GTK=OFF -DFLTK_BUILD_TEST=OFF -DFLTK_BUILD_GL=OFF
- name: Install fltk
run: |
cmake --build fltk/build
sudo cmake --install fltk/build --prefix /usr
- name: Configure
run: |
ccache --zero-stats
cmake -S . \
-B build \
$CMAKE_OPTS
- 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@v4
with:
name: linux-arm64
path: build/lmms-*.AppImage
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --show-config
echo "[ccache stats]"
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
macos:
strategy:
fail-fast: false
matrix:
arch: [ x86_64, arm64 ]
include:
- arch: x86_64
os: macos-15-intel
xcode: "16.4"
- arch: arm64
os: macos-15
xcode: "16.4"
name: macos-${{ matrix.arch }}
runs-on: ${{ matrix.os }}
env:
CMAKE_OPTS: >-
-Werror=dev
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j3
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.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
id: cache-homebrew
uses: actions/cache/restore@v3
with:
key: n/a - only restore from restore-keys
restore-keys: |
homebrew-${{ matrix.arch }}-
path: ~/Library/Caches/Homebrew/downloads
- 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: ~/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
source .github/workflows/macos-env.sh
mkdir build
cmake -S . \
-B build \
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
$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 package
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos-${{ matrix.arch }}
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
if: ${{ steps.cache-homebrew.outputs.cache-matched-key != env.key }}
uses: actions/cache/save@v3
with:
key: ${{ env.key }}
path: ~/Library/Caches/Homebrew/downloads
env:
key: "homebrew-${{ matrix.arch }}\
-${{ hashFiles('Brewfile.lock.json') }}"
mingw:
name: mingw64
runs-on: ubuntu-latest
env:
CMAKE_OPTS: >-
-Werror=dev
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Configure apt
run: |
sudo sh -c 'echo "deb http://ppa.launchpad.net/tobydox/mingw-w64/ubuntu focal main" > \
/etc/apt/sources.list.d/tobydox-mingw-w64.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 72931B477E22FEFD47F8DECE02FE5F12ADDE29B2
sudo apt-get update -y
- name: Configure git
run: 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 }}-64-${{ github.ref }}\
-${{ github.run_id }}"
restore-keys: |
ccache-${{ github.job }}-64-${{ github.ref }}-
ccache-${{ github.job }}-64-
path: ~/.ccache
- name: Install dependencies
run: |
sudo apt-get install -y --no-install-recommends \
$(xargs < .github/workflows/deps-ubuntu-24.04-mingw.txt)
- name: Configure
run: |
ccache --zero-stats
cmake -S . \
-B build \
-DCMAKE_TOOLCHAIN_FILE="./cmake/toolchains/MinGW-W64-64.cmake" \
$CMAKE_OPTS
- name: Build
run: cmake --build build
- name: Package
run: cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: mingw64
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
env:
CCACHE_MAXSIZE: 500M
msvc:
name: msvc-x64
runs-on: windows-2022
env:
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-msvc-x86_64-${{ hashFiles('vcpkg.json') }}
restore-keys: |
vcpkg-msvc-x86_64-
path: build\vcpkg_installed
- name: Cache ccache data
uses: actions/cache@v3
with:
# yamllint disable rule:line-length
key: "ccache-${{ github.job }}-x64-${{ github.ref }}\
-${{ github.run_id }}"
restore-keys: |
ccache-${{ github.job }}-x64-${{ github.ref }}-
ccache-${{ github.job }}-x64-
path: ~\AppData\Local\ccache
# yamllint enable rule:line-length
- name: Install tools
run: choco install ccache
- name: Install Qt
uses: jurplel/install-qt-action@d325aaf2a8baeeda41ad0b5d39f84a6af9bcf005
with:
version: '6.8.*'
arch: "win64_msvc2022_64"
archives: qtbase qtsvg qttools
cache: true
- name: Set up build environment
uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
with:
arch: x64
- name: Configure
run: |
ccache --zero-stats
mkdir build -Force
cmake -S . `
-B build `
-G Ninja `
--toolchain C:/vcpkg/scripts/buildsystems/vcpkg.cmake `
-Werror=dev `
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
-DWANT_QT6=ON `
-DUSE_COMPILE_CACHE=ON `
-DUSE_WERROR=ON `
-DVCPKG_TARGET_TRIPLET="x64-windows" `
-DVCPKG_HOST_TRIPLET="x64-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@v4
with:
name: msvc-x64
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
msys2:
name: windows-arm64
runs-on: windows-11-arm
defaults:
run:
shell: msys2 {0}
env:
CMAKE_OPTS: >-
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
-DCPACK_NSIS_EXECUTABLE=/clang64/bin/makensis.exe
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
MAKEFLAGS: -j2
steps:
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Cache msys2 dependencies
id: cache-deps
uses: actions/cache@v3
with:
key: windows-arm64-${{ hashFiles('.github/workflows/deps-msys2-clangarm64.txt') }}
restore-keys: |
windows-arm64-
path: \msys64\var\cache\pacman\pkg
- name: Install msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
update: true
- name: Install dependencies
run: pacman --needed --noconfirm -S - < .github/workflows/deps-msys2-clangarm64.txt
- 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: ~\AppData\Local\ccache
- name: Configure
run: |
/clang64/bin/ccache.exe --zero-stats
cmake -B build $CMAKE_OPTS
- name: Build
run: cmake --build build
- name: Package
run: cmake --build build --target package
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: windows-arm64
path: build\lmms-*.exe
- name: Trim ccache and print statistics
run: |
/clang64/bin/ccache.exe --cleanup
echo "[ccache config]"
/clang64/bin/ccache.exe --show-config
echo "[ccache stats]"
/clang64/bin/ccache.exe --show-stats --verbose
env:
CCACHE_MAXSIZE: 500MB

40
.github/workflows/checks.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
---
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
yamllint:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v3
- name: Run yamllint
run: for i in $(git ls-files '*.yml'); do yamllint $i; done

View File

@@ -0,0 +1,25 @@
base
base-devel
filesystem
git
mingw-w64-clang-aarch64-SDL2
mingw-w64-clang-aarch64-ccache
mingw-w64-clang-aarch64-clang
mingw-w64-clang-aarch64-cmake
mingw-w64-clang-aarch64-fftw
mingw-w64-clang-aarch64-fltk
mingw-w64-clang-aarch64-fluidsynth
mingw-w64-clang-aarch64-libgig
mingw-w64-clang-aarch64-libsamplerate
mingw-w64-clang-aarch64-libsndfile
mingw-w64-clang-aarch64-lilv
mingw-w64-clang-aarch64-lv2
mingw-w64-clang-aarch64-qt5-base
mingw-w64-clang-aarch64-qt5-svg
mingw-w64-clang-aarch64-suil
mingw-w64-clang-aarch64-stk
mingw-w64-clang-x86_64-nsis
mingw-w64-clang-x86_64-ccache
msys2-runtime
perl-List-MoreUtils
perl-XML-Parser

View File

@@ -0,0 +1,3 @@
libcairo2-dev
libpango1.0-dev
wayland-protocols

View File

@@ -0,0 +1,52 @@
binutils
ca-certificates
ccache
cmake
file
fluid
gcc
git
gpg
g++
libasound2-dev
libc6-dev
libfftw3-dev
libfluidsynth-dev
libgig-dev
libgtk2.0-0
libjack-jackd2-dev
liblilv-dev
liblist-moreutils-perl
libmp3lame-dev
libogg-dev
libqt5svg5-dev
libqt5x11extras5-dev
libsamplerate0-dev
libsdl2-dev
libsndfile1-dev
libsoundio-dev
libstk-dev
libsuil-dev
libvorbis-dev
libx11-xcb-dev
libxcb-keysyms1-dev
libxcb-util0-dev
libxft-dev
libxinerama-dev
libxml2-utils
libxml-perl
lsb-release
lv2-dev
make
perl
portaudio19-dev
qt5-qmake
qtbase5-dev
qtbase5-dev-tools
qtbase5-private-dev
qttools5-dev-tools
qtwayland5
software-properties-common
ssh-client
stk
wget

View File

@@ -0,0 +1,32 @@
binutils-mingw-w64
ccache
cmake
fftw-mingw-w64
file
flac-mingw-w64
fltk-mingw-w64
fluidsynth-mingw-w64
g++-mingw-w64-i686
g++-mingw-w64-x86-64
gcc-mingw-w64
gcc-mingw-w64-i686
gcc-mingw-w64-x86-64
git
glib2-mingw-w64
lame-mingw-w64
libgig-mingw-w64
liblist-moreutils-perl
libsamplerate-mingw-w64
libsndfile-mingw-w64
libsoundio-mingw-w64
libvorbis-mingw-w64
libxml-parser-perl
libz-mingw-w64-dev
mingw-w64-tools
nsis
portaudio-mingw-w64
qt5base-mingw-w64
qt5svg-mingw-w64
qttools5-dev-tools
sdl2-mingw-w64
stk-mingw-w64

121
.github/workflows/macos-env.sh vendored Executable file
View File

@@ -0,0 +1,121 @@
#!/usr/bin/env bash
# Calculate macOS-specific environment variables
# 1. Sets the value of MACOSX_DEPLOYMENT_TARGET by matching another binary on the system.
#
# Usage:
# source macos-env.sh [package_manager] [package_name] [package_version]
#
# Example:
# source macos-env.sh brew qt 5
# source macos-env.sh port wget
set -e
unset package_manager package_name package_version
# Obtain the package manager
if [ -n "$1" ]; then
# Set package manager to first parameter
package_manager="$1"
case "$package_manager" in
"homebrew")
package_manager="brew"
;;
"macports")
package_manager="port"
;;
esac
# Test the command
if ! command -v "$package_manager" &> /dev/null; then
echo "ERROR: Command '$package_manager' was not found, aborting." 1>&2
exit 1
fi
else
# Try to guess the package manager
if command -v brew &> /dev/null; then
package_manager="brew"
elif command -v port &> /dev/null; then
package_manager="port"
else
echo "WARNING: A compatible package manager wasn't found, we'll search for '$package_name' on \$PATH instead" 1>&2
fi
fi
# Obtain the package name
if [ -n "$2" ]; then
package_name="$2"
else
package_name="qt"
fi
# Special fallback handling for when package_name != binary_name, adjust as needed
if [ "$package_name" = "qt" ]; then
binary_name="qmake"
elif [ "$package_name" = "fltk" ]; then
binary_name="fluid"
else
# Assume the binary_name is the package_name
binary_name="$package_name"
fi
# Obtain the package version
if [ -n "$3" ]; then
package_version="$3"
else
if [ "$package_name" = "qt" ]; then
# Sane fallback for qt, adjust as needed
package_version="5"
fi
fi
# Format $package_name to include $package_version
if [ -n "$package_version" ]; then
# Specify qt version in package name
case "$package_manager" in
"port")
case "$package_name" in
"qt")
# Special handling for "qt5-qtbase"
package_name="$package_name${package_version}-${package_name}base"
;;
*)
package_name="$package_name$package_version"
;;
esac
;;
"brew" | *)
package_name="$package_name@$package_version"
;;
esac
fi
# Determine MACOSX_DEPLOYMENT_TARGET
if [ -n "$package_manager" ]; then
# Specify qt version in package name
case "$package_manager" in
"port")
binary_path="$(port contents "$package_name" |grep "bin/${binary_name}\$" |head -1 |sed -e 's/^[[:space:]]*//')"
;;
"brew" | *)
binary_path="$("$package_manager" --prefix "$package_name")/bin/$binary_name"
;;
esac
otool_out="$(otool -l "$binary_path")"
else
otool_out="$(otool -l "$(which "$binary_name")")"
fi
echo "Using '$binary_name' (from $package_manager) to calculate the macOS deployment target..."
min_ver="$(echo "$otool_out" |grep "minos" || echo "$otool_out" |grep -A 2 "LC_VERSION_MIN_MACOS"|grep "version")"
MACOSX_DEPLOYMENT_TARGET="$(echo "$min_ver"|awk '{print $2}')"
# Echo the lowest target macOS version supported by this SDK
sdk_settings="$(xcrun --sdk macosx --show-sdk-path)/SDKSettings.plist"
sdk_min="$(plutil -extract SupportedTargets.macosx.MinimumDeploymentTarget raw "$sdk_settings")"
echo "- Lowest SDK supported by this environment is '$sdk_min' based on $sdk_settings"
# Echo the sane target macOS version based on another build dependency
export MACOSX_DEPLOYMENT_TARGET
echo "- Exporting 'MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET' based on $binary_name"

14
.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
/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
/data/locale/*.qm
Brewfile.lock.json
/.cache/
compile_commands.json

52
.gitmodules vendored Normal file
View File

@@ -0,0 +1,52 @@
[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
branch = release
[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 "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
[submodule "plugins/MidiImport/portsmf"]
path = plugins/MidiImport/portsmf
url = https://github.com/portsmf/portsmf

33
.mailmap Normal file
View File

@@ -0,0 +1,33 @@
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>
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@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

10
.tx/config Normal file
View File

@@ -0,0 +1,10 @@
[main]
host = https://app.transifex.com
minimum_perc = 51
#Need to finish at least 51% before merging back
[o:lmms:p:lmms:r:lmms]
file_filter = data/locale/<lang>.ts
source_file = data/locale/en.ts
source_lang = en
type = QT

3
.yamllint Normal file
View File

@@ -0,0 +1,3 @@
rules:
line-length:
max: 120 # be conforming to LMMS coding rules

35
AUTHORS
View File

@@ -1,35 +0,0 @@
Tobias Doerffel
<tobydox/at/users/dot/sourceforge/dot/net>
Maintainer, main-development, artwork etc.
Paul Giblock
<drfaygo/at/gmail/dot/com>
development
Danny McRae
<khjklujn/at/yahoo.com>
development
Javier Serrano Polo
<jasp00/at/terra/dot/es>
development
Andrew Kelley
<superjoe30/at/gmail/dot/com>
development
Andreas Brandmaier
<andy/at/brandmaier/dot/de>
BitInvader plugin
Juan Fabián Simón
<treees@gmail.com>
version 4.0 plugin artwork
Sebastian Tilsch
<djcompilation/at/gmx/dot/de>
recording of many samples
gabriel
<kryos1/at/shaw/dot/ca>
additional artwork

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 "pkgconf"
brew "portaudio"
brew "qt@5"
brew "sdl2"
brew "stk"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

30
INSTALL
View File

@@ -1,30 +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
This way 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.)

107
README
View File

@@ -1,107 +0,0 @@
Linux MultiMedia Studio 0.4.6
==============================
Copyright (c) 2004-2009 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
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 at
http://lmms.sourceforge.net/development.php
or in the Wiki:
http://lmms.sourceforge.net/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.

57
README.md Normal file
View File

@@ -0,0 +1,57 @@
<div align="center">
<h1>
<img src="https://raw.githubusercontent.com/LMMS/artwork/master/Icon%20%26%20Mimetypes/lmms-64x64.svg" alt="LMMS Logo"><br>LMMS
</h1>
<p>Cross-platform music production software</p>
<p>
<a href="https://lmms.io/">Website</a>
⦁︎
<a href="https://github.com/LMMS/lmms/releases">Releases</a>
⦁︎
<a href="https://github.com/LMMS/lmms/wiki">Developer wiki</a>
⦁︎
<a href="https://lmms.io/documentation">User manual</a>
⦁︎
<a href="https://lmms.io/showcase/">Showcase</a>
⦁︎
<a href="https://lmms.io/lsp/">Sharing platform</a>
</p>
<p>
<a href="https://github.com/LMMS/lmms/actions/workflows/build.yml"><img src="https://github.com/LMMS/lmms/actions/workflows/build.yml/badge.svg" alt="Build status"></a>
<a href="https://lmms.io/download"><img src="https://img.shields.io/github/release/LMMS/lmms.svg?maxAge=3600" alt="Latest stable release"></a>
<a href="https://github.com/LMMS/lmms/releases"><img src="https://img.shields.io/github/downloads/LMMS/lmms/total.svg?maxAge=3600" alt="Overall downloads on Github"></a>
<a href="https://discord.gg/3sc5su7"><img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Join the chat at Discord"></a>
<a href="https://www.transifex.com/lmms/lmms/"><img src="https://img.shields.io/badge/localise-on_transifex-green.svg"></a>
</p>
</div>
What is LMMS?
--------------
LMMS is an open-source cross-platform digital audio workstation designed for music production. It includes an advanced Piano Roll, Beat Sequencer, Song Editor, and Mixer for composing, arranging, and mixing music. It comes with 15+ synthesizer plugins by default, along with VST2 and SoundFont2 support.
Features
---------
* Song-Editor for arranging melodies, samples, patterns, and automation
* Pattern-Editor for creating beats and patterns
* An easy-to-use Piano-Roll for editing patterns and melodies
* 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, VST2 (instruments and effects), LADSPA, LV2, GUS Patches, and full MIDI support
* MIDI file importing and exporting
Building
---------
See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling)
Join LMMS-development
----------------------
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).
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,4 +0,0 @@
MINGW=/opt/mingw32
export PATH=$PATH:$MINGW/bin
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win32Toolchain.cmake

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

34
cmake/CMakeLists.txt Normal file
View File

@@ -0,0 +1,34 @@
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}")
SET(CPACK_PACKAGE_EXECUTABLES "${CMAKE_PROJECT_NAME}" "${PROJECT_NAME_UCASE} binary")
# Disable strip for Debug|RelWithDebInfo
if(CMAKE_BUILD_TYPE MATCHES "Deb")
unset(CPACK_STRIP_FILES)
else()
set(CPACK_STRIP_FILES TRUE)
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,38 @@
IF(CMAKE_OSX_ARCHITECTURES)
SET(DMG_ARCH "${CMAKE_OSX_ARCHITECTURES}")
ELSEIF(IS_ARM64)
# Target arch is host arch
SET(DMG_ARCH "arm64")
ELSE()
# Fallback to Intel
SET(DMG_ARCH "x86_64")
ENDIF()
# Standard CPack options
set(CPACK_GENERATOR "External" PARENT_SCOPE)
set(CPACK_EXTERNAL_ENABLE_STAGING TRUE PARENT_SCOPE)
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}-${DMG_ARCH}")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}" PARENT_SCOPE)
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/MacDeployQt.cmake" PARENT_SCOPE)
# disable cpack's strip: causes missing symbols on macOS
set(CPACK_STRIP_FILES_ORIG "${CPACK_STRIP_FILES}" PARENT_SCOPE)
set(CPACK_STRIP_FILES FALSE PARENT_SCOPE)
# Custom vars to expose to Cpack
# must be prefixed with "CPACK_" per https://stackoverflow.com/a/46526757/3196753)
set(CPACK_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
set(CPACK_BINARY_DIR "${CMAKE_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_SOURCE_DIR "${CMAKE_SOURCE_DIR}" PARENT_SCOPE)
set(CPACK_QMAKE_EXECUTABLE "${QT_QMAKE_EXECUTABLE}" PARENT_SCOPE)
set(CPACK_CARLA_LIBRARIES "${CARLA_LIBRARIES}" PARENT_SCOPE)
set(CPACK_PROJECT_NAME "${PROJECT_NAME}" PARENT_SCOPE)
set(CPACK_PROJECT_VERSION "${VERSION}" PARENT_SCOPE)
set(CPACK_PROJECT_NAME_UCASE "${PROJECT_NAME_UCASE}" PARENT_SCOPE)
set(CPACK_PROJECT_URL "${PROJECT_URL}" PARENT_SCOPE)
set(CPACK_SUIL_MODULES "${Suil_MODULES}" PARENT_SCOPE)
set(CPACK_SUIL_MODULES_PREFIX "${Suil_MODULES_PREFIX}" PARENT_SCOPE)
if(CMAKE_VERSION VERSION_LESS "3.19")
message(WARNING "DMG creation requires at least CMake 3.19")
endif()

View File

@@ -0,0 +1,175 @@
# Create a macOS .dmg desktop installer using macdeployqt
#
# Copyright (c) 2025, 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.
# Variables must be prefixed with "CPACK_" to be visible here
set(lmms "${CPACK_PROJECT_NAME}")
set(APP "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${CPACK_PROJECT_NAME_UCASE}.app")
# Toggle command echoing & verbosity
# 0 = no output, 1 = error/warning, 2 = normal, 3 = debug
if(DEFINED ENV{CPACK_DEBUG})
set(CPACK_DEBUG "$ENV{CPACK_DEBUG}")
endif()
if(NOT CPACK_DEBUG)
set(VERBOSITY 1)
set(COMMAND_ECHO NONE)
else()
set(VERBOSITY 2)
set(COMMAND_ECHO STDOUT)
endif()
# Detect release|debug build
if(NOT CPACK_STRIP_FILES_ORIG)
# -use-debug-libs implies -no-strip
if(CPACK_QMAKE_EXECUTABLE MATCHES "/homebrew/|/usr/local")
message(STATUS "Homebrew does not provide debug qt libraries, replacing \"-use-debug-libs\" with \"-no-strip\" instead")
set(USE_DEBUG_LIBS -no-strip)
else()
set(USE_DEBUG_LIBS -use-debug-libs)
endif()
endif()
# Cleanup CPack "External" json, txt files, old DMG files
file(GLOB cleanup "${CPACK_BINARY_DIR}/${lmms}-*.json"
"${CPACK_BINARY_DIR}/${lmms}-*.dmg"
"${CPACK_BINARY_DIR}/install_manifest.txt")
list(SORT cleanup)
file(REMOVE ${cleanup})
# Create bundle structure
file(MAKE_DIRECTORY "${APP}/Contents/MacOS")
file(MAKE_DIRECTORY "${APP}/Contents/Frameworks")
file(MAKE_DIRECTORY "${APP}/Contents/Resources")
# Fix layout
file(RENAME "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/lib" "${APP}/Contents/lib")
file(RENAME "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/share" "${APP}/Contents/share")
file(RENAME "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/bin" "${APP}/Contents/bin")
# Move binaries into Contents/MacOS
file(RENAME "${APP}/Contents/bin/${lmms}" "${APP}/Contents/MacOS/${lmms}")
file(RENAME "${APP}/Contents/lib/${lmms}/RemoteZynAddSubFx" "${APP}/Contents/MacOS/RemoteZynAddSubFx")
file(REMOVE_RECURSE "${APP}/Contents/bin")
file(REMOVE_RECURSE "${APP}/Contents/share/man1")
file(REMOVE_RECURSE "${APP}/Contents/include")
# Copy missing files
# Convert https://lmms.io to io.lmms
string(REPLACE "." ";" mime_parts "${CPACK_PROJECT_URL}")
string(REPLACE ":" ";" mime_parts "${mime_parts}")
string(REPLACE "/" "" mime_parts "${mime_parts}")
list(REMOVE_AT mime_parts 0)
list(REVERSE mime_parts)
list(JOIN mime_parts "." MACOS_MIMETYPE_ID)
configure_file("${CPACK_CURRENT_SOURCE_DIR}/lmms.plist.in" "${APP}/Contents/Info.plist" @ONLY)
file(COPY "${CPACK_CURRENT_SOURCE_DIR}/project.icns" DESTINATION "${APP}/Contents/Resources")
file(COPY "${CPACK_CURRENT_SOURCE_DIR}/icon.icns" DESTINATION "${APP}/Contents/Resources")
file(RENAME "${APP}/Contents/Resources/icon.icns" "${APP}/Contents/Resources/${lmms}.icns")
# Copy Suil modules
if(CPACK_SUIL_MODULES)
set(SUIL_MODULES_TARGET "${APP}/Contents/Frameworks/${CPACK_SUIL_MODULES_PREFIX}")
file(MAKE_DIRECTORY "${SUIL_MODULES_TARGET}")
file(COPY ${CPACK_SUIL_MODULES} DESTINATION "${SUIL_MODULES_TARGET}")
endif()
# Make all libraries writable for macdeployqt
file(CHMOD_RECURSE "${APP}/Contents" PERMISSIONS
OWNER_EXECUTE OWNER_WRITE OWNER_READ
GROUP_EXECUTE GROUP_WRITE GROUP_READ
WORLD_READ)
# Qt6: Fix @rpath bug https://github.com/orgs/Homebrew/discussions/2823
include(CreateSymlink)
get_filename_component(QTBIN "${CPACK_QMAKE_EXECUTABLE}" DIRECTORY)
get_filename_component(QTDIR "${QTBIN}" DIRECTORY)
create_symlink("${QTDIR}/lib" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/lib")
# Replace @rpath with @loader_path for Carla
execute_process(COMMAND install_name_tool -change
"@rpath/libcarlabase.dylib"
"@loader_path/libcarlabase.dylib"
"${APP}/Contents/lib/${lmms}/libcarlapatchbay.so"
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
execute_process(COMMAND install_name_tool -change
"@rpath/libcarlabase.dylib"
"@loader_path/libcarlabase.dylib"
"${APP}/Contents/lib/${lmms}/libcarlarack.so"
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
# Build list of executables to inform macdeployqt about
# e.g. -executable=foo.dylib -executable=bar.dylib
file(GLOB LIBS "${APP}/Contents/lib/${lmms}/*.so")
# Inform macdeployqt about LADSPA plugins; may depend on bundled fftw3f, etc.
file(GLOB LADSPA "${APP}/Contents/lib/${lmms}/ladspa/*.so")
# Inform macdeployqt about remote plugins
file(GLOB REMOTE_PLUGINS "${APP}/Contents/MacOS/*Remote*")
# Collect, sort and dedupe all libraries
list(APPEND LIBS ${LADSPA})
list(APPEND LIBS ${REMOTE_PLUGINS})
list(APPEND LIBS ${CPACK_SUIL_MODULES})
list(REMOVE_DUPLICATES LIBS)
list(SORT LIBS)
# Construct macdeployqt parameters
foreach(_lib IN LISTS LIBS)
if(EXISTS "${_lib}")
list(APPEND EXECUTABLES "-executable=${_lib}")
endif()
endforeach()
# Call macdeployqt
get_filename_component(QTBIN "${CPACK_QMAKE_EXECUTABLE}" DIRECTORY)
message(STATUS "Calling ${QTBIN}/macdeployqt ${APP} [... executables]")
execute_process(COMMAND "${QTBIN}/macdeployqt" "${APP}" ${EXECUTABLES}
-verbose=${VERBOSITY}
${USE_DEBUG_LIBS}
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
# Cleanup symlink
file(REMOVE "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/lib")
# Remove dummy carla libs, relink to a sane location (e.g. /Applications/Carla.app/...)
# (must be done after calling macdeployqt)
file(GLOB CARLALIBS "${APP}/Contents/lib/${lmms}/libcarla*")
foreach(_carlalib IN LISTS CARLALIBS)
foreach(_lib "${CPACK_CARLA_LIBRARIES}")
set(_oldpath "../../Frameworks/lib${_lib}.dylib")
set(_newpath "Carla.app/Contents/MacOS/lib${_lib}.dylib")
execute_process(COMMAND install_name_tool -change
"@loader_path/${_oldpath}"
"@executable_path/../../../${_newpath}"
"${_carlalib}"
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
file(REMOVE "${APP}/Contents/Frameworks/lib${_lib}.dylib")
endforeach()
endforeach()
# Call ad-hoc codesign manually (CMake offers this as well)
execute_process(COMMAND codesign --force --deep --sign - "${APP}"
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
# Create DMG
# appdmg won't allow volume names > 27 char https://github.com/LinusU/node-alias/issues/7
find_program(APPDMG_BIN appdmg REQUIRED)
string(SUBSTRING "${CPACK_PROJECT_NAME_UCASE} ${CPACK_PROJECT_VERSION}" 0 27 APPDMG_VOLUME_NAME)
# We'll configure this file twice (again in MacDeployQt.cmake once we know CPACK_TEMPORARY_INSTALL_DIRECTORY)
configure_file("${CPACK_CURRENT_SOURCE_DIR}/appdmg.json.in" "${CPACK_CURRENT_BINARY_DIR}/appdmg.json" @ONLY)
execute_process(COMMAND "${APPDMG_BIN}"
"${CPACK_CURRENT_BINARY_DIR}/appdmg.json"
"${CPACK_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.dmg"
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)

View File

@@ -0,0 +1,9 @@
{
"title": "@APPDMG_VOLUME_NAME@",
"background": "@CPACK_SOURCE_DIR@/cmake/apple/background.png",
"icon-size": 128,
"contents": [
{ "x": 139, "y": 200, "type": "file", "path": "@CPACK_TEMPORARY_INSTALL_DIRECTORY@/@CPACK_PROJECT_NAME_UCASE@.app" },
{ "x": 568, "y": 200, "type": "link", "path": "/Applications" }
]
}

BIN
cmake/apple/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
cmake/apple/icon.icns Normal file

Binary file not shown.

153
cmake/apple/lmms.plist.in Normal file
View File

@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIconFile</key>
<string>@CPACK_PROJECT_NAME@</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>@CPACK_PROJECT_NAME_UCASE@ @CPACK_PROJECT_VERSION@</string>
<!--
#############################################################
# Apple Creator Code Registered Application Signatures #
#############################################################
# Company: LMMS Foundation #
# Registrant: tres.finocchiaro@gmail.com #
# ASCII Code: LMMS #
# HEX: 4C4D4D53 #
#############################################################
# Contact Apple Developer Support at cfreg@apple.com #
# with any requested changes #
#############################################################
-->
<key>CFBundleSignature</key>
<string>@CPACK_PROJECT_NAME_UCASE@</string>
<key>CFBundleExecutable</key>
<string>@CPACK_PROJECT_NAME@</string>
<key>CFBundleVersion</key>
<string>@CPACK_PROJECT_VERSION@</string>
<key>CFBundleShortVersionString</key>
<string>@VERSIONCPACK_PROJECT_VERSION@</string>
<key>CFBundleName</key>
<string>@CPACK_PROJECT_NAME_UCASE@</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleIdentifier</key>
<string>@MACOS_MIMETYPE_ID@</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>mmpz</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>project</string>
<key>CFBundleTypeName</key>
<string>@CPACK_PROJECT_NAME_UCASE@ Project</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>mmpz</string>
</array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/x-@CPACK_PROJECT_NAME@-project</string>
</array>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>mmp</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>project</string>
<key>CFBundleTypeName</key>
<string>@CPACK_PROJECT_NAME_UCASE@ Project (uncompressed)</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>mmp</string>
</array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/x-@CPACK_PROJECT_NAME@-project</string>
</array>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>@MACOS_MIMETYPE_ID@.mmpz</string>
<key>UTTypeReferenceURL</key>
<string>@CPACK_PROJECT_URL@</string>
<key>UTTypeDescription</key>
<string>@CPACK_PROJECT_VERSIONPROJECT_NAME_UCASE@ Project</string>
<key>UTTypeIconFile</key>
<string>project</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>mmpz</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>@MACOS_MIMETYPE_ID@.mmp</string>
<key>UTTypeReferenceURL</key>
<string>@CPACK_PROJECT_URL@</string>
<key>UTTypeDescription</key>
<string>@CPACK_PROJECT_NAME_UCASE@ Project (uncompressed)</string>
<key>UTTypeIconFile</key>
<string>project</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.xml</string>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>mmp</string>
</array>
</dict>
</dict>
</array>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>NSRequiresAquaSystemAppearance</key>
<string>False</string>
</dict>
</plist>

BIN
cmake/apple/project.icns Normal file

Binary file not shown.

View File

@@ -0,0 +1,52 @@
SET(PLUGIN_FILES "")
IF(LMMS_BUILD_WIN32)
INSTALL(FILES $<TARGET_FILE:Qt${QT_VERSION_MAJOR}::QWindowsIntegrationPlugin> DESTINATION platforms)
INSTALL(FILES $<TARGET_FILE:Qt${QT_VERSION_MAJOR}::QSvgIconPlugin> DESTINATION iconengines)
INSTALL(FILES $<TARGET_FILE:Qt${QT_VERSION_MAJOR}::QSvgPlugin> DESTINATION imageformats)
INSTALL(FILES $<TARGET_FILE:Qt${QT_VERSION_MAJOR}::Svg> DESTINATION .)
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")
list(SORT RAWWAVES)
install(FILES ${RAWWAVES} DESTINATION "${DATA_DIR}/stk/rawwaves")
else()
message(WARNING "Can't find STK rawwave root!")
endif()
endif()

View File

@@ -0,0 +1,27 @@
# List of DLLs considered to be system libraries.
# This is needed when cross-compiling for Windows.
ADVAPI32.dll
COMCTL32.dll
comdlg32.dll
d3d11.dll
dwmapi.dll
dxgi.dll
GDI32.dll
IMM32.dll
KERNEL32.dll
MPR.DLL
msvcrt.dll
netapi32.dll
ole32.dll
OLEAUT32.dll
OPENGL32.DLL
SHELL32.dll
USER32.dll
userenv.dll
UxTheme.dll
VERSION.dll
WINMM.DLL
WS2_32.dll
RPCRT4.dll
dsound.dll
SETUPAPI.dll

View File

@@ -0,0 +1,51 @@
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")
# Preserve old CPack behavior
if(WANT_CPACK_TARBALL)
message(STATUS "Skipping AppImage creation")
return()
endif()
# Standard CPack options
set(CPACK_GENERATOR "External" PARENT_SCOPE)
set(CPACK_EXTERNAL_ENABLE_STAGING true PARENT_SCOPE)
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-linux-${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}" PARENT_SCOPE)
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/LinuxDeploy.cmake" PARENT_SCOPE)
# Custom vars to expose to Cpack
# must be prefixed with "CPACK_" per https://stackoverflow.com/a/46526757/3196753)
set(CPACK_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
set(CPACK_BINARY_DIR "${CMAKE_BINARY_DIR}" PARENT_SCOPE)
set(CPACK_SOURCE_DIR "${CMAKE_SOURCE_DIR}" PARENT_SCOPE)
set(CPACK_QMAKE_EXECUTABLE "${QT_QMAKE_EXECUTABLE}" PARENT_SCOPE)
set(CPACK_CARLA_LIBRARIES "${CARLA_LIBRARIES}" PARENT_SCOPE)
set(CPACK_WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIRS}" PARENT_SCOPE)
set(CPACK_WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIRS}" PARENT_SCOPE)
set(CPACK_PROJECT_NAME "${PROJECT_NAME}" PARENT_SCOPE)
set(CPACK_PROJECT_NAME_UCASE "${PROJECT_NAME_UCASE}" PARENT_SCOPE)
set(CPACK_PROJECT_VERSION "${VERSION}" PARENT_SCOPE)
set(CPACK_CMAKE_COMMAND "${CMAKE_COMMAND}" PARENT_SCOPE)
set(CPACK_SUIL_MODULES "${Suil_MODULES}" PARENT_SCOPE)
set(CPACK_SUIL_MODULES_PREFIX "${Suil_MODULES_PREFIX}" PARENT_SCOPE)
set(CPACK_STK_RAWWAVE_ROOT "${STK_RAWWAVE_ROOT}" PARENT_SCOPE)
# TODO: Canidate for DetectMachine.cmake
if(IS_X86_64)
set(CPACK_TARGET_ARCH x86_64 PARENT_SCOPE)
elseif(IS_X86)
set(CPACK_TARGET_ARCH i386 PARENT_SCOPE)
elseif(IS_ARM64)
set(CPACK_TARGET_ARCH aarch64 PARENT_SCOPE)
elseif(IS_ARM32)
set(CPACK_TARGET_ARCH armhf PARENT_SCOPE)
else()
set(CPACK_TARGET_ARCH unknown PARENT_SCOPE)
endif()
if(CMAKE_VERSION VERSION_LESS "3.19")
message(WARNING "AppImage creation requires at least CMake 3.19")
endif()

View File

@@ -0,0 +1,244 @@
# Create a Linux desktop installer using linuxdeploy
# * Creates a relocatable LMMS.AppDir installation in build/_CPack_Packages using linuxdeploy
# * If CPACK_TOOL=appimagetool or is not set, bundles AppDir into redistributable ".AppImage" file
# * If CPACK_TOOL=makeself is provided, bundles into a redistributable ".run" file
#
# Copyright (c) 2025, 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.
# Variables must be prefixed with "CPACK_" to be visible here
set(lmms "${CPACK_PROJECT_NAME}")
set(LMMS "${CPACK_PROJECT_NAME_UCASE}")
set(ARCH "${CPACK_TARGET_ARCH}")
set(APP "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/${LMMS}.AppDir")
# Target AppImage file
set(APPIMAGE_FILE "${CPACK_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.AppImage")
set(APPIMAGE_BEFORE_RENAME "${CPACK_BINARY_DIR}/${LMMS}-${ARCH}.AppImage")
set(DESKTOP_FILE "${APP}/usr/share/applications/${lmms}.desktop")
# Determine which packaging tool to use
if(NOT CPACK_TOOL)
# Pick up environmental variable
if(DEFINED ENV{CPACK_TOOL})
set(CPACK_TOOL "$ENV{CPACK_TOOL}")
else()
set(CPACK_TOOL "appimagetool")
endif()
endif()
# Toggle command echoing & verbosity
# 0 = no output, 1 = error/warning, 2 = normal, 3 = debug
if(DEFINED ENV{CPACK_DEBUG})
set(CPACK_DEBUG "$ENV{CPACK_DEBUG}")
endif()
if(NOT CPACK_DEBUG)
set(VERBOSITY 1)
set(APPIMAGETOOL_VERBOSITY "")
set(COMMAND_ECHO NONE)
set(OUTPUT_QUIET OUTPUT_QUIET)
else()
set(VERBOSITY 2)
set(APPIMAGETOOL_VERBOSITY "--verbose")
set(COMMAND_ECHO STDOUT)
unset(OUTPUT_QUIET)
endif()
include(DownloadBinary)
include(CreateSymlink)
include(CopyDependency)
# Cleanup CPack "External" json, txt files, old AppImage files
file(GLOB cleanup "${CPACK_BINARY_DIR}/${lmms}-*.json"
"${CPACK_BINARY_DIR}/${lmms}-*.AppImage"
"${CPACK_BINARY_DIR}/install_manifest.txt")
list(SORT cleanup)
file(REMOVE ${cleanup})
# Download and extract linuxdeploy
download_binary(LINUXDEPLOY_BIN
"https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-${ARCH}.AppImage"
linuxdeploy-${ARCH}.AppImage
FALSE)
# Guess the path to appimagetool
set(APPIMAGETOOL_BIN "${CPACK_CURRENT_BINARY_DIR}/.linuxdeploy-${ARCH}.AppImage/squashfs-root/plugins/linuxdeploy-plugin-appimage/appimagetool-prefix/AppRun")
# Download linuxdeploy-plugin-qt
download_binary(LINUXDEPLOY_PLUGIN_BIN
"https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-${ARCH}.AppImage"
linuxdeploy-plugin-qt-${ARCH}.AppImage
FALSE)
message(STATUS "Creating AppDir ${APP}...")
file(REMOVE_RECURSE "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/include")
file(MAKE_DIRECTORY "${APP}/usr")
# Setup AppDir structure (/usr/bin, /usr/lib, /usr/share... etc)
file(GLOB files "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/*")
list(SORT files)
foreach(_file ${files})
get_filename_component(_filename "${_file}" NAME)
if(NOT _filename MATCHES ".AppDir")
file(RENAME "${_file}" "${APP}/usr/${_filename}")
endif()
endforeach()
# Gather deps
list(APPEND DEPLOY_DEPS
--deploy-deps-only "${APP}/usr/lib/${lmms}/"
--deploy-deps-only "${APP}/usr/lib/${lmms}/ladspa/"
)
# If usr/bin/lmms is hard-linked to libjack, copy it to a new location
# See https://github.com/LMMS/lmms/issues/7689
copy_dependency("${APP}/usr/bin/lmms" "libjack.so" "${APP}/usr/lib/jack" JACK_LIB_RELOC)
if(JACK_LIB_RELOC)
list(APPEND DEPLOY_DEPS --deploy-deps-only "${JACK_LIB_RELOC}")
endif()
if(CPACK_HAVE_VST_32)
list(APPEND DEPLOY_DEPS --deploy-deps-only "${APP}/usr/lib/${lmms}/32/")
endif()
# Copy Suil modules
if(CPACK_SUIL_MODULES)
set(SUIL_MODULES_TARGET "${APP}/usr/lib/suil-0/")
file(MAKE_DIRECTORY "${SUIL_MODULES_TARGET}")
file(COPY ${CPACK_SUIL_MODULES} DESTINATION "${SUIL_MODULES_TARGET}")
list(APPEND DEPLOY_DEPS --deploy-deps-only "${APP}/usr/lib/suil-0/")
endif()
# Copy stk/rawwaves
if(CPACK_STK_RAWWAVE_ROOT)
set(STK_RAWWAVE_TARGET "${APP}/usr/share/stk/rawwaves/")
file(MAKE_DIRECTORY "${STK_RAWWAVE_TARGET}")
file(GLOB RAWWAVES "${CPACK_STK_RAWWAVE_ROOT}/*.raw")
file(COPY ${RAWWAVES} DESTINATION "${STK_RAWWAVE_TARGET}")
endif()
# Ensure project's "qmake" executable is first on the PATH
get_filename_component(QTBIN "${CPACK_QMAKE_EXECUTABLE}" DIRECTORY)
set(ENV{PATH} "${QTBIN}:$ENV{PATH}")
# Promote finding our own libraries first
set(ENV{LD_LIBRARY_PATH} "${APP}/usr/lib/${lmms}/:${APP}/usr/lib/${lmms}/optional:$ENV{LD_LIBRARY_PATH}")
# Workaround for finding libs from online installer
# https://github.com/linuxdeploy/linuxdeploy-plugin-qt/issues/193
set(ENV{LD_LIBRARY_PATH} "${QTBIN}/../lib:$ENV{LD_LIBRARY_PATH}")
# Skip slow searching of copyright files https://github.com/linuxdeploy/linuxdeploy/issues/278
set(ENV{DISABLE_COPYRIGHT_FILES_DEPLOYMENT} 1)
# Patch desktop file
file(APPEND "${DESKTOP_FILE}" "X-AppImage-Version=${CPACK_PROJECT_VERSION}\n")
# Custom scripts to run immediately before lmms is executed
file(COPY "${CPACK_SOURCE_DIR}/cmake/linux/apprun-hooks" DESTINATION "${APP}")
file(REMOVE "${APP}/apprun-hooks/README.md")
# Prefer a hard-copy of .DirIcon over appimagetool's symlinking
# 256x256 default for Cinnamon Desktop https://forums.linuxmint.com/viewtopic.php?p=2585952
file(COPY "${APP}/usr/share/icons/hicolor/256x256/apps/${lmms}.png" DESTINATION "${APP}")
file(RENAME "${APP}/${lmms}.png" "${APP}/.DirIcon")
file(COPY "${APP}/usr/share/icons/hicolor/256x256/apps/${lmms}.png" DESTINATION "${APP}")
# Inform linuxdeploy-plugin-qt about wayland plugin
set(ENV{EXTRA_PLATFORM_PLUGINS} "libqwayland-generic.so")
set(ENV{EXTRA_QT_MODULES} "waylandcompositor")
# Call linuxdeploy
message(STATUS "Calling ${LINUXDEPLOY_BIN} --appdir \"${APP}\" ... [... libraries].")
execute_process(COMMAND "${LINUXDEPLOY_BIN}"
--appdir "${APP}"
--desktop-file "${DESKTOP_FILE}"
--plugin qt
${DEPLOY_DEPS}
--exclude-library "*libgallium*"
--verbosity ${VERBOSITY}
WORKING_DIRECTORY "${CPACK_CURRENT_BINARY_DIR}"
${OUTPUT_QUIET}
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
# Remove svg ambitiously placed by linuxdeploy
file(REMOVE "${APP}/${lmms}.svg")
# Remove libraries that are normally system-provided
file(GLOB EXCLUDE_LIBS
"${APP}/usr/lib/libwine*"
"${APP}/usr/lib/libcarla_native*"
"${APP}/usr/lib/${lmms}/optional/libcarla*"
"${APP}/usr/lib/libjack*")
list(SORT EXCLUDE_LIBS)
foreach(_lib IN LISTS EXCLUDE_LIBS)
if(EXISTS "${_lib}")
file(REMOVE "${_lib}")
endif()
endforeach()
# cleanup empty directories
file(REMOVE_RECURSE "${APP}/usr/lib/${lmms}/optional/")
if(CPACK_TOOL STREQUAL "appimagetool")
# Create ".AppImage" file using appimagetool (default)
# appimage plugin needs ARCH set when running in extracted form from squashfs-root / CI
set(ENV{ARCH} "${ARCH}")
message(STATUS "Finishing the AppImage...")
execute_process(COMMAND "${APPIMAGETOOL_BIN}" "${APP}" "${APPIMAGE_FILE}"
${APPIMAGETOOL_VERBOSITY}
${OUTPUT_QUIET}
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
message(STATUS "AppImage created: ${APPIMAGE_FILE}")
elseif(CPACK_TOOL STREQUAL "makeself")
# Create self-extracting ".run" script using makeself
find_program(MAKESELF_BIN makeself REQUIRED)
message(STATUS "Finishing the .run file using ${MAKESELF_BIN}...")
string(REPLACE ".AppImage" ".run" RUN_FILE "${APPIMAGE_FILE}")
configure_file(
"${CPACK_SOURCE_DIR}/cmake/linux/makeself_setup.sh.in" "${APP}/setup.sh" @ONLY
FILE_PERMISSIONS
OWNER_EXECUTE OWNER_WRITE OWNER_READ
GROUP_EXECUTE GROUP_WRITE GROUP_READ
WORLD_READ)
if(OUTPUT_QUIET)
set(MAKESELF_QUIET "--quiet")
set(ERROR_QUIET ERROR_QUIET)
endif()
# makeself.sh [args] archive_dir file_name label startup_script [script_args]
file(REMOVE "${RUN_FILE}")
execute_process(COMMAND "${MAKESELF_BIN}"
--keep-umask
--nox11
${MAKESELF_QUIET}
"${APP}"
"${RUN_FILE}"
"${LMMS} Installer"
"./setup.sh"
${OUTPUT_QUIET}
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
# ensure the installer can be executed as a script file
execute_process(COMMAND "${RUN_FILE}" --help
${OUTPUT_QUIET}
${ERROR_QUIET}
COMMAND_ECHO ${COMMAND_ECHO}
COMMAND_ERROR_IS_FATAL ANY)
message(STATUS "Installer created: ${RUN_FILE}")
else()
message(FATAL_ERROR "Packaging tool CPACK_TOOL=\"${CPACK_TOOL}\" is not yet supported")
endif()

View File

@@ -0,0 +1,11 @@
# AppRun Hooks
Scripts placed in this directory will automatically be bundled into linuxdeploy AppImages
(e.g. `LMMS.AppDir/apprun-hooks`) and executed immediately before lmms.
Quoting:
> "Sometimes it's important to perform actions before running the actual app. Some plugins might have to set e.g.,
> environment variables to work properly."
See also: https://github.com/linuxdeploy/linuxdeploy/wiki/Plugin-system#apprun-hooks

View File

@@ -0,0 +1,43 @@
#!/bin/sh
# Workaround nuances with carla being an optional-yet-hard-linked plugin
CARLA_LIB_NAME="libcarla_native-plugin.so"
KNOWN_LOCATIONS="lib lib64"
unset CARLA_LIB_FILE
# Check for carla at "known" locations
if command -v carla > /dev/null 2>&1; then
CARLA_PATH="$(command -v carla)"
CARLA_PREFIX="${CARLA_PATH%/bin*}"
# Look for libcarla_native-plugin.so in adjacent lib directory
for lib in $KNOWN_LOCATIONS; do
if [ -e "$CARLA_PREFIX/$lib/carla/$CARLA_LIB_NAME" ]; then
# Add directory to LD_LIBRARY_PATH so libcarlabase.so can find it
CARLA_LIB_FILE="$CARLA_PREFIX/$lib/carla/$CARLA_LIB_NAME"
export LD_LIBRARY_PATH="$CARLA_PREFIX/$lib/carla/:$LD_LIBRARY_PATH"
echo "[${0##*/}] Carla appears to be installed on this system at $CARLA_PREFIX/$lib/carla so we'll use it." >&2
break
fi
done
else
echo "[${0##*/}] Carla does not appear to be installed, we'll remove it from the plugin listing." >&2
export "LMMS_EXCLUDE_PLUGINS=libcarla,${LMMS_EXCLUDE_PLUGINS}"
fi
# Additional workarounds for library conflicts
# libgobject has been versioned "2.0" for over 20 years, but the ABI is constantly changing
KNOWN_CONFLICTS="libgobject-2.0.so.0"
if [ -n "$CARLA_LIB_FILE" ]; then
for conflict in $KNOWN_CONFLICTS; do
# Only prepend LD_PRELOAD if we bundle the same version
if [ -e "$APPDIR/usr/lib/$conflict" ]; then
conflict_sys="$(ldd "$CARLA_LIB_FILE" | grep "$conflict" | awk '{print $3}')"
if [ -e "$conflict_sys" ]; then
# Add library to LD_PRELOAD so lmms can find it over its bundled version
echo "[${0##*/}] Preferring the system's \"$conflict\" over the version bundled." >&2
export LD_PRELOAD="$conflict_sys:$LD_PRELOAD"
fi
fi
done
fi

View File

@@ -0,0 +1,9 @@
#!/bin/sh
# Workaround crash when jack is missing by providing a dummy version
if LC_ALL=C ldd "$APPDIR/usr/bin/lmms" |grep "libjack.so" |grep "not found" > /dev/null 2>&1; then
echo "[${0##*/}] Jack does not appear to be installed. That's OK, we'll use a dummy version instead." >&2
export LD_LIBRARY_PATH="$APPDIR/usr/lib/jack:$LD_LIBRARY_PATH"
else
echo "[${0##*/}] Jack appears to be installed on this system, so we'll use it." >&2
fi

View File

@@ -0,0 +1,8 @@
#!/bin/sh
# Workaround Unity desktop menubar integration
# - Unity's menubar relocation breaks Qt's MDI window handling in Linux
# - Unity was default in Ubuntu 11.04 - 18.04
if [ "$XDG_CURRENT_DESKTOP" = "Unity" ]; then
export QT_X11_NO_NATIVE_MENUBAR=1
fi

View File

@@ -0,0 +1,4 @@
#!/bin/sh
# Paths for plugin systems to pick-up
export SUIL_MODULE_DIR="$APPDIR/usr/lib/suil-0/" # See also ${SUIL_MODULES_TARGET}

View File

@@ -0,0 +1,7 @@
#!/bin/sh
# Workaround crash in VirtualBox when hardware rendering is enabled
if lsmod |grep vboxguest > /dev/null 2>&1; then
echo "[${0##*/}] VirtualBox detected. Forcing libgl software rendering." >&2
export LIBGL_ALWAYS_SOFTWARE=1;
fi

View File

@@ -0,0 +1,10 @@
#!/bin/sh
# Configure QPlatform Abstraction (qpa) to prefer X-Protocol C-Bindings (xcb) over Wayland
if [ -n "$QT_QPA_PLATFORM" ]; then
echo "[${0##*/}] QT_QPA_PLATFORM=\"$QT_QPA_PLATFORM\" was provided, using." >&2
else
export QT_QPA_PLATFORM="xcb"
echo "[${0##*/}] Defaulting to QT_QPA_PLATFORM=\"$QT_QPA_PLATFORM\" for compatibility purposes." >&2
echo "[${0##*/}] To force wayland, set QT_QPA_PLATFORM=\"wayland\" or call using \"-platform wayland\"." >&2
fi

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: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 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

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,35 @@
#!/bin/bash
# Halt on first error
set -e
DESTDIR="/opt/@CPACK_PROJECT_NAME@"
BASHCOMPLETIONS="/usr/share/bash-completion/completions"
if [ "$(id -u)" != "0" ]; then
# Prepend "$HOME" so we can install to a writable location
DESTDIR="${HOME}${DESTDIR}"
BASHCOMPLETIONS="${HOME}/.local/share/bash-completion/completions"
echo "Installing as a regular user to ${DESTDIR}/..."
else
echo "Installing as elevated user to ${DESTDIR}/..."
fi
# Deploy @CPACK_PROJECT_NAME_UCASE@
mkdir -p "${DESTDIR}"
unalias cp &> /dev/null || true
cp -rf ./* "${DESTDIR}"
rm -f "${DESTDIR}/setup.sh"
mv "${DESTDIR}/AppRun" "${DESTDIR}/@CPACK_PROJECT_NAME@"
# Install bash completions
mkdir -p "${BASHCOMPLETIONS}"
ln -sf "${DESTDIR}/usr/share/@CPACK_PROJECT_NAME@/bash-completion/completions/@CPACK_PROJECT_NAME@" "${BASHCOMPLETIONS}/@CPACK_PROJECT_NAME@"
# Test @CPACK_PROJECT_NAME_UCASE@
echo "Installation complete... Testing \"@CPACK_PROJECT_NAME@\"..."
"${DESTDIR}/@CPACK_PROJECT_NAME@" --allowroot --version &> /dev/null
# TODO: Register file associations, desktop icon, etc
echo "@CPACK_PROJECT_NAME_UCASE@ was installed successfully to ${DESTDIR}. To run:"
echo " ${DESTDIR}/@CPACK_PROJECT_NAME@"

View File

@@ -0,0 +1,78 @@
# Copyright (c) 2024, 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.
#
# Description:
# Fail-safe bash-completion installation support
# - Installs to ${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions
# - Attempts to calculate and install to system-wide location
# - See also https://github.com/scop/bash-completion
#
# Usage:
# INCLUDE(BashCompletion)
# BASHCOMP_INSTALL(foo)
# ... where "foo" is a shell script adjacent to the CMakeLists.txt
# 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()
# * "lmms" subfolder ensures we don't pollute /usr/local/share/ on default "make install"
set(BASHCOMP_USER_PATH "share/${PROJECT_NAME}/bash-completion/completions")
macro(BASHCOMP_INSTALL SCRIPT_NAME)
# Note: When running from CPack, message(...) will be suppressed unless WARNING
if(WIN32)
message(STATUS "Bash completion is not supported on this platform.")
else()
# Install a copy of bash completion to the default install prefix
# See also: https://github.com/LMMS/lmms/pull/7252/files#r1815749125
install(FILES "${SCRIPT_NAME}" DESTINATION "${BASHCOMP_USER_PATH}")
# Next, blindly attempt a system-wide install, ignoring failure
# See also: https://stackoverflow.com/q/58448332
# * CPack doesn't use CMAKE_INSTALL_PREFIX, so the original will be missing when packaging
# and this step will be skipped
# * For non-root installs (e.g. ../target), this will silently fail
set(BASHCOMP_ORIG "${CMAKE_INSTALL_PREFIX}/${BASHCOMP_USER_PATH}/${CMAKE_PROJECT_NAME}")
set(BASHCOMP_LINK "${BASHCOMP_PKG_PATH}/${CMAKE_PROJECT_NAME}")
if(BASHCOMP_PKG_PATH)
# TODO: CMake 3.21 Use "file(COPY_FILE ...)"
install(CODE "
if(EXISTS \"${BASHCOMP_ORIG}\")
file(REMOVE \"${BASHCOMP_LINK}\")
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
\"${BASHCOMP_ORIG}\"
\"${BASHCOMP_LINK}\"
ERROR_QUIET
RESULT_VARIABLE result)
if(result EQUAL 0)
message(STATUS \"Bash completion-support has been installed to ${BASHCOMP_LINK}\")
endif()
endif()
")
endif()
endif()
endmacro()

View File

@@ -1,98 +1,93 @@
# 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> 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" ${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 ${CMAKE_INSTALL_PREFIX}/include)
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})
cmake_language(CALL QT${QT_VERSION_MAJOR}_WRAP_CPP plugin_MOC_out ${PLUGIN_MOCFILES})
FOREACH(f ${PLUGIN_SOURCES})
ADD_FILE_DEPENDENCIES(${f} ${ER_H} ${plugin_MOC_out} ${plugin_UIC_out})
ADD_FILE_DEPENDENCIES(${f} ${RCC_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)
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 Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::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")
TARGET_LINK_OPTIONS(${PLUGIN_NAME} PRIVATE -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 explicitly 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 alphanumeric 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,39 @@
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;
}
")
# Handle non-Intel platforms
IF(LMMS_HOST_X86_64 OR LMMS_HOST_X86)
SET(MPLATFORM "-m${BITNESS}")
ELSEIF(BITNESS EQUAL 64)
SET(MPLATFORM "")
ELSE()
# Skip 32-bit for non-Intel
SET(${RESULT} False PARENT_SCOPE)
RETURN()
ENDIF()
EXECUTE_PROCESS(COMMAND ${WINEGCC_EXECUTABLE} "${MPLATFORM}"
"${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

@@ -1,76 +0,0 @@
#
# some tests migrated from libsamplerate's acinclude.m4 - Tobias Doerffel, 2008
#
INCLUDE(CheckCSourceCompiles)
INCLUDE(CheckCSourceRuns)
SET(CMAKE_REQUIRED_LIBRARIES_ORIG ${CMAKE_REQUIRED_LIBRARIES})
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} -lm)
SET(C99_MATH " #define _ISOC9X_SOURCE 1
#define _ISOC99_SOURCE 1
#define __USE_ISOC99 1
#define __USE_ISOC9X 1
#include <math.h>
")
SET(TEST_LRINT "int main( void )
{
if (!lrint(3.14159)) lrint(2.7183);
return( 0 );
}")
SET(TEST_LRINTF "int main( void )
{
if (!lrintf(3.14159)) lrintf(2.7183);
return( 0 );
}")
CHECK_C_SOURCE_COMPILES("${C99_MATH}${TEST_LRINT}" HAVE_LRINT)
CHECK_C_SOURCE_COMPILES("${C99_MATH}${TEST_LRINTF}" HAVE_LRINTF)
CHECK_C_SOURCE_RUNS("
#define _ISOC9X_SOURCE 1
#define _ISOC99_SOURCE 1
#define __USE_ISOC99 1
#define __USE_ISOC9X 1
#include <math.h>
int main (void)
{ double fval ;
int k, ival ;
fval = 1.0 * 0x7FFFFFFF ;
for (k = 0 ; k < 100 ; k++)
{ ival = (lrint (fval)) >> 24 ;
if (ival != 127)
return 1 ;
fval *= 1.2499999 ;
} ;
return 0 ;
}
" CPU_CLIPS_POSITIVE)
CHECK_C_SOURCE_RUNS("
#define _ISOC9X_SOURCE 1
#define _ISOC99_SOURCE 1
#define __USE_ISOC99 1
#define __USE_ISOC9X 1
#include <math.h>
int main (void)
{ double fval ;
int k, ival ;
fval = -8.0 * 0x10000000 ;
for (k = 0 ; k < 100 ; k++)
{ ival = (lrint (fval)) >> 24 ;
if (ival != -128)
return 1 ;
fval *= 1.2499999 ;
} ;
return 0 ;
}
" CPU_CLIPS_NEGATIVE)
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_ORIG})

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,76 @@
# Copy source_lib's dependency matching 'name_match' into specified location
# Sets variable named in relocated_lib to the destination
macro(copy_dependency source_lib name_match destination relocated_lib)
if(NOT COMMAND_ECHO OR "${COMMAND_ECHO}" STREQUAL "NONE")
set(_command_echo NONE)
else()
set(_command_echo "${COMMAND_ECHO}")
endif()
execute_process(COMMAND file -b --mime-type "${source_lib}" OUTPUT_VARIABLE file_type)
set(_is_linux_lib false)
set(_is_mac_lib false)
if("${file_type}" MATCHES "application/x-pie-executable")
# Linux ELF binary
set(_is_linux_lib true)
list(APPEND _lib_command ldd)
elseif("${file_type}" MATCHES "application/x-mach-binary")
# macOS Mach-O binary
set(_is_mac_lib true)
list(APPEND _lib_command otool -L)
else()
message(FATAL_ERROR "Copying dependencies for ${file_type} are not yet supported")
endif()
execute_process(COMMAND ${_lib_command}
"${source_lib}"
OUTPUT_VARIABLE raw_output
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ECHO ${_command_echo}
COMMAND_ERROR_IS_FATAL ANY)
# escape periods to avoid double-escaping
string(REPLACE "." "\\." name_match "${name_match}")
# cli output --> list
string(REPLACE "\n" ";" raw_list "${raw_output}")
foreach(line ${raw_list})
if(line MATCHES "${name_match}")
if(_is_linux_lib)
# Assumes format "libname.so.0 => /lib/location/libname.so.0 (0x00007f48d0b0e000)"
string(REGEX MATCH "=> ([^\\(]+)" dummy_var "${line}")
# Trim leading/trailing whitespace and add to our list
string(STRIP "${CMAKE_MATCH_1}" lib)
elseif(_is_mac_lib)
# Assumes format "@loader_path/../Frameworks/libname-0.0.dylib (compatibility version 0.0.0, current version 0.24.26)"
string(REGEX MATCH "^[ \t]+(.*) \\(" dummy_var "${line}")
string(STRIP "${CMAKE_MATCH_1}" lib)
get_filename_component(loader_path ${source_lib} DIRECTORY)
string(REPLACE "@loader_path" "${loader_path}" resolved_lib "${lib}")
string(REPLACE "@rpath" "${loader_path}" resolved_lib "${lib}")
# Special handling for '@executable_path'
if(line MATCHES "@executable_path")
# Find the position of '/Contents/'
string(FIND "${APP_PATH}" "/Contents/" APP_CONTENTS_POS)
# Extract the base path up to '/Contents/'
string(SUBSTRING "${loader_path}" 0 "${APP_CONTENTS_POS}" app_base_path)
string(REPLACE "@executable_path" "${app_base_path}/Contents/MacOS" resolved_lib "${lib}")
endif()
endif()
# Resolve any possible symlinks
file(REAL_PATH "${lib}" libreal)
get_filename_component(symname "${lib}" NAME)
get_filename_component(realname "${libreal}" NAME)
file(MAKE_DIRECTORY "${destination}")
# Copy, but with original symlink name
file(COPY "${libreal}" DESTINATION "${destination}")
file(RENAME "${destination}/${realname}" "${destination}/${symname}")
set("${relocated_lib}" "${destination}/${symname}")
break()
endif()
endforeach()
endmacro()

View File

@@ -0,0 +1,34 @@
# Offer relative symlink support via "cmake -E create_symlink"
# For verbose, set COMMAND_ECHO to STDOUT in calling script
macro(create_symlink filepath sympath)
if(CMAKE_COMMAND)
set(_cmake_command "${CMAKE_COMMAND}")
elseif(CPACK_CMAKE_COMMAND)
set(_cmake_command "${CPACK_CMAKE_COMMAND}")
else()
message(FATAL_ERROR "Sorry, can't resolve variable CMAKE_COMMAND")
endif()
if(NOT IS_ABSOLUTE "${sympath}")
message(FATAL_ERROR "Sorry, this command only works with absolute paths")
endif()
if(NOT DEFINED COMMAND_ECHO)
set(_command_echo NONE)
else()
set(_command_echo "${COMMAND_ECHO}")
endif()
# Calculate the relative path
file(RELATIVE_PATH reldir "${sympath}/../" "${filepath}")
get_filename_component(symname "${sympath}" NAME)
# Calculate the working directory
get_filename_component(sympath_parent "${sympath}" DIRECTORY)
# Create the symbolic link
execute_process(COMMAND "${_cmake_command}" -E create_symlink "${reldir}" "${symname}"
WORKING_DIRECTORY "${sympath_parent}"
COMMAND_ECHO ${_command_echo}
COMMAND_ERROR_IS_FATAL ANY)
endmacro()

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()

Some files were not shown because too many files have changed in this diff Show More