Commit Graph

3969 Commits

Author SHA1 Message Date
Hyunjin Song
99d97fcc35 Fix indentation 2022-02-02 14:58:08 +09:00
Hyunjin Song
ca72d5b16a Merge branch 'master' 2022-02-02 14:48:55 +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
merrickclay
13e17496dc Updates PianoRoll to immediately reflect note changes in BBEditor (#6242) 2021-12-28 11:12:26 +09: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
Shmuel Hazan
1b39d39b24 Recoding: Disable recording buttons when recording is unavailable
Instead of hiding the record action buttons, disable them and indicate the issue on the tooltip.
2021-12-04 17:53:39 +02: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
Johannes Lorenz
1dabd75267 Fixes #6186: No segfaults with future lmmsrc.xml version (#6208) 2021-11-05 17:30:27 +01:00
Shmuel Hazan
cf9cea88c3 DataFile: Skip empty resource attributes 2021-10-23 21:02:22 +03:00
Shmuel H
333f43c883 fixup: fix formatting issues 2021-10-23 21:02:22 +03:00
Shmuel H
7184ce6e5d SampleRecordHandle: Obtain the offset to the record with a parameter
instead of hacking sampleBuffer ()->startFrame ().

That solves a bug with `startFrame ()` being negetive in recording some
cases.
2021-10-23 21:02:22 +03:00
Shmuel H
ed7ff82a42 SampleTrack: In a case of recording, play a sample TCO even if its
actual data starts after that.
2021-10-23 21:02:22 +03:00
Shmuel H
b8938fd7b7 SampleTrack: Make sure an empty TCO with isRecord would still be
"played" (recorded).
2021-10-23 21:02:22 +03:00
Shmuel H
50cc41a5a1 Mixer & PlayHandle: Support PlayHandle without audioPort and set
audioPort as nullptr by default.
2021-10-23 21:02:22 +03:00
Shmuel H
79b7092514 SampleTrack: Uncomment disabled recording-related code. 2021-10-23 21:02:22 +03: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
Alexandre Almeida
47cddcba75 Split InstrumentTrack (#6176)
Split InstrumentTrackView and InstrumentTrackWindow off of InstrumentTrack
2021-10-02 05:40:01 +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
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
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
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
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
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
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
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
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
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