Compare commits

...

137 Commits

Author SHA1 Message Date
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
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
Dominic Clark
f56b4963c1 Fix some TCOs not saving properly (#5537) 2020-06-17 23:05:40 +01: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
thmueller64
d5a2366fc8 Fix #5504: invalid warning 2020-05-23 18:07:35 +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
Johannes Lorenz
29a5abc30b Fix Qt 5.15 build issues (#5498)
Add missing QPainterPath includes
2020-05-18 12:58:48 -04: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
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
tresf
71b6107d9b Remove unwarranted CXX flag
Per https://github.com/LMMS/lmms/pull/4080#issuecomment-623058847
2020-05-03 02:26:57 -04: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
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
1c5a3f8a36 DrumSynth: ensure correct envelope length in any sample rate (#5467) 2020-04-26 10:59:43 +02:00
Oskar Wallgren
149eca1ec9 Note selection: Editing values works in dialog (#5438) 2020-04-22 22:25:14 +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
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
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
Hyunjin Song
94431ea9de RemoteVstPlugin: fix issues with FXP/FXB files on Windows (#5411) 2020-03-01 12:03:49 +09: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
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
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
Dominic Clark
c52682dfb1 Fix stuck notes with Helm VSTi 2020-01-08 07:53:13 +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
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
Dominic Clark
cf4bb7b851 Fix remote plugin crash reading parameters from Grooove plugin (#5300) 2019-11-17 16:09:48 +00: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
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
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
Oskar Wallgren
6c865c072d Piano Roll - Fix retrigger with vol/pan sliders (#5271) 2019-10-29 14:01:05 +01:00
knittl
5e4e536bf0 Replace initializer list macros with delegating constructors (#5279)
Closes #5278
2019-10-27 21:17:04 +01:00
Hyunjin Song
dbf5f47149 Bump version to 1.2.1 2019-10-21 09:27:12 +09: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
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
Steffen Baranowsky
5aa87886c9 Rubberband fix for selecting large area in Songeditor (#5003) 2019-10-07 18:13:44 +02: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
Oskar Wallgren
419321dd01 Only MacOS and Windows are case insensitive (#4768) 2019-09-16 07:09:42 +02:00
Shmuel H
0059c6e71f Fix #4188 - Check for failed qFind (#5184) 2019-09-14 20:35:54 +03:00
Hyunjin Song
c436e5ca57 Remove MIDI connections from factory .mmpz files (#5163) 2019-09-13 07:54:48 +09: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
Spekular
8568ae4eac Make splash screen text white (#5149)
Make splash screen text white
Closes #5023
2019-08-27 09:24:13 -04:00
Artur Twardowski
a631c0c47e Fix invalid MIDI Program Change decoding (#5154) 2019-08-26 09:05:59 +08: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
Steffen Baranowsky
bdbea87149 show BBEditor on clicking the TrackLabelButton (#5060) 2019-07-26 10:04:16 +02:00
Olivier Humbert
3ada5b8a12 Update .mailmap (#5037) 2019-06-14 21:07:14 +02: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
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
liushuyu
fad89d6be7 i18n: update translations from Transifex 2019-05-28 15:13:51 -06: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
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
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
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
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
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
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
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
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
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
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
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
tresf
04768ee3e1 Fix zyn pitch on project load/export
Closes #3451
2019-03-11 14:24:12 -04: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
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
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
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
187 changed files with 32893 additions and 15346 deletions

3
.gitmodules vendored
View File

@@ -4,3 +4,6 @@
[submodule "src/3rdparty/rpmalloc/rpmalloc"]
path = src/3rdparty/rpmalloc/rpmalloc
url = https://github.com/rampantpixels/rpmalloc.git
[submodule "plugins/carlabase/carla"]
path = plugins/carlabase/carla
url = https://github.com/falktx/carla

View File

@@ -29,3 +29,4 @@ 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>

View File

@@ -1,56 +1,50 @@
language: cpp
compiler: gcc
dist: trusty
dist: xenial
sudo: required
cache:
directories:
- apt_mingw_cache
- $HOME/apt_mingw_cache
- $HOME/.ccache
- $HOME/pbuilder-bases
matrix:
include:
- env: TARGET_OS=win32
dist: trusty
- env: TARGET_OS=win64
dist: trusty
- os: osx
osx_image: xcode8.2
- env: QT5=
- env: QT5=True
- env: QT5=True TARGET_OS=win32 TARGET_DEPLOY=True
dist: trusty
- env: QT5=True TARGET_OS=win64 TARGET_DEPLOY=True
dist: trusty
- os: osx
osx_image: xcode8.2
env: QT5=True
- env: TARGET_OS=debian-sid TARGET_DEPLOY=True
git:
depth: false
- env: TARGET_OS=debian-sid TARGET_ARCH=i386
git:
depth: false
- compiler: clang
env: TARGET_OS=debian-sid
git:
depth: false
before_install:
- . ${TRAVIS_BUILD_DIR}/.travis/${TRAVIS_OS_NAME}.${TARGET_OS}.before_install.sh
install:
- . ${TRAVIS_BUILD_DIR}/.travis/${TRAVIS_OS_NAME}.${TARGET_OS}.install.sh
before_script:
- export CMAKE_FLAGS="-DWANT_QT5=$QT5 -DUSE_WERROR=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo"
- export CMAKE_FLAGS="-DWANT_QT5=$QT5 -DUSE_WERROR=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUNDLE_QT_TRANSLATIONS=ON"
- if [ -z "$TRAVIS_TAG" ]; then export CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_CCACHE=ON"; fi
script:
- . ${TRAVIS_BUILD_DIR}/.travis/${TRAVIS_OS_NAME}.${TARGET_OS}.script.sh
after_script:
- ccache -s
before_deploy:
- if [ "$TARGET_OS" != debian-sid ]; then make package; fi
deploy:
provider: releases
api_key:
secure: d4a+x4Gugpss7JK2DcHjyBZDmEFFh4iVfKDfITSD50T6Mc6At4LMgojvEu+6qT6IyOY2vm3UVT6fhyeuWDTRDwW9tfFlaHVA0h8aTRD+eAXOA7pQ8rEMwQO3+WCKuKTfEqUkpL4wxhww8dpkv54tqeIs0S4TBqz9tk8UhzU7XbE=
file_glob: true
file:
- lmms-${TRAVIS_TAG:1}-$TARGET_OS.exe
- /var/cache/pbuilder/result/lmms_*.tar.xz
skip_cleanup: true
on:
tags: true
all_branches: true
condition: '"$TARGET_DEPLOY" = True'
repo: LMMS/lmms
notifications:
webhooks:
urls:

View File

@@ -1,2 +1,3 @@
314ef4af137903dfb13e8c3ef1e6ea56cfdb23808d52ec4f5f50e288c73610c5 pbuilder_0.229.1_all.deb
fa82aa8ed3055c6f6330104deedf080b26778295e589426d4c4dd0f2c2a5defa debootstrap_1.0.95_all.deb
2ef4c09f7841b72f93412803ddd142f72658536dbfabe00e449eb548f432f3f8 debian-archive-keyring_2017.7ubuntu1_all.deb

View File

@@ -1,9 +1,3 @@
#!/usr/bin/env bash
sudo add-apt-repository ppa:beineri/opt-qt592-trusty -y
sudo add-apt-repository ppa:andrewrk/libgroove -y
sudo sed -e "s/trusty/precise/" -i \
/etc/apt/sources.list.d/andrewrk-libgroove-trusty.list
sudo dpkg --add-architecture i386
sudo apt-get update -qq || true

View File

@@ -2,7 +2,7 @@
PACKAGES="cmake libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libmp3lame-dev
libasound2-dev libjack-jackd2-dev libsdl-dev libsamplerate0-dev libstk0-dev stk
libfluidsynth-dev portaudio19-dev g++-multilib libfltk1.3-dev
libfluidsynth-dev portaudio19-dev g++-multilib libfltk1.3-dev fluid
libgig-dev libsoundio-dev"
VST_PACKAGES="wine-dev libqt5x11extras5-dev qtbase5-private-dev libxcb-util0-dev libxcb-keysyms1-dev"
@@ -11,15 +11,9 @@ VST_PACKAGES="wine-dev libqt5x11extras5-dev qtbase5-private-dev libxcb-util0-dev
PACKAGES="$PACKAGES $VST_PACKAGES libjack-jackd2-0"
if [ $QT5 ]; then
PACKAGES="$PACKAGES qt59base qt59translations qt59tools"
PACKAGES="$PACKAGES qttools5-dev-tools"
else
PACKAGES="$PACKAGES libqt4-dev"
fi
sudo apt-get install -y $PACKAGES
# kxstudio repo offers Carla; avoid package conflicts (wine, etc) by running last
sudo add-apt-repository -y ppa:kxstudio-debian/libs
sudo add-apt-repository -y ppa:kxstudio-debian/apps
sudo apt-get update
sudo apt-get install -y carla-git

View File

@@ -7,8 +7,11 @@ if [ $QT5 ]; then
source /opt/qt59/bin/qt59-env.sh
fi
cmake -DUSE_WERROR=ON $CMAKE_FLAGS ..
cmake -DCMAKE_INSTALL_PREFIX=../target/ -DUSE_WERROR=ON $CMAKE_FLAGS ..
make -j4
make tests
./tests/tests
make install
make appimage

View File

@@ -2,15 +2,16 @@
set -e
sudo apt-get install -y \
debian-archive-keyring \
dpkg \
pbuilder
# work around a pbuilder bug which breaks ccache
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666525
# and also missing signing keys in Trusty's debian-archive-keyring
cd /tmp
wget http://archive.ubuntu.com/ubuntu/pool/main/p/pbuilder/pbuilder_0.229.1_all.deb
wget http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.95_all.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/d/debian-archive-keyring/debian-archive-keyring_2017.7ubuntu1_all.deb
sha256sum -c "$TRAVIS_BUILD_DIR/.travis/debian_pkgs.sha256"
sudo dpkg -i pbuilder_0.229.1_all.deb debootstrap_1.0.95_all.deb
sudo dpkg -i pbuilder_0.229.1_all.deb debootstrap_1.0.95_all.deb debian-archive-keyring_2017.7ubuntu1_all.deb
cd "$OLDPWD"

View File

@@ -31,6 +31,40 @@ else
sudo pbuilder --update --basetgz "$BASETGZ"
fi
sync_version() {
local VERSION
local MMR
local STAGE
local EXTRA
VERSION=$(git describe --tags --match v[0-9].[0-9].[0-9]*)
VERSION=${VERSION#v}
MMR=${VERSION%%-*}
case $VERSION in
*-*-*-*)
VERSION=${VERSION%-*}
STAGE=${VERSION#*-}
STAGE=${STAGE%-*}
EXTRA=${VERSION##*-}
VERSION=$MMR~$STAGE.$EXTRA
;;
*-*-*)
VERSION=${VERSION%-*}
EXTRA=${VERSION##*-}
VERSION=$MMR.$EXTRA
;;
*-*)
STAGE=${VERSION#*-}
VERSION=$MMR~$STAGE
;;
esac
sed "1 s/@VERSION@/$VERSION/" -i debian/changelog
echo Set Debian version to $VERSION
}
sync_version
DIR="$PWD"
cd ..
dpkg-source -b "$DIR"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -e
CACHE_DIR=$TRAVIS_BUILD_DIR/apt_mingw_cache/$1
CACHE_DIR=$HOME/apt_mingw_cache/$1
mkdir -p $CACHE_DIR
pushd $CACHE_DIR

View File

@@ -6,3 +6,5 @@ export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON"
../cmake/build_mingw32.sh
make -j4
make package

View File

@@ -6,3 +6,5 @@ export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON"
../cmake/build_mingw64.sh
make -j4
make package

View File

@@ -1,3 +1,6 @@
#!/usr/bin/env bash
brew update
# appdmg doesn't work with old versions of Node.js
nvm install --lts

View File

@@ -14,4 +14,4 @@ if [ -z "$QT5" ]; then
brew install qt@4
fi
sudo npm install -g appdmg
npm install -g appdmg

View File

@@ -7,8 +7,11 @@ if [ $QT5 ]; then
export CMAKE_PREFIX_PATH="$(brew --prefix qt5)"
fi
cmake $CMAKE_FLAGS -DUSE_WERROR=OFF ..
cmake -DCMAKE_INSTALL_PREFIX=../target/ $CMAKE_FLAGS -DUSE_WERROR=OFF ..
make -j4
make tests
./tests/tests
make install
make dmg

View File

@@ -20,7 +20,7 @@ INCLUDE(FindPkgConfig)
STRING(TOUPPER "${CMAKE_PROJECT_NAME}" PROJECT_NAME_UCASE)
SET(PROJECT_YEAR 2019)
SET(PROJECT_YEAR 2020)
SET(PROJECT_AUTHOR "LMMS Developers")
SET(PROJECT_URL "https://lmms.io")
@@ -29,8 +29,8 @@ SET(PROJECT_DESCRIPTION "${PROJECT_NAME_UCASE} - Free music production software"
SET(PROJECT_COPYRIGHT "2008-${PROJECT_YEAR} ${PROJECT_AUTHOR}")
SET(VERSION_MAJOR "1")
SET(VERSION_MINOR "2")
SET(VERSION_RELEASE "0")
SET(VERSION_STAGE "rc8")
SET(VERSION_RELEASE "2")
SET(VERSION_STAGE "")
SET(VERSION_BUILD "0")
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_RELEASE}")
IF(VERSION_STAGE)
@@ -68,11 +68,13 @@ OPTION(WANT_VST "Include VST support" ON)
OPTION(WANT_VST_NOWINE "Include partial VST support (without wine)" OFF)
OPTION(WANT_WINMM "Include WinMM MIDI support" OFF)
OPTION(WANT_QT5 "Build with Qt5" OFF)
OPTION(BUNDLE_QT_TRANSLATIONS "Install Qt translation files for LMMS" OFF)
IF(LMMS_BUILD_APPLE)
# Fix linking on 10.14+. See issue #4762 on github
LINK_DIRECTORIES(/usr/local/lib)
SET(WANT_SOUNDIO OFF)
SET(WANT_ALSA OFF)
SET(WANT_PULSEAUDIO OFF)
SET(WANT_VST OFF)
@@ -91,6 +93,7 @@ IF(LMMS_BUILD_WIN32)
SET(WANT_SNDIO OFF)
SET(WANT_SOUNDIO OFF)
SET(WANT_WINMM ON)
SET(BUNDLE_QT_TRANSLATIONS ON)
SET(LMMS_HAVE_WINMM TRUE)
SET(STATUS_ALSA "<not supported on this platform>")
SET(STATUS_JACK "<not supported on this platform>")
@@ -157,13 +160,22 @@ IF(WANT_QT5)
Qt5::Xml
)
IF(LMMS_BUILD_LINUX)
IF(LMMS_BUILD_LINUX AND WANT_VST)
FIND_PACKAGE(Qt5X11Extras REQUIRED)
LIST(APPEND QT_LIBRARIES Qt5::X11Extras)
ENDIF()
# Resolve Qt5::qmake to full path for use in packaging scripts
GET_TARGET_PROPERTY(QT_QMAKE_EXECUTABLE "${Qt5Core_QMAKE_EXECUTABLE}" IMPORTED_LOCATION)
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS
OUTPUT_VARIABLE QT_TRANSLATIONS_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
IF(EXISTS "${QT_TRANSLATIONS_DIR}")
MESSAGE("-- Found Qt translations in ${QT_TRANSLATIONS_DIR}")
ADD_DEFINITIONS(-D'QT_TRANSLATIONS_DIR="${QT_TRANSLATIONS_DIR}"')
ENDIF()
FIND_PACKAGE(Qt5Test)
SET(QT_QTTEST_LIBRARY Qt5::Test)
@@ -240,7 +252,8 @@ IF(WANT_CARLA)
SET(LMMS_HAVE_CARLA TRUE)
SET(STATUS_CARLA "OK")
ELSE(CARLA_FOUND)
SET(STATUS_CARLA "not found, please install the latest carla")
SET(LMMS_HAVE_WEAKCARLA TRUE)
SET(STATUS_CARLA "OK (weak linking enabled)")
ENDIF(CARLA_FOUND)
ENDIF(WANT_CARLA)
@@ -430,9 +443,9 @@ If(WANT_GIG)
ENDIF(WANT_GIG)
# check for pthreads
IF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE OR LMMS_BUILD_OPENBSD)
IF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE OR LMMS_BUILD_OPENBSD OR LMMS_BUILD_FREEBSD)
FIND_PACKAGE(Threads)
ENDIF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE OR LMMS_BUILD_OPENBSD)
ENDIF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE OR LMMS_BUILD_OPENBSD OR LMMS_BUILD_FREEBSD)
IF(WANT_SNDIO)
FIND_PACKAGE(Sndio)
@@ -479,7 +492,7 @@ ENDIF()
# Due to a regression in gcc-4.8.X, we need to disable array-bounds check
IF (CMAKE_COMPILER_IS_GNUCXX AND ((CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "4.8.0") OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8.0") OR LMMS_BUILD_WIN32))
SET(WERROR_FLAGS "${WERROR_FLAGS} -Wno-array-bounds")
SET(WERROR_FLAGS "${WERROR_FLAGS} -Wno-array-bounds -Wno-attributes")
ENDIF()
IF(NOT CMAKE_BUILD_TYPE)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@@ -147,5 +147,7 @@
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>NSRequiresAquaSystemAppearance</key>
<string>False</string>
</dict>
</plist>

View File

@@ -1,9 +1,9 @@
{
"title": "@MACOSX_BUNDLE_BUNDLE_NAME@ @MACOSX_BUNDLE_LONG_VERSION_STRING@",
"background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png",
"icon-size": 72,
"icon-size": 128,
"contents": [
{ "x": 460, "y": 260, "type": "link", "path": "/Applications" },
{ "x": 220, "y": 260, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" }
{ "x": 139, "y": 200, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" },
{ "x": 568, "y": 200, "type": "link", "path": "/Applications" }
]
}

View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export PATH="$PATH:/sbin"
if command -v carla > /dev/null 2>&1; then
CARLAPATH="$(command -v carla)"
CARLAPREFIX="${CARLAPATH%/bin*}"
echo "Carla appears to be installed on this system at $CARLAPREFIX/lib[64]/carla so we'll use it."
export LD_LIBRARY_PATH=$CARLAPREFIX/lib/carla:$CARLAPREFIX/lib64/carla:$LD_LIBRARY_PATH
else
echo "Carla does not appear to be installed. That's OK, please ignore any related library errors."
fi
export LD_LIBRARY_PATH=$DIR/usr/lib/:$DIR/usr/lib/lmms:$LD_LIBRARY_PATH
# Prevent segfault on VirualBox
if lsmod |grep vboxguest > /dev/null 2>&1; then
echo "VirtualBox detected. Forcing libgl software rendering."
export LIBGL_ALWAYS_SOFTWARE=1;
fi
if ldconfig -p | grep libjack.so.0 > /dev/null 2>&1; then
echo "Jack appears to be installed on this system, so we'll use it."
else
echo "Jack does not appear to be installed. That's OK, we'll use a dummy version instead."
export LD_LIBRARY_PATH=$DIR/usr/lib/lmms/optional:$LD_LIBRARY_PATH
fi
QT_X11_NO_NATIVE_MENUBAR=1 "$DIR"/usr/bin/lmms.real "$@"

View File

@@ -3,10 +3,10 @@ Name=LMMS
GenericName=Music production suite
GenericName[ca]=Programari de producció musical
GenericName[de]=Software zur Musik-Produktion
GenericName[fr]=Ensemble pour la production musicale
GenericName[fr]=Suite de production musicale
Comment=Music sequencer and synthesizer
Comment[ca]=Producció fàcil de música per a tothom!
Comment[fr]=Production facile de musique pour tout le monde !
Comment[fr]=Séquenceur et synthétiseur de musique
Icon=lmms
Exec=lmms %f
Terminal=false

View File

@@ -70,6 +70,9 @@ elif ! find "$LINUXDEPLOYQT" -mtime -$DAYSOLD 2>/dev/null|grep -q "." > /dev/nul
touch "$LINUXDEPLOYQT"
success "Downloaded $LINUXDEPLOYQT"
"$LINUXDEPLOYQT" --appimage-extract > /dev/null 2>&1
# We need to set LD_LIBRARY_PATH, but linuxdepoyqt's AppRun unsets it
# See https://github.com/probonopd/linuxdeployqt/pull/370/
LINUXDEPLOYQT="squashfs-root/usr/bin/linuxdeployqt"
success "Extracted $APPIMAGETOOL"
else
skipped "$LINUXDEPLOYQT is less than $DAYSOLD days old"
@@ -93,40 +96,16 @@ cp -R /usr/share/stk/rawwaves/ "${APPDIR}usr/share/stk/"
# Create a wrapper script which calls the lmms executable
mv "${APPDIR}usr/bin/lmms" "${APPDIR}usr/bin/lmms.real"
# shellcheck disable=SC1083
cat >"${APPDIR}usr/bin/lmms" <<EOL
#!/usr/bin/env bash
DIR="\$( cd "\$( dirname "\${BASH_SOURCE[0]}" )" && pwd )"
if which carla > /dev/null 2>&1; then
CARLAPATH="\$(which carla)"
CARLAPREFIX="\${CARLAPATH%/bin*}"
echo "Carla appears to be installed on this system at \$CARLAPREFIX/lib[64]/carla so we'll use it."
export LD_LIBRARY_PATH=\$CARLAPREFIX/lib/carla:\$CARLAPREFIX/lib64/carla:\$LD_LIBRARY_PATH
else
echo "Carla does not appear to be installed. That's OK, please ignore any related library errors."
fi
export LD_LIBRARY_PATH=\$DIR/usr/lib/:\$DIR/usr/lib/lmms:\$LD_LIBRARY_PATH
# Prevent segfault on VirualBox
if lsmod |grep vboxguest > /dev/null 2>&1; then
echo "VirtualBox detected. Forcing libgl software rendering."
export LIBGL_ALWAYS_SOFTWARE=1;
fi
if ldconfig -p | grep libjack.so.0 > /dev/null 2>&1; then
echo "Jack appears to be installed on this system, so we'll use it."
else
echo "Jack does not appear to be installed. That's OK, we'll use a dummy version instead."
export LD_LIBRARY_PATH=\$DIR/usr/lib/lmms/optional:\$LD_LIBRARY_PATH
fi
QT_X11_NO_NATIVE_MENUBAR=1 \$DIR/usr/bin/lmms.real "\$@"
EOL
cp "@CMAKE_CURRENT_SOURCE_DIR@/launch_lmms.sh" "${APPDIR}usr/bin/lmms"
chmod +x "${APPDIR}usr/bin/lmms"
# Per https://github.com/probonopd/linuxdeployqt/issues/129
# Per https://github.com/probonopd/linuxdeployqt/issues/129
unset LD_LIBRARY_PATH
# Ensure linuxdeployqt can find shared objects
export LD_LIBRARY_PATH="${APPDIR}usr/lib/lmms/":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH="${APPDIR}usr/lib/lmms/":"${APPDIR}usr/lib/lmms/optional":$LD_LIBRARY_PATH
# Handle wine linking
if [ -d "@WINE_LIBRARY_FIX@" ]; then
@@ -141,7 +120,7 @@ ZYNBIN="${APPDIR}usr/bin/RemoteZynAddSubFx"
VSTBIN="${APPDIR}usr/bin/RemoteVstPlugin.exe.so"
mv "$ZYNLIB" "$ZYNBIN"
mv "$VSTLIB" "$VSTBIN"
mv "$VSTLIB" "$VSTBIN" || true
# Patch the desktop file
sed -i 's/.*Exec=.*/Exec=lmms.real/' "$DESKTOPFILE"
@@ -167,13 +146,14 @@ success "Bundled and relinked dependencies"
# Link to original location so lmms can find them
ln -sr "$ZYNBIN" "$ZYNLIB"
ln -sr "$VSTBIN" "$VSTLIB"
ln -sr "$VSTBIN" "$VSTLIB" || true
# Remove wine library conflict
rm -f "${APPDIR}/usr/lib/libwine.so.1"
# Use system-provided carla
rm -f "${APPDIR}usr/lib/"libcarla*.so
rm -f "${APPDIR}usr/lib/lmms/optional/"libcarla*.so
# Remove bundled jack in LD_LIBRARY_PATH if exists
if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then
@@ -181,7 +161,7 @@ if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then
fi
# Bundle jack out of LD_LIBRARY_PATH
JACK_LIB=$(ldd "${APPDIR}/usr/bin/lmms" | sed -n 's/\tlibjack\.so\.0 => \(.\+\) (0x[0-9a-f]\+)/\1/p')
JACK_LIB=$(ldd "${APPDIR}/usr/bin/lmms.real" | sed -n 's/\tlibjack\.so\.0 => \(.\+\) (0x[0-9a-f]\+)/\1/p')
if [ -e "$JACK_LIB" ]; then
mkdir -p "${APPDIR}usr/lib/lmms/optional/"
cp "$JACK_LIB" "${APPDIR}usr/lib/lmms/optional/"

View File

@@ -70,7 +70,11 @@ MACRO(BUILD_PLUGIN PLUGIN_NAME)
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} lmms)
ENDIF(LMMS_BUILD_WIN32)
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}")
IF(LMMS_BUILD_WIN32 AND "${PLUGIN_LINK}" STREQUAL "SHARED")
INSTALL(TARGETS ${PLUGIN_NAME} RUNTIME DESTINATION "${PLUGIN_DIR}")
ELSE()
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}")
ENDIF()
IF(LMMS_BUILD_APPLE)
IF ("${PLUGIN_LINK}" STREQUAL "SHARED")

View File

@@ -4,6 +4,8 @@ ELSEIF(APPLE)
SET(LMMS_BUILD_APPLE 1)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
SET(LMMS_BUILD_OPENBSD 1)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
SET(LMMS_BUILD_FREEBSD 1)
ELSEIF(HAIKU)
SET(LMMS_BUILD_HAIKU 1)
ELSE()

View File

@@ -48,9 +48,9 @@ FOREACH(_item ${qm_targets})
ADD_DEPENDENCIES(finalize-locales "${_item}")
ENDFOREACH(_item ${qm_targets})
IF(LMMS_BUILD_WIN32)
FILE(GLOB QT_QM_FILES "${QT_TRANSLATIONS_DIR}/qt*[^h].qm")
IF(BUNDLE_QT_TRANSLATIONS)
FILE(GLOB QT_QM_FILES "${QT_TRANSLATIONS_DIR}/qt*.qm")
LIST(SORT QT_QM_FILES)
ENDIF(LMMS_BUILD_WIN32)
ENDIF()
INSTALL(FILES ${QM_FILES} ${QT_QM_FILES} DESTINATION "${LMMS_DATA_DIR}/locale")

File diff suppressed because it is too large Load Diff

View File

@@ -3885,7 +3885,11 @@ Bitte besuchen Sie http://lmms.sf.net/wiki für Dokumentationen über LMMS.</tra
</message>
<message>
<source>E&amp;xport Tracks...</source>
<translation>E&amp;xport Tracks...</translation>
<translation>Tracks e&amp;xportieren...</translation>
</message>
<message>
<source>Export &amp;MIDI...</source>
<translation>&amp;MIDI exportieren...</translation>
</message>
<message>
<source>Online Help</source>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3002,7 +3002,7 @@ You can remove and move FX channels in the context menu, which is accessed by ri
</message>
<message>
<source>VELOCITY</source>
<translation>PRĘDKOŚĆ UDERZENIA</translation>
<translation>PRĘDKOŚĆ</translation>
</message>
<message>
<source>ENABLE MIDI OUTPUT</source>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -618,6 +618,8 @@ TrackContentObjectView {
qproperty-textColor: rgb( 255, 255, 255 );
qproperty-textShadowColor: rgb( 0, 0, 0 );
qproperty-gradient: true; /* boolean property, set true to have a gradient */
/* finger tip offset of cursor */
qproperty-mouseHotspotHand: 3px 3px;
}
/* instrument pattern */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -81,6 +81,12 @@ TextFloat {
}
/* splash screen text */
QSplashScreen QLabel {
color: white;
}
QMenu {
border-top: 2px solid #08993E;
background-color: #15191c;
@@ -647,6 +653,8 @@ TrackContentObjectView {
qproperty-textColor: #fff;
qproperty-textShadowColor: rgba(0,0,0,200);
qproperty-gradient: false; /* boolean property, set true to have a gradient */
/* finger tip offset of cursor */
qproperty-mouseHotspotHand: 7px 2px;
}
/* instrument pattern */

2
debian/changelog vendored
View File

@@ -1,4 +1,4 @@
lmms (1.2.0~rc7.1) unstable; urgency=low
lmms (@VERSION@) unstable; urgency=low
* Upstream integration.
* Drop Debian menu entry (policy 9.6).

1
debian/control vendored
View File

@@ -27,6 +27,7 @@ Build-Depends:
libsoundio-dev,
libstk0-dev,
libvorbis-dev,
libx11-xcb-dev,
libxcb-keysyms1-dev,
libxcb-util0-dev,
portaudio19-dev,

View File

@@ -9,24 +9,26 @@ Colin Wallace <wallacoloo@gmail.com>
Oskar Wallgren <oskar.wallgren13@gmail.com>
Raine M. Ekman <raine@iki.fi>
Umcaruje <uros.maravic@gmail.com>
Michael Gregorius <michael.gregorius.git@arcor.de>
Hyunjin Song <tteu.ingog@gmail.com>
Javier Serrano Polo <javier--IfwAyVwL9S8xJKrdU2QtlAdbjyPl9T@jasp.net>
Michael Gregorius <michael.gregorius.git@arcor.de>
grejppi <grejppi@gmail.com>
Javier Serrano Polo <javier@jasp.net>
Hyunjin Song <tteu.ingog@gmail.com>
Wong Cho Ching <chwong249664@yahoo.com>
Alexandre Almeida <wilsalx@gmail.com>
Daniel Winzen <d@winzen4.de>
LMMS Service Account <lmms.service@gmail.com>
Steffen Baranowsky <BaraMGB@freenet.de>
Danny McRae <khjklujn@yahoo.com>
Johannes Lorenz <j.git@lorenz-ho.me>
Garrett <g@floft.net>
Hyunin Song <tteu.ingog@gmail.com>
liushuyu <liushuyu011@gmail.com>
Dominic Clark <mrdomclark@gmail.com>
Hyunin Song <tteu.ingog@gmail.com>
Andrew Kelley <superjoe30@gmail.com>
Spekular <Spekularr@gmail.com>
Andreas Brandmaier <andy@brandmaier.de>
Fastigium <fastigiummusic@gmail.com>
Spekular <Spekularr@gmail.com>
Amadeus Folego <amadeusfolego@gmail.com>
Jonas Trappenberg <jonas@trappenberg.ch>
M374LX <wilsalx@gmail.com>
@@ -35,18 +37,17 @@ grindhold <grindhold@gmx.net>
Mike Choi <rdavidian71@gmail.com>
Karmo Rosental <karmo.rosental@gmail.com>
Christopher L. Simons <christopherleesimons@gmail.com>
Dominic Clark <mrdomclark@gmail.com>
NoiseByNorthwest <noisebynorthwest@gmail.com>
falkTX <falktx@gmail.com>
Johannes Lorenz <johannes89@mailueberfall.de>
Rebecca DeField <rebeccadefield@gmail.com>
falkTX <falktx@gmail.com>
Stian Jørgensrud <stianahj@gmail.com>
David Carlier <devnexen@gmail.com>
Ryan Roden-Corrent <ryan@rcorre.net>
Shmuel H <shmuelhazan0@gmail.com>
midi-pascal <midi-pascal@videotron.ca>
Augustin Cavalier <waddlesplash@gmail.com>
BaraMGB <BaraMGB@freenet.de>
Csaba Hruska <csaba.hruska@gmail.com>
David Carlier <devnexen@gmail.com>
DeRobyJ <derobyj@gmail.com>
Hussam Eddin Alhomsi <hussameddin.alhomsi@gmail.com>
Rüdiger Ranft <rudi@qzzq.de>
@@ -66,11 +67,15 @@ Jonathan Aquilina <eagles051387@gmail.com>
Mohammad Amin Sameti <mamins1376@gmail.com>
ra <symbiants@gmail.com>
wongcc966422 <wongcc966422@users.noreply.github.com>
Cyp <cyp@wz2100.net>
David CARLIER <devnexen@gmail.com>
Douglas <34612565+DouglasDGI@users.noreply.github.com>
Gurjot Singh <bhattigurjot@gmail.com>
Janne Sinisalo <janne.m.sinisalo@gmail.com>
Krzysztof Foltman <wdev@foltman.com>
Lou Herard <lherard@gmail.com>
Noah Brecht <noahb2713@gmail.com>
Olivier Humbert <trebmuh@tuxfamily.org>
Paul Batchelor <thisispaulbatchelor@gmail.com>
Paul Wayper <paulway@mabula.net>
Petter Reinholdtsen <pere@hungry.com>
@@ -86,9 +91,8 @@ Cyrille Bollu <cyrille.bollu2@gmail.com>
Dan Williams <BumblingCoder@users.noreply.github.com>
Ian Sannar <ian.sannar@gmail.com>
Jaroslav Petrnoušek <baegus@gmail.com>
Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com>
Johannes Lorenz <j.git@lorenz-ho.me>
Kenneth Perry (thothonegan) <thothonegan@gmail.com>
Kevin Zander <veratil@gmail.com>
LYF610400210 <lyfjxymf@sina.com>
Lukas W <lukas@Lukass-iMac.fritz.box>
Mark-Agent003 <wgreeves01@gmail.com>
@@ -101,29 +105,37 @@ Rebecca LaVie <rebeccadefield@gmail.com>
Roberto Giaconia <DeRobyJ@users.noreply.github.com>
SecondFlight <qbgeekjtw@gmail.com>
Steffen Baranowsky <baramgb@freenet.de>
T0NIT0 RMX <t0nit0rmx@gmail.com>
TheTravelingSpaceman <smuts.walter@gmail.com>
Thomas Clark <the.thomas.j.clark@gmail.com>
gnudles <gnudles@users.noreply.github.com>
liushuyu <liushuyu_011@163.com>
makepost <makepost@firemail.cc>
miketurn <miketurn1234@yahoo.com>
psyomn <lethaljellybean@gmail.com>
quadro <quadro2@email.cz>
sarahkeefe <sarahjanekeefe@gmail.com>
thmueller64 <64359888+thmueller64@users.noreply.github.com>
Achim Settelmeier <lmms@m1.sirlab.de>
Alexandra Dutton <alxdttn@umich.edu>
Andreas Müller <schnitzeltony@gmail.com>
André Hentschel <nerv@dawncrow.de>
Armin Kazmi <armin.kazmi@tu-dortmund.de>
Artur Twardowski <32247490+artur-twardowski@users.noreply.github.com>
Attila Herman <attila589@gmail.com>
Bastian Kummer <bastian.kummer@securepoint.de>
Christopher A. Oliver <oliver@onion.private>
Cyp <48363+Cyp@users.noreply.github.com>
Devin Venable <venable.devin@gmail.com>
Diego Ramos Ruggeri <diego@ruggeri.net.br>
Douglas <34612565+DouglasDGI@users.noreply.github.com>
DragonEagle <allensoard@yahoo.com>
Filip Hron <filip.hron@gmail.com>
Frank Mather <tinycat2001@gmail.com>
Frederik <freggy@gmail.com>
Gingka Akiyama <33764485+GingkathFox@users.noreply.github.com>
Greg Simpson <geedubess@users.noreply.github.com>
Hexasoft <yperret@in2p3.fr>
Hubert Figuière <hub@figuiere.net>
IvanMaldonado <ivan.gm94@gmail.com>
Ivo Wetzel <ivo.wetzel@googlemail.com>
Jens Lang <jenslang@users.sf.net>
@@ -138,17 +150,17 @@ Lee Avital <leeavital@gmail.com>
LocoMatt <samozelko123@gmail.com>
Léo Andrès <leo@ndrs.fr>
Markus Elfring <elfring@users.sourceforge.net>
Martin Pavelek <he29.HS@gmail.com>
Maurizio Lo Bosco <maurizio.lobosco@gmail.com>
Mehdi <powergame_coder2@yahoo.com>
Mikobuntu <chrissy.mc.1@hotmail.co.uk>
Mingcong Bai <jeffbai@aosc.xyz>
Nikos Chantziaras <realnc@arcor.de>
Noah Brecht <noahb2713@gmail.com>
Ododo <olivierdautricourt@gmail.com>
Olivier Humbert <trebmuh@users.noreply.github.com>
Paul Nasca <zynaddsubfx_AT_yahoo com>
Peter Nelson <peter1138@users.sourceforge.net>
Ra <symbiants@gmail.com>
Ron U <sharpblade4@gmail.com>
Ryan Schmidt <github@ryandesign.com>
Shane Ambler <GitHub@ShaneWare.Biz>
Simon Jackson (Netbook) <jackokring@gmail.com>
@@ -170,13 +182,15 @@ follower <follower@rancidbacon.com>
fundamental <mark.d.mccurry@gmail.com>
gandalf3 <gandalf3@users.noreply.github.com>
groboclown <matt@groboclown.net>
https://gitlab.com/users/CYBERDEViLNL <1148379+CYBERDEViLNL@users.noreply.github.com>
irrenhaus3 <irrenhaus3@users.noreply.github.com>
jasp00 <javier--IfwAyVwL9S8xJKrdU2QtlAdbjyPl9T@jasp.net>
justnope <dont@email.invalid>
kamnxt <kamnxt@kamnxt.com>
knittl <knittl89+github@gmail.com>
lmmsservice <lmms.service@gmail.com>
m-xbutterfly <m-xbutterfly@tutanota.com>
noahb01 <noahb2713@gmail.com>
necrashter <iiilker99@gmail.com>
projectpitchin <githobbyacct@gmail.com>
rgwan <kmlinuxm@gmail.com>
xhe <xhebox@users.noreply.github.com>

View File

@@ -34,6 +34,7 @@
#include "AudioWeakJack.h"
#endif
#include <atomic>
#include <QtCore/QVector>
#include <QtCore/QList>
#include <QtCore/QMap>
@@ -57,6 +58,7 @@ public:
// the jack callback is handled here, we call the midi client so that it can read
// it's midi data during the callback
AudioJack * addMidiClient(MidiJack *midiClient);
void removeMidiClient(void) { m_midiClient = nullptr; }
jack_client_t * jackClient() {return m_client;};
inline static QString name()
@@ -106,9 +108,9 @@ private:
jack_client_t * m_client;
bool m_active;
bool m_stopped;
std::atomic<bool> m_stopped;
MidiJack *m_midiClient;
std::atomic<MidiJack *> m_midiClient;
QVector<jack_port_t *> m_outputPorts;
jack_default_audio_sample_t * * m_tempOutBufs;
surroundSampleFrame * m_outBuf;

View File

@@ -220,6 +220,7 @@ public:
m_centerValue = centerVal;
}
//! link @p m1 and @p m2, let @p m1 take the values of @p m2
static void linkModels( AutomatableModel* m1, AutomatableModel* m2 );
static void unlinkModels( AutomatableModel* m1, AutomatableModel* m2 );
@@ -325,7 +326,7 @@ private:
DataType m_dataType;
ScaleType m_scaleType; //! scale type, linear by default
ScaleType m_scaleType; //!< scale type, linear by default
float m_value;
float m_initValue;
float m_minValue;

View File

@@ -47,6 +47,7 @@ protected:
DropToolBar * addDropToolBar(Qt::ToolBarArea whereToAdd, QString const & windowTitle);
DropToolBar * addDropToolBar(QWidget * parent, Qt::ToolBarArea whereToAdd, QString const & windowTitle);
virtual void closeEvent( QCloseEvent * _ce );
protected slots:
virtual void play() {}
virtual void record() {}

View File

@@ -31,6 +31,7 @@
#include "export.h"
#include "lmms_basics.h"
class BBTrackContainer;
class DummyTrackContainer;
@@ -100,6 +101,9 @@ public:
{
return s_framesPerTick;
}
static float framesPerTick(sample_rate_t sample_rate);
static void updateFramesPerTick();
static inline LmmsCore * inst()

View File

@@ -48,6 +48,14 @@ class FileBrowser : public SideBarWidget
{
Q_OBJECT
public:
/**
Create a file browser side bar widget
@param directories '*'-separated list of directories to search for.
If a directory of factory files should be in the list it
must be the last one (for the factory files delimiter to work)
@param filter Filter as used in QDir::match
@param recurse *to be documented*
*/
FileBrowser( const QString & directories, const QString & filter,
const QString & title, const QPixmap & pm,
QWidget * parent, bool dirs_as_items = false, bool recurse = false );
@@ -69,8 +77,8 @@ private:
QLineEdit * m_filterEdit;
QString m_directories;
QString m_filter;
QString m_directories; //!< Directories to search, split with '*'
QString m_filter; //!< Filter as used in QDir::match()
bool m_dirsAsItems;
bool m_recurse;
@@ -159,7 +167,14 @@ private:
static QPixmap * s_folderOpenedPixmap;
static QPixmap * s_folderLockedPixmap;
//! Directories that lead here
//! Initially, this is just set to the current path of a directory
//! If, however, you have e.g. 'TripleOscillator/xyz' in two of the
//! file browser's search directories 'a' and 'b', this will have two
//! entries 'a/TripleOscillator' and 'b/TripleOscillator'
//! and 'xyz' in the tree widget
QStringList m_directories;
//! Filter as used in QDir::match()
QString m_filter;
int m_dirCount;

View File

@@ -174,8 +174,7 @@ private:
BoolModel m_volumeKnob;
FloatModel m_volumeRatio;
QPoint m_mouseOffset;
QPoint m_origMousePos;
QPoint m_lastMousePos; //!< mouse position in last mouseMoveEvent
float m_leftOver;
bool m_buttonPressed;

View File

@@ -73,8 +73,9 @@ protected:
virtual void mouseDoubleClickEvent( QMouseEvent * _me );
private:
float m_remainder; //!< floating offset of spinbox in [-0.5, 0.5]
bool m_mouseMoving;
QPoint m_origMousePos;
QPoint m_lastMousePos; //!< mouse position in last mouseMoveEvent
int m_displayOffset;
void enterValue();

View File

@@ -100,7 +100,7 @@ private:
int m_numDigits;
int m_marginWidth;
void initUi( const QString& name, const QString &style = QString("19green") ); //!< to be called by ctors
void initUi( const QString& name, const QString &style ); //!< to be called by ctors
} ;

View File

@@ -126,21 +126,13 @@ public:
void clearKeyModifiers();
bool isCtrlPressed()
{
return m_keyMods.m_ctrl;
}
// TODO Remove this function, since m_shift can get stuck down.
// [[deprecated]]
bool isShiftPressed()
{
return m_keyMods.m_shift;
}
bool isAltPressed()
{
return m_keyMods.m_alt;
}
static void saveWidgetState( QWidget * _w, QDomElement & _de );
static void restoreWidgetState( QWidget * _w, const QDomElement & _de );
@@ -176,11 +168,11 @@ public slots:
void autoSave();
protected:
virtual void closeEvent( QCloseEvent * _ce );
virtual void focusOutEvent( QFocusEvent * _fe );
virtual void keyPressEvent( QKeyEvent * _ke );
virtual void keyReleaseEvent( QKeyEvent * _ke );
virtual void timerEvent( QTimerEvent * _ev );
void closeEvent( QCloseEvent * _ce ) override;
void focusOutEvent( QFocusEvent * _fe ) override;
void keyPressEvent( QKeyEvent * _ke ) override;
void keyReleaseEvent( QKeyEvent * _ke ) override;
void timerEvent( QTimerEvent * _ev ) override;
private:

View File

@@ -171,7 +171,10 @@ public:
return m_audioDevStartFailed;
}
//! Set new audio device. Old device will be deleted,
//! unless it's stored using storeAudioDevice
void setAudioDevice( AudioDevice * _dev , bool startNow );
//! See overloaded function
void setAudioDevice( AudioDevice * _dev,
const struct qualitySettings & _qs,
bool _needs_fifo,
@@ -396,6 +399,7 @@ private:
bool m_isProcessing;
// audio device stuff
void doSetAudioDevice( AudioDevice *_dev );
AudioDevice * m_audioDev;
AudioDevice * m_oldAudioDev;
QString m_audioDevName;

View File

@@ -302,6 +302,7 @@ private:
NotePlayHandleList m_subNotes; // used for chords and arpeggios
volatile bool m_released; // indicates whether note is released
bool m_releaseStarted;
bool m_hasMidiNote;
bool m_hasParent; // indicates whether note has parent
NotePlayHandle * m_parent; // parent note
bool m_hadChildren;

View File

@@ -250,6 +250,7 @@ private:
QList<int> m_markedSemiTones;
QMenu * m_semiToneMarkerMenu; // when you right click on the key area
int m_pianoKeySelected;
PianoRoll();
PianoRoll( const PianoRoll & );

View File

@@ -34,6 +34,7 @@
class JournallingObject;
//! @warning many parts of this class may be rewritten soon
class ProjectJournal
{
public:
@@ -76,7 +77,9 @@ public:
reallocID( _id, NULL );
}
//! hack, not used when saving a file
static jo_id_t idToSave( jo_id_t id );
//! hack, not used when loading a savefile
static jo_id_t idFromSave( jo_id_t id );
void clearJournal();

View File

@@ -265,6 +265,8 @@ public slots:
void sampleRateChanged();
private:
static sample_rate_t mixerSampleRate();
void update( bool _keep_settings = false );
void convertIntToFloat ( int_sample_t * & _ibuf, f_cnt_t _frames, int _channels);

View File

@@ -126,6 +126,9 @@ private slots:
void toggleDisplayWaveform( bool en );
void toggleDisableAutoquit( bool en );
void vstEmbedMethodChanged();
void toggleVSTAlwaysOnTop( bool en );
void setLanguage( int lang );
@@ -207,6 +210,8 @@ private:
QComboBox* m_vstEmbedComboBox;
QString m_vstEmbedMethod;
LedCheckBox * m_vstAlwaysOnTopCheckBox;
bool m_vstAlwaysOnTop;
} ;

View File

@@ -75,6 +75,9 @@ public:
public slots:
void scrolled( int new_pos );
void selectRegionFromPixels(int xStart, int xEnd);
void stopSelectRegion();
void updateRubberband();
void setEditMode( EditMode mode );
void setEditModeDraw();
@@ -85,6 +88,9 @@ public slots:
protected:
virtual void closeEvent( QCloseEvent * ce );
virtual void mousePressEvent(QMouseEvent * me);
virtual void mouseMoveEvent(QMouseEvent * me);
virtual void mouseReleaseEvent(QMouseEvent * me);
private slots:
void setHighQuality( bool );
@@ -109,6 +115,9 @@ private:
virtual bool allowRubberband() const;
int trackIndexFromSelectionPoint(int yPos);
int indexOfTrackView(const TrackView* tv);
Song * m_song;
@@ -135,6 +144,14 @@ private:
bool m_smoothScroll;
EditMode m_mode;
QPoint m_origin;
QPoint m_scrollPos;
QPoint m_mousePos;
int m_rubberBandStartTrackview;
MidiTime m_rubberbandStartMidipos;
int m_currentZoomingValue;
int m_trackHeadWidth;
bool m_selectRegion;
friend class SongEditorWindow;

View File

@@ -30,6 +30,7 @@
#include <QtCore/QList>
#include <QWidget>
#include <QSignalMapper>
#include <QSize>
#include <QColor>
#include <QMimeData>
@@ -72,6 +73,8 @@ const int DEFAULT_TRACK_HEIGHT = 32;
const int TCO_BORDER_WIDTH = 2;
char const *const FILENAME_FILTER = "[\\0000-\x1f\"*/:<>?\\\\|\x7f]";
class TrackContentObject : public Model, public JournallingObject
{
@@ -199,6 +202,9 @@ class TrackContentObjectView : public selectableObject, public ModelView
Q_PROPERTY( QColor textShadowColor READ textShadowColor WRITE setTextShadowColor )
Q_PROPERTY( QColor BBPatternBackground READ BBPatternBackground WRITE setBBPatternBackground )
Q_PROPERTY( bool gradient READ gradient WRITE setGradient )
// We have to use a QSize here because using QPoint isn't supported.
// width -> x, height -> y
Q_PROPERTY( QSize mouseHotspotHand WRITE setMouseHotspotHand )
public:
TrackContentObjectView( TrackContentObject * tco, TrackView * tv );
@@ -210,6 +216,12 @@ public:
{
return m_tco;
}
inline TrackView * getTrackView()
{
return m_trackView;
}
// qproperty access func
QColor mutedColor() const;
QColor mutedBackgroundColor() const;
@@ -225,11 +237,12 @@ public:
void setTextShadowColor( const QColor & c );
void setBBPatternBackground( const QColor & c );
void setGradient( const bool & b );
void setMouseHotspotHand(const QSize & s);
// access needsUpdate member variable
bool needsUpdate();
void setNeedsUpdate( bool b );
public slots:
virtual bool close();
void cut();
@@ -256,10 +269,6 @@ protected:
float pixelsPerTact();
inline TrackView * getTrackView()
{
return m_trackView;
}
DataFile createTCODataFiles(const QVector<TrackContentObjectView *> & tcos) const;
@@ -298,8 +307,10 @@ private:
QColor m_textShadowColor;
QColor m_BBPatternBackground;
bool m_gradient;
QSize m_mouseHotspotHand; // QSize must be used because QPoint isn't supported by property system
bool m_cursorSetYet;
bool m_needsUpdate;
bool m_needsUpdate;
inline void setInitialMousePos( QPoint pos )
{
m_initialMousePos = pos;
@@ -341,7 +352,7 @@ public:
}
}
bool canPasteSelection( MidiTime tcoPos, const QMimeData * mimeData );
bool canPasteSelection( MidiTime tcoPos, const QDropEvent *de );
bool pasteSelection( MidiTime tcoPos, QDropEvent * de );
MidiTime endPosition( const MidiTime & posStart );

View File

@@ -133,27 +133,21 @@ public slots:
virtual void dropEvent( QDropEvent * _de );
virtual void dragEnterEvent( QDragEnterEvent * _dee );
///
/// \brief selectRegionFromPixels
/// \param x
/// \param y
/// Use the rubber band to select TCO from all tracks using x, y pixels
void selectRegionFromPixels(int xStart, int xEnd);
///
/// \brief stopRubberBand
/// Removes the rubber band from display when finished with.
void stopRubberBand();
protected:
static const int DEFAULT_PIXELS_PER_TACT = 16;
virtual void mousePressEvent( QMouseEvent * _me );
virtual void mouseMoveEvent( QMouseEvent * _me );
virtual void mouseReleaseEvent( QMouseEvent * _me );
virtual void resizeEvent( QResizeEvent * );
MidiTime m_currentPosition;
RubberBand *rubberBand() const;
private:
@@ -187,7 +181,7 @@ private:
float m_ppt;
RubberBand * m_rubberBand;
QPoint m_origin;
signals:

View File

@@ -76,10 +76,10 @@ private slots:
private:
struct VstSyncData
{
bool isPlaying;
double ppqPos;
int timeSigNumer;
int timeSigDenom;
bool isPlaying;
bool isCycle;
bool hasSHM;
float cycleStart;

View File

@@ -41,10 +41,10 @@
struct VstSyncData
{
bool isPlaying;
double ppqPos;
int timeSigNumer;
int timeSigDenom;
bool isPlaying;
bool isCycle;
bool hasSHM;
float cycleStart;

View File

@@ -34,7 +34,7 @@
#include <cmath>
using namespace std;
#if defined (LMMS_BUILD_WIN32) || defined (LMMS_BUILD_APPLE) || defined(LMMS_BUILD_HAIKU) || defined (__FreeBSD__) || defined(__OpenBSD__)
#ifndef __GLIBC__
#ifndef isnanf
#define isnanf(x) isnan(x)
#endif

View File

@@ -28,6 +28,10 @@
#define PLATFORM "OpenBSD"
#endif
#ifdef LMMS_BUILD_FREEBSD
#define PLATFORM "FreeBSD"
#endif
#ifdef LMMS_BUILD_WIN32
#define PLATFORM "win32"
#endif

View File

@@ -83,7 +83,6 @@ bool AmplifierEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames )
for( fpp_t f = 0; f < frames; ++f )
{
// qDebug( "offset %d, value %f", f, m_ampControls.m_volumeModel.value( f ) );
outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1];
sample_t s[2] = { buf[f][0], buf[f][1] };
@@ -123,6 +122,7 @@ bool AmplifierEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames )
buf[f][0] = d * buf[f][0] + w * s[0];
buf[f][1] = d * buf[f][1] + w * s[1];
outSum += buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1];
}
checkGate( outSum / frames );

View File

@@ -100,13 +100,13 @@ bool BassBoosterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames
//float gain = gainBuffer ? gainBuffer[f] : gain;
m_bbFX.leftFX().setGain( gain );
m_bbFX.rightFX().setGain( gain);
outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1];
sample_t s[2] = { buf[f][0], buf[f][1] };
m_bbFX.nextSample( s[0], s[1] );
buf[f][0] = d * buf[f][0] + w * s[0];
buf[f][1] = d * buf[f][1] + w * s[1];
outSum += buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1];
}
checkGate( outSum / frames );

View File

@@ -190,12 +190,12 @@ bool CrossoverEQEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames
double outSum = 0.0;
for( int f = 0; f < frames; ++f )
{
outSum = buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1];
buf[f][0] = d * buf[f][0] + w * m_work[f][0];
buf[f][1] = d * buf[f][1] + w * m_work[f][1];
outSum += buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1];
}
checkGate( outSum );
checkGate( outSum / frames );
return isRunning();
}

View File

@@ -193,11 +193,11 @@ bool DualFilterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames
s[0] += ( s2[0] * mix2 );
s[1] += ( s2[1] * mix2 );
}
outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1];
// do another mix with dry signal
buf[f][0] = d * buf[f][0] + w * s[0];
buf[f][1] = d * buf[f][1] + w * s[1];
outSum += buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1];
//increment pointers
cut1Ptr += cut1Inc;

View File

@@ -55,10 +55,10 @@ EqControlsDialog::EqControlsDialog( EqControls *controls ) :
EqSpectrumView * inSpec = new EqSpectrumView( &controls->m_inFftBands, this );
inSpec->move( 26, 17 );
inSpec->setColor( QColor( 54, 45, 142, 150 ) );
inSpec->setColor( QColor( 77, 101, 242, 150 ) );
EqSpectrumView * outSpec = new EqSpectrumView( &controls->m_outFftBands, this );
outSpec->setColor( QColor( 9, 166, 156, 150 ) );
outSpec->setColor( QColor( 0, 255, 239, 150 ) );
outSpec->move( 26, 17 );
m_parameterWidget = new EqParameterWidget( this , controls );

View File

@@ -45,11 +45,11 @@ EqAnalyser::EqAnalyser() :
const float a2 = 0.14128;
const float a3 = 0.01168;
for(int i = 0; i < FFT_BUFFER_SIZE; i++)
for (int i = 0; i < FFT_BUFFER_SIZE; i++)
{
m_fftWindow[i] = ( a0 - a1 * cosf( 2 * F_PI * i / (float)FFT_BUFFER_SIZE - 1 )
+ a2 * cosf( 4 * F_PI * i / (float)FFT_BUFFER_SIZE-1)
- a3 * cos( 6 * F_PI * i / (float)FFT_BUFFER_SIZE - 1.0 ));
m_fftWindow[i] = (a0 - a1 * cos(2 * F_PI * i / ((float)FFT_BUFFER_SIZE - 1.0))
+ a2 * cos(4 * F_PI * i / ((float)FFT_BUFFER_SIZE - 1.0))
- a3 * cos(6 * F_PI * i / ((float)FFT_BUFFER_SIZE - 1.0)));
}
clear();
}

Some files were not shown because too many files have changed in this diff Show More