From 36e2993f461aef17d93202a3a3f04b02d7849196 Mon Sep 17 00:00:00 2001 From: cucuwritescode Date: Thu, 23 Oct 2025 03:01:08 +0100 Subject: [PATCH 1/3] Added correct efsw submodule (SpartanJ/efsw) --- .gitmodules | 3 +++ external/efsw | 1 + 2 files changed, 4 insertions(+) create mode 160000 external/efsw diff --git a/.gitmodules b/.gitmodules index c33efaad2f..755cb6c0dc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ [submodule "external/clap-sdk"] path = external/clap-sdk url = https://github.com/free-audio/clap.git +[submodule "external/efsw"] + path = external/efsw + url = https://github.com/SpartanJ/efsw diff --git a/external/efsw b/external/efsw new file mode 160000 index 0000000000..f94a6616ab --- /dev/null +++ b/external/efsw @@ -0,0 +1 @@ +Subproject commit f94a6616aba85fc9375fdff7ee69609d223a0672 From 0075828f655e2d3621c390271adf8cef3e3e0642 Mon Sep 17 00:00:00 2001 From: cucuwritescode Date: Tue, 4 Nov 2025 18:02:23 +0000 Subject: [PATCH 2/3] JOS bug and modernisation of faust2clap addressing julius orion smith's bug and introducing a comprehensive modernisation of the tool, making it easier to install and use including: -a CLI tool, with helpful flags -global install support, added install-faust2clap.sh for global system install, -symlink creation and setting up dependencies -unified entry point, added faust2clap.sh ffor more consistent command line use (faust2clap from anywhere) -slightly improved build integration -got rid of hardcoded paths etc -readme updates --- architecture/clap/Makefile.simple | 106 ++++---- build/CMakeLists.txt | 2 +- tools/faust2clap/CMakeLists.txt | 104 +++---- tools/faust2clap/README.md | 53 ++-- tools/faust2clap/faust2clap.py | 358 ++++++++++++++++++------- tools/faust2clap/faust2clap.sh | 22 ++ tools/faust2clap/install-faust2clap.sh | 75 ++++++ 7 files changed, 509 insertions(+), 211 deletions(-) create mode 100755 tools/faust2clap/faust2clap.sh create mode 100755 tools/faust2clap/install-faust2clap.sh diff --git a/architecture/clap/Makefile.simple b/architecture/clap/Makefile.simple index b0885bf837..2d1ec23a47 100644 --- a/architecture/clap/Makefile.simple +++ b/architecture/clap/Makefile.simple @@ -13,75 +13,83 @@ # - CLAP SDK and helpers in ../../external/ # - C++17 compatible compiler -CXX = g++ -CXXFLAGS = -std=c++17 -fPIC -O2 -Wall -Wextra -INCLUDES = -I../../architecture \ - -I../../external/clap-sdk/include \ - -I../../external/clap-helpers/include \ - -I/usr/local/include \ - -I/opt/homebrew/include \ - -Iefsw/include \ - -Iefsw/src - -LIBS = -L/usr/local/lib -L/opt/homebrew/lib -lfaust -ldl -framework CoreServices -framework CoreFoundation - -TARGET = FaustDynamic.clap -SOURCE = simple-faust.cpp -HELPER_OBJS = clap-helpers-impl.o interpreter-clap.o -MAIN_OBJ = faust-dynamic.o -EFSW_LIB = efsw/build/libefsw-static.a +CXX := /usr/bin/clang++ +CXXFLAGS := -std=c++17 -fPIC -O2 -Wall -Wextra -fvisibility=default + +# Detect whether we're inside an installed faust2clap tree or building in-repo +SCRIPT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +TOP_DIR := $(abspath $(SCRIPT_DIR)/../..) + +# Allow override via env, useful for installed tree +FAUST2CLAP_ROOT ?= $(TOP_DIR) + +# External dependencies +CLAP_SDK_INC := $(FAUST2CLAP_ROOT)/external/clap-sdk/include +CLAP_HELPERS_INC := $(FAUST2CLAP_ROOT)/external/clap-helpers/include +EFSW_INC := $(FAUST2CLAP_ROOT)/external/efsw/include +EFSW_SRC := $(FAUST2CLAP_ROOT)/external/efsw/src +EFSW_LIB := $(FAUST2CLAP_ROOT)/external/efsw/build/libefsw-static.a + +INCLUDES = \ + -I../../architecture \ + -I$(FAUST2CLAP_ROOT)/external/clap-sdk/include \ + -I$(FAUST2CLAP_ROOT)/external/clap-helpers/include \ + -I$(FAUST2CLAP_ROOT)/external/efsw/include \ + -I$(FAUST2CLAP_ROOT)/external/efsw/src \ + -I/usr/local/include \ + -I/opt/homebrew/include + +LIBS := -L$(FAUST2CLAP_ROOT)/external/efsw/build \ + -lfaust -ldl \ + -framework CoreServices -framework CoreFoundation + +# Output target +TARGET := FaustDynamic.clap + +# Source files +SOURCE := simple-faust.cpp +MAIN_OBJ := faust-dynamic.o +HELPER_OBJS := clap-helpers-impl.o interpreter-clap.o all: $(TARGET) $(TARGET): $(MAIN_OBJ) $(HELPER_OBJS) $(EFSW_LIB) @echo "πŸ”— Linking $(TARGET)..." - $(CXX) -shared $(MAIN_OBJ) $(HELPER_OBJS) $(EFSW_LIB) $(LIBS) -o $@ + $(CXX) -bundle -undefined dynamic_lookup \ + $(MAIN_OBJ) $(HELPER_OBJS) $(EFSW_LIB) $(LIBS) \ + -Wl,-headerpad_max_install_names \ + -Wl,-exported_symbol,_clap_entry \ + -Wl,-rpath,/usr/local/lib \ + -o $@ @echo "βœ… Built $(TARGET) successfully" $(MAIN_OBJ): $(SOURCE) @echo "πŸ”¨ Compiling main plugin source..." - $(CXX) $(CXXFLAGS) $(INCLUDES) -c $(SOURCE) -o $@ + $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ clap-helpers-impl.o: clap-helpers-impl.cpp @echo "πŸ”¨ Compiling CLAP helpers..." - $(CXX) $(CXXFLAGS) $(INCLUDES) -c clap-helpers-impl.cpp -o $@ + $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ interpreter-clap.o: interpreter-clap.cpp interpreter-clap.h @echo "πŸ”¨ Compiling Faust interpreter interface..." $(CXX) $(CXXFLAGS) $(INCLUDES) -c interpreter-clap.cpp -o $@ $(EFSW_LIB): - @echo "πŸ”¨ Building efsw library..." - @cd efsw && mkdir -p build && cd build && cmake .. && make efsw-static + @echo "πŸ”¨ Building efsw..." + cd $(FAUST2CLAP_ROOT)/external/efsw && mkdir -p build && cd build && cmake .. && make efsw-static + +install: $(TARGET) + @echo "πŸ“¦ Installing $(TARGET)..." + mkdir -p $(HOME)/Library/Audio/Plug-Ins/CLAP/ + mkdir -p $(HOME)/.clap/plugins/ + cp -f $(TARGET) $(HOME)/Library/Audio/Plug-Ins/CLAP/ + cp -f $(TARGET) $(HOME)/.clap/plugins/ + @echo "βœ… Plugin installed to user plugin directories" clean: @echo "🧹 Cleaning build artifacts..." - rm -f $(MAIN_OBJ) $(HELPER_OBJS) $(TARGET) + rm -f *.o $(TARGET) @echo "βœ… Clean complete" -install: $(TARGET) - @echo "πŸ“¦ Installing $(TARGET)..." - @mkdir -p $(HOME)/Library/Audio/Plug-Ins/CLAP/ - @mkdir -p $(HOME)/.clap/plugins/ - cp $(TARGET) $(HOME)/Library/Audio/Plug-Ins/CLAP/ - cp $(TARGET) $(HOME)/.clap/plugins/ - @echo "βœ… Installed $(TARGET) to system plugin directories" - -# Development targets -test: $(TARGET) - @echo "πŸ§ͺ Testing plugin load..." - @if [ -n "$(CLAP_VALIDATOR)" ]; then \ - $(CLAP_VALIDATOR) $(TARGET); \ - else \ - echo "⚠️ CLAP_VALIDATOR not set, skipping validation"; \ - fi - -# Show build info -info: - @echo "πŸ› οΈ Faust Dynamic CLAP Plugin Build Configuration:" - @echo " Compiler: $(CXX)" - @echo " Flags: $(CXXFLAGS)" - @echo " Target: $(TARGET)" - @echo " Dependencies: libfaust (with interpreter), CLAP SDK" - -.PHONY: all clean install test info \ No newline at end of file +.PHONY: all install clean \ No newline at end of file diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt index 6e133898d0..6b27a5f520 100644 --- a/build/CMakeLists.txt +++ b/build/CMakeLists.txt @@ -416,7 +416,7 @@ install ( #################################### # install faust2xxx tools -file (GLOB FAUST2XXX ${ROOT}/tools/faust2appls/faust2* ${ROOT}/tools/faust2appls/faustremote ${ROOT}/tools/faust2appls/encoderunitypackage ${ROOT}/tools/faust2appls/usage.sh ${ROOT}/tools/faust2appls/filename2ident ${ROOT}/tools/faust2sc-1.0.0/faust2sc ${ROOT}/tools/faust2clap/faust2clap.py ) +file (GLOB FAUST2XXX ${ROOT}/tools/faust2appls/faust2* ${ROOT}/tools/faust2appls/faustremote ${ROOT}/tools/faust2appls/encoderunitypackage ${ROOT}/tools/faust2appls/usage.sh ${ROOT}/tools/faust2appls/filename2ident ${ROOT}/tools/faust2sc-1.0.0/faust2sc ${ROOT}/tools/faust2clap/faust2clap.py ${ROOT}/tools/faust2clap/faust2clap.sh ${ROOT}/tools/faust2clap/install-faust2clap.sh) install ( FILES ${FAUST2XXX} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_EXECUTE WORLD_READ diff --git a/tools/faust2clap/CMakeLists.txt b/tools/faust2clap/CMakeLists.txt index 8b21b0e10d..1083860293 100644 --- a/tools/faust2clap/CMakeLists.txt +++ b/tools/faust2clap/CMakeLists.txt @@ -1,88 +1,94 @@ -#min required version of cmake for compatibility cmake_minimum_required(VERSION 3.15) -#declaration of project and languages in use project(faust2clap LANGUAGES C CXX) -#specify c++17 and macos deployment target set(CMAKE_CXX_STANDARD 17) set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "macOS target") set(CMAKE_POSITION_INDEPENDENT_CODE ON) -#avoid installing clap sdk during build set(CLAP_NO_INSTALL ON CACHE BOOL "" FORCE) - -#enable post-build copying of plugin to standard location set(COPY_AFTER_BUILD ON CACHE BOOL "Copy the CLAP plugin to system folder after build") -#include required external libraries -add_subdirectory(${CMAKE_SOURCE_DIR}/../../external/clap-sdk clap-sdk) -add_subdirectory(${CMAKE_SOURCE_DIR}/../../external/clap-helpers clap-helpers) +# Define root for local install +set(FAUST2CLAP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) -#build a static lib to hold faust GUI glue (global symbols) -add_library(faust_gui_glue STATIC lib/faust_gui_glue.cpp) -#make sure it sees FAUST GUI headers (like faust/gui/GUI.h) -target_include_directories(faust_gui_glue PRIVATE - ${CMAKE_SOURCE_DIR}/../../architecture - ${CMAKE_SOURCE_DIR}/architecture/faust/gui -) +# -------------------------------------------------- +# Locate Faust headers for global builds +# -------------------------------------------------- +execute_process(COMMAND faust --includedir + OUTPUT_VARIABLE FAUST_INCLUDE_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) +message(STATUS "Faust include dir: ${FAUST_INCLUDE_DIR}") + -#hardcode RtMidi paths for Homebrew on Apple Silicon -set(RTMIDI_LIBRARY /opt/homebrew/Cellar/rtmidi/6.0.0/lib/librtmidi.dylib CACHE FILEPATH "Hardcoded RtMidi lib path") -set(RTMIDI_INCLUDE_DIR /opt/homebrew/Cellar/rtmidi/6.0.0/include CACHE PATH "Hardcoded RtMidi include path") -message(STATUS "Final RtMidi include: ${RTMIDI_INCLUDE_DIR}") +# ------------------------------- +# External Dependencies +# ------------------------------- +# Clap SDK +add_subdirectory(${FAUST2CLAP_ROOT}/external/clap-sdk clap-sdk) +add_subdirectory(${FAUST2CLAP_ROOT}/external/clap-helpers clap-helpers) + +# GUI glue lib +add_library(faust_gui_glue STATIC ${FAUST2CLAP_ROOT}/lib/faust_gui_glue.cpp) + +target_include_directories(faust_gui_glue PRIVATE + ${FAUST2CLAP_ROOT}/architecture + ${FAUST2CLAP_ROOT}/architecture/faust/gui + ${FAUST_INCLUDE_DIR} +) +# RtMidi (hardcoded Homebrew path) +set(RTMIDI_LIBRARY /opt/homebrew/Cellar/rtmidi/6.0.0/lib/librtmidi.dylib CACHE FILEPATH "RtMidi lib") +set(RTMIDI_INCLUDE_DIR /opt/homebrew/Cellar/rtmidi/6.0.0/include CACHE PATH "RtMidi include") message(STATUS "Using hardcoded RtMidi:") message(STATUS " Library: ${RTMIDI_LIBRARY}") message(STATUS " Include: ${RTMIDI_INCLUDE_DIR}") -#search for all *_clap.cpp sources generated by Faust -file(GLOB_RECURSE FAUST_SOURCES "${CMAKE_SOURCE_DIR}/../../build/*_clap.cpp") -#loop through each generated file and add a CLAP plugin target + + +# ------------------------------- +# Discover and Build Plugins +# ------------------------------- + +# This assumes that faust2clap.py puts sources in: /build// +file(GLOB_RECURSE FAUST_SOURCES "${CMAKE_BINARY_DIR}/*_clap.cpp") + foreach(FAUST_CPP ${FAUST_SOURCES}) - get_filename_component(FILENAME ${FAUST_CPP} NAME_WE) # e.g. freeverb_clap - string(REPLACE "_clap" "" PLUGIN_NAME ${FILENAME}) # strip _clap + get_filename_component(FILENAME ${FAUST_CPP} NAME_WE) + string(REPLACE "_clap" "" PLUGIN_NAME ${FILENAME}) - #declare the plugin module add_library(${PLUGIN_NAME} MODULE ${FAUST_CPP}) - #add plugin.cc to get full implementation of clap::helpers::Plugin<> - target_sources(${PLUGIN_NAME} - PRIVATE - ${CMAKE_SOURCE_DIR}/lib/plugin.cc - ) + target_sources(${PLUGIN_NAME} PRIVATE ${FAUST2CLAP_ROOT}/lib/plugin.cc) - #include necessary directories for compilation target_include_directories(${PLUGIN_NAME} PRIVATE - ${CMAKE_SOURCE_DIR}/../../build - ${CMAKE_SOURCE_DIR}/../../architecture - ${CMAKE_SOURCE_DIR}/architecture/faust/gui - ${CMAKE_SOURCE_DIR}/architecture/faust/midi - ${CMAKE_SOURCE_DIR}/../../architecture/faust/dsp - ${CMAKE_SOURCE_DIR}/../../external/clap-helpers/include - ${CMAKE_SOURCE_DIR}/../../external/clap-sdk/include - ${RTMIDI_INCLUDE_DIR} # RtMidi include path - ${CMAKE_SOURCE_DIR}/../../build/${PLUGIN_NAME} + ${CMAKE_BINARY_DIR} + ${FAUST2CLAP_ROOT}/architecture + ${FAUST2CLAP_ROOT}/architecture/faust/gui + ${FAUST_INCLUDE_DIR} + ${FAUST2CLAP_ROOT}/architecture/faust/midi + ${FAUST2CLAP_ROOT}/architecture/faust/dsp + ${FAUST2CLAP_ROOT}/external/clap-helpers/include + ${FAUST2CLAP_ROOT}/external/clap-sdk/include + ${RTMIDI_INCLUDE_DIR} + ${CMAKE_BINARY_DIR}/${PLUGIN_NAME} ) - #link against the clap core library and clap helpers and GUI glue target_link_libraries(${PLUGIN_NAME} PRIVATE clap clap-helpers faust_gui_glue - ${RTMIDI_LIBRARY} # RtMidi dynamic library + ${RTMIDI_LIBRARY} ) - #use one shared plist template for all configure_file( - ${CMAKE_SOURCE_DIR}/cmake/generic.plist.in + ${FAUST2CLAP_ROOT}/cmake/generic.plist.in ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.plist @ONLY ) - #set bundle properties for macOS set_target_properties(${PLUGIN_NAME} PROPERTIES OUTPUT_NAME ${PLUGIN_NAME} BUNDLE TRUE @@ -94,7 +100,6 @@ foreach(FAUST_CPP ${FAUST_SOURCES}) MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.plist ) - #copy plugin to user's system folder after build if (APPLE AND COPY_AFTER_BUILD) message(STATUS "Will copy plugin '${PLUGIN_NAME}' after build") set(products_folder ${CMAKE_BINARY_DIR}) @@ -108,3 +113,8 @@ foreach(FAUST_CPP ${FAUST_SOURCES}) ) endif() endforeach() + +# Optional: install the faust2clap CLI +install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/faust2clap.sh + DESTINATION bin + RENAME faust2clap) \ No newline at end of file diff --git a/tools/faust2clap/README.md b/tools/faust2clap/README.md index 77b3f85c7f..34ed112096 100644 --- a/tools/faust2clap/README.md +++ b/tools/faust2clap/README.md @@ -12,6 +12,7 @@ In addition to this static mode, a dynamic implementation has been added. In thi ## Features - βœ… Generate CLAP plugins directly from Faust (.dsp file) code +- βœ… Modern CLI tool with global install support - βœ… Hot-reloading of DSP: update `.dsp` files without restarting the host or closing the plugin - βœ… Parameter discovery and synchronisation with host - βœ… MIDI and polyphonic support via Faust’s `mydsp_poly` @@ -22,51 +23,55 @@ In addition to this static mode, a dynamic implementation has been added. In thi ## πŸ’» Usage -### πŸ› οΈ Static build -Generate and build a static CLAP plugin from your DSP file -```python -python tools/faust2clap/faust2clap.py your_file.dsp +### 🌍 Global Installation + +Install `faust2clap` globally (CLI + dependencies): + +```bash +cd tools/faust2clap +chmod +x install-faust2clap.sh +sudo ./install-faust2clap.sh ``` -```shell -optional flags: - -mono generate monophonic plugin - -poly generate polyphonic plugin (default) - -nvoices N set number of polyphonic voices (default: 16) + +### πŸ› οΈ Static Plugin Generation +Generate and build a static CLAP plugin from your DSP file's directory + +```bash +faust2clap your_file.dsp ``` -The plugin will be automatically built and installed to: ```shell -~/Library/Audio/Plug-Ins/CLAP/your_file.clap +optional arguments: + --mono generate monophonic plugin + --poly generate polyphonic plugin (default) + -nvoices N number of polyphonic voices (default: 16) + --dry-run simulate build without compiling ``` -### Dynamic (Interpreter) mode -Build the dynamic hot-reload plugin ```bash -cd architecture/clap -make -f Makefile.simple +faust2clap myplugin.dsp +faust2clap --dynamic --install ``` -Install to system plugin directories +### Dynamic Plugin (Hot Reload) +Build the dynamic hot-reload plugin ```bash -make -f Makefile.simple install +faust2clap --dynamic --install ``` + +Install to system plugin directories + The dynamic plugin (FaustDynamic.clap) will be installed to: ```bash ~/Library/Audio/Plug-Ins/CLAP/ ~/.clap/plugins/ ``` -Clean build artifacts -```bash -make -f Makefile.simple clean -``` - Once installed, use the GUI to load DSP files for hot-reloading: Run the hot-reload GUI controller ```bash -cd architecture/clap -python faust-hot-reload.py +faust2clap --gui ``` The GUI allows you to: - Browse and load .dsp files diff --git a/tools/faust2clap/faust2clap.py b/tools/faust2clap/faust2clap.py index 7fa43aa65f..13faf8c550 100755 --- a/tools/faust2clap/faust2clap.py +++ b/tools/faust2clap/faust2clap.py @@ -1,89 +1,255 @@ #!/usr/bin/env python3 + +##################################################################### +# # +# faust2clap # +# (c) Grame & Facundo Franchino, 2025 # +# # +##################################################################### + import sys #cli arguments import os #file path manipulation import subprocess #run shell commands import json import re -import argparse +import argparse +import time +from pathlib import Path +import shutil + +def generate_info_plist(app_name, identifier, version, executable_name): + return f""" + + + + CFBundlePackageType + BNDL + CFBundleExecutable + {executable_name} + CFBundleIdentifier + {identifier} + CFBundleName + {app_name} + CFBundleVersion + {version} + + +""" + +def get_dynamic_plugin_metadata(): + return { + "app_name": "FaustDynamic", + "identifier": "org.faust.dynamic", + "version": "1.0.0", + "executable_name": "FaustDynamic" + } + +def symlink_external(name, install_root): + """Symlink an external/ dependency (clap-helpers or clap-sdk) into ~/.faust2clap.""" + source = (install_root / "external" / name).resolve() + dest = Path.home() / ".faust2clap" / "external" / name + + if dest.exists(): + print(f"{CYAN}[*] {name} already exists at: {dest}{RESET}") + else: + try: + print(f"{CYAN}[*] Symlinking {name} β†’ {dest}{RESET}") + dest.parent.mkdir(parents=True, exist_ok=True) + dest.symlink_to(source) + except Exception as e: + print(f"{RED}[!] Failed to symlink {name}: {e}{RESET}") + sys.exit(1) + +# colours for terminal output +GREEN = "\033[92m" +RED = "\033[91m" +CYAN = "\033[96m" +YELLOW = "\033[93m" +RESET = "\033[0m" + +def locate_clap_architecture_file(): + """Locate the clap-arch.cpp file used for generating plugins.""" + + # try using `faust --archdir` + try: + archdir = subprocess.check_output(["faust", "--archdir"], universal_newlines=True).strip() + candidate = Path(archdir) / "clap" / "clap-arch.cpp" + if candidate.exists(): + return candidate.resolve() + except Exception: + pass + + # try FAUST_LIB env variable + faust_lib = os.environ.get("FAUST_LIB") + if faust_lib: + candidate = Path(faust_lib) / "clap" / "clap-arch.cpp" + if candidate.exists(): + return candidate.resolve() + + # fallback to bundled path relative to this script + script_dir = Path(__file__).resolve().parent + bundled = (script_dir / ".." / ".." / "architecture" / "clap" / "clap-arch.cpp").resolve() + if bundled.exists(): + return bundled + + # try standard install locations + fallback_paths = [ + "/usr/local/share/faust/architecture/clap/clap-arch.cpp", + "/opt/homebrew/share/faust/architecture/clap/clap-arch.cpp", # apple silicon + "/usr/share/faust/architecture/clap/clap-arch.cpp", + ] + for path in fallback_paths: + if Path(path).exists(): + return Path(path).resolve() + # nothing worked β€” fail + print(f"{RED}[!] Could not locate 'clap-arch.cpp' file.{RESET}") + print(f"{RED}[!] Tried:{RESET}") + print(f" - faust --archdir") + print(f" - $FAUST_LIB/clap/clap-arch.cpp") + print(f" - bundled relative path near this script: {bundled}") + for path in fallback_paths: + print(f" - {path}") + sys.exit(1) + +def locate_clap_dir(): + """Try to locate the architecture/clap directory.""" + + # prefer FAUST_SRC if set + faust_src = os.environ.get("FAUST_SRC") + if faust_src: + candidate = Path(faust_src) / "architecture" / "clap" + if candidate.is_dir(): + return candidate.resolve() + + # try walking from the script location + script_path = Path(__file__).resolve() + for parent in script_path.parents: + candidate = parent / "architecture" / "clap" + if candidate.is_dir(): + return candidate.resolve() + print(f"{RED}[!] Could not locate architecture/clap directory.{RESET}") + print(f"{RED}[!] Tried:{RESET}") + print(f" - $FAUST_SRC") + for path in fallback_paths: + print(f" {path}") + print(f"{YELLOW}[i] If you're running from a global install, try setting FAUST_SRC to your Faust repo path.{RESET}") + print(f"{CYAN}[*] Using clap_dir from: {clap_dir}{RESET}") + sys.exit(1) + +def build_dynamic_plugin(install=False): + global clap_dir + + clap_dir = ( + Path(os.environ["FAUST_SRC"]) / "architecture" / "clap" + if "FAUST_SRC" in os.environ + else Path(os.path.dirname(__file__)) / "architecture" / "clap" + ) + make_cmd = ["make", "-f", "Makefile.simple"] + + try: + print(f"{CYAN}[*] Building dynamic plugin in: {clap_dir}{RESET}") + subprocess.run(make_cmd, cwd=clap_dir, check=True) + print(f"{GREEN}[βœ“] Built dynamic plugin{RESET}") + + if install: + # create proper macOS bundle layout + plugin_binary = clap_dir / "FaustDynamic.clap" + bundle_dir = Path.home() / "Library" / "Audio" / "Plug-Ins" / "CLAP" / "FaustDynamic.clap" + contents_dir = bundle_dir / "Contents" / "MacOS" + plist_path = bundle_dir / "Contents" / "Info.plist" + + shutil.rmtree(bundle_dir, ignore_errors=True) + + # create directories + contents_dir.mkdir(parents=True, exist_ok=True) + + # move binary + shutil.copy2(plugin_binary, contents_dir / "FaustDynamic") + + # write Info.plist + info = get_dynamic_plugin_metadata() + plist_contents = generate_info_plist( + app_name=info["app_name"], + identifier=info["identifier"], + version=info["version"], + executable_name=info["executable_name"] + ) + with open(plist_path, "w") as f: + f.write(plist_contents) + print(f"{GREEN}[βœ“] Info.plist written to: {plist_path}{RESET}") + print(f"{GREEN}[βœ“] Bundled and installed dynamic plugin as .clap bundle{RESET}") + print(f"{GREEN}[βœ“] Installed dynamic plugin{RESET}") + except subprocess.CalledProcessError as e: + print(f"{RED}[!] Error building dynamic plugin: {e}{RESET}") + sys.exit(1) -#config -ARCH_REL_PATH="architecture/clap/clap-arch.cpp" -OUTPUT_ROOT="build" +def launch_hot_reload_gui(): + clap_dir = locate_clap_dir() + gui_path = clap_dir / "faust-hot-reload.py" -#parse command line arguments properly -parser = argparse.ArgumentParser(description='faust2clap - Generate CLAP plugins from Faust DSP code') -parser.add_argument('dsp_file', help='Input .dsp file') + if not gui_path.exists(): + print(f"{RED}[!] GUI not found at: {gui_path}{RESET}") + return + try: + subprocess.run(["python3", str(gui_path)]) + except Exception as e: + print(f"{RED}[!] Error launching GUI: {e}{RESET}") + +parser = argparse.ArgumentParser( + description='faust2clap: Generate CLAP plugins from Faust DSP code - by Facundo Franchino', + formatter_class=argparse.ArgumentDefaultsHelpFormatter +) +parser.add_argument('--version', action='version', version='faust2clap 1.0.0') +parser.add_argument('dsp_file', nargs='?', help='Input .dsp file') parser.add_argument('-nvoices', type=int, default=16, help='Number of polyphonic voices (default: 16)') parser.add_argument('-mono', action='store_true', help='Generate monophonic plugin instead of polyphonic') parser.add_argument('-poly', action='store_true', help='Generate polyphonic plugin (default behaviour)') - +parser.add_argument('--dry-run', action='store_true', help='Run without generating or building anything') +parser.add_argument('--dynamic', action='store_true', help='Build the dynamic plugin to load any .dsp file at run-time (interpreter-based)') +parser.add_argument('--install', action='store_true', help='Install the dynamic plugin after building it (requires --dynamic)') +parser.add_argument('--gui', action='store_true', help='Launch the hot-reload GUI (faust-hot-reload.py)') args = parser.parse_args() -dsp_path = args.dsp_file #full path to the provided .dsp file +# dynamic mode +if args.dynamic: + if args.dsp_file: + print("[i] Ignoring DSP file, since --dynamic mode doesn't compile a specific file.") + build_dynamic_plugin(install=args.install) + if args.gui: + launch_hot_reload_gui() + sys.exit(0) + +#GUI only +if args.gui: + launch_hot_reload_gui() + sys.exit(0) + +#check for .dsp file +if not args.dsp_file: + print(f"{RED}[!] Error: No .dsp file provided.{RESET}") + sys.exit(1) + +dsp_path = os.path.abspath(args.dsp_file) #full path to the provided .dsp file nvoices = args.nvoices # Note: is_polyphonic will be set later based on auto-detection or user override if not os.path.isfile(dsp_path): - print(f"[!] dsp file not found: {dsp_path}") + print(f"{RED}[!] dsp file not found: {dsp_path}{RESET}") sys.exit(1) base=os.path.splitext(os.path.basename(dsp_path))[0] #name minus extension (.dsp) out_cpp=f"{base}_clap.cpp" #target outpu filename -#locate arch file using faust command -this_dir=os.path.dirname(os.path.abspath(__file__)) - # try to get architecture directory from faust itself -arch_path = None -faust_root = None +arch_path = str(locate_clap_architecture_file()) -try: - # use faust --archdir to get the architecture directory - arch_dir = subprocess.check_output(["faust", "--archdir"], universal_newlines=True).strip() - arch_path_from_faust = os.path.join(arch_dir, "clap/clap-arch.cpp") - if os.path.isfile(arch_path_from_faust): - arch_path = arch_path_from_faust - # get faust root from libdir - faust_root = subprocess.check_output(["faust", "--libdir"], universal_newlines=True).strip() -except (subprocess.CalledProcessError, FileNotFoundError): - # faust command not available or failed - pass - -# fallback: try other possible locations if faust command didn't work -if not arch_path: - possible_paths = [ - # relative to script location (development setup) - os.path.join(this_dir, "../..", ARCH_REL_PATH), - # check FAUST_LIB environment variable - os.path.join(os.environ.get("FAUST_LIB", ""), ARCH_REL_PATH) if os.environ.get("FAUST_LIB") else "", - # system-wide fallbacks (last resort) - f"/usr/local/share/faust/{ARCH_REL_PATH}", - f"/usr/share/faust/{ARCH_REL_PATH}", - f"/opt/homebrew/share/faust/{ARCH_REL_PATH}", - ] - - for path in possible_paths: - if path and os.path.isfile(path): - arch_path = path - # determine faust_root based on which path worked - if "share/faust" in path: - faust_root = path.split("share/faust")[0] + "share/faust" - elif os.environ.get("FAUST_LIB"): - faust_root = os.environ.get("FAUST_LIB") - else: - faust_root = os.path.abspath(os.path.join(os.path.dirname(path), "../..")) - break - -if not arch_path: - print(f"[!]missing architecture file: {ARCH_REL_PATH}") - print("[!]Try running: faust --archdir") - print("[!]Or set FAUST_LIB environment variable") - print("[!]Make sure Faust is properly installed and in PATH") - sys.exit(1) +# we'll build everything in ./build/ +plugin_name = os.path.splitext(os.path.basename(args.dsp_file))[0] +output_dir = Path.cwd() / "build" / plugin_name -#create output directory -output_dir=os.path.join(faust_root, OUTPUT_ROOT,base) +# make sure the output directory exists os.makedirs(output_dir, exist_ok=True) -out_cpp_path=os.path.join(output_dir,out_cpp) +out_cpp_path = os.path.join(output_dir, out_cpp) #extract metadata from the .dsp using faust -json def extract_metadata(dsp_path): @@ -96,7 +262,7 @@ def extract_metadata(dsp_path): metadata.update(entry) return metadata except (subprocess.CalledProcessError, json.JSONDecodeError, Exception) as e: - print(f"[i] JSON metadata not available, falling back to C++ parsing.") + print(f"{YELLOW}[i] JSON metadata not available, falling back to C++ parsing.{RESET}") #final fallback: parse -lang cpp output for m->declare("...", "...") try: @@ -110,7 +276,7 @@ def extract_metadata(dsp_path): metadata[key] = value return metadata except Exception as e: - print(f"[!] failed to fallback-parse cpp metadata: {e}") + print(f"{YELLOW}[!] failed to fallback-parse cpp metadata: {e}{RESET}") return {} metadata = extract_metadata(dsp_path) @@ -164,8 +330,6 @@ def detect_dsp_type(dsp_path, metadata): except: pass - #default to effect for safety (effects work for both cases) - print(f"[i] Defaulting to EFFECT mode") return 'effect' dsp_type = detect_dsp_type(dsp_path, metadata) @@ -190,7 +354,7 @@ def detect_dsp_type(dsp_path, metadata): #generate plugin_metadata.h metadata_header_path = os.path.join(output_dir, "plugin_metadata.h") -print(f"[i] Add this to your CMakeLists.txt:") +print(f"{CYAN}[i] Add this to your CMakeLists.txt:{RESET}") print(f' include_directories("{output_dir}")') with open(metadata_header_path, "w") as f: f.write(f'#define FAUST_PLUGIN_ID "{plugin_id}"\n') @@ -201,7 +365,7 @@ def detect_dsp_type(dsp_path, metadata): f.write(f'#define FAUST_NVOICES {nvoices}\n') f.write(f'#define FAUST_IS_POLYPHONIC {"1" if is_polyphonic else "0"}\n') -print("[*] extracted metadata:") +print(f"{CYAN}[*] extracted metadata:{RESET}") print(f" id: {plugin_id}") print(f" name: {plugin_name}") print(f" vendor: {plugin_vendor}") @@ -210,41 +374,55 @@ def detect_dsp_type(dsp_path, metadata): print(f" polyphonic: {is_polyphonic}") print(f" voices: {nvoices}") - #run faust to generate the plugin source file -try: - subprocess.run(["faust", "-a", arch_path, dsp_path, "-o", out_cpp_path], check=True) - print(f"[βœ“] generated: {out_cpp_path}") -except subprocess.CalledProcessError: - print("[!] faust compilation failed.") - sys.exit(1) +if args.dry_run: + print(f"{GREEN}[βœ“] Dry run: skipping Faust C++ generation.{RESET}") +else: + try: + subprocess.run(["faust", "-a", arch_path, dsp_path, "-o", out_cpp_path], check=True) + print(f"{GREEN}[βœ“] generated: {out_cpp_path}{RESET}") + except subprocess.CalledProcessError: + print(f"{RED}[!] faust compilation failed.{RESET}") + + sys.exit(1) + +#dry run +if args.dry_run: + print(f"{GREEN}[βœ“] Dry run: Skipping CMake configuration and build.{RESET}") + sys.exit(0) +start_time = time.time() #run cMake with macOS sdk path to find stdlib headers try: - print("[*] running cmake build") sdk_path = subprocess.check_output(["xcrun", "--sdk", "macosx", "--show-sdk-path"], universal_newlines=True).strip() cxx_include_path = "/Library/Developer/CommandLineTools/usr/include/c++/v1" + faust2clap_cmake_dir = Path(__file__).resolve().parent + build_dir = os.path.abspath(output_dir) # reusing generated output dir + +# decided to hardcode faust2clap_cmake_dir so a little safeguard can help a fail to be early and clear +# so add a defensive check to make sure CMakeLists.txt exists + if not os.path.isfile(os.path.join(faust2clap_cmake_dir, "CMakeLists.txt")): + print(f"{RED}[!] CMakeLists.txt not found in {faust2clap_cmake_dir}{RESET}") + + sys.exit(1) + subprocess.run([ - "cmake", "-S", ".", "-B", "build", + "cmake", "-S", faust2clap_cmake_dir, "-B", build_dir, f"-DCMAKE_CXX_FLAGS=-isysroot {sdk_path} -I{cxx_include_path}" - ], cwd=this_dir, check=True, capture_output=True) + ], check=True, capture_output=True) - subprocess.run(["cmake", "--build", "build"], cwd=this_dir, check=True, capture_output=True) - - print("[βœ“] build completed successfully.") + subprocess.run(["cmake", "--build", build_dir], check=True, capture_output=True) + +# wee change here, let's also print the build directory, if succesful + print(f"{GREEN}[βœ“] build completed successfully. Plugin is in: {build_dir}{RESET}") + duration = time.time() - start_time + print(f"{GREEN}βœ“ Done in {duration:.2f}s{RESET}") except subprocess.CalledProcessError as e: - print("[!] cmake build failed.") - print(f"[stderr]\n{e.stderr.decode() if e.stderr else 'No stderr'}") - print(f"[stdout]\n{e.stdout.decode() if e.stdout else 'No stdout'}") - sys.exit(1) + print(f"{RED}[!] cmake build failed.{RESET}") + print(f"{RED}[stderr]\n{e.stderr.decode() if e.stderr else 'No stderr'}{RESET}") + print(f"{RED}[stdout]\n{e.stdout.decode() if e.stdout else 'No stdout'}{RESET}") - -except subprocess.CalledProcessError as e: - print("[!] cmake build failed.") - print(f"[stderr]\n{e.stderr.decode() if e.stderr else 'No stderr'}") - print(f"[stdout]\n{e.stdout.decode() if e.stdout else 'No stdout'}") - sys.exit(1) diff --git a/tools/faust2clap/faust2clap.sh b/tools/faust2clap/faust2clap.sh new file mode 100755 index 0000000000..16eb6e98c6 --- /dev/null +++ b/tools/faust2clap/faust2clap.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# created by Facundo Franchino + +##################################################################### +# # +# faust2clap generator # +# (c) Grame & Facundo Franchino, 2025 # +# # +##################################################################### + +# wrapper for faust2clap.py +# runs the script from its actual location (not from /usr/local/bin) + +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do + DIR="$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)" + SOURCE="$(readlink "$SOURCE")" + [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" +done +SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)" +python3 "${SCRIPT_DIR}/faust2clap.py" "$@" diff --git a/tools/faust2clap/install-faust2clap.sh b/tools/faust2clap/install-faust2clap.sh new file mode 100755 index 0000000000..516fb07c95 --- /dev/null +++ b/tools/faust2clap/install-faust2clap.sh @@ -0,0 +1,75 @@ +#!/bin/bash +set -euo pipefail + +##################################################################### +# # +# install-faust2clap.sh - setup for global faust2clap # +# (c) Grame & Facundo Franchino # +# # +##################################################################### + +INSTALL_ROOT="/usr/local/share/faust2clap" +BIN_LINK="/usr/local/bin/faust2clap" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" + +# create install location +sudo mkdir -p "$INSTALL_ROOT" + +# copy full required folders from REPO_ROOT +for dir in architecture external; do + if [ -d "$REPO_ROOT/$dir" ]; then + sudo cp -R "$REPO_ROOT/$dir" "$INSTALL_ROOT/" + else + echo "⚠️ Skipping missing directory: $dir" + fi +done + +# Copy lib from tool subdir instead +if [ -d "$SCRIPT_DIR/lib" ]; then + sudo cp -R "$SCRIPT_DIR/lib" "$INSTALL_ROOT/" +else + echo "⚠️ Missing lib directory in tools/faust2clap" +fi + +# copy core files from SCRIPT_DIR (tools/faust2clap) +for file in faust2clap.py faust2clap.sh CMakeLists.txt; do + if [ -f "$SCRIPT_DIR/$file" ]; then + sudo cp "$SCRIPT_DIR/$file" "$INSTALL_ROOT/" + else + echo "⚠️ Missing expected file: $file" + fi +done + +# create CLI symlink +sudo ln -sf "$INSTALL_ROOT/faust2clap.sh" "$BIN_LINK" +sudo chmod +x "$INSTALL_ROOT/faust2clap.sh" + +# optional: install libfaust.dylib +FAUST_LIB_SRC="$REPO_ROOT/build/lib/libfaust.dylib" +FAUST_LIB_DEST="/usr/local/lib/libfaust.dylib" + +if [ -f "$FAUST_LIB_SRC" ]; then + if [ ! -f "$FAUST_LIB_DEST" ]; then + sudo cp "$FAUST_LIB_SRC" "$FAUST_LIB_DEST" + echo "βœ… libfaust.dylib installed." + else + echo "ℹ️ libfaust.dylib already exists in /usr/local/lib" + fi +else + echo "⚠️ libfaust.dylib not found in expected build location." + echo "πŸ”¨ Attempting to build libfaust..." + cd "$REPO_ROOT" + make -j$(sysctl -n hw.ncpu || echo 4) + + if [ -f "$FAUST_LIB_SRC" ]; then + sudo cp "$FAUST_LIB_SRC" "$FAUST_LIB_DEST" + echo "βœ… libfaust.dylib installed after build." + else + echo "❌ Still missing libfaust.dylib after build. Please verify Faust is built." + fi +fi + +echo "βœ… faust2clap installed to: $INSTALL_ROOT" +echo "πŸ‘‰ Try: faust2clap --dynamic --install" +echo "πŸ‘‰ Try: faust2clap myeffect.dsp" \ No newline at end of file From cb8456941a4eb4efb73e7047a76596cf3e1d7611 Mon Sep 17 00:00:00 2001 From: cucuwritescode Date: Thu, 6 Nov 2025 13:07:09 +0000 Subject: [PATCH 3/3] stephane suggestions moved all plugin.cc and faust_gui_glue.cpp to architecture/clap improved gui for hot-reload python app, and added a "GRAME" desktop icon for it --- architecture/clap/Makefile.simple | 16 ++++++- .../clap}/faust_gui_glue.cpp | 0 architecture/clap/gui_stuff/grame.icns | Bin 0 -> 205055 bytes .../lib => architecture/clap}/plugin.cc | 0 tools/faust2clap/CMakeLists.txt | 4 +- tools/faust2clap/faust2clap.py | 25 +++++----- tools/faust2clap/faust2clap.sh | 4 ++ tools/faust2clap/install-faust2clap.sh | 45 ++++++++++++++++-- 8 files changed, 75 insertions(+), 19 deletions(-) rename {tools/faust2clap/lib => architecture/clap}/faust_gui_glue.cpp (100%) create mode 100644 architecture/clap/gui_stuff/grame.icns rename {tools/faust2clap/lib => architecture/clap}/plugin.cc (100%) diff --git a/architecture/clap/Makefile.simple b/architecture/clap/Makefile.simple index 2d1ec23a47..e826edc84a 100644 --- a/architecture/clap/Makefile.simple +++ b/architecture/clap/Makefile.simple @@ -31,7 +31,7 @@ EFSW_SRC := $(FAUST2CLAP_ROOT)/external/efsw/src EFSW_LIB := $(FAUST2CLAP_ROOT)/external/efsw/build/libefsw-static.a INCLUDES = \ - -I../../architecture \ + -I$(FAUST2CLAP_ROOT)/architecture \ -I$(FAUST2CLAP_ROOT)/external/clap-sdk/include \ -I$(FAUST2CLAP_ROOT)/external/clap-helpers/include \ -I$(FAUST2CLAP_ROOT)/external/efsw/include \ @@ -75,9 +75,21 @@ interpreter-clap.o: interpreter-clap.cpp interpreter-clap.h @echo "πŸ”¨ Compiling Faust interpreter interface..." $(CXX) $(CXXFLAGS) $(INCLUDES) -c interpreter-clap.cpp -o $@ + +# Build efsw automatically if missing +ifeq ("$(wildcard $(EFSW_LIB))","") +$(info ⚠️ efsw not built yet – will build it now) +NEED_EFSW := 1 +endif + + $(EFSW_LIB): @echo "πŸ”¨ Building efsw..." - cd $(FAUST2CLAP_ROOT)/external/efsw && mkdir -p build && cd build && cmake .. && make efsw-static + cd $(FAUST2CLAP_ROOT)/external/efsw && \ + mkdir -p build && \ + cd build && \ + cmake .. && \ + make efsw-static install: $(TARGET) @echo "πŸ“¦ Installing $(TARGET)..." diff --git a/tools/faust2clap/lib/faust_gui_glue.cpp b/architecture/clap/faust_gui_glue.cpp similarity index 100% rename from tools/faust2clap/lib/faust_gui_glue.cpp rename to architecture/clap/faust_gui_glue.cpp diff --git a/architecture/clap/gui_stuff/grame.icns b/architecture/clap/gui_stuff/grame.icns new file mode 100644 index 0000000000000000000000000000000000000000..b92d801f838b02fdd3123fa9cf644ece50fc7cbc GIT binary patch literal 205055 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

S2|Ija&D)w@mHwBr$p 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 E*|=S(*8l(j literal 0 HcmV?d00001 diff --git a/tools/faust2clap/lib/plugin.cc b/architecture/clap/plugin.cc similarity index 100% rename from tools/faust2clap/lib/plugin.cc rename to architecture/clap/plugin.cc diff --git a/tools/faust2clap/CMakeLists.txt b/tools/faust2clap/CMakeLists.txt index 1083860293..9d873f7607 100644 --- a/tools/faust2clap/CMakeLists.txt +++ b/tools/faust2clap/CMakeLists.txt @@ -30,7 +30,7 @@ add_subdirectory(${FAUST2CLAP_ROOT}/external/clap-sdk clap-sdk) add_subdirectory(${FAUST2CLAP_ROOT}/external/clap-helpers clap-helpers) # GUI glue lib -add_library(faust_gui_glue STATIC ${FAUST2CLAP_ROOT}/lib/faust_gui_glue.cpp) +add_library(faust_gui_glue STATIC ${FAUST2CLAP_ROOT}/architecture/clap/faust_gui_glue.cpp) target_include_directories(faust_gui_glue PRIVATE ${FAUST2CLAP_ROOT}/architecture @@ -62,7 +62,7 @@ foreach(FAUST_CPP ${FAUST_SOURCES}) add_library(${PLUGIN_NAME} MODULE ${FAUST_CPP}) - target_sources(${PLUGIN_NAME} PRIVATE ${FAUST2CLAP_ROOT}/lib/plugin.cc) + target_sources(${PLUGIN_NAME} PRIVATE ${FAUST2CLAP_ROOT}/architecture/clap/plugin.cc) target_include_directories(${PLUGIN_NAME} PRIVATE ${CMAKE_BINARY_DIR} diff --git a/tools/faust2clap/faust2clap.py b/tools/faust2clap/faust2clap.py index 13faf8c550..05f8145826 100755 --- a/tools/faust2clap/faust2clap.py +++ b/tools/faust2clap/faust2clap.py @@ -139,13 +139,20 @@ def locate_clap_dir(): def build_dynamic_plugin(install=False): global clap_dir - + clap_dir = ( - Path(os.environ["FAUST_SRC"]) / "architecture" / "clap" - if "FAUST_SRC" in os.environ - else Path(os.path.dirname(__file__)) / "architecture" / "clap" + Path(os.environ["FAUST_SRC"]) / "architecture" / "clap" + if "FAUST_SRC" in os.environ + else Path(os.path.dirname(__file__)) / "architecture" / "clap" ) - make_cmd = ["make", "-f", "Makefile.simple"] + + # explicitly use the fallback location for Makefile.simple + makefile_path = "/usr/local/share/faust2clap/Makefile.simple" + if not Path(makefile_path).exists(): + print(f"{RED}[!] Missing Makefile.simple at: {makefile_path}{RESET}") + sys.exit(1) + + make_cmd = ["make", "-f", makefile_path] try: print(f"{CYAN}[*] Building dynamic plugin in: {clap_dir}{RESET}") @@ -153,21 +160,16 @@ def build_dynamic_plugin(install=False): print(f"{GREEN}[βœ“] Built dynamic plugin{RESET}") if install: - # create proper macOS bundle layout + # create proper macOS bundle layout plugin_binary = clap_dir / "FaustDynamic.clap" bundle_dir = Path.home() / "Library" / "Audio" / "Plug-Ins" / "CLAP" / "FaustDynamic.clap" contents_dir = bundle_dir / "Contents" / "MacOS" plist_path = bundle_dir / "Contents" / "Info.plist" shutil.rmtree(bundle_dir, ignore_errors=True) - - # create directories contents_dir.mkdir(parents=True, exist_ok=True) - - # move binary shutil.copy2(plugin_binary, contents_dir / "FaustDynamic") - # write Info.plist info = get_dynamic_plugin_metadata() plist_contents = generate_info_plist( app_name=info["app_name"], @@ -177,6 +179,7 @@ def build_dynamic_plugin(install=False): ) with open(plist_path, "w") as f: f.write(plist_contents) + print(f"{GREEN}[βœ“] Info.plist written to: {plist_path}{RESET}") print(f"{GREEN}[βœ“] Bundled and installed dynamic plugin as .clap bundle{RESET}") print(f"{GREEN}[βœ“] Installed dynamic plugin{RESET}") diff --git a/tools/faust2clap/faust2clap.sh b/tools/faust2clap/faust2clap.sh index 16eb6e98c6..6a7a737612 100755 --- a/tools/faust2clap/faust2clap.sh +++ b/tools/faust2clap/faust2clap.sh @@ -19,4 +19,8 @@ while [ -h "$SOURCE" ]; do [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" done SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)" +if [[ "$1" == "--gui" ]]; then + python3 "${SCRIPT_DIR}/faust-hot-reload.py" + exit 0 +fi python3 "${SCRIPT_DIR}/faust2clap.py" "$@" diff --git a/tools/faust2clap/install-faust2clap.sh b/tools/faust2clap/install-faust2clap.sh index 516fb07c95..6cab3c6843 100755 --- a/tools/faust2clap/install-faust2clap.sh +++ b/tools/faust2clap/install-faust2clap.sh @@ -25,11 +25,14 @@ for dir in architecture external; do fi done -# Copy lib from tool subdir instead -if [ -d "$SCRIPT_DIR/lib" ]; then - sudo cp -R "$SCRIPT_DIR/lib" "$INSTALL_ROOT/" +# copy gui_stuff contents into architecture/clap/gui_stuff +GUI_ASSETS_SRC="$REPO_ROOT/architecture/clap/gui_stuff" +GUI_ASSETS_DEST="$INSTALL_ROOT/architecture/clap/gui_stuff" +if [ -d "$GUI_ASSETS_SRC" ]; then + sudo mkdir -p "$GUI_ASSETS_DEST" + sudo cp -R "$GUI_ASSETS_SRC/"* "$GUI_ASSETS_DEST/" else - echo "⚠️ Missing lib directory in tools/faust2clap" + echo "⚠️ gui_stuff folder not found at: $GUI_ASSETS_SRC" fi # copy core files from SCRIPT_DIR (tools/faust2clap) @@ -41,6 +44,40 @@ for file in faust2clap.py faust2clap.sh CMakeLists.txt; do fi done +# copy Makefile.simple from architecture/clap instead +MAKEFILE_SRC="$REPO_ROOT/architecture/clap/Makefile.simple" +if [ -f "$MAKEFILE_SRC" ]; then + sudo cp "$MAKEFILE_SRC" "$INSTALL_ROOT/" +else + echo "⚠️ Missing Makefile.simple in architecture/clap" +fi + +# patch Makefile.simple include paths to point to install location +MAKEFILE_INSTALLED="$INSTALL_ROOT/Makefile.simple" +if [ -f "$MAKEFILE_INSTALLED" ]; then + sudo sed -i '' "s|../../architecture|$INSTALL_ROOT/architecture|g" "$MAKEFILE_INSTALLED" + sudo sed -i '' "s|\$(FAUST2CLAP_ROOT)/external|$INSTALL_ROOT/external|g" "$MAKEFILE_INSTALLED" +fi + +# copy GUI script from gui_stuff +GUI_SCRIPT_SRC="$REPO_ROOT/architecture/clap/faust-hot-reload.py" +if [ -f "$GUI_SCRIPT_SRC" ]; then + sudo cp "$GUI_SCRIPT_SRC" "$INSTALL_ROOT/" +else + echo "⚠️ GUI script not found at: $GUI_SCRIPT_SRC" +fi + +# copy icon asset for desktop gui +ICON_SRC="$REPO_ROOT/architecture/clap/gui_stuff/grame.icns" +ICON_DEST="$INSTALL_ROOT/architecture/clap/gui_stuff/grame.icns" + +if [ -f "$ICON_SRC" ]; then + sudo mkdir -p "$(dirname "$ICON_DEST")" + sudo cp "$ICON_SRC" "$ICON_DEST" +else + echo "⚠️ grame.icns not found at: $ICON_SRC" +fi + # create CLI symlink sudo ln -sf "$INSTALL_ROOT/faust2clap.sh" "$BIN_LINK" sudo chmod +x "$INSTALL_ROOT/faust2clap.sh"