summaryrefslogtreecommitdiffstats
path: root/bundles
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-08-18 00:04:37 -0400
committerDavid Robillard <d@drobilla.net>2022-08-18 01:04:36 -0400
commit6bce9e50915d730caa3bd2b60c513fe9915e4b83 (patch)
tree84ae681b9747ea809ea686dcd0a3ad889beb0d2f /bundles
parent5bec7b8de6378bc6cdac5521493a437725048330 (diff)
downloadingen-6bce9e50915d730caa3bd2b60c513fe9915e4b83.tar.gz
ingen-6bce9e50915d730caa3bd2b60c513fe9915e4b83.tar.bz2
ingen-6bce9e50915d730caa3bd2b60c513fe9915e4b83.zip
Switch to meson build system
Diffstat (limited to 'bundles')
-rw-r--r--bundles/MonoEffect.ingen/manifest.ttl16
-rw-r--r--bundles/MonoInstrument.ingen/manifest.ttl16
-rw-r--r--bundles/StereoEffect.ingen/manifest.ttl16
-rw-r--r--bundles/StereoInstrument.ingen/manifest.ttl16
-rw-r--r--bundles/ingen.lv2/MonoEffect.ttl (renamed from bundles/MonoEffect.ingen/MonoEffect.ttl)0
-rw-r--r--bundles/ingen.lv2/MonoInstrument.ttl (renamed from bundles/MonoInstrument.ingen/MonoInstrument.ttl)0
-rw-r--r--bundles/ingen.lv2/StereoEffect.ttl (renamed from bundles/StereoEffect.ingen/StereoEffect.ttl)0
-rw-r--r--bundles/ingen.lv2/StereoInstrument.ttl (renamed from bundles/StereoInstrument.ingen/StereoInstrument.ttl)0
-rw-r--r--bundles/ingen.lv2/manifest.ttl24
-rw-r--r--bundles/ingen.lv2/meson.build44
-rw-r--r--bundles/ingen.lv2/style.css805
-rw-r--r--bundles/meson.build4
12 files changed, 877 insertions, 64 deletions
diff --git a/bundles/MonoEffect.ingen/manifest.ttl b/bundles/MonoEffect.ingen/manifest.ttl
deleted file mode 100644
index 4484811a..00000000
--- a/bundles/MonoEffect.ingen/manifest.ttl
+++ /dev/null
@@ -1,16 +0,0 @@
-@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
-@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
-@prefix doap: <http://usefulinc.com/ns/doap#> .
-@prefix ingen: <http://drobilla.net/ns/ingen#> .
-@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
-@prefix owl: <http://www.w3.org/2002/07/owl#> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
-
-<MonoEffect.ttl>
- lv2:prototype ingen:GraphPrototype ;
- a ingen:Graph ,
- lv2:Plugin ;
- rdfs:seeAlso <MonoEffect.ttl> .
diff --git a/bundles/MonoInstrument.ingen/manifest.ttl b/bundles/MonoInstrument.ingen/manifest.ttl
deleted file mode 100644
index a65a5341..00000000
--- a/bundles/MonoInstrument.ingen/manifest.ttl
+++ /dev/null
@@ -1,16 +0,0 @@
-@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
-@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
-@prefix doap: <http://usefulinc.com/ns/doap#> .
-@prefix ingen: <http://drobilla.net/ns/ingen#> .
-@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
-@prefix owl: <http://www.w3.org/2002/07/owl#> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
-
-<MonoInstrument.ttl>
- lv2:prototype ingen:GraphPrototype ;
- a ingen:Graph ,
- lv2:Plugin ;
- rdfs:seeAlso <MonoInstrument.ttl> .
diff --git a/bundles/StereoEffect.ingen/manifest.ttl b/bundles/StereoEffect.ingen/manifest.ttl
deleted file mode 100644
index 5c55ef41..00000000
--- a/bundles/StereoEffect.ingen/manifest.ttl
+++ /dev/null
@@ -1,16 +0,0 @@
-@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
-@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
-@prefix doap: <http://usefulinc.com/ns/doap#> .
-@prefix ingen: <http://drobilla.net/ns/ingen#> .
-@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
-@prefix owl: <http://www.w3.org/2002/07/owl#> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
-
-<StereoEffect.ttl>
- lv2:prototype ingen:GraphPrototype ;
- a ingen:Graph ,
- lv2:Plugin ;
- rdfs:seeAlso <StereoEffect.ttl> .
diff --git a/bundles/StereoInstrument.ingen/manifest.ttl b/bundles/StereoInstrument.ingen/manifest.ttl
deleted file mode 100644
index d4cc271d..00000000
--- a/bundles/StereoInstrument.ingen/manifest.ttl
+++ /dev/null
@@ -1,16 +0,0 @@
-@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
-@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
-@prefix doap: <http://usefulinc.com/ns/doap#> .
-@prefix ingen: <http://drobilla.net/ns/ingen#> .
-@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
-@prefix owl: <http://www.w3.org/2002/07/owl#> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
-
-<StereoInstrument.ttl>
- lv2:prototype ingen:GraphPrototype ;
- a ingen:Graph ,
- lv2:Plugin ;
- rdfs:seeAlso <StereoInstrument.ttl> .
diff --git a/bundles/MonoEffect.ingen/MonoEffect.ttl b/bundles/ingen.lv2/MonoEffect.ttl
index 45f55ad5..45f55ad5 100644
--- a/bundles/MonoEffect.ingen/MonoEffect.ttl
+++ b/bundles/ingen.lv2/MonoEffect.ttl
diff --git a/bundles/MonoInstrument.ingen/MonoInstrument.ttl b/bundles/ingen.lv2/MonoInstrument.ttl
index f8a8595d..f8a8595d 100644
--- a/bundles/MonoInstrument.ingen/MonoInstrument.ttl
+++ b/bundles/ingen.lv2/MonoInstrument.ttl
diff --git a/bundles/StereoEffect.ingen/StereoEffect.ttl b/bundles/ingen.lv2/StereoEffect.ttl
index fff6ffce..fff6ffce 100644
--- a/bundles/StereoEffect.ingen/StereoEffect.ttl
+++ b/bundles/ingen.lv2/StereoEffect.ttl
diff --git a/bundles/StereoInstrument.ingen/StereoInstrument.ttl b/bundles/ingen.lv2/StereoInstrument.ttl
index 84c756c1..84c756c1 100644
--- a/bundles/StereoInstrument.ingen/StereoInstrument.ttl
+++ b/bundles/ingen.lv2/StereoInstrument.ttl
diff --git a/bundles/ingen.lv2/manifest.ttl b/bundles/ingen.lv2/manifest.ttl
index 12d3621a..616933a5 100644
--- a/bundles/ingen.lv2/manifest.ttl
+++ b/bundles/ingen.lv2/manifest.ttl
@@ -41,3 +41,27 @@ internals:Note
internals:Transport
a ingen:Plugin ;
rdfs:seeAlso <internals.ttl> .
+
+<MonoEffect.ttl>
+ a ingen:Graph ,
+ lv2:Plugin ;
+ lv2:prototype ingen:GraphPrototype ;
+ rdfs:seeAlso <MonoEffect.ttl> .
+
+<MonoInstrument.ttl>
+ a ingen:Graph ,
+ lv2:Plugin ;
+ lv2:prototype ingen:GraphPrototype ;
+ rdfs:seeAlso <MonoInstrument.ttl> .
+
+<StereoEffect.ttl>
+ a ingen:Graph ,
+ lv2:Plugin ;
+ lv2:prototype ingen:GraphPrototype ;
+ rdfs:seeAlso <StereoEffect.ttl> .
+
+<StereoInstrument.ttl>
+ a ingen:Graph ,
+ lv2:Plugin ;
+ lv2:prototype ingen:GraphPrototype ;
+ rdfs:seeAlso <StereoInstrument.ttl> .
diff --git a/bundles/ingen.lv2/meson.build b/bundles/ingen.lv2/meson.build
new file mode 100644
index 00000000..c01f4110
--- /dev/null
+++ b/bundles/ingen.lv2/meson.build
@@ -0,0 +1,44 @@
+# Copyright 2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: CC0-1.0 OR GPL-3.0-or-later
+
+data_files = files(
+ 'MonoEffect.ttl',
+ 'MonoInstrument.ttl',
+ 'StereoEffect.ttl',
+ 'StereoInstrument.ttl',
+ 'errors.ttl',
+ 'ingen.ttl',
+ 'internals.ttl',
+ 'manifest.ttl',
+)
+
+# Install bundle
+install_data(data_files, install_dir: lv2dir / 'ingen.lv2')
+
+# Ontology documentation
+lv2specgen_py = find_program('lv2specgen.py', required: get_option('docs'))
+if lv2specgen_py.found()
+ ingen_html = custom_target(
+ 'ingen.html',
+ input: files('ingen.ttl'),
+ command: [
+ lv2specgen_py,
+ '@INPUT@',
+ '@OUTPUT@',
+ '--copy-style',
+ '--instances',
+ '--list-email', 'ingen@drobilla.net',
+ '--list-page', 'http://lists.drobilla.net/listinfo.cgi/ingen-drobilla.net',
+ '--prefix', 'ingen',
+ ],
+ install: true,
+ install_dir: lv2dir / 'ingen.lv2',
+ output: 'ingen.html',
+ )
+
+ # TODO: Fix lv2specgen so third-party documentation is properly styled
+ install_data(
+ files('style.css'),
+ install_dir: lv2dir / 'ingen.lv2',
+ )
+endif
diff --git a/bundles/ingen.lv2/style.css b/bundles/ingen.lv2/style.css
new file mode 100644
index 00000000..fca399e3
--- /dev/null
+++ b/bundles/ingen.lv2/style.css
@@ -0,0 +1,805 @@
+@import "./pygments.css";
+
+/* Generic page style */
+
+html {
+ background: #FFF;
+ color: #222;
+}
+
+body {
+ font-family: "DejaVu Sans", "SF Pro Text", Verdana, sans-serif;
+ font-style: normal;
+ line-height: 1.6em;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 60em;
+ padding: 1em;
+}
+
+h1 {
+ font-family: "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
+ font-size: 2.38em;
+ font-weight: 600;
+ line-height: 1.41em;
+ margin: 0 0 0.25em;
+}
+
+h2 {
+ font-family: "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
+ font-size: 1.68em;
+ font-weight: 600;
+ line-height: 1.3em;
+ margin: 1.25em 0 0.5em;
+}
+
+h3 {
+ font-family: "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
+ font-size: 1.41em;
+ font-weight: 600;
+ line-height: 1.19em;
+ margin: 1.25em 0 0.5em;
+}
+
+h4 {
+ font-family: "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
+ font-size: 1.19em;
+ font-weight: 600;
+ line-height: 1.09em;
+ margin: 1.25em 0 0.5em;
+}
+
+h5, h6 {
+ font-family: "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
+ font-size: 1em;
+ font-weight: 600;
+ line-height: 1em;
+ margin: 1.25em 0 0.5em;
+}
+
+a {
+ color: #546E00;
+ text-decoration: none;
+}
+
+h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+ color: #222;
+}
+
+a:link {
+ color: #546E00;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #546E00;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+h1 a:link, h2 a:link, h3 a:link, h4 a:link, h5 a:link, h6 a:link {
+ color: #222;
+}
+
+h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
+ color: #222;
+}
+
+img {
+ border: 0;
+}
+
+p {
+ margin: 0.5em 0;
+}
+
+blockquote {
+ border-left: 1px solid #CCC;
+ margin-left: 1em;
+ padding-left: 1em;
+}
+
+pre, code, kbd, samp {
+ color: #444;
+ font-family: "DejaVu Sans Mono", "SF Mono", Consolas, monospace;
+ margin: 1em 0;
+ white-space: pre;
+}
+
+ul, ol {
+ margin: 0 0 0.5em;
+ padding-top: 0;
+}
+
+dt {
+ font-weight: 600;
+ margin: 0.75em 0 0.125em;
+}
+
+dt::after {
+ content: ": ";
+ margin-right: 0.5em;
+}
+
+hr {
+ background-color: #EEE;
+ border: 0;
+ color: #666;
+ height: 1px;
+ margin-bottom: 1.5ex;
+ margin-top: 1.5ex;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 1em 1em;
+ border-style: hidden;
+ border: 0;
+ margin: 0;
+}
+
+th {
+ border: 1px solid #EEE;
+ padding: 0.25em 0.5em;
+ text-align: left;
+}
+
+table tbody tr th {
+ text-align: left;
+}
+
+td {
+ border: 1px solid #EEE;
+ padding: 0.25em 0.5em;
+ vertical-align: top;
+}
+
+caption {
+ caption-side: bottom;
+ font-size: small;
+ font-style: italic;
+ margin: 0.75em 0;
+}
+
+footer {
+ color: #444;
+ font-size: small;
+}
+
+/* Specgen style */
+
+#titlebox {
+ display: inline-block;
+ max-width: 60%;
+ left: 0;
+ top: 0;
+}
+
+#metabox {
+ display: inline-block;
+ font-size: x-small;
+ font-family: "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
+ position: absolute;
+ right: 0;
+ bottom: 0.25em;
+ color: #666;
+ font-style: italic;
+}
+
+#meta {
+ border-style: hidden;
+}
+
+#meta tr, #meta th, #meta td {
+ border: 0;
+ font-weight: normal;
+ padding: 0 0 0.125em;
+ background-color: transparent;
+}
+
+#meta th {
+ padding-right: 0.5em;
+ text-align: right;
+}
+
+#meta th::after {
+ content: ": ";
+}
+
+#subtitle {
+ font-size: small;
+}
+
+#shortdesc {
+ padding: 0;
+ margin: 0 0 0.5em;
+ font-style: italic;
+ color: #666;
+ display: inline-block;
+}
+
+#logo {
+ height: 63px;
+ margin-left: 1em;
+ margin-top: 10px;
+ width: 100px;
+}
+
+#titlesep {
+ color: #EEE;
+}
+
+#content-body {
+ border-bottom: 0;
+ display: block;
+ font-size: 75%;
+ left: 0;
+ margin-left: 2em;
+ min-width: 660px;
+ padding: 3px 10px 0 0;
+ position: absolute;
+ top: 63px;
+ width: 93.9%;
+ z-index: 0;
+}
+
+#menu {
+ font-size: 75%;
+ margin-bottom: 5px;
+ padding: 0;
+ width: 16em;
+}
+
+#menu ul {
+ border: 0;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#menu a {
+ text-decoration: none;
+}
+
+#menu ul.level-one a {
+ background-color: #F5F5F5;
+ border: 1px solid #DADADA;
+ color: #4B5A6A;
+ display: block;
+ margin: 0 0 4px 1.4em;
+ padding: 2px 2px 2px 4px;
+ text-transform: uppercase;
+ width: 13.4em !important;
+}
+
+#menu ul.level-two a {
+ background: none;
+ background-color: transparent;
+ border: 0;
+ border-top: 1px solid #DDD;
+ color: #3C4B7B;
+ display: block;
+ margin: 0 3em 0 1.5em;
+ padding: 0.1em;
+ text-transform: none;
+ width: 11em !important;
+}
+
+#menu ul.level-three a {
+ border: 0;
+ color: #5E72A5;
+ display: block;
+ font-size: 95%;
+ margin: 0 3em 0 1.8em;
+ padding: 0.1em 0.1em 0.1em 1em;
+ width: 10em !important;
+}
+
+#menu ul.level-one a:hover,
+#menu ul.level-two a:hover,
+#menu ul.level-three a:hover {
+ color: #000;
+ text-decoration: underline;
+}
+
+#menu ul.level-one a.selected {
+ background-color: #FFF;
+ border-left: 3px solid #FFDB4C;
+ color: #000;
+}
+
+#menu ul.level-two a:visited {
+ color: #4C3B5B;
+}
+
+#menu ul.level-two li:first-child a {
+ border-top: 0;
+}
+
+#menu ul.level-one ul.level-two a.selected {
+ background-color: #FFF;
+ border-left: 0;
+ color: #000;
+ font-weight: 700;
+}
+
+#menu li ul {
+ margin-bottom: 7px;
+}
+
+#menu ul.level-three li.selected a.selected {
+ color: #000;
+ font-weight: 400;
+}
+
+#menu ul.level-three {
+ margin-top: 5px;
+}
+
+#searchbox {
+ font-weight: 700;
+ position: absolute;
+ right: 0;
+ text-align: right;
+ top: 0;
+ vertical-align: middle;
+ white-space: nowrap;
+ width: 28.1em;
+}
+
+#search {
+ color: #A38E60;
+ padding: 5px 5px 0 0;
+}
+
+#search .input-text {
+ background-color: #FFF;
+ border: 1px solid #C4CCCC;
+ font-size: 116%;
+ font-weight: 400;
+ margin-top: 3px;
+ vertical-align: top;
+ width: 11em;
+}
+
+#search .input-button {
+ background-color: #F8F7F7;
+ border-bottom: 1px solid #6F7777;
+ border-left: 1px solid #C4CCCC;
+ border-right: 1px solid #6F7777;
+ border-top: 1px solid #C4CCCC;
+ color: #234;
+ font-weight: 700;
+ margin: 3px 0.4em 0;
+ padding: 0 0.2em;
+ vertical-align: text-top;
+}
+
+input.formbutton {
+ background-color: #F8F7F7;
+ border-bottom: 1px solid #6F7777;
+ border-left: 1px solid #C4CCCC;
+ border-right: 1px solid #6F7777;
+ border-top: 1px solid #C4CCCC;
+ color: #234;
+ font-weight: 700;
+ vertical-align: text-top;
+}
+
+.formtextinput {
+ background-color: #FFF;
+ border: 1px solid #C4CCCC;
+ font-size: 116%;
+ font-weight: 400;
+ vertical-align: top;
+}
+
+#content table {
+ clear: right;
+}
+
+.content-section {
+ margin-top: 15px;
+}
+
+.content-section h1 {
+ margin: 0 0 10px;
+}
+
+.content-section p {
+ margin: 0 0 5px;
+ padding-left: 12px;
+}
+
+.content-section .pubdate {
+ color: #696969;
+ margin: 0 0 8px;
+ padding: 0 0 0 12px;
+}
+
+#footer {
+ bottom: 0;
+ clear: both;
+ font-size: x-small;
+ margin: 2em 0 0;
+ padding: 0;
+ color: #888;
+}
+
+#searchbox a.reference, #searchbox span.reference {
+ color: #339;
+ font-size: 85%;
+ font-weight: 400;
+ position: absolute;
+ right: 8.3em;
+ text-decoration: none;
+ top: 2.9em;
+}
+
+#topbar {
+ line-height: 1em;
+ border-bottom: 1px solid #EEE;
+}
+
+@media print {
+ #topbar {
+ color: #000;
+ margin: 0.25em auto;
+ padding: 0.25em 0.5em 0.5em;
+ max-width: 60em;
+ position: relative;
+ }
+
+ #contentsbox {
+ display: none;
+ }
+
+ #topbar a, #title a, #topbar a:visited, #title a:visited {
+ color: #000;
+ }
+
+ #contents {
+ display: none;
+ }
+}
+
+@media screen {
+ #topbar {
+ margin: 0.25em auto;
+ padding: 0;
+ max-width: 60em;
+ position: relative;
+ }
+
+ #contentsbox {
+ color: #546E00;
+ font-size: small;
+ margin: 0 0 1.5em;
+ }
+
+ #contents {
+ display: inline;
+ padding: 0;
+ }
+
+ #contents li {
+ display: inline;
+ list-style-type: none;
+ margin-left: 0;
+ margin-right: 0.5em;
+ padding: 0.25ex 0.25ex 0.25ex 0;
+ }
+}
+
+#content {
+ clear: both;
+ padding: 0;
+ max-width: 60em;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.section {
+ clear: right;
+ padding: 0 0 1.5em;
+}
+
+.category {
+ font-size: small;
+ color: #AAA;
+ float: right;
+ vertical-align: bottom;
+ padding: 0;
+ margin: 0;
+ padding-right: 0.25em;
+}
+
+.label {
+ font-style: italic;
+ margin-top: 0.25em;
+ color: #666;
+}
+
+table.index {
+ border: 0;
+ line-height: 1.5em;
+ margin-top: 2em;
+}
+
+.index ul {
+ padding-left: 1.25em;
+ margin-left: 0;
+ list-style-type: circle;
+}
+
+.index ul li {
+ padding-left: 0;
+ color: #888;
+}
+
+.prop {
+ margin: 0;
+ padding: 0;
+}
+
+.description {
+ margin-top: 0;
+ margin-bottom: 0.75em;
+}
+
+.blankdesc, .blankdef {
+ border-spacing: 0;
+ margin: 0;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.blankdesc tbody tr td, .blankdef {
+ border: 0 !important;
+}
+
+.blankdesc td {
+ padding-right: 0.5em;
+}
+
+.blankdesc tbody tr td:first-child {
+ border-left: 1px solid #BBB;
+ text-align: right;
+}
+
+.terminfo, .restriction {
+ border-collapse: collapse;
+ border-spacing: 0;
+ font-size: small;
+ color: #666;
+ border-radius: 0;
+ border-bottom-left-radius: 6px;
+}
+
+table.terminfo {
+ border-top: 0;
+ border-collapse: collapse;
+ margin: -1px 0 2em 2em;
+ padding: 0.25em 0;
+ float: right;
+ border-bottom: 1px solid #EEE;
+ border-left: 1px solid #EEE;
+ border-bottom-left-radius: 6px;
+ max-width: 50%;
+ line-height: 1.4em;
+ min-width: 25%;
+}
+
+table.terminfo td {
+ padding: 0 0.5em;
+}
+
+.restriction {
+ border-style: hidden;
+ margin: 0 0 0.5ex;
+ padding: 0;
+ vertical-align: text-top;
+}
+
+.restriction td {
+ vertical-align: text-top;
+}
+
+.terminfo th {
+ padding: 0 0.5em;
+ text-align: right;
+ vertical-align: top;
+}
+
+.specterm {
+ border: 0;
+ margin: 0;
+ padding: 1em 0;
+ clear: both;
+}
+
+.specterm h3 {
+ display: inline-block;
+ margin-bottom: 0.25em;
+ width: 80%;
+}
+
+.spectermtype {
+ color: #888;
+ display: inline-block;
+ font-size: small;
+ font-style: italic;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0 0.25em 0 0;
+ text-align: right;
+ vertical-align: bottom;
+ width: 20%;
+}
+
+.spectermbody {
+ border-top: 1px solid #EEE;
+ padding: 0;
+}
+
+.spectermbody .description .comment > p:first-child {
+ color: #444;
+ font-style: italic;
+ margin-bottom: 0.75em;
+}
+
+dl {
+ margin: 0;
+ padding: 0;
+}
+
+div.head {
+ margin-bottom: 1em;
+}
+
+div.head h1 {
+ clear: both;
+ margin-top: 2em;
+}
+
+div.head table {
+ margin-left: 2em;
+ margin-top: 2em;
+}
+
+#menu li {
+ display: inline;
+}
+
+.error {
+ color: #990A1B;
+}
+
+.warning {
+ color: #7B6000;
+}
+
+.success {
+ color: #546E00;
+}
+
+.highlight, .codehilite {
+ margin-left: 2em;
+}
+
+/* Dark mode */
+@media (prefers-color-scheme: dark) {
+ /* Dark generic page style */
+
+ html {
+ background: #222;
+ color: #DDD;
+ }
+
+ a {
+ color: #B4C342;
+ }
+
+ a:link {
+ color: #B4C342;
+ }
+
+ a:visited {
+ color: #B4C342;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+ color: #DDD;
+ }
+
+ h1 a:link, h2 a:link, h3 a:link, h4 a:link, h5 a:link, h6 a:link {
+ color: #DDD;
+ }
+
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
+ color: #DDD;
+ }
+
+ blockquote {
+ border-left: 1px solid #444;
+ }
+
+ pre, code, kbd, samp {
+ color: #DDD;
+ }
+
+ hr {
+ background-color: #333;
+ border: 0;
+ color: #666;
+ }
+
+ th {
+ border: 1px solid #444;
+ }
+
+ td {
+ border: 1px solid #444;
+ }
+
+ footer {
+ color: #BBB;
+ }
+
+ /* Dark specgen style */
+
+ #metabox {
+ color: #999;
+ }
+
+ #shortdesc {
+ color: #999;
+ }
+
+ #titlesep {
+ color: #444;
+ }
+
+ .terminfo, .restriction {
+ color: #999;
+ }
+
+ table.terminfo {
+ border-bottom: 1px solid #444;
+ border-left: 1px solid #444;
+ }
+
+ .spectermbody {
+ border-top: 1px solid #444;
+ }
+
+ .spectermbody .description .comment > p:first-child {
+ color: #BBB;
+ }
+
+ .error {
+ color: #DC322F;
+ }
+
+ .warning {
+ color: #B58900;
+ }
+
+ .success {
+ color: #859900;
+ }
+
+ #topbar {
+ border-bottom: 1px solid #444;
+ }
+}
+
+/* Hard black for dark mode on mobile (since it's likely to be an OLED screen) */
+@media only screen and (hover: none) and (pointer: coarse) and (prefers-color-scheme: dark) {
+ html {
+ background: #000;
+ color: #CCC;
+ }
+}
diff --git a/bundles/meson.build b/bundles/meson.build
new file mode 100644
index 00000000..2d02d953
--- /dev/null
+++ b/bundles/meson.build
@@ -0,0 +1,4 @@
+# Copyright 2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: CC0-1.0 OR GPL-3.0-or-later
+
+subdir('ingen.lv2')