Coder Social home page Coder Social logo

iplug2 / iplug2oos Goto Github PK

View Code? Open in Web Editor NEW
90.0 90.0 20.0 6.03 MB

Template to build an iPlug2 project with CI/CD and publish a WAM to github pages

Home Page: https://iplug2.github.io/iPlug2OOS/

C++ 3.18% C 3.48% Makefile 4.91% Inno Setup 8.47% Rich Text Format 3.29% TeX 0.07% Objective-C 0.76% Python 37.75% Shell 27.93% Batchfile 9.72% Dockerfile 0.43%
actions audiounit codespaces iplug2 plug-ins vst vst3 wam

iplug2oos's Introduction

iPlug 2

C++ audio plug-in framework for desktop, mobile (iOS) and web

Build Status

iPlug 2 is a simple-to-use C++ framework for developing cross-platform audio plug-ins/apps and targeting multiple plug-in APIs with the same minimalistic code. It abstracts an audio plug-in (IPlug) and its drawing engine/GUI toolkit (IGraphics). IGraphics is a simple UI toolkit with good performance which contains a collection of common controls well suited for audio plug-ins, either using bitmap or vector graphics. Alternatively examples are included showing how you can use technologies such as HTML/CSS or SwiftUI on top of a C++ DSP layer.

The recommended starting point for an iPlug2 project in 2024 can be found in a separate repo, iPlug2OOS (out-of-source)

iPlug2GPT is a customized GPT that you can use to learn how to use iPlug2.

iPlug2 API Documentation is published here and be sure to check out the iPlug2 Wiki

The original version of iPlug was released in 2008 as part of Cockos' WDL library. iPlug 2 (2018) is a substantial reworking that brings multiple vector graphics backends to IGraphics (including GPU accelerated options and HiDPI/scaling), a better approach to concurrency, support for distributed plug-in formats and compiling to WebAssembly via emscripten, amongst many other things.

iPlug 2 targets the CLAP, VST2, VST3, AUv2, AUv3, AAX (Native) and the Web Audio Module (WAM) plug-in APIs. It can also produce standalone win32/macOS apps with audio and MIDI I/O, as well as Reaper extensions. Windows 8, macOS 10.11, and iOS 14 are the official minimum target platforms, but depending on the graphics backend used, you may be able to make it work on earlier operating systems.

iPlug 2 includes support for the FAUST programming language, and the libfaust JIT compiler. It was the winner of the 2018 FAUST award.

iPlug 2 is licensed with a liberal zlib-like license, which means that it is free to use in closed source projects and is free from corporate interference.

iPlug2 discussions happen at the iPlug2 forum and on the iPlug2 discord server - see you there!

We welcome any help with bug fixes, features or documentation.

You can help support the project financially via github sponsors. With regular financial support, more time can be spent maintaining and improving the project. Even small contributions are very much appreciated.

iplug2oos's People

Contributors

jpauwels avatar olilarkin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

iplug2oos's Issues

[QUESTION] Recommended way to rename "TemplateProject"

Hi, Oli!

Question: is there an "easy" way that you'd recommend renaming everything in this repo that's called "TemplateProject" with something that I pick for my own project? I can think of doing a humongous find-and-replace, but I suspect there's something more clever that you intend to be done?

Thanks in advance!

Reaper scales layout every time it's recreated

Windows 10 VST3
Reproduction steps:

  • build template
  • launch debug with Reaper
  • add extra plugin to change drawn plugin
  • select IPlugTemplate (it's getting bigger every time it's redrawn)

Doesn't happen with iPlug2 examples.

makedist-web.sh fails if we include "MidiSynth.h"

Hello,

First of all thank you for sharing your amazing work. I've just started getting into audio plugins and your framework seemed like an interesting place to start

I've been trying to use your containerized approach since I switch between machines often. I followed your documentation but if I include "MidiSynth.h" into the template project, the web build will faill because it cannot find the file (although it exists). Below are the logs.

Logs

root@96777a05f568:/workspaces/lmusic/TemplateProject/scripts# ./makedist-web.sh
BUNDLING RESOURCES -----------------------------
Remember to build the main file with  -s FORCE_FILESYSTEM=1  so that it includes support for loading this file package
MAKING - WAM WASM MODULE -----------------------------
make: make --makefile TemplateProject-wam-processor.mk
/emsdk/upstream/emscripten/emcc -I/workspaces/lmusic/TemplateProject/projects/.. -I../../iPlug2/Dependencies/IPlug/WAM_SDK/wamsdk -I../../iPlug2/WDL -I../../iPlug2/WDL/swell -I../../iPlug2/IPlug -I../../iPlug2/IPlug/Extras -I../../iPlug2/IPlug/Extras/Faust -I../../iPlug2/IPlug/WEB -I../../iPlug2/IGraphics -I../../iPlug2/IGraphics/Drawing -I../../iPlug2/IGraphics/Controls -I../../iPlug2/IGraphics/Platforms -I../../iPlug2/IGraphics/Extras -I../../iPlug2/Dependencies/IGraphics/NanoVG/src -I../../iPlug2/Dependencies/IGraphics/NanoSVG/src -I../../iPlug2/Dependencies/IGraphics/STB -I../../iPlug2/Dependencies/IGraphics/imgui -I../../iPlug2/Dependencies/IGraphics/imgui/backends -I../../iPlug2/Dependencies/IGraphics/yoga -I../../iPlug2/Dependencies/IGraphics/yoga/yoga -std=c++17 -Wno-bitwise-op-parentheses -DWDL_NO_DEFINE_MINMAX -DNDEBUG=1 -DWAM_API -DIPLUG_DSP=1 -DNO_IGRAPHICS -DSAMPLE_TYPE_FLOAT  -s ALLOW_MEMORY_GROWTH=1 --bind -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap', 'setValue', 'UTF8ToString']" -s BINARYEN_ASYNC_COMPILATION=0 -s SINGLE_FILE=1 -O0 -s EXPORT_NAME="'AudioWorkletGlobalScope.WAM.TemplateProject'" -s ASSERTIONS=0 -s EXPORTED_FUNCTIONS="[ '_createModule','_wam_init','_wam_terminate','_wam_resize', '_wam_onprocess', '_wam_onmidi', '_wam_onsysex', '_wam_onparam', '_wam_onmessageN', '_wam_onmessageS', '_wam_onmessageA', '_wam_onpatch' ]" -o ../build-web/scripts/TemplateProject-wam.js ../../iPlug2/IPlug/IPlugAPIBase.cpp ../../iPlug2/IPlug/IPlugParameter.cpp ../../iPlug2/IPlug/IPlugPluginBase.cpp ../../iPlug2/IPlug/IPlugPaths.cpp ../../iPlug2/IPlug/IPlugTimer.cpp /workspaces/lmusic/TemplateProject/projects/../TemplateProject.cpp ../../iPlug2/IPlug/WEB/IPlugWAM.cpp ../../iPlug2/Dependencies/IPlug/WAM_SDK/wamsdk/processor.cpp ../../iPlug2/IPlug/IPlugProcessor.cpp
/workspaces/lmusic/TemplateProject/projects/../TemplateProject.cpp:3:10: fatal error: 'MidiSynth.h' file not found
#include "MidiSynth.h"
         ^~~~~~~~~~~~~
1 error generated.
emcc: error: '/emsdk/upstream/bin/clang++ -target wasm32-unknown-emscripten -DEMSCRIPTEN -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -D__EMSCRIPTEN_major__=2 -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=16 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -flegacy-pass-manager -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/compat -I/workspaces/lmusic/TemplateProject/projects/.. -I../../iPlug2/Dependencies/IPlug/WAM_SDK/wamsdk -I../../iPlug2/WDL -I../../iPlug2/WDL/swell -I../../iPlug2/IPlug -I../../iPlug2/IPlug/Extras -I../../iPlug2/IPlug/Extras/Faust -I../../iPlug2/IPlug/WEB -I../../iPlug2/IGraphics -I../../iPlug2/IGraphics/Drawing -I../../iPlug2/IGraphics/Controls -I../../iPlug2/IGraphics/Platforms -I../../iPlug2/IGraphics/Extras -I../../iPlug2/Dependencies/IGraphics/NanoVG/src -I../../iPlug2/Dependencies/IGraphics/NanoSVG/src -I../../iPlug2/Dependencies/IGraphics/STB -I../../iPlug2/Dependencies/IGraphics/imgui -I../../iPlug2/Dependencies/IGraphics/imgui/backends -I../../iPlug2/Dependencies/IGraphics/yoga -I../../iPlug2/Dependencies/IGraphics/yoga/yoga -std=c++17 -Wno-bitwise-op-parentheses -DWDL_NO_DEFINE_MINMAX -DNDEBUG=1 -DWAM_API -DIPLUG_DSP=1 -DNO_IGRAPHICS -DSAMPLE_TYPE_FLOAT -O0 /workspaces/lmusic/TemplateProject/projects/../TemplateProject.cpp -c -o /tmp/emscripten_temp_3rkppmmg/TemplateProject_5.o' failed (1)
make: *** [TemplateProject-wam-processor.mk:12: ../build-web/scripts/TemplateProject-wam.js] Error 1
emmake: error: 'make --makefile TemplateProject-wam-processor.mk' failed (2)
IPlugWAM WASM compilation failed

Am I missing something? Is it supposed not to work?

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.