vst.js

repository·master·Indexed 42 days ago

https://github.com/backlit-studio/vst-js

An experimental native NodeJS addon (v0.0.4) designed to launch VST3 plugins in a separate process, including support for the plugin's GUI interface. Primarily buildable for OSX, it provides functionality to initialize a plugin host via launchPlugin() and process audio blocks using processAudioBlock().

Tokens
3K
Snippets
8
Records
17
Agent score
54%

What's inside vst.js

  1. Overview of the juce_blocks_basics module

    master

    The juce_blocks_basics module is designed to discover connected BLOCKS devices and provide low-level access to their physical properties. It serves as the interface for interacting with the hardware layer of BLOCKS devices.

    Key capabilities include:

    • Device Discovery: Provides topology and status information for all connected devices.
    • Hardware Events: Provides callbacks for physical interactions, including touch events, control button presses, and rotary dial movements.
    • LED Control: Offers simple control over individual device LEDs.
    • Virtual Aggregation: Includes optional rule-based functionality to aggregate multiple physical devices into virtual devices.
  2. Overview of vst.js

    master

    vst.js is a native NodeJS addon designed to launch VST3 plugins in a separate process. This includes support for launching the plugin's GUI interface.

    Note: This library is currently in an extremely experimental state and is primarily buildable for OSX devices.

  3. Overview of Box2D integration in JUCE

    master

    This project includes the source code for the Box2D physics library, integrated as a JUCE module. The integration involves minor modifications to the original Box2D source to ensure compatibility with JUCE, specifically:

    • Adjusting include paths from absolute to relative.
    • Wrapping unguarded header files in #ifdef guards.
    • Cleaning up compiler warnings.

    For comprehensive documentation, API references, and core physics concepts, users should refer to the official Box2D website: http://box2d.org

  4. Avoid manual changes to the JuceLibraryCode folder

    master

    The src/host/JuceLibraryCode/ directory contains files that are automatically generated by the Projucer.

    Warning: All files in this folder are deleted and completely rewritten whenever the Projucer saves the project.

    To avoid data loss:

    • Do not make manual changes to files within this folder.
    • Do not place your own source files in this folder.

    If you must track these files in version control, be prepared to re-merge any manual modifications after a Projucer save operation.

  5. Install vst.js

    master

    vst.js requires several system-level dependencies to be installed before running npm install.

    Prerequisites

    1. CMake: Required as the build system. On macOS, install via Homebrew:
      brew install cmake
    2. Boost 3.6+: The project uses the Boost C++ Framework. On macOS, install via Homebrew:
      brew install boost
    3. Steinberg VST3 SDK (3.6.7+): You must manually acquire the SDK from the Steinberg Website.
      • Place the SDK at ~/SDKs/VST3
      • OR set the VST3_SDK_PATH environment variable to point to your SDK location before installing.

    NPM Installation

    Once dependencies are satisfied, install the package via npm:

    npm install vstjs
  6. Overview of IJG JPEG Software

    master

    The Independent JPEG Group (IJG) provides C software for JPEG image compression and decompression. It implements JPEG baseline, extended-sequential, and progressive compression processes.

    Key features include:

    • Library Routines: For reading and writing JPEG image files, intended for integration into other applications.
    • Sample Applications:
      • cjpeg: Converts images to JPEG format.
      • djpeg: Converts JPEG images to other formats.
      • jpegtran: Performs lossless transcoding between different JPEG processes.
      • rdjpgcom and wrjpgcom: Utilities for inserting and extracting textual comments in JFIF files.
    • Color Quantization: Includes modules for outputting to colormapped file formats or displays (can be compiled out if not needed).

    Note: JPEG is a lossy compression method. It is intended for 'real-world' scenes (photographs) and is not suitable for line drawings, cartoons, or applications requiring bit-identical output.

  7. Legal requirements for using IJG JPEG software

    master

    The IJG software is free to use and redistribute for any purpose, subject to the following conditions:

    1. No Warranty: The software is provided "AS IS". The authors accept no liability for damages.
    2. Attribution (Source Distribution): If you distribute any part of the source code, you must include this README file, including the copyright and no-warranty notice, unaltered. Any changes to the original files must be clearly indicated in accompanying documentation.
    3. Attribution (Executable Distribution): If you distribute only executable code, your documentation must state: "this software is based in part on the work of the Independent JPEG Group".
    4. No Endorsement: You may not use the names of any IJG authors or companies in advertising or publicity relating to products derived from this software.
    5. Commercial Use: Commercial use is permitted without royalty, provided that all warranty or liability claims are assumed by the product vendor.
  8. Compile and install zlib

    master

    To compile the zlib library and run the included test programs, use the following commands based on your operating system:

    Unix-like systems

    Run the configuration script, then build and install:

    ./configure; make test; make install

    General (most machines)

    make test; make install

    MSDOS

    Use the provided special makefiles, such as Makefile.msc.

    VMS

    Use make_vms.com.

    Mac OS X (Shared/Dynamic Library)

    When building a shared library on Mac OS X, you must install the library before running tests because the library location is specified within the library itself:

    make install; make test
    # For Unix
    ./configure; make test; make install
    
    # For most machines
    make test; make install
    
    # For Mac OS X shared libraries
    make install; make test
  9. Locate IJG JPEG documentation and resources

    master

    The distribution includes several documentation files for different user needs:

    User Documentation:

    • install.doc: Configuration and installation instructions.
    • usage.doc: Usage instructions for CLI tools (cjpeg, djpeg, jpegtran, rdjpgcom, wrjpgcom).
    • *.1: Unix-style man pages.
    • wizard.doc: Advanced usage for JPEG wizards.
    • change.log: Version history.

    Programmer Documentation:

    • libjpeg.doc: Instructions on how to use the JPEG library in your own programs.
    • example.c: Sample code for calling the JPEG library.
    • structure.doc: Overview of the library's internal structure.
    • coderules.doc: Coding style rules for contributors.
  10. Build libvorbis from tarball distributions

    master

    To build the Vorbis libraries from a source tarball, use the standard autotools workflow. Ensure you have the necessary build tools installed.

    Prerequisites:

    • libogg (must be distributed and built separately)
    • autoconf, automake, libtool, and pkg-config (required if building from development source)

    Build Steps:

    1. Run the configuration script to generate the Makefile.
    2. Compile the source code.
    3. (Optional) Install the libraries, headers, and manpages to system directories (requires root privileges).

    Note: If you are building from the development trunk (Subversion), run ./autogen.sh before running make.

    ./configure
    make
    
    # Optionally install as root
    make install
  11. Build libvorbis on MacOS 9 using CodeWarrior

    master

    To build Vorbis on MacOS 9, use Metroworks CodeWarrior.

    Prerequisites:

    • The Ogg libraries must already be built following the instructions in the Ogg module README.

    Build Steps:

    1. Open vorbis/mac/libvorbis.mcp.
    2. In the "Targets" pane, select everything and build the project.
    3. Repeat the process for libvorbisenc.mcp and libvorbisfile.mcp (in that specific order).
    4. The resulting debug and final shared libraries will be located in vorbis/mac/Output.

    Project Integration: To use Vorbis in a CodeWarrior project:

    • Add access paths for: ogg/include, ogg/mac/Output, vorbis/include, and vorbis/mac/Output.
    • Enable "interpret DOS and Unix paths" in the "access paths" pane of your project settings.
    • Link against the required shared libraries (at minimum OggLib and VorbisLib).
    • Include the headers: #include "ogg/ogg.h" and #include "vorbis/codec.h" in your source code.