### CMake: Installation Rules for non-timeline-xt Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Defines the installation rules for the non-timeline-xt executable and associated desktop file. It also handles the installation of helper scripts. ```cmake install (TARGETS non-timeline-xt RUNTIME DESTINATION bin) install (FILES non-timeline.desktop.in DESTINATION share/applications RENAME non-timeline-xt.desktop) install (PROGRAMS bin/import-external-sources.sh DESTINATION bin RENAME import-external-sources) install (PROGRAMS bin/remove-unused-sources.sh DESTINATION bin RENAME remove-unused-sources) ``` -------------------------------- ### Build Non-Timeline-XT with CMake (Default FLTK) Source: https://github.com/stazed/non-timeline-xt/blob/main/README.md Standard build process for Non-Timeline-XT using CMake. It creates a build directory, configures the project, compiles the code, and installs it. Assumes FLTK is the default build target. ```bash mkdir build cd build cmake .. make sudo make install ``` -------------------------------- ### Install 256x256 Pixmap Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/icons/CMakeLists.txt Installs a 256x256 pixmap file for the non-timeline-xt application. The file is renamed to 'icon-256x256.png' and placed in the 'share/pixmaps/non-timeline-xt' directory. ```cmake install (FILES hicolor/256x256/apps/non-timeline-xt.png DESTINATION share/pixmaps/non-timeline-xt RENAME icon-256x256.png) ``` -------------------------------- ### Install Hicolor Icon Theme Directory Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/icons/CMakeLists.txt Installs the entire 'hicolor' icon directory. This typically includes various icon sizes and categories, ensuring proper integration with desktop environments that use the hicolor theme. ```cmake install(DIRECTORY hicolor/ DESTINATION share/icons/hicolor) ``` -------------------------------- ### Build Non-Timeline-XT with CMake (NTK Enabled) Source: https://github.com/stazed/non-timeline-xt/blob/main/README.md Builds Non-Timeline-XT using CMake with the NTK library enabled. This requires specifying the '-DEnableNTK=ON' flag during the CMake configuration step. ```bash mkdir build cd build cmake -DEnableNTK=ON .. make sudo make install ``` -------------------------------- ### Clone Unofficial NTK Repository Source: https://github.com/stazed/non-timeline-xt/blob/main/README.md Clones the unofficial NTK repository from GitHub. This is an alternative method to obtain the NTK library if it's not available through your distribution's package manager. ```bash git clone https://Stazed@github.com/Stazed/ntk-unofficial.git ``` -------------------------------- ### Update Git Submodules Source: https://github.com/stazed/non-timeline-xt/blob/main/README.md Updates and initializes all Git submodules required for the project. This command is essential for fetching external dependencies managed as submodules. ```bash git submodule update --init ``` -------------------------------- ### Uninstall Non-Timeline-XT Source: https://github.com/stazed/non-timeline-xt/blob/main/README.md Removes the installed Non-Timeline-XT files from the system. This command should be run with superuser privileges. ```bash sudo make uninstall ``` -------------------------------- ### CMake Project Setup and Options Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Configures the CMake build system for the non-timeline-xt project. It sets the minimum required CMake version, project name, package version, and defines various build options including debugging, optimizations, SSE support, and toolkit usage. ```cmake cmake_minimum_required(VERSION 3.5.1...3.31.1) project (non-timeline-xt) set (PACKAGE_VERSION "2.0.6") set (CMAKE_SKIP_RULE_DEPENDENCY OFF) add_definitions(-D'VERSION="${PACKAGE_VERSION}"') add_definitions(-D'WEBSITE="https://github.com/Stazed/non-timeline-xt"') add_definitions(-D'PACKAGE="non-timeline-xt"') add_definitions(-D'PIXMAP_PATH="${CMAKE_INSTALL_PREFIX}/share/pixmaps"') add_definitions(-D'DOCUMENT_PATH="${CMAKE_INSTALL_PREFIX}/share/doc"') include(CheckCSourceCompiles) include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-msse2" SUPPORT_SSE) option (BuildForDebug "Include gdb debugging support" OFF) option (EnableOptimizations "Enable optimizations" ON) option (EnableSSE "Enable SSE (default=automatic check)" ON) option (EnableSSE2 "Enable SSE2 (default=automatic check)" ON) option (NativeOptimizations "Enable native CPU optimizations" ON) option (EnableNTK "Use NTK toolkit for build" OFF) option (EnableNTKStatic "Use NTK static libraries for build" OFF) option (EnableFLTKStatic "Build using FLTK static libraries" OFF) set(CMAKE_BUILD_TYPE "Release") set (BuildOptions_SSE "-msse -mfpmath=sse" CACHE STRING "SSE compiler options" ) set (BuildOptions_SSE2 "-msse -msse2 -mfpmath=sse" CACHE STRING "SSE2 compiler options" ) set (BuildOptions_Native "-march=native -mtune=native" CACHE STRING "Native compiler options" ) set (BuildOptionsBasic "-std=c++11 -Wno-unused-parameter -Wno-unused-result -O3 -fomit-frame-pointer -ffast-math -pipe" CACHE STRING "basic X86 complier options" ) set (BuildOptionsDebug "-std=c++11 -Wno-cast-function-type -O0 -g3 -ggdb -Wall -Wextra -Wpointer-arith" ) ``` -------------------------------- ### Build Non-Timeline-XT with CMake (Disable Native Optimizations) Source: https://github.com/stazed/non-timeline-xt/blob/main/README.md Configures the CMake build for package maintainers, disabling native optimizations to ensure compatibility across different architectures. This is achieved by setting '-DNativeOptimizations=OFF'. ```bash cmake -DNativeOptimizations=OFF .. make sudo make install ``` -------------------------------- ### Trim Region Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Adjusts the start or end point of a region. Trimming from the left is done with Shift + click, and from the right with Shift + right-click. Specific shortcuts exist for trimming to the playhead. ```User Interface Shift + Left-click drag: Trim region start. Shift + Right-click drag: Trim region end. {: Trim region from left to playhead. }: Trim region from right to playhead. ``` -------------------------------- ### Project Management and File Operations Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Demonstrates basic project management operations, including renaming projects and managing external audio sources. It also shows a script for cleaning up unused audio sources across multiple projects. ```Shell $ mv Project-A Project-B # Import all external sources for a project import-external-sources # Remove unused sources from a project remove-unused-sources "" # Clean up many projects in parallel for i in ~/projects/*; do remove-unused-sources "$i" & done ``` -------------------------------- ### CMake Project Configuration Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Sets up the project name and lists all source files for the non-timeline-xt executable. This includes C++ source files from various directories like '../nonlib', '../FL', and 'src'. ```cmake project (non-timeline-xt) set (ProgSources ../nonlib/JACK/Client.C ../nonlib/JACK/Port.C ../nonlib/Log_Entry.C ../nonlib/Loggable.C ../nonlib/NSM/Client.C ../nonlib/OSC/Endpoint.C ../nonlib/Thread.C ../nonlib/debug.C ../nonlib/dsp.C ../nonlib/file.C ../nonlib/string_util.C ../FL/About_Dialog.C ../FL/Fl_Menu_Settings.C ../FL/Fl_Scalepack.C ../FL/Fl_Text_Edit_Window.C ../FL/New_Project_Dialog.C ../FL/menu_popup.C ../FL/test_press.C ../FL/focus_frame.C src/Annotation_Region.C src/Audio_Region.C src/Audio_Sequence.C src/Control_Point.C src/Control_Sequence.C src/Cursor_Point.C src/Cursor_Region.C src/Cursor_Sequence.C src/Engine/Audio_File.C src/Engine/Audio_File_Dummy.C src/Engine/Audio_File_SF.C src/Engine/Audio_Region.C src/Engine/Audio_Sequence.C src/Engine/Control_Sequence.C src/Engine/Disk_Stream.C src/Engine/Engine.C src/Engine/Peaks.C src/Engine/Playback_DS.C src/Engine/Record_DS.C src/Engine/Timeline.C src/Engine/Track.C src/NSM.C src/OSC_Transmit_Thread.C src/OSC_Receive_Thread.C src/Project.C src/Region_Volume_Editor.C src/Sequence.C src/Sequence_Point.C src/Sequence_Region.C src/Sequence_Widget.C src/TLE.C src/Track_Header.C src/Tempo_Point.C src/Tempo_Sequence.C src/Time_Point.C src/Time_Sequence.C src/Timeline.C src/Track.C src/Transport.C src/Waveform.C src/main.C ) add_executable (non-timeline-xt ${ProgSources}) ``` -------------------------------- ### NTK Dynamic Build Libraries and Includes Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Configures the external libraries and include directories for a dynamic NTK build. It links against NTK-specific libraries, JACK, sndfile, liblo, and sets private include directories. ```cmake if(EnableNTK) set(ExternLibraries ${NTK_IMAGES_LIBRARIES} ${NTK_LIBRARIES} ${JACK_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${SNDFILE_LIBRARIES} ${LIBLO_LIBRARIES} dl m ) target_include_directories ( non-timeline-xt PRIVATE ${NTK_INCLUDE_DIRS} ${JACK_INCLUDE_DIRS} ${SNDFILE_INCLUDE_DIRS} ${LIBLO_INCLUDE_DIRS} ) else(EnableNTK) ``` -------------------------------- ### NTK Static Build Libraries and Includes Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Configures the external libraries and include directories for a static NTK build. It links against libraries like fontconfig, JACK, sndfile, X11, liblo, and others, and sets private include directories. ```cmake if(EnableNTKStatic) set(ExternLibraries ${FONTCONFIG_LIBRARIES} ${JACK_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${SNDFILE_LIBRARIES} ${X11_LIBRARIES} ${LIBLO_LIBRARIES} ${XFT_LIBRARIES} ${XRENDER_LIBRARIES} ${XINERAMA_LIBRARIES} cairo Xcursor Xfixes jpeg png dl m ) target_include_directories ( non-timeline-xt PRIVATE ${NTK_INCLUDE_DIRS} ${FONTCONFIG_INCLUDE_DIRS} ${JACK_INCLUDE_DIRS} ${SNDFILE_INCLUDE_DIRS} ${LIBLO_INCLUDE_DIRS} ${XFT_INCLUDE_DIRS} ${XRENDER_INCLUDE_DIRS} ${XINERAMA_INCLUDE_DIRS} ) else(EnableNTKStatic) ``` -------------------------------- ### Playback and Punch Cursor Creation Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Shortcuts for creating playback and punch cursors based on the edit cursor's position and dimensions. ```APIDOC Ctrl+Shift+L: Set the playback cursor to match the edit cursor's dimensions and position. Ctrl+Shift+P: Define a new Punch Cursor with the same dimensions and position as the Edit Cursor. ``` -------------------------------- ### Timeline Navigation - Playhead Movement Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Shortcuts for moving the playhead within a sequence. Allows for beat-level and bar-level movement, as well as snapping to the beginning of objects. ```APIDOC Shift+Left / Shift+Right: Move playhead backward/forward one beat. Ctrl+Shift+Left / Ctrl+Shift+Right: Move playhead backward/forward by bars. Ctrl+Left: Move playhead to the beginning of the current or previous object in the sequence. Ctrl+Right: Move playhead to the beginning of the next object in the sequence. ``` -------------------------------- ### Find libm library Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Searches for the math library (`libm`). If found, its path is displayed; otherwise, the build terminates with a fatal error. ```cmake find_library (LIBM m) if (LIBM) message(STATUS "Found m in ${LIBM}") else (LIBM) message(FATAL_ERROR "m required but not found") endif (LIBM) ``` -------------------------------- ### FLTK Dynamic Build Libraries and Includes Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Configures the external libraries for a dynamic FLTK build. It links against FLTK libraries, libCAIRO, JACK, sndfile, and liblo. ```cmake set(ExternLibraries ${FLTK_LIBRARIES} ${FLTK_IMAGES_LIBRARY} ${LIBCAIRO_LIBRARIES} ${JACK_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${SNDFILE_LIBRARIES} ${LIBLO_LIBRARIES} dl m ) ``` -------------------------------- ### NTK Static Library Configuration Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Configures the build to use a statically linked NTK library, including finding static libraries for NTK and NTK images, and checking for related dependencies like JPEG, Xfixes, Xinerama, Fontconfig, Xft, Xrender, and Xcursor. ```cmake if(EnableNTKStatic) find_library(NTK_STATIC NAMES libntk.a libntk.a.1 libntk.a.1.3.1001 PATHS /usr/local/lib /usr/local/lib64 REQUIRED) find_library(NTK_STATIC_IMAGES NAMES libntk_images.a libntk_images.a.1 libntk_images.a.1.3.1001 PATHS /usr/local/lib /usr/local/lib64 REQUIRED) pkg_check_modules(NTK ntk REQUIRED) find_package(JPEG REQUIRED) pkg_check_modules(XFIXES REQUIRED xfixes) pkg_check_modules(XINERAMA REQUIRED xinerama) pkg_check_modules(FONTCONFIG REQUIRED fontconfig>=0.22) pkg_check_modules(XFT REQUIRED xft) pkg_check_modules(XRENDER REQUIRED xrender) pkg_check_modules(XCURSOR REQUIRED xcursor) add_definitions(-D'BUILD_TYPE="Built with NTK static Library"') else(EnableNTKStatic) ``` -------------------------------- ### FLTK Static Build Libraries and Includes Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Configures the external libraries and include directories for a static FLTK build. It links against FLTK, libCAIRO, JACK, sndfile, liblo, fontconfig, X11, and other related libraries, including 'z' for FLTK 1.4. ```cmake if(EnableFLTKStatic) set(ExternLibraries ${LIBCAIRO_LIBRARIES} ${JACK_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${SNDFILE_LIBRARIES} ${X11_LIBRARIES} ${LIBLO_LIBRARIES} ${FONTCONFIG_LIBRARIES} ${XFT_LIBRARIES} ${XRENDER_LIBRARIES} ${XINERAMA_LIBRARIES} fontconfig Xcursor Xfixes jpeg png dl m z # needed for fltk-1.4 static build ) target_include_directories ( non-timeline-xt PRIVATE ${FLTK_INCLUDE_DIR} ${LIBCAIRO_INCLUDE_DIRS} ${JACK_INCLUDE_DIRS} ${SNDFILE_INCLUDE_DIRS} ${LIBLO_INCLUDE_DIRS} ${FONTCONFIG_INCLUDE_DIRS} ${XFT_INCLUDE_DIRS} ${XRENDER_INCLUDE_DIRS} ${XINERAMA_INCLUDE_DIRS} ) else(EnableFLTKStatic) ``` -------------------------------- ### Conditional Build Configurations (NTK/FLTK) Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt This snippet handles conditional compilation based on the `EnableNTKStatic`, `EnableNTK`, and `EnableFLTKStatic` flags. It prints build status messages and defines specific source files for FLTK builds. ```cmake if(EnableNTKStatic) message (STATUS "USING NTK STATIC BUILD") else(EnableNTKStatic) if(EnableNTK) message (STATUS "USING NTK DYNAMIC BUILD") else(EnableNTK) #FLTK message (STATUS "USING FLTK BUILD") set(FLTK_specific ../FL/Fl_Panzoomer.C ../FL/Fl_Theme_Chooser.cxx ../FL/Fl_Theme.cxx ../FL/GTK_Theme.cxx ../FL/Clean_Theme.cxx ../FL/Crystal_Theme.cxx ../FL/Gleam_Theme.cxx ../FL/Vector_Theme.cxx ../FL/themes.cxx ) endif(EnableNTK) endif(EnableNTKStatic) ``` -------------------------------- ### FLTK Dynamic Library Configuration and Integration Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Finds the FLTK package and integrates it into the build. It also checks for the Cairo library and sets advanced variables related to FLTK for better CMake integration. ```cmake find_package(FLTK REQUIRED) pkg_check_modules (LIBCAIRO REQUIRED cairo) if(FLTK_FOUND) mark_as_advanced(FORCE FLTK_BASE_LIBRARY) mark_as_advanced(FORCE FLTK_CONFIG_SCRIPT) mark_as_advanced(FORCE FLTK_DIR) mark_as_advanced(FORCE FLTK_FLUID_EXECUTABLE) mark_as_advanced(FORCE FLTK_FORMS_LIBRARY) mark_as_advanced(FORCE FLTK_GL_LIBRARY) mark_as_advanced(FORCE FLTK_IMAGES_LIBRARY) mark_as_advanced(FORCE FLTK_INCLUDE_DIR) mark_as_advanced(FORCE FLTK_MATH_LIBRARY) add_definitions(-D'FLTK_SUPPORT=1') # FLTK 1-3 endif(FLTK_FOUND)) ``` -------------------------------- ### FLTK Static Library Configuration Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Configures the build to use a statically linked FLTK library, finding static libraries for FLTK and FLTK images, and checking for related dependencies like Xfixes, Xinerama, Fontconfig, Xft, and Xrender. ```cmake SET(FLTK_SKIP_OPENGL TRUE) if(EnableFLTKStatic) find_library(FLTK_STATIC libfltk.a REQUIRED) find_library(FLTK_STATIC_IMAGES libfltk_images.a REQUIRED) pkg_check_modules(XFIXES REQUIRED xfixes) pkg_check_modules(XINERAMA REQUIRED xinerama) pkg_check_modules(FONTCONFIG REQUIRED fontconfig>=0.22) pkg_check_modules(XFT REQUIRED xft) pkg_check_modules(XRENDER REQUIRED xrender) add_definitions(-D'BUILD_TYPE="Built with FLTK static library"') else(EnableFLTKStatic) add_definitions(-D'BUILD_TYPE="Built with FLTK Library"') endif(EnableFLTKStatic) ``` -------------------------------- ### NTK Dynamic Library Configuration Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Configures the build to use a dynamically linked NTK library, checking for NTK and NTK_IMAGES packages. ```cmake if(EnableNTK) pkg_check_modules(NTK ntk REQUIRED) pkg_check_modules(NTK_IMAGES ntk_images REQUIRED) add_definitions(-D'BUILD_TYPE="Built with NTK Library"') if(EnableNTKStatic) find_library(NTK_STATIC NAMES libntk.a libntk.a.1 libntk.a.1.3.1001 PATHS /usr/local/lib /usr/local/lib64 REQUIRED) find_library(NTK_STATIC_IMAGES NAMES libntk_images.a libntk_images.a.1 libntk_images.a.1.3.1001 PATHS /usr/local/lib /usr/local/lib64 REQUIRED) pkg_check_modules(NTK ntk REQUIRED) find_package(JPEG REQUIRED) pkg_check_modules(XFIXES REQUIRED xfixes) pkg_check_modules(XINERAMA REQUIRED xinerama) pkg_check_modules(FONTCONFIG REQUIRED fontconfig>=0.22) pkg_check_modules(XFT REQUIRED xft) pkg_check_modules(XRENDER REQUIRED xrender) pkg_check_modules(XCURSOR REQUIRED xcursor) add_definitions(-D'BUILD_TYPE="Built with NTK static Library"') endif(EnableNTKStatic) else(EnableNTK) ``` -------------------------------- ### Dependency Management with PkgConfig Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Finds and checks required packages using PkgConfig, including Threads, JACK, liblo, and sndfile. It also conditionally sets compile options for threading. ```cmake find_package (PkgConfig REQUIRED) #dependencies find_package(Threads REQUIRED) if(THREADS_HAVE_PTHREAD_ARG) set_property(TARGET non-timeline-xt PROPERTY COMPILE_OPTIONS "-pthread") set_property(TARGET non-timeline-xt PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") endif() pkg_check_modules(JACK REQUIRED jack>=0.115.6) pkg_check_modules(LIBLO liblo>=0.26 REQUIRED) pkg_check_modules(SNDFILE REQUIRED sndfile) ``` -------------------------------- ### Find libdl library Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Locates the dynamic linking library (`libdl`). If found, its path is reported; otherwise, the build fails with a fatal error. ```cmake find_library (LIBDL dl) if (LIBDL) message(STATUS "Found dl in ${LIBDL}") else (LIBDL) message(FATAL_ERROR "dl required but not found") endif (LIBDL) ``` -------------------------------- ### Displaying Build Status in CMake Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Demonstrates how to use the `message(STATUS ...)` command to output build information. It shows how to display the build type and conditionally display compiler flags based on whether the build is for debug or release. ```cmake package_status(BuildForDebug "Build for debug. . . . . . . . . . . . . . . . . . . . .:" ) message (STATUS) message (STATUS) message (STATUS "Building for ${CMAKE_BUILD_TYPE}") if (BuildForDebug) message (STATUS "Flags: ${CMAKE_CXX_FLAGS_DEBUG}") else (BuildForDebug) message (STATUS "Flags: ${CMAKE_CXX_FLAGS_RELEASE}") endif (BuildForDebug) ``` -------------------------------- ### CMake: Linking Libraries for non-timeline-xt Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Specifies the libraries to link against the non-timeline-xt target, conditionally based on whether static FLTK is enabled. It also includes external libraries. ```cmake if(EnableFLTKStatic) target_link_libraries (non-timeline-xt ${FLTK_STATIC} ${FLTK_STATIC_IMAGES} ${ExternLibraries}) else(EnableFLTKStatic) # NTK if(EnableNTKStatic) target_link_libraries (non-timeline-xt ${NTK_STATIC} ${NTK_STATIC_IMAGES} ${ExternLibraries}) else(EnableNTKStatic) # NTK dynamic target_link_libraries (non-timeline-xt ${ExternLibraries}) endif(EnableNTKStatic) endif(EnableFLTKStatic) ``` -------------------------------- ### CMake Build Configuration and Status Reporting Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Configures the build process, including setting build types (Debug/Release), enabling optimizations (SSE, SSE2, Native), and checking for various library dependencies. It also includes a macro to report the status of found packages and user options. ```cmake if(NOT TARGET uninstall) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) endif() mark_as_advanced (CMAKE_BUILD_TYPE) mark_as_advanced (CMAKE_INSTALL_PREFIX) mark_as_advanced (LIBDL) mark_as_advanced (LIBM) if (BuildForDebug) set (CMAKE_BUILD_TYPE "Debug") set (CMAKE_CXX_FLAGS_DEBUG ${BuildOptionsDebug}) else (BuildForDebug) set (CMAKE_BUILD_TYPE "Release") set (CMAKE_CXX_FLAGS_RELEASE ${BuildOptionsBasic}) add_definitions(-D'NDEBUG=1') if(EnableOptimizations) if (SUPPORT_SSE) if(EnableSSE) if(EnableSSE2) set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_SSE2}") set (USE_SSE2 "${SUPPORT_SSE}") set (USE_SSE "${SUPPORT_SSE}") #uses both else(EnableSSE2) set (USE_SSE "${SUPPORT_SSE}") set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_SSE}") endif(EnableSSE2) endif(EnableSSE) endif (SUPPORT_SSE) if(BuildOptions_Native) set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_Native}") set (USE_NATIVE "") endif(BuildOptions_Native) else(EnableOptimizations) set (USE_SSE2 "") set (USE_SSE "") endif(EnableOptimizations) endif (BuildForDebug) add_definitions(-D'BUILD_TYPE_CMAKE="${CMAKE_BUILD_TYPE}"') add_subdirectory(timeline) add_subdirectory(timeline/icons) add_subdirectory(timeline/doc) ##Summarize The Full Configuration message(STATUS) message(STATUS "=========================================================") message(STATUS "Build Configuration for non-timeline-xt-${PACKAGE_VERSION} for ${CMAKE_SYSTEM_NAME}") message(STATUS "=========================================================") message(STATUS) macro(package_status foundvar pkg) if(${foundvar}) message(STATUS "${pkg} Yes") else() message(STATUS "${pkg} No") endif() endmacro() message (STATUS "___________________ Optimizations________________________" ) package_status(USE_SSE "Use sse. . . . . . . . . . . . . . . . . . . . . . . . .:") package_status(USE_SSE2 "Use sse2 . . . . . . . . . . . . . . . . . . . . . . . .:") message (STATUS) message (STATUS "______________________Library____________________________" ) package_status(PKG_CONFIG_FOUND "PkgConfig. . . . . . . . . . . . . . . . . . . . . . . .:") package_status(FLTK_FOUND "FLTK toolkit . . . . . . . . . . . . . . . . . . . . . .:") package_status(NTK_FOUND "NTK toolkit. . . . . . . . . . . . . . . . . . . . . . .:") package_status(LIBCAIRO_FOUND "Cairo support. . . . . . . . . . . . . . . . . . . . . .:") package_status(Threads_FOUND "pthread support (libpthread) . . . . . . . . . . . . . .:") package_status(MLOCK "mlock support. . . . . . . . . . . . . . . . . . . . . .:") package_status(LIBM "libm support . . . . . . . . . . . . . . . . . . . . . .:") package_status(LIBDL "libdl support. . . . . . . . . . . . . . . . . . . . . .:") package_status(JACK_FOUND "JACK Audio Connection Kit library. . . . . . . . . . . .:") package_status(SNDFILE_FOUND "General audio file (libsndfile). . . . . . . . . . . . .:") package_status(LIBLO_FOUND "Liblo support. . . . . . . . . . . . . . . . . . . . . .:") package_status(JACK_METADATA "Jack metadata support. . . . . . . . . . . . . . . . . .:") package_status(JACK_LATENCY_RANGE "Jack port latency range support. . . . . . . . . . . . .:") package_status(HAVE_BUILTIN_ALIGNED "Has builtin assume aligned . . . . . . . . . . . . . . .:") package_status(HAS_SF_FORMAT_VORBIS "Have SF format vorbis. . . . . . . . . . . . . . . . . .:") message (STATUS) message (STATUS "____________________ User Options________________________" ) package_status(EnableOptimizations "Use optimizations. . . . . . . . . . . . . . . . . . .:") package_status(EnableSSE "Use sse. . . . . . . . . . . . . . . . . . . . . . . . .:") package_status(EnableSSE2 "Use sse2 . . . . . . . . . . . . . . . . . . . . . . . .:") package_status(EnableNTK "Enable NTK build . . . . . . . . . . . . . . . . . . . .:") package_status(EnableNTKStatic "Enable NTK Static build. . . . . . . . . . . . . . . . .:") package_status(EnableFLTKStatic "Enable FLTK Static build . . . . . . . . . . . . . . . .:") package_status(NativeOptimizations "Native optimizations . . . . . . . . . . . . . . . . . .:") ``` -------------------------------- ### CMake: Include Directories for non-timeline-xt Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/CMakeLists.txt Configures the include directories for the non-timeline-xt target, including project-specific and external library paths. This is crucial for the compiler to find header files. ```cmake target_include_directories ( non-timeline-xt PRIVATE ${FLTK_INCLUDE_DIR} ${LIBCAIRO_INCLUDE_DIRS} ${JACK_INCLUDE_DIRS} ${SNDFILE_INCLUDE_DIRS} ${LIBLO_INCLUDE_DIRS} ) ``` -------------------------------- ### Nudge Regions Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Provides fine-grained movement of selected audio regions using arrow keys, with modifier keys for panning adjustments. ```User Interface ALT+Left/Right Arrows: Nudge selected audio regions. ALT+Shift+Left/Right Arrows: Nudge pan of selected regions. ``` -------------------------------- ### Control Sequence Output Modes Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Explains the two output modes for control sequences: Control Voltage (JACK) and Control Signal (OSC). Control Voltage simulates analog signals for controlling external equipment, while Control Signal uses OSC for efficient parameter automation within Non-Mixer-XT. ```APIDOC Control Sequence Output Modes: 1. Control Voltage (JACK): - Simulates analog control voltages. - Creates a JACK output port. - Useful for controlling analog-compatible equipment like Non-Mixer-XT and SpiralSynthModular. 2. Control Signal (OSC): - Uses a signal routing layer over OSC. - Intelligently discovers and controls Non-Mixer-XT module parameters. - More efficient for automating a large number of parameters. - Output can be connected to multiple Control Signal inputs. ``` -------------------------------- ### Add Annotation Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Allows adding annotation sequences or points to tracks for marking lyrics, cues, or points of interest. Annotations can have durations and editable text. ```User Interface Right-click track header -> Add annotation: Add annotation sequence. Click empty space in sequence: Add annotation point. Right-click annotation point: Rename annotation. Shift + Right-click drag: Create annotation region of given duration. ``` -------------------------------- ### JACK Metadata and Latency Range Feature Checks Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Uses `CheckSymbolExists` to determine if JACK metadata and latency range functions are available in the JACK library. If found, it defines corresponding preprocessor macros. ```cmake include(CheckSymbolExists) set(CMAKE_REQUIRED_LIBRARIES "jack") check_symbol_exists(jack_get_property "jack/metadata.h" JACK_METADATA) if(JACK_METADATA) add_definitions(-D'HAVE_JACK_METADATA=1') message(STATUS "Found jack metadata") else(JACK_METADATA) message(STATUS "Jack metadata not found") endif(JACK_METADATA) check_symbol_exists(jack_port_get_latency_range "jack/jack.h" JACK_LATENCY_RANGE) if(JACK_LATENCY_RANGE) add_definitions(-D'HAVE_JACK_PORT_GET_LATENCY_RANGE=1') ``` -------------------------------- ### Edit Cursor Manipulation Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Commands for manipulating the edit cursor, used for defining regions for operations. Includes setting cursor boundaries and creating cursors from regions. ```APIDOC Ctrl+[: Move the beginning of the edit cursor to the playhead position. Ctrl+]: Move the end of the edit cursor to the playhead position. Hold 'r' and left-click+drag: Set both edit cursor ends simultaneously. CTRL+R: Set the edit cursor range to any focused region range. ``` -------------------------------- ### Check for SF_FORMAT_VORBIS Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Verifies the availability of `SF_FORMAT_VORBIS` from the `sndfile.h` library. If found, it defines `HAVE_SF_FORMAT_VORBIS` to indicate support. ```cmake CHECK_CXX_SOURCE_COMPILES( "#include \nint main ( char **argv, int argc ) {\n return SF_FORMAT_VORBIS; }" HAS_SF_FORMAT_VORBIS) if(HAS_SF_FORMAT_VORBIS) add_definitions(-D'HAVE_SF_FORMAT_VORBIS=1') endif(HAS_SF_FORMAT_VORBIS) ``` -------------------------------- ### Debug Build Flags Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Sets compiler flags for a debug build, including optimization levels, debugging symbols, warnings, and architecture-specific settings. ```cmake set(CMAKE_CXX_FLAGS "-std=c++11 -Wno-cast-function-type -Wno-unused-result -O0 -g3 -ggdb -Wall -Wextra -Wpointer-arith -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer") CACHE STRING "Debug build flags" ``` -------------------------------- ### Control Point Editing Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Details methods for editing control points within a control sequence. Includes vertical dragging, multi-point selection, nudging with arrow keys, and alignment. ```APIDOC Editing Control Points: - Vertical Dragging (Fixed Horizontal Axis): Hold ALT + Left Mouse Button. - Multi-Point Selection: Use Ctrl + Left Mouse Button for box select. - Vertical Dragging of Multiple Points: Select multiple points, then hold ALT + Left Mouse Button to drag vertically, aligning points with equal intensity. - Moving Multiple Points: Select multiple points and drag without modifiers to move on a fixed vertical axis. - Nudging Points: Use Arrow Keys for small increments. Use ALT + Left/Right/Up/Down Arrows for nudging selected points. ``` -------------------------------- ### Interpolation Modes Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Describes the interpolation modes for control sequences: None and Linear. 'None' mode outputs discrete jumps at control points, useful for instantaneous changes. 'Linear' mode creates a continuously varying signal between control points. ```APIDOC Interpolation Mode: - None: - Outputs discrete jumps in value when the playhead passes each Control Point. - Useful for instantaneous changes like muting or mode changes. - Linear: - Transforms control points into a continuously varying signal between them. ``` -------------------------------- ### Pan Region Audio Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Allows panning the audio source behind a stationary region, useful for loops. Nudging is also supported for selected regions. ```User Interface Ctrl+Shift + Drag region: Pan audio source behind region. ALT+Shift+Left/Right Arrows: Nudge pan of selected regions. ``` -------------------------------- ### Automation Editing Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Controls for editing automation data, including output modes for control signals and interpolation methods for control points. ```APIDOC Output Mode: Control Voltage: Set automation to control voltage signals. Control Signal: Set automation to control general signals. Interpolation Mode: Define how automation values change between control points. Editing Control Points: Add, move, delete, or modify automation control points. ``` -------------------------------- ### Set Region Volume Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Opens a volume editor for the focused region, allowing manual volume setting. Clipping is indicated by red peaks. ```User Interface 'V' key: Open volume editor for focused region. ``` -------------------------------- ### Duplicate Region Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Creates a copy of a selected region by dragging it with the Ctrl key held down. ```User Interface Ctrl + Drag region: Duplicate region. ``` -------------------------------- ### Denormalize Region Volume Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Resets the region's volume to its original recorded level (1.0). ```User Interface Shift+N: Reset region volume to default. ``` -------------------------------- ### Adjust Region Gain Drag Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Enables interactive adjustment of a region's gain level by dragging up or down. ```User Interface G + Left-click drag up/down: Adjust region gain. ``` -------------------------------- ### Loop Region Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Enables looping of a region by setting a loop point. The region will repeat the portion before the loop point during playback. ```User Interface Adjust region duration, then 'L' key at desired loop point: Set loop point. ``` -------------------------------- ### Check for __builtin_assume_aligned Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Checks if the C++ compiler supports the `__builtin_assume_aligned` intrinsic. If supported, it defines `HAS_BUILTIN_ASSUME_ALIGNED` for use in the build. ```cmake CHECK_CXX_SOURCE_COMPILES( "int main ( char**argv, int argc ) {\n const char *s = (const char*)\n __builtin_assume_aligned( 0, 16 );\n return 0; }" HAVE_BUILTIN_ALIGNED) if(HAVE_BUILTIN_ALIGNED) add_definitions(-D'HAS_BUILTIN_ASSUME_ALIGNED=1') endif(HAVE_BUILTIN_ALIGNED) ``` -------------------------------- ### Set Region Fade Curves Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Allows setting fade-in and fade-out curves for regions. Various curve types are available via the context menu. ```User Interface F3: Set fade-in duration. F4: Set fade-out duration. Right-click region: Access context menu for curve types (Linear, Sigmoid, Logarithmic, Parabolic). ``` -------------------------------- ### Region Editing Operations Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Common operations for editing regions within the timeline, including manipulation, duplication, deletion, and audio processing. ```APIDOC Split: Divide a region into multiple parts. Duplicate: Create an exact copy of a region. Delete: Remove a region. Trim: Adjust the start or end of a region. Crop: Remove content outside the defined region boundaries. Pan: Adjust the stereo panning of audio within a region. Set Volume: Modify the volume level of a region. Gain Drag: Adjust the gain of selected regions. Denormalize: Revert volume changes applied by normalization. Fade: Apply fade-in or fade-out effects to a region. Loop: Create a repeating playback of a region. Nudging: Fine-tune the position of regions. ``` -------------------------------- ### Check for mlock symbol Source: https://github.com/stazed/non-timeline-xt/blob/main/CMakeLists.txt Determines if the `mlock` function is available in `sys/mman.h`. If the symbol exists, `HAVE_MLOCK` is defined; otherwise, a status message is printed. ```cmake check_symbol_exists(mlock "sys/mman.h" MLOCK) if(MLOCK) add_definitions(-D'HAVE_MLOCK=1') else (MLOCK) message(STATUS "mlock not found") endif (MLOCK) ``` -------------------------------- ### Split Region Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Divides a selected region at the mouse pointer position or the transport play line. Requires the region to be focused. ```User Interface Shift+Middle-click or 'S' key: Split region at mouse pointer. Shift+S: Split region at transport play line. ``` -------------------------------- ### Normalize Region Gain Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Adjusts the region's gain to the maximum level without exceeding the audio dynamic range (-1 to +1). Peaks exceeding this range are shown in red. ```User Interface 'N' key or Ctrl+Middle-click: Normalize region. ``` -------------------------------- ### Crop Region Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Crops a focused region to the range defined by the Edit Cursor. The Edit Cursor region must overlap the focused region for this operation to succeed. ```User Interface 'C' key: Crop focused region to Edit Cursor range. ``` -------------------------------- ### Delete Region Source: https://github.com/stazed/non-timeline-xt/blob/main/timeline/doc/MANUAL.html Removes a selected region or selection from the timeline using a keyboard shortcut. ```User Interface Ctrl + Right-click: Remove region or selection. ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.