iooops / webAudioPluginLib

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Web Audio Plugin Library (First Draft Version)

Mission: Creating a web audio plugin library that can help make it easier for developers to build web audio plugins for web DAW hosts.

Before we start

There're currently several projects going on for making web audio plugins.

Web Audio Modules

Web Audio Plugins

Basically, the concept of web audio plugins is to make a dynamic web page/API for the hosts to use. Typically, they can run standalone, or they can also be hosted in a web DAW.

Existing libraries that we can use

Intro: Why do we need a web audio plugin library

Typically, to build a native plugin(VST/AU/AAX,etc.), we need to not only code for audio DSP algorithms, but also the GUI part. One of the most general approaches for developing cross-DAW plugins is using the JUCE library, which has a lot of built-in dsp apis and built-in GUIs and is also easily extensible (cabbage/faust are 2 of the choices, too). Similarly, to make things easier, it's good to have a web audio plugin library.

Targetted Features

  1. Graphical User Interface: For the GUI part, there should be some generic GUI components, ideally, sliders, knobs, switch buttons, select menus, etc. Also, there should be some ways for making custom GUI components.
  2. Audio Libraries: Besides built-in web audio nodes, there're some emscripten-compiled audio libraries, like faust/csound/JUCE, porting in audioworklet. It's good to put them directly into the library and get everything set up so that audio developers can directly use them.
  3. Presets: Developers should be able to make presets, e.g. storing the predefined parameters and their corresponding names into the preset library.
  4. Parameters and Events: Setters/Getters/onMIDI/onAudio/etc. should be explicit to developers.

Some Questions

Since this project is still on its extremely early stage, there are some questions that are brought out:

  1. How to deliver the format?
  2. How to load, instantiate, and connect audio plugins? (from Web Audio Modules)
  3. How to make the GUI work correspondingly with parameteres? How to customize them?
  4. How to resolve the conflicts of using different libraries, if there's any?
  5. How to preserve the presets? JSON? javascript? How to handle preset change => params change? A: WAM processor seems to be lacking an interface used to re-initiate the processor, when a preset is loaded, it can be more efficient to re-initiate the processor than changing each parameter one by one.
  6. ......

Ideal Features of GUI components

  1. Sliders' values can be changed logarithmically.
  2. Good to have complex components which can behave like text box and slider at the same time (optional).
  3. webGL component

About


Languages

Language:C++ 70.0%Language:C 15.6%Language:Objective-C 4.4%Language:CMake 4.0%Language:Java 2.7%Language:Objective-C++ 2.3%Language:Makefile 0.4%Language:Max 0.3%Language:CSS 0.2%Language:JavaScript 0.1%Language:R 0.0%Language:HTML 0.0%Language:Python 0.0%Language:C# 0.0%Language:Shell 0.0%