mirror of
https://github.com/LMMS/lmms.git
synced 2026-03-02 05:08:39 -05:00
* First Preview of the X-Pressive Plugin (exprtk.hpp is not included, get it from my exprtk fork in the branch internal_data_functions) available keys: f- note's frequency. available only in the output expressions t- time in seconds. in the Waves (W1,W2,W3) it's in the range [0,1) key- the note's keyboard key. available only in the output expressions. v- the note's velocity (divided by 255.0 so it is in the range [0,1]). available only in the output expressions. rel- gives 0 while the key is holded, and 1 after the key release. available only in the output expressions. A1,A2,A3- general purpose knobs (you can control them with the automations). available only in the output expressions. W1,W2,W3- precalculated wave forms. can be also load from file. you can use them only in the output expressions available functions: cent(x)- gives pow(2,x/1200) rand()- random number generator. in range [-1,1). each call gives other value. randv(i)- random vector (with pseudo infinite integer cells). the values are in range [-1,1). it's stays consistent only across the note playback. so each note playback will get other vector (even on the same key). sinew- sine wave with period of 1. saww- saw wave with period of 1. squarew- square wave with period of 1. trianglew- triangle wave with period of 1. expw- exponent wave with period of 1. expnw- another exponent wave with period of 1. moogw- moog wave with period of 1. moogsaww- moog-saw wave with period of 1. you can use * % ^ / + - pow sin log pi etc. * Xpressive Plug-In: Added Release transition knob that control the "rel" variable. (the duration of transit from 0 to 1) Fixed some problems in the displays. (update display when changing A1,A2,A3, clear display with invalid expression. * X-Pressive Plug-In: Few more fixes Changed the callbacks in exprfront.cpp to be templated. Added help. Added ExprTk.hpp. some bug fixes (inf issues). Added integrate function. * Special version of ExprTk with modified license (BSL) for the LMMS project https://github.com/LMMS/lmms * Xpressive Plug-In- fixed some building errors. Added the "e" euler's constant. * Xpressive Plug-In - fix mingw64 issues * X-Pressive Plug-in: Added "trel" (time since release) variable. The integrate function can now have unlimited usage. Added selective interpolation per wave. Improved a little the random vector function. Some other improvements, code cleaning, etc... * Xpressive Plug-In: move clearGraph definition into Graph.cpp. fixed compilation errors. (oops..) * X-Pressive plug-in: updated presets names * X-Pressive plug-in added semitone function, added sample-rate variable * X-Pressive plug-in, code cleaning, changed the rendering function to achieve performace gain. * X-Pressive plug-in - fix the string counting function * X-Pressive plug-in - until somebody will find a better solution, exprtk.hpp is patched under the name exprtk.patched.hpp ... * X-Pressive plug-in - fix compiling errors. * X-Pressive plug-in - added patch file for exprtk.hpp, added last function that gives last calculated samples. moved ExprSynth to be with ExprFront for performance reasons. * X-Pressive plugin - moved the patched file back to the source tree, added .gitignore file.. * X-Pressive plugin - fix compilation error. (isnan isinf) * X-Pressive plugin - tried to fix embed.cpp problem, added new variable to the parser (tempo) * X-Pressive plugin - fixed cmake script * X-Pressive plugin - updated the license and the diff file. * Updates to ExprTk * Added return statement enable/disable via parser settings Added exprtk_disable_return_statement macro for disabling return statements and associated exceptions at the source code level. * X-Pressive plugin - updated CMakeLists.txt to use the correct flags on each platform. also added exprtk.hpp as a dependency for the patch command. Updated the exprtk diff file. * X-Pressive plugin - moved the enhanced features flag to the WIN64 installation. * X-Pressive plugin - another fix for CMakeLists.txt * Minor updates to ExprTk Updated multi-sub expression operator to return final sub-expression type. Updates to exprtk_disable_return_statement macro for disabling return statements and associated exceptions at the source code level. * X-Pressive plug-in - added try-block around exprtk calls and enabled the -fexceptions flag, so patch file is no longer needed. * X-Pressive plug-in - small fix in CMakeLists.txt * Update ExprTk to tip of branch. * X-Pressive plugin - added graph drawing feature.. * Updating exprtk.hpp to the latest upstream version
85 lines
2.8 KiB
CMake
85 lines
2.8 KiB
CMake
# BuildPlugin.cmake - Copyright (c) 2008 Tobias Doerffel
|
|
#
|
|
# description: build LMMS-plugin
|
|
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> LINK <SHARED|MODULE>)
|
|
|
|
INCLUDE(GenQrc)
|
|
|
|
MACRO(BUILD_PLUGIN PLUGIN_NAME)
|
|
CMAKE_PARSE_ARGUMENTS(PLUGIN "" "" "MOCFILES;EMBEDDED_RESOURCES;UICFILES;LINK" ${ARGN})
|
|
SET(PLUGIN_SOURCES ${PLUGIN_UNPARSED_ARGUMENTS})
|
|
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include)
|
|
|
|
ADD_DEFINITIONS(-DPLUGIN_NAME=${PLUGIN_NAME})
|
|
|
|
LIST(LENGTH PLUGIN_EMBEDDED_RESOURCES ER_LEN)
|
|
IF(ER_LEN)
|
|
# Expand and sort arguments to avoid locale dependent sorting in
|
|
# shell
|
|
SET(NEW_ARGS)
|
|
FOREACH(ARG ${PLUGIN_EMBEDDED_RESOURCES})
|
|
FILE(GLOB EXPANDED "${ARG}")
|
|
LIST(SORT EXPANDED)
|
|
FOREACH(ITEM ${EXPANDED})
|
|
LIST(APPEND NEW_ARGS ${ITEM})
|
|
ENDFOREACH()
|
|
ENDFOREACH()
|
|
SET(PLUGIN_EMBEDDED_RESOURCES ${NEW_ARGS})
|
|
|
|
ADD_GEN_QRC(RCC_OUT "${PLUGIN_NAME}.qrc" PREFIX artwork/${PLUGIN_NAME} ${PLUGIN_EMBEDDED_RESOURCES})
|
|
ENDIF(ER_LEN)
|
|
|
|
IF(QT5)
|
|
QT5_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
|
|
QT5_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
|
|
ELSE()
|
|
QT4_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
|
|
QT4_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
|
|
ENDIF()
|
|
|
|
FOREACH(f ${PLUGIN_SOURCES})
|
|
ADD_FILE_DEPENDENCIES(${f} ${RCC_OUT} ${plugin_UIC_out})
|
|
ENDFOREACH(f)
|
|
|
|
IF(LMMS_BUILD_APPLE)
|
|
LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
|
|
LINK_LIBRARIES(${QT_LIBRARIES})
|
|
ENDIF(LMMS_BUILD_APPLE)
|
|
IF(LMMS_BUILD_WIN32)
|
|
LINK_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
|
|
LINK_LIBRARIES(${QT_LIBRARIES})
|
|
ENDIF(LMMS_BUILD_WIN32)
|
|
IF(LMMS_BUILD_MSYS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
# Override Qt debug libraries with release versions
|
|
SET(QT_LIBRARIES "${QT_OVERRIDE_LIBRARIES}")
|
|
ENDIF()
|
|
|
|
IF ("${PLUGIN_LINK}" STREQUAL "SHARED")
|
|
ADD_LIBRARY(${PLUGIN_NAME} SHARED ${PLUGIN_SOURCES} ${plugin_MOC_out} ${RCC_OUT})
|
|
ELSE ()
|
|
ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES} ${plugin_MOC_out} ${RCC_OUT})
|
|
ENDIF ()
|
|
|
|
IF(QT5)
|
|
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} Qt5::Widgets Qt5::Xml)
|
|
ENDIF()
|
|
IF(LMMS_BUILD_WIN32)
|
|
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} lmms)
|
|
ENDIF(LMMS_BUILD_WIN32)
|
|
|
|
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}")
|
|
|
|
IF(LMMS_BUILD_APPLE)
|
|
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/lmms")
|
|
ADD_DEPENDENCIES(${PLUGIN_NAME} lmms)
|
|
ENDIF(LMMS_BUILD_APPLE)
|
|
IF(LMMS_BUILD_WIN32)
|
|
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES PREFIX "")
|
|
ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} $<TARGET_FILE:${PLUGIN_NAME}>)
|
|
ENDIF(LMMS_BUILD_WIN32)
|
|
|
|
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${RCC_OUT} ${plugin_MOC_out}")
|
|
ENDMACRO(BUILD_PLUGIN)
|
|
|