Ingen: A Meta-Modular Plugin Environmentlac.linuxaudio.org/.../lac2015_ingen_presentation.pdf ·...
Transcript of Ingen: A Meta-Modular Plugin Environmentlac.linuxaudio.org/.../lac2015_ingen_presentation.pdf ·...
Ingen: A Meta-Modular Plugin Environment
David Robillard
School of Computer ScienceCarleton University
April 10, 2015
Introduction Design Applications The Glorious Future
Overview
“Ingen”
I Nobody? Nothing?
I That company from Jurassic Park?
I . . .
I Instrument Generator, “engine”
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Overview
What is Ingen?
I Ingen is a modular synth, effects processor, mixer, router,MIDI processor, cheese grater, chain degreaser. . .
I . . . a “modular”
I Designed around LV2 plugins
I Usable in many different contexts
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Overview
Features
I Polyphonic
I Recursive (graphs within graphs)
I Many data types (including events like MIDI)I Strict client/server architecture
I Real-time editableI Flexible deployment
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Philosophy
Philosophy
I Do one thing and do it well
I Integrate with the surrounding environment
I Make use of existing facilities
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Philosophy
Existing Facilities?
I Plugins!
I Internals Considered Harmful
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Philosophy
Surrounding Environment
In the Lignux audio world, there are several choices:
I JACK application
I LV2 plugin
I Network service
I Physical device (e.g. MOD)
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Philosophy
Philausophy
I Do one thing and do it well and do it with real-time safety
I Keep GUIs at arm’s length
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Terminology
Terminology
Ingen contains:
I Graphs
I Blocks
I Ports
I Arcs
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Terminology
A Graph
NoteInput�̤�
Frequencyℝ̤
Numberℝ̤
Velocityℝ̤
Gate☐̤
Trigger☐̤
Benderℝ̤
Pressureℝ̤ EnvGateℝ̰
Triggerℝ̰
Attack Timeℝ
Decay Timeℝ
Sustain Levelℝ
Release Timeℝ
Envelope Outℝ̰
LPFInput~
Output~
FMℝ̰
Exp FMℝ̰
Resonance Modℝ̰
Input gainℝ
Frequencyℝ
Exp FM gainℝ
Resonanceℝ
Resonance gainℝ
Filter polesℤ
Output gainℝProduct
Multiplicandℝ̰
Multiplierℝ̰
Productℝ̰
Saw VCOOutput~
Frequencyℝ̰
Exp FMℝ̰
Lin FMℝ̰
Syncℝ̰
Octaveℤ
Tuneℝ
Exp FM gainℝ
Lin FM gainℝ
LP filterℝControl�̤�
Control�̤�
Audio Out 1~
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Data Model / Protocol
Data Model
Everything is described in a simple data model:
I All objects have a path, e.g. /amp/gain
I Objects are a dictionary of properties (key:value)
I Inherently extensible: keys can be added without breakage
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Data Model / Protocol
Data Model Example
A snippet of an Ingen graph:
</osc>
a ingen:Block ;
lv2:prototype <urn:someplugin> ;
ingen:canvasX 42.0 ;
ingen:canvasY 24.0 .
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Data Model / Protocol
Protocol
Ingen is controlled by manipulating the model:
I Changes are based on property manipulationI Everything done with a few generic methods: get, set, put, . . .
I Vaguely HTTP-like
I No special “commands” for specific objectsI No: block.move to(42, 0)I Instead: set block.x = 42, block.y = 0
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Data Model / Protocol
Simple Message Example
Moving a block on the canvas:
[
a patch:Set ;
patch:subject </osc> ;
patch:property ingen:canvasX ;
patch:value 42.0 ;
]
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Data Model / Protocol
Slightly Less Simple Message Example
To add, or put, a new block:
[
a patch:Put ;
patch:subject </osc> ;
patch:body [
a ingen:Block ;
lv2:prototype <urn:someplugin> ;
ingen:canvasX 42.0 ;
ingen:canvasY 24.0 ;
]
]
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Data Model / Protocol
Who Cares?
I Elegant correspondence between protocol and data model
I Identical syntax used on the wire and in saved files
I Conceptually simple
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Uses
No, really... who other than you cares?
I Allows flexible deployment:I Ingen as server, network controlled from a different machine
I Dump text protocol for a plain text log of activity
I Run Ingen as an LV2 plugin, control via LV2 portsI Protocol in binary (LV2 atoms, native float, etc)I No shady underhanded communicationI GUI talks to engine via ports like any LV2 plugin
I Extensible, properties can be added freely
I A few methods are capable of everything
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Uses
Scenarios
I Need to put some non-linear in another host (e.g. Ardourmixer strip)
I Remote-controllable “glue” for a headless JACK boxI Want to publish a plugin but can’t or don’t want to code
I Ingen graphs are LV2 pluginsI . . . literally. No special export, no compilation; the one and
only save format is LV2 compatibleI Save to LV2 PATH (typically ~/.lv2) and graphs will be visible
in any LV2 host
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Graphs Whose Key Feature Is Fitting On One Slide
A Synth
NoteInput�̤�
Frequencyℝ̤
Numberℝ̤
Velocityℝ̤
Gate☐̤
Trigger☐̤
Benderℝ̤
Pressureℝ̤ EnvGateℝ̰
Triggerℝ̰
Attack Timeℝ
Decay Timeℝ
Sustain Levelℝ
Release Timeℝ
Envelope Outℝ̰
LPFInput~
Output~
FMℝ̰
Exp FMℝ̰
Resonance Modℝ̰
Input gainℝ
Frequencyℝ
Exp FM gainℝ
Resonanceℝ
Resonance gainℝ
Filter polesℤ
Output gainℝProduct
Multiplicandℝ̰
Multiplierℝ̰
Productℝ̰
Saw VCOOutput~
Frequencyℝ̰
Exp FMℝ̰
Lin FMℝ̰
Syncℝ̰
Octaveℤ
Tuneℝ
Exp FM gainℝ
Lin FM gainℝ
LP filterℝControl�̤�
Control�̤�
Audio Out 1~
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Graphs Whose Key Feature Is Fitting On One Slide
Flexible I/O (Sidechains)
AmplifierGainℝ̰
Input~
Output~
SC3Attack time (ms)ℝ
Release time (ms)ℝ
Threshold level (dB)ℝ
Ratio (1:n)ℝ
Knee radius (dB)ℝ
Makeup gain (dB)ℝ
Chain balanceℝ
Sidechain~
Left input~
Right input~
Left output~
Right output~
SynthControl�̤�
Left Out~
Right Out~
Control�̤�
Control*̤
Sidechain~
Left Out~
Right Out~
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Graphs Whose Key Feature Is Fitting On One Slide
MIDI Filtering
MDA DX10
MDA ePiano
MIDI Chord
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Things drobilla would rather be doing than what he gets paid to do
Mundane Improvements
I Performance / memory consumption improvements
I Better state/preset support
I Stability, more rigorous testing
I GUI polish
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment
Introduction Design Applications The Glorious Future
Things drobilla would rather be doing than what he gets paid to do
Whiz-Bang
I Control panel building (presentation mode)
I Novel presentation of patching canvas? (Pies?)
I Integrated online patch repository (MOD?)
I Dynamic ports when running as LV2 plugin
I Design plugin suite for message-based programming
I Make it as simple as possible for users to publish “plugins”
David Robillard School of Computer Science Carleton University
Ingen: A Meta-Modular Plugin Environment