Code Monkey home page Code Monkey logo

iplug2 / iplug2 Goto Github PK

View Code? Open in Web Editor NEW
1.8K 57.0 275.0 63.81 MB

C++ Audio Plug-in Framework for desktop, mobile and web

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

License: Other

C++ 37.53% C 52.36% Objective-C++ 5.76% Python 1.70% Shell 0.44% Objective-C 0.49% Makefile 0.19% PHP 0.20% Lex 0.03% Yacc 0.08% HTML 0.11% JavaScript 0.05% Batchfile 0.21% Inno Setup 0.13% TeX 0.01% Rich Text Format 0.04% CSS 0.02% Assembly 0.51% Metal 0.01% Vim Script 0.16%
vst audiounit aax webaudio audio plugins wasm gui audioworklet auv3

iplug2'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 2023 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 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.

iplug2's People

Contributors

alexharker avatar austensatterlee avatar azure-pipelines[bot] avatar b-vesco avatar bindernews avatar cfillion avatar ddf avatar djowel avatar dmsplugins avatar earlevel avatar enricocupellini avatar gurrgur avatar gvampgh avatar hor-net avatar jhernberg avatar justinfrankel avatar kayh avatar madronalabs avatar mmontag avatar neuroticflux avatar olilarkin avatar ppryamikov avatar pressplay-music avatar qrchackofficial avatar sletz avatar svantana avatar taletn avatar tbproaudio avatar yesitsme avatar youlean 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

iplug2's Issues

Add and test IPlugProcessor::GetIOConfig() [was workast #TPAR]

At runtime, it would be great to be able to call a method that tells you the current channel i/o setup. E.g. if you specified "1-1 2-2", IPlugBase::GetIOConfig() could return a number indicated i/o setup 2 was in action when you were running on a stereo track

to namespace IPlug or not to namespace?

Striving for a professional quality code base, I feel that we should probably namespace IPlug, and possibly also IGraphics? I wonder how disruptive it could be

add Built-in "viewport" functionality

From the JUCE documentation:

*A Viewport is used to contain a larger child component, and allows the child to be automatically scrolled around.

To use a Viewport, just create one and set the component that goes inside it using the setViewedComponent() method. When the child component changes size, the Viewport will adjust its scrollbars accordingly.*

I think I plug should have something like this, which is particularly useful for scrolling areas on mobile

Improve flicker/lag when UI first appears

Since enabling transient IGraphics contexts ( so that no textures et cetera are loaded onto the GPU until plug-in user interface is required), there is a noticeable lag seeing the UI, at least with virtualCZ. this wasn't an issue when the metal context was created before the UI was needed

Live edit control drawing in path based graphics backends

For some reason the grid and dotted rectangles don't draw in anything other than lice. I know Nano VG doesn't support dashes in paths, but Cairo and AGG should. It seems like it's something to do with the clipping in IGraphics::DrawControl.

size_t ?

Throughout the code 32 bit int values are used to represent bytecounts. It would be much more sensible to use size_t, but would have to be careful to change throughout especially with serialisation et cetera

WAM: AudioWorklet setup sub optimal

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.