This repository is based on FluidSynth repository, and contains some changes to build with Emscripten.
The original README is here: README.original.md
- (Optional) Update
emscripten/exports.txt
, containing export functions for JS program- The script
emscripten/make-exports.js
will update this automatically, gathering functions frominclude
directory.
- The script
- Make sure that Emscripten is usable on the current environment
- Make
build
directory - Enter
build
directory and executeemcmake cmake ..
- If no options are specified, and
cmake
is running withemcmake
(oremconfigure
), the build configurations are initialized for Emscripten-build mode.
- If no options are specified, and
- Make
src/gentables
directory in the currentbuild
directory - Enter
src/gentables
directory (build/src/gentables
from the root) and executecmake ../../../src/gentables
- This calls original CMake to build native
make_tables
program. Do not useemcmake
here.
- This calls original CMake to build native
- In
build/src/gentables
directory, executemake
. After successful, execute./make_tables ../../
(do not forget trailing/
character).- This is the build step originally written in
src/CMakeLists.txt
.
- This is the build step originally written in
- Return to
build
directory (cd ../..
) and executeemmake make
After successful build, libfluidsynth-<version>.js
will be created at build/src
directory.
- If
enable-debug
specified on thecmake
execution (e.g.emcmake cmake -Denable-debug=on ..
), a map filelibfluidsynth-<version>.wasm.map
is also generated.- Currently it seems that it cannot be used.
- If
enable-separate-wasm
specified on thecmake
execution (e.g.emcmake cmake -Denable-separate-wasm=on ..
),libfluidsynth-<version>.wasm
andlibfluidsynth-<version>.wast
are also generated.- For AudioWorklet, you cannot use
*.wasm
file directly.
- For AudioWorklet, you cannot use
- In Emscripten-build mode, standalone application named
fluidsynth
is not emitted.
Place libfluidsynth-<version>.js
file to your space and load libfluidsynth-<version>.js
. After load, almost all FluidSynth API functions are accessible via Module
object (note that all function names have the prefix _
).
To use libfluidsynth-<version>.js
in AudioWorklet, load it into AudioWorklet before your worklet JS file. In your worklet JS file, you can access Module
object via AudioWorkletGlobalScope.wasmModule
.
- Currently only several APIs are tested. Some APIs such as for drivers may not work.
This program and all source codes, including the original FluidSynth program, its source codes, modifications of FluidSynth source codes for building library with Emscripten, and sources codes used only for building libfluidsynth-<version>.js
, are licensed under GNU Lesser General Public License (v2.1) (LGPL v2.1).