Skip to content

Commit

Permalink
changed sample rate handling and library search algorithm
Browse files Browse the repository at this point in the history
  • Loading branch information
prof-spock committed Mar 4, 2024
1 parent d094898 commit 0e1b5a6
Show file tree
Hide file tree
Showing 1,325 changed files with 54,704 additions and 43,215 deletions.
Binary file modified FluidSynthPlugin-documentation.pdf
Binary file not shown.
18 changes: 12 additions & 6 deletions buildSetup/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Dr. Thomas Tensi, 2022-04 #
###############################################

CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)

PROJECT(FluidSynthPlugin
VERSION 1.0
Expand Down Expand Up @@ -38,7 +38,7 @@ ELSE()
ENDIF()

# --- compiler ---
SET(CMAKE_CXX_STANDARD 17)
SET(CMAKE_CXX_STANDARD 20)
SET(CMAKE_CXX_STANDARD_REQUIRED True)
INCLUDE(CPPCompilerConfiguration.cmake)

Expand Down Expand Up @@ -323,6 +323,9 @@ SET(docDoxygenFileName FluidSynthPlugin-doxygen-FULL.cfg)
IF(WINDOWS)
SET(regressionTestFileList ${testFileDirectory}/makeTestFiles.bat)
ELSE()
CONFIGURE_FILE(${testFileDirectory}/makeTestFiles.sh.in
${testFileDirectory}/makeTestFiles.sh
@ONLY)
SET(regressionTestFileList ${testFileDirectory}/makeTestFiles.sh)
ENDIF()

Expand All @@ -331,7 +334,9 @@ SET(regressionTestFileList
${testFileDirectory}/test_bass.mid
${testFileDirectory}/test_drums.mid
${testFileDirectory}/test_keyboard.mid
${testFileDirectory}/testFluidSynth.rpp)
${testFileDirectory}/SimpleTestSoundfont.sf2
${testFileDirectory}/testFluidSynth-44100.rpp
${testFileDirectory}/testFluidSynth-48000.rpp)

# --- Windows specific files ---
IF(MSVC)
Expand Down Expand Up @@ -373,6 +378,8 @@ ELSE()
"/Applications/Xcode.app/Contents/Developer")
SET(appSdkDirectory
${appDevelopDirectory}/Platforms/MacOSX.platform/Developer/SDKs)
SET(audioUnitSdkDirectory
${appSdkDirectory}/MacOSX.sdk/System/Library/Frameworks/AudioUnit.framework)

# make definition string from elements in
# manufacturerAndSuiteDefineClauseList
Expand All @@ -386,13 +393,12 @@ ELSE()
SET(rezIncludeDirectoryList
-i "/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers"
-i ${appDevelopDirectory}/CoreAudio/AudioUnits/AUPublic/AUBase
-i ${appSdkDirectory}/MacOSX.sdk/System/Library/Frameworks/AudioUnit.framework/Headers
-i ${juceModulesDirectory}/juce_audio_processors/format_types/VST3_SDK
-i ${juceModulesDirectory}
-i ${srcFluidSynthPluginDirectory}
-i ${srcJuceFacadeDirectory}
-i ${juceModulesDirectory}/juce_audio_plugin_client
-isysroot ${appSdkDirectory}/MacOSX10.15.sdk)
-isysroot ${appSdkDirectory}/MacOSX.sdk)
ENDIF(NOT MACOSX)

# #################
Expand Down Expand Up @@ -687,7 +693,7 @@ ENDFUNCTION(makeLaTeXDocumentationTarget)
INCLUDE_DIRECTORIES(${standardIncludeDirectoryList})

# compile with logging enabled globally for a debug configuration
# ADD_COMPILE_DEFINITIONS($<$<CONFIG:Debug>:LOGGING_IS_ACTIVE>)
ADD_COMPILE_DEFINITIONS($<$<CONFIG:Debug>:LOGGING_IS_ACTIVE>)

# ==================================
# === intermediate library files ===
Expand Down
48 changes: 30 additions & 18 deletions buildSetup/CPPCompilerConfiguration.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ IF(MACOSX)
JucePlugin_AUManufacturerCode=JucePlugin_ManufacturerCode)

ENABLE_LANGUAGE(OBJC)
SET(CMAKE_CXX_STANDARD_REQUIRED False)
ENDIF(MACOSX)

IF(LINUX)
Expand All @@ -121,15 +120,17 @@ SET(cppDefineClauseList
# --- define flags per compiler ---
IF(MSVC)
# --- list of warning number to be ignored
SET(warningNumberList
SET(ignoredWarningNumberList
4100 4180 4244 4505 4723 5105 6011 6255 6297
26439 26451 26495 26498 26812 26819 28182)

SET(ignoredWarningNumberListRelease
4189)

# select static MSVC library instead of dynamic library
# SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")

STRING(JOIN " " cppFlagsCommon
/arch:AVX # enable AVX vectorization instructions
/bigobj # increase number of addressable sections
/diagnostics:column # format of diagnostics message
/EHsc # exception handling: stack unwinding
Expand All @@ -145,8 +146,8 @@ IF(MSVC)
/Zc:wchar_t # wchar is native
)

# --- disable all warnings in warningNumberList ---
FOREACH(warningNumber ${warningNumberList})
# --- disable all warnings in ignoredWarningNumberList ---
FOREACH(warningNumber ${ignoredWarningNumberList})
STRING(APPEND cppFlagsCommon " /wd${warningNumber}")
ENDFOREACH()

Expand All @@ -163,6 +164,10 @@ IF(MSVC)
/Gw # global program optimization
)

FOREACH(warningNumber ${ignoredWarningNumberListRelease})
STRING(APPEND cppFlagsRelease " /wd${warningNumber}")
ENDFOREACH()

STRING(JOIN " " cppFlagsReleaseWithDebugInfo
/DDEBUG # debugging
/Od # no optimization
Expand All @@ -178,19 +183,21 @@ IF(MSVC)
)
ELSE()
STRING(JOIN " " cppFlagsCommon
-ffast-math # fast floating point calculation
-mavx # enable AVX vectorization
# instructions
-O0 # no optimization
-Ofast # favors fast code
-pedantic # set strict standard conformance
-Wall # warning level: all
-Wno-delete-incomplete # remove warning for void deletion
-Wno-ignored-qualifiers # remove warning for const qualifier
# on functions
-Wno-unused-function # remove warning for unused function
-Wno-unused-variable # remove warning for unused variable
-Wno-unused-but-set-variable # remove warning for unused variable
-ffast-math # fast floating point calculation
-O0 # no optimization
-Ofast # favors fast code
-pedantic # set strict standard conformance
-Wall # warning level: all
-Wno-ambiguous-reversed-operator # remove C++20 warning on
# reversed equal operator
-Wno-delete-incomplete # remove warning for void deletion
-Wno-ignored-qualifiers # remove warning for const
# qualifier on functions
-Wno-unused-function # remove warning for
# unused function
-Wno-unused-variable # remove warning for unused variable
# -Wno-unused-but-set-variable # remove warning for
# # unused variable
)

# warn about undefined symbols when linking
Expand Down Expand Up @@ -226,10 +233,15 @@ ELSE()
)
ENDIF()


SET(CMAKE_CXX_FLAGS ${cppFlagsCommon} CACHE STRING "" FORCE)
SET(CMAKE_CXX_FLAGS_RELEASE ${cppFlagsRelease} CACHE STRING "" FORCE)
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO ${cppFlagsReleaseWithDebugInfo}
CACHE STRING "" FORCE)
SET(CMAKE_CXX_FLAGS_DEBUG ${cppFlagsDebug} CACHE STRING "" FORCE)

SET(CMAKE_SHARED_LINKER_FLAGS ${cppLinkerFlagsCommon} CACHE STRING "" FORCE)

IF(MACOSX)
ADD_COMPILE_DEFINITIONS($<IF:$<CONFIG:Debug>,DEBUG,NDEBUG>)
ENDIF(MACOSX)
142 changes: 0 additions & 142 deletions doc/doxygen/FluidSynthPlugin-doxygen-FULL.cfg.in
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,6 @@ ALLOW_UNICODE_NAMES = YES

OUTPUT_LANGUAGE = English

# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all generated output in the proper direction.
# Possible values are: None, LTR, RTL and Context.
# The default value is: None.

OUTPUT_TEXT_DIRECTION = None

# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
Expand Down Expand Up @@ -1103,38 +1095,6 @@ USE_HTAGS = NO

VERBATIM_HEADERS = YES

# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
# cost of reduced performance. This can be particularly helpful with template
# rich C++ code for which doxygen's built-in parser lacks the necessary type
# information.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.
# The default value is: NO.

CLANG_ASSISTED_PARSING = NO

# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
# the include paths will already be set by doxygen for the files and directories
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.

CLANG_OPTIONS =

# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the "-p" option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
# will be added as well.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.

CLANG_DATABASE_PATH =

#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
Expand All @@ -1146,13 +1106,6 @@ CLANG_DATABASE_PATH =

ALPHABETICAL_INDEX = YES

# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
# which the alphabetical index list will be split.
# Minimum value: 1, maximum value: 20, default value: 5.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

COLS_IN_ALPHA_INDEX = 5

# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
# can be used to specify a prefix (or a list of prefixes) that should be ignored
Expand Down Expand Up @@ -1280,15 +1233,6 @@ HTML_COLORSTYLE_SAT = 150

HTML_COLORSTYLE_GAMMA = 80

# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
# to YES can help to show when doxygen was last run and thus if the
# documentation is up to date.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_TIMESTAMP = NO

# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
Expand Down Expand Up @@ -1581,17 +1525,6 @@ HTML_FORMULA_FORMAT = png

FORMULA_FONTSIZE = 10

# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
# supported properly for IE 6.0, but are supported on all modern browsers.
#
# Note that when changing this option you need to delete any form_*.png files in
# the HTML output directory before the changes have effect.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_TRANSPARENT = YES

# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
# to create new LaTeX commands to be used in formulas as building blocks. See
# the section "Including formulas" for details.
Expand Down Expand Up @@ -1892,16 +1825,6 @@ LATEX_BATCHMODE = NO

LATEX_HIDE_INDICES = NO

# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
# code with syntax highlighting in the LaTeX output.
#
# Note that which sources are shown also depends on other settings such as
# SOURCE_BROWSER.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_SOURCE_CODE = NO

# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
Expand All @@ -1910,14 +1833,6 @@ LATEX_SOURCE_CODE = NO

LATEX_BIB_STYLE = plain

# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
# page will contain the date and time when the page was generated. Setting this
# to NO can help when comparing the output of multiple runs.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_TIMESTAMP = NO

# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
Expand Down Expand Up @@ -1982,16 +1897,6 @@ RTF_STYLESHEET_FILE =

RTF_EXTENSIONS_FILE =

# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
# with syntax highlighting in the RTF output.
#
# Note that which sources are shown also depends on other settings such as
# SOURCE_BROWSER.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_SOURCE_CODE = NO

#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
Expand Down Expand Up @@ -2088,15 +1993,6 @@ GENERATE_DOCBOOK = NO

DOCBOOK_OUTPUT = docbook

# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
# program listings (including syntax highlighting and cross-referencing
# information) to the DOCBOOK output. Note that enabling this will significantly
# increase the size of the DOCBOOK output.
# The default value is: NO.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.

DOCBOOK_PROGRAMLISTING = NO

#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
Expand Down Expand Up @@ -2275,15 +2171,6 @@ EXTERNAL_PAGES = YES
# Configuration options related to the dot tool
#---------------------------------------------------------------------------

# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
# NO turns the diagrams off. Note that this option also works with HAVE_DOT
# disabled, but it is recommended to install and use dot, since it yields more
# powerful graphs.
# The default value is: YES.

CLASS_DIAGRAMS = YES

# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
Expand Down Expand Up @@ -2316,23 +2203,6 @@ HAVE_DOT = ${DOXYGEN_HAVE_DOT}

DOT_NUM_THREADS = 3

# When you want a differently looking font in the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
# sure dot is able to find the font, which can be done by putting it in a
# standard location or by setting the DOTFONTPATH environment variable or by
# setting DOT_FONTPATH to the directory containing the font.
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTNAME = Helvetica

# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
# Minimum value: 4, maximum value: 24, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTSIZE = 11

# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
Expand Down Expand Up @@ -2545,18 +2415,6 @@ DOT_GRAPH_MAX_NODES = 50

MAX_DOT_GRAPH_DEPTH = 0

# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
# to support this out of the box.
#
# Warning: Depending on the platform used, enabling this option may lead to
# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
# read).
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_TRANSPARENT = NO

# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
Expand Down
Loading

0 comments on commit 0e1b5a6

Please sign in to comment.