### Fetch JUCE Dependency with CMake Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.plugin.txt Configures the build to either find an installed JUCE or download and build a specific version using FetchContent. Ensures JUCE is available for the project. ```cmake include(FetchContent) if(YSFX_PLUGIN_USE_SYSTEM_JUCE) find_package(JUCE REQUIRED) else() FetchContent_Declare(juce URL "https://github.com/juce-framework/JUCE/archive/refs/tags/8.0.6.tar.gz" URL_HASH "SHA512=EA9C44A72DB6DA4350CD12159876535F833BC46760B0CCC494C714E8577E4393A7F7BB1CC14147760C2579A2AEA7A55DE50D959D411A23A852B5136DA63A83BF") FetchContent_GetProperties(juce) if(NOT juce_POPULATED) FetchContent_Populate(juce) add_subdirectory("${juce_SOURCE_DIR}" "${juce_BINARY_DIR}" EXCLUDE_FROM_ALL) endif() endif() if(YSFX_PLUGIN_VST3_SDK_PATH) juce_set_vst3_sdk_path("${YSFX_PLUGIN_VST3_SDK_PATH}") endif() add_subdirectory(thirdparty/clap-juce-extensions EXCLUDE_FROM_ALL) ``` -------------------------------- ### Define ysfx_tool Executable with CMake Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.tools.txt Defines the ysfx_tool as an executable target and links it to the ysfx library. The executable is installed to the binary directory. ```cmake add_executable(ysfx_tool "tools/ysfx_tool.cpp") target_link_libraries(ysfx_tool PRIVATE ysfx::ysfx) install( TARGETS ysfx_tool RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") ``` -------------------------------- ### JSFX Image Loading: @gfx Block Source: https://github.com/joepvanlier/ysfx/blob/master/README.md Alternatively, load images within the @gfx block on the first pass to prevent performance issues. This example demonstrates a conditional load based on an 'imgs_loaded' flag. ```jsfx @gfx (!imgs_loaded) ? ( // load images here imgs_loaded = 1; ); ``` -------------------------------- ### Clone and Build ysfx Project Source: https://github.com/joepvanlier/ysfx/blob/master/README.md Use these commands to clone the ysfx repository, update submodules, create a build directory, configure with CMake, and build the library and audio plugin. Ensure you have a C++ development environment with Git and CMake set up. ```bash git clone https://github.com/JoepVanlier/ysfx.git cd ysfx git submodule update --init --recursive mkdir build cd build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. cmake --build . ``` -------------------------------- ### Graphics Interface Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for setting up and interacting with the graphical user interface (GUI) of the effect, including mouse updates, window state, and rendering. ```APIDOC ## Graphics Interface ### ysfx_gfx_setup Sets up the graphics context for the effect. ### ysfx_gfx_wants_retina Checks if the graphics context supports retina displays. ### ysfx_gfx_add_key Adds a key to the graphics context. ### ysfx_gfx_update_mouse Updates the mouse position and state for the graphics context. ### ysfx_gfx_set_window_state Sets the state of the effect's window. ### ysfx_gfx_run Runs the graphics rendering loop. ### ysfx_get_requested_framerate Retrieves the requested framerate for the graphics. ### ysfx_parse_menu Parses menu data for the graphics interface. ### ysfx_menu_free Frees memory associated with a parsed menu. ``` -------------------------------- ### Configuration Functions Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for managing YSFX configuration, including creating, freeing, and adding references to configuration objects, as well as setting and retrieving import and data roots. ```APIDOC ## Configuration Management ### ysfx_config_new Creates a new YSFX configuration object. ### ysfx_config_free Frees an existing YSFX configuration object. ### ysfx_config_add_ref Adds a reference to an YSFX configuration object. ### ysfx_set_import_root Sets the root directory for importing resources. ### ysfx_set_data_root Sets the root directory for data files. ### ysfx_get_import_root Retrieves the current import root directory. ### ysfx_get_data_root Retrieves the current data root directory. ### ysfx_guess_file_roots Guesses the import and data roots based on the provided file path. ### ysfx_register_audio_format Registers a custom audio format handler. ### ysfx_register_builtin_audio_formats Registers all built-in audio format handlers. ### ysfx_set_log_reporter Sets a custom function to report log messages. ### ysfx_set_user_data Associates user-defined data with the YSFX instance. ### ysfx_log_level_string Converts a log level integer to its string representation. ``` -------------------------------- ### YSFX Instance Management Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for creating, freeing, and managing references to YSFX instances, as well as retrieving configuration and loading/unloading effect files. ```APIDOC ## YSFX Instance Lifecycle ### ysfx_new Creates a new YSFX instance. ### ysfx_free Frees an existing YSFX instance. ### ysfx_add_ref Adds a reference to an YSFX instance. ### ysfx_get_config Retrieves the configuration object associated with an YSFX instance. ### ysfx_load_file Loads an effect file into the YSFX instance. ### ysfx_unload Unloads the currently loaded effect file. ### ysfx_is_loaded Checks if an effect file is currently loaded. ``` -------------------------------- ### JSFX Image Loading: File Syntax Source: https://github.com/joepvanlier/ysfx/blob/master/README.md For improved performance in ysfx, use the 'filename' syntax at the top of your JSFX script to load images. This avoids reloading images on every @init call, which is inefficient in ysfx. ```jsfx filename:0,img/background.png filename:1,img/poti_low_gain.png ``` -------------------------------- ### Configure ysfx to Use Built-in File Browser Source: https://github.com/joepvanlier/ysfx/blob/master/README.md If the native file browser fails to open on Linux, modify the 'ysfx_saike_mod.prefs' file to use the built-in dialog. Set 'ysfx_use_native_file_picker' to '0'. Ensure the plugin is not running when making this change. ```ini ysfx_use_native_file_picker = 0 ``` -------------------------------- ### Remove Quarantine Attribute on macOS Source: https://github.com/joepvanlier/ysfx/blob/master/README.md Use this command to allow the ysfx plugin to run on macOS if it's not signed by an identified developer. Replace '/Path/To/Plugin/VST3/' with the actual path to your plugin. ```bash xattr -dr com.apple.quarantine /Path/To/Plugin/VST3/ysfx-s FX.vst3 xattr -dr com.apple.quarantine /Path/To/Plugin/VST3/ysfx-s instrument.vst3 ``` -------------------------------- ### Review WDL Changes Source: https://github.com/joepvanlier/ysfx/blob/master/MAINTENANCE.md Examine the changes made to the WDL since a specific commit. This helps in understanding the scope of updates and preparing to apply them. ```bash git log 862717c..HEAD ; git diff 862717c..HEAD ``` -------------------------------- ### Add WDL/LICE Library Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.wdl.txt Configures the WDL/LICE library by adding its source files and setting compile definitions. It links against wdl-base and system libraries like CMAKE_DL_LIBS and Threads. ```cmake if(YSFX_GFX) add_library(lice OBJECT "thirdparty/WDL/source/WDL/lice/lice.cpp" "thirdparty/WDL/source/WDL/lice/lice_arc.cpp" "thirdparty/WDL/source/WDL/lice/lice_colorspace.cpp" "thirdparty/WDL/source/WDL/lice/lice_image.cpp" "thirdparty/WDL/source/WDL/lice/lice_line.cpp" "thirdparty/WDL/source/WDL/lice/lice_palette.cpp" "thirdparty/WDL/source/WDL/lice/lice_texgen.cpp" "thirdparty/WDL/source/WDL/lice/lice_text.cpp" "thirdparty/WDL/source/WDL/lice/lice_textnew.cpp") target_compile_definitions(lice PRIVATE "${YSFX_FILE_OFFSET_BITS_GENEXP}") target_link_libraries(lice PUBLIC wdl-base PRIVATE ${CMAKE_DL_LIBS} Threads::Threads) # custom image loaders target_sources(lice PRIVATE "sources/lice_stb/lice_stb_generic.hpp" "sources/lice_stb/lice_stb_loaders.cpp" "sources/lice_stb/lice_stb_loaders.hpp" "sources/lice_stb/lice_stb_bmp.cpp" "sources/lice_stb/lice_stb_gif.cpp" "sources/lice_stb/lice_stb_jpg.cpp" "sources/lice_stb/lice_stb_png.cpp" "sources/lice_stb/lice_stb_write.cpp") target_link_libraries(lice PRIVATE stb) # SWELL if(NOT WIN32) target_sources(lice PRIVATE "thirdparty/WDL/source/WDL/swell/swell-ini.cpp" "thirdparty/WDL/source/WDL/swell/swell.cpp") if(NOT APPLE) target_sources(lice PRIVATE "thirdparty/WDL/source/WDL/swell/swell-appstub-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-dlg-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-gdi-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-gdi-lice.cpp" "thirdparty/WDL/source/WDL/swell/swell-generic-gdk.cpp" "thirdparty/WDL/source/WDL/swell/swell-generic-headless.cpp" "thirdparty/WDL/source/WDL/swell/swell-kb-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-menu-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-misc-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-miscdlg-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-modstub-generic.cpp" "thirdparty/WDL/source/WDL/swell/swell-wnd-generic.cpp") target_compile_definitions(lice PUBLIC "SWELL_LICE_GDI") if(TARGET Fontconfig::Fontconfig) target_compile_definitions(lice PUBLIC "SWELL_FONTCONFIG") target_link_libraries(lice PRIVATE Fontconfig::Fontconfig) endif() if(TARGET Freetype::Freetype) target_compile_definitions(lice PUBLIC "SWELL_FREETYPE") target_link_libraries(lice PRIVATE Freetype::Freetype) endif() else() target_sources(lice PRIVATE "thirdparty/WDL/source/WDL/swell/swell-appstub.mm" "thirdparty/WDL/source/WDL/swell/swell-dlg.mm" "thirdparty/WDL/source/WDL/swell/swell-gdi.mm" "thirdparty/WDL/source/WDL/swell/swell-kb.mm" "thirdparty/WDL/source/WDL/swell/swell-menu.mm" "thirdparty/WDL/source/WDL/swell/swell-misc.mm" "thirdparty/WDL/source/WDL/swell/swell-miscdlg.mm" "thirdparty/WDL/source/WDL/swell/swell-modstub.mm" "thirdparty/WDL/source/WDL/swell/swell-wnd.mm") target_link_libraries(lice PRIVATE Apple::Cocoa Apple::Carbon Apple::Foundation Apple::Metal) endif() endif() endif() ``` -------------------------------- ### Add EEL2 Library Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.wdl.txt Defines the EEL2 library as an OBJECT library, listing its C source files. ```cmake add_library(eel2 OBJECT "thirdparty/WDL/source/WDL/eel2/nseel-caltab.c" "thirdparty/WDL/source/WDL/eel2/nseel-cfunc.c" "thirdparty/WDL/source/WDL/eel2/nseel-compiler.c" "thirdparty/WDL/source/WDL/eel2/nseel-eval.c" "thirdparty/WDL/source/WDL/eel2/nseel-lextab.c" "thirdparty/WDL/source/WDL/eel2/nseel-ram.c" "thirdparty/WDL/source/WDL/eel2/nseel-yylex.c") ``` -------------------------------- ### Link EEL2 Library Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.wdl.txt Links the EEL2 library with public dependency 'wdl-base' and private dependency 'Threads::Threads'. ```cmake target_link_libraries(eel2 PUBLIC wdl-base PRIVATE Threads::Threads) ``` -------------------------------- ### Path Resolution and Memory Management Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for resolving file paths and managing memory related to path resolution. ```APIDOC ## Path and Memory Utilities ### ysfx_resolve_path_and_allocate Resolves a path and allocates memory for it. ### ysfx_free_resolved_path Frees memory allocated for a resolved path. ``` -------------------------------- ### EEL2 Compile Definitions Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.wdl.txt Sets specific compile definitions for the EEL2 library, including NSEEL_ATOF and CRT non-standard warnings for MSVC. ```cmake target_compile_definitions(eel2 PRIVATE "NSEEL_ATOF=ysfx_wdl_atof") target_compile_definitions(eel2 PRIVATE "${YSFX_FILE_OFFSET_BITS_GENEXP}") if(MSVC) target_compile_definitions(eel2 PRIVATE "_CRT_NONSTDC_NO_WARNINGS") endif() ``` -------------------------------- ### Bank and Preset Management Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for managing effect banks and presets, including loading, saving, creating, adding, deleting, renaming, and swapping presets within a bank. ```APIDOC ## Bank and Preset Operations ### ysfx_get_bank_path Retrieves the path to the current bank file. ### ysfx_load_bank Loads a bank of presets. ### ysfx_save_bank Saves the current bank of presets. ### ysfx_bank_free Frees memory associated with a bank. ### ysfx_create_empty_bank Creates a new, empty bank. ### ysfx_add_preset_to_bank Adds a preset to the bank. ### ysfx_preset_exists Checks if a preset exists in the bank. ### ysfx_delete_preset_from_bank Deletes a preset from the bank. ### ysfx_rename_preset_from_bank Renames a preset within the bank. ### ysfx_swap_preset_in_bank Swaps the positions of two presets in the bank. ``` -------------------------------- ### Effect Compilation and Processing Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for compiling the effect, checking its compiled status, and setting processing parameters like block size and sample rate. ```APIDOC ## Effect Compilation and Processing Setup ### ysfx_compile Compiles the effect. ### ysfx_is_compiled Checks if the effect is compiled. ### ysfx_get_block_size Retrieves the current block size for processing. ### ysfx_get_sample_rate Retrieves the current sample rate for processing. ### ysfx_set_block_size Sets the block size for processing. ### ysfx_set_sample_rate Sets the sample rate for processing. ### ysfx_set_midi_capacity Sets the capacity for MIDI messages. ### ysfx_init Initializes the effect for processing. ### ysfx_get_pdc_delay Retrieves the PDC (Plugin Delay Compensation) delay. ### ysfx_get_pdc_channels Retrieves the number of channels for PDC. ### ysfx_get_pdc_midi Retrieves PDC information for MIDI. ### ysfx_set_time_info Sets time information for the effect. ### ysfx_send_midi Sends a MIDI message to the effect. ### ysfx_receive_midi Receives a MIDI message from the effect. ### ysfx_receive_midi_from_bus Receives a MIDI message from a specific bus. ### ysfx_send_trigger Sends a trigger event to the effect. ``` -------------------------------- ### Validate EEL2 GAS Assembly Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.wdl.txt Sets up a custom command to validate the reference ASM file against a SHA512 checksum if YSFX_SKIP_CHECKSUM is not set. This ensures the GAS source is up-to-date. ```cmake if(NOT YSFX_SKIP_CHECKSUM) add_custom_command( OUTPUT "eel2-gas-validate-stamp.txt" COMMAND "${CMAKE_COMMAND}" "-DSOURCE_FILE=${CMAKE_SOURCE_DIR}/thirdparty/WDL/source/WDL/eel2/asm-nseel-x64-sse.asm" "-DCHECKSUM_FILE=${CMAKE_SOURCE_DIR}/sources/eel2-gas/sources/ref-hash-sha512.txt" "-DTEXT_MODE=ON" "-P" "${PROJECT_SOURCE_DIR}/cmake/ValidateSHA512.cmake" COMMAND "${CMAKE_COMMAND}" "-E" "touch" "${CMAKE_CURRENT_BINARY_DIR}/eel2-gas-validate-stamp.txt" DEPENDS "thirdparty/WDL/source/WDL/eel2/asm-nseel-x64-sse.asm" "sources/eel2-gas/sources/ref-hash-sha512.txt") add_custom_target(eel2-gas-validate DEPENDS "eel2-gas-validate-stamp.txt") add_dependencies(eel2 eel2-gas-validate) endif() ``` -------------------------------- ### Undo Point and State Management Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for managing undo points and the overall state of the effect, including loading, saving, duplicating, and comparing states. ```APIDOC ## Undo Point and State Management ### ysfx_fetch_want_undopoint Checks if the effect wants an undo point. ### ysfx_process_float Processes audio data using float precision. ### ysfx_process_double Processes audio data using double precision. ### ysfx_load_state Loads a saved state for the effect. ### ysfx_save_state Saves the current state of the effect. ### ysfx_state_free Frees memory associated with a saved state. ### ysfx_state_dup Duplicates a saved state. ### ysfx_is_state_equal Compares two saved states for equality. ### ysfx_load_serialized_state Loads a state from a serialized string. ``` -------------------------------- ### Slider Group and Automation Fetching Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for fetching information related to slider groups, changes, automations, and touches, as well as retrieving slider visibility. ```APIDOC ## Slider Group and Automation Data ### ysfx_fetch_slider_group_index Fetches the index of the slider group. ### ysfx_slider_mask Applies a mask to sliders. ### ysfx_fetch_slider_changes Fetches changes made to sliders. ### ysfx_fetch_slider_automations Fetches automation data for sliders. ### ysfx_fetch_slider_touches Fetches information about slider touches. ### ysfx_get_slider_visibility Retrieves the visibility status of a slider. ``` -------------------------------- ### Variable and Memory Access Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for enumerating, finding, and reading variables and memory within the effect. ```APIDOC ## Variable and Memory Access ### ysfx_enum_vars Enumerates all variables within the effect. ### ysfx_find_var Finds a variable by its name. ### ysfx_read_var Reads the value of a variable. ### ysfx_read_vmem Reads from the effect's virtual memory. ### ysfx_read_vmem_single Reads a single value from the effect's virtual memory. ### ysfx_calculate_used_mem Calculates the amount of memory used by the effect. ``` -------------------------------- ### Conditional Compilation for EEL2 Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.wdl.txt Configures EEL2 compilation based on YSFX_PORTABLE and MSVC flags. Includes assembly sources for non-MSVC or x64 MSVC targets. ```cmake if(YSFX_PORTABLE) target_compile_definitions(eel2 PUBLIC "EEL_TARGET_PORTABLE") else() if(NOT MSVC) target_sources(eel2 PRIVATE "sources/eel2-gas/sources/asm-nseel-x64-sse.S") elseif(MSVC_C_ARCHITECTURE_ID STREQUAL "x64") set_property(TARGET eel2nasm PROPERTY IMPORTED_OBJECTS "${CMAKE_CURRENT_BINARY_DIR}/asm-nseel-x64-sse.obj") add_custom_command( OUTPUT "asm-nseel-x64-sse.obj" COMMAND "${NASM_PROGRAM}" "-f" "win64" "-o" "${CMAKE_CURRENT_BINARY_DIR}/asm-nseel-x64-sse.obj" "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/WDL/source/WDL/eel2/asm-nseel-x64-sse.asm" DEPENDS "thirdparty/WDL/source/WDL/eel2/asm-nseel-x64-sse.asm") endif() endif() ``` -------------------------------- ### Section and Slider Information Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions to check for the existence of effect sections and to retrieve detailed information about sliders, including their properties and values. ```APIDOC ## Section and Slider Operations ### ysfx_has_section Checks if the effect has a specific section. ### ysfx_slider_exists Checks if a slider with the given name exists. ### ysfx_slider_get_name Retrieves the name of a slider. ### ysfx_slider_get_range Retrieves the minimum and maximum range of a slider. ### ysfx_slider_get_curve Retrieves the curve type of a slider. ### ysfx_slider_is_enum Checks if a slider is an enumeration type. ### ysfx_slider_get_enum_names Retrieves the names of the enumeration values for a slider. ### ysfx_slider_get_enum_name Retrieves the string name of an enumeration value for a slider. ### ysfx_slider_is_path Checks if a slider represents a file path. ### ysfx_slider_is_initially_visible Checks if a slider is initially visible. ### ysfx_slider_get_value Retrieves the current value of a slider. ### ysfx_slider_set_value Sets the value of a slider. ``` -------------------------------- ### Slider Value Scaling and Conversion Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions for converting slider values between different scales and normalization formats, including raw, linear, logarithmic, and squared representations. ```APIDOC ## Slider Value Transformations ### ysfx_slider_scale_from_normalized_linear_raw Scales a normalized value from a linear raw representation. ### ysfx_slider_scale_from_normalized_sqr_raw Scales a normalized value from a squared raw representation. ### ysfx_slider_scale_from_normalized_linear Scales a normalized value from a linear representation. ### ysfx_slider_scale_from_normalized_log Scales a normalized value from a logarithmic representation. ### ysfx_slider_scale_from_normalized_sqr Scales a normalized value from a squared representation. ### ysfx_slider_scale_to_normalized_linear_raw Converts a slider value to a normalized linear raw representation. ### ysfx_slider_scale_to_normalized_sqr_raw Converts a slider value to a normalized squared raw representation. ### ysfx_slider_scale_to_normalized_linear Converts a slider value to a normalized linear representation. ### ysfx_slider_scale_to_normalized_log Converts a slider value to a normalized logarithmic representation. ### ysfx_slider_scale_to_normalized_sqr Converts a slider value to a normalized squared representation. ### ysfx_normalized_to_ysfx_value Converts a normalized value to the effect's internal value representation. ### ysfx_ysfx_value_to_normalized Converts the effect's internal value representation to a normalized value. ``` -------------------------------- ### Define YSFX Plugin Target with CMake Source: https://github.com/joepvanlier/ysfx/blob/master/cmake.plugin.txt A CMake function to define a new YSFX plugin target, differentiating between instruments and effects. It configures plugin metadata, source files, compile definitions, and links necessary libraries. ```cmake function(add_new_target target_name is_synth) if(${is_synth}) set(SUFFIX " instrument") set(CODE_END "y") set(CLAP_SUFFIX "") set(CATEGORY "Instrument") set(CLAP_TYPE "instrument") else() set(SUFFIX " FX") set(CODE_END "z") set(CLAP_SUFFIX "-fx") set(CATEGORY "Fx") set(CLAP_TYPE "audio-effect") endif() juce_add_plugin("${target_name}" PLUGIN_CODE "ysf${CODE_END}" PLUGIN_MANUFACTURER_CODE "S4IK" PRODUCT_NAME "ysfx-s${SUFFIX}" JUCE_PLUGIN_NAME "ysfx-s${SUFFIX}" JUCE_DESCRIPTION "Host for JSFX plugins" COMPANY_NAME "Jean Pierre Cimalando / Joep Vanlier" BUNDLE_ID "Jean_Pierre_Cimalando__Joep_Vanlier" FORMATS VST3 AU NEEDS_MIDI_INPUT TRUE NEEDS_MIDI_OUTPUT TRUE NEEDS_CURL FALSE NEEDS_WEB_BROWSER FALSE IS_SYNTH "${is_synth}" VST3_CATEGORIES "${CATEGORY}" AU_MAIN_TYPE "kAudioUnitType_Effect" COPY_PLUGIN_AFTER_BUILD "${YSFX_PLUGIN_COPY}") target_sources("${target_name}" PRIVATE "plugin/processor.cpp" "plugin/processor.h" "plugin/editor.cpp" "plugin/editor.h" "plugin/lookandfeel.cpp" "plugin/lookandfeel.h" "plugin/parameter.cpp" "plugin/parameter.h" "plugin/info.cpp" "plugin/info.h" "plugin/bank_io.cpp" "plugin/bank_io.h" "plugin/components/parameters_panel.cpp" "plugin/components/parameters_panel.h" "plugin/components/graphics_view.cpp" "plugin/components/graphics_view.h" "plugin/components/ide_view.cpp" "plugin/components/ide_view.h" "plugin/components/rpl_view.cpp" "plugin/components/rpl_view.h" "plugin/components/searchable_popup.h" "plugin/components/dialogs.h" "plugin/components/dialogs.cpp" "plugin/components/divider.h" "plugin/components/tokenizer.h" "plugin/components/tokenizer_functions.h" "plugin/components/tokenizer.cpp" "plugin/components/ysfx_document.h" "plugin/components/ysfx_document.cpp" "plugin/utility/audio_processor_suspender.h" "plugin/utility/functional_timer.h" "plugin/utility/async_updater.cpp" "plugin/utility/async_updater.h" "plugin/utility/rt_semaphore.cpp" "plugin/utility/rt_semaphore.h" "plugin/utility/sync_bitset.hpp") target_compile_definitions("${target_name}" PUBLIC VERSION_STRING="${PROJECT_VERSION}" "JUCE_WEB_BROWSER=0" "JUCE_USE_CURL=0" "JUCE_VST3_CAN_REPLACE_VST2=0") target_include_directories("${target_name}" PRIVATE "plugin") target_link_libraries("${target_name}" PRIVATE ysfx::ysfx json juce::juce_audio_processors juce::juce_gui_basics juce::juce_gui_extra juce::juce_opengl juce::juce_recommended_config_flags juce::juce_recommended_warning_flags) if(YSFX_PLUGIN_LTO) target_link_libraries("${target_name}" PRIVATE juce::juce_recommended_lto_flags) endif() if(YSFX_PLUGIN_FORCE_DEBUG) target_compile_definitions("${target_name}" PRIVATE "JUCE_FORCE_DEBUG=1") endif() clap_juce_extensions_plugin( TARGET "${target_name}" PLUGIN_NAME "ysfx-s${SUFFIX}" CLAP_ID "org.saike.ysfx-s${CLAP_SUFFIX}" CLAP_FEATURES "${CLAP_TYPE}" CLAP_PROCESS_EVENTS_RESOLUTION_SAMPLES 64 CLAP_USE_JUCE_PARAMETER_RANGES DISCRETE MANUFACTURER_NAME "Sai'ke" MANUFACTURER_CODE S4IK) endfunction() add_new_target(ysfx_plugin_instrument TRUE) add_new_target(ysfx_plugin FALSE) ``` -------------------------------- ### Effect Metadata Retrieval Source: https://github.com/joepvanlier/ysfx/blob/master/exports/ysfx.txt Functions to retrieve various metadata about the loaded effect, such as its name, author, tags, and input/output channel information. ```APIDOC ## Effect Metadata ### ysfx_get_name Retrieves the name of the effect. ### ysfx_get_file_path Retrieves the file path of the loaded effect. ### ysfx_get_author Retrieves the author of the effect. ### ysfx_get_tags Retrieves all tags associated with the effect. ### ysfx_get_tag Retrieves a specific tag by its index. ### ysfx_get_num_inputs Retrieves the number of input channels. ### ysfx_get_num_outputs Retrieves the number of output channels. ### ysfx_get_input_name Retrieves the name of a specific input channel. ### ysfx_get_output_name Retrieves the name of a specific output channel. ### ysfx_wants_meters Checks if the effect requires meter information. ### ysfx_get_gfx_dim Retrieves the dimensions of the graphical user interface. ``` -------------------------------- ### Update WDL Reference Commit Source: https://github.com/joepvanlier/ysfx/blob/master/MAINTENANCE.md When committing changes related to WDL updates, include the new reference commit hash in the commit message headline. This ensures clear version tracking. ```gitcommit Update to WDL XXXXXXX from upstream ``` -------------------------------- ### Log WDL Git History Source: https://github.com/joepvanlier/ysfx/blob/master/MAINTENANCE.md View the commit history of the WDL subdirectory to find the latest revision number. This is crucial for tracking updates from upstream. ```bash git log thirdparty/WDL ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.