summaryrefslogtreecommitdiff
path: root/ext/lv2
diff options
context:
space:
mode:
authorStefan Sauer <ensonic@users.sf.net>2016-07-10 20:43:17 +0200
committerStefan Sauer <ensonic@users.sf.net>2016-07-10 20:44:19 +0200
commit8330f7aa26b5c53c49baa0d9859252ee862488a4 (patch)
treed876e0b12f89e66cf5fa4d9558b345660012f7fb /ext/lv2
parent13d963fbf0223910cff55dae1f2bd0b653b19394 (diff)
downloadgstreamer-plugins-bad-8330f7aa26b5c53c49baa0d9859252ee862488a4.tar.gz
lv2: planning update
Diffstat (limited to 'ext/lv2')
-rw-r--r--ext/lv2/README27
1 files changed, 27 insertions, 0 deletions
diff --git a/ext/lv2/README b/ext/lv2/README
index 289086d20..10c6a8e4e 100644
--- a/ext/lv2/README
+++ b/ext/lv2/README
@@ -35,9 +35,36 @@ gst-launch-1.0 calf-sourceforge-net-plugins-Organ event-in="C-3" name=s ! interl
TODO
* make filters gap-aware
+* report latency
+ lilv_plugin_has_latency(), lilv_plugin_get_latency_port_index()
* support more host features
GST_DEBUG="lv2:4" GST_DEBUG_FILE=/tmp/gst.log gst-inspect lv2
grep -o "needs host feature: .*$" /tmp/gst.log | sort | uniq -c | sort -n
+* make source elements useful
+ Most source elements use Atom port where they accept midi events. Since it is
+ full fledged midi, we should only ever use channel-0 and instead use multiple
+ instances
+ 1) We could expose those as "audio/x-midi-event" sink pads, but then those are
+ not sources anymore.
+ 2) We could expose those as properties using a new type like GST_FOURCC. If we
+ ignore "System Exclusive" messages, all other midi messages are 1-3 bytes.
+ We stuff the bytes right to left. E.g: the lowest byte is the status byte
+ 3) We could use the GstBtNote enum + the toneconversion classes
+ https://www.midi.org/specifications/item/table-1-summary-of-midi-message
+ Open questions:
+ - with one property, we can't handle polyphony
+ - we can't query lv2 plugins for their polyphony :/
+
+ If lv2 gets a polyphony extension it would be a single non-negative integer:
+ 0: unbound, 1 monophonic, > 1 N-polyphonic
+ I've checked a few synths and they all have an upper limit. Still the way
+ voices work in trackers is not the same as they work in synths - e.g. in a
+ tracker one can play a note twice
+
+ Or we just play them monophonic and try to implement a polychildbin. The bin
+ takes a GstElement to be used as a voice. For each new voice it would create a
+ new instance and it uses a built-in mixer. Downside is that all properties
+ would be per voice.
* example sources:
http://svn.drobilla.net/lad/trunk/lilv/utils/lv2info.c