Add explenation for LadspaControls::m_noLink
This commit is contained in:
3
.mailmap
3
.mailmap
@@ -26,3 +26,6 @@ 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>
|
||||
|
||||
15
.travis.yml
15
.travis.yml
@@ -6,26 +6,35 @@ cache:
|
||||
directories:
|
||||
- apt_mingw_cache
|
||||
- $HOME/.ccache
|
||||
- $HOME/pbuilder-bases
|
||||
matrix:
|
||||
include:
|
||||
- env: TYPE=style
|
||||
- os: linux
|
||||
- env: TARGET_OS=win32
|
||||
- env: TARGET_OS=win64
|
||||
- env: TARGET_OS=debian-sid TARGET_DEPLOY=True
|
||||
- env: TARGET_OS=debian-sid TARGET_ARCH=i386
|
||||
- compiler: clang
|
||||
env: TARGET_OS=debian-sid
|
||||
- os: osx
|
||||
osx_image: xcode8.3
|
||||
install: ${TRAVIS_BUILD_DIR}/.travis/install.sh
|
||||
script: ${TRAVIS_BUILD_DIR}/.travis/script.sh
|
||||
after_script: ${TRAVIS_BUILD_DIR}/.travis/after_script.sh
|
||||
before_deploy: make package
|
||||
before_deploy:
|
||||
- if [ "$TARGET_OS" != debian-sid ]; then make package; fi
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: d4a+x4Gugpss7JK2DcHjyBZDmEFFh4iVfKDfITSD50T6Mc6At4LMgojvEu+6qT6IyOY2vm3UVT6fhyeuWDTRDwW9tfFlaHVA0h8aTRD+eAXOA7pQ8rEMwQO3+WCKuKTfEqUkpL4wxhww8dpkv54tqeIs0S4TBqz9tk8UhzU7XbE=
|
||||
file: lmms-${TRAVIS_TAG:1}-$TARGET_OS.exe
|
||||
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_OS" = win??)'
|
||||
condition: '"$TARGET_DEPLOY" = True'
|
||||
repo: LMMS/lmms
|
||||
|
||||
2
.travis/debian_pkgs.sha256
Normal file
2
.travis/debian_pkgs.sha256
Normal file
@@ -0,0 +1,2 @@
|
||||
314ef4af137903dfb13e8c3ef1e6ea56cfdb23808d52ec4f5f50e288c73610c5 pbuilder_0.229.1_all.deb
|
||||
fa82aa8ed3055c6f6330104deedf080b26778295e589426d4c4dd0f2c2a5defa debootstrap_1.0.95_all.deb
|
||||
@@ -5,5 +5,11 @@ source /opt/qt59/bin/qt59-env.sh
|
||||
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
cmake -DUSE_WERROR=ON -DCMAKE_INSTALL_PREFIX=../target $CMAKE_FLAGS ..
|
||||
make -j4
|
||||
make tests
|
||||
./tests/tests
|
||||
|
||||
2
.travis/linux.debian-sid.before_install.sh
Executable file
2
.travis/linux.debian-sid.before_install.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
sudo apt-get update -qq
|
||||
16
.travis/linux.debian-sid.install.sh
Executable file
16
.travis/linux.debian-sid.install.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
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
|
||||
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
|
||||
sha256sum -c "$TRAVIS_BUILD_DIR/.travis/debian_pkgs.sha256"
|
||||
sudo dpkg -i pbuilder_0.229.1_all.deb debootstrap_1.0.95_all.deb
|
||||
cd "$OLDPWD"
|
||||
38
.travis/linux.debian-sid.script.sh
Executable file
38
.travis/linux.debian-sid.script.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
: "${TARGET_ARCH:=amd64}"
|
||||
|
||||
BASETGZ="$HOME/pbuilder-bases/debian-sid-$TARGET_ARCH.tgz"
|
||||
MIRROR=http://cdn-fastly.deb.debian.org/debian
|
||||
KEYRING=/usr/share/keyrings/debian-archive-keyring.gpg
|
||||
|
||||
if [ -z "$TRAVIS_TAG" ]
|
||||
then
|
||||
sudo \
|
||||
sh -c "echo CCACHEDIR=$HOME/.ccache >> /etc/pbuilderrc"
|
||||
fi
|
||||
|
||||
if [ "$CC" = clang ]
|
||||
then
|
||||
sudo sh -c "echo EXTRAPACKAGES=clang >> /etc/pbuilderrc"
|
||||
fi
|
||||
|
||||
if [ ! -e "$BASETGZ.stamp" ]
|
||||
then
|
||||
mkdir -p "$HOME/pbuilder-bases"
|
||||
sudo pbuilder --create --basetgz "$BASETGZ" --mirror $MIRROR \
|
||||
--distribution sid --architecture $TARGET_ARCH \
|
||||
--debootstrapopts --variant=buildd \
|
||||
--debootstrapopts --keyring=$KEYRING \
|
||||
--debootstrapopts --include=perl
|
||||
touch "$BASETGZ.stamp"
|
||||
else
|
||||
sudo pbuilder --update --basetgz "$BASETGZ"
|
||||
fi
|
||||
|
||||
DIR="$PWD"
|
||||
cd ..
|
||||
dpkg-source -b "$DIR"
|
||||
env -i CC="$CC" CXX="$CXX" sudo pbuilder --build --debbuildopts "--jobs=auto" \
|
||||
--basetgz "$BASETGZ" ./*.dsc
|
||||
@@ -1,6 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON"
|
||||
../cmake/build_win32.sh
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON"
|
||||
../cmake/build_win64.sh
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# Workaround; No FindQt5.cmake module exists
|
||||
CMAKE_PREFIX_PATH="$(brew --prefix qt5)"
|
||||
export CMAKE_PREFIX_PATH
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
cmake -DUSE_WERROR=OFF -DCMAKE_INSTALL_PREFIX=../target $CMAKE_FLAGS ..
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
./tests/tests
|
||||
|
||||
@@ -13,9 +13,6 @@ if [ "$TYPE" = 'style' ]; then
|
||||
|
||||
else
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
export CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
|
||||
if [ -z "$TRAVIS_TAG" ]; then
|
||||
@@ -24,25 +21,21 @@ else
|
||||
|
||||
"$TRAVIS_BUILD_DIR/.travis/$TRAVIS_OS_NAME.$TARGET_OS.script.sh"
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
|
||||
if [[ $TARGET_OS != win* ]]; then
|
||||
tests/tests
|
||||
fi
|
||||
|
||||
# Package and upload non-tagged builds
|
||||
if [ ! -z "$TRAVIS_TAG" ]; then
|
||||
# Skip, handled by travis deploy instead
|
||||
exit 0
|
||||
elif [[ $TARGET_OS == win* ]]; then
|
||||
cd build
|
||||
make -j4 package
|
||||
PACKAGE="$(ls lmms-*win*.exe)"
|
||||
elif [[ $TRAVIS_OS_NAME == osx ]]; then
|
||||
cd build
|
||||
make -j4 install > /dev/null
|
||||
make dmg
|
||||
PACKAGE="$(ls lmms-*.dmg)"
|
||||
else
|
||||
elif [[ $TARGET_OS != debian-sid ]]; then
|
||||
cd build
|
||||
make -j4 install > /dev/null
|
||||
make appimage
|
||||
PACKAGE="$(ls lmms-*.AppImage)"
|
||||
|
||||
@@ -23,7 +23,7 @@ INCLUDE(GenerateExportHeader)
|
||||
|
||||
STRING(TOUPPER "${CMAKE_PROJECT_NAME}" PROJECT_NAME_UCASE)
|
||||
|
||||
SET(PROJECT_YEAR 2018)
|
||||
SET(PROJECT_YEAR 2019)
|
||||
|
||||
SET(PROJECT_AUTHOR "LMMS Developers")
|
||||
SET(PROJECT_URL "https://lmms.io")
|
||||
@@ -33,7 +33,7 @@ SET(PROJECT_COPYRIGHT "2008-${PROJECT_YEAR} ${PROJECT_AUTHOR}")
|
||||
SET(VERSION_MAJOR "1")
|
||||
SET(VERSION_MINOR "2")
|
||||
SET(VERSION_RELEASE "0")
|
||||
SET(VERSION_STAGE "rc7")
|
||||
SET(VERSION_STAGE "rc8")
|
||||
SET(VERSION_BUILD "0")
|
||||
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_RELEASE}")
|
||||
IF(VERSION_STAGE)
|
||||
@@ -67,12 +67,15 @@ OPTION(WANT_STK "Include Stk (Synthesis Toolkit) support" ON)
|
||||
OPTION(WANT_SWH "Include Steve Harris's LADSPA plugins" ON)
|
||||
OPTION(WANT_TAP "Include Tom's Audio Processing LADSPA plugins" ON)
|
||||
OPTION(WANT_VST "Include VST support" ON)
|
||||
OPTION(WANT_VST_NOWINE "Include partial VST support (without wine)" OFF)
|
||||
OPTION(WANT_VST_32 "Include 32-bit VST support" ON)
|
||||
OPTION(WANT_VST_64 "Include 64-bit VST support" ON)
|
||||
OPTION(WANT_WINMM "Include WinMM MIDI support" OFF)
|
||||
OPTION(WANT_DEBUG_FPE "Debug floating point exceptions" OFF)
|
||||
|
||||
|
||||
IF(LMMS_BUILD_APPLE)
|
||||
# Fix linking on 10.14+. See issue #4762 on github
|
||||
LINK_DIRECTORIES(/usr/local/lib)
|
||||
SET(WANT_ALSA OFF)
|
||||
SET(WANT_PULSEAUDIO OFF)
|
||||
SET(WANT_VST OFF)
|
||||
@@ -88,7 +91,6 @@ IF(LMMS_BUILD_WIN32)
|
||||
SET(WANT_ALSA OFF)
|
||||
SET(WANT_JACK OFF)
|
||||
SET(WANT_PULSEAUDIO OFF)
|
||||
SET(WANT_PORTAUDIO OFF)
|
||||
SET(WANT_SNDIO OFF)
|
||||
SET(WANT_SOUNDIO OFF)
|
||||
SET(WANT_WINMM ON)
|
||||
@@ -96,7 +98,6 @@ IF(LMMS_BUILD_WIN32)
|
||||
SET(STATUS_ALSA "<not supported on this platform>")
|
||||
SET(STATUS_JACK "<not supported on this platform>")
|
||||
SET(STATUS_PULSEAUDIO "<not supported on this platform>")
|
||||
SET(STATUS_PORTAUDIO "<disabled on this platform>")
|
||||
SET(STATUS_SOUNDIO "<disabled in this release>")
|
||||
SET(STATUS_WINMM "OK")
|
||||
SET(STATUS_APPLEMIDI "<not supported on this platform>")
|
||||
|
||||
@@ -10,7 +10,7 @@ Comment[ca]=Producció fàcil de música per a tothom!
|
||||
Comment[fr]=Production facile de musique pour tout le monde !
|
||||
Comment[pl]=Prosta produkcja muzyki dla każdego!
|
||||
Icon=lmms
|
||||
Exec=env QT_X11_NO_NATIVE_MENUBAR=1 QT_AUTO_SCREEN_SCALE_FACTOR=1 lmms %f
|
||||
Exec=lmms %f
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Qt;AudioVideo;Audio;Midi;
|
||||
|
||||
@@ -134,15 +134,15 @@ export LD_LIBRARY_PATH="${APPDIR}usr/lib/lmms/":$LD_LIBRARY_PATH
|
||||
|
||||
# Handle wine linking
|
||||
if [ -d "@WINE_32_LIBRARY_DIR@" ]; then
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LD_LIBRARY_PATH/wine/:@WINE_32_LIBRARY_DIR@:@WINE_32_LIBRARY_DIR@wine/
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_32_LIBRARY_DIRS@
|
||||
fi
|
||||
if [ -d "@WINE_64_LIBRARY_DIR@" ]; then
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LD_LIBRARY_PATH/wine/:@WINE_64_LIBRARY_DIR@:@WINE_64_LIBRARY_DIR@wine/
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_64_LIBRARY_DIRS@
|
||||
fi
|
||||
|
||||
# Move executables so linuxdeployqt can find them
|
||||
ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx"
|
||||
VSTLIB32="${APPDIR}usr/lib/lmms/RemoteVstPlugin32.exe.so"
|
||||
VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so"
|
||||
VSTLIB64="${APPDIR}usr/lib/lmms/RemoteVstPlugin64.exe.so"
|
||||
|
||||
ZYNBIN="${APPDIR}usr/bin/RemoteZynAddSubFx"
|
||||
@@ -172,8 +172,10 @@ executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale
|
||||
# Bundle both qt and non-qt dependencies into appimage format
|
||||
echo -e "\nBundling and relinking system dependencies..."
|
||||
echo -e ">>>>> linuxdeployqt" > "$LOGFILE"
|
||||
# FIXME: -unsupported-allow-new-glibc may result in an AppImage which is unusable on old systems.
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
"$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP >> "$LOGFILE" 2>&1
|
||||
"$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -unsupported-allow-new-glibc -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP >> "$LOGFILE" 2>&1
|
||||
success "Bundled and relinked dependencies"
|
||||
|
||||
# Link to original location so lmms can find them
|
||||
@@ -187,10 +189,16 @@ rm -f "${APPDIR}/usr/lib/libwine.so.1"
|
||||
# Use system-provided carla
|
||||
rm -f "${APPDIR}usr/lib/"libcarla*.so
|
||||
|
||||
# Move jack out of LD_LIBRARY_PATH
|
||||
# Remove bundled jack in LD_LIBRARY_PATH if exists
|
||||
if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then
|
||||
rm "${APPDIR}/usr/lib/libjack.so.0"
|
||||
fi
|
||||
|
||||
# Bundle jack out of LD_LIBRARY_PATH
|
||||
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/"
|
||||
mv "${APPDIR}/usr/lib/libjack.so.0" "${APPDIR}usr/lib/lmms/optional/"
|
||||
cp "$JACK_LIB" "${APPDIR}usr/lib/lmms/optional/"
|
||||
fi
|
||||
|
||||
# Point the AppRun to the shim launcher
|
||||
|
||||
@@ -73,9 +73,10 @@ ELSE()
|
||||
FILE(WRITE ${BASHCOMP_SCRIPT} "\
|
||||
#!${BASH}\n\
|
||||
set -e\n\
|
||||
BASHCOMP_PKG_PATH=\"${BASHCOMP_USER_PATH}\"\n\
|
||||
if [ -w \"${BASHCOMP_PKG_PATH}\" ]; then\n\
|
||||
BASHCOMP_PKG_PATH=\"${BASHCOMP_PKG_PATH}\"\n\
|
||||
else \n\
|
||||
BASHCOMP_PKG_PATH=\"\$DESTDIR${BASHCOMP_USER_PATH}\"\n\
|
||||
fi\n\
|
||||
echo -e \"\\nInstalling bash completion...\\n\"\n\
|
||||
mkdir -p \"\$BASHCOMP_PKG_PATH\"\n\
|
||||
|
||||
@@ -27,6 +27,12 @@ SET(DEPTH_VALUE 100)
|
||||
SET(MAX_ATTEMPTS 2)
|
||||
|
||||
MESSAGE("\nValidating 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
|
||||
|
||||
27
cmake/modules/CheckWineGcc.cmake
Normal file
27
cmake/modules/CheckWineGcc.cmake
Normal file
@@ -0,0 +1,27 @@
|
||||
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;
|
||||
}
|
||||
")
|
||||
EXECUTE_PROCESS(COMMAND ${WINEGCC_EXECUTABLE} "-m${BITNESS}"
|
||||
"${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()
|
||||
@@ -7,46 +7,89 @@
|
||||
# WINE_DEFINITIONS - Compiler switches required for using wine
|
||||
#
|
||||
|
||||
MACRO(_findwine_find_flags output expression result)
|
||||
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}")
|
||||
FOREACH(FLAG ${WINEBUILD_FLAGS})
|
||||
IF("${FLAG}" MATCHES "${expression}")
|
||||
SET(${result} "${FLAG}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
||||
|
||||
LIST(APPEND CMAKE_PREFIX_PATH /opt/wine-stable /opt/wine-devel /opt/wine-staging /usr/lib/wine/)
|
||||
|
||||
|
||||
FIND_PATH(WINE_INCLUDE_DIR wine/exception.h PATH_SUFFIXES wine)
|
||||
FIND_PROGRAM(WINE_CXX
|
||||
NAMES wineg++ winegcc winegcc64 winegcc32 winegcc-stable
|
||||
PATHS /usr/lib/wine)
|
||||
PATHS /usr/lib/wine
|
||||
)
|
||||
FIND_PROGRAM(WINE_BUILD NAMES winebuild)
|
||||
# Detect wine paths and handle linking problems
|
||||
IF(WINE_CXX)
|
||||
EXEC_PROGRAM(${WINE_CXX} ARGS "-m32 -v /dev/zero" OUTPUT_VARIABLE WINEBUILD_OUTPUT_32)
|
||||
EXEC_PROGRAM(${WINE_CXX} ARGS "-m64 -v /dev/zero" OUTPUT_VARIABLE WINEBUILD_OUTPUT_64)
|
||||
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem/usr/include$" BUGGED_WINEGCC)
|
||||
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem" WINEGCC_INCLUDE_DIR)
|
||||
_findwine_find_flags("${WINEBUILD_OUTPUT_32}" "libwinecrt0\\.a.*" WINECRT_32)
|
||||
_findwine_find_flags("${WINEBUILD_OUTPUT_64}" "libwinecrt0\\.a.*" WINECRT_64)
|
||||
STRING(REGEX REPLACE "^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}")
|
||||
STRING(REGEX REPLACE "/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}")
|
||||
STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}")
|
||||
STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}")
|
||||
|
||||
IF(BUGGED_WINEGCC)
|
||||
MESSAGE(WARNING "Your winegcc is unusable due to https://bugs.winehq.org/show_bug.cgi?id=46293,\n
|
||||
Consider either upgrading or downgrading wine.")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
IF(WINE_32_LIBRARY_DIR STREQUAL WINE_64_LIBRARY_DIR)
|
||||
MESSAGE(STATUS "Old winegcc detected, trying to use workaround linking")
|
||||
# Fix library search directory according to the target bitness
|
||||
IF(WINE_32_LIBRARY_DIR MATCHES "/lib/(x86_64|i386)-")
|
||||
# Debian systems
|
||||
STRING(REPLACE "/lib/x86_64-" "/lib/i386-" WINE_32_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}")
|
||||
STRING(REPLACE "/lib/i386-" "/lib/x86_64-" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/(lib|lib64)/wine/$")
|
||||
# WineHQ (/opt/wine-stable, /opt/wine-devel, /opt/wine-staging)
|
||||
STRING(REGEX REPLACE "/lib64/wine/$" "/lib/wine/" WINE_32_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}")
|
||||
STRING(REGEX REPLACE "/lib/wine/$" "/lib64/wine/" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib32/.*/wine/")
|
||||
# Systems with old multilib layout
|
||||
STRING(REPLACE "/lib32/" "/lib/" WINE_64_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}")
|
||||
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib64/.*/wine/")
|
||||
# We need to test if the corresponding 64bit library directory is lib or lib32
|
||||
STRING(REPLACE "/lib64/" "/lib32/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
IF(NOT EXISTS "${WINE_32_LIBRARY_DIR}")
|
||||
STRING(REPLACE "/lib64/" "/lib/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
ENDIF()
|
||||
ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib/.*/wine/")
|
||||
# Test if this directory is for 32bit or 64bit
|
||||
STRING(REPLACE "/lib/" "/lib32/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
IF(NOT EXISTS "${WINE_32_LIBRARY_DIR}")
|
||||
SET(WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
STRING(REPLACE "/lib/" "/lib64/" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(WARNING "Can't detect wine installation layout. You may get some build errors.")
|
||||
ENDIF()
|
||||
SET(WINE_LIBRARY_FIX "${WINE_32_LIBRARY_DIR} and ${WINE_64_LIBRARY_DIR}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
FIND_PATH(WINE_INCLUDE_DIR wine/exception.h
|
||||
HINTS "${WINE_INCLUDE_HINT}"
|
||||
)
|
||||
|
||||
SET(_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE})
|
||||
|
||||
FIND_LIBRARY(WINE_LIBRARY NAMES wine PATH_SUFFIXES wine i386-linux-gnu/wine)
|
||||
FIND_LIBRARY(WINE_LIBRARY NAMES wine
|
||||
PATH_SUFFIXES wine i386-linux-gnu/wine
|
||||
HINTS "${WINE_32_LIBRARY_DIR}" "${WINE_64_LIBRARY_DIR}"
|
||||
)
|
||||
|
||||
SET(CMAKE_LIBRARY_ARCHITECTURE ${_ARCHITECTURE})
|
||||
|
||||
SET(WINE_INCLUDE_DIRS ${WINE_INCLUDE_DIR} )
|
||||
SET(WINE_LIBRARIES ${WINE_LIBRARY} )
|
||||
|
||||
# Handle wine linking problems
|
||||
EXEC_PROGRAM(${WINE_CXX} ARGS "-v -m32 /dev/zero" OUTPUT_VARIABLE WINEBUILD_OUTPUT)
|
||||
STRING(REPLACE " " ";" WINEBUILD_FLAGS "${WINEBUILD_OUTPUT}")
|
||||
|
||||
FOREACH(FLAG ${WINEBUILD_FLAGS})
|
||||
IF("${FLAG}" MATCHES "libwinecrt0.a.*")
|
||||
STRING(REGEX REPLACE "/wine/libwinecrt0.a.*" "" FLAG "${FLAG}")
|
||||
|
||||
SET(WINE_64_LIBRARY_DIR "${FLAG}/")
|
||||
|
||||
# Debian systems
|
||||
STRING(REPLACE "/lib/x86_64-" "/lib/i386-" FLAG "${FLAG}")
|
||||
# Fedora systems
|
||||
STRING(REPLACE "/lib/lib64" "/lib/i386" FLAG "${FLAG}")
|
||||
# Gentoo systems
|
||||
STRING(REPLACE "/lib/wine-" "/lib32/wine-" FLAG "${FLAG}")
|
||||
# WineHQ (/opt/wine-stable, /opt/wine-devel, /opt/wine-staging)
|
||||
STRING(REGEX REPLACE "/lib64$" "/lib" FLAG "${FLAG}")
|
||||
|
||||
SET(WINE_32_LIBRARY_DIR "${FLAG}/")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(WINE_LIBRARIES ${WINE_LIBRARY})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Wine DEFAULT_MSG WINE_CXX WINE_LIBRARIES WINE_INCLUDE_DIRS)
|
||||
@@ -54,7 +97,23 @@ find_package_handle_standard_args(Wine DEFAULT_MSG WINE_CXX WINE_LIBRARIES WINE_
|
||||
mark_as_advanced(WINE_INCLUDE_DIR WINE_LIBRARY WINE_CXX WINE_BUILD)
|
||||
|
||||
IF(WINE_32_LIBRARY_DIR)
|
||||
SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR}wine/ -L${WINE_32_LIBRARY_DIR}")
|
||||
IF(WINE_32_LIBRARY_DIR MATCHES "wine*/lib")
|
||||
SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR} -L${WINE_32_LIBRARY_DIR}../")
|
||||
SET(WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIR}:${WINE_32_LIBRARY_DIR}/..")
|
||||
ELSE()
|
||||
SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR}")
|
||||
SET(WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIR}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(WINE_64_LIBRARY_DIR)
|
||||
IF(WINE_64_LIBRARY_DIR MATCHES "wine*/lib")
|
||||
SET(WINE_64_FLAGS "-L${WINE_64_LIBRARY_DIR} -L${WINE_64_LIBRARY_DIR}../")
|
||||
SET(WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIR}:${WINE_64_LIBRARY_DIR}/..")
|
||||
ELSE()
|
||||
SET(WINE_64_FLAGS "-L${WINE_64_LIBRARY_DIR}")
|
||||
SET(WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIR}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Create winegcc wrapper
|
||||
|
||||
@@ -22,6 +22,9 @@ while [ $# -gt 0 ]; do
|
||||
-m32)
|
||||
win32=true
|
||||
;;
|
||||
-m64)
|
||||
win64=true
|
||||
;;
|
||||
*)
|
||||
|
||||
;;
|
||||
@@ -42,11 +45,19 @@ fi
|
||||
# by FindWine.cmake
|
||||
extra_args="-I@WINE_INCLUDE_DIR@ -I@WINE_INCLUDE_DIR@/wine/windows"
|
||||
|
||||
# Apply manually specified flags
|
||||
extra_args="$extra_args @WINE_CXX_FLAGS@"
|
||||
|
||||
# Apply -m32 library fix if necessary
|
||||
if [ "$win32" = true ] && [ "$no_link" != true ]; then
|
||||
extra_args="$extra_args @WINE_32_FLAGS@"
|
||||
fi
|
||||
|
||||
# Apply -m64 library fix if necessary
|
||||
if [ "$win64" = true ] && [ "$no_link" != true ]; then
|
||||
extra_args="$extra_args @WINE_64_FLAGS@"
|
||||
fi
|
||||
|
||||
# Run winegcc
|
||||
export WINEBUILD=@WINE_BUILD@
|
||||
@WINE_CXX@ $extra_args $args
|
||||
|
||||
5733
data/locale/en.ts
5733
data/locale/en.ts
File diff suppressed because it is too large
Load Diff
@@ -7359,7 +7359,7 @@ Please make sure you have read-permission to the file and the directory containi
|
||||
</message>
|
||||
<message>
|
||||
<source>Vst Plugin Preset (*.fxp *.fxb)</source>
|
||||
<translation>Передустановка VST плагіна (*.fxp, *.fxb)</translation>
|
||||
<translation>Передустановка VST плагіна (*.fxp *.fxb)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>: default</source>
|
||||
|
||||
382
debian/changelog
vendored
Normal file
382
debian/changelog
vendored
Normal file
@@ -0,0 +1,382 @@
|
||||
lmms (1.2.0~rc7.1) unstable; urgency=low
|
||||
|
||||
* Upstream integration.
|
||||
* Drop Debian menu entry (policy 9.6).
|
||||
|
||||
-- Javier Serrano Polo <javier@jasp.net> Sat, 03 Nov 2018 02:43:42 +0100
|
||||
|
||||
lmms (1.1.3-8) unstable; urgency=low
|
||||
|
||||
* Fix build (Closes: #897806).
|
||||
* Allow recommendations (Closes: #891756).
|
||||
|
||||
-- Javier Serrano Polo <javier@jasp.net> Sat, 13 Oct 2018 17:05:54 +0200
|
||||
|
||||
lmms (1.1.3-7.1) unstable; urgency=high
|
||||
|
||||
* Non-maintainer upload.
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Fix build with Clang.
|
||||
* Fix build with GCC 7 (Closes: #853527).
|
||||
|
||||
[ Boyuan Yang ]
|
||||
* Remove Patrick Winnertz from uploaders list. (Closes: #867759)
|
||||
Thank you for your previous contributions!
|
||||
|
||||
-- Boyuan Yang <073plan@gmail.com> Sat, 10 Mar 2018 11:32:05 +0800
|
||||
|
||||
lmms (1.1.3-7) unstable; urgency=low
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Separate flags for WINE_BUILD_FLAGS to fix build problem on i386.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Mon, 26 Dec 2016 07:36:54 +0000
|
||||
|
||||
lmms (1.1.3-6) unstable; urgency=low
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Build with install RUNPATH (reproducibility).
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sun, 25 Dec 2016 09:38:53 +0000
|
||||
|
||||
lmms (1.1.3-5) unstable; urgency=medium
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Add Wine stable path to PATH, otherwise wine package would be required.
|
||||
* Sort plug-in embedded resources (reproducibility).
|
||||
* Define NDEBUG instead of setting build type to honor optimization choice.
|
||||
|
||||
-- Javier Serrano Polo <javier@jasp.net> Sat, 03 Sep 2016 17:31:05 +0200
|
||||
|
||||
lmms (1.1.3-4) unstable; urgency=medium
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Sort lists generated from globbing expressions (reproducibility).
|
||||
* Fixed upgrade that installs recommended packages (Closes: #827039).
|
||||
* Dropped unused build dependencies.
|
||||
* Dropped workaround for #824715, wineg++ is fixed.
|
||||
* Added contributors.
|
||||
* Honor CONTRIBUTORS override.
|
||||
* Replace __FILE__ (reproducibility).
|
||||
* Use build type "Release" (reproducibility).
|
||||
|
||||
-- Javier Serrano Polo <javier@jasp.net> Wed, 08 Jun 2016 01:25:37 +0200
|
||||
|
||||
lmms (1.1.3-3) unstable; urgency=medium
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Dropped Wine path from PATH.
|
||||
* Fixed lmms-common upgrade (Closes: #825287).
|
||||
* Hide vocoder plug-in, it is now in swh-plugins (Closes: #826110).
|
||||
* Added workaround for #824715 (Closes: #825286).
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Fri, 03 Jun 2016 08:51:31 +0000
|
||||
|
||||
lmms (1.1.3-2) unstable; urgency=medium
|
||||
|
||||
[ Javier Serrano Polo ]
|
||||
* Enabled vst plugin on i386 and amd64 (Closes: #763720).
|
||||
* Made Calf and vocoder plugins available to other programs (Closes: #758888).
|
||||
* Fixed version of metalish_dong01.ogg (Closes: #802588).
|
||||
* Bumped Standards-Version to 3.9.7. Doxygen documentation is not very useful.
|
||||
* Upgraded to Standards-Version 3.9.8. Ship icons in the default hicolor icon
|
||||
theme directories.
|
||||
* Use presets from zynaddsubfx-data.
|
||||
* Fixed build problems with GCC 6 (Closes: #811697).
|
||||
* Switch to PulseAudio back end on likely ALSA interception (Closes: #781479).
|
||||
* Updated copyright information.
|
||||
* Removed non-free projects.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Wed, 18 May 2016 09:09:23 +0000
|
||||
|
||||
lmms (1.1.3-1) unstable; urgency=low
|
||||
|
||||
* New upstream version 1.1.3 (Closes: #788457).
|
||||
- Drop well-defined-loop.patch, included upstream.
|
||||
* Add config for git-buildpackage to use pristine-tar all the time.
|
||||
* Change homepage url to new http://lmms.io/.
|
||||
* Added fluid as build-depend.
|
||||
* New patch find-fluid.patch to find the fluid binary in unstable.
|
||||
* New patch gcc5.patch to get the code building with gcc 5 in
|
||||
unstable (Closes: #777989).
|
||||
* Added man-page-adjustment.patch to fix manpage formatting of AUTHOR
|
||||
block. Discovered thanks to lintian.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Mon, 21 Sep 2015 13:54:02 +0200
|
||||
|
||||
lmms (1.0.3-5) unstable; urgency=low
|
||||
|
||||
* Make lmms replace and break lmms-common (<< 1.0.0-1) to handle the
|
||||
fact that /usr/share/menu/lmms moved from lmms-common to lmms in
|
||||
this version (Closes: #765970).
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Sun, 19 Oct 2014 23:43:08 +0200
|
||||
|
||||
lmms (1.0.3-4) unstable; urgency=low
|
||||
|
||||
* Correct watch file to reflect '-src' part of upstream tarball.
|
||||
* New desktop-argument.patch to let desktops know how to pass files to
|
||||
lmms. Thanks to lintian for noticing the bug.
|
||||
* Revert change to enable the vsl plugin in version 1.0.3-3, as it did
|
||||
not work. Reopen bug #763720.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Wed, 08 Oct 2014 19:21:53 +0200
|
||||
|
||||
lmms (1.0.3-3) unstable; urgency=medium
|
||||
|
||||
* Try to get vsl plugin working on i386 by build depending on libwine-dev
|
||||
and wine32-dev-tools (Closes: #763720). Unable to get it working on
|
||||
amd64.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Tue, 07 Oct 2014 12:13:16 +0200
|
||||
|
||||
lmms (1.0.3-2) unstable; urgency=medium
|
||||
|
||||
* Change build rule to only enable ALSA support on Linux (Closes: #754718).
|
||||
Patch from Steven Chamberlain with input from Guillem Jover.
|
||||
* Drop libwine-dev build dependency to avoid build failure in the
|
||||
vst plugin. It should be enabled when we figure out how to do it.
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Thu, 02 Oct 2014 08:19:53 +0200
|
||||
|
||||
lmms (1.0.3-1) unstable; urgency=low
|
||||
|
||||
* Move package into Debian Edu git repository and add myself as
|
||||
co-maintainer.
|
||||
* Update to upstream version 1.0.3.
|
||||
* Correct build dependency on i386, use libwine-dev instead of the now
|
||||
obsolete wine-dev (Closes: #748183).
|
||||
* Update Standards-Version from 3.9.5 to 3.9.6.
|
||||
* Add new well-defined-loop.patch to fix compile error triggered by
|
||||
undefined loop behaviour (Closes: #753177).
|
||||
|
||||
-- Petter Reinholdtsen <pere@debian.org> Wed, 01 Oct 2014 23:00:19 +0200
|
||||
|
||||
lmms (1.0.0-1) unstable; urgency=low
|
||||
|
||||
* New upstream version (Closes: #703900, #735764, #696271)
|
||||
* Using a wraped-style control (Closes: #689347)
|
||||
* Don't suggest vcf as it no longer exists (since a long time)
|
||||
(Closes: #618350)
|
||||
* Problems with jack backend were fixed long ago (Closes: #557421)
|
||||
* No depends/recommends on wine anymore (Closes: #622215, #622080)
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Thu, 24 Apr 2014 22:30:17 +0200
|
||||
|
||||
lmms (0.4.10-2.3) unstable; urgency=low
|
||||
|
||||
* Non maintainer upload.
|
||||
* Remove wine-related dependencies on amd64, thereby disabling building
|
||||
VST plugin. (Closes: #676760)
|
||||
|
||||
-- Hilko Bengen <bengen@debian.org> Wed, 27 Jun 2012 23:14:40 +0200
|
||||
|
||||
lmms (0.4.10-2.2) unstable; urgency=low
|
||||
|
||||
* Non maintainer upload.
|
||||
* Fix build failure with GCC 4.7. Closes: #667265.
|
||||
* Turn on verbose build.
|
||||
|
||||
-- Matthias Klose <doko@debian.org> Tue, 17 Apr 2012 14:08:53 +0200
|
||||
|
||||
lmms (0.4.10-2.1) unstable; urgency=low
|
||||
|
||||
* Non-maintainer upload.
|
||||
* Fix FTBFS on GNU/kFreeBSD. Thanks Pino Toscano. (Closes: #641064)
|
||||
|
||||
-- Robert Millan <rmh@debian.org> Fri, 27 Apr 2012 22:55:55 +0200
|
||||
|
||||
lmms (0.4.10-2) unstable; urgency=low
|
||||
|
||||
* Removed build-dep on libestools2.0-dev (Closes: #614975)
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Fri, 11 Mar 2011 09:37:43 +0100
|
||||
|
||||
lmms (0.4.10-1) unstable; urgency=low
|
||||
|
||||
* Imported Upstream version 0.4.10
|
||||
* changed mode of patch
|
||||
* Add source/format with 3.0 (quilt) and rearrange source a bit
|
||||
* Bump standarts version to 3.9.1 - no further changes needed
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Fri, 11 Feb 2011 20:03:06 +0100
|
||||
|
||||
lmms (0.4.7-2) unstable; urgency=low
|
||||
|
||||
[ Reinhard Tartler ]
|
||||
* Depend on wine only on i386 and amd64 (Closes: #590950)
|
||||
|
||||
[ Patrick Winnertz ]
|
||||
* Uploading patch from siretart, thanks for helping.
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Mon, 02 Aug 2010 10:13:28 +0200
|
||||
|
||||
lmms (0.4.7-1) unstable; urgency=low
|
||||
|
||||
* New upstream version
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Thu, 29 Jul 2010 16:24:00 +0200
|
||||
|
||||
lmms (0.4.6-2) unstable; urgency=low
|
||||
|
||||
* Build-depend on libestools2.0-dev (Closes: #589882)
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Wed, 28 Jul 2010 11:55:16 +0200
|
||||
|
||||
lmms (0.4.6-1) unstable; urgency=low
|
||||
|
||||
* New upstream version (Closes: #565733)
|
||||
* Bumped standards version to 3.8.3, no further changes needed
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Sun, 24 Jan 2010 16:40:39 +0100
|
||||
|
||||
lmms (0.4.5-1) unstable; urgency=low
|
||||
|
||||
* New upstream version (Closes: #543645)
|
||||
* Fix FTBFS on amd64 (Closes: #540671 #543017)
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Fri, 11 Sep 2009 09:56:45 +0200
|
||||
|
||||
lmms (0.4.4-1) unstable; urgency=low
|
||||
|
||||
* New upstream version (Closes: #511363)
|
||||
* Provide menu file (Closes: #514905)
|
||||
- The menufile is included in lmms-common and not in lmms
|
||||
as it is not arch specific
|
||||
* Bumped standards version to 3.8.2 no further changes needed
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Wed, 05 Aug 2009 20:46:40 +0200
|
||||
|
||||
lmms (0.3.2-1) unstable; urgency=low
|
||||
|
||||
* Decrease wine dependency to wine-bin as suggested. (Closes: #446163)
|
||||
* Acknowlegded NMU from Pierre Habouzit <madcoder@debian.org> in order to
|
||||
fix FTBFS with gcc-4.3 which (Closes: #462202)
|
||||
* Now including the singerbot plugin. (Closes: #443224)
|
||||
* Add patch to prevent lmms from crashing.
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Mon, 17 Mar 2008 10:56:12 +0100
|
||||
|
||||
lmms (0.3.1-1.1) unstable; urgency=low
|
||||
|
||||
* Non-maintainer upload.
|
||||
* Add g++-4.3.patch to fix g++-4.3 FTBFS (Closes: 462202).
|
||||
|
||||
-- Pierre Habouzit <madcoder@debian.org> Sun, 16 Mar 2008 23:21:56 +0000
|
||||
|
||||
lmms (0.3.1-1) unstable; urgency=low
|
||||
|
||||
* Packaging new upstream release.
|
||||
* Install Upstream Changelog (Closes: #441477)
|
||||
Thanks to Felipe Sateler
|
||||
* Lowered the caps dependency to Recommends (Closes: #446163)
|
||||
* Added -i/-a to the build targets in rules in order to make sure that only
|
||||
(in)dep packages are build.
|
||||
* Changed my maintainer address
|
||||
* Added patch to remove stereo_enhancer plugin which has a ftbfs with gcc
|
||||
4.2.3
|
||||
* Added imagemagick as build-dep since we have to convert a .png to a .xpm
|
||||
via convert
|
||||
* Doesn't install upstreams menu file, since it's outdated.. instead use
|
||||
our own.
|
||||
* Standard-Version bump to 3.7.3
|
||||
* Remove Homepage field from Description and create a own Header
|
||||
* Added postinst and postrm for lmms-common to call update-menu if available
|
||||
(this has to be done manually, since we doesn't use dh_installmenu to install
|
||||
the menu file)
|
||||
|
||||
-- Patrick Winnertz <winnie@debian.org> Thu, 06 Dec 2007 07:08:04 +0100
|
||||
|
||||
lmms (0.3.0-1) unstable; urgency=low
|
||||
|
||||
[ Tobias Doerffel ]
|
||||
* New upstream release. (Closes: #439301)
|
||||
* Removed patch from Thomas Girard as upstream merged changes
|
||||
|
||||
[ Patrick Winnertz ]
|
||||
* Moved manpage into correct package (lmms)
|
||||
* Removed manuall installation of Upstream Changelog, thanks to the power of
|
||||
debhelper ;-)
|
||||
* FTBFS with gcc 4.2 is fixed by upstream (Closes: #383295)
|
||||
* lmms has now a proper menu entry (Closes: #383406)
|
||||
* lmms depends now on the same version of lmms-common (Closes: #389037)
|
||||
* fixed by upstream: arpeggio status is now saved (Closes: #433262)
|
||||
* Added build-depends libqt3-i18n (Closes: #384406)
|
||||
* Added watch file for lmms (Closes: #439302)
|
||||
Thanks to Raphael Geissert
|
||||
* Improved copyright file
|
||||
* Doesn't build libsingerbot since it is experimental and doesn't work
|
||||
correct yet
|
||||
* Added several build-dependencys (libstk0-dev, libestools1.2-dev, ladspa-sdk,
|
||||
libflac-dev, libwine-dev [i386], libqt3-i18n, libasound2-dev,
|
||||
festival-dev, dpatch )
|
||||
* Take over this package from Florian Ragwitz, so set myself as maintainer
|
||||
* Add a depends on a specific version of lmms-common
|
||||
* Added several new dependencys to lmms
|
||||
* Improved description of lmms and lmms-common
|
||||
* Die on errors of clean, but don't die if the makefile doesn't exist
|
||||
* Added watch file
|
||||
|
||||
-- Patrick Winnertz <patrick.winnertz@skolelinux.org> Fri, 24 Aug 2007 08:23:34 +0200
|
||||
|
||||
lmms (0.2.1-1.1) unstable; urgency=high
|
||||
|
||||
* Non-maintainer Upload
|
||||
* Add Patch by Thomas Girard for segfault right after
|
||||
lmms starting up (Closes: 382491)
|
||||
|
||||
-- Michael Ablassmeier <abi@debian.org> Tue, 5 Sep 2006 12:00:40 +0200
|
||||
|
||||
lmms (0.2.1-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Bump up Standards-Version to 3.7.2 (no changes).
|
||||
* Use DH_COMPAT 5.
|
||||
|
||||
-- Florian Ragwitz <rafl@debian.org> Sun, 13 Aug 2006 14:40:13 +0200
|
||||
|
||||
lmms (0.1.4-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Florian Ragwitz <rafl@debian.org> Sat, 4 Feb 2006 07:16:47 +0100
|
||||
|
||||
lmms (0.1.3-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* debian/lmms.1 was included by upstream. Removed it from debian/.
|
||||
* Install lmms.1 in lmms-common instead of lmms to safe some mirror space.
|
||||
* Added a lintian override for the above, as lintian is not smart enough to
|
||||
check for manpages in other packages from the same source package on which
|
||||
a package with a missing manpage depends.
|
||||
|
||||
-- Florian Ragwitz <rafl@debian.org> Wed, 1 Feb 2006 18:28:42 +0100
|
||||
|
||||
lmms (0.1.2-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Florian Ragwitz <rafl@debian.org> Thu, 22 Dec 2005 16:22:50 +0100
|
||||
|
||||
lmms (0.1.1-2) unstable; urgency=low
|
||||
|
||||
* lmms-common doesn't depend on lmms anymore to remove a circular
|
||||
dependencies (Closes: #339906).
|
||||
|
||||
-- Florian Ragwitz <rafl@debian.org> Sun, 20 Nov 2005 12:27:08 +0100
|
||||
|
||||
lmms (0.1.1-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Changed Maintainer address.
|
||||
* Added libjack-dev to Build-Depends.
|
||||
|
||||
-- Florian Ragwitz <rafl@debian.org> Mon, 31 Oct 2005 10:48:36 +0100
|
||||
|
||||
lmms (0.0.9+0.1.0rc1-1) unstable; urgency=low
|
||||
|
||||
* Initial Release (Closes: #315976).
|
||||
|
||||
-- Florian Ragwitz <rafl@debianforum.de> Fri, 22 Jul 2005 16:33:17 +0200
|
||||
|
||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
||||
9
|
||||
107
debian/control
vendored
Normal file
107
debian/control
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
Source: lmms
|
||||
Section: sound
|
||||
Priority: optional
|
||||
Maintainer: Debian Edu Packaging Team <debian-edu-pkg-team@lists.alioth.debian.org>
|
||||
Uploaders:
|
||||
Petter Reinholdtsen <pere@debian.org>,
|
||||
Israel Dahl <israeldahl@gmail.com>,
|
||||
Javier Serrano Polo <javier@jasp.net>,
|
||||
Build-Depends:
|
||||
cmake,
|
||||
debhelper (>= 9.0.0),
|
||||
fluid,
|
||||
ladspa-sdk,
|
||||
libasound2-dev [linux-any],
|
||||
libfftw3-dev,
|
||||
libfltk1.3-dev,
|
||||
libfluidsynth-dev,
|
||||
libgig-dev,
|
||||
libjack-jackd2-dev,
|
||||
liblist-moreutils-perl,
|
||||
libmp3lame-dev,
|
||||
libpulse-dev,
|
||||
libqt5x11extras5-dev,
|
||||
libsamplerate0-dev,
|
||||
libsdl1.2-dev,
|
||||
libsndfile1-dev,
|
||||
libsndio-dev,
|
||||
libsoundio-dev,
|
||||
libstk0-dev,
|
||||
libvorbis-dev,
|
||||
libxcb-keysyms1-dev,
|
||||
libxcb-util0-dev,
|
||||
libxml-perl,
|
||||
libxml2-utils,
|
||||
portaudio19-dev,
|
||||
qtbase5-private-dev,
|
||||
qttools5-dev,
|
||||
wine64-tools [amd64] | wine32-tools [i386]
|
||||
Standards-Version: 4.2.1.4
|
||||
Homepage: http://lmms.io/
|
||||
Vcs-Browser: https://salsa.debian.org/debian-edu-pkg-team/lmms.git
|
||||
|
||||
Package: lmms-bin
|
||||
Architecture: any
|
||||
Depends: lmms-common (>= ${source:Version}), ${shlibs:Depends}, ${misc:Depends},
|
||||
stk
|
||||
Recommends: tap-plugins, caps,
|
||||
lmms-vst-server:i386 (>= ${source:Version}),
|
||||
lmms-vst-server:amd64 (>= ${source:Version})
|
||||
Suggests: fil-plugins, mcp-plugins, omins, freepats, fluid-soundfont-gm,
|
||||
ladspa-plugin
|
||||
Replaces: lmms-common (<< 1.0.0-1)
|
||||
Breaks: lmms-common (<< 1.0.0-1)
|
||||
Multi-Arch: allowed
|
||||
Description: Linux Multimedia Studio - minimal installation
|
||||
LMMS aims to be a free alternative to popular (but commercial and closed-
|
||||
source) programs like FruityLoops, Cubase and Logic giving you the ability of
|
||||
producing music with your computer by creating cool loops, synthesizing and
|
||||
mixing sounds, arranging samples, having more fun with your MIDI-keyboard
|
||||
and much more...
|
||||
.
|
||||
LMMS combines the features of a tracker-/sequencer-program (pattern-/channel-/
|
||||
sample-/song-/effect-management) and those of powerful synthesizers and
|
||||
samplers in a modern, user-friendly and easy to use graphical user-interface.
|
||||
.
|
||||
This package provides the minimal installation.
|
||||
|
||||
Package: lmms
|
||||
Architecture: any
|
||||
Depends: lmms-bin, ${misc:Depends}
|
||||
Description: Linux Multimedia Studio
|
||||
LMMS aims to be a free alternative to popular (but commercial and closed-
|
||||
source) programs like FruityLoops, Cubase and Logic giving you the ability of
|
||||
producing music with your computer by creating cool loops, synthesizing and
|
||||
mixing sounds, arranging samples, having more fun with your MIDI-keyboard
|
||||
and much more...
|
||||
.
|
||||
LMMS combines the features of a tracker-/sequencer-program (pattern-/channel-/
|
||||
sample-/song-/effect-management) and those of powerful synthesizers and
|
||||
samplers in a modern, user-friendly and easy to use graphical user-interface.
|
||||
.
|
||||
This package provides the recommended installation.
|
||||
|
||||
Package: lmms-common
|
||||
Architecture: all
|
||||
Depends: zynaddsubfx-data, ${shlibs:Depends}, ${misc:Depends}
|
||||
Pre-Depends: ${misc:Pre-Depends}
|
||||
Description: Linux Multimedia Studio - common files
|
||||
LMMS aims to be a free alternative to popular (but commercial and closed-
|
||||
source) programs like FruityLoops, Cubase and Logic giving you the ability of
|
||||
producing music with your computer by creating cool loops, synthesizing and
|
||||
mixing sounds, arranging samples, having more fun with your MIDI-keyboard
|
||||
and much more...
|
||||
.
|
||||
LMMS combines the features of a tracker-/sequencer-program (pattern-/channel-/
|
||||
sample-/song-/effect-management) and those of powerful synthesizers and
|
||||
samplers in a modern, user-friendly and easy to use graphical user-interface.
|
||||
.
|
||||
This package contains the platform independent files such as samples, presets
|
||||
and some example projects.
|
||||
|
||||
Package: lmms-vst-server
|
||||
Architecture: amd64 i386
|
||||
Depends: wine64 [amd64] | wine64-development [amd64] | wine32 [i386] | wine32-development [i386], ${shlibs:Depends}, ${misc:Depends}
|
||||
Recommends: lmms-bin:any
|
||||
Description: Linux Multimedia Studio - VST server
|
||||
This package contains a helper application that loads VST plugins.
|
||||
1373
debian/copyright
vendored
Normal file
1373
debian/copyright
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
debian/gbp.conf
vendored
Normal file
2
debian/gbp.conf
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
[DEFAULT]
|
||||
pristine-tar = True
|
||||
4
debian/lmms-bin.install
vendored
Normal file
4
debian/lmms-bin.install
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
usr/bin/lmms
|
||||
usr/lib/*/lmms/ladspa/*
|
||||
usr/lib/*/lmms/lib*
|
||||
usr/lib/*/lmms/RemoteZynAddSubFx
|
||||
9
debian/lmms-bin.lintian-overrides
vendored
Normal file
9
debian/lmms-bin.lintian-overrides
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
lmms: pkg-has-shlibs-control-file-but-no-actual-shared-libs
|
||||
lmms: postinst-has-useless-call-to-ldconfig
|
||||
lmms: postrm-has-useless-call-to-ldconfig
|
||||
|
||||
# env is used to set the environment, then lmms is called.
|
||||
lmms: desktop-command-not-in-package usr/share/applications/lmms.desktop env
|
||||
|
||||
# Icon is in lmms-common.
|
||||
lmms: menu-icon-missing usr/share/pixmaps/lmms.xpm
|
||||
1
debian/lmms-common.docs
vendored
Normal file
1
debian/lmms-common.docs
vendored
Normal file
@@ -0,0 +1 @@
|
||||
plugins/LadspaEffect/caps/caps.html
|
||||
25
debian/lmms-common.install
vendored
Normal file
25
debian/lmms-common.install
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
usr/share/applications
|
||||
usr/share/bash-completion
|
||||
usr/share/icons
|
||||
usr/share/lmms/[a-o]*
|
||||
usr/share/lmms/presets/[A-Y]*
|
||||
usr/share/lmms/projects/demos/Alf42red-*
|
||||
usr/share/lmms/projects/demos/CapDan
|
||||
usr/share/lmms/projects/demos/EsoXLB-*
|
||||
usr/share/lmms/projects/demos/Impulslogik-*
|
||||
usr/share/lmms/projects/demos/Jousboxx-*
|
||||
usr/share/lmms/projects/demos/Momo64-*
|
||||
usr/share/lmms/projects/demos/Oglsdl-*
|
||||
usr/share/lmms/projects/demos/Settel-*
|
||||
usr/share/lmms/projects/demos/Socceroos-*
|
||||
usr/share/lmms/projects/demos/TameAnderson-*
|
||||
usr/share/lmms/projects/demos/Thomasso-*
|
||||
usr/share/lmms/projects/shorties/Crunk*
|
||||
usr/share/lmms/projects/shorties/Greshz-*
|
||||
usr/share/lmms/projects/shorties/Surrender-*
|
||||
usr/share/lmms/projects/templates
|
||||
usr/share/lmms/projects/tutorials
|
||||
usr/share/lmms/[q-z]*
|
||||
usr/share/man
|
||||
usr/share/mime
|
||||
debian/lmms.xpm usr/share/pixmaps/
|
||||
1
debian/lmms-common.links
vendored
Normal file
1
debian/lmms-common.links
vendored
Normal file
@@ -0,0 +1 @@
|
||||
usr/share/zynaddsubfx/banks usr/share/lmms/presets/ZynAddSubFX
|
||||
1
debian/lmms-common.maintscript
vendored
Normal file
1
debian/lmms-common.maintscript
vendored
Normal file
@@ -0,0 +1 @@
|
||||
dir_to_symlink /usr/share/lmms/presets/ZynAddSubFX ../../zynaddsubfx/banks 1.1.3-2~
|
||||
1
debian/lmms-vst-server.install
vendored
Normal file
1
debian/lmms-vst-server.install
vendored
Normal file
@@ -0,0 +1 @@
|
||||
usr/lib/*/lmms/{32/,}RemoteVstPlugin*
|
||||
103
debian/lmms.xpm
vendored
Normal file
103
debian/lmms.xpm
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
/* XPM */
|
||||
static char * lmms_xpm[] = {
|
||||
"24 24 76 1",
|
||||
" c None",
|
||||
". c #208B4D",
|
||||
"+ c #208C4D",
|
||||
"@ c #229452",
|
||||
"# c #239654",
|
||||
"$ c #239754",
|
||||
"% c #299557",
|
||||
"& c #2A9658",
|
||||
"* c #239B56",
|
||||
"= c #249B56",
|
||||
"- c #249C57",
|
||||
"; c #249D57",
|
||||
"> c #259E58",
|
||||
", c #259F59",
|
||||
"' c #25A059",
|
||||
") c #25A15A",
|
||||
"! c #25A25A",
|
||||
"~ c #25A35A",
|
||||
"{ c #26A35B",
|
||||
"] c #26A45B",
|
||||
"^ c #26A55C",
|
||||
"/ c #26A65C",
|
||||
"( c #26A65D",
|
||||
"_ c #3E9E67",
|
||||
": c #26A75D",
|
||||
"< c #28A75E",
|
||||
"[ c #28A75F",
|
||||
"} c #27A85E",
|
||||
"| c #27A95E",
|
||||
"1 c #27AA5F",
|
||||
"2 c #27AB5F",
|
||||
"3 c #29AC60",
|
||||
"4 c #2AAC61",
|
||||
"5 c #2FAC64",
|
||||
"6 c #54A275",
|
||||
"7 c #33AE67",
|
||||
"8 c #56A477",
|
||||
"9 c #2AB365",
|
||||
"0 c #5BA67B",
|
||||
"a c #3CB36F",
|
||||
"b c #41B572",
|
||||
"c c #64B285",
|
||||
"d c #50BA7D",
|
||||
"e c #58B881",
|
||||
"f c #5CBA84",
|
||||
"g c #56BC82",
|
||||
"h c #5FBB86",
|
||||
"i c #34D07B",
|
||||
"j c #34D17A",
|
||||
"k c #34D17B",
|
||||
"l c #68C28F",
|
||||
"m c #77C899",
|
||||
"n c #7DCD9F",
|
||||
"o c #90C7A8",
|
||||
"p c #8CD2AA",
|
||||
"q c #9AD7B4",
|
||||
"r c #A9DDBF",
|
||||
"s c #B0E0C5",
|
||||
"t c #BDDDCB",
|
||||
"u c #C3DFCF",
|
||||
"v c #BFE6CF",
|
||||
"w c #CBE3D5",
|
||||
"x c #C5E6D3",
|
||||
"y c #CDE9D9",
|
||||
"z c #D1EDDD",
|
||||
"A c #D7EFE2",
|
||||
"B c #E1F0E8",
|
||||
"C c #E6F5EC",
|
||||
"D c #EAF6EF",
|
||||
"E c #F3FAF6",
|
||||
"F c #F7FBF9",
|
||||
"G c #F8FBFA",
|
||||
"H c #F6FCF9",
|
||||
"I c #FCFEFD",
|
||||
"J c #FDFEFE",
|
||||
"K c #FFFFFF",
|
||||
" ",
|
||||
" kiiiiiiiiiiiiiiiiiij ",
|
||||
" j92222222222222222229i ",
|
||||
" i22222222222222222222i ",
|
||||
" i22222222asvb22222222i ",
|
||||
" i2222223nEKKHp4222222i ",
|
||||
" i11111dzKKKKKKAg11111i ",
|
||||
" i|||5qIKKBccBKKJr7|||i ",
|
||||
" i}}lCKKFo%))&oGKKDm}}i ",
|
||||
" i::KKKt_*(::(*_tKKK::i ",
|
||||
" i//KKK@~//////~@KKK//i ",
|
||||
" i^^KKK^^^^^^^^^^KKK^^i ",
|
||||
" i]]KKK]]]]]]]]]]KKK]]i ",
|
||||
" i{{KKKf{{{{{{{{fKKK{{i ",
|
||||
" i!!KKKKyh!!!!exKKKK!!i ",
|
||||
" i))KKKKKK))))KKKKKK))i ",
|
||||
" i''KKKKKK''''KKKKKK''i ",
|
||||
" i,,KKKKKK,,,,KKKKKK,,i ",
|
||||
" i>>6uKKw0>>>>6uKKw0>>i ",
|
||||
" i;;$+88.$;;;;$+88.$;;i ",
|
||||
" i----##--------##----i ",
|
||||
" j<==================[i ",
|
||||
" jiiiiiiiiiiiiiiiiiii ",
|
||||
" "};
|
||||
46
debian/patches/build-amd64-20181013.patch
vendored
Normal file
46
debian/patches/build-amd64-20181013.patch
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
Description: Fix build as of 2018-10-13
|
||||
Fix build errors, possibly introduced with GCC 8.
|
||||
Author: Javier Serrano Polo <javier@jasp.net>
|
||||
Bug-Debian: https://bugs.debian.org/897806
|
||||
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/caps/dsp/FPTruncateMode.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/caps/dsp/FPTruncateMode.h
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/caps/dsp/FPTruncateMode.h
|
||||
@@ -40,9 +40,11 @@ class FPTruncateMode
|
||||
|
||||
FPTruncateMode()
|
||||
{
|
||||
+#ifdef __i386__
|
||||
fstcw (cw0);
|
||||
cw1 = cw0 | 0xC00;
|
||||
fldcw (cw1);
|
||||
+#endif
|
||||
}
|
||||
|
||||
~FPTruncateMode()
|
||||
Index: lmms-1.1.3/plugins/zynaddsubfx/zynaddsubfx/src/Synth/OscilGen.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/zynaddsubfx/zynaddsubfx/src/Synth/OscilGen.cpp
|
||||
+++ lmms-1.1.3/plugins/zynaddsubfx/zynaddsubfx/src/Synth/OscilGen.cpp
|
||||
@@ -33,7 +33,8 @@
|
||||
//operations on FFTfreqs
|
||||
inline void clearAll(fft_t *freqs)
|
||||
{
|
||||
- memset(freqs, 0, synth->oscilsize / 2 * sizeof(fft_t));
|
||||
+ for(int i = 0; i < synth->oscilsize / 2; ++i)
|
||||
+ freqs[i] = fft_t(0.0f, 0.0f);
|
||||
}
|
||||
|
||||
inline void clearDC(fft_t *freqs)
|
||||
@@ -928,8 +929,8 @@ void OscilGen::getspectrum(int n, float
|
||||
if(what == 0) {
|
||||
for(int i = 0; i < n; ++i)
|
||||
outoscilFFTfreqs[i] = fft_t(spc[i], spc[i]);
|
||||
- memset(outoscilFFTfreqs + n, 0,
|
||||
- (synth->oscilsize / 2 - n) * sizeof(fft_t));
|
||||
+ for(int i = n; i < synth->oscilsize / 2; ++i)
|
||||
+ outoscilFFTfreqs[i] = fft_t(0.0f, 0.0f);
|
||||
adaptiveharmonic(outoscilFFTfreqs, 0.0f);
|
||||
adaptiveharmonicpostprocess(outoscilFFTfreqs, n - 1);
|
||||
for(int i = 0; i < n; ++i)
|
||||
601
debian/patches/clang.patch
vendored
Normal file
601
debian/patches/clang.patch
vendored
Normal file
@@ -0,0 +1,601 @@
|
||||
Description: Fix build with Clang
|
||||
Several issues are present:
|
||||
- Unused private elements.
|
||||
- Wrong use of delete.
|
||||
- Unsupported compiler options.
|
||||
- Shifting negative values.
|
||||
- Possible truncations.
|
||||
- Uninitialized variables.
|
||||
- Unused code.
|
||||
- Hiding overloaded virtual functions.
|
||||
- Declarations outside namespace.
|
||||
- Mismatched class tag.
|
||||
.
|
||||
Be careful editing this patch because allegrosmfwr.cpp has CRLF terminators.
|
||||
Author: Javier Serrano Polo <javier@jasp.net>
|
||||
Bug: https://github.com/LMMS/lmms/issues/3073
|
||||
|
||||
Index: lmms-1.1.3/include/AutomatableModel.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/include/AutomatableModel.h 2017-01-03 13:01:47.000000000 +0100
|
||||
+++ lmms-1.1.3/include/AutomatableModel.h 2017-01-03 13:11:25.000000000 +0100
|
||||
@@ -307,7 +307,6 @@
|
||||
|
||||
// most objects will need this temporarily (until sampleExact is
|
||||
// standard)
|
||||
- float m_oldValue;
|
||||
int m_setValueDepth;
|
||||
|
||||
AutoModelVector m_linkedModels;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/CMakeLists.txt
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/CMakeLists.txt 2017-01-03 16:03:14.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/CMakeLists.txt 2017-01-03 16:14:28.000000000 +0100
|
||||
@@ -7,11 +7,22 @@
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
INSTALL(TARGETS calf LIBRARY DESTINATION "${PLUGIN_DIR}/ladspa")
|
||||
SET_TARGET_PROPERTIES(calf PROPERTIES PREFIX "")
|
||||
+
|
||||
SET(INLINE_FLAGS "")
|
||||
-IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
-SET(INLINE_FLAGS "-finline-functions-called-once -finline-limit=80")
|
||||
+
|
||||
+INCLUDE(CheckCXXCompilerFlag)
|
||||
+CHECK_CXX_COMPILER_FLAG(-finline-functions CXX_HAVE_INLINE_FUNCTIONS)
|
||||
+IF(${CXX_HAVE_INLINE_FUNCTIONS})
|
||||
+ SET(INLINE_FLAGS "${INLINE_FLAGS} -finline-functions")
|
||||
ENDIF()
|
||||
-SET_TARGET_PROPERTIES(calf PROPERTIES COMPILE_FLAGS "-O2 -finline-functions ${INLINE_FLAGS}")
|
||||
+CHECK_CXX_COMPILER_FLAG(-finline-functions-called-once
|
||||
+ CXX_HAVE_INLINE_FUNCTIONS_CALLED_ONCE)
|
||||
+IF(${CXX_HAVE_INLINE_FUNCTIONS_CALLED_ONCE})
|
||||
+ SET(INLINE_FLAGS "${INLINE_FLAGS} -finline-functions-called-once \
|
||||
+ -finline-limit=80")
|
||||
+ENDIF()
|
||||
+
|
||||
+SET_TARGET_PROPERTIES(calf PROPERTIES COMPILE_FLAGS "-O2 ${INLINE_FLAGS}")
|
||||
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
ADD_CUSTOM_COMMAND(TARGET calf POST_BUILD COMMAND "${STRIP}" "\"${CMAKE_CURRENT_BINARY_DIR}/calf.dll\"")
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/metadata.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/metadata.h 2017-01-03 17:41:17.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/metadata.h 2017-01-03 17:50:40.000000000 +0100
|
||||
@@ -51,7 +51,7 @@
|
||||
enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, require_midi = false, support_midi = false };
|
||||
PLUGIN_NAME_ID_LABEL("filter", "filter", "Filter")
|
||||
/// do not export mode and inertia as CVs, as those are settings and not parameters
|
||||
- bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; }
|
||||
+ bool is_cv(int param_no) const { return param_no != par_mode && param_no != par_inertia; }
|
||||
};
|
||||
|
||||
/// Filterclavier - metadata
|
||||
@@ -61,7 +61,7 @@
|
||||
enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, require_midi = true, support_midi = true };
|
||||
PLUGIN_NAME_ID_LABEL("filterclavier", "filterclavier", "Filterclavier")
|
||||
/// do not export mode and inertia as CVs, as those are settings and not parameters
|
||||
- bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; }
|
||||
+ bool is_cv(int param_no) const { return param_no != par_mode && param_no != par_inertia; }
|
||||
};
|
||||
|
||||
struct reverb_metadata: public plugin_metadata<reverb_metadata>
|
||||
@@ -499,7 +499,7 @@
|
||||
PLUGIN_NAME_ID_LABEL("organ", "organ", "Organ")
|
||||
|
||||
public:
|
||||
- plugin_command_info *get_commands();
|
||||
+ plugin_command_info *get_commands() const;
|
||||
const char *const *get_configure_vars() const;
|
||||
};
|
||||
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/modules.h 2017-01-03 19:02:59.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules.h 2017-01-03 19:30:35.000000000 +0100
|
||||
@@ -89,13 +89,14 @@
|
||||
using audio_module<Metadata>::ins;
|
||||
using audio_module<Metadata>::outs;
|
||||
using audio_module<Metadata>::params;
|
||||
+ using FilterClass::calculate_filter;
|
||||
|
||||
dsp::inertia<dsp::exponential_ramp> inertia_cutoff, inertia_resonance, inertia_gain;
|
||||
dsp::once_per_n timer;
|
||||
bool is_active;
|
||||
mutable volatile int last_generation, last_calculated_generation;
|
||||
|
||||
- filter_module_with_inertia(float **ins, float **outs, float **params)
|
||||
+ filter_module_with_inertia()
|
||||
: inertia_cutoff(dsp::exponential_ramp(128), 20)
|
||||
, inertia_resonance(dsp::exponential_ramp(128), 20)
|
||||
, inertia_gain(dsp::exponential_ramp(128), 1.0)
|
||||
@@ -193,7 +194,7 @@
|
||||
mutable float old_cutoff, old_resonance, old_mode;
|
||||
public:
|
||||
filter_audio_module()
|
||||
- : filter_module_with_inertia<dsp::biquad_filter_module, filter_metadata>(ins, outs, params)
|
||||
+ : filter_module_with_inertia<dsp::biquad_filter_module, filter_metadata>()
|
||||
{
|
||||
last_generation = 0;
|
||||
old_mode = old_resonance = old_cutoff = -1;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules_comp.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/modules_comp.h 2017-01-03 19:35:53.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules_comp.h 2017-01-03 19:38:06.000000000 +0100
|
||||
@@ -39,10 +39,10 @@
|
||||
class gain_reduction_audio_module
|
||||
{
|
||||
private:
|
||||
- float linSlope, detected, kneeSqrt, kneeStart, linKneeStart, kneeStop;
|
||||
+ float linSlope, detected, kneeStart, linKneeStart, kneeStop;
|
||||
float compressedKneeStop, adjKneeStart, thres;
|
||||
float attack, release, threshold, ratio, knee, makeup, detection, stereo_link, bypass, mute, meter_out, meter_comp;
|
||||
- mutable float old_threshold, old_ratio, old_knee, old_makeup, old_bypass, old_mute, old_detection, old_stereo_link;
|
||||
+ mutable float old_threshold, old_ratio, old_knee, old_makeup, old_bypass, old_mute, old_detection;
|
||||
mutable volatile int last_generation;
|
||||
uint32_t srate;
|
||||
bool is_active;
|
||||
@@ -69,7 +69,7 @@
|
||||
/// Main gate routine by Damien called by various audio modules
|
||||
class expander_audio_module {
|
||||
private:
|
||||
- float linSlope, peak, detected, kneeSqrt, kneeStart, linKneeStart, kneeStop, linKneeStop;
|
||||
+ float linSlope, detected, kneeStart, linKneeStart, kneeStop, linKneeStop;
|
||||
float compressedKneeStop, adjKneeStart, range, thres, attack_coeff, release_coeff;
|
||||
float attack, release, threshold, ratio, knee, makeup, detection, stereo_link, bypass, mute, meter_out, meter_gate;
|
||||
mutable float old_threshold, old_ratio, old_knee, old_makeup, old_bypass, old_range, old_trigger, old_mute, old_detection, old_stereo_link;
|
||||
@@ -142,7 +142,7 @@
|
||||
mutable float f1_freq_old, f2_freq_old, f1_level_old, f2_level_old;
|
||||
mutable float f1_freq_old1, f2_freq_old1, f1_level_old1, f2_level_old1;
|
||||
CalfScModes sc_mode;
|
||||
- mutable CalfScModes sc_mode_old, sc_mode_old1;
|
||||
+ mutable CalfScModes sc_mode_old1;
|
||||
float f1_active, f2_active;
|
||||
stereo_in_out_metering<sidechaincompressor_metadata> meters;
|
||||
gain_reduction_audio_module compressor;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules_limit.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/modules_limit.h 2017-01-03 19:39:00.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules_limit.h 2017-01-03 19:40:20.000000000 +0100
|
||||
@@ -37,7 +37,6 @@
|
||||
private:
|
||||
typedef limiter_audio_module AM;
|
||||
uint32_t clip_inL, clip_inR, clip_outL, clip_outR, asc_led;
|
||||
- int mode, mode_old;
|
||||
float meter_inL, meter_inR, meter_outL, meter_outR;
|
||||
dsp::lookahead_limiter limiter;
|
||||
public:
|
||||
@@ -73,7 +72,6 @@
|
||||
unsigned int overall_buffer_size;
|
||||
float *buffer;
|
||||
int channels;
|
||||
- float striprel[strips];
|
||||
float weight[strips];
|
||||
float weight_old[strips];
|
||||
float limit_old;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules_mod.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/modules_mod.h 2017-01-03 19:41:55.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/modules_mod.h 2017-01-03 19:42:19.000000000 +0100
|
||||
@@ -160,8 +160,6 @@
|
||||
typedef pulsator_audio_module AM;
|
||||
uint32_t clip_inL, clip_inR, clip_outL, clip_outR;
|
||||
float meter_inL, meter_inR, meter_outL, meter_outR;
|
||||
- float offset_old;
|
||||
- int mode_old;
|
||||
bool clear_reset;
|
||||
dsp::simple_lfo lfoL, lfoR;
|
||||
public:
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/organ.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/organ.h 2017-01-03 19:43:08.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/organ.h 2017-01-03 19:53:55.000000000 +0100
|
||||
@@ -318,6 +318,7 @@
|
||||
using drawbar_organ::note_on;
|
||||
using drawbar_organ::note_off;
|
||||
using drawbar_organ::control_change;
|
||||
+ using drawbar_organ::pitch_bend;
|
||||
enum { param_count = drawbar_organ::param_count};
|
||||
dsp::organ_parameters par_values;
|
||||
uint32_t srate;
|
||||
@@ -338,9 +339,9 @@
|
||||
void deactivate();
|
||||
uint32_t process(uint32_t offset, uint32_t nsamples, uint32_t inputs_mask, uint32_t outputs_mask);
|
||||
/// No CV inputs for now
|
||||
- bool is_cv(int param_no) { return false; }
|
||||
+ bool is_cv(int param_no) const { return false; }
|
||||
/// Practically all the stuff here is noisy
|
||||
- bool is_noisy(int param_no) { return true; }
|
||||
+ bool is_noisy(int param_no) const { return true; }
|
||||
void execute(int cmd_no);
|
||||
bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context) const;
|
||||
char *configure(const char *key, const char *value);
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/preset.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/preset.h 2017-01-03 19:57:02.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/preset.h 2017-01-03 20:00:25.000000000 +0100
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
namespace calf_plugins {
|
||||
|
||||
-class plugin_ctl_iface;
|
||||
+struct plugin_ctl_iface;
|
||||
|
||||
/// Contents of single preset
|
||||
struct plugin_preset
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/primitives.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/calf/primitives.h 2017-01-03 17:36:12.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/calf/primitives.h 2017-01-03 16:22:16.000000000 +0100
|
||||
@@ -370,11 +370,6 @@
|
||||
next_task = (unsigned)-1;
|
||||
eob = false;
|
||||
}
|
||||
- inline bool is_next_tick() {
|
||||
- if (time < next_task)
|
||||
- return true;
|
||||
- do_tasks();
|
||||
- }
|
||||
inline void next_tick() {
|
||||
time++;
|
||||
}
|
||||
@@ -382,14 +377,6 @@
|
||||
timeline.insert(std::pair<unsigned int, task *>(time+pos, t));
|
||||
next_task = timeline.begin()->first;
|
||||
}
|
||||
- void do_tasks() {
|
||||
- std::multimap<unsigned int, task *>::iterator i = timeline.begin();
|
||||
- while(i != timeline.end() && i->first == time) {
|
||||
- i->second->execute(this);
|
||||
- i->second->dispose();
|
||||
- timeline.erase(i);
|
||||
- }
|
||||
- }
|
||||
bool is_eob() {
|
||||
return eob;
|
||||
}
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/metadata.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/metadata.cpp 2017-01-03 17:52:03.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/metadata.cpp 2017-01-03 18:49:18.000000000 +0100
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
const char *calf_plugins::calf_copyright_info = "(C) 2001-2009 Krzysztof Foltman, Thor Harald Johanssen, Markus Schmidt and others; license: LGPL";
|
||||
|
||||
+namespace calf_plugins {
|
||||
+
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CALF_PORT_NAMES(flanger) = {"In L", "In R", "Out L", "Out R"};
|
||||
@@ -1105,7 +1107,7 @@
|
||||
|
||||
CALF_PLUGIN_INFO(organ) = { 0x8481, "Organ", "Calf Organ", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "SynthesizerPlugin" };
|
||||
|
||||
-plugin_command_info *organ_metadata::get_commands()
|
||||
+plugin_command_info *organ_metadata::get_commands() const
|
||||
{
|
||||
static plugin_command_info cmds[] = {
|
||||
{ "cmd_panic", "Panic!", "Stop all sounds and reset all controllers" },
|
||||
@@ -1439,6 +1441,8 @@
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
+}; // namespace calf_plugins
|
||||
+
|
||||
calf_plugins::plugin_registry::plugin_registry()
|
||||
{
|
||||
#define PER_MODULE_ITEM(name, isSynth, jackname) plugins.push_back((new name##_metadata));
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/calf/src/modules.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/calf/src/modules.cpp 2017-01-03 19:32:38.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/calf/src/modules.cpp 2017-01-03 19:33:13.000000000 +0100
|
||||
@@ -339,7 +339,7 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
filterclavier_audio_module::filterclavier_audio_module()
|
||||
-: filter_module_with_inertia<biquad_filter_module, filterclavier_metadata>(ins, outs, params)
|
||||
+: filter_module_with_inertia<biquad_filter_module, filterclavier_metadata>()
|
||||
, min_gain(1.0)
|
||||
, max_gain(32.0)
|
||||
, last_note(-1)
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/swh/flanger_1191.c
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/swh/flanger_1191.c 2017-01-03 15:44:13.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/swh/flanger_1191.c 2017-01-03 15:45:17.000000000 +0100
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
// Calculate position in delay table
|
||||
d_base = LIN_INTERP(frac, old_d_base, new_d_base);
|
||||
- n_ph = (float)(law_p - abs(next_law_pos - count))/(float)law_p;
|
||||
+ n_ph = (float)(law_p - labs(next_law_pos - count))/(float)law_p;
|
||||
p_ph = n_ph + 0.5f;
|
||||
while (p_ph > 1.0f) {
|
||||
p_ph -= 1.0f;
|
||||
@@ -392,7 +392,7 @@
|
||||
|
||||
// Calculate position in delay table
|
||||
d_base = LIN_INTERP(frac, old_d_base, new_d_base);
|
||||
- n_ph = (float)(law_p - abs(next_law_pos - count))/(float)law_p;
|
||||
+ n_ph = (float)(law_p - labs(next_law_pos - count))/(float)law_p;
|
||||
p_ph = n_ph + 0.5f;
|
||||
while (p_ph > 1.0f) {
|
||||
p_ph -= 1.0f;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/swh/gsm/short_term.c
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/swh/gsm/short_term.c 2017-01-03 15:35:13.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/swh/gsm/short_term.c 2017-01-03 15:35:55.000000000 +0100
|
||||
@@ -53,7 +53,7 @@
|
||||
#undef STEP
|
||||
#define STEP( B, MIC, INVA ) \
|
||||
temp1 = GSM_ADD( *LARc++, MIC ) << 10; \
|
||||
- temp1 = GSM_SUB( temp1, B << 1 ); \
|
||||
+ temp1 = GSM_SUB( temp1, B * 2 ); \
|
||||
temp1 = GSM_MULT_R( INVA, temp1 ); \
|
||||
*LARpp++ = GSM_ADD( temp1, temp1 );
|
||||
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/swh/multivoice_chorus_1201.c
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/swh/multivoice_chorus_1201.c 2017-01-03 15:47:51.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/swh/multivoice_chorus_1201.c 2017-01-03 15:48:18.000000000 +0100
|
||||
@@ -345,7 +345,7 @@
|
||||
if (count % 16 < laws) {
|
||||
unsigned int t = count % 16;
|
||||
// Calculate sinus phases
|
||||
- float n_ph = (float)(law_p - abs(next_peak_pos[t] - count))/law_p;
|
||||
+ float n_ph = (float)(law_p - labs(next_peak_pos[t] - count))/law_p;
|
||||
float p_ph = n_ph + 0.5f;
|
||||
if (p_ph > 1.0f) {
|
||||
p_ph -= 1.0f;
|
||||
@@ -488,7 +488,7 @@
|
||||
if (count % 16 < laws) {
|
||||
unsigned int t = count % 16;
|
||||
// Calculate sinus phases
|
||||
- float n_ph = (float)(law_p - abs(next_peak_pos[t] - count))/law_p;
|
||||
+ float n_ph = (float)(law_p - labs(next_peak_pos[t] - count))/law_p;
|
||||
float p_ph = n_ph + 0.5f;
|
||||
if (p_ph > 1.0f) {
|
||||
p_ph -= 1.0f;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/swh/retro_flange_1208.c
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/swh/retro_flange_1208.c 2017-01-03 15:46:35.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/swh/retro_flange_1208.c 2017-01-03 15:47:02.000000000 +0100
|
||||
@@ -321,7 +321,7 @@
|
||||
prev_law_pos = count + law_p;
|
||||
}
|
||||
|
||||
- n_ph = (float)(law_p - abs(next_law_pos - count))/(float)law_p;
|
||||
+ n_ph = (float)(law_p - labs(next_law_pos - count))/(float)law_p;
|
||||
p_ph = n_ph + 0.5f;
|
||||
if (p_ph > 1.0f) {
|
||||
p_ph -= 1.0f;
|
||||
@@ -446,7 +446,7 @@
|
||||
prev_law_pos = count + law_p;
|
||||
}
|
||||
|
||||
- n_ph = (float)(law_p - abs(next_law_pos - count))/(float)law_p;
|
||||
+ n_ph = (float)(law_p - labs(next_law_pos - count))/(float)law_p;
|
||||
p_ph = n_ph + 0.5f;
|
||||
if (p_ph > 1.0f) {
|
||||
p_ph -= 1.0f;
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/swh/vynil_1905.c
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/swh/vynil_1905.c 2017-01-03 15:51:56.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/swh/vynil_1905.c 2017-01-03 16:01:32.000000000 +0100
|
||||
@@ -243,6 +243,8 @@
|
||||
buffer_s = malloc(sizeof(LADSPA_Data) * buffer_size);
|
||||
buffer_mask = buffer_size - 1;
|
||||
buffer_pos = 0;
|
||||
+ click_buffer_omega.all = 0;
|
||||
+ click_buffer_pos.all = 0;
|
||||
click_gain = 0;
|
||||
phi = 0.0f; /* Angular phase */
|
||||
|
||||
Index: lmms-1.1.3/plugins/LadspaEffect/tap/CMakeLists.txt
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/LadspaEffect/tap/CMakeLists.txt 2017-01-03 13:52:28.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/LadspaEffect/tap/CMakeLists.txt 2017-01-03 15:12:14.000000000 +0100
|
||||
@@ -1,7 +1,15 @@
|
||||
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include")
|
||||
FILE(GLOB PLUGIN_SOURCES *.c)
|
||||
LIST(SORT PLUGIN_SOURCES)
|
||||
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wno-write-strings -fomit-frame-pointer -fno-strict-aliasing -fstrength-reduce -funroll-loops -ffast-math")
|
||||
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wno-write-strings \
|
||||
+ -fomit-frame-pointer -fno-strict-aliasing -funroll-loops -ffast-math")
|
||||
+
|
||||
+INCLUDE(CheckCCompilerFlag)
|
||||
+CHECK_C_COMPILER_FLAG(-fstrength-reduce C_HAVE_STRENGTH_REDUCE)
|
||||
+IF(${C_HAVE_STRENGTH_REDUCE})
|
||||
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstrength-reduce")
|
||||
+ENDIF()
|
||||
+
|
||||
FOREACH(_item ${PLUGIN_SOURCES})
|
||||
GET_FILENAME_COMPONENT(_plugin "${_item}" NAME_WE)
|
||||
ADD_LIBRARY("${_plugin}" MODULE "${_item}")
|
||||
Index: lmms-1.1.3/plugins/MidiImport/portsmf/allegro.h
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/MidiImport/portsmf/allegro.h 2017-01-03 20:02:37.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/MidiImport/portsmf/allegro.h 2017-01-03 20:06:48.000000000 +0100
|
||||
@@ -842,6 +842,8 @@
|
||||
Alg_event_ptr write_track_name(std::ostream &file, int n,
|
||||
Alg_events &events);
|
||||
public:
|
||||
+ using Alg_track::paste;
|
||||
+
|
||||
int channel_offset_per_track; // used to encode track_num into channel
|
||||
Alg_tracks track_list; // array of Alg_events
|
||||
Alg_time_sigs time_sig;
|
||||
Index: lmms-1.1.3/plugins/MidiImport/portsmf/allegrosmfwr.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/MidiImport/portsmf/allegrosmfwr.cpp 2017-01-03 20:07:50.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/MidiImport/portsmf/allegrosmfwr.cpp 2017-01-03 20:08:34.000000000 +0100
|
||||
@@ -57,13 +57,11 @@
|
||||
|
||||
Alg_seq_ptr seq;
|
||||
|
||||
- int num_tracks; // number of tracks not counting tempo track
|
||||
int division; // divisions per quarter note, default = 120
|
||||
int initial_tempo;
|
||||
|
||||
int timesig_num; // numerator of time signature
|
||||
int timesig_den; // denominator of time signature
|
||||
- double timesig_when; // time of time signature
|
||||
|
||||
int keysig; // number of sharps (+) or flats (-), -99 for undefined
|
||||
char keysig_mode; // 'M' or 'm' for major/minor
|
||||
Index: lmms-1.1.3/plugins/delay/stereodelay.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/delay/stereodelay.cpp 2017-01-03 13:40:27.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/delay/stereodelay.cpp 2017-01-03 13:42:16.000000000 +0100
|
||||
@@ -48,7 +48,7 @@
|
||||
{
|
||||
if( m_buffer )
|
||||
{
|
||||
- delete m_buffer;
|
||||
+ delete[] m_buffer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
{
|
||||
if( m_buffer )
|
||||
{
|
||||
- delete m_buffer;
|
||||
+ delete[] m_buffer;
|
||||
}
|
||||
|
||||
int bufferSize = ( int )( sampleRate * m_maxTime );
|
||||
Index: lmms-1.1.3/plugins/opl2/fmopl.c
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/plugins/opl2/fmopl.c 2017-01-03 20:11:03.000000000 +0100
|
||||
+++ lmms-1.1.3/plugins/opl2/fmopl.c 2017-01-03 20:22:23.000000000 +0100
|
||||
@@ -70,7 +70,7 @@
|
||||
/* final output shift , limit minimum and maximum */
|
||||
#define OPL_OUTSB (TL_BITS+3-16) /* OPL output final shift 16bit */
|
||||
#define OPL_MAXOUT (0x7fff<<OPL_OUTSB)
|
||||
-#define OPL_MINOUT (-0x8000<<OPL_OUTSB)
|
||||
+#define OPL_MINOUT (~((0x8000<<OPL_OUTSB)-1))
|
||||
|
||||
/* -------------------- quality selection --------------------- */
|
||||
|
||||
Index: lmms-1.1.3/src/core/track.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/src/core/track.cpp 2017-01-03 13:16:46.000000000 +0100
|
||||
+++ lmms-1.1.3/src/core/track.cpp 2017-01-03 13:18:33.000000000 +0100
|
||||
@@ -75,11 +75,6 @@
|
||||
*/
|
||||
const int RESIZE_GRIP_WIDTH = 4;
|
||||
|
||||
-/*! The size of the track buttons in pixels
|
||||
- */
|
||||
-const int TRACK_OP_BTN_WIDTH = 20;
|
||||
-const int TRACK_OP_BTN_HEIGHT = 14;
|
||||
-
|
||||
|
||||
/*! A pointer for that text bubble used when moving segments, etc.
|
||||
*
|
||||
Index: lmms-1.1.3/src/gui/LfoControllerDialog.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/src/gui/LfoControllerDialog.cpp 2017-01-03 13:24:43.000000000 +0100
|
||||
+++ lmms-1.1.3/src/gui/LfoControllerDialog.cpp 2017-01-03 13:25:24.000000000 +0100
|
||||
@@ -50,7 +50,6 @@
|
||||
const int CD_LFO_SHAPES_X = 6;
|
||||
const int CD_LFO_SHAPES_Y = 36;
|
||||
|
||||
-const int CD_LFO_GRAPH_X = 6;
|
||||
const int CD_LFO_GRAPH_Y = CD_ENV_KNOBS_LBL_Y+15;
|
||||
const int CD_LFO_CD_KNOB_Y = CD_LFO_GRAPH_Y-2;
|
||||
const int CD_LFO_BASE_CD_KNOB_X = CD_LFO_SHAPES_X + 64;
|
||||
Index: lmms-1.1.3/src/gui/LmmsStyle.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/src/gui/LmmsStyle.cpp 2017-01-03 13:27:38.000000000 +0100
|
||||
+++ lmms-1.1.3/src/gui/LmmsStyle.cpp 2017-01-03 13:29:35.000000000 +0100
|
||||
@@ -34,78 +34,6 @@
|
||||
#include "LmmsStyle.h"
|
||||
#include "LmmsPalette.h"
|
||||
|
||||
-const int BUTTON_LENGTH = 24;
|
||||
-
|
||||
-static const char * const s_scrollbarArrowUpXpm[] = {
|
||||
- "7 6 8 1",
|
||||
- " g None",
|
||||
- ". g #000000",
|
||||
- "+ g #101010",
|
||||
- "@ g #A0A0A0",
|
||||
- "# g #C0C0C0",
|
||||
- "$ g #FFFFFF",
|
||||
- "% g #808080",
|
||||
- "& g #202020",
|
||||
- "..+@+..",
|
||||
- "..#$#..",
|
||||
- ".%$$$%.",
|
||||
- "&$$$$$&",
|
||||
- "@$$$$$@",
|
||||
- "@#####@"};
|
||||
-
|
||||
-static const char * const s_scrollbarArrowRightXpm[] = {
|
||||
- "6 7 8 1",
|
||||
- " c None",
|
||||
- ". c #A0A0A0",
|
||||
- "+ c #202020",
|
||||
- "@ c #000000",
|
||||
- "# c #C0C0C0",
|
||||
- "$ c #FFFFFF",
|
||||
- "% c #808080",
|
||||
- "& c #101010",
|
||||
- "..+@@@",
|
||||
- "#$$%@@",
|
||||
- "#$$$#&",
|
||||
- "#$$$$.",
|
||||
- "#$$$#&",
|
||||
- "#$$%@@",
|
||||
- "..+@@@"};
|
||||
-
|
||||
-static const char * const s_scrollbarArrowDownXpm[] = {
|
||||
- "7 6 8 1",
|
||||
- " g None",
|
||||
- ". g #000000",
|
||||
- "+ g #101010",
|
||||
- "@ g #A0A0A0",
|
||||
- "# g #C0C0C0",
|
||||
- "$ g #FFFFFF",
|
||||
- "% g #808080",
|
||||
- "& g #202020",
|
||||
- "@#####@",
|
||||
- "@$$$$$@",
|
||||
- "&$$$$$&",
|
||||
- ".%$$$%.",
|
||||
- "..#$#..",
|
||||
- "..+@+.."};
|
||||
-
|
||||
-static const char * const s_scrollbarArrowLeftXpm[] = {
|
||||
- "6 7 8 1",
|
||||
- " g None",
|
||||
- ". g #000000",
|
||||
- "+ g #202020",
|
||||
- "@ g #A0A0A0",
|
||||
- "# g #808080",
|
||||
- "$ g #FFFFFF",
|
||||
- "% g #C0C0C0",
|
||||
- "& g #101010",
|
||||
- "...+@@",
|
||||
- "..#$$%",
|
||||
- "&%$$$%",
|
||||
- "@$$$$%",
|
||||
- "&%$$$%",
|
||||
- "..#$$%",
|
||||
- "...+@@"};
|
||||
-
|
||||
QPalette * LmmsStyle::s_palette = NULL;
|
||||
|
||||
QLinearGradient getGradient( const QColor & _col, const QRectF & _rect )
|
||||
Index: lmms-1.1.3/src/gui/PianoRoll.cpp
|
||||
===================================================================
|
||||
--- lmms-1.1.3.orig/src/gui/PianoRoll.cpp 2017-01-03 13:30:47.000000000 +0100
|
||||
+++ lmms-1.1.3/src/gui/PianoRoll.cpp 2017-01-03 13:34:14.000000000 +0100
|
||||
@@ -88,7 +88,6 @@
|
||||
const int PIANO_X = 0;
|
||||
|
||||
const int WHITE_KEY_WIDTH = 64;
|
||||
-const int BLACK_KEY_WIDTH = 41;
|
||||
const int WHITE_KEY_SMALL_HEIGHT = 18;
|
||||
const int WHITE_KEY_BIG_HEIGHT = 24;
|
||||
const int BLACK_KEY_HEIGHT = 16;
|
||||
89
debian/patches/contributors.patch
vendored
Normal file
89
debian/patches/contributors.patch
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
Description: Add contributors
|
||||
The list of contributors is missing from the source tarball. This list is
|
||||
generated from upstream repository, running:
|
||||
git shortlog -sne v1.1.3 | cut -c8-
|
||||
See https://github.com/LMMS/lmms/issues/2914 for more information.
|
||||
Author: Javier Serrano Polo <javier@jasp.net>
|
||||
|
||||
Index: lmms-1.1.3/doc/CONTRIBUTORS
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ lmms-1.1.3/doc/CONTRIBUTORS 2016-07-12 00:41:47.000000000 +0200
|
||||
@@ -0,0 +1,77 @@
|
||||
+Tobias Doerffel <tobias.doerffel@gmail.com>
|
||||
+Vesa <contact.diizy@nbl.fi>
|
||||
+Javier Serrano Polo <jasp00@terra.es>
|
||||
+Paul Giblock <drfaygo@gmail.com>
|
||||
+Tres Finocchiaro <tres.finocchiaro@gmail.com>
|
||||
+Lukas W <lukaswhl@gmail.com>
|
||||
+Raine M. Ekman <raine@iki.fi>
|
||||
+Wong Cho Ching <chwong249664@yahoo.com>
|
||||
+Hannu Haahti <grejppi@gmail.com>
|
||||
+Danny McRae <khjklujn@yahoo.com>
|
||||
+Dave French <dave.french3@googlemail.com>
|
||||
+Daniel Winzen <d@winzen4.de>
|
||||
+Andreas Brandmaier <andy@brandmaier.de>
|
||||
+Andrew Kelley <superjoe30@gmail.com>
|
||||
+Oskar Wallgren <oskar.wallgren13@gmail.com>
|
||||
+Mike Choi <rdavidian71@gmail.com>
|
||||
+Alexandre Almeida <wilsalx@gmail.com>
|
||||
+NoiseByNorthwest <noisebynorthwest@gmail.com>
|
||||
+Johannes Lorenz <johannes89@mailueberfall.de>
|
||||
+Stian Jørgensrud <stianahj@gmail.com>
|
||||
+falkTX <falktx@gmail.com>
|
||||
+Csaba Hruska <csaba.hruska@gmail.com>
|
||||
+StakeoutPunch <ehr@ravemail.com>
|
||||
+ma2moto <you.are.being.lied.to.kns@gmail.com>
|
||||
+mikobuntu <chrissy.mc.1@hotmail.co.uk>
|
||||
+8tab <8tab@wp.pl>
|
||||
+Matthew Krafczyk <krafczyk.matthew@gmail.com>
|
||||
+Spekular <spekularr@gmail.com>
|
||||
+Umcaruje <uros.maravic@gmail.com>
|
||||
+DeRobyJ <derobyj@gmail.com>
|
||||
+Jonathan Aquilina <eagles051387@gmail.com>
|
||||
+ra <symbiants@gmail.com>
|
||||
+wongcc966422 <wongcc966422@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>
|
||||
+Paul Wayper <paulway@mabula.net>
|
||||
+Rüdiger Ranft <rudi@qzzq.de>
|
||||
+Yann Collette <ycollette.nospam@free.fr>
|
||||
+grindhold <grindhold@gmx.net>
|
||||
+midi-pascal <midi-pascal@videotron.ca>
|
||||
+unfa <unfa00@gmail.com>
|
||||
+Ian Sannar <ian.sannar@gmail.com>
|
||||
+Jaroslav Petrnoušek <baegus@gmail.com>
|
||||
+LYF610400210 <lyfjxymf@sina.com>
|
||||
+Rafael Ruggiero <rafael46w@gmail.com>
|
||||
+psyomn <lethaljellybean@gmail.com>
|
||||
+quadro <quadro2@email.cz>
|
||||
+sarahkeefe <sarahjanekeefe@gmail.com>
|
||||
+Achim Settelmeier <lmms@m1.sirlab.de>
|
||||
+André Hentschel <nerv@dawncrow.de>
|
||||
+Armin Kazmi <armin.kazmi@tu-dortmund.de>
|
||||
+Attila Herman <attila589@gmail.com>
|
||||
+Christopher A. Oliver <oliver@onion.private>
|
||||
+Devin Venable <venable.devin@gmail.com>
|
||||
+Fastigium <fastigiummusic@gmail.com>
|
||||
+Frank Mather <tinycat2001@gmail.com>
|
||||
+Frederik <freggy@gmail.com>
|
||||
+Hexasoft <yperret@in2p3.fr>
|
||||
+Jens Lang <jenslang@users.sf.net>
|
||||
+Jesse Dubay <jesse@thefortytwo.net>
|
||||
+Joel Muzzerall <joel.muzzerall@gmail.com>
|
||||
+Kristi <kristi.dev@gmail.com>
|
||||
+Markus Elfring <elfring@users.sourceforge.net>
|
||||
+Nikos Chantziaras <realnc@arcor.de>
|
||||
+Paul Nasca <zynaddsubfx_AT_yahoo com>
|
||||
+Peter Nelson <peter1138@users.sourceforge.net>
|
||||
+Ra <symbiants@gmail.com>
|
||||
+Steffen Baranowsky <BaraMGB@freenet.de>
|
||||
+Thorsten Müller <thorsten.muller.ger@googlemail.com>
|
||||
+TonyChyi <tonychee1989@gmail.com>
|
||||
+devin <devin@devin-studio.(none)>
|
||||
+dnl-music <baza-nsk@ya.ru>
|
||||
+fundamental <mark.d.mccurry@gmail.com>
|
||||
+groboclown <matt@groboclown.net>
|
||||
+zm1990s <zm1990s@gmail.com>
|
||||
3
debian/patches/series
vendored
Normal file
3
debian/patches/series
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
contributors.patch
|
||||
clang.patch
|
||||
build-amd64-20181013.patch
|
||||
41
debian/rules
vendored
Executable file
41
debian/rules
vendored
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
#Rodney Dawes Version simplifies things :)
|
||||
|
||||
DH_CMAKE_BUILD_DIR=obj -${DEB_BUILD_GNU_TYPE}
|
||||
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
|
||||
DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
|
||||
DEB_HOST_ARCH_BIT ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
|
||||
|
||||
CMAKE_OPTS= -DCONTRIBUTORS=$(CURDIR)/doc/CONTRIBUTORS -DFORCE_VERSION=internal \
|
||||
-DWANT_QT5=1
|
||||
ifneq ($(DEB_HOST_ARCH_OS),linux)
|
||||
CMAKE_OPTS+= -DWANT_ALSA=0
|
||||
endif
|
||||
|
||||
ifeq ($(DEB_HOST_ARCH),amd64)
|
||||
export PATH := $(PATH):/usr/lib/wine
|
||||
WINE_PATH := /usr/lib/$(DEB_HOST_MULTIARCH)/wine
|
||||
CMAKE_OPTS+= -DWANT_VST_32=OFF -DREMOTE_VST_PLUGIN_FILEPATH_32=../../i386-linux-gnu/lmms/32/RemoteVstPlugin32 \
|
||||
-DWINE_CXX_FLAGS=-Wl,--enable-new-dtags,-rpath=$(WINE_PATH)
|
||||
else ifeq ($(DEB_HOST_ARCH),i386)
|
||||
export PATH := $(PATH):/usr/lib/wine
|
||||
WINE_PATH := /usr/lib/$(DEB_HOST_MULTIARCH)/wine
|
||||
CMAKE_OPTS+= -DWANT_VST_64=OFF -DREMOTE_VST_PLUGIN_FILEPATH_64=../../x86_64-linux-gnu/lmms/RemoteVstPlugin64 \
|
||||
-DWINE_CXX_FLAGS=-Wl,--enable-new-dtags,-rpath=$(WINE_PATH)
|
||||
else
|
||||
CMAKE_OPTS+= -DWANT_VST=OFF
|
||||
endif
|
||||
|
||||
# Define NDEBUG. This helps with reproducible builds.
|
||||
# Add -Wno-error=format-truncation because truncation is expected in snprintf.
|
||||
export CFLAGS ?= $(shell dpkg-buildflags --get CFLAGS) -DNDEBUG
|
||||
export CXXFLAGS ?= $(shell dpkg-buildflags --get CXXFLAGS) -DNDEBUG \
|
||||
-Wno-error=format-truncation
|
||||
|
||||
%:
|
||||
dh $@ --buildsystem cmake --parallel
|
||||
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- -DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) $(CMAKE_OPTS)
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (native)
|
||||
3
debian/watch
vendored
Normal file
3
debian/watch
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version=3
|
||||
opts="filenamemangle=s/(?:.*\/)?v?(\d[\d\.]*)\.tar\.gz/lmms_$1.tar.gz/" \
|
||||
https://github.com/LMMS/lmms/tags (?:.*/)?v?(\d[\d\.]*)\.tar\.gz
|
||||
@@ -67,7 +67,7 @@ Tobiasz Karoń (unfa)
|
||||
UI Developer
|
||||
|
||||
Johannes Lorenz
|
||||
<johannes89/at/mailueberfall/dot/de>
|
||||
<j/dot/git/at/lorenz/minus/ho/dot/me>
|
||||
Developer
|
||||
|
||||
Rubén Ibarra Pastor
|
||||
|
||||
185
doc/CONTRIBUTORS
Normal file
185
doc/CONTRIBUTORS
Normal file
@@ -0,0 +1,185 @@
|
||||
Tobias Junghans <tobias.doerffel@gmail.com>
|
||||
Vesa <contact.diizy@nbl.fi>
|
||||
Tres Finocchiaro <tres.finocchiaro@gmail.com>
|
||||
Lukas W <lukaswhl@gmail.com>
|
||||
Javier Serrano Polo <jasp00@terra.es>
|
||||
Paul Giblock <drfaygo@gmail.com>
|
||||
Dave French <dave.french3@googlemail.com>
|
||||
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>
|
||||
Javier Serrano Polo <javier--IfwAyVwL9S8xJKrdU2QtlAdbjyPl9T@jasp.net>
|
||||
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>
|
||||
Garrett <g@floft.net>
|
||||
Hyunin Song <tteu.ingog@gmail.com>
|
||||
liushuyu <liushuyu011@gmail.com>
|
||||
Andrew Kelley <superjoe30@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>
|
||||
DomClark <mrdomclark@gmail.com>
|
||||
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>
|
||||
Stian Jørgensrud <stianahj@gmail.com>
|
||||
Ryan Roden-Corrent <ryan@rcorre.net>
|
||||
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>
|
||||
StakeoutPunch <ehr@ravemail.com>
|
||||
ma2moto <you.are.being.lied.to.kns@gmail.com>
|
||||
mikobuntu <chrissy.mc.1@hotmail.co.uk>
|
||||
8tab <8tab@wp.pl>
|
||||
Andrés <andresbb@gmail.com>
|
||||
Matthew Krafczyk <krafczyk.matthew@gmail.com>
|
||||
mohamed <mohamed@amaksoud.com>
|
||||
Alexandre <wilson@wil-pc>
|
||||
RebeccaDeField <rebeccadefield@gmail.com>
|
||||
Yann Collette <ycollette.nospam@free.fr>
|
||||
Aya Morisawa <AyaMorisawa4869@gmail.com>
|
||||
Ben Bryan <ben@irq5.net>
|
||||
Jonathan Aquilina <eagles051387@gmail.com>
|
||||
Mohammad Amin Sameti <mamins1376@gmail.com>
|
||||
ra <symbiants@gmail.com>
|
||||
wongcc966422 <wongcc966422@users.noreply.github.com>
|
||||
David CARLIER <devnexen@gmail.com>
|
||||
Gurjot Singh <bhattigurjot@gmail.com>
|
||||
Janne Sinisalo <janne.m.sinisalo@gmail.com>
|
||||
Krzysztof Foltman <wdev@foltman.com>
|
||||
Lou Herard <lherard@gmail.com>
|
||||
Paul Batchelor <thisispaulbatchelor@gmail.com>
|
||||
Paul Wayper <paulway@mabula.net>
|
||||
Petter Reinholdtsen <pere@hungry.com>
|
||||
TonyChyi <tonychee1989@gmail.com>
|
||||
dnl-music <baza-nsk@ya.ru>
|
||||
follower <github@rancidbacon.com>
|
||||
midi-pascal <midi-pascal@users.noreply.github.com>
|
||||
unfa <unfa00@gmail.com>
|
||||
Andres <andresbb@gmail.com>
|
||||
Arnout Engelen <arnouten@bzzt.net>
|
||||
Chris Aiken <chris.aiken@outlook.com>
|
||||
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>
|
||||
LYF610400210 <lyfjxymf@sina.com>
|
||||
Lukas W <lukas@Lukass-iMac.fritz.box>
|
||||
Mark-Agent003 <wgreeves01@gmail.com>
|
||||
NeiroNext <mihail.rozshko@gmail.com>
|
||||
Orbital Ink <31394502+Anonymouqs@users.noreply.github.com>
|
||||
P THE AWESOME <DaAwesomeP@users.noreply.github.com>
|
||||
Ra <oeai@ya.ru>
|
||||
Rafael Ruggiero <rafael46w@gmail.com>
|
||||
Rebecca LaVie <rebeccadefield@gmail.com>
|
||||
Roberto Giaconia <DeRobyJ@users.noreply.github.com>
|
||||
SecondFlight <qbgeekjtw@gmail.com>
|
||||
Steffen Baranowsky <baramgb@freenet.de>
|
||||
TheTravelingSpaceman <smuts.walter@gmail.com>
|
||||
Thomas Clark <the.thomas.j.clark@gmail.com>
|
||||
gnudles <gnudles@users.noreply.github.com>
|
||||
liushuyu <liushuyu_011@163.com>
|
||||
miketurn <miketurn1234@yahoo.com>
|
||||
psyomn <lethaljellybean@gmail.com>
|
||||
quadro <quadro2@email.cz>
|
||||
sarahkeefe <sarahjanekeefe@gmail.com>
|
||||
Achim Settelmeier <lmms@m1.sirlab.de>
|
||||
André Hentschel <nerv@dawncrow.de>
|
||||
Armin Kazmi <armin.kazmi@tu-dortmund.de>
|
||||
Attila Herman <attila589@gmail.com>
|
||||
Bastian Kummer <bastian.kummer@securepoint.de>
|
||||
Christopher A. Oliver <oliver@onion.private>
|
||||
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>
|
||||
Greg Simpson <geedubess@users.noreply.github.com>
|
||||
Hexasoft <yperret@in2p3.fr>
|
||||
IvanMaldonado <ivan.gm94@gmail.com>
|
||||
Ivo Wetzel <ivo.wetzel@googlemail.com>
|
||||
Jens Lang <jenslang@users.sf.net>
|
||||
Jesse Dubay <jesse@thefortytwo.net>
|
||||
Joel Muzzerall <joel.muzzerall@gmail.com>
|
||||
Joshua Wade <SecondFlight@users.noreply.github.com>
|
||||
Jousboxx <jousboxx@gmail.com>
|
||||
Jérôme Duval <jerome.duval@gmail.com>
|
||||
Karmo Rosental <karmo@coolbet.com>
|
||||
Kristi <kristi.dev@gmail.com>
|
||||
Lee Avital <leeavital@gmail.com>
|
||||
LocoMatt <samozelko123@gmail.com>
|
||||
Léo Andrès <leo@ndrs.fr>
|
||||
Markus Elfring <elfring@users.sourceforge.net>
|
||||
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>
|
||||
Ryan Schmidt <github@ryandesign.com>
|
||||
Shane Ambler <GitHub@ShaneWare.Biz>
|
||||
Simon Jackson (Netbook) <jackokring@gmail.com>
|
||||
Simon van der Veldt <simon.vanderveldt@gmail.com>
|
||||
Stephen Seo <seo.disparate@gmail.com>
|
||||
Steve Leonard <xsleonard@gmail.com>
|
||||
The Gitter Badger <badger@gitter.im>
|
||||
Thorsten Müller <thorsten.muller.ger@googlemail.com>
|
||||
Tobias Junghans <tobydox@veyon.io>
|
||||
Tobias Kortkamp <t6@users.noreply.github.com>
|
||||
Tyler Ganter <tylergan29@gmail.com>
|
||||
Uroš Šišović <sisovic.uros@gmail.com>
|
||||
Wiley Yu <wileyyugioh@users.noreply.github.com>
|
||||
anonymous <support@lmms.io>
|
||||
devin <devin@devin-studio.(none)>
|
||||
fholmer <fholmer@gmail.com>
|
||||
flynn16 <flynn16@users.noreply.github.com>
|
||||
follower <follower@rancidbacon.com>
|
||||
fundamental <mark.d.mccurry@gmail.com>
|
||||
gandalf3 <gandalf3@users.noreply.github.com>
|
||||
groboclown <matt@groboclown.net>
|
||||
irrenhaus3 <irrenhaus3@users.noreply.github.com>
|
||||
jasp00 <javier--IfwAyVwL9S8xJKrdU2QtlAdbjyPl9T@jasp.net>
|
||||
justnope <dont@email.invalid>
|
||||
kamnxt <kamnxt@kamnxt.com>
|
||||
lmmsservice <lmms.service@gmail.com>
|
||||
m-xbutterfly <m-xbutterfly@tutanota.com>
|
||||
noahb01 <noahb2713@gmail.com>
|
||||
projectpitchin <githobbyacct@gmail.com>
|
||||
rgwan <kmlinuxm@gmail.com>
|
||||
xhe <xhebox@users.noreply.github.com>
|
||||
xy124 <qcd@gmx.net>
|
||||
z-up <potapovsanya@gmail.com>
|
||||
zm1990s <zm1990s@gmail.com>
|
||||
@@ -34,6 +34,7 @@ class AudioPortAudioSetupUtil : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public slots:
|
||||
void updateBackends();
|
||||
void updateDevices();
|
||||
void updateChannels();
|
||||
|
||||
@@ -87,6 +88,7 @@ public:
|
||||
virtual ~setupWidget();
|
||||
|
||||
virtual void saveSettings();
|
||||
virtual void show();
|
||||
|
||||
private:
|
||||
ComboBox * m_backend;
|
||||
|
||||
53
include/FxLineLcdSpinBox.h
Normal file
53
include/FxLineLcdSpinBox.h
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* FxLineLcdSpinBox.h - a specialization of LcdSpnBox for setting FX channels
|
||||
*
|
||||
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of LMMS - https://lmms.io
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef FX_LINE_LCD_SPIN_BOX_H
|
||||
#define FX_LINE_LCD_SPIN_BOX_H
|
||||
|
||||
#include "LcdSpinBox.h"
|
||||
|
||||
class TrackView;
|
||||
|
||||
|
||||
class FxLineLcdSpinBox : public LcdSpinBox
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FxLineLcdSpinBox(int numDigits, QWidget * parent, const QString& name, TrackView * tv = NULL) :
|
||||
LcdSpinBox(numDigits, parent, name), m_tv(tv)
|
||||
{}
|
||||
virtual ~FxLineLcdSpinBox() {}
|
||||
|
||||
void setTrackView(TrackView * tv);
|
||||
|
||||
protected:
|
||||
virtual void mouseDoubleClickEvent(QMouseEvent* event);
|
||||
virtual void contextMenuEvent(QContextMenuEvent* event);
|
||||
|
||||
private:
|
||||
TrackView * m_tv;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -169,6 +169,7 @@ public slots:
|
||||
void invert();
|
||||
void shiftPhase( int _deg );
|
||||
void clear();
|
||||
void clearInvisible();
|
||||
|
||||
signals:
|
||||
void lengthChanged();
|
||||
|
||||
@@ -42,14 +42,7 @@ public:
|
||||
|
||||
virtual void play( sampleFrame * _working_buffer )
|
||||
{
|
||||
// if the instrument is midi-based, we can safely render right away
|
||||
if( m_instrument->flags() & Instrument::IsMidiBased )
|
||||
{
|
||||
m_instrument->play( _working_buffer );
|
||||
return;
|
||||
}
|
||||
|
||||
// if not, we need to ensure that all our nph's have been processed first
|
||||
// ensure that all our nph's have been processed first
|
||||
ConstNotePlayHandleList nphv = NotePlayHandle::nphsOfInstrumentTrack( m_instrument->instrumentTrack(), true );
|
||||
|
||||
bool nphsLeft;
|
||||
|
||||
@@ -52,6 +52,7 @@ class InstrumentTrackWindow;
|
||||
class InstrumentMidiIOView;
|
||||
class InstrumentMiscView;
|
||||
class Knob;
|
||||
class FxLineLcdSpinBox;
|
||||
class LcdSpinBox;
|
||||
class LeftRightNav;
|
||||
class midiPortMenu;
|
||||
@@ -440,7 +441,7 @@ private:
|
||||
QLabel * m_pitchLabel;
|
||||
LcdSpinBox* m_pitchRangeSpinBox;
|
||||
QLabel * m_pitchRangeLabel;
|
||||
LcdSpinBox * m_effectChannelNumber;
|
||||
FxLineLcdSpinBox * m_effectChannelNumber;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,10 @@ namespace MixHelpers
|
||||
|
||||
bool isSilent( const sampleFrame* src, int frames );
|
||||
|
||||
bool useNaNHandler();
|
||||
|
||||
void setNaNHandler( bool use );
|
||||
|
||||
bool sanitize( sampleFrame * src, int frames );
|
||||
|
||||
/*! \brief Add samples from src to dst */
|
||||
|
||||
@@ -41,6 +41,10 @@ public:
|
||||
m_displayName( _display_name ),
|
||||
m_defaultConstructed( _default_constructed )
|
||||
{
|
||||
#if QT_VERSION < 0x050000
|
||||
connect( this, SIGNAL( dataChanged() ), this,
|
||||
SLOT( thisDataChanged() ), Qt::DirectConnection );
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual ~Model()
|
||||
@@ -85,6 +89,19 @@ signals:
|
||||
// emitted if properties of the model (e.g. ranges) have changed
|
||||
void propertiesChanged();
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
// emitted along with dataChanged(), but with this model as an argument
|
||||
// workaround for when QObject::sender() and Qt5 are unavailable
|
||||
void dataChanged( Model * );
|
||||
|
||||
private slots:
|
||||
void thisDataChanged()
|
||||
{
|
||||
emit dataChanged( this );
|
||||
}
|
||||
|
||||
signals:
|
||||
#endif
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ public:
|
||||
}
|
||||
|
||||
static jo_id_t idToSave( jo_id_t id );
|
||||
static jo_id_t idFromSave( jo_id_t id );
|
||||
|
||||
void clearJournal();
|
||||
void stopAllJournalling();
|
||||
|
||||
@@ -754,9 +754,15 @@ public:
|
||||
ProcessWatcher( RemotePlugin * );
|
||||
virtual ~ProcessWatcher() = default;
|
||||
|
||||
void quit()
|
||||
void stop()
|
||||
{
|
||||
m_quit = true;
|
||||
quit();
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
m_quit = false;
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -862,6 +868,9 @@ private:
|
||||
QProcess m_process;
|
||||
ProcessWatcher m_watcher;
|
||||
|
||||
QString m_exec;
|
||||
QStringList m_args;
|
||||
|
||||
QMutex m_commMutex;
|
||||
bool m_splitChannels;
|
||||
#ifdef USE_QT_SHMEM
|
||||
|
||||
@@ -26,13 +26,19 @@
|
||||
#define SAMPLE_TRACK_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QLayout>
|
||||
|
||||
#include "AudioPort.h"
|
||||
#include "FxMixer.h"
|
||||
#include "FxLineLcdSpinBox.h"
|
||||
#include "Track.h"
|
||||
|
||||
class EffectRackView;
|
||||
class Knob;
|
||||
class SampleBuffer;
|
||||
class SampleTrackWindow;
|
||||
class TrackLabelButton;
|
||||
class QLineEdit;
|
||||
|
||||
|
||||
class SampleTCO : public TrackContentObject
|
||||
@@ -140,6 +146,11 @@ public:
|
||||
QDomElement & _parent );
|
||||
virtual void loadTrackSpecificSettings( const QDomElement & _this );
|
||||
|
||||
inline IntModel * effectChannelModel()
|
||||
{
|
||||
return &m_effectChannelModel;
|
||||
}
|
||||
|
||||
inline AudioPort * audioPort()
|
||||
{
|
||||
return &m_audioPort;
|
||||
@@ -153,15 +164,18 @@ public:
|
||||
public slots:
|
||||
void updateTcos();
|
||||
void setPlayingTcos( bool isPlaying );
|
||||
void updateEffectChannel();
|
||||
|
||||
private:
|
||||
FloatModel m_volumeModel;
|
||||
FloatModel m_panningModel;
|
||||
IntModel m_effectChannelModel;
|
||||
AudioPort m_audioPort;
|
||||
|
||||
|
||||
|
||||
friend class SampleTrackView;
|
||||
friend class SampleTrackWindow;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -174,6 +188,24 @@ public:
|
||||
SampleTrackView( SampleTrack* Track, TrackContainerView* tcv );
|
||||
virtual ~SampleTrackView();
|
||||
|
||||
SampleTrackWindow * getSampleTrackWindow()
|
||||
{
|
||||
return m_window;
|
||||
}
|
||||
|
||||
SampleTrack * model()
|
||||
{
|
||||
return castModel<SampleTrack>();
|
||||
}
|
||||
|
||||
const SampleTrack * model() const
|
||||
{
|
||||
return castModel<SampleTrack>();
|
||||
}
|
||||
|
||||
|
||||
virtual QMenu * createFxMenu( QString title, QString newFxLabel );
|
||||
|
||||
|
||||
public slots:
|
||||
void showEffects();
|
||||
@@ -187,12 +219,77 @@ protected:
|
||||
}
|
||||
|
||||
|
||||
private slots:
|
||||
void assignFxLine( int channelIndex );
|
||||
void createFxLine();
|
||||
|
||||
|
||||
private:
|
||||
EffectRackView * m_effectRack;
|
||||
QWidget * m_effWindow;
|
||||
SampleTrackWindow * m_window;
|
||||
Knob * m_volumeKnob;
|
||||
Knob * m_panningKnob;
|
||||
|
||||
TrackLabelButton * m_tlb;
|
||||
|
||||
|
||||
friend class SampleTrackWindow;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
class SampleTrackWindow : public QWidget, public ModelView, public SerializingObjectHook
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SampleTrackWindow(SampleTrackView * tv);
|
||||
virtual ~SampleTrackWindow();
|
||||
|
||||
SampleTrack * model()
|
||||
{
|
||||
return castModel<SampleTrack>();
|
||||
}
|
||||
|
||||
const SampleTrack * model() const
|
||||
{
|
||||
return castModel<SampleTrack>();
|
||||
}
|
||||
|
||||
void setSampleTrackView(SampleTrackView * tv);
|
||||
|
||||
SampleTrackView *sampleTrackView()
|
||||
{
|
||||
return m_stv;
|
||||
}
|
||||
|
||||
|
||||
public slots:
|
||||
void textChanged(const QString & new_name);
|
||||
void toggleVisibility(bool on);
|
||||
void updateName();
|
||||
|
||||
|
||||
protected:
|
||||
// capture close-events for toggling sample-track-button
|
||||
virtual void closeEvent(QCloseEvent * ce);
|
||||
|
||||
virtual void saveSettings(QDomDocument & doc, QDomElement & element);
|
||||
virtual void loadSettings(const QDomElement & element);
|
||||
|
||||
private:
|
||||
virtual void modelChanged();
|
||||
|
||||
SampleTrack * m_track;
|
||||
SampleTrackView * m_stv;
|
||||
|
||||
// widgets on the top of an sample-track-window
|
||||
QLineEdit * m_nameLineEdit;
|
||||
Knob * m_volumeKnob;
|
||||
Knob * m_panningKnob;
|
||||
FxLineLcdSpinBox * m_effectChannelNumber;
|
||||
|
||||
EffectRackView * m_effectRack;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@ private:
|
||||
bool m_MMPZ;
|
||||
bool m_disableBackup;
|
||||
bool m_openLastProject;
|
||||
bool m_NaNHandler;
|
||||
bool m_hqAudioDev;
|
||||
QString m_lang;
|
||||
QStringList m_languages;
|
||||
|
||||
@@ -159,6 +159,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent( QResizeEvent * event );
|
||||
virtual void changeEvent( QEvent * );
|
||||
|
||||
protected slots:
|
||||
void play();
|
||||
|
||||
@@ -92,7 +92,6 @@ private:
|
||||
bool m_hasFocus;
|
||||
|
||||
static void elideText( QLabel *label, QString text );
|
||||
bool isMaximized();
|
||||
void adjustTitleBar();
|
||||
|
||||
private slots:
|
||||
|
||||
@@ -675,6 +675,10 @@ public:
|
||||
|
||||
virtual void update();
|
||||
|
||||
// Create a menu for assigning/creating channels for this track
|
||||
// Currently instrument track and sample track supports it
|
||||
virtual QMenu * createFxMenu(QString title, QString newFxLabel);
|
||||
|
||||
|
||||
public slots:
|
||||
virtual bool close();
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
VstSyncController();
|
||||
~VstSyncController();
|
||||
|
||||
void setAbsolutePosition( int ticks );
|
||||
void setAbsolutePosition( double ticks );
|
||||
|
||||
void setPlaybackState( bool enabled )
|
||||
{
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
struct VstSyncData
|
||||
{
|
||||
bool isPlaying;
|
||||
float ppqPos;
|
||||
double ppqPos;
|
||||
int timeSigNumer;
|
||||
int timeSigDenom;
|
||||
bool isCycle;
|
||||
|
||||
@@ -275,7 +275,8 @@ void MidiExport::writePattern(MidiNoteVector &pat, QDomNode n,
|
||||
// TODO interpret pan="0" fxch="0" pitchrange="1"
|
||||
MidiNote mnote;
|
||||
mnote.pitch = qMax(0, qMin(127, note.attribute("key", "0").toInt() + base_pitch));
|
||||
mnote.volume = qMin(qRound(base_volume * LocaleHelper::toDouble(note.attribute("vol", "100"))), 127);
|
||||
// Map from LMMS volume to MIDI velocity
|
||||
mnote.volume = qMin(qRound(base_volume * LocaleHelper::toDouble(note.attribute("vol", "100")) * (127.0 / 200.0)), 127);
|
||||
mnote.time = base_time + note.attribute("pos", "0").toInt();
|
||||
mnote.duration = note.attribute("len", "0").toInt();
|
||||
pat.push_back(mnote);
|
||||
|
||||
@@ -428,7 +428,7 @@ bool MidiImport::readSMF( TrackContainer* tc )
|
||||
Note n( (ticks < 1 ? 1 : ticks ),
|
||||
noteEvt->get_start_time() * ticksPerBeat,
|
||||
noteEvt->get_identifier() - 12,
|
||||
noteEvt->get_loud());
|
||||
noteEvt->get_loud() * (200.f / 127.f)); // Map from MIDI velocity to LMMS volume
|
||||
ch->addNote( n );
|
||||
|
||||
}
|
||||
|
||||
@@ -54,8 +54,10 @@ void Alg_atoms::expand()
|
||||
maxlen += (maxlen >> 2); // add 25%
|
||||
char **new_atoms = new Alg_attribute[maxlen];
|
||||
// now do copy
|
||||
memcpy(new_atoms, atoms, len * sizeof(Alg_attribute));
|
||||
if (atoms) delete[] atoms;
|
||||
if (atoms) {
|
||||
memcpy(new_atoms, atoms, len * sizeof(Alg_attribute));
|
||||
delete[] atoms;
|
||||
}
|
||||
atoms = new_atoms;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,13 @@ void VstEffectControls::loadSettings( const QDomElement & _this )
|
||||
knobFModel[ i ]->setInitValue(LocaleHelper::toFloat(s_dumpValues.at(2)));
|
||||
}
|
||||
|
||||
connect( knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) );
|
||||
#if QT_VERSION < 0x050000
|
||||
connect( knobFModel[i], SIGNAL( dataChanged( Model * ) ),
|
||||
this, SLOT( setParameter( Model * ) ), Qt::DirectConnection );
|
||||
#else
|
||||
connect( knobFModel[i], &FloatModel::dataChanged, this,
|
||||
[this, i]() { setParameter( knobFModel[i] ); }, Qt::DirectConnection);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
@@ -100,10 +106,8 @@ void VstEffectControls::loadSettings( const QDomElement & _this )
|
||||
|
||||
|
||||
|
||||
void VstEffectControls::setParameter( void )
|
||||
void VstEffectControls::setParameter( Model * action )
|
||||
{
|
||||
|
||||
Model *action = qobject_cast<Model *>(sender());
|
||||
int knobUNID = action->displayName().toInt();
|
||||
|
||||
if ( m_effect->m_plugin != NULL ) {
|
||||
@@ -377,9 +381,16 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls *
|
||||
m_vi->knobFModel[ i ] = new FloatModel( LocaleHelper::toFloat(s_dumpValues.at(2)),
|
||||
0.0f, 1.0f, 0.01f, _eff, tr( paramStr ) );
|
||||
}
|
||||
connect( m_vi->knobFModel[ i ], SIGNAL( dataChanged() ), this,
|
||||
SLOT( setParameter() ) );
|
||||
vstKnobs[ i ] ->setModel( m_vi->knobFModel[ i ] );
|
||||
|
||||
FloatModel * model = m_vi->knobFModel[i];
|
||||
#if QT_VERSION < 0x050000
|
||||
connect( model, SIGNAL( dataChanged( Model * ) ), this,
|
||||
SLOT( setParameter( Model * ) ), Qt::DirectConnection );
|
||||
#else
|
||||
connect( model, &FloatModel::dataChanged, this,
|
||||
[this, model]() { setParameter( model ); }, Qt::DirectConnection);
|
||||
#endif
|
||||
vstKnobs[ i ] ->setModel( model );
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
@@ -472,10 +483,8 @@ void manageVSTEffectView::displayAutomatedOnly( void )
|
||||
|
||||
|
||||
|
||||
void manageVSTEffectView::setParameter( void )
|
||||
void manageVSTEffectView::setParameter( Model * action )
|
||||
{
|
||||
|
||||
Model *action = qobject_cast<Model *>(sender());
|
||||
int knobUNID = action->displayName().toInt();
|
||||
|
||||
if ( m_effect->m_plugin != NULL ) {
|
||||
|
||||
@@ -70,7 +70,7 @@ protected slots:
|
||||
void rollPreset( void );
|
||||
void rolrPreset( void );
|
||||
void selPreset( void );
|
||||
void setParameter( void );
|
||||
void setParameter( Model * action );
|
||||
|
||||
protected:
|
||||
virtual void paintEvent( QPaintEvent * _pe );
|
||||
@@ -110,7 +110,7 @@ public:
|
||||
protected slots:
|
||||
void syncPlugin( void );
|
||||
void displayAutomatedOnly( void );
|
||||
void setParameter( void );
|
||||
void setParameter( Model * action );
|
||||
void closeWindow();
|
||||
|
||||
private:
|
||||
|
||||
@@ -474,6 +474,7 @@ void bitInvaderView::modelChanged()
|
||||
|
||||
void bitInvaderView::sinWaveClicked()
|
||||
{
|
||||
m_graph->model()->clearInvisible();
|
||||
m_graph->model()->setWaveToSine();
|
||||
Engine::getSong()->setModified();
|
||||
}
|
||||
@@ -483,6 +484,7 @@ void bitInvaderView::sinWaveClicked()
|
||||
|
||||
void bitInvaderView::triangleWaveClicked()
|
||||
{
|
||||
m_graph->model()->clearInvisible();
|
||||
m_graph->model()->setWaveToTriangle();
|
||||
Engine::getSong()->setModified();
|
||||
}
|
||||
@@ -492,6 +494,7 @@ void bitInvaderView::triangleWaveClicked()
|
||||
|
||||
void bitInvaderView::sawWaveClicked()
|
||||
{
|
||||
m_graph->model()->clearInvisible();
|
||||
m_graph->model()->setWaveToSaw();
|
||||
Engine::getSong()->setModified();
|
||||
}
|
||||
@@ -501,6 +504,7 @@ void bitInvaderView::sawWaveClicked()
|
||||
|
||||
void bitInvaderView::sqrWaveClicked()
|
||||
{
|
||||
m_graph->model()->clearInvisible();
|
||||
m_graph->model()->setWaveToSquare();
|
||||
Engine::getSong()->setModified();
|
||||
}
|
||||
@@ -510,6 +514,7 @@ void bitInvaderView::sqrWaveClicked()
|
||||
|
||||
void bitInvaderView::noiseWaveClicked()
|
||||
{
|
||||
m_graph->model()->clearInvisible();
|
||||
m_graph->model()->setWaveToNoise();
|
||||
Engine::getSong()->setModified();
|
||||
}
|
||||
@@ -520,35 +525,12 @@ void bitInvaderView::noiseWaveClicked()
|
||||
void bitInvaderView::usrWaveClicked()
|
||||
{
|
||||
QString fileName = m_graph->model()->setWaveToUser();
|
||||
ToolTip::add( m_usrWaveBtn, fileName );
|
||||
Engine::getSong()->setModified();
|
||||
/*
|
||||
m_graph->model()->setWaveToNoise();
|
||||
Engine::getSong()->setModified();
|
||||
// zero sample_shape
|
||||
for (int i = 0; i < sample_length; i++)
|
||||
if (!fileName.isEmpty())
|
||||
{
|
||||
sample_shape[i] = 0;
|
||||
ToolTip::add(m_usrWaveBtn, fileName);
|
||||
m_graph->model()->clearInvisible();
|
||||
Engine::getSong()->setModified();
|
||||
}
|
||||
|
||||
// load user shape
|
||||
sampleBuffer buffer;
|
||||
QString af = buffer.openAudioFile();
|
||||
if ( af != "" )
|
||||
{
|
||||
buffer.setAudioFile( af );
|
||||
|
||||
// copy buffer data
|
||||
sample_length = min( sample_length, static_cast<int>(
|
||||
buffer.frames() ) );
|
||||
for ( int i = 0; i < sample_length; i++ )
|
||||
{
|
||||
sample_shape[i] = (float)*buffer.data()[i];
|
||||
}
|
||||
}
|
||||
|
||||
sampleChanged();
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ PeakControllerEffect::PeakControllerEffect(
|
||||
Effect( &peakcontrollereffect_plugin_descriptor, _parent, _key ),
|
||||
m_effectId( rand() ),
|
||||
m_peakControls( this ),
|
||||
m_lastSample( m_peakControls.m_baseModel.value() ), //sets the value to the Peak Controller's Base value (rather than 0 like in previous versions)
|
||||
m_lastSample( 0 ),
|
||||
m_autoController( NULL )
|
||||
{
|
||||
m_autoController = new PeakController( Engine::getSong(), this );
|
||||
|
||||
@@ -53,6 +53,7 @@ PeakControllerEffectControls( PeakControllerEffect * _eff ) :
|
||||
void PeakControllerEffectControls::loadSettings( const QDomElement & _this )
|
||||
{
|
||||
m_baseModel.loadSettings( _this, "base" );
|
||||
m_effect->m_lastSample = m_baseModel.value(); //Set initial Peak Controller output to Base
|
||||
m_amountModel.loadSettings( _this, "amount" );
|
||||
m_muteModel.loadSettings( _this, "mute" );
|
||||
|
||||
|
||||
@@ -114,6 +114,9 @@ public:
|
||||
void createUI( QWidget *parent ) override
|
||||
{
|
||||
Q_UNUSED(parent);
|
||||
if ( !hasEditor() ) {
|
||||
return;
|
||||
}
|
||||
if ( embedMethod() != "none" ) {
|
||||
m_pluginSubWindow.reset(new vstSubWin( gui->mainWindow()->workspace() ));
|
||||
VstPlugin::createUI( m_pluginSubWindow.get() );
|
||||
@@ -214,7 +217,13 @@ void vestigeInstrument::loadSettings( const QDomElement & _this )
|
||||
knobFModel[ i ]->setInitValue(LocaleHelper::toFloat(s_dumpValues.at(2)));
|
||||
}
|
||||
|
||||
connect( knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) );
|
||||
#if QT_VERSION < 0x050000
|
||||
connect( knobFModel[i], SIGNAL( dataChanged( Model * ) ),
|
||||
this, SLOT( setParameter( Model * ) ), Qt::DirectConnection );
|
||||
#else
|
||||
connect( knobFModel[i], &FloatModel::dataChanged, this,
|
||||
[this, i]() { setParameter( knobFModel[i] ); }, Qt::DirectConnection);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
m_pluginMutex.unlock();
|
||||
@@ -223,10 +232,8 @@ void vestigeInstrument::loadSettings( const QDomElement & _this )
|
||||
|
||||
|
||||
|
||||
void vestigeInstrument::setParameter( void )
|
||||
void vestigeInstrument::setParameter( Model * action )
|
||||
{
|
||||
|
||||
Model *action = qobject_cast<Model *>(sender());
|
||||
int knobUNID = action->displayName().toInt();
|
||||
|
||||
if ( m_plugin != NULL ) {
|
||||
@@ -969,8 +976,16 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume
|
||||
m_vi->knobFModel[ i ] = new FloatModel( LocaleHelper::toFloat(s_dumpValues.at(2)),
|
||||
0.0f, 1.0f, 0.01f, castModel<vestigeInstrument>(), tr( paramStr ) );
|
||||
}
|
||||
connect( m_vi->knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) );
|
||||
vstKnobs[i] ->setModel( m_vi->knobFModel[i] );
|
||||
|
||||
FloatModel * model = m_vi->knobFModel[i];
|
||||
#if QT_VERSION < 0x050000
|
||||
connect( model, SIGNAL( dataChanged( Model * ) ), this,
|
||||
SLOT( setParameter( Model * ) ), Qt::DirectConnection );
|
||||
#else
|
||||
connect( model, &FloatModel::dataChanged, this,
|
||||
[this, model]() { setParameter( model ); }, Qt::DirectConnection);
|
||||
#endif
|
||||
vstKnobs[i] ->setModel( model );
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
@@ -1101,10 +1116,8 @@ manageVestigeInstrumentView::~manageVestigeInstrumentView()
|
||||
|
||||
|
||||
|
||||
void manageVestigeInstrumentView::setParameter( void )
|
||||
void manageVestigeInstrumentView::setParameter( Model * action )
|
||||
{
|
||||
|
||||
Model *action = qobject_cast<Model *>(sender());
|
||||
int knobUNID = action->displayName().toInt();
|
||||
|
||||
if ( m_vi->m_plugin != NULL ) {
|
||||
|
||||
@@ -73,7 +73,7 @@ public:
|
||||
virtual PluginView * instantiateView( QWidget * _parent );
|
||||
|
||||
protected slots:
|
||||
void setParameter( void );
|
||||
void setParameter( Model * action );
|
||||
void handleConfigChange( QString cls, QString attr, QString value );
|
||||
void reloadPlugin();
|
||||
|
||||
@@ -109,7 +109,7 @@ public:
|
||||
protected slots:
|
||||
void syncPlugin( void );
|
||||
void displayAutomatedOnly( void );
|
||||
void setParameter( void );
|
||||
void setParameter( Model * action );
|
||||
void closeWindow();
|
||||
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@ ENDIF()
|
||||
INCLUDE(BuildPlugin)
|
||||
INCLUDE(ExternalProject)
|
||||
|
||||
ADD_SUBDIRECTORY(vstbase)
|
||||
# These variables are not meant to be used normally, except packaging
|
||||
SET(REMOTE_VST_PLUGIN_FILEPATH_32 "32/RemoteVstPlugin32" CACHE STRING "Relative file path to RemoteVstPlugin32")
|
||||
SET(REMOTE_VST_PLUGIN_FILEPATH_64 "RemoteVstPlugin64" CACHE STRING "Relative file path to RemoteVstPlugin64")
|
||||
|
||||
IF(LMMS_BUILD_LINUX AND WANT_VST_NOWINE)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY(vstbase)
|
||||
|
||||
SET(LMMS_BINARY_DIR ${CMAKE_BINARY_DIR})
|
||||
SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||
@@ -29,6 +29,10 @@ SET(EXTERNALPROJECT_CMAKE_ARGS
|
||||
)
|
||||
|
||||
# build 32 bit version of RemoteVstPlugin
|
||||
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin32.cmake")
|
||||
IF(WANT_VST_32)
|
||||
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin32.cmake")
|
||||
ENDIF()
|
||||
# build 64 bit version of RemoteVstPlugin
|
||||
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin64.cmake")
|
||||
IF(WANT_VST_64)
|
||||
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin64.cmake")
|
||||
ENDIF()
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
# include <mutex>
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
@@ -415,8 +416,8 @@ private:
|
||||
// host to plugin synchronisation data structure
|
||||
struct in
|
||||
{
|
||||
float lastppqPos;
|
||||
float m_Timestamp;
|
||||
double lastppqPos;
|
||||
double m_Timestamp;
|
||||
int32_t m_lastFlags;
|
||||
} ;
|
||||
|
||||
@@ -913,6 +914,14 @@ void RemoteVstPlugin::process( const sampleFrame * _in, sampleFrame * _out )
|
||||
static char eventsBuffer[sizeof( VstEvents ) + sizeof( VstMidiEvent * ) * MIDI_EVENT_BUFFER_COUNT];
|
||||
static VstMidiEvent vme[MIDI_EVENT_BUFFER_COUNT];
|
||||
|
||||
// first sort events chronologically, since some plugins
|
||||
// (e.g. Sinnah) can hang if they're out of order
|
||||
std::stable_sort( m_midiEvents.begin(), m_midiEvents.end(),
|
||||
[]( const VstMidiEvent &a, const VstMidiEvent &b )
|
||||
{
|
||||
return a.deltaFrames < b.deltaFrames;
|
||||
} );
|
||||
|
||||
VstEvents* events = (VstEvents *) eventsBuffer;
|
||||
events->reserved = 0;
|
||||
events->numEvents = m_midiEvents.size();
|
||||
@@ -1609,10 +1618,20 @@ intptr_t RemoteVstPlugin::hostCallback( AEffect * _effect, int32_t _opcode,
|
||||
}
|
||||
else if( __plugin->m_vstSyncData->isPlaying )
|
||||
{
|
||||
__plugin->m_in->lastppqPos += (
|
||||
__plugin->m_vstSyncData->hasSHM ?
|
||||
__plugin->m_vstSyncData->m_bpm :
|
||||
__plugin->m_bpm ) / (float)10340;
|
||||
if( __plugin->m_vstSyncData->hasSHM )
|
||||
{
|
||||
__plugin->m_in->lastppqPos +=
|
||||
__plugin->m_vstSyncData->m_bpm / 60.0
|
||||
* __plugin->m_vstSyncData->m_bufferSize
|
||||
/ __plugin->m_vstSyncData->m_sampleRate;
|
||||
}
|
||||
else
|
||||
{
|
||||
__plugin->m_in->lastppqPos +=
|
||||
__plugin->m_bpm / 60.0
|
||||
* __plugin->bufferSize()
|
||||
/ __plugin->sampleRate();
|
||||
}
|
||||
_timeInfo.ppqPos = __plugin->m_in->lastppqPos;
|
||||
}
|
||||
// _timeInfo.ppqPos = __plugin->m_vstSyncData->ppqPos;
|
||||
@@ -1945,7 +1964,9 @@ DWORD WINAPI RemoteVstPlugin::processingThread( LPVOID _param )
|
||||
RemotePluginClient::message m;
|
||||
while( ( m = _this->receiveMessage() ).id != IdQuit )
|
||||
{
|
||||
if( m.id == IdStartProcessing || m.id == IdMidiEvent )
|
||||
if( m.id == IdStartProcessing
|
||||
|| m.id == IdMidiEvent
|
||||
|| m.id == IdVstSetParameter )
|
||||
{
|
||||
_this->processMessage( m );
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ if(IS_WIN64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(BITNESS 64)
|
||||
else()
|
||||
set(BITNESS 32)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/32")
|
||||
endif()
|
||||
|
||||
FOREACH( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
|
||||
|
||||
@@ -1,32 +1,39 @@
|
||||
IF(LMMS_BUILD_WIN32 AND NOT LMMS_BUILD_WIN64)
|
||||
ADD_SUBDIRECTORY(RemoteVstPlugin)
|
||||
IF(MSVC)
|
||||
SET(VCPKG_ROOT "${CMAKE_FIND_ROOT_PATH}")
|
||||
INSTALL(FILES "${VCPKG_ROOT}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(FILES "${VCPKG_ROOT}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
ELSE(MSVC)
|
||||
INSTALL(FILES "${MINGW_PREFIX}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(FILES "${MINGW_PREFIX}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
ENDIF(MSVC)
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32")
|
||||
ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
|
||||
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
|
||||
|
||||
IF(NOT CMAKE_GENERATOR_32)
|
||||
IF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
|
||||
SET(CMAKE_GENERATOR_32 "Visual Studio 14 2015")
|
||||
SET(MSVC_YEAR 2015)
|
||||
ELSEIF(MSVC_VER VERSION_EQUAL 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
|
||||
IF(NOT CMAKE_GENERATOR_32)
|
||||
IF(MSVC_VER VERSION_GREATER 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
|
||||
SET(CMAKE_GENERATOR_32 "Visual Studio 15 2017")
|
||||
SET(MSVC_YEAR 2017)
|
||||
ELSEIF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
|
||||
SET(CMAKE_GENERATOR_32 "Visual Studio 14 2015")
|
||||
SET(MSVC_YEAR 2015)
|
||||
ELSE()
|
||||
MESSAGE(SEND_WARNING "Can't build RemoteVstPlugin32, unknown MSVC version ${MSVC_VER} and no CMAKE_GENERATOR_32 set")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT QT_32_PREFIX AND NOT USING_VCPKG)
|
||||
IF(NOT QT_32_PREFIX)
|
||||
GET_FILENAME_COMPONENT(QT_BIN_DIR ${QT_QMAKE_EXECUTABLE} DIRECTORY)
|
||||
SET(QT_32_PREFIX "${QT_BIN_DIR}/../../msvc${MSVC_YEAR}")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT QT_32_PREFIX)
|
||||
MESSAGE(WARNING "Can't build RemoteVstPlugin32, QT_32_PREFIX not set")
|
||||
RETURN()
|
||||
ELSEIF(NOT (IS_DIRECTORY ${QT_32_PREFIX} AND EXISTS ${QT_32_PREFIX}/bin/qmake.exe))
|
||||
MESSAGE(WARNING "Can't build RemoteVstPlugin32, no Qt 32 bit installation found at ${QT_32_PREFIX}")
|
||||
RETURN()
|
||||
#TODO: qt5 installed using vcpkg: I don't know how to detect if the user built the x86 version of qt5 from here. At least not cleanly.
|
||||
#So for the moment, we'll allow the built.
|
||||
IF(NOT (IS_DIRECTORY ${QT_32_PREFIX} AND EXISTS ${QT_32_PREFIX}/bin/qmake.exe))
|
||||
MESSAGE(WARNING "No Qt 32 bit installation found at ${QT_32_PREFIX}. If you're using VCPKG you can ignore this message if you've built x86-windows version of qt5")
|
||||
ENDIF()
|
||||
|
||||
ExternalProject_Add(RemoteVstPlugin32
|
||||
@@ -38,8 +45,25 @@ ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
|
||||
"-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
|
||||
"-DCMAKE_PREFIX_PATH=${QT_32_PREFIX}"
|
||||
)
|
||||
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32")
|
||||
|
||||
#TODO: find a solution when not using vcpkg for qt
|
||||
SET(VCPKG_ROOT_32 "${CMAKE_FIND_ROOT_PATH}/../x86-windows")
|
||||
|
||||
INSTALL(FILES "${VCPKG_ROOT_32}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(FILES "${VCPKG_ROOT_32}/bin/pcre2-16.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(FILES "${VCPKG_ROOT_32}/bin/double-conversion.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(FILES "${VCPKG_ROOT_32}/bin/qt5core.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
|
||||
ELSEIF(LMMS_BUILD_LINUX)
|
||||
# Use winegcc
|
||||
INCLUDE(CheckWineGcc)
|
||||
CheckWineGcc(32 "${WINEGCC}" WINEGCC_WORKING)
|
||||
IF(NOT WINEGCC_WORKING)
|
||||
MESSAGE(WARNING "winegcc fails to complie 32-bit binaries, please make sure you have 32-bit GCC libraries")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ExternalProject_Add(RemoteVstPlugin32
|
||||
"${EXTERNALPROJECT_ARGS}"
|
||||
CMAKE_ARGS
|
||||
@@ -47,6 +71,9 @@ ELSEIF(LMMS_BUILD_LINUX)
|
||||
"-DCMAKE_CXX_COMPILER=${WINEGCC}"
|
||||
"-DCMAKE_CXX_FLAGS=-m32"
|
||||
)
|
||||
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}/32")
|
||||
|
||||
ELSEIF(CMAKE_TOOLCHAIN_FILE_32)
|
||||
ExternalProject_Add(RemoteVstPlugin32
|
||||
"${EXTERNALPROJECT_ARGS}"
|
||||
@@ -55,13 +82,11 @@ ELSEIF(CMAKE_TOOLCHAIN_FILE_32)
|
||||
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_32}"
|
||||
"-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE_32}"
|
||||
)
|
||||
INSTALL(FILES "${CMAKE_PREFIX_PATH_32}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(FILES "${CMAKE_PREFIX_PATH_32}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32")
|
||||
ELSE()
|
||||
message(WARNING "Can't build RemoteVstPlugin32, unknown environment. Please supply CMAKE_TOOLCHAIN_FILE_32 and optionally CMAKE_PREFIX_PATH_32")
|
||||
MESSAGE(WARNING "Can't build RemoteVstPlugin32, unknown environment. Please supply CMAKE_TOOLCHAIN_FILE_32 and optionally CMAKE_PREFIX_PATH_32")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
IF(LMMS_BUILD_LINUX)
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}")
|
||||
ELSEIF(LMMS_BUILD_WIN32)
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}")
|
||||
ENDIF()
|
||||
|
||||
@@ -2,6 +2,12 @@ IF(LMMS_BUILD_WIN64)
|
||||
ADD_SUBDIRECTORY(RemoteVstPlugin)
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin64.exe" DESTINATION "${PLUGIN_DIR}")
|
||||
ELSEIF(LMMS_BUILD_LINUX)
|
||||
INCLUDE(CheckWineGcc)
|
||||
CheckWineGcc(64 "${WINEGCC}" WINEGCC_WORKING)
|
||||
IF(NOT WINEGCC_WORKING)
|
||||
MESSAGE(WARNING "winegcc fails to compile 64-bit binaries, please make sure you have 64-bit GCC libraries")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ExternalProject_Add(RemoteVstPlugin64
|
||||
"${EXTERNALPROJECT_ARGS}"
|
||||
CMAKE_ARGS
|
||||
|
||||
@@ -149,10 +149,10 @@ VstPlugin::VstPlugin( const QString & _plugin ) :
|
||||
switch(machineType)
|
||||
{
|
||||
case PE::MachineType::amd64:
|
||||
tryLoad( "RemoteVstPlugin64" );
|
||||
tryLoad( REMOTE_VST_PLUGIN_FILEPATH_64 ); // Default: RemoteVstPlugin64
|
||||
break;
|
||||
case PE::MachineType::i386:
|
||||
tryLoad( "RemoteVstPlugin32" );
|
||||
tryLoad( REMOTE_VST_PLUGIN_FILEPATH_32 ); // Default: 32/RemoteVstPlugin32
|
||||
break;
|
||||
default:
|
||||
m_failed = true;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
ADD_DEFINITIONS(-DREMOTE_VST_PLUGIN_FILEPATH_32="${REMOTE_VST_PLUGIN_FILEPATH_32}")
|
||||
ADD_DEFINITIONS(-DREMOTE_VST_PLUGIN_FILEPATH_64="${REMOTE_VST_PLUGIN_FILEPATH_64}")
|
||||
|
||||
BUILD_PLUGIN(vstbase
|
||||
../vst_base.cpp ../VstPlugin.cpp ../VstPlugin.h ../communication.h
|
||||
MOCFILES ../VstPlugin.h
|
||||
|
||||
@@ -163,6 +163,10 @@ SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
ADD_EXECUTABLE(RemoteZynAddSubFx RemoteZynAddSubFx.cpp "${WINRC}")
|
||||
INSTALL(TARGETS RemoteZynAddSubFx RUNTIME DESTINATION "${PLUGIN_DIR}")
|
||||
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
SET_TARGET_PROPERTIES(RemoteZynAddSubFx PROPERTIES LINK_FLAGS "${LINK_FLAGS} -mwindows")
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
|
||||
# Remove useless dependencies from FLTK. Use fltk-config to avoid static library
|
||||
# in older environments
|
||||
SET(FLTK_FILTERED_LDFLAGS ${FLTK_LIBRARIES})
|
||||
|
||||
@@ -121,13 +121,20 @@ ZynAddSubFxInstrument::ZynAddSubFxInstrument(
|
||||
{
|
||||
initPlugin();
|
||||
|
||||
connect( &m_portamentoModel, SIGNAL( dataChanged() ), this, SLOT( updatePortamento() ) );
|
||||
connect( &m_filterFreqModel, SIGNAL( dataChanged() ), this, SLOT( updateFilterFreq() ) );
|
||||
connect( &m_filterQModel, SIGNAL( dataChanged() ), this, SLOT( updateFilterQ() ) );
|
||||
connect( &m_bandwidthModel, SIGNAL( dataChanged() ), this, SLOT( updateBandwidth() ) );
|
||||
connect( &m_fmGainModel, SIGNAL( dataChanged() ), this, SLOT( updateFmGain() ) );
|
||||
connect( &m_resCenterFreqModel, SIGNAL( dataChanged() ), this, SLOT( updateResCenterFreq() ) );
|
||||
connect( &m_resBandwidthModel, SIGNAL( dataChanged() ), this, SLOT( updateResBandwidth() ) );
|
||||
connect( &m_portamentoModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updatePortamento() ), Qt::DirectConnection );
|
||||
connect( &m_filterFreqModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updateFilterFreq() ), Qt::DirectConnection );
|
||||
connect( &m_filterQModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updateFilterQ() ), Qt::DirectConnection );
|
||||
connect( &m_bandwidthModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updateBandwidth() ), Qt::DirectConnection );
|
||||
connect( &m_fmGainModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updateFmGain() ), Qt::DirectConnection );
|
||||
connect( &m_resCenterFreqModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updateResCenterFreq() ), Qt::DirectConnection );
|
||||
connect( &m_resBandwidthModel, SIGNAL( dataChanged() ),
|
||||
this, SLOT( updateResBandwidth() ), Qt::DirectConnection );
|
||||
|
||||
// now we need a play-handle which cares for calling play()
|
||||
InstrumentPlayHandle * iph = new InstrumentPlayHandle( this, _instrumentTrack );
|
||||
@@ -137,7 +144,7 @@ ZynAddSubFxInstrument::ZynAddSubFxInstrument(
|
||||
this, SLOT( reloadPlugin() ) );
|
||||
|
||||
connect( instrumentTrack()->pitchRangeModel(), SIGNAL( dataChanged() ),
|
||||
this, SLOT( updatePitchRange() ) );
|
||||
this, SLOT( updatePitchRange() ), Qt::DirectConnection );
|
||||
}
|
||||
|
||||
|
||||
|
||||
2
src/3rdparty/rpmalloc/rpmalloc
vendored
2
src/3rdparty/rpmalloc/rpmalloc
vendored
Submodule src/3rdparty/rpmalloc/rpmalloc updated: 36b1942fbc...b5bdc18051
@@ -45,7 +45,7 @@ INCLUDE(GenQrc)
|
||||
ADD_GEN_QRC(LMMS_RCC_OUT lmms.qrc
|
||||
"${CMAKE_SOURCE_DIR}/doc/AUTHORS"
|
||||
"${CMAKE_SOURCE_DIR}/LICENSE.txt"
|
||||
"${CMAKE_BINARY_DIR}/CONTRIBUTORS"
|
||||
"${CONTRIBUTORS}"
|
||||
)
|
||||
|
||||
# Paths relative to lmms executable
|
||||
|
||||
@@ -466,7 +466,8 @@ void AutomatableModel::linkModel( AutomatableModel* model )
|
||||
|
||||
if( !model->hasLinkedModels() )
|
||||
{
|
||||
QObject::connect( this, SIGNAL( dataChanged() ), model, SIGNAL( dataChanged() ) );
|
||||
QObject::connect( this, SIGNAL( dataChanged() ),
|
||||
model, SIGNAL( dataChanged() ), Qt::DirectConnection );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -522,7 +523,8 @@ void AutomatableModel::setControllerConnection( ControllerConnection* c )
|
||||
m_controllerConnection = c;
|
||||
if( c )
|
||||
{
|
||||
QObject::connect( m_controllerConnection, SIGNAL( valueChanged() ), this, SIGNAL( dataChanged() ) );
|
||||
QObject::connect( m_controllerConnection, SIGNAL( valueChanged() ),
|
||||
this, SIGNAL( dataChanged() ), Qt::DirectConnection );
|
||||
QObject::connect( m_controllerConnection, SIGNAL( destroyed() ), this, SLOT( unlinkControllerConnection() ) );
|
||||
m_valueChanged = true;
|
||||
emit dataChanged();
|
||||
|
||||
@@ -772,6 +772,16 @@ void AutomationPattern::resolveAllIDs()
|
||||
{
|
||||
a->addObject( dynamic_cast<AutomatableModel *>( o ), false );
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: Remove this block once the automation system gets fixed
|
||||
// This is a temporary fix for https://github.com/LMMS/lmms/issues/3781
|
||||
o = Engine::projectJournal()->journallingObject(ProjectJournal::idFromSave(*k));
|
||||
if( o && dynamic_cast<AutomatableModel *>( o ) )
|
||||
{
|
||||
a->addObject( dynamic_cast<AutomatableModel *>( o ), false );
|
||||
}
|
||||
}
|
||||
}
|
||||
a->m_idsToResolve.clear();
|
||||
a->dataChanged();
|
||||
|
||||
@@ -117,7 +117,7 @@ void ControllerConnection::setController( Controller * _controller )
|
||||
{
|
||||
_controller->addConnection( this );
|
||||
QObject::connect( _controller, SIGNAL( valueChanged() ),
|
||||
this, SIGNAL( valueChanged() ) );
|
||||
this, SIGNAL( valueChanged() ), Qt::DirectConnection );
|
||||
}
|
||||
|
||||
m_ownsController =
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "Song.h"
|
||||
|
||||
#include "InstrumentTrack.h"
|
||||
#include "SampleTrack.h"
|
||||
#include "BBTrackContainer.h"
|
||||
|
||||
FxRoute::FxRoute( FxChannel * from, FxChannel * to, float amount ) :
|
||||
@@ -305,6 +306,22 @@ void FxMixer::deleteChannel( int index )
|
||||
inst->effectChannelModel()->setValue(val-1);
|
||||
}
|
||||
}
|
||||
else if( t->type() == Track::SampleTrack )
|
||||
{
|
||||
SampleTrack* strk = dynamic_cast<SampleTrack *>( t );
|
||||
int val = strk->effectChannelModel()->value(0);
|
||||
if( val == index )
|
||||
{
|
||||
// we are deleting this track's fx send
|
||||
// send to master
|
||||
strk->effectChannelModel()->setValue(0);
|
||||
}
|
||||
else if( val > index )
|
||||
{
|
||||
// subtract 1 to make up for the missing channel
|
||||
strk->effectChannelModel()->setValue(val-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FxChannel * ch = m_fxChannels[index];
|
||||
@@ -379,6 +396,19 @@ void FxMixer::moveChannelLeft( int index )
|
||||
inst->effectChannelModel()->setValue(a);
|
||||
}
|
||||
}
|
||||
else if( trackList[i]->type() == Track::SampleTrack )
|
||||
{
|
||||
SampleTrack * strk = (SampleTrack *) trackList[i];
|
||||
int val = strk->effectChannelModel()->value(0);
|
||||
if( val == a )
|
||||
{
|
||||
strk->effectChannelModel()->setValue(b);
|
||||
}
|
||||
else if( val == b )
|
||||
{
|
||||
strk->effectChannelModel()->setValue(a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -780,4 +810,3 @@ void FxMixer::validateChannelName( int index, int oldIndex )
|
||||
m_fxChannels[index]->m_name = tr( "FX %1" ).arg( index );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,11 @@
|
||||
#include "lmms_math.h"
|
||||
#include "ValueBuffer.h"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
|
||||
static bool s_NaNHandler;
|
||||
|
||||
|
||||
namespace MixHelpers
|
||||
{
|
||||
@@ -68,10 +73,24 @@ bool isSilent( const sampleFrame* src, int frames )
|
||||
return true;
|
||||
}
|
||||
|
||||
bool useNaNHandler()
|
||||
{
|
||||
return s_NaNHandler;
|
||||
}
|
||||
|
||||
void setNaNHandler( bool use )
|
||||
{
|
||||
s_NaNHandler = use;
|
||||
}
|
||||
|
||||
/*! \brief Function for sanitizing a buffer of infs/nans - returns true if those are found */
|
||||
bool sanitize( sampleFrame * src, int frames )
|
||||
{
|
||||
if( !useNaNHandler() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool found = false;
|
||||
for( int f = 0; f < frames; ++f )
|
||||
{
|
||||
@@ -79,12 +98,23 @@ bool sanitize( sampleFrame * src, int frames )
|
||||
{
|
||||
if( isinf( src[f][c] ) || isnan( src[f][c] ) )
|
||||
{
|
||||
src[f][c] = 0.0f;
|
||||
#ifdef LMMS_DEBUG
|
||||
printf("Bad data, clearing buffer. frame: ");
|
||||
printf("%d: value %f\n", f, src[f][c]);
|
||||
#endif
|
||||
for( int f = 0; f < frames; ++f )
|
||||
{
|
||||
for( int c = 0; c < 2; ++c )
|
||||
{
|
||||
src[f][c] = 0.0f;
|
||||
}
|
||||
}
|
||||
found = true;
|
||||
return found;
|
||||
}
|
||||
else
|
||||
{
|
||||
src[f][c] = qBound( -4.0f, src[f][c], 4.0f );
|
||||
src[f][c] = qBound( -1000.0f, src[f][c], 1000.0f );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -168,6 +198,13 @@ void addMultipliedByBuffers( sampleFrame* dst, const sampleFrame* src, ValueBuff
|
||||
|
||||
void addSanitizedMultipliedByBuffer( sampleFrame* dst, const sampleFrame* src, float coeffSrc, ValueBuffer * coeffSrcBuf, int frames )
|
||||
{
|
||||
if ( !useNaNHandler() )
|
||||
{
|
||||
addMultipliedByBuffer( dst, src, coeffSrc, coeffSrcBuf,
|
||||
frames );
|
||||
return;
|
||||
}
|
||||
|
||||
for( int f = 0; f < frames; ++f )
|
||||
{
|
||||
dst[f][0] += ( isinf( src[f][0] ) || isnan( src[f][0] ) ) ? 0.0f : src[f][0] * coeffSrc * coeffSrcBuf->values()[f];
|
||||
@@ -177,6 +214,13 @@ void addSanitizedMultipliedByBuffer( sampleFrame* dst, const sampleFrame* src, f
|
||||
|
||||
void addSanitizedMultipliedByBuffers( sampleFrame* dst, const sampleFrame* src, ValueBuffer * coeffSrcBuf1, ValueBuffer * coeffSrcBuf2, int frames )
|
||||
{
|
||||
if ( !useNaNHandler() )
|
||||
{
|
||||
addMultipliedByBuffers( dst, src, coeffSrcBuf1, coeffSrcBuf2,
|
||||
frames );
|
||||
return;
|
||||
}
|
||||
|
||||
for( int f = 0; f < frames; ++f )
|
||||
{
|
||||
dst[f][0] += ( isinf( src[f][0] ) || isnan( src[f][0] ) )
|
||||
@@ -205,6 +249,12 @@ struct AddSanitizedMultipliedOp
|
||||
|
||||
void addSanitizedMultiplied( sampleFrame* dst, const sampleFrame* src, float coeffSrc, int frames )
|
||||
{
|
||||
if ( !useNaNHandler() )
|
||||
{
|
||||
addMultiplied( dst, src, coeffSrc, frames );
|
||||
return;
|
||||
}
|
||||
|
||||
run<>( dst, src, frames, AddSanitizedMultipliedOp(coeffSrc) );
|
||||
}
|
||||
|
||||
|
||||
@@ -177,11 +177,6 @@ void NotePlayHandle::setVolume( volume_t _volume )
|
||||
void NotePlayHandle::setPanning( panning_t panning )
|
||||
{
|
||||
Note::setPanning( panning );
|
||||
|
||||
MidiEvent event( MidiMetaEvent, midiChannel(), midiKey(), panningToMidi( panning ) );
|
||||
event.setMetaEvent( MidiNotePanning );
|
||||
|
||||
m_instrumentTrack->processOutEvent( event );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -164,6 +164,11 @@ jo_id_t ProjectJournal::idToSave( jo_id_t id )
|
||||
return id & ~EO_ID_MSB;
|
||||
}
|
||||
|
||||
jo_id_t ProjectJournal::idFromSave( jo_id_t id )
|
||||
{
|
||||
return id | EO_ID_MSB;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,10 @@ ProcessWatcher::ProcessWatcher( RemotePlugin * _p ) :
|
||||
|
||||
void ProcessWatcher::run()
|
||||
{
|
||||
while( !m_quit && (m_plugin->isRunning() || m_plugin->messagesLeft()) )
|
||||
m_plugin->m_process.start( m_plugin->m_exec, m_plugin->m_args );
|
||||
exec();
|
||||
m_plugin->m_process.moveToThread( m_plugin->thread() );
|
||||
while( !m_quit && m_plugin->messagesLeft() )
|
||||
{
|
||||
msleep( 200 );
|
||||
}
|
||||
@@ -123,9 +126,13 @@ RemotePlugin::RemotePlugin() :
|
||||
#endif
|
||||
|
||||
connect( &m_process, SIGNAL( finished( int, QProcess::ExitStatus ) ),
|
||||
this, SLOT( processFinished( int, QProcess::ExitStatus ) ) );
|
||||
this, SLOT( processFinished( int, QProcess::ExitStatus ) ),
|
||||
Qt::DirectConnection );
|
||||
connect( &m_process, SIGNAL( errorOccurred( QProcess::ProcessError ) ),
|
||||
this, SLOT( processErrored( QProcess::ProcessError ) ) );
|
||||
this, SLOT( processErrored( QProcess::ProcessError ) ),
|
||||
Qt::DirectConnection );
|
||||
connect( &m_process, SIGNAL( finished( int, QProcess::ExitStatus ) ),
|
||||
&m_watcher, SLOT( quit() ), Qt::DirectConnection );
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +140,7 @@ RemotePlugin::RemotePlugin() :
|
||||
|
||||
RemotePlugin::~RemotePlugin()
|
||||
{
|
||||
m_watcher.quit();
|
||||
m_watcher.stop();
|
||||
m_watcher.wait();
|
||||
|
||||
if( m_failed == false )
|
||||
@@ -207,6 +214,11 @@ bool RemotePlugin::init(const QString &pluginExecutable,
|
||||
return failed();
|
||||
}
|
||||
|
||||
// ensure the watcher is ready in case we're running again
|
||||
// (e.g. 32-bit VST plugins on Windows)
|
||||
m_watcher.wait();
|
||||
m_watcher.reset();
|
||||
|
||||
QStringList args;
|
||||
#ifdef SYNC_WITH_SHM_FIFO
|
||||
// swap in and out for bidirectional communication
|
||||
@@ -219,7 +231,10 @@ bool RemotePlugin::init(const QString &pluginExecutable,
|
||||
#ifndef DEBUG_REMOTE_PLUGIN
|
||||
m_process.setProcessChannelMode( QProcess::ForwardedChannels );
|
||||
m_process.setWorkingDirectory( QCoreApplication::applicationDirPath() );
|
||||
m_process.start( exec, args );
|
||||
m_exec = exec;
|
||||
m_args = args;
|
||||
// we start the process on the watcher thread to work around QTBUG-8819
|
||||
m_process.moveToThread( &m_watcher );
|
||||
m_watcher.start( QThread::LowestPriority );
|
||||
#else
|
||||
qDebug() << exec << args;
|
||||
|
||||
@@ -103,7 +103,7 @@ void RenderManager::renderTracks()
|
||||
Track* tk = (*it);
|
||||
Track::TrackTypes type = tk->type();
|
||||
|
||||
// Don't mute automation tracks
|
||||
// Don't render automation tracks
|
||||
if ( tk->isMuted() == false &&
|
||||
( type == Track::InstrumentTrack || type == Track::SampleTrack ) )
|
||||
{
|
||||
@@ -115,7 +115,11 @@ void RenderManager::renderTracks()
|
||||
for( auto it = t2.begin(); it != t2.end(); ++it )
|
||||
{
|
||||
Track* tk = (*it);
|
||||
if ( tk->isMuted() == false )
|
||||
Track::TrackTypes type = tk->type();
|
||||
|
||||
// Don't render automation tracks
|
||||
if ( tk->isMuted() == false &&
|
||||
( type == Track::InstrumentTrack || type == Track::SampleTrack ) )
|
||||
{
|
||||
m_unmuted.push_back(tk);
|
||||
}
|
||||
|
||||
@@ -260,8 +260,6 @@ void Song::processNextBuffer()
|
||||
m_playPos[m_playMode].setTicks(
|
||||
tl->loopBegin().getTicks() );
|
||||
|
||||
m_vstSyncController.setAbsolutePosition(
|
||||
tl->loopBegin().getTicks() );
|
||||
m_vstSyncController.setPlaybackJumped( true );
|
||||
|
||||
emit updateSampleTracks();
|
||||
@@ -288,8 +286,6 @@ void Song::processNextBuffer()
|
||||
int ticks = m_playPos[m_playMode].getTicks() +
|
||||
( int )( currentFrame / framesPerTick );
|
||||
|
||||
m_vstSyncController.setAbsolutePosition( ticks );
|
||||
|
||||
// did we play a whole tact?
|
||||
if( ticks >= MidiTime::ticksPerTact() )
|
||||
{
|
||||
@@ -326,7 +322,6 @@ void Song::processNextBuffer()
|
||||
// wrap milli second counter
|
||||
setToTimeByTicks(ticks);
|
||||
|
||||
m_vstSyncController.setAbsolutePosition( ticks );
|
||||
m_vstSyncController.setPlaybackJumped( true );
|
||||
}
|
||||
}
|
||||
@@ -348,7 +343,6 @@ void Song::processNextBuffer()
|
||||
m_playPos[m_playMode].setTicks( ticks );
|
||||
setToTime(tl->loopBegin());
|
||||
|
||||
m_vstSyncController.setAbsolutePosition( ticks );
|
||||
m_vstSyncController.setPlaybackJumped( true );
|
||||
|
||||
emit updateSampleTracks();
|
||||
@@ -363,7 +357,17 @@ void Song::processNextBuffer()
|
||||
m_playPos[m_playMode].setCurrentFrame( currentFrame );
|
||||
}
|
||||
|
||||
f_cnt_t framesToPlay =
|
||||
if( framesPlayed == 0 )
|
||||
{
|
||||
// update VST sync position after we've corrected frame/
|
||||
// tick count but before actually playing any frames
|
||||
m_vstSyncController.setAbsolutePosition(
|
||||
m_playPos[m_playMode].getTicks()
|
||||
+ m_playPos[m_playMode].currentFrame()
|
||||
/ (double) framesPerTick );
|
||||
}
|
||||
|
||||
f_cnt_t framesToPlay =
|
||||
Engine::mixer()->framesPerPeriod() - framesPlayed;
|
||||
|
||||
f_cnt_t framesLeft = ( f_cnt_t )framesPerTick -
|
||||
@@ -718,7 +722,10 @@ void Song::stop()
|
||||
m_playPos[m_playMode].setCurrentFrame( 0 );
|
||||
|
||||
m_vstSyncController.setPlaybackState( m_exporting );
|
||||
m_vstSyncController.setAbsolutePosition( m_playPos[m_playMode].getTicks() );
|
||||
m_vstSyncController.setAbsolutePosition(
|
||||
m_playPos[m_playMode].getTicks()
|
||||
+ m_playPos[m_playMode].currentFrame()
|
||||
/ (double) Engine::framesPerTick() );
|
||||
|
||||
// remove all note-play-handles that are active
|
||||
Engine::mixer()->clear();
|
||||
|
||||
@@ -909,10 +909,18 @@ void TrackContentObjectView::mouseMoveEvent( QMouseEvent * me )
|
||||
else if( m_action == MoveSelection )
|
||||
{
|
||||
const int dx = me->x() - m_initialMousePos.x();
|
||||
const bool snap = !(me->modifiers() & Qt::ControlModifier) &&
|
||||
me->button() == Qt::NoButton;
|
||||
QVector<selectableObject *> so =
|
||||
m_trackView->trackContainerView()->selectedObjects();
|
||||
QVector<TrackContentObject *> tcos;
|
||||
MidiTime smallest_pos, t;
|
||||
int smallestPos = 0;
|
||||
MidiTime dtick = MidiTime( static_cast<int>( dx *
|
||||
MidiTime::ticksPerTact() / ppt ) );
|
||||
if( snap )
|
||||
{
|
||||
dtick = dtick.toNearestTact();
|
||||
}
|
||||
// find out smallest position of all selected objects for not
|
||||
// moving an object before zero
|
||||
for( QVector<selectableObject *>::iterator it = so.begin();
|
||||
@@ -926,23 +934,18 @@ void TrackContentObjectView::mouseMoveEvent( QMouseEvent * me )
|
||||
}
|
||||
TrackContentObject * tco = tcov->m_tco;
|
||||
tcos.push_back( tco );
|
||||
smallest_pos = qMin<int>( smallest_pos,
|
||||
(int)tco->startPosition() +
|
||||
static_cast<int>( dx *
|
||||
MidiTime::ticksPerTact() / ppt ) );
|
||||
smallestPos = qMin<int>( smallestPos,
|
||||
(int)tco->startPosition() + dtick );
|
||||
}
|
||||
dtick -= smallestPos;
|
||||
if( snap )
|
||||
{
|
||||
dtick = dtick.toAbsoluteTact(); // round toward 0
|
||||
}
|
||||
for( QVector<TrackContentObject *>::iterator it = tcos.begin();
|
||||
it != tcos.end(); ++it )
|
||||
{
|
||||
t = ( *it )->startPosition() +
|
||||
static_cast<int>( dx *MidiTime::ticksPerTact() /
|
||||
ppt )-smallest_pos;
|
||||
if( ! ( me->modifiers() & Qt::ControlModifier )
|
||||
&& me->button() == Qt::NoButton )
|
||||
{
|
||||
t = t.toNearestTact();
|
||||
}
|
||||
( *it )->movePosition( t );
|
||||
( *it )->movePosition( ( *it )->startPosition() + dtick );
|
||||
}
|
||||
}
|
||||
else if( m_action == Resize || m_action == ResizeLeft )
|
||||
@@ -1921,13 +1924,15 @@ void TrackOperationsWidget::updateMenu()
|
||||
{
|
||||
toMenu->addAction( tr( "Clear this track" ), this, SLOT( clearTrack() ) );
|
||||
}
|
||||
if( InstrumentTrackView * trackView = dynamic_cast<InstrumentTrackView *>( m_trackView ) )
|
||||
if (QMenu *fxMenu = m_trackView->createFxMenu(tr("FX %1: %2"), tr("Assign to new FX Channel")))
|
||||
{
|
||||
QMenu *fxMenu = trackView->createFxMenu( tr( "FX %1: %2" ), tr( "Assign to new FX Channel" ));
|
||||
toMenu->addMenu(fxMenu);
|
||||
}
|
||||
|
||||
if (InstrumentTrackView * trackView = dynamic_cast<InstrumentTrackView *>(m_trackView))
|
||||
{
|
||||
toMenu->addSeparator();
|
||||
toMenu->addMenu( trackView->midiMenu() );
|
||||
toMenu->addMenu(trackView->midiMenu());
|
||||
}
|
||||
if( dynamic_cast<AutomationTrackView *>( m_trackView ) )
|
||||
{
|
||||
@@ -2674,6 +2679,19 @@ void TrackView::update()
|
||||
|
||||
|
||||
|
||||
/*! \brief Create a menu for assigning/creating channels for this track.
|
||||
*
|
||||
*/
|
||||
QMenu * TrackView::createFxMenu(QString title, QString newFxLabel)
|
||||
{
|
||||
Q_UNUSED(title)
|
||||
Q_UNUSED(newFxLabel)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*! \brief Close this track View.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -136,12 +136,12 @@ VstSyncController::~VstSyncController()
|
||||
|
||||
|
||||
|
||||
void VstSyncController::setAbsolutePosition( int ticks )
|
||||
void VstSyncController::setAbsolutePosition( double ticks )
|
||||
{
|
||||
#ifdef VST_SNC_LATENCY
|
||||
m_syncData->ppqPos = ( ( ticks + 0 ) / (float)48 ) - m_syncData->m_latency;
|
||||
m_syncData->ppqPos = ( ( ticks + 0 ) / 48.0 ) - m_syncData->m_latency;
|
||||
#else
|
||||
m_syncData->ppqPos = ( ( ticks + 0 ) / (float)48 );
|
||||
m_syncData->ppqPos = ( ( ticks + 0 ) / 48.0 );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,9 @@ void AudioPort::doProcessing()
|
||||
{
|
||||
if( ph->buffer() )
|
||||
{
|
||||
if( ph->usesBuffer() )
|
||||
if( ph->usesBuffer()
|
||||
&& ( ph->type() == PlayHandle::TypeNotePlayHandle
|
||||
|| !MixHelpers::isSilent( ph->buffer(), fpp ) ) )
|
||||
{
|
||||
m_bufferUsage = true;
|
||||
MixHelpers::add( m_portBuffer, ph->buffer(), fpp );
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
#include "AudioPortAudio.h"
|
||||
|
||||
#ifndef LMMS_HAVE_PORTAUDIO
|
||||
void AudioPortAudioSetupUtil::updateBackends()
|
||||
{
|
||||
}
|
||||
|
||||
void AudioPortAudioSetupUtil::updateDevices()
|
||||
{
|
||||
}
|
||||
@@ -328,6 +332,28 @@ int AudioPortAudio::_process_callback(
|
||||
|
||||
|
||||
|
||||
|
||||
void AudioPortAudioSetupUtil::updateBackends()
|
||||
{
|
||||
PaError err = Pa_Initialize();
|
||||
if( err != paNoError ) {
|
||||
printf( "Couldn't initialize PortAudio: %s\n", Pa_GetErrorText( err ) );
|
||||
return;
|
||||
}
|
||||
|
||||
const PaHostApiInfo * hi;
|
||||
for( int i = 0; i < Pa_GetHostApiCount(); ++i )
|
||||
{
|
||||
hi = Pa_GetHostApiInfo( i );
|
||||
m_backendModel.addItem( hi->name );
|
||||
}
|
||||
|
||||
Pa_Terminate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void AudioPortAudioSetupUtil::updateDevices()
|
||||
{
|
||||
PaError err = Pa_Initialize();
|
||||
@@ -409,37 +435,6 @@ AudioPortAudio::setupWidget::setupWidget( QWidget * _parent ) :
|
||||
m_channels->setLabel( tr( "CHANNELS" ) );
|
||||
m_channels->move( 308, 20 );*/
|
||||
|
||||
// Setup models
|
||||
PaError err = Pa_Initialize();
|
||||
if( err != paNoError ) {
|
||||
printf( "Couldn't initialize PortAudio: %s\n", Pa_GetErrorText( err ) );
|
||||
return;
|
||||
}
|
||||
|
||||
// todo: setup backend model
|
||||
const PaHostApiInfo * hi;
|
||||
for( int i = 0; i < Pa_GetHostApiCount(); ++i )
|
||||
{
|
||||
hi = Pa_GetHostApiInfo( i );
|
||||
m_setupUtil.m_backendModel.addItem( hi->name );
|
||||
}
|
||||
|
||||
Pa_Terminate();
|
||||
|
||||
|
||||
const QString& backend = ConfigManager::inst()->value( "audioportaudio",
|
||||
"backend" );
|
||||
const QString& device = ConfigManager::inst()->value( "audioportaudio",
|
||||
"device" );
|
||||
|
||||
int i = qMax( 0, m_setupUtil.m_backendModel.findText( backend ) );
|
||||
m_setupUtil.m_backendModel.setValue( i );
|
||||
|
||||
m_setupUtil.updateDevices();
|
||||
|
||||
i = qMax( 0, m_setupUtil.m_deviceModel.findText( device ) );
|
||||
m_setupUtil.m_deviceModel.setValue( i );
|
||||
|
||||
connect( &m_setupUtil.m_backendModel, SIGNAL( dataChanged() ),
|
||||
&m_setupUtil, SLOT( updateDevices() ) );
|
||||
|
||||
@@ -478,6 +473,33 @@ void AudioPortAudio::setupWidget::saveSettings()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void AudioPortAudio::setupWidget::show()
|
||||
{
|
||||
if( m_setupUtil.m_backendModel.size() == 0 )
|
||||
{
|
||||
// populate the backend model the first time we are shown
|
||||
m_setupUtil.updateBackends();
|
||||
|
||||
const QString& backend = ConfigManager::inst()->value(
|
||||
"audioportaudio", "backend" );
|
||||
const QString& device = ConfigManager::inst()->value(
|
||||
"audioportaudio", "device" );
|
||||
|
||||
int i = qMax( 0, m_setupUtil.m_backendModel.findText( backend ) );
|
||||
m_setupUtil.m_backendModel.setValue( i );
|
||||
|
||||
m_setupUtil.updateDevices();
|
||||
|
||||
i = qMax( 0, m_setupUtil.m_deviceModel.findText( device ) );
|
||||
m_setupUtil.m_deviceModel.setValue( i );
|
||||
}
|
||||
|
||||
AudioDeviceSetupWidget::show();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
#include "GuiApplication.h"
|
||||
#include "ImportFilter.h"
|
||||
#include "MainWindow.h"
|
||||
#include "MixHelpers.h"
|
||||
#include "OutputSettings.h"
|
||||
#include "ProjectRenderer.h"
|
||||
#include "RenderManager.h"
|
||||
@@ -343,7 +344,13 @@ int main( int argc, char * * argv )
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef LMMS_BUILD_LINUX
|
||||
// don't let OS steal the menu bar. FIXME: only effective on Qt4
|
||||
QCoreApplication::setAttribute( Qt::AA_DontUseNativeMenuBar );
|
||||
#endif
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
#endif
|
||||
QCoreApplication * app = coreOnly ?
|
||||
new QCoreApplication( argc, argv ) :
|
||||
new MainApplication( argc, argv );
|
||||
@@ -688,6 +695,10 @@ int main( int argc, char * * argv )
|
||||
|
||||
ConfigManager::inst()->loadConfigFile(configFile);
|
||||
|
||||
// Hidden settings
|
||||
MixHelpers::setNaNHandler( ConfigManager::inst()->value( "app",
|
||||
"nanhandler", "1" ).toInt() );
|
||||
|
||||
// set language
|
||||
QString pos = ConfigManager::inst()->value( "app", "language" );
|
||||
if( pos.isEmpty() )
|
||||
|
||||
@@ -56,6 +56,7 @@ SET(LMMS_SRCS
|
||||
gui/widgets/FadeButton.cpp
|
||||
gui/widgets/Fader.cpp
|
||||
gui/widgets/FxLine.cpp
|
||||
gui/widgets/FxLineLcdSpinBox.cpp
|
||||
gui/widgets/Graph.cpp
|
||||
gui/widgets/GroupBox.cpp
|
||||
gui/widgets/InstrumentFunctionViews.cpp
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#include "Mixer.h"
|
||||
#include "gui_templates.h"
|
||||
#include "InstrumentTrack.h"
|
||||
#include "SampleTrack.h"
|
||||
#include "Song.h"
|
||||
#include "BBTrackContainer.h"
|
||||
|
||||
@@ -73,7 +74,7 @@ FxMixerView::FxMixerView() :
|
||||
|
||||
// Set margins
|
||||
ml->setContentsMargins( 0, 4, 0, 0 );
|
||||
|
||||
|
||||
// Channel area
|
||||
m_channelAreaWidget = new QWidget;
|
||||
chLayout = new QHBoxLayout( m_channelAreaWidget );
|
||||
@@ -138,9 +139,9 @@ FxMixerView::FxMixerView() :
|
||||
ml->addWidget( newChannelBtn, 0, Qt::AlignTop );
|
||||
|
||||
|
||||
// add the stacked layout for the effect racks of fx channels
|
||||
// add the stacked layout for the effect racks of fx channels
|
||||
ml->addWidget( m_racksWidget, 0, Qt::AlignTop | Qt::AlignRight );
|
||||
|
||||
|
||||
setCurrentFxLine( m_fxChannelViews[0]->m_fxLine );
|
||||
|
||||
setLayout( ml );
|
||||
@@ -219,10 +220,10 @@ void FxMixerView::refreshDisplay()
|
||||
chLayout->addWidget(m_fxChannelViews[i]->m_fxLine);
|
||||
m_racksLayout->addWidget( m_fxChannelViews[i]->m_rackView );
|
||||
}
|
||||
|
||||
|
||||
// set selected fx line to 0
|
||||
setCurrentFxLine( 0 );
|
||||
|
||||
|
||||
// update all fx lines
|
||||
for( int i = 0; i < m_fxChannelViews.size(); ++i )
|
||||
{
|
||||
@@ -251,6 +252,12 @@ void FxMixerView::updateMaxChannelSelector()
|
||||
inst->effectChannelModel()->setRange(0,
|
||||
m_fxChannelViews.size()-1,1);
|
||||
}
|
||||
else if( trackList[i]->type() == Track::SampleTrack )
|
||||
{
|
||||
SampleTrack * strk = (SampleTrack *) trackList[i];
|
||||
strk->effectChannelModel()->setRange(0,
|
||||
m_fxChannelViews.size()-1,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -308,7 +315,7 @@ FxMixerView::FxChannelView::FxChannelView(QWidget * _parent, FxMixerView * _mv,
|
||||
connect(&fxChannel->m_soloModel, SIGNAL( dataChanged() ),
|
||||
_mv, SLOT ( toggledSolo() ) );
|
||||
ToolTip::add( m_soloBtn, tr( "Solo FX channel" ) );
|
||||
|
||||
|
||||
// Create EffectRack for the channel
|
||||
m_rackView = new EffectRackView( &fxChannel->m_fxChain, _mv->m_racksWidget );
|
||||
m_rackView->setFixedSize( 245, FxLine::FxLineHeight );
|
||||
@@ -354,6 +361,8 @@ void FxMixerView::updateFxLine(int index)
|
||||
// does current channel send to this channel?
|
||||
int selIndex = m_currentFxLine->channelIndex();
|
||||
FxLine * thisLine = m_fxChannelViews[index]->m_fxLine;
|
||||
thisLine->setToolTip( Engine::fxMixer()->effectChannel( index )->m_name );
|
||||
|
||||
FloatModel * sendModel = mix->channelSendModel(selIndex, index);
|
||||
if( sendModel == NULL )
|
||||
{
|
||||
|
||||
@@ -55,11 +55,6 @@ GuiApplication* GuiApplication::instance()
|
||||
|
||||
GuiApplication::GuiApplication()
|
||||
{
|
||||
// enable HiDPI scaling before showing anything (Qt 5.6+ only)
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
||||
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
|
||||
#endif
|
||||
|
||||
// prompt the user to create the LMMS working directory (e.g. ~/Documents/lmms) if it doesn't exist
|
||||
if ( !ConfigManager::inst()->hasWorkingDir() &&
|
||||
QMessageBox::question( NULL,
|
||||
|
||||
@@ -100,6 +100,8 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
|
||||
"disablebackup" ).toInt() ),
|
||||
m_openLastProject( ConfigManager::inst()->value( "app",
|
||||
"openlastproject" ).toInt() ),
|
||||
m_NaNHandler( ConfigManager::inst()->value( "app",
|
||||
"nanhandler", "1" ).toInt() ),
|
||||
m_hqAudioDev( ConfigManager::inst()->value( "mixer",
|
||||
"hqaudio" ).toInt() ),
|
||||
m_lang( ConfigManager::inst()->value( "app",
|
||||
@@ -128,7 +130,7 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
|
||||
m_compactTrackButtons( ConfigManager::inst()->value( "ui",
|
||||
"compacttrackbuttons" ).toInt() ),
|
||||
m_syncVSTPlugins( ConfigManager::inst()->value( "ui",
|
||||
"syncvstplugins" ).toInt() ),
|
||||
"syncvstplugins", "1" ).toInt() ),
|
||||
m_animateAFP(ConfigManager::inst()->value( "ui",
|
||||
"animateafp", "1" ).toInt() ),
|
||||
m_printNoteLabels(ConfigManager::inst()->value( "ui",
|
||||
@@ -136,7 +138,7 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
|
||||
m_displayWaveform(ConfigManager::inst()->value( "ui",
|
||||
"displaywaveform").toInt() ),
|
||||
m_disableAutoQuit(ConfigManager::inst()->value( "ui",
|
||||
"disableautoquit").toInt() ),
|
||||
"disableautoquit", "1" ).toInt() ),
|
||||
m_vstEmbedMethod( ConfigManager::inst()->vstEmbedMethod() )
|
||||
{
|
||||
setWindowIcon( embed::getIconPixmap( "setup_general" ) );
|
||||
@@ -247,6 +249,15 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
|
||||
|
||||
misc_tw->setFixedHeight( YDelta*labelNumber + HeaderSize );
|
||||
|
||||
// Advanced setting, hidden for now
|
||||
if( false )
|
||||
{
|
||||
LedCheckBox * useNaNHandler = new LedCheckBox(
|
||||
tr( "Use built-in NaN handler" ),
|
||||
misc_tw );
|
||||
useNaNHandler->setChecked( m_NaNHandler );
|
||||
}
|
||||
|
||||
TabWidget* embed_tw = new TabWidget( tr( "PLUGIN EMBEDDING" ), general);
|
||||
embed_tw->setFixedHeight( 48 );
|
||||
m_vstEmbedComboBox = new QComboBox( embed_tw );
|
||||
@@ -815,6 +826,8 @@ void SetupDialog::accept()
|
||||
QString::number( !m_disableBackup ) );
|
||||
ConfigManager::inst()->setValue( "app", "openlastproject",
|
||||
QString::number( m_openLastProject ) );
|
||||
ConfigManager::inst()->setValue( "app", "nanhandler",
|
||||
QString::number( m_NaNHandler ) );
|
||||
ConfigManager::inst()->setValue( "mixer", "hqaudio",
|
||||
QString::number( m_hqAudioDev ) );
|
||||
ConfigManager::inst()->setValue( "ui", "smoothscroll",
|
||||
|
||||
@@ -174,32 +174,6 @@ void SubWindow::elideText( QLabel *label, QString text )
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief SubWindow::isMaximized
|
||||
*
|
||||
* This function checks if the subwindow is maximized.
|
||||
* QMdiSubWindow::isMaximized() doesn't work on MacOS.
|
||||
* Therefore we need our own implementation for checking this
|
||||
* @return true if the subwindow is maximized at the moment.
|
||||
* false if it's not.
|
||||
*/
|
||||
bool SubWindow::isMaximized()
|
||||
{
|
||||
#ifdef LMMS_BUILD_APPLE
|
||||
// check if subwindow size is identical to the MdiArea size, accounting for scrollbars
|
||||
int hScrollBarHeight = mdiArea()->horizontalScrollBar()->isVisible() ? mdiArea()->horizontalScrollBar()->size().height() : 0;
|
||||
int vScrollBarWidth = mdiArea()->verticalScrollBar()->isVisible() ? mdiArea()->verticalScrollBar()->size().width() : 0;
|
||||
QSize areaSize( this->mdiArea()->size().width() - vScrollBarWidth, this->mdiArea()->size().height() - hScrollBarHeight );
|
||||
|
||||
return areaSize == this->size();
|
||||
#else
|
||||
return QMdiSubWindow::isMaximized();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief SubWindow::getTrueNormalGeometry
|
||||
*
|
||||
@@ -388,8 +362,11 @@ void SubWindow::focusChanged( QMdiSubWindow *subWindow )
|
||||
*/
|
||||
void SubWindow::resizeEvent( QResizeEvent * event )
|
||||
{
|
||||
adjustTitleBar();
|
||||
// When the parent QMdiArea gets resized, maximized subwindows also gets resized, if any.
|
||||
// In that case, we should call QMdiSubWindow::resizeEvent first
|
||||
// to ensure we get the correct window state.
|
||||
QMdiSubWindow::resizeEvent( event );
|
||||
adjustTitleBar();
|
||||
|
||||
// if the window was resized and ISN'T minimized/maximized/fullscreen,
|
||||
// then save the current size
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user